这很可能以前出现过,但以下代码取自我正在修改的 MSDN 示例。我想知道如何遍历包含位图数据的缓冲区的内容并打印出颜色。每个像素是 4 个字节的数据,所以我假设 RGB 值占这些字节中的 3 个,并且 A 可能是第 4 个。
所需的指针算术(理想情况下在循环内)的正确 C++ 语法是什么,它将在该迭代期间指向的值存储到我可以使用的局部变量中,例如。打印到控制台。
非常感谢
PS。这安全吗?或者有没有更安全的方法来读取 IMFMediaBuffer 的内容?我找不到替代方案。
这是代码:
hr = pSample->ConvertToContiguousBuffer(&pBuffer); // this is the BitmapData
// Converts a sample with multiple buffers into a sample with a single IMFMediaBuffer which we Lock in memory next...
// IMFMediaBuffer represents a block of memory that contains media data
hr = pBuffer->Lock(&pBitmapData, NULL, &cbBitmapData); // pBuffer is IMFMediaBuffer
/* Lock method gives the caller access to the memory in the buffer, for reading or writing:
pBitmapData - receives a pointer to start of buffer
NULL - receives the maximum amount of data that can be written to the buffer. This parameter can be NULL.
cbBitmapData - receives the length of the valid data in the buffer, in bytes. This parameter can be NULL.
*/