WIC-Enabled エンコーダーの実装

はじめに

Windows Imaging Component (WIC) エンコーダーを実装するには、WIC デコーダーを実装する場合も同様に、2 つのクラスを記述する必要があります。 これらのクラスのインターフェイスは、「Windows イメージング コンポーネントのしくみ」の エンコード セクションで説明されているエンコーダーの役割に直接対応しています。

クラスの 1 つはコンテナー レベルのサービスを提供し、コンテナー内の個々のイメージ フレームのシリアル化を管理します。 このクラスは、 IWICBitmapEncoder インターフェイスを 実装します。 イメージ形式でコンテナー レベルのメタデータがサポートされている場合は、このクラスに IWICMetadataBlockWriter インターフェイスも実装する必要があります。

もう 1 つのクラスは、フレーム レベルのサービスを提供し、コンテナー内の各フレームのイメージ ビットの実際のエンコードを行います。 また、フレームごとにメタデータ ブロックを反復処理し、ブロックをシリアル化するための適切なメタデータ ライターを要求します。 このクラスは、 IWICBitmapFrameEncode インターフェイスと IWICMetadataBlockWriter インターフェイスを 実装します。 このクラスには、コンテナー レベルのクラスがインスタンス化時に初期化する IStream メンバーが必要です。このメンバーには、 Commit メソッドがフレーム データをシリアル化します。

生形式などの場合、コーデック作成者は、生ファイルの目的はカメラから来たセンサー データを正確に格納するため、アプリケーションが生形式にエンコードまたは再エンコードできないようにしたい場合があります。 コーデック作成者がエンコードを有効にしたくない場合でも、メタデータの追加を有効にするために、基本的なエンコーダーを実装する必要があります。 その場合、エンコーダーはメタデータの書き込みに必要なメソッドのみをサポートする必要があり、デコーダーから手つかずのイメージ ビットをコピーできます。

リファレンス

IWICBitmapEncoder

概念

IWICDevelopRaw の実装

エンコーダー インターフェイス

WIC-Enabled コーデックを記述する方法

Windows イメージング コンポーネントの概要