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);
関連トピック
-
概念