dav2d
(jbkempf.com)- dav2d คือดีโคเดอร์ความเร็วสูงสำหรับ AV2 ที่พัฒนาโดยชุมชน VideoLAN โดยมีเป้าหมายเป็นอิมพลีเมนเทชันที่พร้อมใช้งานได้ทันทีในแอป เบราว์เซอร์ และระบบปฏิบัติการ
- AV2 คือโคเดกแบบปลอดค่าลิขสิทธิ์รุ่นถัดจาก AV1 ซึ่งพบว่าช่วยเพิ่มประสิทธิภาพได้ราว 25% แต่มีความซับซ้อนในการถอดรหัสสูงกว่า AV1 ประมาณ 5 เท่า
- เช่นเดียวกับที่ dav1d เคยทำหน้าที่เป็นซอฟต์แวร์ดีโคเดอร์ความเร็วสูงในช่วงแรกของการเผยแพร่ AV1 ตอนนี้ dav2d ก็ถูกเตรียมให้เป็น ดีโคเดอร์คุณภาพพร้อมใช้งานจริงในโปรดักชัน ตั้งแต่ช่วงต้นของสเปก
- ขณะนี้ tree ปัจจุบันทำ AVM v15 decoder ได้ครบเชิงฟังก์ชันแล้ว และรองรับทั้ง 8 บิตและ 10 บิต โดยกำลังมุ่งเน้นที่ความถูกต้อง ความสอดคล้องตามสเปก และการปรับแต่งประสิทธิภาพ
- มีการปรับแต่งตามสถาปัตยกรรมอย่างรวดเร็วและปลอดภัยผ่าน x86 AVX2, ARM NEON, งานระยะเริ่มต้นบน RISC-V และการตรวจสอบด้วย checkasm
เป้าหมายและที่มาของ dav2d
- dav2d คือดีโคเดอร์ความเร็วสูงสำหรับโคเดก AV2 ตัวใหม่ ที่พัฒนาโดยสมาชิกชุมชน VideoLAN
- มีการเปิดเผย repository เมื่อไม่กี่สัปดาห์ก่อน และได้ประกาศเป้าหมายกับสถานะของโครงการในช่วงที่ AV2 ออกสเปกทางการฉบับแรก
- dav2d เป็นโครงการต่อยอดจาก dav1d ซึ่งเป็นดีโคเดอร์ AV1
- เป้าหมายคือการมอบ ดีโคเดอร์ขนาดเล็ก เร็ว พกพาได้ และแม่นยำ ที่สามารถใช้งานได้จริงในแอปพลิเคชัน เครื่องเล่นสื่อ เบราว์เซอร์ เครื่องมือทดสอบ และระบบปฏิบัติการ
- จากมุมมองที่ว่า “โคเดกจะยังไม่มีตัวตนจริง จนกว่าทุกคนจะถอดรหัสมันได้” สิ่งสำคัญจึงไม่ใช่แค่สเปก แต่รวมถึงอิมพลีเมนเทชันที่ build, test, benchmark และนำไปผสานรวมได้จริงด้วย
AV2 และความยากของการถอดรหัส
- AV2 คือโคเดกวิดีโอแบบปลอดค่าลิขสิทธิ์รุ่นล่าสุดของ Alliance for Open Media และเป็นรุ่นถัดจาก AV1
- สเปกของ AV2 เปิดเผยต่อสาธารณะแล้ว
- AV1 ได้ข้อสรุปในปี 2018 และกลายเป็นโคเดกวิดีโอที่ถูกใช้อย่างแพร่หลายในเบราว์เซอร์ อุปกรณ์พกพา ระบบปฏิบัติการ ทีวี บริการสตรีมมิง และแอปวิดีโอ
- AV2 ยังคงปรับปรุงประสิทธิภาพการบีบอัดต่อไป โดยเพิ่มเครื่องมือเข้ารหัสใหม่ในส่วนของการทำนาย การแปลง การเข้ารหัสเอนโทรปี การกรอง และการจัดการโครมา
- แม้ผลจะแตกต่างกันตามเงื่อนไขการทดสอบ แต่โดยทั่วไปมักพบว่าดีขึ้นจาก AV1 ราว 25% และบางการประเมินก็ได้ผลดีกว่านั้น
- การถอดรหัส AV2 มีความซับซ้อนกว่า AV1 ราว 5 เท่า ทำให้การถอดรหัสแบบเรียลไทม์ด้วยซอฟต์แวร์เพียงอย่างเดียวบนฮาร์ดแวร์ปัจจุบันจำเป็นต้องมีการปรับแต่งตามสถาปัตยกรรม
- ด้วยความซับซ้อนนี้ การพัฒนา dav2d จึงเริ่มต้นตั้งแต่เนิ่น ๆ โดยไม่รอให้สเปกนิ่งสมบูรณ์ก่อน
เส้นทางจาก dav1d สู่ dav2d
- จุดเริ่มต้นของ dav2d มาจากประสบการณ์ในช่วงแรกของ dav1d
- ตอนที่ AV1 ได้ข้อสรุปนั้น มีความเป็นไปได้สูงว่าฮาร์ดแวร์ถอดรหัสเฉพาะทางจะยังไม่แพร่หลายไปยังอุปกรณ์จำนวนมากได้เร็วพอ จึงจำเป็นต้องมีซอฟต์แวร์ดีโคเดอร์ความเร็วสูง
- ในเวลานั้น คนบางส่วนในชุมชน AOM มองว่าฮาร์ดแวร์อิมพลีเมนเทชันและ reference decoder ก็เพียงพอแล้ว แต่เบราว์เซอร์ เครื่องเล่นสื่อ ระบบปฏิบัติการ และอุปกรณ์พกพา ต้องการ ดีโคเดอร์คุณภาพพร้อมใช้งานจริงในโปรดักชัน ตั้งแต่ก่อนที่ฮาร์ดแวร์เฉพาะทางจะแพร่หลาย
- หลังจากนั้น AOM เองก็สนับสนุนการพัฒนาช่วงแรกบางส่วน และสมาชิกบางรายของ Alliance ก็เข้าร่วม ทำให้เกิด dav1d ขึ้น
- ความต้องการซอฟต์แวร์ดีโคเดอร์ความเร็วสูงมีมากกว่าที่คาด และปัจจุบัน dav1d ก็กลายเป็น AV1 software decoder ที่ถูกใช้งานแพร่หลายที่สุด
- dav1d ถูกใช้งานใน VLC, FFmpeg, mpv, Firefox, Chrome, Safari, Android, Windows, Linux และอีกหลากหลายแอปพลิเคชันกับแพลตฟอร์ม
- สำหรับนักพัฒนาจำนวนมากที่ทำงานด้านการเผยแพร่ การทดสอบ และการปรับแต่ง AV1 นั้น dav1d ยังถูกใช้เป็นอิมพลีเมนเทชันอ้างอิงของ AV1 decoder อีกด้วย
- ประวัติของ dav1d ถูกรวบรวมไว้ใน Introducing dav1d, the road to the first release, First release, dav1d 1.2, 1.5 “Sonic”
- สำหรับ AV2 ตอนนี้กำลังเตรียมบทบาทแบบเดียวกันตั้งแต่ช่วงเวลาที่เร็วกว่านั้น
สถานะการพัฒนาปัจจุบัน
- ตอนนี้ tree ของ dav2d ทำ AVM v15 decoder ได้ครบเชิงฟังก์ชันแล้ว และรองรับทั้งการถอดรหัส 8 บิตและ 10 บิต
- องค์ประกอบหลักของโคเดกส่วนใหญ่ถูกอิมพลีเมนต์แล้ว และกำลังก้าวเข้าสู่ขั้นตอนการปรับแต่งประสิทธิภาพ
- การแยกวิเคราะห์บิตสตรีม
- ส่วนหัวของเฟรมและซีเควนซ์
- การถอดรหัสเอนโทรปีและการจัดการ CDF
- intra prediction
- inter prediction และ reference motion vector
- การแปลง
- CCTX และ CfL
- deblocking
- CDEF
- Wiener filtering
- การสังเคราะห์ film grain
- แม้ ecosystem ของ AV2 จะยังอยู่ในช่วงเริ่มต้น แต่ dav2d ก็เป็นดีโคเดอร์ที่ใช้งานได้แล้ว และไปไกลกว่าการเป็นเพียง repository ที่เปิดไว้เพื่อประกาศโครงการ
- งานส่วนสำคัญในตอนนี้มุ่งเน้นไปที่ ความถูกต้อง ความสอดคล้องตามสเปก การปรับแต่งประสิทธิภาพ และการรองรับแพลตฟอร์ม
- เหตุที่ dav2d พัฒนาได้รวดเร็วมาจากประสบการณ์ที่สั่งสมจาก dav1d ในด้าน threading, การจัดวาง SIMD, การทดสอบ, ความสามารถในการพกพา และการออกแบบ API
- แม้ AV2 จะต้องใช้โค้ดดีโคเดอร์ใหม่จำนวนมาก แต่ประสบการณ์จำนวนมากจากการพัฒนา dav1d ก็สามารถนำมาปรับใช้กับ dav2d ได้โดยตรง
การปรับแต่งประสิทธิภาพและการตรวจสอบ
- บน x86 มีโค้ด AVX2 สำหรับ inverse transform หลายขนาดแล้ว และกำลังทำงานกับ path ที่เกี่ยวข้องกับ CCTX, deblock, intra prediction และ CfL
- บน ARM งาน AArch64 NEON กำลังถูกนำไปใช้กับ entropy decoding, SAD, intra prediction, palette prediction, DC predictor, smooth predictor และฟังก์ชันที่เกี่ยวข้องกับ motion
- งานบน arm32 ก็เริ่มไปบางส่วนแล้ว
- งานบน RISC-V ยังอยู่ในระยะเริ่มต้น โดยกำลังมุ่งไปที่การเปิดใช้งานและปรับจูน assembly เดิมสำหรับ intra prediction และ motion compensation
- ลำดับการปรับแต่งประสิทธิภาพคล้ายกับใน dav1d
- เริ่มจากสร้างอิมพลีเมนเทชัน C ที่สะอาด
- สร้างโครงสร้างพื้นฐานสำหรับการตรวจสอบ
- เพิ่มโค้ดปรับแต่งเฉพาะสถาปัตยกรรมใน hot path ที่สำคัญ
- checkasm ซึ่งถูกสร้างขึ้นระหว่างการพัฒนา dav1d เป็นเฟรมเวิร์กที่ใช้ตรวจสอบและ benchmark อิมพลีเมนเทชันที่ปรับแต่งแล้วโดยเทียบกับอิมพลีเมนเทชัน C
- dav2d ใช้โครงสร้างพื้นฐานนี้มาตั้งแต่วันแรก ทำให้พัฒนาได้เร็วกว่า dav1d ในช่วงพัฒนาที่ใกล้เคียงกัน
- tree ปัจจุบันมี checkasm coverage สำหรับโค้ด inverse transform, motion compensation, film grain, CfL และ reference motion vector แล้ว
รูปแบบการพัฒนาโอเพนซอร์สและขั้นตอนถัดไป
- dav2d ถูกพัฒนาเป็น โครงการโอเพนซอร์ส เช่นเดียวกับ dav1d
- ดีโคเดอร์เผยแพร่ภายใต้ไลเซนส์สไตล์ BSD แบบเดียวกับ dav1d ทำให้นำไปรวมเข้ากับทั้งแอปพลิเคชันโอเพนซอร์สและซอฟต์แวร์ปิดได้ง่าย
- เช่นเดียวกับโครงการส่วนใหญ่ของ VideoLAN การพัฒนาดำเนินไปอย่างเปิดเผยต่อสาธารณะตั้งแต่วันแรก
- Repository: https://code.videolan.org/videolan/dav2d
- Issues: https://code.videolan.org/videolan/dav2d/-/issues
- Merge Requests: https://code.videolan.org/videolan/dav2d/-/merge_requests
- อิมพลีเมนเทชันแบบเปิดนี้ช่วยสนับสนุนการทำงานร่วมกันระหว่างระบบ การตรวจสอบสเปกอย่างเป็นอิสระ การทดลองที่ง่ายขึ้น และการสร้างฐานร่วมสำหรับ ecosystem
- ต่อจากนี้ยังต้องมีการติดตามสเปก AV2 ปรับปรุงความสอดคล้องตามสเปก ขยาย test coverage เพิ่มการปรับแต่งบน x86 และ ARM รวมถึงเดินหน้างานบน RISC-V
- ยังเหลืองานด้านการปรับปรุงประสิทธิภาพสำหรับ bit depth สูง การปรับปรุง threading การลดการใช้หน่วยความจำ และการเตรียมพร้อมสำหรับ release ในอนาคต
- เช่นเดียวกับที่ dav1d ทำให้ AV1 ใช้งานได้จริงก่อนที่การรองรับด้วยฮาร์ดแวร์จะแพร่หลาย dav2d ก็มีเป้าหมายจะทำหน้าที่เดียวกันสำหรับ AV2
1 ความคิดเห็น
ความเห็นจาก Hacker News
Too Many Requests
ดูฉบับเก็บถาวรได้ที่นี่:
https://web.archive.org/web/20260531130034/https://jbkempf.com/blog/2026/dav2d/
https://archive.md/ln5UE
มีข้อความ
Too Many Requestsขึ้นมา พร้อมข้อความว่าผู้เป็นเจ้าของไฟล์ใช้ขีดจำกัดแบนด์วิดท์ระยะสั้นเกินแล้ว และบอกว่าเกิน ขีดจำกัดการดำเนินการ 160000 ครั้งต่อวันแม้แต่ การถอดรหัส AV1 แบบซอฟต์แวร์ ก็หนักมากอยู่แล้ว ดังนั้นเบนช์มาร์กการถอดรหัส AV2 น่าจะเป็นสิ่งที่ทั้งน่าสนใจมากหรือน่ากลัวมากเป็นอย่างต่อไป
เลยสามารถเสียบเป็นการ์ดเสริมในพีซีสำหรับงานบันทึกและเข้ารหัสด้วย OBS ได้
ก็น่าจะดีถ้าผลิตภัณฑ์รุ่นถัดไปที่รองรับ AV2 มีตัวเลือกแบบนี้ออกมาเหมือนกัน และช่วงนี้การทำวิดีโอและสตรีมมิงก็ได้รับความนิยมมากจริง ๆ เลยยิ่งดูจำเป็น
สเปกของโคเด็กจะถือว่าเสร็จจริงก็ต่อเมื่อมีดีโคเดอร์ที่พัฒนาสำหรับใช้งานจริงอย่างน้อยหนึ่งตัว กล่าวคือ ต้องมี reference implementation + implementation อีก 1 ตัว และหลายครั้ง implementation ที่ใช้จริงก็มักกลายเป็นสเปกโดยพฤตินัย
ตอนเป็นเด็กในยุค 90 ผมอ่านสเปก MPEG1 แล้วได้เปิดหูเปิดตาเรื่องวิธีกำหนดระบบที่ซับซ้อน
ในมาตรฐานการเข้ารหัสสื่อ เวลาส่วนใหญ่หมดไปกับการอธิบายว่าจะตีความไบต์ที่ถูกเข้ารหัสมาอย่างไร ซึ่งผมรู้สึกว่ามันยอดเยี่ยมมาก
การถอดรหัสกำหนดแบบพรรณนาได้ และไม่จำเป็นต้องบังคับขั้นตอนการเข้ารหัสอย่างตายตัว
ความคิดสร้างสรรค์สามารถไปอยู่ฝั่งการเข้ารหัสได้ แต่ต้องมีวิธีที่ทำให้ทุกคนเข้าใจไบต์ที่ถูกเข้ารหัสร่วมกันได้เสมอ
ดูเหมือนจะโดน HN hug of death เข้าให้แล้ว
ผมไม่แน่ใจว่า การลดขนาดลง 25% จะคุ้มถึงขั้นทำให้อุปกรณ์ทั้งหมดที่มีตัวถอดรหัส AV1 แบบฮาร์ดแวร์กลายเป็นของล้าสมัยโดยพฤตินัยหรือไม่ เพราะการถอดรหัส AV2 น่าจะหนักเกินไปสำหรับอุปกรณ์เหล่านั้น
YouTube มีรูปแบบย่อยอยู่หลายร้อยแบบ:
https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa
อุปกรณ์ที่ถอดรหัส AV1 ด้วยฮาร์ดแวร์ได้แม้จะยังไม่มาก แต่ก็คงไม่ล้าสมัยเร็ว
https://www.youtube.com/watch?v=XqZsoesa55w
ส่วนเพิ่มอีก 25% นั้นก็มีค่า
ไม่มีอะไรล้าสมัยหรอก AV1 จะยังอยู่อีกนาน และ YouTube ก็ยังมีไฟล์เข้ารหัส H.264 ไว้รองรับอุปกรณ์เก่าอยู่
ดูเหมือนจะมี HN hug of death อีกรอบ และขึ้นข้อผิดพลาด 429
ตอนแรกนึกว่าหมายถึง Dave2D
ดูเหมือนบล็อกจะโดน HN hug of death เล่นงาน
มีข้อความ
Actioning this file would cause "jbkempf.com//blog/2026/dav2d/" to exceed the per-day file actions limit of 160000 actions, try again laterขึ้นมา มีสำเนาที่ไหนไหม?https://web.archive.org/web/20260531115337/https://jbkempf.com/blog/2026/dav2d/
ผมไม่ค่อยเข้าใจว่าคำว่า ดีขึ้นราว 25% เมื่อเทียบกับ AV1 กับคำที่ว่า การถอดรหัส AV2 ซับซ้อนกว่า AV1 ราว 5 เท่า หมายถึงอะไรแต่ละอย่าง และสองอย่างนี้เอามาเทียบกันได้หรือเปล่า
คือคุณภาพที่ AV1 ให้ได้ที่ 10Mbps, AV2 จะให้ได้ที่ 8Mbps
แต่ต้องใช้กำลังประมวลผลมากขึ้น 5 เท่าเพื่อแลกกับกำไร 25% นั้น
บทความที่เกี่ยวข้อง: The AV2 Video Standard Has Released (Final v1.0 Specification)
https://news.ycombinator.com/item?id=48340910