|
W koderze standardu MPEG-2 - rys. 5.1 skompresowane sygnały wizji, fonii i dodatkowych danych (np. teletekstu) są łączone w jeden sygnał cyfrowy. Na wyjściu kodera wizji i fonii znajdują się układy, które dzielą strumienie danych na pakiety elementarne PES (Packetized Elementary Streams). Podział na pakiety elementarne PES - rys. 5.2 - może być dokonany w sposób prawie dowolny: w przypadku stu mienia wizji początek pakietu nie musi pokrywać się z początkiem zakodowanego obrazu Jedynym ograniczeniem jest maksymalna długość pakietu wynosząca 64 kB. Długość elementarnego pakietu jest różna i zależy od charakteru kodowanych danych.
 Rys. 5.1. Koder standardu MPEG-2
 Rys. 5.2. Podział elementarnego strumienia na pakiety PES
 Rys. 5.3. Nagłówek pakietu elementarnego PES
Pakiet PES jest rozpoznawany na podstawie swojego nagłówka - rys. 5.3, który zawiera
- 3-bajtową sekwencję startową (00 00 01 hex)
- 1-bajtowy identyfikator strumienia do którego należy pakiet, liczba identyfikatorów strumieni została ograniczona do 32 dla fonii i 16 dla wizji; dzięki temu zagwarantowane jest, że w strumieniu danych nie powtórzy się sekwencja bajtów startowych na główka pakietu PES i identyfikatora strumienia,
- 2 bajty określające długość pakietu (stąd ograniczenie długości pakietu do 64 kB),
- 2 bajty flag sygnalizujących występowanie w nagłówku pól dodatkowych, z których najważniejsze są: znacznik czasu prezentacji PTS (Presentation Time Stamp) i znacznik czasu dekodowania (Decoding Time Stamp). Pola te są wykorzystywane do synchronizacji dekodowania poszczególnych strumieni danych,
- 1 bajt określający długość nagłówka,
- pola dodatkowe, jeśli zostało to zaznaczone w bajtach flag.
Bezpośrednio po nagłówku znajdują się dane przesyłane w tym pakiecie. Standard MPEG-2 przewiduje stosowanie dwóch rodzajów multiplekserów: programowego (Program Multiplexer) i transportowego (Transport Multiplekser).
Strumień programowy (Program Stream) jest tworzony przez zwykłe przeplatanie elementarnych pakietów danych należących do jednego programu telewizyjnego. Pakiety mogą być multipleksowane w dowolnej kolejności, wymagane jest jedynie zachowanie porządku chronologicznego w ramach poszczególnych strumieni elementarnych (wizji, fonii, danych). Zaletą strumienia programowego jest mała nadmiarowość danych - elementarne pakiety z reguły są dość długie, a ich nagłówki stosunkowo krótkie. W przypadku strumienia programowego nie ma możliwości zabezpieczenia pakietów przed błędami transmisji, gdyż pakiety te są różnej długości, a kody protekcyjne wymagają pakietów o stałej długości. Dlatego też ten sposób multipleksowania elementarnych pakietów danych może być stosowany przy przesyłaniu kanałem o niskim poziomie zakłóceń, np. w sieciach komputerowych albo zapisie na dyskach magnetycznych lub optycznych.
Strumień transportowy (Transport Stream) tworzony jest w inny sposób - elementarne pakiety danych PES są dzielone na mniejsze pakiety o stałej długości równej 184 bajty, przy czym w strumieniu transportowym mogą być umieszczane elementarne pakiety danych pochodzące z różnych programów telewizyjnych.
Sposób podziału na pakiety strumienia transportowego jest ściśle określony (rys. 5.4):
- początek obrazu w strumieniu wizji (lub bloku próbek w strumieniu fonii) musi być umieszczony na początku pakietu strumienia transportowego,
- kolejne bajty danych pakietu elementarnego są umieszczane w kolejnych pakietach strumienia transportowego,
- jeśli długość pakietu elementarnego nie jest wielokrotnością 184 (co jest mało prawdopodobne) ostatni pakiet strumienia transportowego, w którym znajdują się dane z pakietu elementarnego jest wypełniany danymi nadmiarowymi (pole adaptacyjne), tak aby zawierał w sumie 184 bajty.
 Rys. 5.4. Podział pakietu elementarnego na pakiety strumienia transportowego
Każdy pakiet uzupełniany jest 4-bajtowym nagłówkiem - rys. 5.5 - zawierającym m.in.:
- bajt synchronizacji (47 hex),
- 13-bitowy identyfikator pakietu (Packet IDentification), umożliwiający stwierdzenie, z którego elementarnego pakietu pochodzą dane przesyłane w danym pakiecie strumienia transportowego,
- 1-bitowy wskaźnik payload_unit_start_indicator, którego ustawienie sygnalizuje, że dany pakiet strumienia transportowego jest pierwszym pakietem wydzielonym z danego pakietu elementarnego PES,
- 4-bitowy licznik pakietów (Continuity Counter), informujący, którym z kolei pakietem wydzielonym z elementarnego pakietu PES jest dany pakiet.
 Rys. 5.5. Nagłówek pakietu strumienia transportowego
Zastosowanie w strumieniu transportowym krótkich pakietów o stałej długości pozwala na efektywne zabezpieczenie przed błędami transmisji. Typowo każdy pakiet jest zabezpieczany 16 bajtami kodu Reeda-Solomona, który umożliwi korekcję do 8 błędów w każdym pakiecie. Strumień transportowy może być więc stosowany wszędzie tam, gdzie poziom zakłóceń w kanale transmisyjnym jest wysoki, a więc w transmisji programów telewizyjnych poprzez radiodyfuzję satelitarną lub naziemną, lub w sieciach kablowych.
W strumieniu transportowym identyfikator pakietu PID ma długość 13 bitów, co pozwala na multipleksowanie ponad 8000 różnych elementarnych strumieni danych. Część pakietów zarezerwowano do transmisji informacji opisujących przesyłane w strumieniu transportowym programy (Program Specific Information - PSI). Spośród tych pakietów najważniejszy jest pakiet o numerze 0, który zawiera tablicę PAT (Program Association Table) z zapisaną informacją o wszystkich przesyłanych programach - rys. 5.6. Tablica PAT zawiera spis programów z wyszczególnionymi numerami pakietów, w których transmitowane są tablice z opisami poszczególnych programów (Program Map Tables - PMT). Przykładowo na rys. 5.6 opis programu nr l jest przesyłany w pakiecie o numerze 306, opis programu nr 3 w pakiecie o numerze 1127, itd. Na początku tablicy PAT wyszczególniony jest program nr O, pakiet opisuŹjący ten program (10 na rys. 5.6) zarezerwowano do przesyłania informacji o sieci nadającej dany zestaw programów (Network Information Table). W tablicach PMT wymienione są numery wszystkich pakieŹtów zawierających elementarne strumienie danych dla danego programu. Program nr 3 w omawianym przykładzie, którego tablica PMT jest zawarta w pakiecie nr 1127 - rys. 5.7 - składa się z sygnału wizyjnego transmitowanego w pakietach o numerach identyfikacyjnych 726, sygnałów fonicznych transmitowanych w pakietach o nr 57, 60, 1022. napisów dla niesłyszących (subtitle) w pakietach o nr 123. Do synchronizaŹcji dekodowania i wyświetlania programu nr 3 wykorzystywany jest sygnał zegarowy (Programme Clock Reference) w polach adaptacyjnych pakietów o nr 726. Sposób synchronizacji jest omówiony w następnym rozdziale.
Dekodowanie strumienia transportowego MPEG-2 rozpoczyna się od wydzielenia z całego strumienia tablicy PAT. Na jej podstawie dekoder określa numery pakietów składające się na program, który ma być w tej chwili odbierany. Następnie ze strumienia transportowego wybiera tylko pakiety o odpowiednich numerach, pomijając wszystkie należące do innych programów - rys. 5.8. Pakiety odpowiadające poszczególnym strumieniom, z których składa się dobierany program, są grupowane w odpowiedniej kolejności, tak aby odtworzyć elementarne pakiety danych PES.
 Rys. 5.6. Tablica PAT opisująca programy zawarte w strumieniu transportowym
 Rys. 5.7. Tablica PMT opisująca program nr 3 zawarty w strumieniu transportowym z rys.5.6
 Rys. 5.8. Demultipleksowanie strumienia transportowego
 Rys. 5.9. Dodawanie znaczników czasu do pakietów elementarnych w koderze MPEG-2
Synchronizacja
W nagłówkach pakietów elementarnych PES mogą znajdować się dwa znaczniki czasu PTS i DTS. Znaczniki te są nadawane przez koder w trakcie multipleksowania pakietów. W koderze znajduje się 42-bitowy licznik taktowany sygnałem zegarowym o częstotliwości 27 MHz. Licznik ten jest zegarem dla transmitowanego programu, przy czym zegar nie musi być w żaden sposób związany z czasem obowiązującym w danym kraju. Koder - rys. 5.9 - przetwarzając kolejno obrazy zawarte w strumieniu wizyjnym wpisuje do znaczników czasu prezentacji PTS poszczególnych pakietów 33 najbardziej znaczące bity licznika zegarowego określające czas, w którym obraz transmitowany w tym pakiecie powinien być wyświetlony. Drugi ze znaczników - znacznik czasu dekodowania DTS - jest nadawany w przypadku nadawania obrazów typu B. Jak wcześniej opisano do zdekodowania obrazu typu B konieczne są dwa obrazy odniesienia - jeden znajdujący się przed nim w sekwencji obrazów i jeden znajdujący się po nim. Dlatego też musi być zmieniona kolejność nadawania obrazów: najpierw nadawane są obrazy odniesienia, potem sam obraz typu B. Drugi, późniejszy obraz odniesienia musi być dodatkowo oznaczony znacznikiem czasu dekodowania, określającym czas, w którym ten obraz powinien być zdekodowany i przeniesiony z bufora dekodera do tymczasowej pamięci. Znacznik DTS zabezpiecza przed przepełnieniem bufora dekodera, zawsze występuje razem ze znacznikiem PTS i zawsze ma wartość mniejszą (najpierw obraz musi być zdekodowany, dopiero później wyświetlany) od znacznika PTS. W analogiczny sposób nadawane są znaczniki czasu dla pakietów fonii i innych danych transmitowanych w danym programie telewizyjnym.
Dekoder - rys. 5.10 - ma także swój zegar taktowany sygnałem 27 MHz. Dekoder wydziela z całkowitego sygnału cyfrowego pakiety wizji, fonii i ewentualnie innych danych i odtwarza pakiety elementarne PES. Porównując znaczniki czasu prezentacji PTS poszczególnych pakietów ze stanem licznika zegarowego koder może określić moment, w którym dany pakiet powinien być odtworzony. Ponieważ znacznik PTS zawiera 33 najbardziej znaczące bity zegara więc dokładność synchronizacji odtwarzania pakietów jest równa 1/90 kHz = 11,1 ?s. Do poprawnej pracy dekodera konieczna jest oczywiście synchronizacja jego zegara z zegarem kodera. Do tego celu służy sygnał zegarowy (Programme Clock Reference) wyszczególniony w tablicy PMT (rys. 5.7) każdego transmitowanego programu. Sygnał zegarowy zawiera aktualny stan (42-bity) licznika zegarowego w koderze. Stan zegara musi być przesyłany w strumieniu transportowym nie rzadziej niż co 0,1 s, a w strumieniu programowym nie rzadziej niż co 0,7 s. Dekoder na podstawie wartości sygnału zegarowego ustawia swój zegar i ewentualnie podstraja generator sygnału zegarowego 27 MHz, aby zachować pełen synchronizm z zegarem kodera. W strumieniu programowym każdy z transmitowanych programów może mieć swój własny zegar ale dopuszczalne jest także wykorzystywanie tego samego zegara przez kilka lub wszystkie programy.
 5.10. Synchronizacja dekodowania i prezentacji pakietów elementarnych w dekoderze MPEG-2
|