Condividi tramite


Panoramica dei sistemi MPEG-2

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Questa sezione offre una panoramica generale e non tecnica del livello MPEG-2 Systems. MPEG-2 Systems è lo standard che definisce la modalità di multiplexing dei flussi audio e video in MPEG-2.

Flussi elementari

Il multiplexing MPEG-2 inizia con uno o più flussi di byte, denominati flussi elementari (ES), che contengono video, audio o altri dati. Ad esempio, un video ES contiene fotogrammi video compressi, intestazioni di sequenza, intestazioni GOP (Group-of-Picture) e qualsiasi altro elemento necessario dal decodificatore per decodificare il flusso. Il livello Sistemi non definisce il contenuto del flusso di byte ES.

Un flusso elementare è suddiviso in pacchetti, formando un flusso elementare pacchetto (PES). I pacchetti PES hanno una lunghezza variabile. Il contenuto del pacchetto viene chiamato payload. Ogni pacchetto PES include anche un'intestazione. Il multiplexer assegna un ID di flusso a 1 byte a ogni PES; singoli pacchetti PES sono identificati dall'ID flusso nell'intestazione del pacchetto. Per i flussi audio, l'ID flusso ha il formato 110xxxxx. Per il video, l'ID flusso ha il formato 1110aaaa.

Lo standard MPEG-2 definisce due modi per fornire flussi elementari pacchettizzati: flussi di programma e flussi di trasporto.

Flussi di programma

I flussi di programma sono progettati per ambienti relativamente privi di errori, ad esempio l'archiviazione file locale. In un flusso di programma, i pacchetti PES sono multipli e organizzati in unità denominate pacchetti. Tutti i flussi PES in un flusso di programma vengono sincronizzati con lo stesso orologio.

Flussi di trasporto

I flussi di trasporto sono progettati per ambienti non affidabili o soggetti a errori, ad esempio le trasmissioni di rete. Inoltre, possono contenere più programmi sincronizzati con orologi diversi. Un flusso di trasporto aggiunge un secondo livello di creazione di pacchetti: i flussi PES vengono inseriti all'interno di pacchetti del flusso di trasporto, con una dimensione fissa di 188 byte per pacchetto. I pacchetti TS possono anche contenere flussi di informazioni sul programma, descritti nella sezione seguente.

Ogni pacchetto TS ha un'intestazione a 4 byte, oltre a un campo di adattamento facoltativo che contiene informazioni aggiuntive sull'intestazione. Il multiplexer assegna un ID programma (PID) a ogni flusso di informazioni di pes o programma. I PID vengono usati per identificare i pacchetti TS, in modo analogo al modo in cui gli ID flusso identificano i pacchetti PES. Se un flusso di trasporto contiene più programmi, gli ID di flusso potrebbero non essere univoci, ma le assegnazioni PID sono univoche all'interno del flusso di trasporto.

Informazioni specifiche del programma

Poiché un flusso di trasporto può trasportare più programmi, deve esserci un modo per associare i vari pacchetti PES ai programmi a cui appartengono. Questa operazione viene eseguita usando le tabelle che identificano i flussi del programma. Collettivamente, questi dati sono denominati Informazioni specifiche del programma (PSI). I dati PSI vengono trasportati in pacchetti TS, proprio come i dati di PES. Esistono diversi tipi di dati PSI, tra cui:

  • Tabella di associazione programmi (PAT). Il token di accesso personale viene sempre assegnato al 0x000 PID. Ogni voce del pat è un PID che identifica i pacchetti PMT per tale programma (vedere l'elemento successivo).

  • Tabella mappa programmi (PMT). Ogni PMT definisce un programma. Il PMT contiene un elenco di flussi; ogni voce di tabella fornisce il PID per tale flusso, oltre a un codice che identifica il tipo di flusso. ISO/IEC 13818-1 definisce alcuni tipi di flusso standard; Nella tabella seguente è riportato un elenco abbreviato.

    stream_type Descrizione
    0x01 Video MPEG-1
    0x02 Video MPEG-2
    0x03 Audio MPEG-1
    0x04 Audio MPEG-2
    0x80 - 0xFF Utente privato

     

    Altri standard basati su MPEG-2, ad esempio ATSC, possono definire tipi di flusso aggiuntivi nell'intervallo "utente privato". Ad esempio, ATSC definisce 0x81 come audio Dolby AC-3.

  • Tabelle di accesso condizionale (CAT)

  • Tabelle di identificazione di rete (NIT)

Supporto MPEG-2 in DirectShow