このプロジェクトについて

heic-rsは、安全で移植可能、かつC依存関係のないHEIC/HEIF画像デコーダーの純粋なRust実装です。このプロジェクトは「Cツールチェーン不要」のアプローチを重視しており、cmake、pkg-config、libheifなどの外部ライブラリを必要とせずに、標準的なRustツールでビルドできます。unsafeコードは厳しく禁止されており、コンパイラとランタイムチェックによってメモリ安全性が保証され、手動のメモリ管理は行われません。 現在の機能は、主にHEIC形式のコンテナ部分に焦点を当てています。これには、ISOBMFFボックスの解析、EXIFやICCプロファイルなどのメタデータの処理、回転、ミラーリング、クリーンアパーチャーなどの画像プロパティの管理が含まれます。重要な機能の一つは、グリッドの導出とタイルの合成で、これはiPhoneやMacなどのデバイスが撮影した、小さなタイルに分割された大きな画像をデコードするために不可欠です。また、YUVからRGBへのカラー変換も行い、BT.601、BT.709、BT.2020などのさまざまな標準と、クロマアップサンプリング方法をサポートしています。 ただし、現在のステータスに注意が必要です。HEVC静止画デコーダーはまだクレートにリンクされていません。`probe()`関数はファイルメタデータの検査に完全に機能しますが、`decode()`関数はコーデックの境界に達すると`Error::Unsupported`を返します。HEVCデコーダーは別のクレートとして開発中で、将来的に統合される予定です。それまでは、このライブラリはメタデータの解析、コンテナ構造の処理、およびHEVCモジュールが利用可能になった際のピクセルデコーディングの準備に適しています。 このプロジェクトは`no_std`に対応しており、WebAssembly(wasm32-unknown-unknown)にも対応しているため、C依存関係が問題となるブラウザベースの画像処理や組み込みシステムに適しています。MITまたはApache-2.0ライセンスで提供されており、AGPLなどのコピーレフトライセンスを使用する他の純粋なRustデコーダーに対する許容的な代替手段となります。設計は厳格な「SBIO」ルールに従っており、ビジネスロジックはI/Oを行わないため、コアは純粋でテスト可能になっています。セキュリティ機能には、境界チェックされたパーサーと、`max_pixels`によるリソース制限の構成が含まれており、枯渇攻撃を防ぎます。