How prsyahmi/wic_heic works
This is a Windows Imaging Component (WIC) codec that lets Windows imaging clients open HEIC files, with encoder support also implemented. The main workflow is WIC class activation, decoder initialization from an IStream, frame selection, then pixel and metadata access; encoding follows the corresponding WIC encoder and frame interfaces. The graph includes COM registration and the libheif boundary. Unsampled encoder internals are shown as components, but their specific call relationships are left unverified.
Main entry points: HeicBitmapDecoder.cpp WIC Decoder · ComFactory.cpp COM Class Factory · HeicBitmapEncoder.cpp WIC Encoder · dllmain.cpp Codec DLL
Components 15
COM Activation
- Codec DLL
wic_heic/dllmain.cpp - COM Class Factory
wic_heic/ComFactory.cpp - COM Lifetime Counter
wic_heic/ComCounter.cpp - Codec Registration
wic_heic/UtlReg.cpp
HEIC Decoding
- WIC Decoder
wic_heic/HeicBitmapDecoder.cpp - HEIF Stream Reader
wic_heic/HeifStreamReader.cpp - libheif Context
- Decoded Frame
wic_heic/HeicBitmapFrameDecode.cpp - Metadata Reader
wic_heic/HeicMetadataBlockReader.cpp
HEIC Encoding
- WIC Encoder
wic_heic/HeicBitmapEncoder.cpp - Encode Frame
wic_heic/HeicBitmapFrameEncode.cpp - HEIF Stream Writer
wic_heic/HeifStreamWriter.cpp
Codec Support
- Codec Exceptions
wic_heic/HeicException.cpp
Other components
- WIC Client
- Windows Registry
Connections 16
- WIC Client → Codec DLL: activates codec
README.md - Codec DLL → COM Class Factory: requests class factory
wic_heic/dllmain.cpp - Codec DLL → Codec Registration: registers codec
wic_heic/dllmain.cpp - Codec Registration → Windows Registry: writes registrations
- COM Class Factory → WIC Decoder: creates decoder
wic_heic/ComFactory.cpp - COM Class Factory → WIC Encoder: creates encoder
wic_heic/ComFactory.cpp - COM Class Factory → COM Lifetime Counter: tracks lifetime
wic_heic/ComFactory.cpp - WIC Client → WIC Decoder: opens HEIC
README.md - WIC Decoder → HEIF Stream Reader: reads stream
wic_heic/HeicBitmapDecoder.cpp - WIC Decoder → libheif Context: loads context
- WIC Decoder → Decoded Frame: creates frame
wic_heic/HeicBitmapDecoder.cpp - Decoded Frame → libheif Context: decodes pixels
wic_heic/HeicBitmapFrameDecode.cpp - Decoded Frame → Metadata Reader: creates query reader
wic_heic/HeicBitmapFrameDecode.cpp - WIC Client → WIC Encoder: requests encoding
- WIC Encoder → Encode Frame: creates frame
- WIC Encoder → HEIF Stream Writer: writes output