Ανατομία της ψηφιακής τηλεόρασης (Πρώτο μέρος)
Ιωακείμ Παπαδόπουλος, MSc
Υπεύθυνος τεχνικού τμήματος Edision Hellas
Από αυτό το τεύχος, ξεκινάμε μια σειρά άρθρων για όλη την αλυσίδα της ψηφιακής τηλεόρασης, ξεκινώντας από τα βασικά στάδια, δηλαδή το transport stream, την πολυπλεξία και την αποπολυπλεξία.
Λαμβάνοντας υπόψη το βάθος και την έκταση της ελληνικής γλώσσας, δυστυχώς μερικοί όροι θεωρούνται δύσκολοι στην απόδοσή τους σε αυτήν και προς αποφυγή παρερμηνειών, ήταν αναπόφευκτο να χρησιμοποιηθούν κάποιες λέξεις στην αγγλική.
Individual stream operations (PES Packet Layer-
H.264 Video and MPEG4 HE AAC v2 Audio)
Ως γενικότερη εικόνα για την κωδικοποίηση ενός συστήματος, απαιτούνται κάποιες ροές μεταφοράς, Transport Stream και Program Stream. Κάθε μία βελτιστοποιείται για ένα σύνολο αιτήσεων που θα ζητηθεί ανάλογα από τον δέκτη – αποκωδικοποιητή Integrated Receiver Decoder (IRD). Και οι 2 είναι αναγκαίες όμως για τον κατάλληλο συγχρονισμό ήχου /εικόνας/δεδομένων κατά την αποκωδικοποίηση, καθώς και για την αποφυγή των φαινόμενων της υπερχείλισης (overflow) και έλλειψης δεδομένων(underflow) στο κύκλωμα των data buffers.Οι πληροφορίες κωδικοποιούνται σε σύνταξη χρησιμοποιώντας χρονικές σφραγίδες(time stamps) οι οποίες παρουσιάζουν χρόνους για την κωδικοποίηση και την παρουσίαση των κωδικοποιημένων πληροφοριών(encoder) ήχου/εικόνας, αλλά και του χρόνου παράδοσης της ροής μεταφοράς καθαυτής.
Η βασική προσέγγιση πολυπλεξίας στοιχειωδών (Elementary Streams) ρευμάτων ήχου και εικόνας και λοιπών πληροφοριών φαίνεται στο σχήμα 1.
Tα δεδομένα ήχου και εικόνας είναι κωδικοποιημένα όπως περιγράφεται από τον Διεθνή Οργανισμό Τηλεπικοινωνιών ITU-T Rec. H.262 | ISO / IEC 13818-2 και κατά ISO / IEC 13818-3.Έπειτα συμπιέζονται, πακετάρονται και παράγουν τα PES (πακέτα). Ως εκ τούτου θα λέγαμε πως ένα κάθε PES πακέτο είναι μια ‘ενθυλάκωση’ ενός πλαισίου των κωδικοποιημένων δεδομένων. Κάθε πακέτο PES περιέχει μια επικεφαλίδα (packet header) και τα δεδομένα ωφέλιμου φορτίου (payload data). Δεδομένου ότι ο αριθμός των bits για την αναπαράσταση ενός frame διαφέρει στα δεδομένα ήχου και εικόνας, το μέγεθος (σε αριθμό bits) των PES πακέτων ποικίλει επίσης (σχήμα 2).
Η δομή ενός τέτοιου πακέτου έχει την εξής μορφή: Η επικεφαλίδα PES ξεκινά με μέγεθος 3 byte έναρξης ως πρόθεμα κωδικού, που είναι πάντα ‘0x000001’ ακολουθούμενο από ένα byte – stream id (παράδειγμα Audio streams (0xC0-0xDF), Video streams (0xE0-0xEF) ) το οποίο χρησιμοποιείται για τον προσδιορισμό μίας μοναδικής ροής. Αυτό μαζί με το πρόθεμα κωδικού που αναφέρθηκε πριν, (3 bytes) αποτελούν τον κωδικό εκκίνησης(start code – συνολικά 4 bytes). Όπως επίσης αναφέραμε, το μήκος ενός πακέτου PES ποικίλει και μπορεί να φτάσει έως 65536 bytes. Τα επόμενα 2 bytes στην επικεφαλίδα αποτελούν την χρονική σφραγίδα(time stamp) και περιέχουν πληροφορίες του χρόνου αναπαραγωγής, ο οποίος υπολογίζεται εφόσον γνωρίζουμε τον αριθμό πλαισίου(frame number).
Mpeg transport stream (MPEG-TS)
Τα πακέτα PES δεν έχουν συγκεκριμένη χωρητικότητα και γι’ αυτό θεωρείται δύσκολο να μεταδοθούν σε ένα επιρρεπή από λάθη δίκτυο/κανάλι, όπως ο αέρας. Ως εκ τούτου θα υποστούν ακόμα ένα στρώμα(layer) πακετοποίησης που θα οδηγήσει στη λεγόμενη ροή μεταφοράς TS (transport stream). Αυτές οι ροές μεταφοράς χρησιμοποιούν συγκεκριμένο μέγεθος (μήκος) σε αντίθεση με τα PES, καθώς και αναγνωριστικό(packet identifier) για να αναγνωρίζεται ξεχωριστά κάθε πακέτο μεταφοράς έτσι όπως αυτά συμφύρουν στην τελική ροή μεταφοράς. Το αναγνωριστικό(packet identifier) είναι απόρροια του συστήματος MPEG που αναγνωρίζει το PES πακέτο είτε ως πληροφορία ήχου, είτε ως πληροφορία εικόνας. Κάθε TS πακέτο είναι 188 bytes, όπου περιλαμβάνει την επικεφαλίδα και το ωφέλιμο φορτίο δεδομένων. Η επικεφαλίδα καλύπτει τα 3 bytes, μπορεί όμως να τροποποιηθεί για λόγους απλότητας αν και το συνολικό πλαίσιο(framework) θα παραμένει πάντα το ίδιο.
Πολυπλεξία
Κατά την πολυπλεξία οι ροές (transport streams ) που ‘γεννιούνται’, μεταδίδονται με τέτοιο τρόπο(σωστός καταμερισμός των TS πακέτων), ώστε να αποφευχθούν φαινόμενα υπερχείλισης στα κυκλώματα των data buffers στην πλευρά του αποκωδικοποιητή (αποπολυπλέκτη). Τέτοιου είδους φαινόμενα είναι δυνατόν να δημιουργήσουν θέματα ασυγχρονισμού, παγώματα (skips/freezes), κατά την αναπαραγωγή των ήχων/εικόνων. Ένα προτεινόμενο διάγραμμα ροής κατά την πολυπλεξία των Elementary Streams(H.264 Video & Mpeg4 HE AAC v2 Audio) φαίνεται στο σχήμα 5.
Η βασική λογική βασίζεται στις αμφότερες αλληλουχίες ήχου και εικόνας ώστε να έχουν σταθερά πλαίσια(frame rates). Για το βίντεο, ο αριθμός των καρέ ανά δευτερόλεπτο θα παραμείνει ίδιος σε όλη την ακολουθία βίντεο. Στην ακουστική ακολουθία εφόσον η συχνότητα δειγματοληψίας παραμένει σταθερή και τα δείγματα είναι σταθερά ανά πλαίσιο(1024 stereo_), η διάρκεια και αυτής προφανώς θα είναι σταθερή. Όπως είπαμε για την μετάδοση ενός PES πακέτου που σημαίνει ενός πλαισίου(frame) μη συγκεκριμένης χωρητικότητας, απαιτείται η διάσπασή του σε n transport streams των 188 bytes (όπου n εξαρτάται από το μέγεθος του PES πακέτου).Ο ακριβής χρόνος παρουσίασης των TS πακέτων(PTAudio/VideoTS) βρίσκεται όπως φαίνεται παρακάτω , λαμβάνοντας υπόψη πως ΝTSVideo/Audio είναι ο αριθμός των πακέτων TS πακέτων που ορίζουν ένα PES πακέτο ή πλαίσιο(frame).
Ισχύει:
NTSVideo=Video (PES length)/185 (1)
TS(Video duration)=1/FramesPerSecond Video*NTSVideo (2)
PT(Video TS)=PT(Video TS)+TS(Video Duration) (3)
Εξίσου για τον ήχο ισχύει:
NTSAudio=Audio (PES length)/185 (4)
TS (Audio duration)=1/FramesPerSecond Audio*NTSVideo (5)
Εδώ ο δείκτης FPS Audio μας δίνεται από την συχνότητα δειγματοληψίας (sampling frequency)/1024
PT(Audio TS)=PT(Audio TS)+TS(Audio Duration) (6)
Από τις (3) και (6) σχέσεις φαίνεται ότι ο ακριβής χρόνος παρουσίασης ενός transport stream εξαρτάται από τον χρόνο παρουσίασης του προηγούμενου ίδιου τύπου stream συν το συνολικό χρόνο του transport stream.
Σε μια από τις περιπτώσεις των μπλοκ επεξεργασίας ήχου και εικόνας, ο πρώτος έλεγχος που πραγματοποιείται από τον πολυπλέκτη μέσω του αλγορίθμου, είναι να διαπιστωθεί αν βρίσκεται στην αρχή ή στην μέση ενός frame(time decision block). Εφόσον είναι ένα νέο πλαίσιο, τότε πραγματοποιούνται οι σχέσεις (2) και (5) για να διαπιστωθεί η διάρκεια του stream. Εφόσον μια ροή TS είναι του τελευταίου πακέτου TS, ένα νέο πακέτο PES αναπαράγεται για να δώσει το νέο πλαίσιο(frame). Πραγματοποιείται επανάληψη του πρώτου ελέγχου έως ότου ολοκληρωθεί ο κύκλος των frames.
Αποπολυπλεξία
Στην είσοδο του αποπολυπλέκτη, το TS διασπάται σε δύο ES ξεχωριστά για ήχο /εικόνα τα οποία αποθηκεύονται προσωρινά. Μετά την λήψη του ελέγχεται από το byte συγχρονισμού (0x47) εάν είναι έγκυρο ή όχι. Εάν δεν είναι έγκυρο απορρίπτεται και προχωράει στο επόμενο πακέτο. Μια έγκυρη επικεφαλίδα περιλαμβάνει αναγνωριστικό πακέτου (PID), τον έλεγχο προσαρμογής σημαίας(AFC), την έναρξη του ωφέλιμου φορτίου (PUS), καθώς και ένα μετρητή των 4 -bit. Με τον έλεγχο διαπιστώνεται αν όλα τα 185 bytes αποτελούν ωφέλιμο φορτίο ή αν πρέπει να υπολογιστεί μια offset τιμή. Το bit έναρξης ελέγχεται για να διαπιστωθεί αν το παρόν TS περιέχει επικεφαλίδα PES. Αν ναι, ελέγχεται η παρουσία του συγχρονισμού ακολουθίας (0x000001). Τελικά, σε ένα έγκυρο πακέτο PES μετά την ανάγνωση της επικεφαλίδας, διαβάζονται και εξάγονται μαζί οι υπόλοιπες πληροφορίες όπως το stream id , το μήκος του PES πακέτου, καθώς και ο αριθμός των πλαισίων(frames).
Αμέσως μόλις το ωφέλιμο φορτίο γραφτεί στα βίντεο/ήχο buffer , το βίντεο buffer ελέγχεται για πληρότητα. Δεδομένου ότι τα αρχεία βίντεο είναι μεγαλύτερα από εκείνα του ήχου ,το βίντεο buffer γεμίζει πρώτα. Εφόσον γεμίσει, αναζητείται το επόμενο IDR πλαίσιο. Μόλις ολοκληρωθεί αυτή η διαδικασία, υπολογίζεται ο αριθμός των πλαισίων εικόνας και αυτό βοηθάει να υπολογιστεί ο αντίστοιχος αριθμός πλαισίων του ήχου, σημαντική λειτουργία για τον συγχρονισμό των δεδομένων.
Στο επόμενο μέρος θα αναλυθεί η δομή ενός transport stream και οι τεχνικές προδιαγραφές που απαιτεί, προκειμένου να είναι σε θέση να μεταδοθεί σε ένα δίκτυο/κανάλι επιρρεπές σε λάθη όπως ο αέρας.