Método CBaseAllocator.GetBuffer
[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 GetBuffer
método recupera un ejemplo multimedia que contiene un búfer. Este método implementa el método IMemAllocator::GetBuffer .
Sintaxis
HRESULT GetBuffer(
IMediaSample **ppBuffer,
REFERENCE_TIME *pStartTime,
REFERENCE_TIME *pEndTime,
DWORD dwFlags
);
Parámetros
-
ppBuffer
-
Recibe un puntero a la interfaz IMediaSample del búfer. El autor de la llamada debe liberar la interfaz .
-
pStartTime
-
Puntero a la hora de inicio del ejemplo.
-
pEndTime
-
Puntero a la hora de finalización del ejemplo.
-
dwFlags
-
Combinación bit a bit de cero o más marcas. La clase base admite la marca siguiente.
Valor Significado - AM_GBF_NOWAIT
No espere a que un búfer esté disponible.
Valor devuelto
Devuelve uno de los siguientes valores HRESULT .
Código devuelto | Descripción |
---|---|
|
Correcto. |
|
No se ha confirmado el asignador. |
|
agotado el tiempo de espera. |
Observaciones
A menos que el autor de la llamada especifique la marca AM_GBF_NOWAIT en dwFlags, este método se bloquea hasta que el ejemplo siguiente esté disponible.
El ejemplo de medios recuperados tiene un puntero válido al búfer asignado. 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.
En la clase base, se omiten los parámetros pStartTime y pEndTime . Las clases derivadas pueden usar estos valores. Por ejemplo, el asignador del filtro Video Renderer usa estos valores para sincronizar el cambio entre superficies de DirectDraw.
Si el método necesita esperar en un ejemplo, incrementa el recuento de objetos en espera (CBaseAllocator::m_lCount) y llama a la función WaitForSingleObject en el semáforo (CBaseAllocator::m_hSem). Cuando un ejemplo está disponible, llama al método CBaseAllocator::ReleaseBuffer en el asignador, lo que aumenta el recuento de semáforos por m_lCount (liberando así los subprocesos en espera) y establece m_lCount volver a cero.
Requisitos
Requisito | Value |
---|---|
Encabezado |
|
Biblioteca |
|