From Winamp Developer Wiki
Revision as of 07:51, 28 October 2011 by DrO
winamp plugin filename conventions
Most plugin types are identified by Winamp by the filename
- in_*.dll - input plugins
- out_*.dll - output plugins
- gen_*.dll - general purpose plugins
- vis_*.dll - visualizer plugins
- dsp_*.dll - audio effects plugins
- ml_*.dll - media library plugins (loaded by gen_ml.dll)
- pmp_*.dll - portable media player plugins (loaded by ml_pmp.dll... a plugin type loaded by a plugin of a plugin. hah!)
- nsvdec_*.dll - NSV decoder plugins
- enc_*.dll - audio encoder plugins
- W5S (Winamp 5 System) plugins located in c:\program files\winamp\system do not have to follow any special filename convention except for the .w5s file extension
- WAC (Winamp Component) plugins located in c:\program files\winamp\plugins\freeform\wacs do not have to follow any special filename conventions, either, except for the .wac file extension. WAC files are loaded by gen_ff.dll
code naming conventions
- IPC: Inter-Plugin Communications. The constants which define the old SendMessage API are prefixed with IPC_
- Wasabi: Winamp Service Architecture Binary Interface. A system to allow sharing of C++ objects between different plugins and components. Think of it as a very lightweight version of COM.
- Agave: project codename for Winamp 5.12 (when the Wasabi service manager was merged into Winamp 5. It may or may not have involved a lot of tequila). The name "Agave" is used in the SDK to refer to Wasabi components that are unique to Winamp's media platform. For example: the Wasabi Language API could be used in other (non-Winamp) Wasabi applications, but the Agave Playlist Manager makes very little sense outside of a media application.
Wasabi interfaces are all built using the Dispatchable base class. A naming convention has been established to help developers understand the intent of the interface.
- ifc: interface. Wasabi interfaces not associated with the service manager are prefixed with this, e.g. ifc_window
- api: Wasabi interfaces which expose a singleton object meant to be used as a global API. e.g. api_application
- svc: service. Wasabi interfaces which define a service are prefixed with this, e.g. svc_playlisthandler
- obj: object. Wasabi interfaces which define an object created by the service manager are prefixed with this. e.g. obj_xml for an instance of an XML parser.