WIC-Enabled デコーダーの実装

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

クラスの 1 つはコンテナー レベルのサービスを提供し、 IWICBitmapDecoder インターフェイスを 実装します。 イメージ形式でコンテナー レベルのメタデータがサポートされている場合は、このクラスに IWICMetadataBlockReader インターフェイスも実装する必要があります。 より優れたユーザー エクスペリエンスをサポートするには、デコーダーとエンコーダーの両方で IWICBitmapCodecProgressNotification インターフェイスをサポートすることをお勧めします。

実装するもう 1 つのクラスは、フレーム レベルのサービスを提供し、コンテナー内の各フレームのイメージ ビットの実際のデコードを行います。 このクラスは、 IWICBitmapFrameDecode インターフェイスと IWICMetadataBlockReader インターフェイスを実装します。 未加工の形式のデコーダーを記述する場合は、このクラスに IWICDevelopRaw インターフェイスも実装します。 必要なインターフェイスに加えて、イメージ形式に最適なパフォーマンスを実現するために、このクラスに IWICBitmapSourceTransform インターフェイスを実装することを強くお勧めします。

WIC によって提供されるオブジェクトの 1 つは ImagingFactory です。 このオブジェクトで IWICComponentFactory インターフェイスを頻繁に使用して、さまざまなコンポーネントを作成します。 頻繁に使用されるため、デコーダー クラスとエンコーダー クラスの両方でメンバー プロパティとして参照を保持する必要があります。

IWICImagingFactory* m_pImagingFactory = NULL;
IWICComponentFactory* m_pComponentFactory = NULL;
HRESULT hr;
      
hr = CoCreateInstance(CLSID_WICImagingFactory, NULL,
  CLSCTX_INPROC_SERVER, IID_IWICImagingFactory,
  (LPVOID*) m_pImagingFactory);

hr = m_pImagingFactory->QueryInterface(
  IID_IWICComponentFactory, (void**)&m_pComponentFactory);

概念

Windows イメージング コンポーネントのしくみ

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

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

Windows Imaging コンポーネントの概要

WIC メタデータの概要

エンコードの概要