在一些多媒体框架中,我们在 WMV 解析器和 WMV 解码器之间发送规范信息,例如 VC1 Profile Type (AP/SP/MP) 和比特流格式 (RCV) 作为第一帧。规范信息用于初始化 WMV 解码器。
我正在使用默认的 Media Foundation WMV 源和我自己的 WMV 解码器 MFT。当我从 MFT 转储数据时,它只有视频数据,没有规格信息。所以,我认为规范信息是使用其他接口设置的。
有人可以给我一个关于这个的垃圾信息吗?
在一些多媒体框架中,我们在 WMV 解析器和 WMV 解码器之间发送规范信息,例如 VC1 Profile Type (AP/SP/MP) 和比特流格式 (RCV) 作为第一帧。规范信息用于初始化 WMV 解码器。
我正在使用默认的 Media Foundation WMV 源和我自己的 WMV 解码器 MFT。当我从 MFT 转储数据时,它只有视频数据,没有规格信息。所以,我认为规范信息是使用其他接口设置的。
有人可以给我一个关于这个的垃圾信息吗?
如果您的意思是 VC1 序列头,请通过规范信息查看MF_MT_USER_DATA属性。当 MF Session Manager 调用SetOutputType()
解码器 MFT 时,它MF_MT_USER_DATA
以 blob 形式提供。以下片段可能会给您一个提示。
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. */
...
}