Plugin Terminology

From Winamp Developer Wiki
Jump to: navigation, search

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.

See also