By specifying the capabilities of each operation in a uniform way, our framework can guarantee that it correctly combines operations to convert arbitrary input formats to arbitrary output formats. To develop our architecture, we first provide a few definitions. Transcoding takes a data object in a format that is convenient for the supplier of the object, and converts it into a data object in a format that is convenient for the consumer of the object. Our architecture is modular, allowing developers to separate functionality into well-defined units. Our architecture is pluggable, meaning that units of functionality might be combined in ways not foreseen by its authors to achieve new transformations.
Some outside entity makes a request to the master transcoder.
The master transcoder arranges for appropriate individual transcoders to perform the work. The result of this breakdown is that different individual transcoders can be composed to perform all transcoding operations possible by chaining the individual transcoders. Each transcoder enumerates one or more transcoding capabilities. Each capability lists an input format and an output format. Before the master transcoder receives a request, some party external to the transcoding system will have determined the object's current format and its desired output format.