• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt/router/flac/src/plugin_winamp2/include/winamp2/
1/* Standard Winamp input-plugin header
2 */
3
4#include "out.h"
5
6/* post this to the main window at end of file (after playback as stopped) */
7#define WM_WA_MPEG_EOF          (WM_USER + 2)
8
9// note: exported symbol is now winampGetInModule2.
10
11#define IN_VER 0x100
12
13typedef struct
14{
15	int version;				// module type (IN_VER)
16	char *description;			// description of module, with version string
17
18	HWND hMainWindow;			// winamp's main window (filled in by winamp)
19	HINSTANCE hDllInstance;		// DLL instance handle (Also filled in by winamp)
20
21	char *FileExtensions;		// "mp3\0Layer 3 MPEG\0mp2\0Layer 2 MPEG\0mpg\0Layer 1 MPEG\0"
22								// May be altered from Config, so the user can select what they want
23
24	int is_seekable;			// is this stream seekable?
25	int UsesOutputPlug;			// does this plug-in use the output plug-ins? (musn't ever change, ever :)
26
27	void (*Config)(HWND hwndParent); // configuration dialog
28	void (*About)(HWND hwndParent);  // about dialog
29
30	void (*Init)();				// called at program init
31	void (*Quit)();				// called at program quit
32
33	void (*GetFileInfo)(char *file, char *title, int *length_in_ms); // if file == NULL, current playing is used
34	int (*InfoBox)(char *file, HWND hwndParent);
35
36	int (*IsOurFile)(char *fn);	// called before extension checks, to allow detection of mms://, etc
37	// playback stuff
38	int (*Play)(char *fn);		// return zero on success, -1 on file-not-found, some other value on other (stopping winamp) error
39	void (*Pause)();			// pause stream
40	void (*UnPause)();			// unpause stream
41	int (*IsPaused)();			// ispaused? return 1 if paused, 0 if not
42	void (*Stop)();				// stop (unload) stream
43
44	// time stuff
45	int (*GetLength)();			// get length in ms
46	int (*GetOutputTime)();		// returns current output time in ms. (usually returns outMod->GetOutputTime()
47	void (*SetOutputTime)(int time_in_ms);	// seeks to point in stream (in ms). Usually you signal yoru thread to seek, which seeks and calls outMod->Flush()..
48
49	// volume stuff
50	void (*SetVolume)(int volume);	// from 0 to 255.. usually just call outMod->SetVolume
51	void (*SetPan)(int pan);	// from -127 to 127.. usually just call outMod->SetPan
52
53	// in-window builtin vis stuff
54
55	void (*SAVSAInit)(int maxlatency_in_ms, int srate);		// call once in Play(). maxlatency_in_ms should be the value returned from outMod->Open()
56	// call after opening audio device with max latency in ms and samplerate
57	void (*SAVSADeInit)();	// call in Stop()
58
59
60	// simple vis supplying mode
61	void (*SAAddPCMData)(void *PCMData, int nch, int bps, int timestamp);
62											// sets the spec data directly from PCM data
63											// quick and easy way to get vis working :)
64											// needs at least 576 samples :)
65
66	// advanced vis supplying mode, only use if you're cool. Use SAAddPCMData for most stuff.
67	int (*SAGetMode)();		// gets csa (the current type (4=ws,2=osc,1=spec))
68							// use when calling SAAdd()
69	void (*SAAdd)(void *data, int timestamp, int csa); // sets the spec data, filled in by winamp
70
71
72	// vis stuff (plug-in)
73	// simple vis supplying mode
74	void (*VSAAddPCMData)(void *PCMData, int nch, int bps, int timestamp); // sets the vis data directly from PCM data
75											// quick and easy way to get vis working :)
76											// needs at least 576 samples :)
77
78	// advanced vis supplying mode, only use if you're cool. Use VSAAddPCMData for most stuff.
79	int (*VSAGetMode)(int *specNch, int *waveNch); // use to figure out what to give to VSAAdd
80	void (*VSAAdd)(void *data, int timestamp); // filled in by winamp, called by plug-in
81
82
83	// call this in Play() to tell the vis plug-ins the current output params.
84	void (*VSASetInfo)(int nch, int srate);
85
86
87	// dsp plug-in processing:
88	// (filled in by winamp, called by input plug)
89
90	// returns 1 if active (which means that the number of samples returned by dsp_dosamples
91	// could be greater than went in.. Use it to estimate if you'll have enough room in the
92	// output buffer
93	int (*dsp_isactive)();
94
95	// returns number of samples to output. This can be as much as twice numsamples.
96	// be sure to allocate enough buffer for samples, then.
97	int (*dsp_dosamples)(short int *samples, int numsamples, int bps, int nch, int srate);
98
99
100	// eq stuff
101	void (*EQSet)(int on, char data[10], int preamp); // 0-64 each, 31 is +0, 0 is +12, 63 is -12. Do nothing to ignore.
102
103	// info setting (filled in by winamp)
104	void (*SetInfo)(int bitrate, int srate, int stereo, int synched); // if -1, changes ignored? :)
105
106	Out_Module *outMod; // filled in by winamp, optionally used :)
107} In_Module;
108