解码器的要求
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
将示例传送到 VMR 的解码器必须遵守以下规则:
- 对于每个视频帧,应有一个子图片帧传递到 VMR。 这两个帧应具有相同的时间戳。
- 如果子图片未更改,请使用 IMemAllocator::GetBuffer 方法中的 AM_GBF_NOTASYNCPOINT 标志强制分配器返回包含传递到 VMR 的最后一帧的缓冲区。 只需在示例上放置一个新的时间戳,然后将其再次传递到 VMR。 如果亚图片名声是空白的,你仍然应该提供它。 VMR 将检测空帧,并且不会将其与视频混合。 此测试由 VGA 芯片执行,不会影响播放性能。
- 除实时流外,所有示例都必须附加有效的开始和停止时间戳。 (DVD 不是实时流。)
- 媒体示例时间戳必须是连续的
- 解码器必须将自身标识为支持 VMR,供图形生成器使用。
- 子图片流现在应包含嵌入的每像素 alpha 值。 ARGB4444 表面类型非常适合用于子图片。
- 不要假定子图片的步幅与图面宽度相同。 VMR 并非总是如此。
相关主题