A method and apparatus for providing plug-in media decoders. Embodiments provide a "plug-in"
decoder architecture that allows
software decoders to be transparently downloaded, along with media data. User applications are able to support
new media types as long as the corresponding plug-in decoder is available with the media data. Persistent storage requirements are decreased because the downloaded decoder is transient, existing in application memory for the duration of execution of the user application. The architecture also supports use of plug-in decoders already installed in the user computer. One embodiment is implemented with object-based class files executed in a
virtual machine to form a media application. A media
data type is determined from incoming media data, and used to generate a class name for a corresponding codec (coder-decoder) object. A class path vector is searched, including the source location of the incoming media data, to determine the location of the codec class file for the given class name. When the desired codec class file is located, the
virtual machine's class
loader loads the class file for integration into the media application. If the codec class file is located across the network at the source location of the media data, the class
loader downloads the codec class file from the network. Once the class file is loaded into the
virtual machine, an instance of the codec class is created within the media application to decode / decompress the media data as appropriate for the media
data type.