By specifying the capabilities of operations in a uniform way, our framework can correctly combine operations to convert arbitrary input formats to arbitrary output formats. We first provide a few definitions. Transcoding takes a data object in a format that is convenient for its supplier, and converts it into a data object in a format that is convenient for its consumer. 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 their 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 is that different transcoders can be composed to perform all transcoding operations possible by chaining 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.