📄 qcdmoddefs.h
字号:
opMovePlaylistTrack = 1012, // param1 = index of track to move, param2 = destination index (move shifts tracks between param1 and param2) opSwapPlaylistTracks = 1013, // param1 = index of first track, param2 = index of second track (swap only switches indecies param1 and param2) opCreateDiscInfo = 1020, // returns: pointer to ICddbDisc object. Do not release or deallocate this pointer opSetDiscInfo = 1021, // buffer = ICddbDisc*, param1 = MediaInfo*, param2 = track number opSetSeekPosition = 1100, // seek to position during playback // buffer = NULL, param1 = position // param2 = 0 - position is in seconds, 1 - position is in milliseconds, 2 - position is in percent (use (float)param1)) opSetRepeatState = 1110, // set playlist repeat state, buffer = NULL, param1 = 0 - off, 1 - repeat track, 2 - repeat playlist opSetShuffleState = 1111, // set playlist shuffle state, buffer = NULL, param1 = 0 - off, 1 - on //*** below configures custom plugin menu items for the 'plugin menu' //*** Player will call plugin's configure routine with menu value when menu item selected //*** returns 1 on success, 0 on failure opSetPluginMenuItem = 2000, // buffer = HINSTANCE of plugin, param1 = item id, param2 = (string ptr)string to display // - set param2 = 0 to remove item id from menu // - set param1 = 0 and param2 = 0 to remove whole menu opSetPluginMenuState = 2001, // buffer = HINSTANCE of plugin, param1 = item id, param2 = menu flags (same as windows menu flags - eg: MF_CHECKED) //*** below are services for using the player's filename template editor //*** returns 1 on success, 0 on failure opShowTemplateEditor = 2100, // displays template editor dialog, param1 = (HWND)parent window, param2 = modal flag opLoadTemplate = 2101, // loads saved templates, buffer = (char*)string buf, param1 = bufsize, param2 = index of template (index < 0 for default formats, index >= 0 for user made formats) opRenderTemplate = 2102, // create string based on template, buffer = (char*)template, param1 = FormatMetaInfo*, param2 = (char*)string buffer (min 260 bytes) //*** other services opUTF8toUCS2 = 9000, // convert UTF8 string to UCS2 (Unicode) string, buffer = null terminated utf8 string, param1 = (WCHAR*)result string buffer, param2 = size of result buffer opUCS2toUTF8 = 9001, // convert UCS2 (Unicode) string to UTF8 string, buffer = null terminated ucs2 string, param1 = (char*)result string buffer, param2 = size of result buffer opSafeWait = 10000 // plugin's can use this to wait on an object without worrying about deadlocking the player. // this should only be called by the thread that enters the plugin, not by any plugin-created threads} PluginServiceOp;//-----------------------------------------------------------------------------// Info services api provided by the Player, called by Plugin.//-----------------------------------------------------------------------------typedef long (*PluginServiceFunc)(PluginServiceOp op, void *buffer, long param1, long param2);// Use to retrieve service func for DSP plugins (or other inproc process that doesn't have access to PluginServiceFunc)// Eg: PluginServiceFunc Service = (PluginServiceFunc)SendMessage(hwndPlayer, WM_GETSERVICEFUNC, 0, 0);// Set WPARAM = PLUGIN_API_WANTUTF8 for UTF8 string parameters#define WM_GETSERVICEFUNC (WM_USER + 1)//-----------------------------------------------------------------------------typedef struct // for Output Plugin Write callback{ void *data; // pointer to valid data int bytelen; // length of data pointed to by 'data' in bytes UINT numsamples; // number of samples represented by 'data' UINT bps; // bits per sample UINT nch; // number of channels UINT srate; // sample rate UINT markerstart; // Marker position at start of data (marker is time value of data) // (set to WAVE_VIS_DATA_ONLY to not have data sent to output plugins) UINT markerend; // Marker position at end of data (not currently used, set to 0)} WriteDataStruct;//-----------------------------------------------------------------------------typedef struct // for GetTrackExtents Input Plugin callback{ UINT track; // for CD's, set the track number. Otherwise set to 1. UINT start; // for CD's or media that doesn't start at the beginning // of the file, set to start position. Otherwise set to 0. UINT end; // set to end position of media. UINT unitpersec; // whatever units are being used for this media, how many // of them per second. // (Note: ((end - start) / unitpersecond) = file length UINT bytesize; // size of file in bytes (if applicable, otherwise 0).} TrackExtents;//-----------------------------------------------------------------------------typedef struct // for opSetAudioInfo service{ long struct_size; // sizeof(AudioInfo) long level; // MPEG level (1 for MPEG1, 2 for MPEG2, 3 for MPEG2.5, 7 for MPEGpro) long layer; // and layer (1, 2 or 3) long bitrate; // audio bitrate in bits per second long frequency; // audio freq in Hz long mode; // 0 for stereo, 1 for joint-stereo, 2 for dual-channel, 3 for mono, 4 for multi-channel char text[8]; // up to eight characters to identify format (will override level and layer settings)} AudioInfo;//-----------------------------------------------------------------------------// Equalizer Info//-----------------------------------------------------------------------------typedef struct // for coming QCD version{ long struct_size; // sizeof(EQInfo) char enabled; char preamp; // -128 to 127, 0 is even char bands[10]; // -128 to 127, 0 is even} EQInfo;//-----------------------------------------------------------------------------typedef struct{ long struct_size; // sizeof(ProxyInfo) char hostname[200]; long port; char username[100]; char password[100];} ProxyInfo;//-----------------------------------------------------------------------------typedef enum // for MediaInfo.mediaType{ UNKNOWN_MEDIA = 0, CD_AUDIO_MEDIA = 1, DIGITAL_FILE_MEDIA = 2, DIGITAL_STREAM_MEDIA = 3} MediaTypes;//-----------------------------------------------------------------------------#define MAX_TOC_LEN 2048typedef struct{ // media descriptors CHAR mediaFile[MAX_PATH]; MediaTypes mediaType; // cd audio media info CHAR cd_mediaTOC[MAX_TOC_LEN]; int cd_numTracks; int cd_hasAudio; // operation info int op_canSeek; // not used int reserved[4];} MediaInfo;//-----------------------------------------------------------------------------typedef struct{ long struct_size; LPCWSTR title; LPCWSTR artalb; LPCWSTR album; LPCWSTR genre; LPCWSTR year; LPCWSTR tracknum; LPCWSTR filename; LPCWSTR arttrk; long reserved;} FormatMetaInfo;//-----------------------------------------------------------------------------// When subclassing the parent window, a plugin can watch for these messages// to react to events going on between plugins and player// DO NOT SEND THESE MESSAGES - can only watch for them// Plugin to Player Notifiers#define WM_PN_POSITIONUPDATE (WM_USER + 100) // playback progress updated#define WM_PN_PLAYSTARTED (WM_USER + 101) // playback has started#define WM_PN_PLAYSTOPPED (WM_USER + 102) // playback has stopped by user#define WM_PN_PLAYPAUSED (WM_USER + 103) // playback has been paused#define WM_PN_PLAYDONE (WM_USER + 104) // playback has finished (track completed)#define WM_PN_MEDIAEJECTED (WM_USER + 105) // a CD was ejected (CDRom drive letter= 'A' + lParam)#define WM_PN_MEDIAINSERTED (WM_USER + 106) // a CD was inserted (CDRom drive letter= 'A' + lParam)#define WM_PN_INFOCHANGED (WM_USER + 107) // track information was updated (lParam = (LPCSTR)medianame)#define WM_PN_TRACKCHANGED (WM_USER + 109) // current track playing has changed (relevant from CD plugin) (lParam = (LPCSTR)medianame)// Player to Plugin Notifiers#define WM_PN_PLAYLISTCHANGED (WM_USER + 200) // playlist has changed in some way (add, delete, sort, shuffle, drag-n-drop, etc...)// For intercepting main menu display// (so you can get handle, modify, and display your own)#define WM_SHOWMAINMENU (WM_USER + 20)// For intercepting skinned border window commands#define WM_BORDERWINDOW (WM_USER + 26)// WM_BORDERWINDOW wParam's#define BORDERWINDOW_NORMALSIZE 0x100000#define BORDERWINDOW_DOUBLESIZE 0x200000#define BORDERWINDOW_FULLSCREEN 0x400000// send to border window to cause resize// wParam = LPPOINT lpp; // point x-y is CLIENT area size of window#define WM_SIZEBORDERWINDOW (WM_USER + 1)//-----------------------------------------------------------------------------// To shutdown player, send this command#define WM_SHUTDOWN (WM_USER + 5)//-----------------------------------------------------------------------------// opSetStatusMessage textflags#define TEXT_DEFAULT 0x0 // message scrolls by in status window#define TEXT_TOOLTIP 0x1 // message acts as tooltip in status window#define TEXT_URGENT 0x2 // forces message to appear even if no status window (using msg box)#define TEXT_HOLD 0x4 // tooltip message stays up (no fade out)#define TEXT_UNICODE 0x10 // buffer contains a unicode string (multibyte string otherwise)#endif //QCDMODDEFS_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -