Transport Stream

Apariencia mover a la barra lateral ocultar

Transport Stream (término que puede ser traducido como corriente de transporte) es un protocolo de comunicación para audio, vídeo y datos especificado en los estándares de MPEG-2. Los flujos binarios de vídeo y audio de cada programa de televisión se comprimen independientemente formando cada uno de ellos una “corriente elemental” (ES – Elementary Stream). Cada una de estas corrientes elementales se estructura en forma de paquetes llamados PES (Packetized Elementary Stream).

Estos paquetes de video y audio, así como de otros datos de un mismo programa, pasan posteriormente a un multiplexor donde se conforma un solo tren binario. Para esta multiplexación, el grupo de estándares de MPEG-2 distingue entre dos posibilidades: la conformación de una “corriente de programa” (PS – Program Stream) y la conformación de una “corriente de transporte” (TS - Transport Stream).

Generación de Transport Stream.

La corriente de transporte es apropiada para entornos ruidosos, opción que encaja en las necesidades de la difusión de Televisión Digital Terrestre, por cable y vía satélite. Esta opción exige pasar los paquetes PES a otros paquetes más cortos, de 188 bytes de longitud, y aplicar técnicas de corrección de errores “hacia adelante” (FEC-Forward Error Correction). Con esto se puede organizar una corriente de transporte de un solo programa denominada SPTS (Siglas en inglés de Single Program Transport Stream). Esta longitud de paquetes incluye 4 bytes de cabecera o encabezado y es apropiada para utilizarse en redes ATM, así como en una amplia variedad de sistemas de transmisión y almacenamiento.

La corriente de transporte puede formarse con varios programas de televisión y cada uno de ellos con varias corrientes elementales. Como es lógico, las corrientes elementales que forman un mismo programa de televisión deben ser sincrónicas. Sin embargo, los diferentes programas pueden tener cada uno una sincronización independiente. En este caso, se organiza un canal de múltiplex con todos los programas.

El flujo binario de la corriente de transporte completa es constante, aun cuando varíen los flujos de cada corriente elemental. Para mantener este flujo total constante, se pueden incluir paquetes nulos. Entre otros datos, la corriente de transporte también lleva información de cifrado para el acceso condicional a determinados programas de pago.

Contenido del paquete TS

La multiplexación de TS consiste en pequeños paquetes de longitud constante de 188 bytes, de los cuales 4 se destinan a una cabecera de inclusión obligatoria tras la que puede encontrarse un campo de adaptación opcional. El resto de bytes, hasta completar los 188, son de información o carga útil.

Cabecera de un paquete TS

Esquema de un paquete TS.

Campo de adaptación

Los campos más destacables dentro del Campo de Adaptación de una cabecera son los siguientes:

Program Specific Information (PSI)

El decodificador MPEG-2, además de ser capaz de decodificar cada uno de los Elementary Streams que conforman un programa ha de ser capaz de encontrarlos dentro de una trama de transporte. El Program Specific Information (PSI) es lo que permite que el decodificador realice esa tarea.

Toda la señalización necesaria para la correcta recepción de la trama de transporte se da mediante tablas de información de servicio (Service Information Tables), que se introducen en la propia trama de transporte, divididas en secciones MPEG-2 y embutidas en paquetes de transporte. Estas tablas de señalización conforman Elementary Streams, tal y como lo hacen las tramas de video y audio. Por lo tanto, cada una viajará en paquetes de transporte con un PID único para cada Transport Stream.

Sin embargo, el mecanismo mediante el que dichos Elementary Streams se introducen en los paquetes de transporte es diferente al usado para las otras tramas. Una tabla de PSI no se introduce en un paquete PES antes de encapsularse en paquetes de transporte. Las tablas se introducen en secciones MPEG-2, las cuales pueden ser directamente introducidas en los paquetes de transporte.

Al contrario que en los PES, las secciones no empiezan y acaban forzosamente con un paquete de transporte. Cuando una sección o un PES empieza en un paquete, el indicador Payload unit start indicator (PUSI) se pone a "1". Cuando se trata de una sección, el paquete puede empezar al final de otra sección, precedida o no de un campo de adaptación (adaptation field). El primer byte de la carga útil es un indicador llamado pointer field el que da el desplazamiento del comienzo de la nueva sección con respecto a este byte.

Además de la tablas de PSI, MPEG-2 define una estructura de secciones privadas (private sections) mediante la cual el estándar es extensible. Además, estas tablas nos permiten la transmisión de datos privados. Cada tabla está constituida, según su importancia, por una o varias secciones (256 como máximo, con una longitud máxima de 1024 bytes, salvo para la tabla private que puede alcanzar los 4026 bytes).

Tablas obligatorias de MPEG-2

La PAT nos da información sobre todos los programas presentes en un Transport Stream. A través de ella, sabemos en qué PID viajan las tablas PMT que nos dan información sobre cada uno de los programas. La PAT siempre viaja en paquetes de transporte con PID=0. Evidentemente la tabla PAT será única para cada trama de transporte. Existe una PMT por cada programa presente en el Transport Stream. En ella se da información sobre todos los Elementary Streams asociados a un programa, de tal forma que el receptor es capaz de localizarlos y decodificarlos. Por lo tanto para cada Elementary Stream nos indica:
  1. PID en el que viaja la trama fundamental.
  2. Tipo de trama fundamental (vídeo, audio, datos...).
  3. Descriptores asociados a la trama fundamental.
El PID en el que viaja cada una de las PMTs (una para cada programa presente en la trama de transporte) es asignado por la PAT. Nos da información sobre el sistema de acceso condicional presente en el transport stream. Sólo es obligatoria en caso de que algún programa del transport stream esté codificado. La tabla CAT siempre viaja en paquetes de transporte de PID = 1. Transporta información de red. Esta red puede estar formada por varios canales físicos diferentes, que a su vez transporten tramas de transporte independientes entre sí. El PID en el que viaja la NIT es asignado por la PAT. La NIT es una tabla opcional, pero en caso de estar presente, conforma el programa número 0 en la PAT.

Referencias