summaryrefslogtreecommitdiff
path: root/ExternalAPI/m_music.h
diff options
context:
space:
mode:
Diffstat (limited to 'ExternalAPI/m_music.h')
-rw-r--r--ExternalAPI/m_music.h339
1 files changed, 190 insertions, 149 deletions
diff --git a/ExternalAPI/m_music.h b/ExternalAPI/m_music.h
index 4f10475..0246fab 100644
--- a/ExternalAPI/m_music.h
+++ b/ExternalAPI/m_music.h
@@ -4,74 +4,73 @@
#define MIID_WATRACK {0xfc6c81f4, 0x837e, 0x4430, {0x96, 0x01, 0xa0, 0xaa, 0x43, 0x17, 0x7a, 0xe3}}
typedef struct tSongInfoA {
- CHAR *artist;
- CHAR *title;
- CHAR *album;
- CHAR *genre;
- CHAR *comment;
- CHAR *year;
- CHAR *mfile; // media file
- int kbps;
- int khz;
- int channels;
- int track;
- int total; // music length
- int time; // elapsed time
- CHAR *wndtext; // window title
- CHAR *player; // player name
- int plyver; // player version
- HANDLE icon; // player icon
- int fsize; // media file size
- int vbr;
- int status; // player status: 0 - stopped; 1 - playing; 2 - paused
- HWND plwnd; // player window
- // video part
- int codec;
- int width;
- int height;
- int fps;
- __int64 date;
- CHAR *txtver;
- CHAR *lyric;
- CHAR *cover;
- int volume;
- CHAR *url;
+ CHAR* artist;
+ CHAR* title;
+ CHAR* album;
+ CHAR* genre;
+ CHAR* comment;
+ CHAR* year;
+ CHAR* mfile; // media file
+ DWORD kbps;
+ DWORD khz;
+ DWORD channels;
+ DWORD track;
+ DWORD total; // music length
+ DWORD time; // elapsed time
+ CHAR* wndtext; // window title
+ CHAR* player; // player name
+ DWORD plyver; // player version
+ HANDLE icon; // player icon
+ DWORD fsize; // media file size
+ DWORD vbr;
+ int status; // WAT_MES_* const
+ HWND plwnd; // player window
+ // video part
+ DWORD codec;
+ DWORD width;
+ DWORD height;
+ DWORD fps;
+ __int64 date;
+ CHAR* txtver;
+ CHAR* lyric;
+ CHAR* cover;
+ DWORD volume;
+ CHAR* url; // player homepage
} SONGINFOA, *LPSONGINFOA;
typedef struct tSongInfo {
- WCHAR *artist;
- WCHAR *title;
- WCHAR *album;
- WCHAR *genre;
- WCHAR *comment;
- WCHAR *year;
- WCHAR *mfile; // media file
- int kbps;
- int khz;
- int channels;
- int track;
- int total; // music length
- int time; // elapsed time
- WCHAR *wndtext; // window title
- WCHAR *player; // player name
- int plyver; // player version
- HANDLE icon; // player icon
- int fsize; // media file size
- int vbr;
- int status; // player status: 0 - stopped; 1 - playing; 2 - paused
- HWND plwnd; // player window
- // video part
- int codec;
- int width;
- int height;
- int fps;
- __int64 date;
- WCHAR txtver;
- // not implemented yet
- WCHAR *lyric;
- WCHAR *cover;
- int volume;
- WCHAR *url;
+ WCHAR* artist;
+ WCHAR* title;
+ WCHAR* album;
+ WCHAR* genre;
+ WCHAR* comment;
+ WCHAR* year;
+ WCHAR* mfile; // media file
+ DWORD kbps;
+ DWORD khz;
+ DWORD channels;
+ DWORD track;
+ DWORD total; // music length
+ DWORD time; // elapsed time
+ WCHAR* wndtext; // window title
+ WCHAR* player; // player name
+ DWORD* plyver; // player version
+ HANDLE icon; // player icon
+ DWORD fsize; // media file size
+ DWORD vbr;
+ int status; // WAT_MES_* const
+ HWND plwnd; // player window
+ // video part
+ DWORD codec;
+ DWORD width;
+ DWORD height;
+ DWORD fps;
+ __int64 date;
+ WCHAR* txtver;
+ WCHAR* lyric;
+ WCHAR* cover; // cover path
+ DWORD volume;
+ WCHAR* url; // player homepage
} SONGINFO, *LPSONGINFO;
#if defined(_UNICODE)
@@ -91,15 +90,17 @@ typedef struct tSongInfo {
#define WAT_RES_DISABLED 1
// internal
#define WAT_RES_NEWFILE 3
+#define WAT_RES_NEWPLAYER 4
-#define WAT_PLS_NORMAL WAT_RES_OK
-#define WAT_PLS_NOMUSIC WAT_RES_DISABLED
-#define WAT_PLS_NOTFOUND WAT_RES_NOTFOUND
+// result for MS_WAT_GETMUSICINFO service
+#define WAT_PLS_NORMAL WAT_RES_OK
+#define WAT_PLS_NOMUSIC WAT_RES_DISABLED
+#define WAT_PLS_NOTFOUND WAT_RES_NOTFOUND
-#define WAT_INF_UNICODE 0
-#define WAT_INF_ANSI 1
-#define WAT_INF_UTF8 2
-#define WAT_INF_CHANGES 0x100
+#define WAT_INF_UNICODE 0
+#define WAT_INF_ANSI 1
+#define WAT_INF_UTF8 2
+#define WAT_INF_CHANGES 0x100
/*
wParam : WAT_INF_* constant
@@ -113,7 +114,6 @@ typedef struct tSongInfo {
LPSONGINFO p;
PluginLink->CallService(MS_WAT_GETMUSICINFO,0,(DWORD)&p);
*/
-
#define MS_WAT_GETMUSICINFO "WATrack/GetMusicInfo"
/*
@@ -127,25 +127,38 @@ typedef struct tSongInfo {
#define MS_WAT_GETFILEINFO "WATrack/GetFileInfo"
/*
- Get user's Music Info
+ wParam: encoding (WAT_INF_* consts, 0 = WAT_INF_UNICODE)
+ lParam: codepage (0 = ANSI)
+ Returns Global unicode SongInfo pointer or tranlated to Ansi/UTF8 structure
*/
-#define MS_WAT_GETCONTACTINFO = "WATrack/GetContactInfo"
-
-#define WAT_CTRL_PREV 1
-#define WAT_CTRL_PLAY 2
-#define WAT_CTRL_PAUSE 3
-#define WAT_CTRL_STOP 4
-#define WAT_CTRL_NEXT 5
-#define WAT_CTRL_VOLDN 6
-#define WAT_CTRL_VOLUP 7
-#define WAT_CTRL_SEEK 8 // lParam is new position (sec)
+#define MS_WAT_RETURNGLOBAL "WATrack/GetMainStructure"
+
+//!! DON'T CHANGE THESE VALUES!
+#define WAT_CTRL_FIRST 1
+
+#define WAT_CTRL_PREV 1
+#define WAT_CTRL_PLAY 2
+#define WAT_CTRL_PAUSE 3
+#define WAT_CTRL_STOP 4
+#define WAT_CTRL_NEXT 5
+#define WAT_CTRL_VOLDN 6
+#define WAT_CTRL_VOLUP 7
+#define WAT_CTRL_SEEK 8 // lParam is new position (sec)
+
+#define WAT_CTRL_LAST 8
+
/*
wParam: button code (WAT_CTRL_* const)
lParam: 0, or value (see WAT_CTRL_* const comments)
Affects: emulate player button pressing
returns: 0 if unsuccesful
*/
-#define MS_WAT_PRESSBUTTON "WATrack/PressButton"
+#define MS_WAT_PRESSBUTTON "WATrack/PressButton"
+
+/*
+ Get user's Music Info
+*/
+#define MS_WAT_GETCONTACTINFO "WATrack/GetContactInfo"
// ------------ Plugin/player status ------------
@@ -153,23 +166,28 @@ typedef struct tSongInfo {
wParam: 1 - switch off plugin
0 - switch on plugin
-1 - switch plugin status
+ 2 - get plugin version
other - get plugin status
lParam: 0
Affects: Switch plugin status to enabled or disabled
returns: old plugin status, 0, if was enabled
*/
-
#define MS_WAT_PLUGINSTATUS "WATrack/PluginStatus"
+// ---------- events ------------
+
+/*ME_WAT_MODULELOADED
+ wParam: 0, lParam: 0
+*/
#define ME_WAT_MODULELOADED "WATrack/ModuleLoaded"
-#define WAT_EVENT_PLAYERSTATUS 1 // 0-normal; 1-no music (possibly stopped); 2-not found
-#define WAT_EVENT_NEWTRACK 2
-#define WAT_EVENT_PLUGINSTATUS 3 // 0-enabled; 1-dis.temporary; 2-dis.permanent
+#define WAT_EVENT_PLAYERSTATUS 1 //lParam: WAT_PLS_* const
+#define WAT_EVENT_NEWTRACK 2 //lParam: LPSONGINFO
+#define WAT_EVENT_PLUGINSTATUS 3 //lParam: 0-enabled; 1-dis.temporary; 2-dis.permanent
#define WAT_EVENT_NEWPLAYER 4 //
-#define WAT_EVENT_NEWTEMPLATE 5 // TM_* constant
+#define WAT_EVENT_NEWTEMPLATE 5 //lParam: TM_* constant
-/*
+/*ME_WAT_NEWSTATUS
Plugin or player status changed:
wParam: type of event (see above)
lParam: value
@@ -184,7 +202,6 @@ typedef struct tSongInfo {
Affects: Show popup or Info window with current music information
note: Only Info window will be showed if Popup plugin disabled
*/
-
#define MS_WAT_SHOWMUSICINFO "WATrack/ShowMusicInfo"
// --------- Statistic (report) module -------------
@@ -214,35 +231,39 @@ typedef struct tSongInfo {
// media file status
-#define WAT_MES_STOPPED 0
-#define WAT_MES_PLAYING 1
-#define WAT_MES_PAUSED 2
-#define WAT_MES_UNKNOWN -1
+#define WAT_MES_STOPPED 0
+#define WAT_MES_PLAYING 1
+#define WAT_MES_PAUSED 2
+#define WAT_MES_UNKNOWN -1
#define WAT_ACT_REGISTER 1
#define WAT_ACT_UNREGISTER 2
#define WAT_ACT_DISABLE 3
#define WAT_ACT_ENABLE 4
-#define WAT_ACT_GETSTATUS 5 // not found/enabled/disabled
+#define WAT_ACT_GETSTATUS 5 // not found/enabled/disabled
#define WAT_ACT_SETACTIVE 6
-#define WAT_ACT_REPLACE 0x10000 // can be combined with WAT_REGISTERFORMAT
+#define WAT_ACT_REPLACE 0x10000 // can be combined with WAT_REGISTERFORMAT
// flags
-#define WAT_OPT_DISABLED 0x0001 // format registered but disabled
-#define WAT_OPT_ONLYONE 0x0002 // format can't be overwriten
-#define WAT_OPT_PLAYERINFO 0x0004 // song info from player
-#define WAT_OPT_WINAMPAPI 0x0008 // Winamp API support
-#define WAT_OPT_CHECKTIME 0x0010 // check file time for changes
-#define WAT_OPT_VIDEO 0x0020 // only for format registering used
-#define WAT_OPT_LAST 0x0040 // (internal)
-#define WAT_OPT_FIRS 0x0080 // (internal)
-#define WAT_OPT_TEMPLATE 0x0100 // (internal)
-#define WAT_OPT_IMPLANTANT 0x0200 // use process implantation
-#define WAT_OPT_HASURL 0x0400 // (player registration) URL field present
-#define WAT_OPT_CHANGES 0x0800 // obtain only chaged values
- // (volume, status, window text, elapsed time)
-#define WAT_OPT_MULTITHREAD 0x8000 // Use multithread scan
-#define WAT_OPT_KEEPOLD 0x4000 // Keep Old opened file
+#define WAT_OPT_DISABLED 0x00001 // format registered but disabled
+#define WAT_OPT_ONLYONE 0x00002 // format can't be overwriten
+#define WAT_OPT_PLAYERINFO 0x00004 // song info from player
+#define WAT_OPT_WINAMPAPI 0x00008 // Winamp API support
+#define WAT_OPT_CHECKTIME 0x00010 // check file time for changes
+#define WAT_OPT_VIDEO 0x00020 // only for format registering used
+#define WAT_OPT_LAST 0x00040 // (internal)
+#define WAT_OPT_FIRST 0x00080 // (internal)
+#define WAT_OPT_TEMPLATE 0x00100 // (internal)
+#define WAT_OPT_IMPLANTANT 0x00200 // use process implantation
+#define WAT_OPT_HASURL 0x00400 // (player registration) URL field present
+#define WAT_OPT_CHANGES 0x00800 // obtain only chaged values
+ // (volume, status, window text, elapsed time)
+#define WAT_OPT_APPCOMMAND 0x01000 // Special (multimedia) key support
+#define WAT_OPT_CHECKALL 0x02000 // Check all players
+#define WAT_OPT_KEEPOLD 0x04000 // Keep Old opened file
+#define WAT_OPT_MULTITHREAD 0x08000 // Use multithread scan
+#define WAT_OPT_SINGLEINST 0x10000 // Single player instance
+#define WAT_OPT_PLAYERDATA 0x20000 // (internal) to obtain player data
typedef BOOL (__cdecl *LPREADFORMATPROC)(LPSONGINFO Info);
@@ -250,7 +271,7 @@ typedef BOOL (__cdecl *LPREADFORMATPROC)(LPSONGINFO Info);
typedef struct tMusicFormat {
LPREADFORMATPROC proc;
CHAR ext[8];
- int flags;
+ UINT flags;
} MUSICFORMAT, *LPMUSICFORMAT;
/*
@@ -259,37 +280,42 @@ typedef struct tMusicFormat {
else - pointer to extension string (ANSI)
returns: see result codes
*/
-
#define MS_WAT_FORMAT "WATrack/Format"
/*
wParam - pointer to SONGINFO structure (plwind field must be initialized)
lParam - flags
+ Affects: trying to fill SongInfo using Winamp API
*/
-
#define MS_WAT_WINAMPINFO "WATrack/WinampInfo"
/*
wParam: window
lParam: LoWord - command; HiWord - value
*/
-
#define MS_WAT_WINAMPCOMMAND "WATrack/WinampCommand"
-typedef WCHAR (__cdecl *LPNAMEPROC)();
-typedef HWND (__cdecl *LPCHECKPROC)(int flags);
-typedef int (__cdecl *LPINFOPROC)(LPSONGINFO Info, int flags);
-typedef int (__cdecl *LPCOMMANDPROC)(int command, int value);
+typedef int (__cdecl *LPINITPROC) ();
+typedef int (__cdecl *LPDEINITPROC) ();
+typedef int (__cdecl *LPSTATUSPROC) (HWND wnd);
+typedef WCHAR (__cdecl *LPNAMEPROC) (HWND wnd, int flags);
+typedef HWND (__cdecl *LPCHECKPROC) (HWND wnd,int flags);
+typedef int (__cdecl *LPINFOPROC) (LPSONGINFO Info, int flags);
+typedef int (__cdecl *LPCOMMANDPROC)(HWND wnd, int command, int value);
typedef struct tPlayerCell {
- CHAR *Desc;
- int flags;
- HICON Icon; // can be 0. for registration only
- LPCHECKPROC Check; // check player
- LPNAMEPROC GetName; // can be NULL. get media filename
- LPINFOPROC GetInfo; // can be NULL. get info from player
- LPCOMMANDPROC Command; // can be NULL. send command to player
- CHAR *URL; // only if WAT_OPT_HASURL flag present
+ CHAR* Desc; // Short player name
+ UINT flags;
+ HICON Icon; // can be 0. for registration only
+ LPINITPROC Init; // LPINITPROC; can be NULL. initialize any data
+ LPDEINITPROC DeInit; // LPDEINITPROC; can be NULL. finalize player processing
+ LPCHECKPROC Check; // check player
+ LPSTATUSPROC GetStatus; // tStatusProc; can be NULL. get player status
+ LPNAMEPROC GetName; // can be NULL. get media filename
+ LPINFOPROC GetInfo; // can be NULL. get info from player
+ LPCOMMANDPROC Command; // can be NULL. send command to player
+ CHAR* URL; // only if WAT_OPT_HASURL flag present
+ WCHAR* Notes; // any tips, notes etc for this player
} PLAYERCELL, *LPPLAYERCELL;
/*
@@ -297,27 +323,44 @@ typedef struct tPlayerCell {
lParam: pointer to PLAYERCELL if wParam = WAT_ACT_REGISTER,
else - pointer to player description string (ANSI)
returns: player window handle or value>0 if found
+ note: If you use GetName or GetInfo field, please, do not return empty
+ filename even when mediafile is remote!
*/
-
#define MS_WAT_PLAYER "WATrack/Player"
-// --------- Templates ----------
+// --------- Last FM ---------
+
+/*
+ Toggle LastFM scrobbling status
+ wParam,lParam=0
+ Returns: previous state
+*/
+#define MS_WAT_LASTFM "WATrack/LastFM"
-//templates
-#define TM_MESSAGE 0 // privat message
-#define TM_CHANNEL 1 // chat
-#define TM_STAT_TITLE 2 // xstatus title
-#define TM_STAT_TEXT 3 // [x]status text
-#define TM_POPTITLE 4 // popup title
-#define TM_POPTEXT 5 // popup text
-#define TM_EXPORT 6 // other app
-#define TM_FRAMEINFO 7 // frame
+/*
+ Get Info based on currently played song
+ wParam: pLastFMInfo
+ lParam: int language (first 2 bytes - 2-letters language code)
+*/
+typedef struct tLastFMInfo {
+ UINT request; // 0 - artist, 1 - album, 2 - track
+ WCHAR* artist; // artist
+ WCHAR* album; // album or similar artists for Artist info request
+ WCHAR* title; // track title
+ WCHAR* tags; // tags
+ WCHAR* info; // artist bio or wiki article
+ WCHAR* image; // photo/cover link
+ WCHAR* similar;
+ WCHAR* release;
+ UINT trknum;
+}PLASTFMINFO, *LPLASTFMINFO;
+
+#define MS_WAT_LASTFMINFO "WATrack/LastFMInfo"
-#define TM_SETTEXT 0x100 // only for service
-#define TM_GETTEXT 0 // only for service
+// --------- Templates ----------
/*
- wParam: not used
+ wParam: 0 (standard Info) or pSongInfo
lParam: Unicode template
returns: New Unicode (replaced) string
*/
@@ -334,12 +377,10 @@ typedef struct tPlayerCell {
#define EVENTTYPE_WAT_MESSAGE 9604
/*
- wParam: Template type (TM_* constants).
- lParam: Template string for template setup, or not used
- returns: pointer to statically allocated string (DON'T free!)
- note: Template set if wParam with TM_SETTEXT combined. If used for
- Protocol-dependent templates, used only for default templates.
+ wParam: 0 or parent window
+ lParam: 0
+ note: Shows Macro help window with edit aliases ability
*/
-#define MS_WAT_TEMPLATE = "WATrack/Templates"
+#define MS_WAT_MACROHELP "WATrack/MacroHelp"
#endif