Реализация декодера WIC-Enabled

Для реализации декодера компонента образов Windows (WIC) требуется написание двух классов. Интерфейсы в этих классах напрямую соответствуют обязанностям декодера, описанным в разделе Декодированиестатьи How The Windows Imaging Component Работает.

Один из классов предоставляет службы уровня контейнера и реализует интерфейс 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

Общие сведения о компоненте обработки образов Windows

Общие сведения о метаданных WIC

Общие сведения о кодировке