CBaseControlVideo.GetStaticImage 方法

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

派生类替代的纯虚拟方法。

语法

virtual HRESULT GetStaticImage(
   long *pBufferSize,
   long *pDIBImage
) = 0;

参数

pBufferSize

指向输出缓冲区大小的指针。

pDIBImage

指向输出缓冲区的指针。

返回值

返回 HRESULT 值。

备注

通过 IBasicVideo 接口,应用程序可以请求在内存缓冲区中为它提供当前图像的副本, (某些呈现器可以在) 不支持它时返回E_NOTIMPL。 派生类确定如何检索图像。 当应用程序调用 CBaseControlVideo::GetStaticImage 时,它会调用派生类应重写的纯虚拟方法来实现它。 这也由 CBaseControlVideo::GetCurrentImage 成员函数调用。

类提供了一个帮助程序成员函数 CBaseControlVideo::CopyImage,该函数可以给出一个包含图像的示例,该成员函数将基于当前源矩形) 复制到应用程序提供的输出缓冲区 (的相关部分。

以下示例演示派生类中此成员函数的实现。 在此示例中,m_pRenderer包含派生自 CBaseVideoRenderer 的类的对象。

// Return a copy of the current image in the video renderer
HRESULT CVideoText::GetStaticImage(long *pBufferSize,long *pDIBImage)
{
    // Get any sample the renderer may be holding.

    IMediaSample *pMediaSample = m_pRenderer->GetCurrentSample();
    if (pMediaSample == NULL) {
        return E_UNEXPECTED;
    }

    // Call the base class helper method to do the work.

    HRESULT hr = CopyImage(pMediaSample,       // Buffer containing image
                      &m_pRenderer->m_mtIn,    // Type representing bitmap
                      pBufferSize,             // Size of buffer for DIB
                     (BYTE*) pDIBImage);       // Data buffer for output

    pMediaSample->Release();
    return hr;
}

要求

要求
标头
Ctlutil.h (包括 Streams.h)

Strmbase.lib (零售版本) ;
Strmbasd.lib (调试生成)

另请参阅

CBaseControlVideo 类