实现WIC-Enabled解码器

(WIC) 解码器实现 Windows 映像组件需要编写两个类。 这些类上的接口直接对应于 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 元数据概述

编码概述