MediaFoundation RGB数据和BMP之间究竟有什么区别?

时间:2017-06-30 11:27:27

标签: visual-studio visual-c++ video-processing ms-media-foundation

在试图理解如何将mediafoundation rgb32数据转换为可以加载到图像/位图小部件或保存为位图文件的位图数据时,我想知道RGB32数据实际上是什么,与BMP数据相比较具有?

是否只是丢失了头位信息或位图文件的宽度,高度等关键信息?

与位图文件或内存流中的BMP数据相比,RGB32实际上意味着什么?

1 个答案:

答案 0 :(得分:1)

您通常将IMFMediaBuffer附加到IMFSample的32位RGB。这只是位图位,没有特定于格式的元数据。您可以通过获取媒体缓冲区指针来访问此数据,例如,通过执行IMFSample::ConvertToContiguousBuffer调用,然后执行IMFMediaBuffer::Lock来获取像素数据指针。

获取的缓冲区与标准.BMP文件中的数据兼容(可能在某些情况下,行可能的顺序相反),只是.BMP文件在此数据之前有一个标头。 .BMP文件通常具有BITMAPFILEHEADER结构,然后是BITMAPINFOHEADER,然后是有问题的缓冲区。如果你一个接一个地分别初始化它,这会产生一个有效的图片文件。这里的Thisother个问题显示了从位图位创建.BMP文件的方法。

请参阅this GitHub code snippet,它非常接近所请求的任务,可能是一个很好的起点。