IVMRWindowlessControl::GetCurrentImage 方法 (strmif.h)
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
方法 GetCurrentImage
检索 VMR 正在显示的当前图像的副本。
语法
HRESULT GetCurrentImage(
[out] BYTE **lpDib
);
参数
[out] lpDib
指向 BYTE 数组的指针的地址。
返回值
如果该方法成功,则它会返回 S_OK。 如果该方法失败,则会返回错误代码。
返回代码 | 说明 |
---|---|
|
VMR 不处于无窗口模式。 |
注解
此方法返回显示的当前图像。 图像以打包的 Windows DIB 的形式返回。 图像以 BITMAPINFOHEADER 结构开头,可能包括调色板条目和/或颜色掩码,后跟图像数据。
VMR 为映像分配内存,并在 lpDib 变量中返回指向它的指针。 调用方必须通过调用 CoTaskMemFree 来释放内存。
无论筛选器处于什么状态,都可以随时调用此方法,无论是运行、停止还是暂停。 但是,频繁调用此方法会降低视频播放性能。
示例
C++ |
---|
BYTE *lpDib = NULL; hr = pWindowlessControl->GetCurrentImage(&lpDib); if (SUCCEEDED(hr)) { BITMAPINFOHEADER *pBMIH = (BITMAPINFOHEADER*)lpDib; /* .... */ CoTaskMemFree(lpDib); } |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 具有 SP1 的 Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |
Library | Strmiids.lib |