Compartir a través de


Método IMemAllocator::GetBuffer (strmif.h)

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

El método GetBuffer recupera un ejemplo multimedia que contiene un búfer vacío.

Sintaxis

HRESULT GetBuffer(
  [out] IMediaSample   **ppBuffer,
  [in]  REFERENCE_TIME *pStartTime,
  [in]  REFERENCE_TIME *pEndTime,
  [in]  DWORD          dwFlags
);

Parámetros

[out] ppBuffer

Recibe un puntero a la interfaz IMediaSample del búfer. El autor de la llamada debe liberar la interfaz .

[in] pStartTime

Puntero a la hora de inicio del ejemplo o NULL.

[in] pEndTime

Puntero a la hora de finalización del ejemplo o NULL.

[in] dwFlags

Combinación bit a bit de cero o más de las marcas siguientes:

Marca Descripción
AM_GBF_NOTASYNCPOINT Este ejemplo no es un punto de sincronización. No se permiten cambios de formato dinámico en este ejemplo. Cuando se llama a en el mezclador de superposición o VMR, esta marca implica que el búfer devuelto contendrá una imagen idéntica a la última imagen entregada.
AM_GBF_PREVFRAMESKIPPED Este ejemplo es el primero después de una discontinuidad. (Solo el representador de vídeo usa esta marca).
AM_GBF_NOWAIT No espere a que un búfer esté disponible.
AM_GBF_NODDSURFACELOCK Se usa con el filtro del representador de mezcla de vídeos 7 para solicitar una superficie de DirectDraw desbloqueada. Para obtener más información, consulta Trabajar con destinos de representación de Direct3D.

Valor devuelto

Devuelve un valor HRESULT . Entre los valores posibles se incluyen los que se muestran en la tabla siguiente.

Código devuelto Descripción
S_OK
Correcto.
VFW_E_NOT_COMMITTED
El asignador se descommite.
VFW_E_TIMEOUT
agotado el tiempo de espera.

Observaciones

De forma predeterminada, este método se bloquea hasta que hay disponible una muestra gratuita o se descommite el asignador. Si el autor de la llamada especifica la marca AM_GBF_NOWAIT y no hay ninguna muestra disponible, el asignador puede devolver inmediatamente con un valor devuelto de VFW_E_TIMEOUT. Sin embargo, los asignadores no son necesarios para admitir esta marca.

El ejemplo devuelto en ppBuffer tiene un puntero de búfer válido. El autor de la llamada es responsable de establecer cualquier otra propiedad en el ejemplo, como las marcas de tiempo, los tiempos multimedia o la propiedad de punto de sincronización. (Para obtener más información, consulte IMediaSample).

Los parámetros pStartTime y pEndTime no se aplican al ejemplo. El asignador puede usar estos valores para determinar qué búfer recupera. Por ejemplo, el filtro Video Renderer usa estos valores para sincronizar el cambio entre superficies de DirectDraw. Para establecer la marca de tiempo en el ejemplo, llame al método IMediaSample::SetTime .

Debe llamar al método IMemAllocator::Commit antes de llamar a este método. Este método produce un error después de llamar al método IMemAllocator::D ecommit .

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado strmif.h (incluye Dshow.h)
Library Strmiids.lib

Consulte también

Códigos de error y éxito

IMemAllocator (Interfaz)