Δημοσιεύτηκε η βιβλιοθήκη SVT-AV1 2.0 (Scalable Video Technology AV1) με υλοποιήσεις του κωδικοποιητή και του αποκωδικοποιητή της μορφής κωδικοποίησης βίντεο AV1. Το έργο δημιουργήθηκε από την Intel σε συνεργασία με το Netflix για να επιτύχει ένα επίπεδο απόδοσης κατάλληλο για διακωδικοποίηση βίντεο on-the-fly και χρήση σε υπηρεσίες video-on-demand (VOD). Επί του παρόντος, η ανάπτυξη πραγματοποιείται υπό την αιγίδα της Open Media Alliance (AOMedia), η οποία επιβλέπει την ανάπτυξη της μορφής κωδικοποίησης βίντεο AV1. Προηγουμένως, το έργο αναπτύχθηκε στο πλαίσιο του έργου OpenVisualCloud, το οποίο αναπτύσσει επίσης κωδικοποιητές SVT-HEVC και SVT-VP9. Ο κωδικός διανέμεται με την άδεια BSD.
Το SVT-AV1 μπορεί να μεταγλωττιστεί για συστήματα που βασίζονται σε οποιαδήποτε αρχιτεκτονική για την οποία υπάρχει μεταγλωττιστής που υποστηρίζει το πρότυπο C99, αλλά η καλύτερη απόδοση επιτυγχάνεται σε συστήματα x86_64 που χρησιμοποιούν βελτιστοποιήσεις assembler που βασίζονται σε εντολές SIMD (η υποστήριξη AVX2 στην CPU είναι επιθυμητή, αλλά το SS2 είναι επαρκές ως ελάχιστο). Η κατανάλωση μνήμης εξαρτάται από τον αριθμό των πυρήνων του επεξεργαστή που εμπλέκονται στην κωδικοποίηση, ο οποίος ελέγχεται από την επιλογή "--lp". Λόγω της πολυπλοκότητας των αλγορίθμων που χρησιμοποιούνται στο AV1, η κωδικοποίηση αυτής της μορφής απαιτεί σημαντικά περισσότερους πόρους από άλλες μορφές, γεγονός που δεν επιτρέπει τη χρήση του τυπικού κωδικοποιητή AV1 για μετατροπή σε πραγματικό χρόνο. Για παράδειγμα, ο τυπικός κωδικοποιητής από το έργο AV1 απαιτεί 5721, 5869 και 658 φορές περισσότερους υπολογισμούς σε σύγκριση με τους κωδικοποιητές x264 (προφίλ "κύριο"), x264 (προφίλ "υψηλό") και libvpx-vp9.
Μεταξύ των αλλαγών στη νέα έκδοση SVT-AV1:
- Έχει γίνει μετάβαση σε μια νέα αρίθμηση έκδοσης, σύμφωνα με την οποία το πρώτο ψηφίο της έκδοσης θα αλλάζει με κάθε αλλαγή στο API/ABI.
- Έχουν γίνει αλλαγές στο API που σχετίζονται με την ένδειξη μετάβασης στην ένδειξη τέλους ροής (EOS) στο τελευταίο καρέ αντί να χρησιμοποιηθεί άδειο πλαίσιο, το οποίο εξαλείφει την καθυστέρηση λόγω αναμονής για ένα επιπλέον πλαίσιο. Η αλλαγή API αντικατοπτρίζεται ήδη στη βάση κώδικα FFmpeg.
- Η λειτουργία μεταβλητού ρυθμού μετάδοσης bit 3 περασμάτων (VBR XNUMX περασμάτων) έχει αφαιρεθεί και αντικατασταθεί από έναν μηχανισμό VBR πολλαπλών περασμάτων. Η λειτουργία VBR πολλαπλών περασμάτων έχει μειωθεί σε δύο περάσματα για να επιτρέψει την ενσωμάτωση με το FFmpeg.
- Ο κωδικοποιητής έχει βελτιωθεί με βελτιστοποιήσεις που αύξησαν την απόδοση συμπίεσης για τις προεπιλογές M9-M13 κατά 1-4% και μείωσαν την κατανάλωση μνήμης στην προεπιλογή M5 κατά 20-35% στη λειτουργία LP 8 και κατά 1-5% σε άλλες λειτουργίες. Η κατανάλωση μνήμης σε άλλες προεπιλογές έχει μειωθεί κατά 1-5%.
- Βελτιστοποιημένοι συμβιβασμοί ποιότητας/ταχύτητας για προεπιλογές που ορίζουν υψηλά επίπεδα ποιότητας. Η προεπιλογή MR, η οποία παρέχει ποιότητα αναφοράς, έχει επιταχυνθεί κατά 100%.
- Οι βελτιστοποιήσεις ειδικά για την αρχιτεκτονική ARM έχουν προστεθεί στις λειτουργίες C-μόνο.
Επιπλέον, αξίζει να σημειωθεί η κυκλοφορία του έργου dav1d 1.4.1, στο πλαίσιο του οποίου οι κοινότητες VideoLAN και FFmpeg αναπτύσσουν μια βιβλιοθήκη με την εφαρμογή ενός εναλλακτικού δωρεάν αποκωδικοποιητή για τη μορφή κωδικοποίησης βίντεο AV1. Η βιβλιοθήκη dav1d υποστηρίζει όλες τις λειτουργίες του AV1, συμπεριλαμβανομένης της προηγμένης υποδειγματοληψίας και όλων των καθορισμένων επιλογών ελέγχου βάθους χρώματος (8, 10 και 12 bit). Το βασικό χαρακτηριστικό του dav1d είναι η εστίασή του στην επίτευξη της υψηλότερης δυνατής απόδοσης αποκωδικοποίησης και στη διασφάλιση υψηλής ποιότητας λειτουργίας σε λειτουργία πολλαπλών νημάτων. Ο κώδικας του έργου είναι γραμμένος σε C (C99) με assembler inserts (NASM/GAS) και διανέμεται με την άδεια BSD. Έχει υλοποιηθεί υποστήριξη για αρχιτεκτονικές x86, x86_64, ARMv7 και ARMv8 και λειτουργικά συστήματα FreeBSD, Linux, Windows, macOS, Android και iOS.
Το dav1d 1.4 είναι αξιοσημείωτο για την υποστήριξή του για τις νέες αρχιτεκτονικές Loongarch και RISC-V, καθώς και για πρόσθετες βελτιστοποιήσεις που βασίζονται σε εντολές AVX-512, την επιτάχυνση των φίλτρων 6tap σε συστήματα ARM, την αυξημένη απόδοση της πολυνηματοποίησης και το μειωμένο μέγεθος δυαδικών δεδομένων σε συστήματα ARM64, ARM32 και RISC-V. Διορθώθηκε η ευπάθεια CVE-2024-1580, η οποία είχε ως αποτέλεσμα μια εγγραφή εκτός ορίων λόγω υπερχείλισης ακεραίων κατά τον χειρισμό πολύ μεγάλων πλαισίων.
Πηγή: opennet.ru
