Feature Completeness: Recommended Interfaces

The following table lists the Windows Imaging Component (WIC) interfaces RAW codecs should implement.

Interface Required for Description
IWICBitmapDecoder Decoders Represents the starting point for decoding an image file. Provides access to container-level properties like thumbnails, frames, and palette.
IWICBitmapFrameDecode Decoders Represents a specific image frame within the container that provides access to frame-level properties. This is the interface that decodes the actual image bits.
IWICMetadataBlockReader Decoders Required for enumerating and iterating through metadata blocks and invoking the appropriate metadata readers when reading from an image file.

NOTE

If the RAW container format is TIFF compatible or uses standard IFDs or IRBs to store EXIF or XMP metadata, codec authors can choose to invoke the built-in metadata readers rather than writing their own.

IWICBitmapSourceTransform Decoders Allows the caller to specify desired scaling, cropping, rotation, or pixel format for the decoded image, which can significantly improve decoder performance. For example, Microsoft's JPEG and Wireless Datagram Protocol (WDP) decoders use a pyramid optimization scheme to achieve faster decoding when the target bitmap is smaller than the source bitmap. Windows Vista (and later) will attempt to use this interface to extract a "fast" preview from a RAW image whenever the embedded preview is missing or less than 1,024 pixels in its largest dimension.
IWICDevelopRaw Decoders Required for RAW formats. Exposes parameters that are specific to RAW image processing. RAW codecs should support as many of these parameters as apply to the codec.
IWICBitmapEncoder Encoders Represents the starting point for encoding an image file. This interface is used for setting container-level properties, such as thumbnails, frames, and palette. It is also required to invoke a metadata writer to enable metadata persistence to the image file. For these reasons, this interface is necessary even if encoding the primary bitmap to the RAW format is not supported.
IWICBitmapFrameEncode Encoders Represents a specific image frame within the container. This interface is used to encode the actual image bits and to set per-frame metadata and properties.
IWICMetadataBlockWriter Encoders Required for iterating through metadata blocks and invoking the appropriate metadata writers when serializing an image file.

NOTE

If the RAW container format is TIFF-compatible, codec authors can choose to invoke the built-in metadata writers rather than writing their own.

 

Conceptual

Windows Imaging Component Overview

WIC Guidelines for Camera RAW Image Formats

How to Write a WIC-Enabled CODEC