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

Введение

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

Один из классов предоставляет службы на уровне контейнера и управляет сериализацией отдельных кадров образов в контейнере. Этот класс реализует интерфейс IWICBitmapEncoder . Если формат изображения поддерживает метаданные уровня контейнера, необходимо также реализовать интерфейс IWICMetadataBlockWriter в этом классе.

Другой класс предоставляет службы на уровне кадра и выполняет фактическое кодирование битов изображения для каждого кадра в контейнере. Он также выполняет итерацию по блокам метаданных для каждого кадра и запрашивает соответствующие записи метаданных для сериализации блоков. Этот класс реализует интерфейс IWICBitmapFrameEncode и интерфейс IWICMetadataBlockWriter . Этот класс должен иметь элемент IStream, который класс уровня контейнера инициализирует при создании экземпляра, в котором метод Commit будет сериализовать данные кадра.

В некоторых случаях, например в необработанных форматах, автор кодека может не захотеть, чтобы приложения могли кодировать или перекодировать их в необработанный формат, так как цель необработанного файла — содержать данные датчика точно так, как они поступили с камеры. В случаях, когда автор кодека не хочет включать кодирование, по-прежнему необходимо реализовать зачаточные кодировщики, чтобы включить добавление метаданных. В этом случае кодировщик должен поддерживать только те методы, которые необходимы для записи метаданных, и может копировать нетронутые биты изображений из декодера.

Reference

IWICBitmapEncoder

Основные понятия

Реализация IWICDevelopRaw

Интерфейсы кодировщика

Написание кодека WIC-Enabled

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