16 puan yazan lifthrasiir 2022-09-14 | 3 yorum | WhatsApp'ta paylaş

JPEG XL, ISO/IEC 18181 olarak standartlaştırılmış yeni nesil bir görüntü dosyası formatıdır. GeekNews'te de daha önce bir kez paylaşılmıştı. https://tr.news.hada.io/topic?id=3788

Bu aralar tarayıcılar dışında neredeyse tüm görüntüyle ilgili araçlara destek ekleniyor gibi görünüyor; referans uygulama olan libjxl'in kalitesi yüksek olduğu için çoğu durumda doğrudan o kullanılıyor. Ancak libjxl'in kendisi, on binlerce satırlık C++ ile yazılmış oldukça büyük bir yazılım olduğu için derlemesi pek kolay değil ve libjxl önce yapılıp spesifikasyon sonradan hazırlandığından, spesifikasyon ile libjxl'in birbiriyle uyuşmadığı epey yer de var (hatta standartlaştırıldıktan sonra bile durum böyle...). Üstelik JPEG XL kodlayıcısı yapmak, bazı özellikleri desteklemekle yetinilebildiği için nispeten kolay; ama dekoderin tüm özellikleri desteklemesi gerektiğinden, uzun süre libjxl dışında tek bir pikseli bile decode edebilen başka bir dekoder hiç yoktu.

J40, bu durumu aşmayı denemek için ve emeklilik sonrası yeniden alışma sürecinin bir parçası olarak başladığım bir projeydi; tam 4 ay sürdü... Şu anki J40, (Jon Sneyers'ın ifadesiyle) tüm spesifikasyonun yaklaşık %80'ini C99 ile uygulamış durumda; bu kadar büyüyeceğini bilseydim en baştan Rust ile yazardım. Neyse, bu projenin JPEG XL ile ilgilenenlere yardımcı olmasını umuyorum.

3 yorum

 
qwerty 2022-09-17

https://github.com/lifthrasiir/j40/…

Burada negatif kontrolü yapmak gerekiyor gibi görünüyor~~

j40__ans_table fonksiyonunda da sizeof(int16_t) * (size_t) table_size değerini bir değişkende saklayıp D dizisine erişmeden önce kontrol etmek gerekiyor gibi görünüyor.

Özellikle case 2'de 0 <= bias_size <= alpha_size <= table_size <= sizeof(int16_t) * (size_t) table_size koşulu için J40__SHOULD kullanmak gerekli gibi görünüyor.

Harika projeyi keyifle inceledim~

 
lifthrasiir 2022-09-19

Acaba fuzzer çalıştırdınız mı? haha API nispeten daha sonra kararlaştırıldığı için fuzzer’ı çalıştırmak gecikti; ben de ancak şimdi çalıştırıyorum, muhtemelen tahmin edilebilir yerlerde çok patlayacaktır... Bilginize, ilgili durum fuzzing sürecinde tespit edildi ve yakında düzeltmeyi yüklemeyi planlıyorum.

 
xguru 2022-09-14

Vay canına, harika görünüyor. Yaptığınız işi her zaman destekliyorum!!