IVMRWindowlessControl::GetCurrentImage 方法 (strmif.h)

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

方法 GetCurrentImage 检索 VMR 正在显示的当前图像的副本。

语法

HRESULT GetCurrentImage(
  [out] BYTE **lpDib
);

参数

[out] lpDib

指向 BYTE 数组的指针的地址。

返回值

如果该方法成功,则它会返回 S_OK。 如果该方法失败,则会返回错误代码。

返回代码 说明
VFW_E_WRONG_STATE
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

另请参阅

错误和成功代码

IVMRWindowlessControl 接口

使用视频混合呈现器