Метод IMemAllocator::GetBuffer (strmif.h)
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Метод GetBuffer извлекает образец носителя, содержащий пустой буфер.
Синтаксис
HRESULT GetBuffer(
[out] IMediaSample **ppBuffer,
[in] REFERENCE_TIME *pStartTime,
[in] REFERENCE_TIME *pEndTime,
[in] DWORD dwFlags
);
Параметры
[out] ppBuffer
Получает указатель на интерфейс IMediaSample буфера. Вызывающий объект должен освободить интерфейс .
[in] pStartTime
Указатель на время начала примера или ЗНАЧЕНИЕ NULL.
[in] pEndTime
Указатель на время окончания образца или ЗНАЧЕНИЕ NULL.
[in] dwFlags
Побитовое сочетание нуля или нескольких следующих флагов:
Flag | Описание |
---|---|
AM_GBF_NOTASYNCPOINT | Этот пример не является точкой синхронизации. Изменение динамического формата в этом примере запрещено. При вызове в overlay Mixer или VMR этот флаг означает, что возвращаемый буфер будет содержать изображение, идентичное последнему переданного образа. |
AM_GBF_PREVFRAMESKIPPED | Этот пример является первым после разрыва. (Только отрисовщик видео использует этот флаг.) |
AM_GBF_NOWAIT | Не дожидайтесь, пока буфер станет доступным. |
AM_GBF_NODDSURFACELOCK | Используется с фильтром 7 отрисовщика для микширования видео для запроса разблокировки поверхности DirectDraw. Дополнительные сведения см. в разделе Работа с целевыми объектами отрисовки Direct3D. |
Возвращаемое значение
Возвращает значение HRESULT . Возможные значения включают значения, приведенные в следующей таблице.
Код возврата | Описание |
---|---|
|
Успешно. |
|
Распределитель снимается. |
|
Истекло время ожидания. |
Комментарии
По умолчанию этот метод блокируется до тех пор, пока не будет доступен бесплатный образец или не будет выведен из эксплуатации распределитель. Если вызывающий объект задает флаг AM_GBF_NOWAIT и выборка недоступна, распределитель может немедленно вернуться с возвращаемым значением VFW_E_TIMEOUT. Однако распределители не требуются для поддержки этого флага.
Образец, возвращаемый в ppBuffer , имеет допустимый указатель буфера. Вызывающий объект отвечает за установку любых других свойств в образце, таких как метки времени, время мультимедиа или свойство точки синхронизации. (Дополнительные сведения см. в разделе IMediaSample.)
Параметры pStartTime и pEndTime не применяются к образцу. Распределитель может использовать эти значения для определения извлекаемого буфера. Например, фильтр Отрисовщик видео использует эти значения для синхронизации переключения между поверхностями DirectDraw. Чтобы задать метку времени для примера, вызовите метод IMediaSample::SetTime .
Перед вызовом этого метода необходимо вызвать метод IMemAllocator::Commit . Этот метод завершается ошибкой после вызова метода IMemAllocator::D ecommit .
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | strmif.h (включая Dshow.h) |
Библиотека | Strmiids.lib |