Proč má referenční dekodér 100 tisíc řádků kódu? To je ten formát tak složitý?
Přijde mi, že půlku těch souborů s příponou cc
tvoří testy a enkodér.
A pak to má v soubě podporu pro asi dalších 8 grafických formátů (viz adresář lib/extras
).
Když to všechno odfiltruji
find . -name '*.cc' | grep -v 'test\|enc_\|/extras/\|/render_pipeline/' | xargs wc -l
tak mi zbyde 39 tisíc, což mi i tak přijde dost. To je ten formát tak složitý?
Protože nemá. Viz Jon Sneyers: https://x.com/jonsneyers/status/1831258445409894858'
That count includes the encoder, jpeg bitstream reconstruction, jpegli, various tools like metrics, benchmarking tools, hdr conversion tools, etc. Just the decoder alone is way smaller.
Just the libjxl library (encoder + decoder) is 38k lines of code, see https://app.codecov.io/gh/libjxl/libjxl.
The encoder is probably a bit bigger than the decoder (since it doesn't just implement the forward version of everything, it also has heuristics etc), so maybe 15-20k lines?