Τι είναι ένα αρχείο VP6;
Το VP6 είναι μια μορφή βίντεο συμπίεσης με απώλειες που εισήχθη από τις τεχνολογίες On2 τον Μάιο του 2003. Είναι μέρος μιας σειράς κωδικοποιητών βίντεο που αναπτύχθηκαν από την TrueMotion, συμπεριλαμβανομένων των V3, V4 και V5. Η μορφή χρησιμοποιήθηκε σύντομα στον τομέα της μετάδοσης, όπως με αναφορές του BBC και το λογισμικό QuickLink. Το VP6 διαδέχθηκε το VP7 Codec τον Ιανουάριο του 2005 με καλύτερη συμβατότητα συμπίεσης.
Μορφή αρχείου VP6
Οι πλήρεις προδιαγραφές για τα αρχεία V6 δεν είναι διαθέσιμες δημόσια. Το On2 δημοσίευσε τις προδιαγραφές αρχικά, αλλά σύντομα αυτές έγιναν μη διαθέσιμες για τους γενικούς χρήστες. Μια ανεπίσημη τεκμηρίωση της μορφής αρχείου VP6 είναι διαθέσιμη στο multimedia wiki που μπορεί να παραπεμφθεί για αναφορά προγραμματιστή.
Μακρομπλόκ (MB)
Παρόμοια με τα μέρη 2 και 10 των MPEG-2, MPEG-4, κάθε καρέ βίντεο ενός αρχείου VP6 αποτελείται από μια σειρά μακρομπλόκ 16x16 (MB). Κάθε MB μπορεί να βρίσκεται σε έναν από τους παρακάτω τρόπους:
- Εντός MB
- Inter MB, null MV, προηγούμενο πλαίσιο αναφοράς
- Inter MB, διαφορικό MV, προηγούμενο πλαίσιο αναφοράς
- Inter MB, τέσσερα MV, προηγούμενο πλαίσιο αναφοράς
- Inter MB, MV 1, προηγούμενη αναφορά καρέ
- Inter MB, MV 2, προηγούμενη αναφορά καρέ
- Inter MB, null MV, αναφορά πλαισίου σελιδοδείκτη
- Inter MB, διαφορικό MV, σελιδοδείκτης αναφοράς πλαισίου
- Inter MB, MV 1, σελιδοδείκτης αναφοράς πλαισίου
- Inter MB, MV 2, σελιδοδείκτης αναφοράς πλαισίου
Κεφαλίδα πλαισίου
Η κεφαλίδα πλαισίου ενός VP6 είναι όπως φαίνεται παρακάτω και ακολουθεί το πακέτο bit big-endian.
Σύνταξη | Αριθμός bit | Τύπος | Symantecs |
---|---|---|---|
frame_mode | 1 | Enum | 0x0 σημαίνει ένα εσωτερικό πλαίσιο |
qp | 6 | Ανυπόγραφο | Παράμετρος κβαντισμού έγκυρο εύρος 0..63 |
δείκτης | 1 | Σταθερά | 0=VP61/62, 1=VP60 |
αν (λειτουργία_πλαισίου == 0) { | 0 | ισούται με INTRA_FRAME | |
έκδοση | 5 | Σταθερά | 6=VP60/61, 7=VP60(Electronic Arts), 8=VP62 |
έκδοση2 | 2 | Σταθερά | 0=VP60, 3=VP61/62 |
διαπλοκή | 1 | Boolean | true (1) σημαίνει ότι θα χρησιμοποιηθεί το interlace |
if (δείκτης==1 ή έκδοση2==0) { | |||
offset | 16 | Ανυπόγραφο | μετατόπιση δευτερεύοντος buffer (bytes που σχετίζονται με την έναρξη του buffer) |
} | |||
dim_y | 8 | Ανυπόγραφο | Ύψος μακρομπλόκ βίντεο |
dim_x | 8 | Ανυπόγραφο | Πλάτος μακρομπλόκ του βίντεο |
render_y | 8 | Ανυπόγραφο | Ύψος εμφάνισης βίντεο |
render_x | 8 | Ανυπόγραφο | Πλάτος εμφάνισης βίντεο |
}άλλο{ | |||
if (δείκτης==1 ή έκδοση2==0) { | |||
offset | 16 | Ανυπόγραφο | Μετατόπιση δευτερεύοντος buffer (byte που σχετίζονται με την έναρξη του buffer) |
} | |||
} |