Поделиться через


Реализация декодера 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 Imaging Component

Обзор метаданных WIC

Обзор кодирования