Udostępnij przez


Implementowanie dekodera WIC-Enabled

Implementowanie dekodera składnika Windows Imaging Component (WIC) wymaga pisania dwóch klas. Interfejsy w tych klasach odpowiadają bezpośrednio obowiązkom dekodera opisanym w sekcji dekodowania części How The Windows Imaging Component Works.

Jedna z klas udostępnia usługi na poziomie kontenera i implementuje interfejs IWICBitmapDecoder. Jeśli format obrazu obsługuje metadane na poziomie kontenera, należy również zaimplementować interfejs IWICMetadataBlockReader w tej klasie. Zaleca się obsługę interfejsu IWICBitmapCodecProgressNotification zarówno w dekoderze, jak i koderze, aby zapewnić lepsze wrażenia użytkownika.

Druga klasa, którą zaimplementujesz, udostępnia usługi na poziomie ramki i wykonuje rzeczywiste dekodowanie bitów obrazu dla każdej ramki w kontenerze. Ta klasa implementuje interfejs IWICBitmapFrameDecode oraz interfejs IWICMetadataBlockReader. Jeśli piszesz dekoder dla formatu nieprzetworzonego, zaimplementujesz również interfejs IWICDevelopRaw w tej klasie. Oprócz wymaganych interfejsów zdecydowanie zaleca się zaimplementowanie interfejsu IWICBitmapSourceTransform w tej klasie, aby zapewnić jak najlepszą wydajność dla twojego formatu obrazu.

Jednym z elementów udostępnianych przez system WIC jest ImagingFactory. Do utworzenia różnych składników często używa się interfejsu IWICComponentFactory w tym obiekcie. Ponieważ jest on często używany, należy zachować odwołanie do niego jako właściwość składową zarówno w klasach dekodera, jak i kodera.

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);

koncepcyjne

jak działa składnik Windows Imaging

interfejsy dekodera

Jak napisać WIC-Enabled CODEC

Składnik programu Windows Imaging — omówienie

Przegląd metadanych WIC

kodowanie — omówienie