1 điểm bởi GN⁺ 4 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • dav2d là bộ giải mã tốc độ cao cho AV2 do cộng đồng VideoLAN phát triển, hướng tới một bản triển khai có thể dùng ngay trong ứng dụng, trình duyệt và hệ điều hành
  • AV2 là codec không mất phí bản quyền kế nhiệm AV1, ghi nhận mức cải thiện hiệu quả khoảng 25%, nhưng độ phức tạp giải mã cao gấp khoảng 5 lần AV1
  • Giống như dav1d từng đóng vai trò bộ giải mã phần mềm tốc độ cao ở giai đoạn đầu phổ biến AV1, dav2d cũng đang được chuẩn bị như một bộ giải mã chất lượng production ngay từ đầu vòng đời đặc tả
  • Hiện tại, cây mã đã hoàn thiện đầy đủ về mặt chức năng cho bộ giải mã AVM v15 và hỗ trợ 8-bit, 10-bit, đồng thời tập trung vào độ chính xác, tính phù hợp và tối ưu hóa
  • Thông qua tối ưu hóa theo kiến trúc với x86 AVX2, ARM NEON, các bước đầu cho RISC-V và kiểm chứng bằng checkasm, dự án đang đẩy nhanh tối ưu hóa một cách an toàn và hiệu quả

Mục tiêu và bối cảnh của dav2d

  • dav2d là bộ giải mã tốc độ cao cho codec AV2 mới do các thành viên của cộng đồng VideoLAN phát triển
  • Kho mã nguồn đã được công khai vài tuần trước, và mục tiêu cùng trạng thái của dự án được công bố đúng vào thời điểm AV2 phát hành bản đặc tả chính thức đầu tiên
  • dav2d là phần tiếp nối của dav1d, bộ giải mã AV1
  • Mục tiêu là cung cấp một bộ giải mã nhỏ gọn, nhanh, có tính di động cao và chính xác có thể dùng trong ứng dụng thực tế, trình phát đa phương tiện, trình duyệt, công cụ kiểm thử và hệ điều hành
  • Theo quan điểm “một codec chưa thực sự tồn tại cho đến khi mọi người đều có thể giải mã nó”, điều quan trọng không chỉ là đặc tả mà còn là một bản triển khai có thể build, kiểm thử, benchmark và tích hợp

AV2 và độ khó giải mã

  • AV2 là codec video không mất phí bản quyền mới nhất của Alliance for Open Media và là phiên bản kế nhiệm của AV1
  • Đặc tả AV2 đã được công khai
  • AV1 được chốt vào năm 2018 và đã trở thành codec video được triển khai rộng rãi trên trình duyệt, thiết bị di động, hệ điều hành, TV, dịch vụ streaming và các ứng dụng video
  • AV2 tiếp tục cải thiện hiệu quả nén bằng cách đưa vào các công cụ mã hóa mới trên toàn bộ các mảng dự đoán, biến đổi, mã hóa entropy, lọc và xử lý chroma
  • Mức cải thiện thường được quan sát là khoảng 25% so với AV1, dù có khác biệt tùy điều kiện kiểm thử và trong một số đánh giá con số này còn cao hơn
  • Giải mã AV2 phức tạp hơn khoảng 5 lần so với AV1, nên để giải mã thời gian thực chỉ bằng phần mềm trên phần cứng hiện nay sẽ cần tối ưu hóa theo từng kiến trúc
  • Chính vì độ phức tạp này mà việc phát triển dav2d được bắt đầu sớm, không chờ đến khi đặc tả hoàn toàn ổn định

Từ dav1d đến dav2d

  • Điểm khởi đầu của dav2d nằm ở kinh nghiệm ban đầu với dav1d
  • Khi AV1 được hoàn tất, khả năng cao là phần cứng giải mã chuyên dụng sẽ không được phổ cập đủ nhanh trên đủ nhiều thiết bị, nên cần một bộ giải mã phần mềm tốc độ cao
  • Khi đó, một bộ phận trong cộng đồng AOM cho rằng triển khai phần cứng và bộ giải mã tham chiếu là đủ, nhưng trình duyệt, trình phát đa phương tiện, hệ điều hành và thiết bị di động cần một bộ giải mã chất lượng production ngay cả trước khi phần cứng chuyên dụng trở nên phổ biến
  • Sau đó, chính AOM đã hỗ trợ một phần phát triển ban đầu, và một số thành viên của Alliance cũng tham gia, từ đó dav1d ra đời
  • Nhu cầu về bộ giải mã phần mềm tốc độ cao còn lớn hơn dự đoán, và hiện nay dav1d đã trở thành bộ giải mã phần mềm AV1 được triển khai rộng rãi nhất
  • dav1d được dùng trong VLC, FFmpeg, mpv, Firefox, Chrome, Safari, Android, Windows, Linux cùng nhiều ứng dụng và nền tảng khác
  • dav1d cũng được nhiều nhà phát triển dùng như một bản triển khai bộ giải mã AV1 tham chiếu để triển khai, kiểm thử và tối ưu AV1
  • Lịch sử của dav1d được tổng hợp trong Introducing dav1d, the road to the first release, First release, dav1d 1.2, 1.5 “Sonic”
  • Với AV2, dự án đang chuẩn bị cho vai trò tương tự từ một thời điểm sớm hơn nữa

Trạng thái triển khai hiện tại

  • Hiện tại, cây dav2d đã hoàn thiện đầy đủ về mặt chức năng cho bộ giải mã AVM v15 và hỗ trợ cả giải mã 8-bit lẫn 10-bit
  • Phần lớn các thành phần chính của codec đã được triển khai và dự án đang bước vào giai đoạn tối ưu hóa
    • phân tích bitstream
    • header khung hình và chuỗi
    • giải mã entropy và xử lý CDF
    • dự đoán intra
    • dự đoán inter và vector chuyển động tham chiếu
    • biến đổi
    • CCTX và CfL
    • deblocking
    • CDEF
    • lọc Wiener
    • tổng hợp film grain
  • Hệ sinh thái AV2 vẫn còn ở giai đoạn đầu, nhưng dav2d đã là một bộ giải mã hoạt động được, vượt xa mức chỉ là một kho mã nguồn được công bố cho có
  • Phần lớn công việc hiện tại tập trung vào độ chính xác, tính phù hợp, tối ưu hóa và hỗ trợ nền tảng
  • Một trong những lý do dav2d tiến triển nhanh là nhờ kinh nghiệm tích lũy từ dav1d về threading, tổ chức SIMD, kiểm thử, tính di động và thiết kế API
  • AV2 đòi hỏi một lượng đáng kể mã bộ giải mã mới, nhưng phần lớn kinh nghiệm rút ra từ quá trình phát triển dav1d có thể áp dụng trực tiếp cho dav2d

Tối ưu hiệu năng và kiểm chứng

  • Trên x86, mã AVX2 cho nhiều kích thước biến đổi ngược đã được đưa vào, đồng thời công việc cho các nhánh liên quan tới CCTX, deblock, intra prediction và CfL cũng đang được tiến hành
  • Trên ARM, công việc AArch64 NEON đang được áp dụng cho giải mã entropy, SAD, dự đoán intra, dự đoán palette, bộ dự đoán DC, bộ dự đoán smooth và các hàm liên quan đến chuyển động
  • Một phần công việc cho arm32 cũng đã bắt đầu
  • Công việc cho RISC-V đang ở giai đoạn đầu và hiện được triển khai theo hướng kích hoạt lại rồi tinh chỉnh phần assembly cho dự đoán intra và bù chuyển động hiện có
  • Quy trình tối ưu hóa tương tự như dav1d
    • trước tiên tạo một bản triển khai C sạch sẽ
    • xây dựng hạ tầng kiểm chứng
    • thêm mã tối ưu hóa theo từng kiến trúc cho các hot path quan trọng
  • checkasm, được tạo ra trong quá trình phát triển dav1d, là framework để kiểm chứng và benchmark các bản triển khai tối ưu hóa bằng cách so sánh với bản C
  • dav2d tận dụng hạ tầng này ngay từ ngày đầu tiên, nhờ đó tiến nhanh hơn so với dav1d ở giai đoạn tương tự
  • Cây mã hiện tại đã bao gồm checkasm coverage cho mã biến đổi ngược, bù chuyển động, film grain, CfL và vector chuyển động tham chiếu

Cách phát triển mã nguồn mở và các bước tiếp theo

  • dav2d, giống như dav1d, được phát triển như một dự án mã nguồn mở
  • Bộ giải mã được phát hành theo giấy phép kiểu BSD giống dav1d, giúp dễ tích hợp vào cả ứng dụng mã nguồn mở lẫn ứng dụng độc quyền
  • Cũng như phần lớn các dự án của VideoLAN, việc phát triển được tiến hành công khai ngay từ ngày đầu
  • Một bản triển khai công khai mang lại khả năng tương tác, kiểm chứng đặc tả độc lập, thử nghiệm dễ hơn và một nền tảng chung cho hệ sinh thái
  • Trong thời gian tới vẫn cần tiếp tục bám theo đặc tả AV2, cải thiện tính phù hợp, mở rộng độ phủ kiểm thử, tối ưu thêm cho x86 và ARM, cũng như tiếp tục công việc cho RISC-V
  • Việc cải thiện hiệu năng ở độ sâu bit cao hơn, nâng cấp threading, giảm mức sử dụng bộ nhớ và chuẩn bị cho các bản phát hành tương lai cũng vẫn còn ở phía trước
  • Cũng như dav1d đã giúp AV1 trở nên thực tế trước khi hỗ trợ phần cứng trở nên phổ biến, dav2d hướng tới vai trò tương tự cho AV2

1 bình luận

 
Ý kiến trên Hacker News
  • Too Many Requests
    Có thể xem bản lưu trữ tại đây:
    https://web.archive.org/web/20260531130034/https://jbkempf.com/blog/2026/dav2d/
    https://archive.md/ln5UE

    • Có vẻ như HN đã đẩy quá nhiều lưu lượng truy cập tới đây
      Xuất hiện Too Many Requests, kèm thông báo chủ sở hữu tệp đã vượt quá giới hạn băng thông ngắn hạn và vượt mức giới hạn 160000 tác vụ mỗi ngày
  • Giải mã phần mềm AV1 vốn đã rất nặng, nên benchmark giải mã AV2 có lẽ sẽ là thứ vừa rất thú vị vừa khá đáng sợ để xem tiếp theo

    • Arc dGPU của Intel khá hấp dẫn như một lựa chọn chuyên dụng cho mã hóa và giải mã AV1, đặc biệt là kiểu dáng nhỏ gọn của một số mẫu card
      Cũng có thể cắm nó như một card phụ trong PC dùng cho OBS recording và công việc encoding
      Sẽ rất tốt nếu thế hệ sản phẩm tiếp theo hỗ trợ AV2 cũng có những lựa chọn tương tự; nhu cầu đó còn lớn hơn nữa vì sản xuất video và streaming giờ đã quá phổ biến
    • Cho đến khi phần cứng rẻ, phổ biến bắt kịp một codec từ năm 2018, các codec AV thế hệ mới có lẽ vẫn sẽ chỉ dừng ở mức hơn niche một chút
    • Đây có vẻ sẽ là điều đáng để theo dõi
  • Một đặc tả codec chỉ có thể xem là hoàn tất khi có ít nhất một decoder được phát triển và dùng ngoài thực tế. Tức là cần reference implementation + 1 implementation; trong nhiều trường hợp, implementation ngoài thực tế mới trở thành đặc tả trên thực tế
    Hồi còn nhỏ vào thập niên 90, tôi đọc đặc tả MPEG1 và từ đó hiểu ra cách người ta định nghĩa các hệ thống phức tạp
    Trong các tiêu chuẩn mã hóa media, phần lớn thời gian được dành cho việc mô tả cách diễn giải các byte đã được mã hóa, và tôi thấy điều đó thật thiên tài
    Việc giải mã có thể được định nghĩa theo kiểu mô tả, còn mã hóa thì không cần bị ràng buộc theo kiểu quy định chặt
    Sự sáng tạo có thể được phát huy ở phía mã hóa, nhưng nhất định phải có cách để mọi người cùng hiểu các byte đã được mã hóa

  • Có vẻ đã dính HN hug of death

  • Tôi không chắc việc giảm kích thước 25% có đáng để khiến mọi thiết bị đang có hardware decoder AV1 trở thành lỗi thời trên thực tế hay không. Việc giải mã AV2 sẽ quá sức với các thiết bị đó

    • Các dịch vụ video hiện đại thường mã hóa sẵn nhiều codec, bitrate và kích thước màn hình khác nhau, rồi gửi xuống định dạng phù hợp nhất mà thiết bị khách có thể giải mã
      YouTube có hàng trăm biến thể định dạng:
      https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa
      Thiết bị có hardware decoding AV1 tuy hiếm nhưng sẽ không sớm trở nên lỗi thời
    • Nếu bạn đang host một video có gần 17 tỷ lượt xem, bạn sẽ muốn stream nó với số bit ít nhất có thể:
      https://www.youtube.com/watch?v=XqZsoesa55w
      Khi đó mức thêm 25% ấy trở nên đáng giá
      Không có gì trở nên lỗi thời cả. AV1 sẽ còn tồn tại rất lâu, và YouTube vẫn cung cấp cả bản mã hóa H.264 để hỗ trợ thiết bị cũ
  • Lại có vẻ là HN hug of death, và đang hiện lỗi 429

  • Ban đầu tôi tưởng là nói về Dave2D

    • Có vẻ tên này lấy theo dav1d, nhưng dù vậy đây vẫn là một xung đột tên gọi khá xui xẻo
  • Có vẻ blog đã bị HN hug of death đánh sập
    Hiện ra thông báo Actioning this file would cause "jbkempf.com//blog/2026/dav2d/" to exceed the per-day file actions limit of 160000 actions, try again later; có bản sao nào ở đâu không?

  • Tôi không rõ câu nói cải thiện khoảng 25% so với AV1 và câu nói giải mã AV2 phức tạp hơn khoảng 5 lần so với AV1 lần lượt có nghĩa gì, và liệu chúng có thể đem so sánh trực tiếp với nhau hay không

    • Tôi hiểu đó là nén tốt hơn 25%
      Nghĩa là chất lượng cần 10Mbps ở AV1 thì với AV2 chỉ cần 8Mbps
      Tuy nhiên để đổi lấy mức lợi 25% đó thì cần năng lực tính toán gấp 5 lần
    • AV2 tiết kiệm 25% băng thông với cái giá là độ phức tạp giải mã tăng 5 lần
    • Tệp nhỏ hơn nhưng giải mã khó hơn
  • Bài liên quan: The AV2 Video Standard Has Released (Final v1.0 Specification)
    https://news.ycombinator.com/item?id=48340910