mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	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…
	
	Add table
		Add a link
		
	
		Reference in a new issue