Transportní proud MPEG () nebo jednoduše transportní proud (TS) je standardní datový kontejner pro přenos a ukládání zvuku, videa a dat Program and System Information Protocol (PSIP). Používá se v systémech digitálního vysílání, jako je např. DVB, ATSC a IPTV.

Transportní proud definuje formát kontejneru pro zapouzdřování packetized elementary streamu využívajícího samoopravné kódy a synchronizační vzorky pro udržování integrity přenosu kanálem se sníženou kvalitou.

Transportní proudy se od podobně pojmenovaných programových proudů MPEG liší dvěma významnými vlastnostmi: programové proudy jsou navrženy pro velmi spolehlivá media, jako jsou DVD disky, zatímco transportní proudy jsou navrženy pro méně spolehlivé způsoby přenosu, především pro pozemní a satelitní vysílání televize. Transportní proud také může přenášet více programů.

Transportní proud je specifikován ve standardu (příp. doporučení) MPEG-2 Part 1, Systems, formally known as ISO/IEC standard 13818-1 or ITU-T Rec. H.222.0.

Úvod náhled|vpravo|400px|Několik MPEG proudů je zkombinováno, zakódováno a posláno na vysílací anténu. Přijímač analyzuje proud a dekóduje jeden z podproudů. Transportní proud zapouzdřuje několik obvykle packetized elementary stream (PES) dílčích proudů, které pomocí MPEG kodeku nebo různých ne-MPEG kodeků (např. AC3 nebo DTS audio a MJPEG nebo JPEG 2000 video) naopak zabalují hlavní datový proud, titulky ve formě textu nebo obrázků, tabulky identifikující proudy a dalších informace jako je např. Electronic Program Guide (EPG). Obvykle se kombinuje více proudů, které odpovídají různým televizním kanálům nebo různým pohledům filmu.

Každý proud je rozsekán na části, které jsou umístěny do paketů pevné délky 188 bajtů, které mohou být prokládány s pakety z jiných proudů. Krátké pakety umožňují prokládání proudů s menší latencí a větší odolností proti chybám než u programových proudů a jiných běžných kontejnerů, jako je např. AVI, MOV/MP4 nebo MKV, které zpravidla balí do paketu celý rámec. To je výhodné pro videokonference, kde by velké rámce mohly způsobovat nepřijatelné zpoždění zvuku.

Transportní proudy se obvykle vysílají s konstantní bitovou rychlostí (CBR) s výplňkovými bajty, když není k dispozici dostatek dat.

Struktura TS

Paket Základní datovou jednotkou v transportním proudu je paket; transportní proud je tvořen posloupností paketů. Každý paket začíná synchronizačním bajtem a hlavičkou, za kterou mohou následovat nepovinné hlavičky; zbytek paketu je datové pole. Všechna pole hlavičky používají pořadí big endian. Pakety mají délku 188 bajtů, ale komunikační médium může přidávat další informace. Délka 188 bajtů byla zvolena pro kompatibilitu se systémy ATM. + Formát paketů dílčího transportního prouduPolePočet bitůBitová maska (big endian)Popisčtyřbajtová hlavička Transport Stream HeaderSynchronizační bajt80xff000000Hodnota 0x47 (ASCII znak 'G')Transport error indicator (TEI)10x800000Nastaven, pokud demodulátor nebyl schopen pomocí samoopravného kódu opravit chyby; to znamená, že data v paketu jsou poškozena.Payload unit start indicator (PUSI)10x400000Nastaveno, pokud tento paket obsahuje první bajt nového datového pole. Pro paketová data PSI první bajt datového pole indikuje, kde toto nové datové pole začíná. V případě paketových dat PES bude nový PES paket začínat na začátku datového pole. Toto pole umožňuje přijímači, který začal číst uprostřed paketu, najít začátek paketu.Transport priority10x200000Nastaven, pokud aktuální paket má vyšší prioritu než jiné pakety se stejným PID.PID130x1fff00Packet Identifier, rozlišuje typ datového pole.Transport scrambling control (TSC)20xc0 Indikace kódovaného (šifrovaného) obsahu: '00' = nešifrováno. Pro DVB-CSA a ATSC DES:'01' (0x40) = rezervováno pro budoucí použití'10' (0x80) = šifrováno se sudým klíčem'11' (0xC0) = šifrováno s lichým klíčemAdaptation field control20x3001 – paket obsahuje pouze datové pole, 10 – paket obsahuje pouze adaptační pole, 11 – paket obsahuje adaptační i datové pole, 00 – rezervováno pro budoucí použití Continuity counter40xfČtyřbitový čítač paketů s datovým polem (0x00 až 0x0F) v rámci proudu (kromě PID 8191)zvyšovaný o jedničku, pokud je nastaven příznak datového pole.Nepovinná poleAdaptation fieldproměnnáPřítomné, pokud adaptation field control je 10 nebo 11. Formát je popsán níže.Datové pole (payload data)proměnnáPřítomné, pokud adaptation field control je 01 nebo 11. Datové pole může obsahovat PES pakety, informace specifické pro program (viz níže) nebo jiná data.

+ Formát pole Adaptation fieldPolePočet bitůBitová maskaPopisAdaptation field length8 Délka (v bajtech) pole Adaptation field za tímto bajtemDiscontinuity indicator10x80Nastaven, pokud je aktuální TS paket ve stavu diskontinuity buď kvůli čítači continuity counter nebo kvůli program clock referenceRandom access indicator10x40Nastaven, pokud lze proud bezchybně dekódovat od tohoto paketuElementary stream priority indicator10x20Nastaven pro proud s „vysokou prioritou“PCR flag10x10Udává přítomnost pole PCROPCR flag10x08Udává přítomnost pole OPCRSplicing point flag10x04Udává přítomnost pole splice countdownTransport private data flag10x02Nastaven, jsou-li přítomná Transport private dataAdaptation field extension flag10x01Udává přítomnost rozšíření adaptation extension dataNepovinná poleProgram clock reference (PCR)48 Časová reference uložená jako 33bitová báze, 6 rezervovaných bitů a 9 bitů rozšíření.Hodnota je báze * 300 + rozšíření.Original Program clock reference (OPCR)48 Původní PCR. Používá se, je-li jeden TS zkopírován do jinéhoSplice countdown8 Celé číslo se znaménkem (dvojkový doplněk) udávající, kolik TS paketů je vzdálené místo slepeníTransport private data length8 Délka následujícího poleTransport private dataproměnný Soukromá dataAdaptation extensionproměnný Viz nížeVýplňkové bajtyproměnnýVždy 0xFF

+ Formát pole Adaptation extensionJménoPočet bitůBitová maskaPopisDélka pole Adaptation extension80xff00Délka hlavičkyLegal time window (LTW) flag10x0080Piecewise rate flag10x0040Seamless splice flag10x0020Rezervováno50x001fNepovinná poleLTW flag set (2 bajty)LTW valid flag10x8000LTW offset150x7fffZvláštní informace pro určení stavu bufferů při opakovaném vysílání, když mohou chybět některé pakety.Piecewise flag set (3 bajty)Rezervováno20xc00000Piecewise rate220x3fffffBitový tok proudu měřený ve 188bajtových paketech pro určení času konce LTW.Seamless splice flag set (5 bajtů)Splice typ40xf000000000Udává parametry H.262 splice.DTS next access unit360x0efffefffePES DTS místa slepení. Je složen z několika polí: 1 marker bit (0x1), 15 bitů, 1 marker bit, 15 bitů, a 1 marker bit, celkem 33 datových bitů. +Formát datového poleJménoPočet bitůBitová maskaPopisPayload Pointer (nepovinný)80xffPřítomen pouze, pokud je nastaven příznak Payload Unit Start Indicator (PUSI), a datový typ paketu je PSI (ne PES). Udává index po tomto bajtu, kde začíná nové datové pole. Bajty před indexem patří do předchozího datového pole.Actual PayloadproměnnáObsah datového pole.

Paket identificator (PID) Každá tabulka nebo elementární proud v transportním proudu je identifikován 13bitovou hodnotou Packet identificator (PID). Demultiplexor extrahuje elementární proudy z transportního proudu částečně hledáním paketů identifikovaných stejným PID. Ve většině aplikací se při rozhodování o tom, jak často se určitý PID objeví v transportním toku, použije časový multiplex.

+ Používané packet identifiers Desítkově Šestnáctkově Popis 00x0000Program association table (PAT) obsahuje seznam všech tabulek10x0001Tabulka pro systém podmíněného přístupu (CAT) obsahuje seznam všech entitlement management message streams podle ITU-T Rec. H.222 používaných v tabulkách program map tables20x0002Transport stream description table (TSDT) obsahuje deskriptory pro celý transportní proud30x0003IPMP control information table obsahuje seznam všech řídicích proudů ISO/IEC 14496-13 používaných v program map tabulkách4–150x0004-0x000FRezervováno pro budoucí použití16–310x0010-0x001FPoužívané pro metadata pro DVB 0x0010: NIT, ST 0x0011: SDT, BAT, ST 0x0012: EIT, ST, CIT 0x0013: RST, ST 0x0014: TDT, TOT, ST 0x0015: síťová synchronizace 0x0016: RNT 0x0017-0x001B: rezervováno pro budoucí použití 0x001C: inband signalizace 0x001D: měření 0x001E: DIT 0x001F: SIT32-81860x0020-0x1FFAMůže být podle potřeby přiřazeno tabulkám program map tables, elementary streams a dalším datovým tabulkám81870x1FFBPro MGT metadata v DigiCipher 2/ATSC8188–81900x1FFC-0x1FFEMůže být přiřazeno podle potřeby pro tabulky program map tables, elementary streams a další datové tabulky81910x1FFFVýplňkový paket (používán vyplnění času pro dosažení pevné bitové rychlosti)

Programy Transportní proud používá koncept programů. Každý program je popsán tabulkou program map table (PMT). Elementární proudy daného programu mají hodnoty PID uvedeny v PMT. Další PID je spojen se samotnou tabulkou PMT. Například transportní proud používaný v digitální televizi může obsahovat tři programy, které odpovídají třem televizním kanálům. Kanál je obvykle tvořen jedním video proudem, jedním nebo dvěma audio proudy a metadaty. Přijímač digitální televize, který má dekódovat pouze jeden ze tří kanálů, musí dekódovat obsah všech PID tabulek daného kanálu. Obsah všech jiných PID tabulek může zahazovat. Transportní proud s více než jedním programem se nazývá multi-program transport stream (MPTS). Transportní proud s jedním programem se nazývá single-program transport stream (SPTS).

Program-specific information

Existují 4 tabulky s informacemi pro určitý program (PSI):

Program Association Table (PAT) Program Map Table (PMT) Conditional Access Table (CAT) Network Information Table (NIT)

Norma MPEG-2 nepopisuje formát tabulek CAT a NIT.

PCR Pro synchronizaci jednotlivých proudů (aby nedocházelo k posunům mezi audio a video stopou) je v poli adaptation field paketů transportního proudu MPEG-2 nejméně jednou za 100 ms přenášena časová značka program clock reference (PCR). PID s PCR pro MPEG-2 program je identifikován hodnotou pcr_pid v příslušné tabulce PMT. Hodnotu PCR lze použít pro generování systémových hodin () v dekodéru. Dekodér STC poskytuje vysoce přesnou časovou základnu, které se používá pro synchronizaci elementárních proudů se zvukem a videem. Časování v MPEG-2 se odkazuje na tyto hodiny. Například presentation time stamp (PTS) je založen na PCR. Prvních 33 bitů používá hodiny s frekvencí 90 kHz. Posledních 9 bitů používá hodiny s frekvencí 27 MHz. Maximální rozptyl periody () pro PCR je ns.

Výplňkové pakety Některá přenosová schémata, např. v ATSC a DVB, vyžadují konstantní bitovou rychlost transportního proudu. Pro udržení konstantní bitové rychlosti může multiplexor vkládat výplňkové pakety s PID 0x1FFF. Datové pole výplňkových paketů obsahuje bajty s hodnotou 0xFF. Přijímač obsah těchto paketů ignoruje.

Použití v digitálních videokamerách Transportní proud byl původně navržen pro digitální televizní vysílání (DVB). Pro použití v digitálních videokamerách, rekordérech a přehrávačích byl upraven přidáním čtyřbajtového pole timecode (TC) před standardní 188bajtový paket, takže výsledkem je 192bajtový paket. Tento formát neformálně nazývaný M2TS se obvykle používá ve videokamerách High Definition Video (HDV). Blu-ray Disc Association jej nazývá „BDAV MPEG-2 transportní proud“. JVC v HDD kamkordérech jako GZ-HD7 jej nazývá TOD. Časové značky umožňují rychlý přístup k jakékoli části proudu v multimediálním přehrávači nebo v systému pro nelineární editaci videa. Používá se také při vytváření filmů z několika kamer pro synchronizaci video proudů z různých kamer.

Použití v Blu-ray