การเปิดตัวตัวเข้ารหัส SVT-AV1 2.0 และตัวถอดรหัส dav1d 1.4 สำหรับรูปแบบวิดีโอ AV1

การเปิดตัวไลบรารี SVT-AV1 2.0 (Scalable Video Technology AV1) พร้อมการใช้งานตัวเข้ารหัสและตัวถอดรหัสของรูปแบบการเข้ารหัสวิดีโอ AV1 ได้รับการเผยแพร่แล้ว โปรเจ็กต์นี้สร้างขึ้นโดย Intel โดยความร่วมมือกับ Netflix เพื่อให้ได้ประสิทธิภาพในระดับที่เหมาะสมสำหรับการแปลงรหัสวิดีโอแบบทันทีทันใดและใช้ในบริการวิดีโอตามสั่ง (VOD) ปัจจุบัน การพัฒนาดำเนินการภายใต้การอุปถัมภ์ของ Open Media Alliance (AOMedia) ซึ่งดูแลการพัฒนารูปแบบการเข้ารหัสวิดีโอ AV1 ก่อนหน้านี้ โครงการได้รับการพัฒนาภายใต้กรอบของโครงการ OpenVisualCloud ซึ่งพัฒนาตัวเข้ารหัส SVT-HEVC และ SVT-VP9 ด้วย รหัสนี้แจกจ่ายภายใต้ใบอนุญาต BSD

SVT-AV1 สามารถประกอบสำหรับระบบที่ใช้สถาปัตยกรรมใด ๆ ที่มีคอมไพเลอร์ที่รองรับมาตรฐาน C99 แต่ประสิทธิภาพที่ดีที่สุดนั้นทำได้บนระบบ x86_64 ซึ่งใช้การเพิ่มประสิทธิภาพการประกอบตามคำสั่ง SIMD (เป็นที่พึงปรารถนาที่จะมี รองรับ AVX2 ใน CPU แต่ขั้นต่ำก็เพียงพอแล้วและ SS2) ปริมาณการใช้หน่วยความจำขึ้นอยู่กับจำนวนแกนประมวลผลที่ใช้ระหว่างการเข้ารหัส ซึ่งควบคุมโดยตัวเลือก “-lp” เนื่องจากความซับซ้อนของอัลกอริทึมที่ใช้ใน AV1 การเข้ารหัสรูปแบบนี้จึงต้องใช้ทรัพยากรมากกว่ารูปแบบอื่นอย่างมาก ซึ่งไม่อนุญาตให้ใช้ตัวเข้ารหัส AV1 มาตรฐานสำหรับการแปลงรหัสแบบเรียลไทม์ ตัวอย่างเช่น ตัวเข้ารหัสหุ้นจากโปรเจ็กต์ AV1 ต้องการการคำนวณที่มากกว่า 5721, 5869 และ 658 เท่า เมื่อเทียบกับตัวเข้ารหัส x264 (โปรไฟล์ "หลัก") x264 (โปรไฟล์ "สูง") และตัวเข้ารหัส libvpx-vp9

ท่ามกลางการเปลี่ยนแปลงในการเปิดตัว SVT-AV1 ใหม่:

  • มีการเปลี่ยนไปใช้การกำหนดหมายเลขเวอร์ชันใหม่ โดยที่ตัวเลขตัวแรกในเวอร์ชันจะเปลี่ยนไปตามการเปลี่ยนแปลง API/ABI แต่ละครั้ง
  • มีการเปลี่ยนแปลงกับ API ที่เกี่ยวข้องกับการเปลี่ยนไปยังจุดสิ้นสุดของสตรีม (EOS - สิ้นสุดสตรีม) ในเฟรมสุดท้ายแทนที่จะใช้เฟรมว่าง ซึ่งขจัดความล่าช้าในการรอเฟรมเพิ่มเติม การเปลี่ยนแปลง API สะท้อนให้เห็นแล้วในโค้ดเบส FFmpeg
  • โหมดบิตเรตตัวแปรสามรอบ (3-pass VBR) ได้ถูกลบออกแล้ว และขณะนี้ถูกแทนที่ด้วยกลไก VBR แบบหลายรอบ โหมดมัลติพาส VBR ลดลงเหลือสองรอบเพื่อให้แน่ใจว่าสามารถทำงานร่วมกับ FFmpeg ได้
  • เพิ่มการเพิ่มประสิทธิภาพให้กับตัวเข้ารหัสซึ่งเป็นผลมาจากประสิทธิภาพการบีบอัดของการตั้งค่าล่วงหน้า M9-M13 เพิ่มขึ้น 1-4% และการใช้หน่วยความจำของการตั้งค่าล่วงหน้า M5 ลดลง 20-35% ในโหมด LP 8 และ 1-5% ในโหมดอื่นๆ การใช้หน่วยความจำในการตั้งค่าล่วงหน้าอื่น ๆ ลดลง 1-5%
  • มีการดำเนินการปรับคุณภาพ/ความเร็วให้เหมาะสมสำหรับการตั้งค่าล่วงหน้าที่กำหนดคุณภาพในระดับสูง ค่าที่ตั้งล่วงหน้า MR คุณภาพอ้างอิงได้รับการเร่งขึ้น 100%
  • เพิ่มการเพิ่มประสิทธิภาพเฉพาะ ARM ให้กับฟังก์ชัน C-only แล้ว

นอกจากนี้ เรายังสังเกตการเปิดตัวของโปรเจ็กต์ dav1d 1.4.1 ซึ่งชุมชน VideoLAN และ FFmpeg กำลังพัฒนาไลบรารีด้วยการใช้ตัวถอดรหัสฟรีทางเลือกอื่นสำหรับรูปแบบการเข้ารหัสวิดีโอ AV1 ไลบรารี dav1d รองรับคุณสมบัติทั้งหมดของ AV1 รวมถึงประเภทการสุ่มตัวอย่างขั้นสูงและพารามิเตอร์ควบคุมความลึกของสีทั้งหมดที่ระบุไว้ในข้อกำหนด (8, 10 และ 12 บิต) คุณลักษณะหลักของ dav1d คือการมุ่งเน้นไปที่การบรรลุประสิทธิภาพการถอดรหัสสูงสุดที่เป็นไปได้ และรับประกันงานคุณภาพสูงในโหมดมัลติเธรด รหัสโปรเจ็กต์เขียนด้วยภาษา C (C99) พร้อมส่วนแทรกประกอบ (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-systems V. แก้ไขช่องโหว่ CVE-2024-1580 ซึ่งทำให้เกิดการเขียนนอกขอบเขตเนื่องจากการล้นของจำนวนเต็มเมื่อประมวลผลขนาดเฟรมที่ใหญ่มาก

ที่มา: opennet.ru

เพิ่มความคิดเห็น