This is an abstract class that encapsulates a main part of ImageProducer functionality
for the images being decoded by the native decoders, like PNG, JPEG and GIF.
It helps to integrate image decoders into producer/consumer model. It provides
functionality for working with several decoder instances and several image consumers
simultaneously.