如何确定 Windows Media Foundation 接收器编写器是需要自下而上还是自上而下的图像?

Tom*_*don 5 video rgb ms-media-foundation

我正在使用 Windows Media Foundation 创建视频文件。我有一些基于使用接收器编写器编码视频教程的代码。

当输入类型为MFVideoFormat_RGB32,输出类型为MFVideoFormat_WMV3,并且接收器编写器正在写入 WMV 文件,并且我为接收器编写器提供自上而下的 RGB32 数据时,我得到了我期望的视频。

MFVideoFormat_H264另一方面,当输出类型为 时- 其他一切都相同 - 位图会颠倒过来。

如何在运行时找出需要哪种位图数据?

Rom*_* R. 5

RGB 视频媒体类型可能会被赋予一个可选MF_MT_DEFAULT_STRIDE属性来指定行顺序:

默认表面步幅,适用于未压缩的视频媒体类型。步长是从一行像素移动到下一行所需的字节数。[...]

对于自上而下的图像,步幅为正,对于自下而上的图像,步幅为负。

该属性是可选的,省略时可能会导致混乱,因为数据使用者可能会应用不同的默认值。一般来说,由于历史原因,RGB 数据通常会以相反的行顺序出现,但是最近的 API 倾向于修复它并以正常的行顺序提供数据。