Compartir a través de


Configuración de los pins de salida de Demux

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

Cuando el demux MPEG-2 recibe un paquete de datos, debe determinar qué pin de salida debe analizar y entregar los datos. En el modo de secuencia de programa, los identificadores de secuencia de demux se asignan a las patillas de salida. En el modo de secuencia de transporte, asigna LOS PID a los pines de salida. Por ejemplo, en el modo de transmisión de transporte, si piD 0x31 se asigna a la patilla 0, cada paquete de TS con ese número piD se enruta al pin de salida 0. Si el demux recibe un paquete cuyo identificador de secuencia o PID no está asignado a ningún pin de salida, simplemente descarta el paquete.

En el modo de extracción, el demux crea automáticamente patillas de salida para las secuencias de audio y vídeo en el archivo y asigna los identificadores de secuencia a las patillas.

En el modo de inserción, la aplicación o otro filtro deben configurar los pines de salida. En el caso de los orígenes de televisión digitales mediante la arquitectura del controlador de difusión (BDA), el filtro del proveedor de red funciona con el filtro TIF para configurar el demux. La aplicación no tiene que hacer nada. En otros escenarios, la aplicación debe configurar los pines de salida.

La demux comienza sin pins de salida. Para crear un pin de salida, llame al método IMpeg2Demultiplexer::CreateOutputPin en el filtro. Este método toma un tipo de medio y un nombre de patilla, y devuelve un puntero IPin . El tipo de medio se usa cuando el pin se conecta a otro filtro, normalmente un descodificador; se proporciona un ejemplo a la sección Uso de Demux con secuencias elementales. El nombre del pin puede ser cualquier cosa que quiera, excepto que no se permiten nombres de patillas duplicados.

A continuación, asigne uno o varios identificadores de secuencia o PIDs al nuevo pin de salida. Para secuencias de programa, consulte el pin para IMPEG2StreamIdMap y llame a IMPEG2StreamIdMap::MapStreamId. Para flujos de transporte, consulte el pin para IMPEG2PIDMap y llame a IMPEG2PIDMap::MapPID.

Hay varias maneras de que el demux pueda analizar paquetes de TS. Para cada pin de salida, el método de análisis viene determinado por el parámetro MediaSampleContent al método MapPID .

Valor Descripción
MEDIA_ELEMENTARY_STREAM El filtro entrega cargas PES. En este modo, el filtro desempaqueta los paquetes PES, por lo que el filtro de bajada recibe la secuencia de bytes de ES, sin los encabezados de paquete PES. (Solo secuencias de audio y vídeo).
MEDIA_MPEG2_PSI El filtro ofrece secciones de PSI completas, como tablas PAT, tablas PMT, tablas CAT, etc.
MEDIA_TRANSPORT_PAYLOAD El filtro extrae las cargas de los paquetes de TS y las entrega sin analizar más. En el caso de las secuencias elementales, esto significa que el demux entregará paquetes PES completos, incluidos los encabezados de paquete PES.
MEDIA_TRANSPORT_PACKET El filtro entrega paquetes de TS completos. El demux enruta los paquetes de TS según sus PID, pero no examina ni procesa los paquetes. Los paquetes con errores no se filtran. El demux no vuelve a multiplexar los paquetes y la secuencia de salida resultante no es una secuencia de transporte MPEG-2 compatible. Este modo se denomina modo de paso a través .

 

En el caso de las secuencias de programa, la demux siempre entrega cargas PES.

Uso del Demultiplexer MPEG-2