# Fluxo de programa MPEG

O fluxo de programa (PS ou MPEG-PS) é um formato de contêiner para multiplexação de áudio digital, vídeo, entre outros. O formato PS é especificado em MPEG-1 Parte 1 (ISO/IEC 11172-1) e MPEG-2 Parte 1, Sistemas (padrão ISO/IEC 13818-1/ITU-T H.222.0). O fluxo de programa MPEG-2 é análogo e semelhante à camada de sistemas ISO/IEC 11172 e é compatível com versões posteriores.
Os fluxos de programa são usados ​​em discos DVD-Vídeo e discos de vídeo HD DVD, mas com algumas restrições e extensões.

## Estrutura de codificação

Os fluxos de programa são criados pela combinação de um ou mais fluxos elementares empacotados (PES), que têm uma base de tempo comum, em um único fluxo. Ele é projetado para mídia razoavelmente confiável, como discos, em contraste com a fluxo de transporte MPEG, que é para fluxo de dados em que a perda de dados é provável. Os fluxos de programas têm registros de tamanho variável e uso mínimo de códigos de início, o que tornaria a recepção pelo ar difícil, mas tem menos sobrecarga. A camada de codificação do programa de fluxo permite que apenas um programa de uma ou mais transmissões elementares seja empacotado em uma única fluxo, em contraste com o fluxo de transporte, que permite vários programas.
O fluxo de programa MPEG-2 pode conter vídeo MPEG-1 Parte 2, vídeo MPEG-2 Parte 2, áudio MPEG-1 Parte 3 (MP3, MP2, MP1) ou áudio MPEG-2 Parte 3. Ele também pode conter vídeo MPEG-4 Parte 2, áudio MPEG-2 Parte 7 (AAC) ou áudio MPEG-4 Parte 3 (AAC). O fluxo de programa MPEG-2 tem provisões para dados não padronizados (por exemplo, áudio AC-3 ou legendas) na forma dos chamados fluxos privados. A Organização Internacional para Padronização autorizou a SMPTE Registration Authority, LLC como a autoridade de registro para identificadores de formato MPEG-2. Ela publica uma lista de formatos de compressão que podem ser encapsulados no fluxo de transporte MPEG-2 e no fluxo de programa.

## Detalhes de codificação

Formato de cabeçalho do pacote de fluxo de programa MPEG-2 parcial :
| Nome | Número de bits | Descrição |
| bytes de sincronização | 32 | 0x000001BA |
| bits de marcador (marker bits) | 2 | 01b para a versão MPEG-2. Os bits marcadores para a versão MPEG-1 são 4 bits com valor 0010b. |
| Clock do sistema [32..30] | 3 | Bits de referência de clock do sistema (SCR) bits 32 to 30 |
| bits de marcador (marker bit) | 1 | 1 Bit sempre definido. |
| Clock do sistema [29..15] | 15 | Bits de clock do sistema 29 a 15 |
| bits de marcador (marker bit) | 1 | 1 Bit sempre definido. |
| Clock do sistema [14..0] | 15 | Bits de clock do sistema 14 a 0 |
| bits de marcador (marker bit) | 1 | 1 Bit sempre definido. |
| Extensão SCR | 9 | |
| bits de marcador (marker bit) | 1 | 1 Bit sempre definido. |
| bit rate | 22 | Em unidades de 50 bytes por segundo. |
| bits de marcador (marker bit) | 2 | 11 bits sempre definidos. |
| reservado | 5 | reservado para uso futuro |
| stuffing length | 3 | |
| stuffing bytes | 8*stuffing length | |
| cabeçalho do sistema (system header) (opcional) | 0 ou mais | se o código de início do cabeçalho do sistema segue: 0x000001BB |
Formato de cabeçalho parcial do sistema :
| Nome | Número de bytes | Descrição |
| bytes de sincronização | 4 | 0x000001BB |
| header length | 2 | |
| bits de limite de taxa e marcadores | 3 | |
| áudio vinculado e sinalizadores | 1 | |
| flags, marker bit, e video bound | 1 | |
| Restrição de taxa de pacotes e byte reservado | 1 | |