2012-05-23 7 views
0

В некоторых мультимедийных средах мы отправляем информацию о спецификации, такую ​​как тип профиля VC1 (AP/SP/MP) и формат битового потока (RCV) в качестве первого кадра между Парсер WMV и WMV-декодер. Информация о спецификации предназначена для инициализации WMV-декодера.Как установить спецификацию wmv для декодера в медиа-фундаменте

Я использую по умолчанию Media Foundation WMV Source и свой собственный WMV-декодер MFT. Когда я сбрасываю данные с MFT, у него есть только видеоданные и информация о спецификациях. Итак, я думаю, что информация о спецификации задается с использованием другого интерфейса.

Может кто-нибудь дать мне сообщение об мусоре об этом?

ответ

1

По спецификации, если вы имеете в виду заголовок последовательности VC1, то посмотрите на атрибут MF_MT_USER_DATA. Когда диспетчер сеансов MF вызывает SetOutputType() вашего декодера MFT, он поставляет MF_MT_USER_DATA в виде капли. Следующий фрагмент может дать вам подсказку.

HRESULT SetOutputType(DWORD dwStreamID, IMFMediaType* pmt, DWORD dwFlags) 
{ 
    ... 

    BYTE* seqData; 
    DWORD seqLength; 
    HRESULT hr; 

    hr = pmt->GetBlobSize(MF_MT_USER_DATA, &seqLength); 
    if (SUCCEEDED(hr)) 
    { 
     seqData = (BYTE*) malloc(seqLength); 

     if (seqData != NULL) 
     { 
     hr = pmt->GetBlob(MF_MT_USER_DATA, seqLength, &seqLength); 
     } 
    } 

    /* Use MF_MT_USER_DATA to do something. */ 

    ... 
}