Introducción a los sistemas MPEG-2

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

En esta sección se proporciona información general y no técnica de la capa MPEG-2 Systems. MPEG-2 Systems es el estándar que define cómo se multiplexan las secuencias de audio y vídeo en MPEG-2.

Flujos elementales

La multiplexación MPEG-2 comienza con una o varias secuencias de bytes, denominadas secuencias elementales (ES), que contienen vídeo, audio u otros datos. Por ejemplo, un vídeo ES contiene fotogramas de vídeo comprimidos, además de encabezados de secuencia, encabezados de grupo de imágenes (GOP) y cualquier otra cosa que necesite el descodificador para descodificar la secuencia. La capa Sistemas no define el contenido de la secuencia de bytes de ES.

Una secuencia elemental se divide en paquetes, formando una secuencia elemental empaquetada (PES). Los paquetes PES tienen una longitud variable. El contenido del paquete se denomina carga útil. Cada paquete PES también incluye un encabezado. El multiplexador asigna un identificador de secuencia de 1 byte a cada PES; Los paquetes PES individuales se identifican mediante el identificador de secuencia en el encabezado del paquete. En el caso de las secuencias de audio, el identificador de secuencia tiene el formato 110xxxxx. En el caso del vídeo, el identificador de secuencia tiene el formato 1110aaaa.

El estándar MPEG-2 define dos maneras de entregar secuencias elementales en paquetes: secuencias de programa y flujos de transporte.

Secuencias de programa

Las secuencias de programa están diseñadas para entornos que no tienen errores, como el almacenamiento de archivos local. En una secuencia de programa, los paquetes PES se multiplexan y se organizan en unidades denominadas paquetes. Todas las secuencias PES de una secuencia de programa se sincronizan con el mismo reloj.

Flujos de transporte

Los flujos de transporte (TS) están diseñados para entornos poco confiables o propensos a errores, como las difusiones de red. Además, pueden contener varios programas que se sincronizan con diferentes relojes. Una secuencia de transporte agrega una segunda capa de empaquetado: las secuencias PES se empaquetan dentro de los paquetes de flujo de transporte, que tienen un tamaño fijo de 188 bytes por paquete. Los paquetes de TS también pueden contener flujos de información del programa, que se describen en la sección siguiente.

Cada paquete de TS tiene un encabezado de 4 bytes, además de un campo de adaptación opcional que contiene información de encabezado adicional. El multiplexador asigna un identificador de programa (PID) a cada secuencia de PES o flujo de información del programa. Los PIN se usan para identificar los paquetes de TS, de forma similar a la forma en que los identificadores de flujo identifican los paquetes PES. (Si un flujo de transporte contiene varios programas, es posible que los identificadores de secuencia no sean únicos, pero las asignaciones de PID son únicas dentro del flujo de transporte).

Información específica del programa

Dado que un flujo de transporte puede llevar varios programas, debe haber una manera de asociar los distintos paquetes PES con los programas a los que pertenecen. Esto se logra mediante tablas que identifican los flujos de programa. Colectivamente, estos datos se denominan Información específica del programa (PSI). Los datos de PSI se llevan en paquetes de TS, al igual que los datos pes. Hay varios tipos de datos de PSI, entre los que se incluyen:

  • Tabla de asociaciones de programa (PAT). El PAT siempre se asigna a piD 0x000. Cada entrada del PAT es un PID que identifica los paquetes PMT para ese programa (consulte el siguiente elemento).

  • Tabla de asignación de programas (PMT). Cada PMT define un programa. El PMT contiene una lista de secuencias; cada entrada de tabla proporciona el PID para esa secuencia, además de un código que identifica el tipo de secuencia. ISO/IEC 13818-1 define algunos tipos de secuencia estándar; En la tabla siguiente se muestra una lista abreviada.

    stream_type Descripción
    0x01 Vídeo MPEG-1
    0x02 Vídeo MPEG-2
    0x03 Audio MPEG-1
    0x04 Audio MPEG-2
    0x80: 0xFF Usuario privado

     

    Otros estándares basados en MPEG-2, como ATSC, pueden definir tipos de secuencia adicionales en el intervalo "privado del usuario". Por ejemplo, ATSC define 0x81 como audio Dolby AC-3.

  • Tablas de acceso condicional (CAT)

  • Tablas de identificación de red (NIT)

Compatibilidad con MPEG-2 en DirectShow