0
Windows Media Foundation을 사용하여 오디오 파일을 디코딩합니다. MF_SOURCE_READERF_CURRENTMEDIATYPECHANGED
이라고하는 것 외에도 대부분의 파일을 디코딩 할 수 있습니다.Windows Media Foundation : 현재 미디어 유형 변경
잠시 현재 미디어 유형이 변경되면 어떻게 처리합니까? 사전에
IMFSourceReader *pSourceReader = NULL;
IMFMediaType *pAudioType= NULL;
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
MFStartup(MF_VERSION);
MFCreateSourceReaderFromURL(filePath, NULL, &pSourceReader);
pSourceReader->SetStreamSelection(MF_SOURCE_READER_FIRST_AUDIO_STREAM, true)
pSourceReader->GetCurrentMediaType(MF_SOURCE_READER_FIRST_AUDIO_STREAM, &pAudioType);
MFCreateMediaType(&pAudioType);
pAudioType->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio);
pAudioType->SetGUID(MF_MT_SUBTYPE, MFAudioFormat_Float);
pAudioType->SetCurrentMediaType(MF_SOURCE_READER_FIRST_AUDIO_STREAM, NULL, pAudioType);
IMFSample *audioSample = NULL;
DWORD streamIndex, flags;
LONGLONG llAudioTimeStamp;
while (true)
{
pSourceReader->ReadSample(
MF_SOURCE_READER_FIRST_AUDIO_STREAM,
0, // Flags.
&streamIndex, // Receives the actual stream index.
&flags, // Receives status flags.
&llAudioTimeStamp, // Receives the time stamp.
&audioSample) // Receives the sample or NULL.
if (flags & MF_SOURCE_READERF_CURRENTMEDIATYPECHANGED)
{
// what to do here?
}
}
많은 감사 :
다음은 코드의 일부입니다.