Метод CBaseControlVideo.GetStaticImage
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие 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;
}
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|