ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΕΠΙΚΟΙΝΩΝΙΩΝ, ΗΛΕΚΤΡΟΝΙΚΗΣ & ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Πρότυπη υλοποίηση και αξιολόγηση κωδικοποίησης εικονοροών ΔΙΔΑΚΤΟΡΙΚΗ ΔΙΑΤΡΙΒΗ ΙΩΑΝΝΗ ΣT. ΣΙΦΝΑΙΟΥ Διπλωματούχου Ηλεκτρολόγου Μηχανικού & Μηχανικού Υπολογιστών του Εθνικού Μετσόβιου Πολυτεχνείου Αθήνα, Νοέμβριος 2009
... ΙΩΑΝΝΗΣ ΣT. ΣΙΦΝΑΙΟΣ Διδάκτωρ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Ε.Μ.Π. Copyright ΙΩΑΝΝΗΣ ΣT. ΣΙΦΝΑΙΟΣ, 2009. Με επιφύλαξη παντός δικαιώματος. All rights reserve. Απαγορεύεται η αντιγραφή, αποθήκευση και διανομή της παρούσας εργασίας, εξ ολοκλήρου ή τμήματος αυτής, για εμπορικό σκοπό. Επιτρέπεται η ανατύπωση, αποθήκευση και διανομή για σκοπό μη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπό την προϋπόθεση να αναφέρεται η πηγή προέλευσης και να διατηρείται το παρόν μήνυμα. Ερωτήματα που αφορούν τη χρήση της εργασίας για κερδοσκοπικό σκοπό πρέπει να απευθύνονται προς τον συγγραφέα. Οι απόψεις και τα συμπεράσματα που περιέχονται σε αυτό το έγγραφο εκφράζουν τον συγγραφέα και δεν πρέπει να ερμηνευθεί ότι αντιπροσωπεύουν τις επίσημες θέσεις του Εθνικού Μετσόβιου Πολυτεχνείου.
Αφιερώνεται στη γυναίκα μου, Σταυρούλα στην κόρη μου, Λυδία και στους γονείς μου, Στέλιο και Μαρία
ΠΡΟΛΟΓΟΣ Φτάνοντας στο τέλος της παρούσας εργασίας αισθάνομαι ιδιαίτερη ικανοποίηση που κατάφερα να τελειώσω τη διδακτορική μου διατριβή ύστερα από αρκετά χρόνια και με ενδιάμεσο χρόνο παύσης. Σε αυτό το εγχείρημα με στήριξαν και πίστεψαν σε εμένα οι επιβλέποντές μου καθηγητής κ. Γεώργιος Στασινόπουλος, Καθηγητής του ΕΜΠ, και ο κ. Κιαμάλ Πεκμεστζή, Καθηγητής του ΕΜΠ. Θα ήθελα να τους ευχαριστήσω θερμά για την υπομονή τους και επιμονή τους για την ολοκλήρωση της διατριβής, καθώς και για τις πολύτιμες συμβουλές τους. Στα χρόνια που πέρασαν, συνεργάστηκα με συνάδελφους μηχανικούς, στα εργαστήρια του πολυτεχνείου Μικροϋπολογιστών, Τηλεπικοινωνιών και Δικτύων Υπολογιστών, οι οποίοι ήταν πολύτιμοι συνεργάτες. Θα ήθελα να ευχαριστήσω τους Μελέτη Χρήστο, Παύλο Μπουγά, Νικόλαο Μοσχόπουλο, Γρηγόρη Δουμένη, Αποστόλη Νικολαϊδη, Φώτη Ανδριτσόπουλο, Σεραφείμ Παπαστέφανο, Βίκτωρα Μετεβίτση, με τους οποίους εργαστήκαμε μαζί σε ερευνητικά προγράμματα και πλήθος δημοσιεύσεων. Επίσης, θα ήθελα να ευχαριστήσω τους γονείς μου Στέλιο και Μαρία και τη σύζυγό μου Σταυρούλα που μοιράστηκαν μαζί μου τις δύσκολες στιγμές αυτής της προσπάθειας, και με στήριζαν συνεχώς. Τέλος θα ήθελα να αναφερθώ στη κόρη μου Λυδία, που η ύπαρξη της και μόνο, μου έδινε κουράγιο και δύναμη να ολοκληρώσω τη διδακτορική μου διατριβή. Ιωάννης Στ. Σιφναίος Αθήνα, Νοέμβριος 2009
ΠΕΡΙΛΗΨΗ Το αντικείμενο έρευνας της διατριβής είναι η πρότυπη υλοποίηση και αξιολόγηση κωδικοποίησης εικονοροών σύμφωνα με το πρότυπο MPEG4 - Η.264. Το πρότυπο αυτό καλείται να αντικαταστήσει το MPEG2 προσφέροντας καλύτερη συμπίεση και καλύτερη ποιότητα. Σε ολοένα και περισσότερες εφαρμογές καλείται να υλοποιηθεί, από συστήματα τηλεόραση μέχρι σε συσκευές χειρός. Έχοντας ένα μεγάλο εύρος εφαρμογών, ανακύπτει η ανάγκη για σχεδιασμό υλοποιήσεων με διαφορετικές ανάγκες. Ερευνητικό ενδιαφέρον παρουσιάζει η σχεδίαση των επιμέρους κυκλωμάτων έχοντας ως στόχο μικρότερα, αποδοτικότερα και ταχύτερα κυκλώματα. Στο πρώτο μέρος της διατριβής γίνεται μια εισαγωγή στο πρότυπο. Παρουσιάζονται οι βασικές έννοιες και όροι καθώς και η λειτουργία της κωδικοποίησης και αποκωδικοποίησης. Στη συνέχεια περιγράφεται η λειτουργία των επιμέρους τμημάτων ενός κωδικοποιητή. Στο δεύτερο μέρος της διατριβής παρουσιάζεται το λογισμικό και η υλοποίηση σε υλικό του κωδικοποιητή Η.264 που σχεδιάστηκε. Στο λογισμικό ενσωματώθηκαν όλες οι τεχνικές από την διεθνή βιβλιογραφία καθώς και οι προτεινόμενες τεχνικές, δίνοντας έτσι τη δυνατότητα για άμεση σύγκριση αυτών. Επίσης υλοποιήθηκε σε υλικό ένας κωδικοποιητής Η.264 με μέγεθος 266Κ πύλες, εκ των οποίων το 45% καταλαμβάνεται από το κύκλωμα INTRA. To υψηλό αυτό ποσοστό σε σχέση με τη μικρή συμπίεση που επιτυγχάνεται με τη χρήση του, οδήγησε σε περαιτέρω μελέτη αυτού. Η ανάλυση της λειτουργίας και οι τεχνικές υλοποίησης του ΙΝΤRΑ κυκλώματος παρουσιάζονται στη συνέχεια. Νέες μετρικές αποκλίσεις εισάγονται με βάση τον πίνακα μετασχηματισμού των ΑC συντελεστών και με μειωμένο αριθμό συντελεστών. Η υλοποίηση των μετρικών αποκλίσεων έδειξε ότι το μεγάλο μέγεθος του κύκλωμα του INTRA οφείλεται στις μετρικές αποκλίσεις οδηγώντας στην προσπάθεια μείωσης του μεγέθους αυτών. Η προτεινόμενη μετρική DCT-8 στο τμήμα Ι16x16 έδωσε ελαφρώς καλύτερα αποτελέσματα συγκρινόμενη με την προτεινόμενη από τη διεθνή βιβλιογραφία μετρική SATD, μειώνοντας το μέγεθος κατά 45%. Η εφαρμογή της προτεινόμενης μετρικής στο τμήμα I4x4 δεν έδωσε καλύτερα αποτελέσματα από τη μετρική SATD. Μια νέα μέθοδος για το τμήμα Ι4x4 αναπτύχθηκε, στην οποία γίνεται πρόβλεψη του αριθμού των bits χωρίς τη χρήση μετρικών αποκλίσεων. Το απαιτούμενο κύκλωμα είναι 15% μικρότερο σε σχέση με το SATD δίνοντας ίδια ποιότητα, χωρίς χρήση τεχνικής RDO, που αφήνει περιθώρια βελτίωσης.
ABSTRACT The object of research of thesis they are the techniques of implementation of coers accoring to the recommenation MPEG4 - H.264. This recommenation is calle to replace the MPEG2 offering better compression an better quality. In continuously more applications it is calle to be materialize, from systems television up to hanle evices. Having a big breath of applications, emerges the nee for planning of implementation with ifferent nees. Research interest has the esign of H.264 builing blocks aiming at as smaller, more efficient an more rapi circuits. In the first part of thesis becomes a introuction to the recommenation. Also it presents the basic terms of the operation of coing an ecoing. Afterwars is escribe the operation of the H.264 blocks. In the secon part of thesis is presente a software an harware solution of a H.264 coer that was esigne an evelope. In the software were implemente the all techniques from the international bibliography as well as the propose techniques, giving thus the possibility for irect comparison of these. Also, the harware coer H.264 with size of 266K gates has implemente. The 45% of these gates are occupie by INTRA block. To this high percentage concerning the small compression that can we achieve using intra, le to further stuy of this. The analysis of operation an the techniques of implementation of INTRA block are presente afterwars. New quality metric are importe base on the table of AC transformation an with ecrease number of coefficients. The implementation of quality metric showe that the big circuit of INTRA is owe in the quality metric block leaing to the effort to reuce the size of these. The propose quality metric ct-8 in I16x16 gives light better results compare with propose from the international bibliography quality metric SATD, ecreasing the size at 40%. Instea of this the propose metrics in I4x4 oes not give better results than the quality metric SATD. A new metho for I4x4 was evelope, in what becomes forecast of number of the bits without using quality metric. The require circuit is 15% smaller than the SATD giving same quality, without use of technical RDO, that leaves margins of improvement.
ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΝ Η.264... 17 1.1 ΟΡΟΛΟΓΙΑ... 17 1.2 Η.264 CODEC... 18 1.2.1 Ανάλυση του Forwar Path στον Κωδικοποιητή... 19 1.2.2 Ανάλυση του Reconstruction Path στον Κωδικοποιητή... 20 1.2.3 Αποκωδικοποιητής.... 20 1.2.4 Εισαγωγή στο Inter Preiction... 20 1.2.5 Εισαγωγή στο Intra Preiction... 21 2 ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΣΥΜΠΙΕΣΗΣ Η.264... 23 2.1 PREDICTION MACHINE... 24 2.2 TQ/- INVTQ... 24 2.3 VLC... 25 2.4 NAL FORMER... 25 2.5 ΑΠΟΔΟΣΗ ΚΩΔΙΚΟΠΟΙΗΤΗ... 26 2.6 ΔΟΜΗ ΤΗΣ ΔΙΑΤΡΙΒΗΣ... 27 3 ΥΛΟΠΟΙΗΣΗ Η.264... 29 3.1 ΥΛΟΠΟΙΗΣΗ ΣΕ ΛΟΓΙΣΜΙΚΟ... 29 3.2 ΥΛΟΠΟΙΗΣΗ ΣΕ ΥΛΙΚΟ... 31 3.3 ΥΛΟΠΟΙΗΣΗ ΜΗΧΑΝΗΣ INTRA... 34 3.3.1 Μηχανή I16x16... 35 3.3.2 Μηχανή Ι4x4... 39 3.4 ΜΕΤΡΙΚΕΣ ΑΠΟΚΛΙΣΕΙΣ... 43 3.4.1 Περιγραφή μετρικών αποκλίσεων... 43 3.4.2 Υλοποίηση σε υλικό κυκλώματος SAD... 44 3.4.3 Υλοποίηση σε υλικό κυκλώματος SATD... 47 3.4.4 Μετρική SAD-DCT... 51 3.4.5 Μετρικές βασισμένες στις SATD και SAD-DCT... 53 4 ΤΕΧΝΙΚΕΣ ΥΛΟΠΟΙΗΣΗΣ ΜΗΧΑΝΗΣ Ι16X16... 55 4.1 RATE DISTORTION OPTIMIZATION... 55 4.2 ΑΝΑΛΥΣΗ ΠΑΡΑΓΟΜΕΝΩΝ BITS ΑΝΑ ΜACROBLOCK... 56 4.2.1 Περιγραφή Heaer του Ι16Χ16... 58 4.2.2 Περιγραφή Heaer του Ι4Χ4... 58 4.3 ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΜΗΧΑΝΗΣ INTRA Ι16X16... 58 4.3.1 Τιμή μετρικής έναντι αριθμών παραγόμενων... 59 4.4 ΣΥΓΚΡΙΣΗ ΜΕΤΡΙΚΩΝ ΑΠΟΚΛΙΣΕΩΝ ΓΙΑ Ι16X16... 71 4.4.1 Ανάλυση μετρικής SAD-DCT... 72 4.4.2 Απόδοση μετρικών αποκλίσεων... 73 4.4.3 Σύκριση μετρικών αποκλίσεων... 89 5 ΤΕΧΝΙΚΕΣ ΥΛΟΠΟΙΗΣΗΣ ΜΗΧΑΝΗΣ I4X4... 97 5.1 ΑΝΑΛΥΣΗ ΚΥΚΛΩΜΑΤΟΣ ΕΠΙΛΟΓΗΣ... 97
5.2 ΑΠΟΔΟΣΗ ΜΕΤΡΙΚΩΝ ΓΙΑ I4X4... 110 5.3 ΝΕΑ ΜΕΘΟΔΟΣ ΕΠΙΛΟΓΗΣ Ι4X4... 126 5.3.1 Απόδοση νέας μεθόδου I4x4... 127 5.3.2 Υλοποίηση νέας μεθόδου I4x4... 134 6 ΑΝΑΦΟΡΕΣ... 137 ΛΙΣΤΑ ΣΧΗΜΑΤΩΝ ΣΧΗΜΑ 1-1: Η.264 ΣΥΜΒΑΤΟΣ ΚΩΔΙΚΟΠΟΙΗΤΗΣ ΑΠΟΚΩΔΙΚΟΠΟΙΗΤΗΣ... 19 ΣΧΗΜΑ 1-2: MACROBLOCK PARTITIONS... 21 ΣΧΗΜΑ 2-1: ΔΙΑΓΡΑΜΜΑ SNR VS BITRATE... 23 ΣΧΗΜΑ 3-1: ΔΙΑΓΡΑΜΜΑ ΤΜΗΜΑΤΩΝ ΚΩΔΙΚΟΠΟΙΗΤΗ... 31 ΣΧΗΜΑ 3-2 ΔΙΑΓΡΑΜΜΑ ΑΠΟΔΟΣΗΣ INTER ΜΗΧΑΝΗΣ... 34 ΣΧΗΜΑ 3-3: ΔΙΑΓΡΑΜΜΑ ΤΜΗΜΑΤΩΝ ΜΟΝΑΔΑΣ INTRA MACHINE... 35 ΣΧΗΜΑ 3-4: ΔΙΑΓΡΑΜΜΑ ΤΜΗΜΑΤΩΝ ΜΟΝΑΔΑΣ ΠΑΡΑΓΩΓΗΣ PREDICTION 16X16 / 8X8... 35 ΣΧΗΜΑ 3-5: ΔΙΑΓΡΑΜΜΑ ΛΕΙΤΟΥΡΓΙΑΣ Ι16X16 ΜΗΧΑΝΩΝ... 38 ΣΧΗΜΑ 3-6: ΣΕΙΡΑ ΕΠΕΞΕΡΓΑΣΙΑΣ SUB-MB 4X4... 39 ΣΧΗΜΑ 3-7: ΔΙΑΓΡΑΜΜΑ ΤΜΗΜΑΤΩΝ ΜΟΝΑΔΑΣ ΠΑΡΑΓΩΓΗΣ PREDICTION 4X4... 41 ΣΧΗΜΑ 3-8: ΔΙΑΓΡΑΜΜΑ ΛΕΙΤΟΥΡΓΙΑΣ Ι4X4... 42 ΣΧΗΜΑ 3-9 ΣΕΙΡΙΑΚΗ ΥΛΟΠΟΙΗΣΗ ΚΥΚΛΩΜΑΤΟΣ SAD... 46 ΣΧΗΜΑ 3-10 ΚΥΚΛΩΜΑ ΥΠΟΛΟΓΙΣΜΟΥ SAD 8 ΚΥΚΛΩΝ.... 46 ΣΧΗΜΑ 3-11 ΒΑΣΙΚΟ ΚΥΚΛΩΜΑ ΥΠΟΛΟΓΙΣΜΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ SATD.... 49 ΣΧΗΜΑ 3-12 ΚΥΚΛΩΜΑ ΥΠΟΛΟΓΙΣΜΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ... 50 ΣΧΗΜΑ 3-13 ΒΑΣΙΚΟ ΚΥΚΛΩΜΑ ΥΠΟΛΟΓΙΣΜΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ SAD-DCT.... 52 ΣΧΗΜΑ 4-1 NEWS_CIF ΜΕΤΡΙΚΗ SAD -ΑΡΙΘΜΟΥ LUMA BITS... 61 ΣΧΗΜΑ 4-2 NEWS_CIF ΜΕΤΡΙΚΗ SATD -ΑΡΙΘΜΟΥ LUMA BITS... 61 ΣΧΗΜΑ 4-3 NEWS_CIF ΜΕΤΡΙΚΗ SATD_8 -ΑΡΙΘΜΟΥ LUMA BITS... 62 ΣΧΗΜΑ 4-4 NEWS_CIF ΜΕΤΡΙΚΗ SATD_DCT8 -ΑΡΙΘΜΟΥ LUMA BITS... 63 ΣΧΗΜΑ 4-5 MOBILE_CIF ΜΕΤΡΙΚΗ SAD -ΑΡΙΘΜΟΥ LUMA BITS... 64 ΣΧΗΜΑ 4-6 MOBILE_CIF ΜΕΤΡΙΚΗ SATD -ΑΡΙΘΜΟΥ LUMA BITS... 65 ΣΧΗΜΑ 4-7 MOBILE_CIF ΜΕΤΡΙΚΗ SATD_8 -ΑΡΙΘΜΟΥ LUMA BITS... 66 ΣΧΗΜΑ 4-8 MOBILE_CIF ΜΕΤΡΙΚΗ SATD_DCT8 -ΑΡΙΘΜΟΥ LUMA BITS... 67 ΣΧΗΜΑ 4-9 TEMPETE_CIF ΜΕΤΡΙΚΗ SAD -ΑΡΙΘΜΟΥ LUMA BITS... 68 ΣΧΗΜΑ 4-10 TEMPETE_CIF ΜΕΤΡΙΚΗ SATD -ΑΡΙΘΜΟΥ LUMA BITS... 69 ΣΧΗΜΑ 4-11 TEMPETE_CIF ΜΕΤΡΙΚΗ SATD_8 -ΑΡΙΘΜΟΥ LUMA BITS... 70 ΣΧΗΜΑ 4-12 TEMPETE_CIF ΜΕΤΡΙΚΗ SATD_DCT8 -ΑΡΙΘΜΟΥ LUMA BITS... 71 ΣΧΗΜΑ 4-13 ΣΥΝΤΕΛΕΣΤΕΣ ΜΕΤΑΣ/ΜΟΥ ΣΕ ZIG-ZAG.... 72 ΣΧΗΜΑ 4-14 SNR/BITRATE NEWS_CIF BEST MODE I16X16... 74 ΣΧΗΜΑ 4-15 SNR/BITRATE NEWS_CIF SATD I16X16... 75 ΣΧΗΜΑ 4-16 SNR/BITRATE NEWS_CIF SAD I16X16... 76 ΣΧΗΜΑ 4-17 SNR/BITRATE NEWS_CIF SAD-DCT_8 I16X16... 77 ΣΧΗΜΑ 4-18 SNR/BITRATE NEWS_CIF SATD-8 I16X16... 78 ΣΧΗΜΑ 4-19 SNR/BITRATE MOBILE_CIF BEST MODE I16X16... 79 ΣΧΗΜΑ 4-20 SNR/BITRATE MOBILE_CIF SATD I16X16... 80
ΣΧΗΜΑ 4-21 SNR/BITRATE MOBILE_CIF SAD I16X16... 81 ΣΧΗΜΑ 4-22 SNR/BITRATE MOBILE_CIF SAD-DCT_8 I16X16... 82 ΣΧΗΜΑ 4-23 SNR/BITRATE MOBILE_CIF SATD-8 I16X16... 83 ΣΧΗΜΑ 4-24 SNR/BITRATE TEMPETE_CIF BEST MODE I16X16... 84 ΣΧΗΜΑ 4-25 SNR/BITRATE TEMPETE_CIF SATD I16X16... 85 ΣΧΗΜΑ 4-26 SNR/BITRATE TEMPETE_CIF SAD I16X16... 86 ΣΧΗΜΑ 4-27 SNR/BITRATE TEMPETE_CIF SAD-DCT_8 I16X16... 87 ΣΧΗΜΑ 4-28 SNR/BITRATE TEMPETE_CIF SATD-8 I16X16... 88 ΣΧΗΜΑ 4-29 SNR/BITRATE TEMPETE_CIF SATD... 91 ΣΧΗΜΑ 4-30 SNR/BITRATE TEMPETE_CIF SAD-DCT-8(LUMA & CHROMA)... 92 ΣΧΗΜΑ 4-31 FLOWER_CIF SATD / SAD-DCT-8... 93 ΣΧΗΜΑ 4-32 BUS_CIF SATD / SAD-DCT-8... 94 ΣΧΗΜΑ 4-33 COASTGUARD_CIF SATD / SAD-DCT-8... 95 ΣΧΉΜΑ 4-34 FOREMAN_CIF SATD / SAD-DCT-8... 96 ΣΧΉΜΑ 5-1 NEWS_CIF ΜΕΤΡΙΚΉ SAD -ΑΡΙΘΜΟΎ LUMA BITS SUBMB... 98 ΣΧΉΜΑ 5-2 NEWS_CIF ΜΕΤΡΙΚΉ SATD -ΑΡΙΘΜΟΎ LUMA BITS SUBMB... 99 ΣΧΉΜΑ 5-3 NEWS_CIF ΜΕΤΡΙΚΉ SATD_8 -ΑΡΙΘΜΟΎ LUMA BITS SUBMB... 100 ΣΧΉΜΑ 5-4 NEWS_CIF ΜΕΤΡΙΚΉ SATD-DCT8 -ΑΡΙΘΜΟΎ LUMA BITS SUBMB... 101 ΣΧΉΜΑ 5-5 MOBILE_CIF ΜΕΤΡΙΚΉ SAD -ΑΡΙΘΜΟΎ LUMA BITS SUBMB... 102 ΣΧΉΜΑ 5-6 MOBILE_CIF ΜΕΤΡΙΚΉ SATD -ΑΡΙΘΜΟΎ LUMA BITS SUBMB... 103 ΣΧΉΜΑ 5-7 MOBILE_CIF ΜΕΤΡΙΚΉ SATD8 -ΑΡΙΘΜΟΎ LUMA BITS SUBMB... 104 ΣΧΉΜΑ 5-8 MOBILE_CIF ΜΕΤΡΙΚΉ SATD-DCT8 -ΑΡΙΘΜΟΎ LUMA BITS SUBMB... 105 ΣΧΉΜΑ 5-9 TEMPETE _CIF ΜΕΤΡΙΚΉ SAD -ΑΡΙΘΜΟΎ LUMA BITS SUBMB... 106 ΣΧΉΜΑ 5-10 TEMPETE_CIF ΜΕΤΡΙΚΉ SATD -ΑΡΙΘΜΟΎ LUMA BITS SUBMB... 107 ΣΧΉΜΑ 5-11 TEMPETE _CIF ΜΕΤΡΙΚΉ SATD_8 -ΑΡΙΘΜΟΎ LUMA BITS SUBMB... 108 ΣΧΉΜΑ 5-12 TEMPETE_CIF ΜΕΤΡΙΚΉ SATDDCT8 -ΑΡΙΘΜΟΎ LUMA BITS SUBMB... 109 ΣΧΗΜΑ 5-13 SNR/BITRATE NEWS_CIF BEST MODE I4X4... 111 ΣΧΗΜΑ 5-14 SNR/BITRATE NEWS_CIF SATD I4X4... 112 ΣΧΗΜΑ 5-15 SNR/BITRATE NEWS_CIF SAD I4X4... 113 ΣΧΗΜΑ 5-16 SNR/BITRATE NEWS_CIF SAD-DCT_8 I4X4... 114 ΣΧΗΜΑ 5-17 SNR/BITRATE NEWS_CIF SATD-8 I4X4... 115 ΣΧΗΜΑ 5-18 SNR/BITRATE MOBILE_CIF BEST MODE I4X4... 116 ΣΧΗΜΑ 5-19 SNR/BITRATE MOBILE_CIF SATD I4X4... 117 ΣΧΗΜΑ 5-20 SNR/BITRATE MOBILE_CIF SAD I4X4... 118 ΣΧΗΜΑ 5-21 SNR/BITRATE MOBILE_CIF SAD-DCT_8 I4X4... 119 ΣΧΗΜΑ 5-22 SNR/BITRATE MOBILE_CIF SATD-8 I4X4... 120 ΣΧΗΜΑ 5-23 SNR/BITRATE TEMPETE_CIF BEST MODE I4X4... 121 ΣΧΗΜΑ 5-24 SNR/BITRATE TEMPETE_CIF SATD I4X4... 122 ΣΧΗΜΑ 5-25 SNR/BITRATE TEMPETE_CIF SAD I4X4... 123 ΣΧΗΜΑ 5-26 SNR/BITRATE TEMPETE_CIF SAD-DCT_8 I4X4... 124 ΣΧΉΜΑ 5-27 SNR/BITRATE TEMPETE_CIF SATD-8 I4X4... 125 ΣΧΉΜΑ 5-28 FLOWER I4X4 SATD / NEW METHOD... 128 ΣΧΉΜΑ 5-29 BUS I4X4 SATD / NEW METHOD... 129 ΣΧΉΜΑ 5-30 COASTGUARD I4X4 SATD / NEW METHOD... 130 ΣΧΉΜΑ 5-31 FOREMAN I4X4 SATD / NEW METHOD... 131 ΣΧΉΜΑ 5-32 MOBILE I4X4 SATD / NEW METHOD... 132
ΣΧΉΜΑ 5-33 NEWS I4X4 SATD / NEW METHOD... 133 ΣΧΉΜΑ 5-34 TEMPETE I4X4 SATD / NEW METHOD... 134 ΣΧΗΜΑ 5-35 ΔΙΑΓΡΑΜΜΑ ΥΛΟΠΟΙΗΣΗΣ ΝΕΑΣ ΜΕΘΟΔΟΥ... 135 ΛΙΣΤΑ ΠΙΝΑΚΩΝ ΠΙΝΑΚΑΣ 3-1 ΜΕΓΕΘΟΣ ΤΜΗΜΑΤΩΝ ΚΩΔΙΚΟΠΟΙΗΤΗ... 32 ΠΙΝΑΚΑΣ 3-2 ΤΙΜΕΣ SNR & BITRATE... 33 ΠΙΝΑΚΑΣ 3-3 ΤΙΜΕΣ SNR & BITRATE... 34 ΠΙΝΑΚΑΣ 3-4 ΚΥΚΛΟΙ ΡΟΛΟΓΙΟΥ ΓΙΑ Ι16Χ16 ΚΑΙ Ι8Χ8... 36 ΠΙΝΑΚΑΣ 3-5 ΚΥΚΛΟΙ ΡΟΛΟΓΙΟΥ ΓΙΑ ΥΛΟΠΟΙΗΣΕΙΣ Ι16Χ16... 37 ΠΙΝΑΚΑΣ 3-6 ΚΥΚΛΟΙ ΡΟΛΟΓΙΟΥ ΓΙΑ ΥΛΟΠΟΙΗΣΕΙΣ Ι16Χ16 / ΜΕΓΕΘΟΣ... 37 ΠΙΝΑΚΑΣ 3-7 ΚΥΚΛΟΙ ΡΟΛΟΓΙΟΥ ΓΙΑ LUMA 16X16 ΚΑΙ CHROMA 8X8... 39 ΠΙΝΑΚΑΣ 3-8 ΜΕΓΕΘΗ ΤΜΗΜΑΤΩΝ ΜΗΧΑΝΗΣ Ι4Χ4... 42 ΠΙΝΑΚΑΣ 3-9 ΑΝΑΛΥΣΗ ΑΠΟΔΟΣΗΣ ΚΥΚΛΩΜΑΤΟΣ Ι4Χ4... 43 ΠΙΝΑΚΑΣ 3-10 ΛΟΓΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ FIJ ΤΟΥ SATD... 50 ΠΙΝΑΚΑΣ 3-11 ΜΕΓΕΘΗ ΜΕΤΡΙΚΩΝ ΑΠΟΚΛΙΣΕΩΝ... 53 ΠΙΝΑΚΑΣ 4-1 SNR/BITRATE NEWS_CIF BEST MODE I16X16... 74 ΠΙΝΑΚΑΣ 4-2 SNR/BITRATE NEWS_CIF SATD I16X16... 75 ΠΊΝΑΚΑΣ 4-3 SNR/BITRATE NEWS_CIF SAD I16X16... 76 ΠΊΝΑΚΑΣ 4-4 SNR/BITRATE NEWS_CIF SAD-DCT_8 I16X16... 77 ΠΊΝΑΚΑΣ 4-5 SNR/BITRATE NEWS_CIF SATD-8 I16X16... 78 ΠΊΝΑΚΑΣ 4-6 SNR/BITRATE MOBILE_CIF BEST MODE I16X16... 79 ΠΊΝΑΚΑΣ 4-7 SNR/BITRATE MOBILE_CIF SATD I16X16... 80 ΠΊΝΑΚΑΣ 4-8 SNR/BITRATE MOBILE_CIF SAD I16X16... 81 ΠΊΝΑΚΑΣ 4-9 SNR/BITRATE MOBILE_CIF SAD-DCT_8 I16X16... 82 ΠΊΝΑΚΑΣ 4-10 SNR/BITRATE MOBILE_CIF SATD-8 I16X16... 83 ΠΊΝΑΚΑΣ 4-11 SNR/BITRATE TEMPETE_CIF BEST MODE I16X16... 84 ΠΊΝΑΚΑΣ 4-12 SNR/BITRATE TEMPETE_CIF SATD I16X16... 85 ΠΊΝΑΚΑΣ 4-13 SNR/BITRATE TEMPETE_CIF SAD I16X16... 86 ΠΊΝΑΚΑΣ 4-14 SNR/BITRATE TEMPETE_CIF SAD-DCT_8 I16X16... 87 ΠΊΝΑΚΑΣ 4-15 SNR/BITRATE TEMPETE_CIF SATD-8 I16X16... 88 ΠΙΝΑΚΑΣ 4-16 ΜΕΣΟΣ ΠΟΣΟΣΤΙΑΙΟΣ ΟΡΟΣ ΑΥΞΗΣΗΣ BITRATE... 89 ΠΙΝΑΚΑΣ 4-17 ΣΥΓΚΡΙΣΗ ΜΕΤΡΙΚΩΝ ΑΠΟΔΟΣΗ/ΜΕΓΕΘΟΣ... 89 ΠΊΝΑΚΑΣ 4-18 SNR/BITRATE TEMPETE_CIF SATD (LUMA & CHROMA)... 90 ΠΊΝΑΚΑΣ 4-19 SNR/BITRATE TEMPETE_CIF SAD-DCT-8(LUMA & CHROMA)... 91 ΠΊΝΑΚΑΣ 4-20 FLOWER_CIF SATD / SAD-DCT-8... 93 ΠΊΝΑΚΑΣ 4-21 BUS_CIF SATD / SAD-DCT-8... 94 ΠΊΝΑΚΑΣ 4-22 COASTGUARD_CIF SATD / SAD-DCT-8... 95 ΠΊΝΑΚΑΣ 4-23 FOREMAN_CIF SATD / SAD-DCT-8... 96 ΠΙΝΑΚΑΣ 5-1 ΜΕΓΙΣΤΟΣ ΑΡΙΘΜΟΣ BITS ΑΝΑ SUBMB... 110 ΠΙΝΑΚΑΣ 5-2 SNR/BITRATE NEWS_CIF BEST MODE I4X4... 111 ΠΙΝΑΚΑΣ 5-3 SNR/BITRATE NEWS_CIF SATD I4X4... 112 ΠΊΝΑΚΑΣ 5-4 SNR/BITRATE NEWS_CIF SAD I4X4... 113 ΠΊΝΑΚΑΣ 5-5 SNR/BITRATE NEWS_CIF SAD-DCT_8 I4X4... 114
ΠΊΝΑΚΑΣ 5-6 SNR/BITRATE NEWS_CIF SATD-8 I4X4... 115 ΠΊΝΑΚΑΣ 5-7 SNR/BITRATE MOBILE_CIF BEST MODE I4X4... 116 ΠΊΝΑΚΑΣ 5-8 SNR/BITRATE MOBILE_CIF SATD I4X4... 117 ΠΊΝΑΚΑΣ 5-9 SNR/BITRATE MOBILE_CIF SAD I4X4... 118 ΠΊΝΑΚΑΣ 5-10 SNR/BITRATE MOBILE_CIF SAD-DCT_8 I4X4... 119 ΠΊΝΑΚΑΣ 5-11 SNR/BITRATE MOBILE_CIF SATD-8 I4X4... 120 ΠΊΝΑΚΑΣ 5-12 SNR/BITRATE TEMPETE_CIF BEST MODE I4X4... 121 ΠΊΝΑΚΑΣ 5-13 SNR/BITRATE TEMPETE_CIF SATD I4X4... 122 ΠΊΝΑΚΑΣ 5-14 SNR/BITRATE TEMPETE_CIF SAD I4X4... 123 ΠΊΝΑΚΑΣ 5-15 SNR/BITRATE TEMPETE_CIF SAD-DCT_8 I4X4... 124 ΠΊΝΑΚΑΣ 5-16 SNR/BITRATE TEMPETE_CIF SATD-8 I4X4... 125 ΠΙΝΑΚΑΣ 5-17 ΜΕΣΟΣ ΠΟΣΟΣΤΙΑΙΟΣ ΟΡΟΣ ΑΥΞΗΣΗΣ BITRATE ΓΙΑ Ι4X4... 126 ΠΙΝΑΚΑΣ 5-18 ΣΥΓΚΡΙΣΗ ΜΕΤΡΙΚΩΝ ΑΠΟΔΟΣΗ/ΜΕΓΕΘΟΣ... 126 ΠΙΝΑΚΑΣ 5-19 FLOWER I4X4 SATD / NEW METHOD... 128 ΠΙΝΑΚΑΣ 5-20 BUS I4X4 SATD / NEW METHOD... 129 ΠΙΝΑΚΑΣ 5-21 COASTGUARD I4X4 SATD / NEW METHOD... 130 ΠΙΝΑΚΑΣ 5-22 FOREMAN I4X4 SATD / NEW METHOD... 131 ΠΙΝΑΚΑΣ 5-23 MOBILE I4X4 SATD / NEW METHOD... 132 ΠΙΝΑΚΑΣ 5-24 NEWS I4X4 SATD / NEW METHOD... 133 ΠΙΝΑΚΑΣ 5-25 TEMPETE I4X4 SATD / NEW METHOD... 134
ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΝ Η.264 1 Εισαγωγή στον Η.264 1.1 Ορολογία Bitstream είναι μια αλληλουχία από μηδενικά και άσσους. Frame (για progressive ή interlace vieo) ονομάζεται μία εικόνα μέσα στο vieo. H κωδικοποίηση ενός vieo γίνεται κωδικοποιώντας κάθε frame χωριστά. Για την κωδικοποίηση ενός frame είναι δυνατόν να χρησιμοποιηθούν προηγούμενες χρονικά εικόνες. Το σύνολο αυτών των εικόνων ονομάζεται reference pictures. Ένα frame χωρίζεται σε μικρότερα κομμάτια εικόνας με μέγεθος 16Χ16 pixels το καθένα. Το μικρό αυτό κομμάτι εικόνας ονομάζεται macroblock (MB) και αποτελεί τη μικρότερη μονάδα με την οποία λειτουργεί ο κωδικοποιητής. Σε κάθε ΜΒ αντιστοιχούν 16Χ16 μονόχρωμα δείγματα (luma samples) και δύο 8Χ8 έγχρωμα δείγματα (chroma samples Cb- Cr ) αφού ο κωδικοποιητής λειτουργεί σε vieo format 4:2:0. Sub-Macroblock ονομάζεται μέρος του Macroblock. Slice ονομάζεται μία ομάδα από MBs. Intra Preiction ονομάζεται η μονάδα υπολογισμού, του κωδικοποιητή, η οποία λειτουργεί με βάση τις χωρικές ομοιότητες του vieo. Inter Preiction ονομάζεται η μονάδα υπολογισμού, του κωδικοποιητή, η οποία λειτουργεί με βάση τις χρονικές ομοιότητες του vieo. Macroblock Preiction ονομάζεται το macroblock, που παράγεται είτε από τη μηχανή Intra είτε από την Inter. Οι τιμές των δειγμάτων του macroblock υπολογίζονται μονοσήμαντα από συναρτήσεις, οριζόμενες από το πρότυπο Η.264. Intra moe ονομάζεται η συνάρτηση υπολογισμού ενός macroblock preiction κατά Intra. Στο πρότυπο περιγράφονται 4 moes για macroblock 16x16 (luma samples), 9 moes για sub-macroblock 4x4 (luma samples), 9 moes για sub-macroblock 8x8 (luma samples) και 4 moes για sub-macroblock 8x8 (chroma samples). PSNR Ο μέγιστος σηματοθορυβικός λόγος (PSNR) μετριέται σε λογαριθμική κλίμακα και εξαρτάται από το μέσο τετραγωνικό σφάλμα (MSE) μεταξύ της αρχικής και της 17
ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΝ Η.264 επεξεργασμένης εικόνας ή πλαισίου vieo, σε σχέση με το τετράγωνο της πιο υψηλήςπιθανής τιμής σήματος στην εικόνα (2 n -1) 2 όπου n είναι ο αριθμός bits ανά δείγμα εικόνας. PSNR B = 10log 10 n (2 1) MSE 2 Ο PSNR μπορεί να υπολογιστεί εύκολα και γρήγορα και είναι επομένως ένα πολύ δημοφιλές μέτρο ποιότητας, που χρησιμοποιείται ευρέως για να συγκρίνει την ποιότητα των συμπιεσμένων και αποσυμπιεσμένων εικόνων vieo. Η χρήση PSNR έχει διάφορους περιορισμούς. Ο PSNR απαιτεί μια αναλλοίωτη αρχική εικόνα για τη σύγκριση αλλά αυτό μπορεί να μην είναι διαθέσιμο και μπορεί να μην είναι εύκολο να ελεγχθεί ότι μια αρχική εικόνα έχει την τέλεια πιστότητα. Ο PSNR δεν συσχετίζει καλά με τα υποκειμενικά μέτρα ποιότητας vieo, όπως αυτά που καθορίζονται στην ITU-R 500. Για μια δεδομένη εικόνα ή μια ακολουθία εικόνας, υψηλό PSNR δείχνει συνήθως υψηλή ποιότητα και χαμηλό PSNR δείχνει συνήθως χαμηλή ποιότητα. Εντούτοις, μια συγκεκριμένη τιμή PSNR δεν ισοδυναμεί απαραίτητα με μια απολύτως υποκειμενική ποιότητα. Μετρική απόκλιση ονομάζεται μια συνάρτηση υπολογισμού των διαφορών δύο πινάκων. Η συνάρτηση αυτή εφαρμόζεται σε μέγεθος πινάκων 16Χ16, 8Χ8,4Χ4. Οι πίνακες αυτοί αναπαριστούν, στο πεδίο της συμπίεσης εικόνας, μέρος της αρχικής εικόνας και μέρος της προβλεπόμενης εικόνας. Ευρέως διαδεδομένες μετρικές αποκλίσεις είναι οι SAD, SATD, SSE. Rate-istortion optimization (RDO) είναι μέθοδος αύξησης της απόδοσης κωδικοποιητή. Απόδοση κωδικοποιητή ορίζεται ως το ποσό της παραμόρφωσης (χαμένη πληροφορία) του vieo σε σχέση με τον όγκο πληροφορίας που απαιτείται για την κωδικοποίηση του vieo. 1.2 Η.264 CODEC Όπως είναι συνηθισμένο στα πρόσφατα πρότυπα έτσι και στην περίπτωση του H.264 το πρότυπο δεν περιγράφει ακριβώς ένα σύστημα κωδικοποιητή- αποκωδικοποιητή, αλλά τη σύνταξη του κωδικοποιημένου vieo (encoe vieo bitstream) και τον τρόπο αποκωδικοποίησής του. Ένα απλοποιημένο δομικό διάγραμμα ενός H.264 αποκωδικοποιητή κωδικοποιητή φαίνεται στο Σχήμα 1-1. 18
ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΝ Η.264 Σχήμα 1-1: Η.264 συμβατός κωδικοποιητής αποκωδικοποιητής Με εξαίρεση τη μονάδα του φίλτρου, όλες οι υπόλοιπες (Preiction transform quantisation entropy encoing ) υπάρχουν και στους προηγούμενους Coec (MPEG1-2-4, H261 H263). Στις μονάδες όμως αυτές έχουν γίνει ουσιώδεις λειτουργικές αλλαγές. Στον κωδικοποιητή μπορούμε να διακρίνουμε δύο ροές δεδομένων. Μία από αριστερά προς τα δεξιά (forwar path) και μία από δεξιά προς τα αριστερά (reconstruction path). Το reconstruction path μπορεί να διακριθεί και στον αποκωδικοποιητή. 1.2.1 Ανάλυση του Forwar Path στον Κωδικοποιητή Ένα frame (Fn) στην είσοδο του κωδικοποιητή χωρίζεται σε MBs. Το κάθε MB κωδικοποιείται χρησιμοποιώντας Intra ή Inter preiction. Κάθε μία από τις δύο τμήματα (INTRA, INTER) παράγει ένα ΜΒ που ονομάζεται preiction MB (P). Το preiction MB, χρησιμοποιώντας δεδομένα από προηγούμενα κωδικοποιημένα ΜΒ, πρέπει να είναι όσο το δυνατό όμοιο με το προς κωδικοποίηση MB (τρέχον ΜΒ). Στο τμήμα INTRA, το P παράγεται χρησιμοποιώντας δεδομένα από ΜΒs τα οποία έχουν ήδη κωδικοποιηθεί και ανήκουν στο τρέχον frame. Στο τμήμα INTER, το P παράγεται χρησιμοποιώντας δεδομένα από MBs που ανήκουν σε προηγούμενα χρονικά frames. 19
ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΝ Η.264 Στη συνέχεια παράγεται η διαφορά του τρέχοντος ΜΒ και του P ή Dn. Αυτό μετασχηματίζεται και κβαντίζεται χρησιμοποιώντας τις T Q μονάδες. Η έξοδος Χ είναι ένα καινούργιο MB που περιέχει κβαντισμένους συντελεστές μετασχηματισμού. Το Χ είναι είσοδος σε δύο μονάδες re-orer και entropy encoer για περαιτέρω συμπίεση. Γενικά το ΜΒ X περιέχει λίγους μη-μηδενικούς συντελεστές και αρκετούς μηδενικούς. Ο re-orer είναι υπεύθυνος να αναδιατάξει τους συντελεστές ώστε οι μη μηδενικοί συντελεστές να ομαδοποιηθούν και να περάσουν στον entropy encoer όσο το δυνατόν πιο κοντά χρονικά. Ο entropy encoer μετατρέπει τις δυαδικές αλληλουχίες σε συμπιεσμένη μορφή χρησιμοποιώντας τεχνικές όπως variable-length coing, arithmetic coing. Τέλος η έξοδος του entropy encoer μαζί με πληροφορίες που πρέπει να έχει ο αποκωδικοποιητής για την αποκωδικοποίηση του τρέχοντος MB μπαίνουν σε συγκεκριμένη σειρά, σύμφωνα με το πρότυπο, παράγοντας μία δυαδική αλληλουχία (bitstream) η οποία μεταδίδεται ή αποθηκεύεται. 1.2.2 Ανάλυση του Reconstruction Path στον Κωδικοποιητή Το reconstruction path έχει ως είσοδο το αποτέλεσμα Χ το οποίο περνάει από τις μονάδες αντίστροφου κβαντισμού και μετασχηματισμού. Μετά τον ανάστροφο μετασχηματισμό έχουμε το Dn ΜΒ. Το αποτέλεσμα της πρόσθεσης του Dn και του P είναι το (ufn unfiltere reconstructe frame) ανακτημένο ΜΒ. Το ufn χρησιμοποιείται από την Intra μηχανή και μπαίνει στην είσοδο ενός φίλτρου. Η έξοδος αυτού Fn αποτελεί το φιλτραρισμένο ανακτημένο ΜΒ που χρησιμοποιείται από την Inter μηχανή. 1.2.3 Αποκωδικοποιητής. Σε έναν αποκωδικοποιητή, η είσοδος του είναι ένα bitstream το όποιο αποκωδικοποιείται αρχικά από δύο μονάδες entropy encoer και reorer. Το αποτέλεσμα (κβαντισμένοι συντελεστές μετασχηματισμού) μπαίνουν στο reconstruction Path όπως αναλύθηκε στην προηγούμενη παράγραφο. Το αποτέλεσμα Fn αποτελεί την αποκωδικοποιημένη εικόνα. 1.2.4 Εισαγωγή στο Inter Preiction Το inter preiction δημιουργεί ένα P-MB από ένα ή και περισσότερα προηγούμενα κωδικοποιημένα frames χρησιμοποιώντας την τεχνική block base motion compensation. Σύμφωνα με αυτή, προσπαθεί για ένα κομμάτι εικόνας (block), να βρει όμοιό του, σε προηγούμενες κωδικοποιημένες εικόνες. Όταν ο αλγόριθμος που χρησιμοποιείται συγκλίνει σε ένα block τότε χρησιμοποιεί αυτό σαν P-MB. Επίσης στην έξοδο του δίνει, σύμφωνα με μία μετρική, ένα νούμερο που περιγράφει την ομοιότητα του τρέχοντος ΜΒ και του P-MB. Τέλος υπολογίζει ένα διάνυσμα κίνησης (motion vector) που δείχνει τη σχετική θέση του P- MB σε σχέση με το τρέχον ΜΒ. Για παράδειγμα αν το τρέχον ΜB βρίσκεται στην πάνω αριστερή γωνία του frame και το P-MP είναι 10 pixel πιο μέσα από τη δεξιά άκρη του frame και 14 pixel πιο κάτω από την πάνω άκρη του frame τότε ο motion vector έχει τιμή (10,14). 20
ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΝ Η.264 Το μέγεθος του block περιγράφεται στο πρότυπο και είναι από 16Χ16 έως 4X4. Κάθε ΜΒ μπορεί να διαιρεθεί σε sub-blocks με τέσσερις τρόπους, όπως φαίνεται στο Σχήμα 1-2, σε ένα 16Χ16, σε δύο 16Χ8 και σε τέσσερα 8Χ8. Επιπρόσθετα το sub-block 8Χ8 μπορεί να διαιρεθεί με τέσσερις τρόπους, ένα 8Χ8, δύο 8Χ4 και τέσσερα 4Χ4. Σχήμα 1-2: Macroblock partitions Κάθε ένα είδος διαχωρισμού (partition type) περιγράφεται από έναν κωδικό και πρέπει να έχει ένα δικό του motion vector. Χρησιμοποιώντας μεγάλα blocks, η ποιότητα της ομοιότητας δεν είναι καλή, αλλά απαιτείται λιγότερη πληροφορία ελέγχου. Αντιστρόφως, χρησιμοποιώντας μικρά blocks η ποιότητα της ομοιότητας είναι πολύ καλή, αλλά απαιτείται μεγαλύτερη πληροφορία ελέγχου. Συνήθως μεγάλα blocks χρησιμοποιούνται για περιοχές της εικόνας που έχουν ομοιογένεια και μικρά σε περιοχές με έντονες εναλλαγές. Η επιλογή του είδους διαχωρισμού γίνεται με βάση τα luma samples και η ίδια επιλογή εφαρμόζεται και στα chroma samples. Επίσης οι motion vectors που υπολογίζονται με βάση τα luma samples, χρησιμοποιούνται στα chroma samples. Οι motion vectors έχουν ακρίβεια 1 pixel, ½ pixel και ¼ pixel. Για την ακρίβεια του ενός pixel χρησιμοποιούνται τα samples pixels των εικόνων αναφοράς,. Για τις μικρότερες ακρίβειες τα samples δεν υπάρχουν πραγματικά αλλά υπολογίζονται με interpolation των γειτονικών pixels. Το interpolation περιγράφεται αναλυτικά στο πρότυπο του H.264. [1] 1.2.5 Εισαγωγή στο Intra Preiction H intra preiction μηχανή δημιουργεί το P-MB με βάση προηγούμενα κωδικοποιημένα MB του ίδιου frame που συνορεύουν με τη θέση του MB το οποίο θέλουμε να κωδικοποιήσουμε. Για κάθε P-MB χρησιμοποιείται μια ή και περισσότερες συναρτήσεις υπολογισμού που έχουν σαν είσοδο τιμές από τα γειτονικά samples και έξοδο την τιμή των samples (16Χ16=256 για luma samples και 8Χ8=64 samples για κάθε χρώμα ) του P-MB. Για τα luma samples υπάρχει η δυνατότητα να χρησιμοποιηθεί μία συνάρτηση υπολογισμού για ολόκληρο το ΜΒ και η δυνατότητα να χρησιμοποιηθούν διαφορετικές συναρτήσεις για κάθε ένα από τα 16 (4Χ4 21
ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΝ Η.264 sub-mb) ή 4 (8Χ8 sub-mb) κομμάτια του macroblock. Στην πρώτη περίπτωση υπάρχουν 4 διαφορετικές συναρτήσεις και στη δεύτερη και τρίτη 9. Η επιλογή της συνάρτησης υπολογισμού γίνεται με βάση το κόστος όπως προκύπτει από την τεχνική RDO. Για τα chroma samples χρησιμοποιείται μόνο 1 συνάρτηση υπολογισμού από τις 4 που ορίζονται στο πρότυπο για ολόκληρο το 8x8 ΜΒ. Επίσης η επιλογή της συνάρτησης στο ένα chroma (Cb) χρησιμοποιείται και στο άλλο (Cr). Η έξοδος του Intra Preiction αποτελείται από το P-MB, την επιλογή των συναρτήσεων υπολογισμού και το κόστος του Intra preiction. Η περιγραφή των intra moes και ο τρόπος υπολογισμού των intra preiction macroblock περιγράφονται αναλυτικά στο πρότυπο του H.264 [1]. 22
ΚΕΦΑΛΑΙΟ 2 ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΣΥΜΠΙΕΣΗΣ Η.264 2 Περιγραφή του αλγορίθμου συμπίεσης Η.264 Σκοπός του αλγορίθμου είναι η κωδικοποίηση μιας αλληλουχίας frames (vieo) σε ένα bitstream. Το μέγεθος του bitstream πρέπει να είναι όσο το δυνατό μικρότερο σε σχέση με την αλλοίωση του αρχικού vieo. Σαν μέτρο της αλλοίωσης του αρχικού vieo χρησιμοποιείται το μέγεθος PSNR. H απόδοση ενός κωδικοποιητή συνήθως απεικονίζεται με ένα διάγραμμα SNR σε σχέση με το bitrate. Στο επόμενο διάγραμμα (Σχήμα 2-1) φαίνεται η απόδοση ενός κωδικοποιητή. Οπτικά η καμπύλη απόδοσης πρέπει να είναι όσο το δυνατόν πιο πάνω αριστερά. Σχήμα 2-1: Διάγραμμα SNR vs Bitrate Η κωδικοποίηση του vieo γίνεται frame by frame παράγοντας για κάθε ένα frame ένα bitstream που ονομάζεται NAL UNIT. Κάθε frame αντίστοιχα κωδικοποιείται χωρίζοντάς το σε τμήματα (macroblocks) μεγέθους 16x16 pixels. Για κάθε MB παράγεται ένα bitstream που περιέχει πληροφορίες σχετικά με τον τρόπο κωδικοποίησής του. 23
ΚΕΦΑΛΑΙΟ 2 ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΣΥΜΠΙΕΣΗΣ Η.264 Βλέποντας τον αλγόριθμο από πλευράς υλοποίησης διακρίνουμε τα παρακάτω βασικά τμήματα υλοποίησης. Τμήμα παραγωγής Preiction MB. (Preiction machine) Τμήμα μετασχηματισμού - κβαντοποίησης (ευθύς και αντίστροφος) (TQ- invtq) Τμήμα συμπίεσης συντελεστών μετασχηματισμού (VLC ή CABAC) Τμήμα παραγωγής bitstream (NAL former) 2.1 Preiction machine Το τμήμα αυτό του αλγορίθμου έχει ως είσοδο το current MB, καθώς και πληροφορίες από τον τρόπο συμπίεσης των προηγούμενων ΜΒs (χωρικά και χρονικά). Σκοπό έχει την επιλογή ενός ΜΒ (preiction MB) που είναι όσο το δυνατόν όμοιο με το αρχικό ΜΒ (current MB) που θέλουμε να κωδικοποιήσουμε.. Οι επιλογές που υπάρχουν περιγράφονται από το πρότυπο. Ο κωδικοποιητής είναι υπεύθυνος της επιλογής ώστε η ποιότητα της αποκωδικοποιημένης εικόνας συναρτήσει του bitrate να είναι η καλύτερη δυνατή. Για τη βέλτιστη επιλογή του preiction MB ένας κωδικοποιητής ιδανικά πρέπει να ψάξει όλες τις δυνατές επιλογές. Αυτό σημαίνει, για κάθε μία να υπολογίσει την απώλεια ποιότητας και τα απαιτούμενα bits. Πρακτικά αυτό είναι αδύνατο και μη εφαρμόσιμο λόγο της μεγάλης υπολογιστικής ισχύς που απαιτείται. Για παράδειγμα σε έναν κωδικοποιητή όπου είναι ενεργοποιημένη μόνο η μηχανή INTRA υπάρχουν 184 δυνατές περιπτώσεις για το LUMA μέρος του MB. Για πρακτικές υλοποιήσεις έχουν μελετηθεί διάφοροι αλγόριθμοι και τεχνικές, οι οποίες μειώνουν την απαιτούμενη υπολογιστική ισχύ με μείωση της απόδοσης του κωδικοποιητή. Μία ευρέως διαδεδομένη από αυτές τεχνική είναι η Rate-istortion optimization. 2.2 TQ/- invtq To τμήμα μετασχηματισμού (ευθύ και αντίστροφου) έχει ως εισόδους το preiction MB, το current MB και την τιμή του παράγοντα ποιότητα Q. Έξοδοι του τμήματος είναι οι τιμές των συντελεστών μετασχηματισμού καθώς και η παραγωγή του αποκωδικοποιημένου ΜΒ. Η διαφορά στο αποκωδικοποιημένο MB και στο current ΜΒ δεν οφείλεται στο μετασχηματισμό αλλά στην κβαντοποίηση που γίνεται μετά τον ευθύ μετασχηματισμό. Το μέτρο της κβαντοποίησης ορίζεται από τoν παράγοντα Q που δύναται να αλλάζει ανά MB. Το MB που θα υποστεί μετασχηματισμό είναι η διαφορά Dn-MB του current MB και του preiction MB και οι συντελεστές μετασχηματισμού αφορούν το Dn-MB. Όπως είναι φανερό όσο όμοιο είναι το current MB με το preiction MB, το Dn-MB έχει μικρές τιμές. Η αποδοτικότερη περίπτωση είναι αυτή όπου το Dn έχει μικρές τιμές ώστε η αλλοίωση από την κβαντοποίηση να είναι ελάχιστη. Ο μετασχηματισμός που χρησιμοποιείται είναι ένας 4Χ4 τροποποιημένος μετασχηματισμός συνημίτονου με πράξεις ακεραίων. 24
ΚΕΦΑΛΑΙΟ 2 ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΣΥΜΠΙΕΣΗΣ Η.264 2.3 VLC Το τμήμα του VLC έχει σαν είσοδους τους συντελεστές μετασχηματισμού του Dn-MB και σαν έξοδο μια δυαδική αλληλουχία. Η δυαδική αλληλουχία (bitstream) παράγεται με τρόπο μονοσήμαντο περιγραφόμενο από το πρότυπο. Το μέγεθος της παραγόμενης δυαδικής αλληλουχίας εξαρτάται μόνο από τους συντελεστές μετασχηματισμού με 4 διάφορους τρόπους. Απόλυτη τιμή συντελεστών Αριθμός μη μηδενικών συντελεστών Θέση των μη μηδενικών συντελεστών Τιμές των συντελεστών των γειτονικών sub-mb Οι συντελεστές μετασχηματισμού εξαρτώνται από τον παράγοντα ποιότητας που χρησιμοποιείται στη κβαντοποίηση και φυσικά από τις τιμές του πίνακα των διαφορών που μετασχηματίζεται. Ο παράγοντας ποιότητας είναι σταθερός και επιλεγμένος για κάθε τρόπο συμπίεσης και δεν περιλαμβάνεται στη διαδικασία πρόβλεψης του παραγόμενου bitstream. 2.4 Nal former Το τμήμα του Nal former είναι υπεύθυνο για την παραγωγή του bitstream. Σαν εισόδους το τμήμα αυτό έχει τα παρακάτω : Το παραγόμενο bitstream του vlc Τον τρόπο συμπίεσης κάθε ΜΒ από το τμήμα preiction Την θέση του MB μέσα στο Frame Το παραγόμενο bitstream είναι η συμπιεσμένη μορφή του vieo. Η αναδημιουργία του vieo γίνεται με ένα αποκωδικοποιητή Η.264. Το συμπιεσμένο bitstream είναι οργανωμένο σε αυτόνομα αναγνωρίσιμα τμήματα που ονομάζονται NAL Unit (Network Abstraction Layer). Tα NAL unit έχουν διάφορους τύπους, ανάλογα με τους οποίους χωρίζονται σε δύο κατηγορίες. Στη μια κατηγορία περιλαμβάνονται τα NAL Unit που δεν περιέχουν πληροφορίας εικόνας, αλλά πληροφορίες σχετικά με το γενικό τρόπο συμπίεσης και τα χαρακτηριστικά του vieo. Για παράδειγμα η ανάλυση του vieo, το frame rate καθώς και αν χρησιμοποιείται το eblocking filter. Tα NAL unit που περιέχουν πληροφορία για ένα frame έχουν την εξής μορφή: Frame Macroblock 1 Macroblock1.. Macroblock N Macroblock N Heaer Heaer ata Heaer ata 25
ΚΕΦΑΛΑΙΟ 2 ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΣΥΜΠΙΕΣΗΣ Η.264 Η οργάνωση και η δομή των NAL units περιγράφεται στο πρότυπο [1]. Ένας αποκωδικοποιητής vieo πρέπει να ξέρει με κάποιο τρόπο τον τρόπο συμπίεσης κάθε macroblock. Αυτό γίνεται βάζοντας στο macroblock heaer πεδίο, μεταξύ άλλων και την πληροφορία αυτή. Στην περίπτωση κωδικοποίησης κατά Intra16x16 απαιτείται ένα μόνο πεδίο (mb_type). Η τιμή αυτή εξαρτάται από το moe επιλογής του macroblock και εμμέσως από το Q (παράγοντας ποιότητας). Στη περίπτωση κωδικοποίησης κατά Intra4x4 απαιτείται το παρακάτω πεδία. Mb_type Intra_4x4_pre_moe (16 φορές) Coe_block_pattern H τιμή του mb_type είναι σταθερή και δεν εξαρτάται από την επιλογή των moes των 16 sub- MB. H τιμή Intra_4x4_pre_moe εξαρτάται άμεσα από το moe των sub-moes, όχι μόνο από το κάθε ένα ξεχωριστά αλλά συνδυασμένα με την επιλογή των γειτονικών sub-moes. H τιμή του Coe_block_pattern εξαρτάται από την επιλογή των moes και εμμέσως από το Q. 2.5 Απόδοση κωδικοποιητή Όπως αναφέρθηκε και στην αρχή του κεφαλαίου, η απόδοση ενός κωδικοποιητή μετράται με το SNR σε σχέση με το bitrate. Η απόδοση αυτού εξαρτάται σε σημαντικό βαθμό από τα «εργαλεία» που περιγράφονται στο πρότυπο, τα οποία χρησιμοποιεί. Για παράδειγμα δύο κωδικοποιητές που διαφέρουν μόνο στο τμήμα του entropy encoing έχουν διαφορετική απόδοση. Επίσης ένας κωδικοποιητής που χρησιμοποιεί τα moe 4x4 του intra είναι γενικά καλύτερος από έναν που δεν τα χρησιμοποιεί. Το πρότυπο περιγράφει αρκετά εργαλεία συμπίεσης που μπορεί να χρησιμοποιήσει ένας κωδικοποιητής. Η χρησιμοποίηση των εργαλείων αυτών σε μια υλοποίηση λογισμικού απαιτεί υπολογιστική ισχύ, ενώ σε μία υλοποίηση υλικού απαιτεί περισσότερη επιφάνεια πυριτίου. Γενική αρχή είναι ότι τα εργαλεία που πετυχαίνουν καλύτερη απόδοση απαιτούν περισσότερη υπολογιστική ισχύ και πολύπλοκα κυκλώματα σε υλικό. Με δεδομένη την επιλογή των εργαλείων που χρησιμοποιεί ένας κωδικοποιητής, σημαντικός παράγοντας για την απόδοσή του είναι ο τρόπος αξιοποίησης αυτών. Η χρήση για παράδειγμα των intra 4x4 μπορεί να υποστηρίζεται από έναν κωδικοποιητή αλλά η βέλτιστη επιλογή των moe 4x4 απαιτεί ξεχωριστό κύκλωμα το οποίο μπορεί να κάνει την διαφορά στην απόδοση. Στο πρότυπο του Η.264, όπως και σε κάθε πρότυπο vieo coec δεν 26
ΚΕΦΑΛΑΙΟ 2 ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΣΥΜΠΙΕΣΗΣ Η.264 περιγράφεται ο τρόπος αξιοποίησης των εργαλείων. Αυτό το θέμα είναι του σχεδιαστή του κωδικοποιητή και αντικείμενο έρευνας και μελέτης. Η απόλυτα βέλτιστη υλοποίηση ενός κωδικοποιητή είναι η παραγωγή του bitstream για κάθε δυνατό συνδυασμό των εργαλείων ανά macroblock και η επιλογή του συνδυασμού που δίνει το καλύτερο SNR/bitrate. Φυσικά όλοι οι δυνατοί συνδυασμοί είναι πάρα πολλοί και η υπολογιστική ισχύ που απαιτείται τεράστια με αποτέλεσμα μια τέτοια υλοποίηση να είναι πρακτικά αδύνατη. Ένας σημαντικός παράγοντας υλοποίησης είναι ο χρόνος που απαιτείται για την επεξεργασία ενός macroblock, και κατά επέκταση ο αριθμός των frames που κωδικοποιούνται σε 1 sec. (frame per secon fps). Ο παράγοντας αυτός είναι η τρίτη παράμετρος (SNR, bitrate, fps) που περιγράφει την απόδοση ενός κωδικοποιητή. Σε μία υλοποίηση πραγματικού χρόνου ο κωδικοποιητής έχει στη διάθεσή του συγκεκριμένο χρόνο να επεξεργαστεί κάθε macroblock κα να επιλέξει το βέλτιστο τρόπο συμπίεσης. Τέλος ο χρόνος που απαιτείται για την επεξεργασία ενός macroblock, σε πραγματική εφαρμογή, μετασχηματίζεται σε εμβαδό υλικού στην περίπτωση υλοποίησης σε υλικό. Αν έχουμε ένα κύκλωμα που μπορεί να πετύχει για παράδειγμα 60 fps, τότε μπορούμε να χρησιμοποιήσουμε δύο φορές το κύκλωμα αυτό για να κωδικοποιήσουμε 2 vieo που έχουν ρυθμό στα 30 fps. Σε αντίθετη περίπτωση, όπου το κύκλωμα θα είχε απόδοση μικρότερη των 60 fps, θα υπήρχε η ανάγκη χρησιμοποίησης ενός δεύτερου κυκλώματος που θα διπλασίαζε την απαίτηση σε υλικό. Από τα παραπάνω είναι φανερό ότι μια απλή υλοποίηση του προτύπου είναι πρακτικά μη εφαρμόσιμη και αποδεκτή. Πολλές εργασίες και ερευνητική δουλειά [2]..[8] έχουν γίνει με αντικείμενο τη βελτιστοποίηση της απόδοσης του κωδικοποιητή. Αρκετές από αυτές ασχολούνται με τη σχεδίαση αλγορίθμων που μειώνουν την απαιτούμενη υπολογιστική ισχύ για τους υπολογισμούς των εργαλείων του προτύπου. (για παράδειγμα μετασχηματισμό, entropy encoing, παραγωγή preiction ΜΒ κατά Ιntra και Inter). Επίσης εργασίες έχουν γίνει για την ανάπτυξη τεχνικών μείωσης του αριθμού των επιλογών των preiction moes. Σημαντική δουλειά έχει γίνει πάνω στην υλοποίηση αυτών των τεχνικών που σε αρκετές περιπτώσεις δεν είναι εφικτές για υλοποίηση σε υλικό. Η παρούσα εργασία ασχολείται με υλοποιήσεις σε υλικό. Αντικείμενο της μελέτης είναι η εύρεση τεχνικών και αλγορίθμων κατάλληλων για υλικό που οδηγούν στην αύξηση της απόδοσης ενός κωδικοποιητή ή μείωση σε απαίτηση σε υλικό κρατώντας την απόδοση στα ίδια επίπεδα. 2.6 Δομή της διατριβής Η παρούσα διατριβή διαρθρώνεται σε 5 κεφάλαια. Στο πρώτη κεφάλαιο περιγράφονται οι βασικές έννοιες για το πρότυπο του H.264 για να είναι κατανοητή η ορολογία που 27
ΚΕΦΑΛΑΙΟ 2 ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΣΥΜΠΙΕΣΗΣ Η.264 χρησιμοποιείται στα επόμενα κεφάλαια. Επίσης περιγράφεται με αφαιρετικό τρόπο το πρότυπο για να αποκτήσει ο αναγνώστης μια πρώτη επαφή με το αντικείμενο. Στο δεύτερο κεφάλαιο περιγράφεται ο αλγόριθμος του Η.264 από τη σκοπιά του κωδικοποιητή. Σε αυτό το κεφάλαιο δίνονται περισσότερες πληροφορίες για κάθε δομική μονάδα ενός κωδικοποιητή παρουσιάζοντας τις ιδιαιτερότητές τους. Επίσης μέσω της περιγραφής γίνεται αντιληπτό το ερευνητικό ενδιαφέρον που παρουσιάζει η υλοποίηση ενός κωδικοποιητή και ανακύπτουν τα ερευνητικά πεδία. Στο τρίτο κεφάλαιο περιγράφονται τα εργαλεία που αναπτύχθηκαν για την ερευνητική δουλειά καθώς και τα αποτελέσματα της υλοποίησης σε υλικό. Λογισμική υλοποίηση του κωδικοποιητή αναπτύχθηκε δίνοντας την δυνατότητα για πειραματισμούς και εξαγωγή αποτελεσμάτων. Η διάρθρωση του λογισμικού επιλέχθηκε με βάση τη μοντελοποίηση της υλοποίησης σε υλικό. Στη συνέχεια παρουσιάζονται τα αποτελέσματα μιας υλοποίησης σε υλικό δίνοντας τα σχετικά μεγέθη υλικού των τμημάτων του κωδικοποιητή. Κρίθηκε απαραίτητη αυτή η υλοποίηση για έρευνα στα τμήματα με τη μεγαλύτερη απαίτηση σε υλικό. Στη συνέχεια γίνεται ανάλυση στο τμήμα INTRA και στις μετρικές αποκλίσεις. Περιγράφεται το κύκλωμα υλοποίησης του τμήματος I16x16 και I4x4 και δίνονται τα αποτελέσματα της υλοποίησης και της απόδοσης τους. Τέλος δίνεται η περιγραφή της προτεινόμενης μετρικής και τα αποτελέσματα της υλοποίησής της. Το τέταρτο κεφάλαιο επικεντρώνεται στη μελέτη του τμήματος Ι16x16. Στην αρχή περιγράφεται η τεχνική Rate-istortion optimization και πως αυτή εφαρμόζεται στον κωδικοποιητή AVC. Στη συνέχεια γίνεται ανάλυση της δυαδικής αλληλουχίας που παράγεται για την περιγραφή ενός macroblock. Ακολουθεί η περιγραφή του προβλήματος της χρήσης της μετρικής σαν τεχνική επιλογής του καλύτερου τρόπου συμπίεσης. Τέλος, γίνεται ανάλυση της απόδοσης των μετρικών αποκλίσεων, όπου προκύπτει ότι η προτεινόμενη μετρική δίνει ελαφρώς καλύτερα αποτελέσματα SNR με μείωση του μεγέθους πάνω από 40%. Το πέμπτο κεφάλαιο αναλύει το τμήμα I4x4. Γίνεται σύγκριση των μετρικών αποκλίσεων που εφαρμόστηκαν στο τμήμα I16x16 και αναλύονται τα αποτέλεσμα. Στη συνέχεια περιγράφεται μια νέα μέθοδος επιλογής που δεν βασίζεται στις μετρικές αποκλίσεις αλλά στην πρόβλεψη του αριθμού των bits. Η νέα μέθοδος δίνει παραπλήσια αποτελέσματα με τη μετρική SATD με μείωση του μεγέθος κατά 15%. 28
ΚΕΦΑΛΑΙΟ 3 ΥΛΟΠΟΙΗΣΗ Η.264 3 Υλοποίηση Η.264 Στα πλαίσια της έρευνας πάνω στο πρότυπο του Η.264 αναπτύχθηκε λογισμικό και υλικό κωδικοποίησης Η.264. Οι υλοποιήσεις αυτές είναι δυνατά εργαλεία για την έρευνα και μελέτη του προτύπου του Η.264. 3.1 Υλοποίηση σε λογισμικό Το λογισμικό είναι ένας baseline κωδικοποιητής 100% συμβατός με το πρότυπο H.264. Το λογισμικό αναπτύχθηκε σε γλώσσα προγραμματισμού C++ στο περιβάλλον ανάπτυξης Visual Stuio 2005 της Microsoft και είναι συμβατό με λειτουργικό σύστημα Winows. Το λογισμικό είναι της μορφής DLL (ynamic link library) και συνοδεύεται από comman line εφαρμογή. Η δεύτερη είναι υπεύθυνη για τη σωστή κλήση του DLL. Έχει σαν είσοδο ένα αρχείο παραμέτρων συμπίεσης και στην έξοδό του δημιουργείται το συμπιεσμένο αρχείο Η.264 συμβατό με το Annex B του προτύπου. Η ανάπτυξη του λογισμικού έγινε με γνώμονα τη μοντελοποίηση της υλοποίησης σε υλικό και όχι την ταχύτητα εκτέλεσης. Οι παράμετροι της συμπίεσης είναι οι ακόλουθοι : InputFile FramesToBeEncoe FrameRate SourceWith SourceHeight IDRPerio Q factor Enable Intra Moe Enable Fast4x4 Disable Plane 16x16 Metric Select Chroma Best Moe Όνομα αρχείου εισόδου Αριθμός frames για συμπίεση FPS vieo Οριζόντια ανάλυση vieo Κατακόρυφη ανάλυση vieo Περίοδος εμφάνισης Ι frame Παράγοντας ποιότητας Ενεργοποίηση Ι4x4, 16x16 moes Απενεργοποίηση 3 από το 9 Moe I4x4 Απενεργοποίηση Ι16x16 Plane moe Επιλογή μετρικής (SAD,SATD, ph, best moe) Επιλογή moe χρώματος Best or metric select Enable Motion Estimation Ενεργοποίηση μηχανής Inter 29
ΚΕΦΑΛΑΙΟ 3 ΥΛΟΠΟΙΗΣΗ Η.264 Enable MB partition Ενεργοποίηση ΜΒ partition Enable Half Quarter pel Ενεργοποίηση ακρίβειας ½, ¼ pixel στη μηχανή Inter Enable M.E force stop M.E search cycles Ενεργοποίηση μηχανισμού τερματισμού μηχανής Inter Κύκλοι λειτουργίας μηχανής Inter Enable Deblocking Filter Ενεργοποίηση eblocking filter Deblocking Filter Alpha Α παράμετρος eblocking filter Deblocking Filter Beta B παράμετρος eblocking filter H εφαρμογή comman line διαβάζει το αρχείο παραμέτρων, ελέγχει το αρχείο ασυμπίεστου vieo (μορφής YUV) και κάνει κλήση της συνάρτησης συμπίεσης που βρίσκεται στο αρχείο DLL. Τα χαρακτηριστικά συμπίεσης που υποστηρίζει το λογισμικό περιγράφονται στη συνέχεια. Το λογισμικό υποστηρίζει τα περισσότερα από τα χαρακτηριστικά ενός baseline encoer που περιγράφονται στο πρότυπο. Η μέγιστη ανάλυση vieo που υποστηρίζει είναι 2048Χ2048. Έχει υλοποιηθεί η μηχανή Intra Preiction που υποστηρίζει όλα τα moe του I16x16, του I4x4 καθώς και του χρώματος 8x8. Η μηχανή επιλογής του καλύτερου moe είναι βασισμένη στο Low complexity moe του reference encoer JM. Η μετρική που χρησιμοποιείται είναι SAD, SATD, best και προτεινόμενη μετρική. Επίσης ειδικά για τα moes Ι4x4 υπάρχει μια διαφορετική μηχανή επιλογής που βασίζεται στην προτεινόμενη λύση. Σαν είσοδο η μηχανή έχει το current ΜΒ, τα γειτονικά samples του ΜΒ, τον παράγοντα ποιότητας καθώς και τα moe που είναι ενεργοποιημένα.. Σαν έξοδο η μηχανή δίνει το βέλτιστο preiction ΜΒ (είτε I4x4 είτε Ι16x16) καθώς και το κόστος επιλογής. Η μηχανή Inter preiction είναι υλοποιημένη με ένα reference frame. Στην παρούσα υλοποίηση υποστηρίζεται ακρίβεια full, ½ και ¼ pixel με υπολογισμό όλων των δυνατών συνδυασμών. Επίσης υποστηρίζεται ΜΒ partition μέχρι μέγεθος 8x8. Η μετρική που χρησιμοποιείται είναι η SAD σε όλα τα στάδια και ο αλγόριθμος επιλογής είναι βασισμένος επίσης στο Low complexity moe του reference encoer JM. Η μηχανή έχει σαν είσοδο το current ΜΒ, τον παράγοντα ποιότητας, το reference frame και δίνει το βέλτιστο preiction ΜΒ, τους motion vectors και το κόστος επιλογής. Στο λογισμικό έχει υλοποιηθεί το τμήμα του μετασχηματισμού και της κβαντοποίησης καθώς και η αντίστροφη διαδικασία. Η υλοποίηση είναι σύμφωνη με το πρότυπο και στην έξοδο της παράγει τους μετασχηματισμένους συντελεστές καθώς και το reconstructe MB. Το eblocking filter καθώς και ο entropy encoer τύπου CAVLC έχουν υλοποιηθεί πλήρως. Η υλοποίηση αυτών καθώς και του μετασχηματισμού δεν έχουν κανένα ερευνητικό ενδιαφέρουν αφού περιγράφονται πλήρως στο πρότυπο και από λειτουργικής άποψης πρέπει να είναι σύμφωνα με αυτό. Τέλος ο σχηματισμός του NAL αρχείου έχει υλοποιηθεί ώστε να παράγεται συμπιεσμένο αρχείο για επικύρωση της ορθής λειτουργίας. 30
ΚΕΦΑΛΑΙΟ 3 ΥΛΟΠΟΙΗΣΗ Η.264 Η χρήση του λογισμικού επιτρέπει την παραγωγή αποτελεσμάτων σχετικά με την απόδοση του κωδικοποιητή (biterate vs snr) καθώς και τον πειραματισμό στις παραμέτρους κωδικοποίησης. 3.2 Υλοποίηση σε υλικό Το υλικό έχει περιγραφεί σε γλώσσα περιγραφής υλικού VHDL. Η περιγραφή των κυκλωμάτων είναι τύπου RTL (Register Transfer Level) η οποία επιτρέπει την υλοποίηση σε οποιαδήποτε τεχνολογία (ASIC, FPGA). Το απλοποιημένο διάγραμμα των τμημάτων του κωδικοποιητή φαίνεται στο ακόλουθο σχήμα (Σχήμα 3-1) και αποτελείται κυρίως από 4 τμήματα. Το τμήμα παραγωγής του preiction macroblock, το τμήματα μετασχηματισμού, το τμήμα entropy κωδικοποίησης και προαιρετικά το τμήμα του eblocking filter. To μέγεθος του κωδικοποιητή, που υλοποιήθηκε (με μετρικές SATD στα ΙNTRA και SAD στο Inter), είναι 266.493 πύλες χωρίς να υπολογίζονται τα τμήμα των εσωτερικών μνημών (Αριθμός μνημών 40,180 kbits). Για την υλοποίηση των αριθμητικών κυκλωμάτων έχουν εφαρμοστεί τεχνικές που προέκυψαν από σχετική έρευνα, κυρίως στα κυκλώματα πολλαπλασιασμού. Raw vieo Inter machine TQinvTQ Entropy encoer Nal Former Preiction Machine Intra Machine Deblocking Filter Σχήμα 3-1: Διάγραμμα τμημάτων κωδικοποιητή Ο κωδικοποιητής είναι πλήρως λειτουργικός χωρίς να του λείπουν τμήματα. Η παραμετροποίηση του, καθώς και η αποστολή του συμπιεσμένου vieo γίνεται μέσω γενικού interface με επεξεργαστή. Διαθέτει δύο κανάλια DMA για επικοινωνία με το ασυμπίεστο vieo, καθώς και με περιοχή μνήμης για προσωρινή αποθήκευση δεδομένων. Αναλυτικά το μέγεθος κάθε τμήματος φαίνεται στον παρακάτω πίνακα. Το μεγαλύτερο τμήμα είναι αυτό του preiction machine και ειδικότερα του τμήματος intra. Τα τμήματα του κωδικοποιητή έχουν εκείνη την παραλληλία που τους επιτρέπει να λειτουργούν συγχρονισμένα, έχοντας την ίδια απόδοση ώστε να μην καθυστερεί το ένα τμήμα το άλλο. Ο κωδικοποιητής έχει 3 στάδια pipeline. Κάθε τμήμα είναι και ένα pipeline εκτός του filter που είναι στο ίδιο pipeline με τον 31
ΚΕΦΑΛΑΙΟ 3 ΥΛΟΠΟΙΗΣΗ Η.264 entropy encoer. Κάθε ένα pipeline στάδιο χρειάζεται περίπου 1600 κύκλους ρολογιού για να επεξεργαστεί ένα macroblock. Το Inter τμήμα στους κύκλους αυτούς ψάχνει τη θέση του macroblock που ταιριάζει καλύτερα σε μια περιοχή 48Χ48 pixels. Η μετρική που χρησιμοποιείται είναι SAD και στη full pixel, καθώς και στη ½ και ¼ pixel ακρίβεια. Στη σχεδίαση και υλοποίηση του τμήματος αυτού έχουν ενσωματωθεί τρόποι και υποδείξεις από τη διεθνή βιβλιογραφία. Τα βασικά κυκλώματα του τμήματος αυτού είναι η μηχανή SAD, μικρού μεγέθους, τα κυκλώματα interpolation για το Quarter pixel, τα 6-tap filter για την παραγωγή των Half pixel. Το intra τμήμα θα αναλυθεί εκτενώς στη συνέχεια. Το τμήμα Entropy Encoer είναι ενσωματωμένο με τη μορφοποίηση του NAL. Στην υλοποίηση έχει εφαρμοστεί ο CAVLC. Για κάθε macroblock σχηματίζεται η επικεφαλίδα (heaer), η οποία περιέχει κωδικοποιημένα τον τρόπο συμπίεσης αυτού. Στη συνέχεια ακολουθούν οι κωδικοποιημένοι συντελεστές μετασχηματισμού όπως παράγονται από τον CAVLC. Το μέγεθος του κυκλώματος δεν είναι μεγάλο, διότι περιέχει βασικά μόνο «state machine» και μικρές μνήμες ROM. Τέλος το eblocking filter είναι υπεύθυνο για την υλοποίηση της παραγράφου 8.7 του προτύπου. Σύμφωνα με αυτή σε κάθε ακμή των sub-macroblocks 4x4 εφαρμόζεται φίλτρο 6- tap. Το βασικό κύκλωμα του τμήματος είναι τα φίλτρα, που είναι υλοποιημένα 4 παράλληλα για αύξηση της ταχύτητας. Τμήμα Υπό- τμήμα Αριθμός πυλών Ποσοστό Preiction Machine 191.903 72 Inter machine 71.018 27 Intra machine 120.885 45 TQinvTQ 41.129 15 Entropy Encoer/ Nal former 11.839 5 Deblocking Filter 21.622 8 ΣΥΝΟΛΟ 266.493 100 Πίνακας 3-1 Μέγεθος τμημάτων κωδικοποιητή Από τον παραπάνω πίνακα (Πίνακας 3-1) γίνεται φανερό ότι το τμήμα ενός κωδικοποιητή εξαρτάται άμεσα από το μέγεθος του preiction machine και ειδικότερα από τη μηχανή INTRA. Πρέπει να τονιστεί ότι η μηχανή INTRA είναι πλέον απαραίτητη σε ένα κωδικοποιητή και χωρίς αυτή δεν μπορεί να λειτουργήσει και να παράγει συμβατό κωδικοποιημένο bitstream με το πρότυπο. Η μηχανή INTER δεν είναι απαραίτητη θεωρητικά για τη λειτουργία ενός κωδικοποιητή. Υπάρχουν εφαρμογές με προδιαγραφές που δεν 32
ΚΕΦΑΛΑΙΟ 3 ΥΛΟΠΟΙΗΣΗ Η.264 χρειάζονται τη μηχανή INTER. Η απόδοση ενός κωδικοποιητή με χρήση μόνο της INTRA μηχανής είναι στα ίδια επίπεδα με αυτή ενός MPEG-2 κωδικοποιητή. Η μηχανή INTER αυξάνει θεαματικά την απόδοση του κωδικοποιητή σε σχέση με το μέγεθος κυκλώματος που απαιτεί. Στο επόμενο διάγραμμα (Σχήμα 3-2) και από τους παρακάτω πίνακες (Πίνακας 3-2 & Πίνακας 3-3) φαίνεται η απόδοση ενός κωδικοποιητή με και χωρίς τη μηχανή INTER. Για το διάγραμμα χρησιμοποιήθηκε το vieo αναφοράς news_cif.yuv με τον κωδικοποιητή αναφοράς JM-15. Το συγκεκριμένο vieo είναι ημι-στατικό για να τονιστεί η λειτουργία της μηχανής, η οποία αξιοποιεί τις χρονικές ομοιότητες του vieo. Sequence: News_cif.yuv Inter isable Παράγοντας Ποιότητας SNR (b) Bitrate (kbits/sec) 16 47.4 6105 19 45.28 4753 22 43.36 3690 25 41.39 2895 28 39.15 2214 31 37.02 1734 34 34.77 1322 37 32.67 1026 40 30.43 769 43 28.51 601 46 26.42 446 Πίνακας 3-2 Τιμές SNR & Bitrate Sequence: News_cif.yuv Inter enable Παράγοντας Ποιότητας SNR (b) Bitrate (kbits/sec) 16 46.42 1664 19 44.51 947 22 42.6 626 25 40.69 426 28 38.5 278 31 36.43 189 34 34.24 124 37 32.24 85 40 30.08 56 33
ΚΕΦΑΛΑΙΟ 3 ΥΛΟΠΟΙΗΣΗ Η.264 43 28.21 41 46 26.24 29 Πίνακας 3-3 Τιμές SNR & Bitrate Σχήμα 3-2 Διάγραμμα απόδοσης INTER μηχανής Από την απόδοση της μηχανής INTER γίνεται φανερό ότι η χρήση της μονό απαραίτητη είναι. Για το λόγο όμως ότι η μηχανή INTRA είναι με βάση το πρότυπο απαραίτητη και το μέγεθός της είναι περίπου το 45% του συνόλου του μεγέθους ενός κωδικοποιητή, είναι αντικείμενο μελέτης. Η μελέτη αυτή αποσκοπεί στην ελαχιστοποίηση του μεγέθους της μηχανής, ενώ ταυτόχρονα πρέπει η απόδοση αυτής να μην αλλοιωθεί. 3.3 Υλοποίηση μηχανής INTRA Η μηχανή INTRA αποτελείται από δύο βασικά τμήματα. Το τμήμα της παραγωγής του LUMA 16x16 και Chroma 8x8, και το τμήμα παραγωγής του LUMA 4x4 (Σχήμα 3-3). Η είσοδος της μηχανής είναι το προς κωδικοποίηση macroblock (current) καθώς και οι γειτονικές τιμές των δειγμάτων από τα προηγούμενα κωδικοποιημένα macroblocks. Η έξοδος της μηχανής είναι το κόστος της επιλογής του Intra moe, καθώς και το ίδιο intra moe και το preiction macroblock. Τα δύο βασικά τμήματα δουλεύουν ανεξάρτητα και παράλληλα χωρίς να αλληλεπιδρούν μεταξύ τους. Το κάθε τμήμα παράγει το δικό του αποτέλεσμα και στη συνέχεια επιλέγεται το 34