Метод IBasicVideo::GetCurrentImage (control.h)

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Метод GetCurrentImage извлекает текущее изображение, ожидающего в отрисовщике.

Синтаксис

HRESULT GetCurrentImage(
  [in, out] long *pBufferSize,
  [out]     long *pDIBImage
);

Параметры

[in, out] pBufferSize

Указатель на переменную, содержащую размер буфера, который передает вызывающий объект. Если pDIBImage имеет значение NULL, этот параметр получает требуемый размер буфера.

[out] pDIBImage

Указатель на буфер, в котором полное изображение будет храниться в формате точечных карт, независимых от устройства. Приведите указатель к типу длинного указателя.

Возвращаемое значение

Возвращает значение HRESULT .

Комментарии

Фильтр видео отрисовщика и отрисовщик смешанного видео (VMR) реализуют этот метод по-разному.

Только отрисовщик видео:

Этот метод завершается ошибкой, если отрисовщик использует ускорение DirectDraw. К сожалению, это зависит от конфигурации оборудования конечного пользователя, поэтому на практике этот метод не является надежным.

Перед вызовом этого метода приостановите отрисовщик видео. В противном случае метод возвращает VFW_E_NOT_PAUSED. Убедитесь, что операция приостановки завершена, вызвав IMediaControl::GetState; Если операция приостановки не завершена, метод GetCurrentImage возвращает E_UNEXPECTED. В зависимости от доступных данных, доступных фильтру источника, отрисовщик видео не гарантирует обслуживание этого запроса. Если изображение недоступно, он возвращает E_FAIL.

Только отрисовщик для микширования видео:

Этот метод является надежным независимо от того, использует ли VMR ускорение DirectDraw и независимо от текущего состояния графа (запущено, остановлено или приостановлено).

Отрисовщик видео и отрисовщик смешанного видео:

Чтобы получить необходимый размер буфера для хранения изображения, вызовите этот метод с указателем NULL в параметре pDIBImage . Метод возвращает требуемый размер буфера в параметре pBufferSize . Выделите буфер такого размера и вызовите метод еще раз, указав pDIBImage на буфер. Во втором вызове используйте pBufferSize , чтобы указать размер буфера. Если буфер слишком мал для хранения полного изображения, метод возвращает E_OUTOFMEMORY.

Если метод завершается успешно, буфер заполняется всем dib-изображением, включая структуру BITMAPINFOHEADER , а также любыми записями палитры и битовыми масками, как определено в структуре Win32 BITMAPINFO . Формат изображения зависит от типа, предоставленного фильтром источника, и его нельзя указать заранее.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header control.h (включая Dshow.h)
Библиотека Strmiids.lib

См. также раздел

Коды ошибок и успешного выполнения

Интерфейс IBasicVideo