CBaseControlVideo.GetStaticImage 方法
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media 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;
}
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|