实现WIC-Enabled解码器

实现Windows映像组件 (WIC) 解码器需要编写两个类。 这些类上的接口直接对应于解码器职责,该解码器职责在“Windows映像组件的工作原理”部分中概述

其中一个类提供容器级服务并实现 IWICBitmapDecoder 接口。 如果映像格式支持容器级元数据,则还必须在此类上实现 IWICMetadataBlockReader 接口。 建议支持解码器和编码器上的 IWICBitmapCodecProgressNotification 接口,以支持更好的用户体验。

你将实现的另一个类提供帧级服务,并针对容器中的每个帧执行图像位的实际解码。 此类实现 IWICBitmapFrameDecode 接口和 IWICMetadataBlockReader 接口。 如果要为原始格式编写解码器,则还会在此类上实现 IWICDevelopRaw 接口。 除了所需的接口外,强烈建议在此类上实现 IWICBitmapSourceTransform 接口,以便为图像格式启用最佳性能。

WIC 提供的对象之一是 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 CODEC

Windows映像组件概述

WIC 元数据概述

编码概述