MediaFoundation RGB数据和BMP之间到底有什么区别?



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

它只是缺少位图文件具有的标题信息或键信息,如宽度、高度等吗?

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

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

获得的缓冲区与标准.BMP文件中的数据兼容(除了可能,在某些时候,行可能是相反的顺序(,它只是.BMP文件在此数据之前有一个标头。 .BMP文件通常具有BITMAPFILEHEADER结构,然后是BITMAPINFOHEADER,然后是有问题的缓冲区。如果你一个接一个地分别初始化它,这将给你一个有效的图片文件。本文和其他问题显示了从位图位创建.BMP文件的方法。

请参阅此 GitHub 代码片段,它非常接近请求的任务,可能是一个很好的起点。

最新更新