A flexible interface that enables an application to communicate directly
with processing modules to easily control the processing of streaming
data. The interface provides basic commands for applications to use to
communicate with processing modules and provides the flexibility to adapt
to changing standards. The interface enables an application to set the
type of input and output data formats of a processing module and control
when the processing module processes input data and generates output
data. The processing modules enumerate its capabilities by category, by
media type, or by both category and media type. Processing modules are
registered by class ID, category, whether the application needs a key,
the number and types of input data types, and the number and type of
output data types to register.