IMediaDet::GetBitmapBits 方法
注意
[已弃用。 可以从Windows的未来版本中删除此 API。
该方法 GetBitmapBits
在指定的媒体时间检索视频帧。 返回的帧始终采用 24 位 RGB 格式。
语法
HRESULT GetBitmapBits(
double StreamTime,
long *pBufferSize,
char *pBuffer,
long Width,
long Height
);
参数
-
StreamTime
-
检索视频帧的时间(以秒为单位)。
-
pBufferSize
-
接收所需的缓冲区大小。 如果 pBuffer 为 NULL,则变量接收检索帧所需的缓冲区大小。 如果 pBuffer 不是 NULL,则忽略此参数。
-
pBuffer
-
指向接收 BITMAPINFOHEADER 结构的缓冲区的指针,后跟 DIB 位。
-
Width
-
视频图像的宽度(以像素为单位)。
-
Height
-
视频图像的高度(以像素为单位)。
返回值
返回 HRESULT 值。 可能的值如下所示:
返回代码 | 说明 |
---|---|
|
成功。 |
|
无法将 示例抓取器 筛选器添加到图形。 |
|
内存不足。 |
|
NULL 指针错误。 |
|
意外错误。 |
|
媒体类型无效。 |
注解
在调用此方法之前,请通过调用 IMediaDet::p ut_Filename 和 IMediaDet::p ut_CurrentStream 来设置文件名和流。
若要确定所需的缓冲区大小,请使用 pBuffer 等于 NULL 调用此方法。 大小在 pBufferSize 指向的变量中返回。 然后创建缓冲区并再次调用方法, pBuffer 等于缓冲区的地址。 方法返回时,缓冲区包含 BITMAPINFOHEADER 结构,后跟位图。 位图缩放为 宽度 和 高度 参数中指定的尺寸。
此方法将媒体检测器置于位图抓取模式。 调用此方法后, IMediaDet 中的各种流信息方法不起作用,除非你创建了媒体检测器的新实例。
注意
头文件 Qedit.h 与版本 7 后面的 Direct3D 标头不兼容。
注意
若要获取 Qedit.h,请下载适用于 Windows Vista 和 .NET Framework 3.0 的 Microsoft Windows SDK 更新。 Qedit.h 在 Windows 7 和 .NET Framework 3.5 Service Pack 1 的 Microsoft Windows SDK中不可用。
示例
以下代码使用 GetBitmapBits
该方法创建独立于设备的位图。
long size;
hr = pDet->GetBitmapBits(0, &size, 0, width, height);
if (SUCCEEDED(hr))
{
char *pBuffer = new char[size];
if (!pBuffer)
return E_OUTOFMEMORY;
try {
hr = pDet->GetBitmapBits(0, 0, pBuffer, width, height);
}
catch (...) {
delete [] pBuffer;
throw;
}
if (SUCCEEDED(hr))
{
BITMAPINFOHEADER *bmih = (BITMAPINFOHEADER*)pBuffer;
HDC hdcDest = GetDC(0);
// Find the address of the start of the image data.
void *pData = pBuffer + sizeof(BITMAPINFOHEADER);
// Note: In general a BITMAPINFOHEADER can include extra color
// information at the end, so calculating the offset to the image
// data is not generally correct. However, the IMediaDet interface
// always returns an RGB-24 image with no extra color information.
BITMAPINFO bmi;
ZeroMemory(&bmi, sizeof(BITMAPINFO));
CopyMemory(&(bmi.bmiHeader), bmih, sizeof(BITMAPINFOHEADER));
HBITMAP hBitmap = CreateDIBitmap(hdcDest, bmih, CBM_INIT,
pData, &bmi, DIB_RGB_COLORS);
}
delete[] pBuffer;
}
要求
要求 | Value |
---|---|
标头 |
|
库 |
|
另请参阅