audio_core: hle: mf: move transform initializer to ctor
This commit is contained in:
parent
6178cc08b7
commit
671ac441e9
1 changed files with 21 additions and 22 deletions
|
@ -46,6 +46,24 @@ WMFDecoder::Impl::Impl(Memory::MemorySystem& memory) : memory(memory) {
|
|||
}
|
||||
|
||||
LOG_INFO(Audio_DSP, "Media Foundation activated");
|
||||
|
||||
// initialize transform
|
||||
transform = MFDecoderInit();
|
||||
if (transform == nullptr) {
|
||||
LOG_CRITICAL(Audio_DSP, "Can't initialize decoder");
|
||||
return;
|
||||
}
|
||||
|
||||
hr = transform->GetStreamIDs(1, &in_stream_id, 1, &out_stream_id);
|
||||
if (hr == E_NOTIMPL) {
|
||||
// if not implemented, it means this MFT does not assign stream ID for you
|
||||
in_stream_id = 0;
|
||||
out_stream_id = 0;
|
||||
} else if (FAILED(hr)) {
|
||||
ReportError("Decoder failed to initialize the stream ID", hr);
|
||||
return;
|
||||
}
|
||||
transform_initialized = true;
|
||||
}
|
||||
|
||||
WMFDecoder::Impl::~Impl() {
|
||||
|
@ -54,11 +72,9 @@ WMFDecoder::Impl::~Impl() {
|
|||
// delete the transform object before shutting down MF
|
||||
// otherwise access violation will occur
|
||||
transform.reset();
|
||||
MFShutdown();
|
||||
CoUninitialize();
|
||||
}
|
||||
transform_initialized = false;
|
||||
format_selected = false;
|
||||
MFShutdown();
|
||||
CoUninitialize();
|
||||
}
|
||||
|
||||
std::optional<BinaryResponse> WMFDecoder::Impl::ProcessRequest(const BinaryRequest& request) {
|
||||
|
@ -91,25 +107,8 @@ std::optional<BinaryResponse> WMFDecoder::Impl::Initalize(const BinaryRequest& r
|
|||
BinaryResponse response;
|
||||
std::memcpy(&response, &request, sizeof(response));
|
||||
response.unknown1 = 0x0;
|
||||
transform = MFDecoderInit();
|
||||
|
||||
if (transform == nullptr) {
|
||||
LOG_CRITICAL(Audio_DSP, "Can't initialize decoder");
|
||||
return response;
|
||||
}
|
||||
|
||||
HRESULT hr = transform->GetStreamIDs(1, &in_stream_id, 1, &out_stream_id);
|
||||
if (hr == E_NOTIMPL) {
|
||||
// if not implemented, it means this MFT does not assign stream ID for you
|
||||
in_stream_id = 0;
|
||||
out_stream_id = 0;
|
||||
} else if (FAILED(hr)) {
|
||||
ReportError("Decoder failed to initialize the stream ID", hr);
|
||||
return response;
|
||||
}
|
||||
|
||||
transform_initialized = true;
|
||||
format_selected = false; // select format again if application request initialize the DSP
|
||||
format_selected = false; // select format again if application request initialize the DSP
|
||||
return response;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue