Метод 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 |