Implementieren eines WIC-Enabled-Decoders
Die Implementierung eines WIC-Decoders (Windows Imaging Component) erfordert das Schreiben von zwei Klassen. Die Schnittstellen in diesen Klassen entsprechen direkt den Decoderzuständigkeiten, die im Abschnitt Decodierung der Windows-Imaging-Komponente beschrieben sind.
Eine der Klassen stellt Dienste auf Containerebene bereit und implementiert die IWICBitmapDecoder-Schnittstelle . Wenn Ihr Imageformat Metadaten auf Containerebene unterstützt, müssen Sie auch die IWICMetadataBlockReader-Schnittstelle für diese Klasse implementieren. Es wird empfohlen, die IWICBitmapCodecProgressNotification-Schnittstelle sowohl auf dem Decoder als auch auf dem Encoder zu unterstützen, um eine bessere Benutzererfahrung zu unterstützen.
Die andere Klasse, die Sie implementieren, stellt Dienste auf Frameebene bereit und führt die eigentliche Decodierung der Bildbits für jeden Frame im Container durch. Diese Klasse implementiert die IWICBitmapFrameDecode-Schnittstelle und die IWICMetadataBlockReader-Schnittstelle . Wenn Sie einen Decoder für ein Unformat schreiben, implementieren Sie auch die IWICDevelopRaw-Schnittstelle für diese Klasse. Zusätzlich zu den erforderlichen Schnittstellen wird dringend empfohlen, die IWICBitmapSourceTransform-Schnittstelle in dieser Klasse zu implementieren, um die bestmögliche Leistung für Ihr Bildformat zu ermöglichen.
Eines der von WIC bereitgestellten Objekte ist imagingFactory. Sie verwenden häufig die IWICComponentFactory-Schnittstelle für dieses Objekt, um verschiedene Komponenten zu erstellen. Da es häufig verwendet wird, sollten Sie einen Verweis darauf als Membereigenschaft sowohl für Ihre Decoder- als auch für die Encoderklasse beibehalten.
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);
Zugehörige Themen
-
Konzept