如何确定 Windows Media Foundation 接收器编写器需要自下而上还是自上而下的图像?
How does one find out whether a Windows Media Foundation sink writer needs bottom-up or top-down images?
我正在使用 Windows Media Foundation 创建视频文件。我有一些基于 Using the Sink Writer to Encode Video 教程的代码。
当输入类型为MFVideoFormat_RGB32
,输出类型为MFVideoFormat_WMV3
,sink writer写入WMV文件,我为sink writer提供top-down RGB32数据, 我得到了我期望的视频。
另一方面,当输出类型为 MFVideoFormat_H264
时 - 其他一切都相同 - 位图上下颠倒。
如何在运行时找出需要哪种位图数据?
可能会为 RGB 视频媒体类型提供一个可选的 MF_MT_DEFAULT_STRIDE
attribute 来指定行顺序:
Default surface stride, for an uncompressed video media type. Stride is the number of bytes needed to go from one row of pixels to the next. [...]
Stride is positive for top-down images, and negative for bottom-up images.
该属性是可选的,省略时可能会导致混淆,因为数据消费者可能会应用不同的默认值。一般来说,由于历史原因,RGB 数据通常以相反的行顺序出现,但是最近的 API 倾向于修复它并以正常的行顺序显示数据。
我正在使用 Windows Media Foundation 创建视频文件。我有一些基于 Using the Sink Writer to Encode Video 教程的代码。
当输入类型为MFVideoFormat_RGB32
,输出类型为MFVideoFormat_WMV3
,sink writer写入WMV文件,我为sink writer提供top-down RGB32数据, 我得到了我期望的视频。
另一方面,当输出类型为 MFVideoFormat_H264
时 - 其他一切都相同 - 位图上下颠倒。
如何在运行时找出需要哪种位图数据?
可能会为 RGB 视频媒体类型提供一个可选的 MF_MT_DEFAULT_STRIDE
attribute 来指定行顺序:
Default surface stride, for an uncompressed video media type. Stride is the number of bytes needed to go from one row of pixels to the next. [...]
Stride is positive for top-down images, and negative for bottom-up images.
该属性是可选的,省略时可能会导致混淆,因为数据消费者可能会应用不同的默认值。一般来说,由于历史原因,RGB 数据通常以相反的行顺序出现,但是最近的 API 倾向于修复它并以正常的行顺序显示数据。