Dav2d
(jbkempf.com)- dav2d, VideoLAN topluluğu tarafından geliştirilen AV2 için yüksek hızlı bir dekoder; amaç, uygulamalarda, tarayıcılarda ve işletim sistemlerinde doğrudan kullanılabilecek bir uygulama sunmak
- AV2, AV1'in halefi olan telifsiz bir kodek; yaklaşık %25 verimlilik artışı gözlemlense de dekodlama karmaşıklığı AV1'in yaklaşık 5 katına ulaşıyor
- dav1d, AV1'in yaygınlaşmasının ilk döneminde yüksek hızlı yazılım dekoderi rolünü üstlendiği gibi, dav2d de prodüksiyon kalitesinde bir dekoderi spesifikasyonun erken aşamasından itibaren hazırlıyor
- Mevcut ağaçta AVM v15 dekoderi işlevsel olarak tamamlanmış durumda ve 8 bit ile 10 bit desteği sunuyor; odak doğruluk, uyumluluk ve optimizasyon üzerinde
- x86 AVX2, ARM NEON, erken aşama RISC-V çalışmaları ve checkasm doğrulaması sayesinde mimariye özgü optimizasyonlar hızlı ve güvenli biçimde ilerletiliyor
dav2d'nin amacı ve arka planı
- dav2d, VideoLAN topluluğu üyeleri tarafından geliştirilen yeni AV2 kodeki için yüksek hızlı bir dekoder
- Depo birkaç hafta önce açıldı ve AV2 ilk resmi spesifikasyon sürümünü yayımladığı sırada projenin amacı ile durumu da paylaşıldı
- dav2d, AV1 dekoderi olan dav1d'nin devamı niteliğinde
- Hedef, gerçek uygulamalarda, medya oynatıcılarda, tarayıcılarda, test araçlarında ve işletim sistemlerinde kullanılabilecek küçük, hızlı, taşınabilir ve doğru bir dekoder sunmak
- “Bir kodek, herkes onu dekode edebilene kadar gerçekten var olmaz” yaklaşımıyla, yalnızca spesifikasyon değil; derlenebilir, test edilebilir, benchmark yapılabilir ve entegre edilebilir bir uygulama da önem kazanıyor
AV2 ve dekodlama zorluğu
- AV2, Alliance for Open Media'nın en yeni telifsiz video kodeki ve AV1'in halefi
- AV2 spesifikasyonu herkese açık
- AV1, 2018'de kesinleşti ve tarayıcılarda, mobil cihazlarda, işletim sistemlerinde, TV'lerde, akış servislerinde ve video uygulamalarında geniş çapta dağıtılan bir video kodeki haline geldi
- AV2; tahmin, dönüşüm, entropi kodlama, filtreleme ve kroma işleme genelinde yeni kodlama araçları ekleyerek sıkıştırma verimliliğini artırmayı sürdürüyor
- Test koşullarına göre değişse de AV1'e kıyasla yaklaşık %25 iyileşme sıkça gözlemleniyor; bazı değerlendirmelerde daha büyük kazanımlar da görülüyor
- AV2 dekodlaması, AV1'den yaklaşık 5 kat daha karmaşık; bu nedenle mevcut donanımda yalnızca yazılımla gerçek zamanlı dekodlama için mimariye özgü optimizasyonlar gerekiyor
- Bu karmaşıklık nedeniyle dav2d geliştirmesi, spesifikasyonun oturmasını beklemeden erken başlatıldı
dav1d'den dav2d'ye uzanan çizgi
- dav2d'nin çıkış noktası, dav1d ile edinilen erken dönem deneyimlere dayanıyor
- AV1 kesinleştiğinde, özel donanım dekodlamasının yeterince hızlı biçimde ve yeterince çok cihaza yayılmayabileceği öngörülüyordu; bu yüzden yüksek hızlı bir yazılım dekoderine ihtiyaç vardı
- O dönemde AOM topluluğunun bir kısmı donanım uygulamaları ve referans dekoderin yeterli olacağını düşünse de, tarayıcılar, medya oynatıcılar, işletim sistemleri ve mobil cihazlar için özel donanım yaygınlaşmadan önce prodüksiyon kalitesinde bir dekoder gerekliydi
- Sonrasında AOM da erken geliştirme sürecinin bir bölümünü destekledi ve Alliance üyelerinin bir kısmı çalışmaya katılarak dav1d ortaya çıktı
- Yüksek hızlı yazılım dekoderi ihtiyacı beklenenden daha büyük oldu ve dav1d bugün en yaygın dağıtılan AV1 yazılım dekoderi haline geldi
- dav1d; VLC, FFmpeg, mpv, Firefox, Chrome, Safari, Android, Windows, Linux ve çeşitli uygulama ile platformlarda kullanılıyor
- dav1d ayrıca AV1 dağıtımı, testi ve optimizasyonu yapan birçok geliştirici için referans AV1 dekoder uygulaması olarak da kullanılıyor
- dav1d'nin geçmişi Introducing dav1d, the road to the first release, First release, dav1d 1.2, 1.5 “Sonic” yazılarında özetleniyor
- AV2 tarafında da aynı rol daha erken bir aşamadan itibaren hazırlanıyor
Mevcut uygulama durumu
- Mevcut dav2d ağacı, AVM v15 dekoderini işlevsel olarak tamamladı ve hem 8 bit hem de 10 bit dekodlamayı destekliyor
- Kodekin ana bileşenlerinin büyük bölümü uygulanmış durumda ve optimizasyon aşamasına girildi
- bitstream parsing
- frame ve sequence header
- entropi dekodlama ve CDF işleme
- intra prediction
- inter prediction ve referans motion vector
- dönüşümler
- CCTX ve CfL
- deblocking
- CDEF
- Wiener filtering
- film grain sentezi
- AV2 ekosistemi henüz erken aşamada olsa da dav2d şimdiden çalışan bir dekoder ve boş bir tanıtım deposu olmanın ötesine geçmiş durumda
- Mevcut çalışmanın önemli bir bölümü doğruluk, uygunluk, optimizasyon ve platform desteği üzerine yoğunlaşıyor
- dav2d'nin hızlı ilerlemesinin arkasında, dav1d'de biriken threading, SIMD yapısı, test, taşınabilirlik ve API tasarımı deneyimi bulunuyor
- AV2 için önemli ölçüde yeni dekoder kodu gerekiyor ancak dav1d geliştirme sürecinde kazanılan deneyimin büyük kısmı dav2d'ye doğrudan uygulanabiliyor
Performans optimizasyonu ve doğrulama
- x86 tarafında çeşitli ters dönüşüm boyutları için AVX2 kodu eklendi; CCTX, deblock, intra prediction ve CfL ile ilgili yol çalışmaları da sürüyor
- ARM tarafında AArch64 NEON çalışmaları; entropi dekodlama, SAD, intra prediction, palet tahmini, DC predictor, smooth predictor ve hareketle ilgili işlevlere uygulanıyor
- arm32 çalışmaları da kısmen başlamış durumda
- RISC-V çalışmaları erken aşamada; mevcut intra prediction ve motion compensation assembly kodunu yeniden etkinleştirme ve uyarlama yönünde ilerliyor
- Optimizasyon akışı dav1d'ye benziyor
- önce temiz bir C uygulaması hazırlanıyor
- ardından doğrulama altyapısı kuruluyor
- sonra kritik hot path'lere mimariye özgü optimize kod ekleniyor
- dav1d geliştirilirken oluşturulan checkasm, optimize uygulamaları C uygulamasıyla karşılaştırarak doğrulayan ve benchmark yapan bir framework
- dav2d, bu altyapıyı ilk günden kullandığı için dav1d'nin benzer aşamasına göre daha hızlı ilerliyor
- Mevcut ağaç; ters dönüşümler, motion compensation, film grain, CfL ve referans motion vector kodu için checkasm kapsamı içeriyor
Açık kaynak geliştirme modeli ve sonraki adımlar
- dav2d, dav1d gibi açık kaynaklı bir proje olarak geliştiriliyor
- Dekoder, dav1d ile aynı BSD tarzı lisansla dağıtılıyor; bu da hem açık kaynak hem de kapalı kaynak uygulamalara entegrasyonu kolaylaştırıyor
- VideoLAN projelerinin çoğunda olduğu gibi geliştirme ilk günden itibaren açık biçimde yürütülüyor
- 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
- Açık uygulama; birlikte çalışabilirlik, spesifikasyonun bağımsız doğrulanması, daha kolay deney yapma ve ekosistem için ortak bir temel sağlıyor
- Bundan sonra da AV2 spesifikasyonunu takip etme, uygunluğu iyileştirme, test kapsamını genişletme, x86 ve ARM için ek optimizasyonlar ve RISC-V çalışmaları gerekecek
- Daha yüksek bit derinliğinde performans iyileştirmeleri, threading geliştirmeleri, bellek kullanımının azaltılması ve gelecekteki sürümlere hazırlık da yapılacak işler arasında
- dav1d, donanım desteği yaygınlaşmadan önce AV1'i pratik hale getirdiyse, dav2d de AV2 için aynı rolü hedefliyor
1 yorum
Hacker News yorumları
Too Many Requests
Arşiv kopyaları burada görülebilir:
https://web.archive.org/web/20260531130034/https://jbkempf.com/blog/2026/dav2d/
https://archive.md/ln5UE
Too Many Requestsgörünüyor ve dosya sahibinin kısa süreli bant genişliği sınırını aştığını, ayrıca günlük 160000 işlem sınırının da geçildiğini söyleyen bir mesaj çıkıyorAV1 yazılım çözme zaten çok ağır; bu yüzden AV2 çözme kıyaslamaları bir sonraki gerçekten ilginç ya da korkutucu gösteri olabilir gibi duruyor
OBS kayıt ve kodlama işleri için kullanılan bir PC'ye yardımcı kart olarak takıp kullanmak da mümkündü
AV2 destekleyen yeni nesil ürün ailesinde de benzer seçenekler çıkarsa iyi olur; bugünlerde video üretimi ve yayıncılık çok yaygın olduğu için buna daha da fazla ihtiyaç var gibi görünüyor
Bir codec spesifikasyonu, sahada geliştirilmiş en az bir çözücü olmadan tamamlanmış sayılmaz. Yani referans uygulama + 1 uygulama gerekir ve çoğu zaman fiilî spesifikasyon sahadaki uygulama olur
90'larda çocukken MPEG1 spesifikasyonunu okurken karmaşık sistemlerin nasıl tanımlandığına dair gözüm açılmıştı
Medya kodlama standartlarında zamanın büyük kısmı kodlanmış baytların nasıl yorumlanacağını anlatmaya gider ve bunu dahiyane bulmuştum
Çözme işlemi betimleyici olarak tanımlanabilir; kodlamayı ise kurallı biçimde bağlamak gerekmez
Yaratıcılık kodlama tarafında ortaya çıkabilir, ama kodlanmış baytları birlikte anlayabilmenin yolu mutlaka sağlanmalıdır
Görünüşe göre HN hug of death yaşanmış
Boyutu %25 küçültmenin, AV1 donanım çözücüsüne sahip tüm cihazları fiilen eski hale getirecek kadar değerli olup olmadığından emin değilim. Çünkü AV2 çözme bu cihazlar için fazla ağır olacaktır
YouTube'da yüzlerce biçim varyantı var:
https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa
AV1 donanım çözme destekli cihazlar nadir olsa da uzun süre eski sayılmayacaktır
https://www.youtube.com/watch?v=XqZsoesa55w
O ek %25 bu noktada değerli hale gelir
Hiçbir şey eski hale gelmez. AV1 uzun süre kalacaktır ve YouTube eski cihazları desteklemek için hâlâ H.264 kodlamaları da sunuyor
Yine HN hug of death olmuş gibi ve 429 hatası görünüyor
Ben bunun Dave2D ile ilgili olduğunu sandım
Görünüşe göre blog HN hug of death yüzünden çökmüş
Actioning this file would cause "jbkempf.com//blog/2026/dav2d/" to exceed the per-day file actions limit of 160000 actions, try again latermesajı çıkıyor; bunun bir kopyası bir yerde var mı?https://web.archive.org/web/20260531115337/https://jbkempf.com/blog/2026/dav2d/
AV1'e kıyasla yaklaşık %25 iyileşme denmesiyle, AV2 çözmenin AV1'den yaklaşık 5 kat daha karmaşık olduğunun söylenmesi tam olarak ne anlama geliyor, bunlar birbiriyle karşılaştırılabilir mi pek bilmiyorum
AV1'de 10Mbps ile elde edilen kaliteye AV2'de 8Mbps ile ulaşılabileceği anlamına geliyor
Ancak bu %25 kazanç için 5 kat daha fazla hesaplama gücü gerekiyor
İlgili gönderi: The AV2 Video Standard Has Released (Final v1.0 Specification)
https://news.ycombinator.com/item?id=48340910