mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-09-24 15:54:12 +00:00
185 lines
4.2 KiB
C
185 lines
4.2 KiB
C
|
#ifndef NULLSOFT_IN_CDDA_CDDB_H
|
||
|
#define NULLSOFT_IN_CDDA_CDDB_H
|
||
|
|
||
|
#define S_MULTIPLE MATCH_MULTIPLE
|
||
|
|
||
|
#ifdef IGNORE_API_GRACENOTE
|
||
|
struct TRACKINFO
|
||
|
{
|
||
|
TRACKINFO()
|
||
|
{
|
||
|
artist=0;
|
||
|
title=0;
|
||
|
genre=0;
|
||
|
tagID=0;
|
||
|
composer=0;
|
||
|
conductor=0;
|
||
|
extData=0;
|
||
|
remixing=0;
|
||
|
isrc=0;
|
||
|
}
|
||
|
TRACKINFO(const TRACKINFO ©);
|
||
|
TRACKINFO &operator =(const TRACKINFO ©);
|
||
|
~TRACKINFO();
|
||
|
|
||
|
void Reset();
|
||
|
|
||
|
wchar_t *artist;
|
||
|
wchar_t *title;
|
||
|
wchar_t *genre;
|
||
|
wchar_t *tagID;
|
||
|
wchar_t *composer;
|
||
|
wchar_t *conductor;
|
||
|
wchar_t *extData;
|
||
|
wchar_t *remixing;
|
||
|
wchar_t *isrc;
|
||
|
};
|
||
|
#endif
|
||
|
|
||
|
struct DINFO
|
||
|
{
|
||
|
DINFO()
|
||
|
{
|
||
|
label=0;
|
||
|
notes=0;
|
||
|
genre=0;
|
||
|
artist=0;
|
||
|
year=0;
|
||
|
tuid=0;
|
||
|
title=0;
|
||
|
composer=0;
|
||
|
conductor=0;
|
||
|
remixing=0;
|
||
|
compilation=false;
|
||
|
discnum=0;
|
||
|
numdiscs=0;
|
||
|
ntracks=0;
|
||
|
CDDBID=0;
|
||
|
nDiscLength=0;
|
||
|
populated=false;
|
||
|
memset(pnFrames, 0, sizeof(pnFrames));
|
||
|
}
|
||
|
DINFO(const DINFO ©);
|
||
|
DINFO &operator =(const DINFO ©);
|
||
|
~DINFO();
|
||
|
void Reset();
|
||
|
|
||
|
wchar_t *title;
|
||
|
wchar_t *artist;
|
||
|
wchar_t *tuid;
|
||
|
wchar_t *year;
|
||
|
wchar_t *genre;
|
||
|
wchar_t *label;
|
||
|
wchar_t *notes;
|
||
|
bool compilation;
|
||
|
int discnum;
|
||
|
int numdiscs;
|
||
|
int ntracks;
|
||
|
wchar_t *conductor;
|
||
|
wchar_t *composer;
|
||
|
wchar_t *remixing;
|
||
|
#ifdef IGNORE_API_GRACENOTE
|
||
|
TRACKINFO tracks[100];
|
||
|
#endif
|
||
|
|
||
|
unsigned int CDDBID;
|
||
|
unsigned int pnFrames[100];
|
||
|
unsigned int nDiscLength;
|
||
|
|
||
|
bool populated;
|
||
|
};
|
||
|
|
||
|
extern char config_use_cddb;
|
||
|
|
||
|
|
||
|
#define CDDB_E_BADTOC 0x82FD0001
|
||
|
|
||
|
#define CDDB_NONE 0x0000 //
|
||
|
#define CDDB_NOCACHE 0x1000 //
|
||
|
#define CDDB_NOINET 0x2000 //
|
||
|
|
||
|
#define CDDB_RESOLVE_MULTIPLE 0x0001 // selects first
|
||
|
|
||
|
|
||
|
|
||
|
#define CDDB_UI_MODAL 0x0010 //
|
||
|
#define CDDB_UI_RESULT_MODAL 0x0020 // result window will stay modal
|
||
|
#define CDDB_UI_USE_PARENT 0x0040 // instead of creating child window from hwndParent - just reuse hwndParent
|
||
|
|
||
|
#define CDDB_UI_NOMATCH 0x0100 // displays submit new dialog
|
||
|
#define CDDB_UI_MULTIPLE 0x0200 // displays multiple choices dialog
|
||
|
|
||
|
#define AUTOCLOSE_NOW 0x00000000
|
||
|
#define AUTOCLOSE_NEVER 0xFFFFFFFF
|
||
|
|
||
|
int GetDiscID(MCIDEVICEID wDeviceID, DINFO* psDI);
|
||
|
int GetCDDBInfo(DINFO *ps, wchar_t device);
|
||
|
|
||
|
#include "CDDBInterface.h"
|
||
|
#ifdef IGNORE_API_GRACENOTE
|
||
|
class ICddbDisc;
|
||
|
#endif
|
||
|
typedef HRESULT (CALLBACK *CDDB_CB)(HRESULT /*result*/, ICddbDisc* /*pDisc*/, DWORD* /*pdwAutoCloseDelay*/, ULONG_PTR /*user*/);
|
||
|
|
||
|
#ifndef IGNORE_API_GRACENOTE
|
||
|
HRESULT DoCDDBDlg(DINFO *ps, HWND hwnd, int editopt);
|
||
|
void GetDiscInfo(ICddbDiscPtr pDisc, DINFO *ps);
|
||
|
bool GetRole(ICddbTrack *track, BSTR roleId, BSTR *str);
|
||
|
bool GetRole(ICddbDisc *track, BSTR roleId, BSTR *str);
|
||
|
extern ICDDBControl *pCDDBControl;
|
||
|
|
||
|
void InitializeCddbCache(void);
|
||
|
void UninitializeCddbCache(void);
|
||
|
#endif
|
||
|
|
||
|
HRESULT CddbCache_SetDisc(DINFO *pDiscInfo, HRESULT lookupResult);
|
||
|
|
||
|
void Cddb_Initialize(void);
|
||
|
void Cddb_Uninitialize(void);
|
||
|
|
||
|
HRESULT Cddb_InitializeThread(void);
|
||
|
HRESULT Cddb_UninitializeThread(void);
|
||
|
|
||
|
LPCWSTR Cddb_CalculateTOC(DINFO *pDisc, LPWSTR pszTOC, size_t cchTOC);
|
||
|
HRESULT Cddb_DoLookup(LPCWSTR pszTOC, HWND hwndParent, CDDB_CB callback, UINT flags, ULONG_PTR user);
|
||
|
|
||
|
#ifndef IGNORE_API_GRACENOTE
|
||
|
void DefaultValues(DINFO *ps);
|
||
|
#endif
|
||
|
|
||
|
bool DoCDText(DINFO *ps, wchar_t device);
|
||
|
|
||
|
HRESULT Cddb_GetIUIOptions(void** ppUIOptions);
|
||
|
#ifndef IGNORE_API_GRACENOTE
|
||
|
void ShutDownCDDB();
|
||
|
HRESULT Cddb_GetDiscFromCache(BSTR bstrTOC, ICddbDisc **ppDisc);
|
||
|
bool CDEdit(CHAR cDevice, DINFO *ps, HWND hwnd);
|
||
|
|
||
|
HRESULT Cddb_GetIControl(void **ppControl);
|
||
|
HRESULT Cddb_GetICacheManger(void **ppCache);
|
||
|
|
||
|
HRESULT Cddb_DisplayDiscInfo(ICddbDisc *pDisc, CDDBUIFlags *pUIFlags, HWND hwndParent);
|
||
|
|
||
|
void Cddb_GetResultText(HRESULT hr, LPWSTR pszResult, INT cchResult, LPWSTR pszReason, INT cchReason);
|
||
|
#endif
|
||
|
|
||
|
HRESULT Cddb_DisplayResultDlg(HWND hwndParent, HRESULT result, DWORD dwAutoCloseDelay, UINT flags); // flags can be CDDB_MODAL | CDDB_DISPLAY_IN_PARENT
|
||
|
|
||
|
#ifndef IGNORE_API_GRACENOTE
|
||
|
|
||
|
// info calls work only in callback
|
||
|
HWND Cddb_GetInfoWindow(void);
|
||
|
void Cdbb_DisplayInfo(LPCWSTR pszTitle, LPCWSTR pszCaption, LPCWSTR pszStatus, INT percentCompleted);
|
||
|
|
||
|
void StoreDisc(unsigned int cddb_id, ICddbDiscPtr pDisc);
|
||
|
#endif
|
||
|
|
||
|
bool StoreCDText(unsigned int cddb_id, wchar_t device);
|
||
|
void StoreCDNoInfo(unsigned int cddb_id);
|
||
|
|
||
|
bool QueryDINFO(unsigned int cddb_id, DINFO *info);
|
||
|
//#ifndef IGNORE_API_GRACENOTE
|
||
|
bool StoreDINFO(unsigned cddb_id, DINFO *info);
|
||
|
//#endif
|
||
|
#endif
|