概要
- Firefox 157で JPEG XLデコード が全プラットフォームでデフォルト有効化予定
- jxl-rs(Rust製) デコーダを採用し、Nightlyでは既に有効
- アニメーションJXL もサポート済み
- パフォーマンスやバッテリー消費に関する懸念も指摘
- ロスレスJPEG XL のデコード速度がWebPより大幅に遅いという報告
Firefox 157におけるJPEG XLデコードのデフォルト有効化
- Firefox 157 から全プラットフォームで JPEG XL デコードをデフォルト有効化予定
- 現在は image.jxl.enabled 設定でNightlyのみデフォルトON
- Firefox Labs でバージョン152以降、全チャンネルにチェックボックスを設置
- Rust製の jxl-rs デコーダを利用
- バグ報告ページ: Bugzilla #2065096
- 標準規格: ISO/IEC 18181
- 標準化団体: ISO/IEC
- 対応プラットフォーム: 全プラットフォーム
- 標準化ポジション: GitHub Issue #522(中立)
- TAGレビュー: w3ctag/design-reviews #633(懸念はあるが満足)
- プロトタイプ意図: Google Groups
- 他ブラウザ状況:
- Safari は17.0(2023年)で搭載済み
- Chrome はRustライブラリを使いフラグで有効化可能、正式リリース予定なし
JPEG XLデコーダの進捗・パフォーマンス
- jxl-rs 0.6.0 でマルチスレッドデコード対応
- Firefox独自パッチにより更なる最適化を予定
- ベンチマーク結果:Safari(C++ libjxl)よりやや高速なケースも
- 他の画像フォーマットとの比較では、大きな画像で同等、小さな画像では差が広がる傾向
- アニメーション や プログレッシブ表示 に完全対応
- HDR画像はSDR表示(他形式と同様)、ただしトーンマッピングはJXLが優秀
- Safariはプログレッシブレンダリングやアニメーション非対応
テストと品質管理
- wpt jpegxlディレクトリ で様々なデコード正確性をカバー
- ビット深度、アルファ、グレースケール、CMYK、カラーマネジメント、画像の向き、コーディングツール、HTML・CSSでの利用
- wptで表現できない部分は geckoテスト を追加
- 約30件のgtest(チャンク・インクリメンタルデコード、アニメーションフレーム数、デコード時のダウンスケール、不正ファイルなど)
- mochitest(プログレッシブレンダリング、テレメトリ)
- reftest、Perfherderへのデコードベンチマーク
- fuzzing チームによるセキュリティ検証も実施済み
アニメーションJXLのサポート状況
- Animated JXL は既にサポート済み
- Firefox 157で正式に利用可能
ロスレスJPEG XLのパフォーマンス懸念
- ロスレスJPEG XL は WebP と比較してデコード速度が極めて遅い
- 例:WebPの約30倍の時間が必要(同じ画像・同じマシン条件で計測)
- ファイルサイズは約10%小さいが、バッテリー消費やユーザー体験への悪影響が懸念
- 提案 :Firefox 157ではロスレスJPEG XLのみ除外し、ロッシーのみデフォルト有効化を検討すべき
- 計測方法 :
- jxl-rs(Rust)、libjxl(C++)ともにシングルスレッドで比較
- コマンドラインベンチマークツール(hyperfine)利用
- WebPデコーダ(dwebp)との比較で30倍の速度差を確認
- Rustコードの最適化だけでは根本的な解決にならないとの指摘
今後の課題と展望
- ロスレスJPEG XL のデコード速度改善が今後の課題
- ユーザー体験 や バッテリー消費 への影響を考慮した段階的導入の必要性
- パフォーマンス・品質のバランスを見ながら、今後の正式リリース内容を調整予定