Реализация декодера 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);
Связанные темы
-
Основные понятия