16 poin oleh lifthrasiir 2022-09-14 | 3 komentar | Bagikan ke WhatsApp

JPEG XL adalah format berkas gambar generasi berikutnya yang distandardisasi sebagai ISO/IEC 18181. Sepertinya ini juga pernah muncul sekali di GeekNews. https://id.news.hada.io/topic?id=3788

Belakangan ini, tampaknya dukungan sedang ditambahkan ke hampir semua alat yang terkait dengan gambar kecuali browser, dan karena implementasi referensi libjxl berkualitas tinggi, banyak kasus langsung menggunakannya apa adanya. Namun, libjxl sendiri adalah perangkat lunak yang cukup besar dengan ratusan ribu baris kode dalam C++, sehingga build-nya tidak sederhana, dan karena libjxl dibuat lebih dulu sebelum spesifikasinya disusun, ada cukup banyak bagian di mana spesifikasi dan libjxl tidak cocok (bahkan setelah distandardisasi pun masih seperti ini...). Selain itu, membuat encoder JPEG XL relatif mudah karena cukup mendukung sebagian fungsi saja, tetapi decoder harus mendukung semua fungsi, sehingga untuk waktu yang cukup lama bahkan tidak ada decoder lain selain libjxl yang bisa mendekodekan satu piksel pun.

J40 adalah proyek yang saya mulai untuk mencoba mengatasi situasi itu sekaligus sebagai semacam rehabilitasi setelah pensiun, dan ternyata butuh waktu sampai 4 bulan penuh... Saat ini J40 (meminjam ungkapan dari Jon Sneyers) telah mengimplementasikan sekitar 80% dari keseluruhan spesifikasi dalam C99, dan kalau tahu akan sebesar ini saya seharusnya menulisnya dengan Rust sejak awal. Bagaimanapun, saya berharap proyek ini bisa membantu siapa pun yang tertarik pada JPEG XL.

3 komentar

 
qwerty 2022-09-17

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

Sepertinya bagian ini perlu pengecekan nilai negatif~~

Di fungsi j40__ans_table juga sepertinya perlu menyimpan sizeof(int16_t) * (size_t) table_size ke variabel lalu melakukan pengecekan sebelum mengakses array D.

Terutama pada case 2, sepertinya perlu memakai J40__SHOULD untuk kondisi 0 <= bias_size <= alpha_size <= table_size <= sizeof(int16_t) * (size_t) table_size.

Saya sangat menikmati melihat proyek yang keren ini~

 
lifthrasiir 2022-09-19

Apakah Anda sempat menjalankan fuzzer? wkwkwk Karena API-nya diputuskan relatif belakangan, kami jadi terlambat menjalankan fuzzer dan baru sekarang melakukannya, jadi kemungkinan besar akan banyak yang bermasalah di titik-titik yang bisa diprediksi... Sebagai informasi, hal ini sudah terkonfirmasi dalam proses fuzzing dan kami berencana segera mengunggah perbaikannya.

 
xguru 2022-09-14

Wah, keren sekali. Saya selalu mendukung pekerjaan yang Anda lakukan!!