Share via


Método ISampleGrabber::GetCurrentBuffer

[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.

Nota:

[Desusado. Esta API se puede quitar de futuras versiones de Windows.]

 

El método GetCurrentBuffer recupera una copia del búfer asociado al ejemplo más reciente.

Sintaxis

HRESULT GetCurrentBuffer(
  [in, out] long *pBufferSize,
  [out]     long *pBuffer
);

Parámetros

pBufferSize [in, out]

Puntero al tamaño del búfer. Si pBuffer es NULL, este parámetro recibe el tamaño de búfer necesario, en bytes. Si pBuffer no es NULL, establezca este parámetro igual al tamaño del búfer, en bytes. En la salida, el parámetro recibe el número de bytes que se copiaron en el búfer. Este valor puede ser menor que el tamaño del búfer.

pBuffer [out]

Puntero a una matriz de bytes de tamaño pBufferSize o NULL. Si este parámetro no es NULL, el búfer actual se copia en la matriz. Si este parámetro es NULL, el parámetro pBufferSize recibe el tamaño de búfer necesario.

Valor devuelto

Devuelve uno de los valores siguientes.

Código devuelto Descripción
E_INVALIDARG
No se almacenan en búfer ejemplos. Llame a ISampleGrabber::SetBufferSamples.
E_OUTOFMEMORY
El búfer especificado no es lo suficientemente grande.
E_POINTER
Argumento de puntero NULL.
S_OK
Correcto.
VFW_E_NOT_CONNECTED
El filtro no está conectado.
VFW_E_WRONG_STATE
El filtro aún no ha recibido muestras. Para entregar un ejemplo, ejecute o pause el gráfico.

 

Observaciones

Para activar el almacenamiento en búfer, llame a ISampleGrabber::SetBufferSamples con un valor de TRUE.

Llame a este método dos veces. En la primera llamada, establezca pBuffer en NULL. El tamaño del búfer se devuelve en pBufferSize. A continuación, asigne una matriz y vuelva a llamar al método . En la segunda llamada, pase el tamaño de la matriz en pBufferSize y pase la dirección de la matriz en pBuffer. Si la matriz no es lo suficientemente grande, el método devuelve E_OUTOFMEMORY.

El parámetro pBuffer se escribe como un puntero largo , pero el contenido del búfer depende del formato de los datos. Llame a ISampleGrabber::GetConnectedMediaType para obtener el tipo de medio del formato.

No llame a este método mientras se ejecuta el grafo de filtro. Mientras se ejecuta el grafo de filtro, el filtro Sample Grabber sobrescribe el contenido del búfer cada vez que recibe un nuevo ejemplo. La mejor manera de usar este método es usar "modo de captura única", que detiene el gráfico después de recibir la primera muestra. Para establecer el modo de captura única, llame a ISampleGrabber::SetOneShot.

El filtro no almacena en búfer ejemplos de inscripción previa ni muestras en las que el miembro dwStreamId de la estructura de AM_SAMPLE2_PROPERTIES es distinto de AM_STREAM_MEDIA.

Nota:

El archivo de encabezado Qedit.h no es compatible con los encabezados de Direct3D posteriores a la versión 7.

 

Nota:

Para obtener Qedit.h, descargue la actualización de Microsoft Windows SDK para Windows Vista y .NET Framework 3.0. Qedit.h no está disponible en el Microsoft Windows SDK para Windows 7 y .NET Framework 3.5 Service Pack 1.

 

Requisitos

Requisito Value
Encabezado
Qedit.h
Biblioteca
Strmiids.lib

Consulte también

Uso del agarrador de ejemplo

ISampleGrabber (interfaz)