Keluaran pengekod SVT-AV1 2.0 dan penyahkod dav1d 1.4 untuk format video AV1

Keluaran perpustakaan SVT-AV1 2.0 (Scalable Video Technology AV1) telah diterbitkan dengan pelaksanaan pengekod dan penyahkod format pengekodan video AV1, untuk pecutan yang menggunakan pengkomputeran selari perkakasan yang terdapat dalam CPU Intel moden. Projek ini telah dicipta oleh Intel dengan kerjasama Netflix dengan matlamat untuk mencapai tahap prestasi yang sesuai untuk transkod video on-the-fly dan penggunaan dalam perkhidmatan video-atas-permintaan (VOD). Pada masa ini, pembangunan sedang dijalankan di bawah naungan Open Media Alliance (AOMedia), yang menyelia pembangunan format pengekodan video AV1. Sebelum ini, projek itu telah dibangunkan dalam rangka kerja projek OpenVisualCloud, yang turut membangunkan pengekod SVT-HEVC dan SVT-VP9. Kod itu diedarkan di bawah lesen BSD.

SVT-AV1 boleh dipasang untuk sistem berdasarkan mana-mana seni bina yang terdapat pengkompil yang menyokong piawaian C99, tetapi prestasi terbaik dicapai pada sistem x86_64, yang mana pengoptimuman pemasangan berdasarkan arahan SIMD digunakan (adalah wajar untuk mempunyai Sokongan AVX2 dalam CPU, tetapi sebagai minimum adalah mencukupi dan SS2). Penggunaan memori bergantung pada bilangan teras pemproses yang digunakan semasa pengekodan, dikawal oleh pilihan "-lp". Disebabkan oleh kerumitan algoritma yang digunakan dalam AV1, pengekodan format ini memerlukan lebih banyak sumber berbanding format lain, yang tidak membenarkan penggunaan pengekod AV1 standard untuk transcoding masa nyata. Contohnya, pengekod stok daripada projek AV1 memerlukan 5721, 5869 dan 658 kali lebih banyak pengiraan berbanding pengekod x264 (profil "utama"), x264 (profil "tinggi") dan pengekod libvpx-vp9.

Antara perubahan dalam keluaran SVT-AV1 baharu:

  • Peralihan telah dibuat kepada penomboran versi baharu, mengikut mana digit pertama dalam versi akan berubah dengan setiap perubahan API/ABI.
  • Perubahan telah dibuat pada API yang berkaitan dengan peralihan kepada petunjuk akhir strim (EOS - End Of Stream) dalam bingkai terakhir dan bukannya menggunakan bingkai kosong, yang menghapuskan kelewatan menunggu bingkai tambahan. Perubahan API sudah ditunjukkan dalam pangkalan kod FFmpeg.
  • Mod kadar bit pembolehubah tiga laluan (VBR 3 laluan) telah dialih keluar, dan kini digantikan dengan mekanisme VBR berbilang laluan. Mod berbilang pas VBR telah dikurangkan kepada dua pas untuk memastikan penyepaduan dengan FFmpeg.
  • Pengoptimuman telah ditambahkan pada pengekod, akibatnya kecekapan mampatan pratetap M9-M13 telah meningkat sebanyak 1-4%, dan penggunaan memori pratetap M5 telah menurun sebanyak 20-35% dalam mod LP 8 dan sebanyak 1-5% dalam mod lain. Penggunaan memori dalam pratetap lain menurun sebanyak 1-5%.
  • Pengoptimuman kompromi kualiti/kelajuan telah dijalankan untuk pratetap yang menetapkan tahap kualiti yang tinggi. Pratetap MR kualiti rujukan telah dipercepatkan sebanyak 100%.
  • Pengoptimuman khusus ARM telah ditambahkan pada fungsi C sahaja.

Selain itu, kita boleh perhatikan keluaran projek dav1d 1.4.1, di mana komuniti VideoLAN dan FFmpeg sedang membangunkan perpustakaan dengan pelaksanaan penyahkod percuma alternatif untuk format pengekodan video AV1. Pustaka dav1d menyokong semua ciri AV1, termasuk jenis subsampel lanjutan dan semua parameter kawalan kedalaman warna yang dinyatakan dalam spesifikasi (8, 10 dan 12 bit). Ciri utama dav1d ialah tumpuannya untuk mencapai prestasi penyahkodan setinggi mungkin dan memastikan kerja berkualiti tinggi dalam mod berbilang benang. Kod projek ditulis dalam C (C99) dengan sisipan pemasangan (NASM/GAS) dan diedarkan di bawah lesen BSD. Sokongan untuk seni bina x86, x86_64, ARMv7 dan ARMv8 serta sistem pengendalian FreeBSD, Linux, Windows, macOS, Android dan iOS telah dilaksanakan.

Versi dav1d 1.4 terkenal kerana menyokong seni bina Loongarch dan RISC-V baharu, serta memperkenalkan pengoptimuman tambahan berdasarkan arahan AVX-512, mempercepatkan operasi penapis 6tap pada sistem ARM, meningkatkan kecekapan kerja berbilang benang dan mengurangkan saiz data binari pada ARM64, ARM32 dan RISC-systems V. Kerentanan tetap CVE-2024-1580, yang menyebabkan penulisan di luar sempadan disebabkan limpahan integer apabila memproses saiz bingkai yang sangat besar.

Sumber: opennet.ru

Tambah komen