Compartir a través de


Método ISampleGrabber::SetMediaType

[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 SetMediaType método especifica el tipo de medio para la conexión en el pin de entrada de Sample Grabber.

Sintaxis

HRESULT SetMediaType(
   const AM_MEDIA_TYPE *pType
);

Parámetros

pType

Puntero a una estructura de AM_MEDIA_TYPE especifica el tipo de medio necesario. No es necesario establecer todos los miembros de la estructura; vea Comentarios para obtener más información.

Valor devuelto

Devuelve S_OK.

Comentarios

De forma predeterminada, sample grabber no tiene ningún tipo de medio preferido. Para asegurarse de que sample Grabber se conecta al filtro correcto, llame a este método antes de compilar el gráfico de filtros.

Este método restringe el intervalo de tipos multimedia que aceptará el filtro. Cuando el filtro se conecta, intenta coincidir con el tipo de medio especificado en pType. Para ello, compara los GUID de tipo principal, subtipo y tipo de formato, en ese orden. Para cada uno de estos GUID, si pType tiene el valor GUID_NULL, sample Grabber acepta el tipo de medio sin ninguna comprobación adicional. Si pType tiene cualquier otro valor, sample Grabber lo compara con el GUID en el tipo de conexión. A menos que los dos GUID coincidan exactamente, sample grabber rechaza la conexión.

En el caso de los tipos de medios de vídeo, sample Grabber omite el bloque de formato. Por lo tanto, aceptará cualquier tamaño de vídeo y velocidad de fotogramas. Al llamar a SetMediaType, establezca el bloque de formato (pbFormat) en NULL y el tamaño (cbFormat) en cero. En el caso de los tipos de medios de audio, sample Grabber examinará la estructura WAVEFORMATEX y requerirá que el otro filtro se conecte con ese formato, a menos que el bloque de formato en pType sea NULL o la etiqueta de formato sea WAVE_FORMAT_PCM y los demás miembros de estructura sean cero.

Ejemplo 1:

  • Tipo principal: MEDIATYPE_Video
  • Subtipo: GUID_NULL
  • Tipo de formato: GUID_NULL

Sample Grabber aceptará cualquier tipo de vídeo en el que el tipo principal sea igual a MEDIATYPE_Video. No comprobará el subtipo.

Ejemplo 2:

  • Tipo principal: MEDIATYPE_Video
  • Subtipo: MEDIASUBTYPE_RGB24
  • Tipo de formato: GUID_NULL

Ahora, sample Grabber comprobará el subtipo y aceptará solo vídeo RGB 24.

Limitaciones: Independientemente del tipo que establezca, el filtro de captura de muestra rechaza los tipos de vídeo con orientación de arriba abajo ( biHeight negativo) o con un tipo de formato de FORMAT_VideoInfo2. En este caso, aunque el SetMediaType método se realiza correctamente, el filtro no se conectará.

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

Usar el captador de ejemplo

ISampleGrabber (interfaz)