aboutsummaryrefslogtreecommitdiff
path: root/Src/gracenote
diff options
context:
space:
mode:
Diffstat (limited to 'Src/gracenote')
-rw-r--r--Src/gracenote/CDDBControlWinamp.dllbin0 -> 1615088 bytes
-rw-r--r--Src/gracenote/CDDBPlugInBase.h50
-rw-r--r--Src/gracenote/CDDBPluginWorkOrderManager.h90
-rw-r--r--Src/gracenote/CDDBUIWinamp.dllbin0 -> 1041648 bytes
-rw-r--r--Src/gracenote/CddbLinkWinamp.dllbin0 -> 861424 bytes
-rw-r--r--Src/gracenote/CddbMusicIDUIWinamp.dllbin0 -> 402672 bytes
-rw-r--r--Src/gracenote/CddbMusicIDWinamp.dllbin0 -> 926960 bytes
-rw-r--r--Src/gracenote/CddbPlaylist2Winamp.dllbin0 -> 1127664 bytes
-rw-r--r--Src/gracenote/CddbWOManagerWinamp.dllbin0 -> 390384 bytes
-rw-r--r--Src/gracenote/Cddbx1.dllbin0 -> 226544 bytes
-rw-r--r--Src/gracenote/Cddbx2.dllbin0 -> 1385808 bytes
-rw-r--r--Src/gracenote/Cddbx3.dllbin0 -> 1680624 bytes
-rw-r--r--Src/gracenote/Cddbx4.dllbin0 -> 275696 bytes
-rw-r--r--Src/gracenote/Cddbx5.dllbin0 -> 390384 bytes
-rw-r--r--Src/gracenote/GracenoteApi.cpp472
-rw-r--r--Src/gracenote/GracenoteApi.h33
-rw-r--r--Src/gracenote/GracenoteFactory.cpp61
-rw-r--r--Src/gracenote/GracenoteFactory.h23
-rw-r--r--Src/gracenote/api.h13
-rw-r--r--Src/gracenote/api_gracenote.cpp3
-rw-r--r--Src/gracenote/api_gracenote.h92
-rw-r--r--Src/gracenote/cddbcontrolwinamp.tlh3027
-rw-r--r--Src/gracenote/cddbmusicidwinamp.tlh633
-rw-r--r--Src/gracenote/cddbplaylist2winamp.tlh1713
-rw-r--r--Src/gracenote/cddbuiwinamp.tlh268
-rw-r--r--Src/gracenote/gracenote.h24
-rw-r--r--Src/gracenote/gracenote.rc114
-rw-r--r--Src/gracenote/gracenote.sln30
-rw-r--r--Src/gracenote/gracenote.vcxproj313
-rw-r--r--Src/gracenote/gracenote.vcxproj.filters56
-rw-r--r--Src/gracenote/resource.h14
-rw-r--r--Src/gracenote/w5s.cpp74
-rw-r--r--Src/gracenote/w5s.h16
33 files changed, 7119 insertions, 0 deletions
diff --git a/Src/gracenote/CDDBControlWinamp.dll b/Src/gracenote/CDDBControlWinamp.dll
new file mode 100644
index 00000000..cedbd0d7
--- /dev/null
+++ b/Src/gracenote/CDDBControlWinamp.dll
Binary files differ
diff --git a/Src/gracenote/CDDBPlugInBase.h b/Src/gracenote/CDDBPlugInBase.h
new file mode 100644
index 00000000..91b5c886
--- /dev/null
+++ b/Src/gracenote/CDDBPlugInBase.h
@@ -0,0 +1,50 @@
+#ifndef CDDB_PLUGIN_BASE_H
+#define CDDB_PLUGIN_BASE_H
+
+// Version of module interface
+#define CDDBMODULE_VERSION 1
+
+// Module Categories
+// modules need to set this approprately to tell the manager what services it provides
+#define CDDBMODULE_DECODER 0x10
+#define CDDBMODULE_DECODERINFO 0x20
+#define CDDBMODULE_ENCODER 0x40
+#define CDDBMODULE_SIGNATURE 0x80
+#define CDDBMODULE_FILEINFO 0x100
+#define CDDBMODULE_SECURITY 0x200
+
+//
+// base module type
+// all modules derive from this type
+//
+#ifndef CDDBMODULEINTERFACE
+#define CDDBMODULEINTERFACE
+typedef struct
+{
+ void *handle;
+ char *moduleID;
+ int version;
+ int categories;
+ int initialized;
+ int (__stdcall *Init)(void*);
+ int (__stdcall *Deinit)();
+} CDDBModuleInterface;
+#endif
+
+// entry point function type
+typedef CDDBModuleInterface* (__cdecl *CDDBModuleQueryInterfaceFunc)(const char* lpszInterface);
+
+
+//
+// internal module handle
+//
+typedef struct
+{
+ void *handle;
+ int initialized;
+ CDDBModuleInterface *baseInterface;
+} CDDBModule;
+
+
+
+#endif /* CDDB_PLUGIN_BASE_H */
diff --git a/Src/gracenote/CDDBPluginWorkOrderManager.h b/Src/gracenote/CDDBPluginWorkOrderManager.h
new file mode 100644
index 00000000..4a2d9e3f
--- /dev/null
+++ b/Src/gracenote/CDDBPluginWorkOrderManager.h
@@ -0,0 +1,90 @@
+#ifndef CDDBPLUGIN_WORKORDERMGR_H
+#define CDDBPLUGIN_WORKORDERMGR_H
+
+// sig gen headers
+#include "CDDBPlugInBase.h"
+
+#define CDDBMODULE_WORKORDERMGR_IF_NAME "workordermanagerModuleID"
+#define CDDBMODULE_WORKORDERMGR 0x10000
+
+#define CDDBMODULE_QUERY_INTERFACE_NAME "CDDBModuleQueryInterface"
+
+// supported interfaces
+#define WORK_ORDER_MANAGER_BASE_INTERFACE "CDDBModuleInterface"
+#define WORK_ORDER_MANAGER_INTERFACE "workordermanager"
+#define WORK_ORDER_MANAGER_INTERFACE2 "workordermanager2"
+
+#ifndef CDDB_PLUGIN_SIGGEN_H
+
+typedef enum
+{
+ SG_NoError = 0,
+ SG_SignatureAcquired = 1,
+ SG_SignatureNotAcquired = 2,
+ SG_UnsupportedFormat = 3,
+ SG_ProcessingError = 4,
+ SG_InitializationError = 5,
+ SG_DeinitializationError = 6,
+ SG_InvalidParamError = 7,
+ SG_InternalError = 8,
+ SG_NotInitializedError = 9,
+ SG_OutOfMemory = 10,
+ SG_NotImplementedError = 11
+}
+SigGenResultCode;
+
+#endif //#ifndef CDDB_PLUGIN_SIGGEN_H
+
+
+//
+//
+//
+#ifndef CDDBMODULEWORKORDERMGR
+#define CDDBMODULEWORKORDERMGR
+
+#define CDDBMODULE_WORKORDER_MGR_VERSION 1
+
+typedef struct WorkOrderInstance* WorkOrderHandle;
+
+typedef struct
+{
+ CDDBModuleInterface base;
+
+ unsigned int version; /* current version is defined by CDDBMODULE_WORKORDER_MGR_VERSION */
+ unsigned int size; /* sizeof(CDDBModuleWorkOrder) */
+ unsigned int flags; /* nothing defined yet */
+
+ int (__stdcall *Initialize)(void* cddbcontrol, char* path);
+ int (__stdcall *Shutdown)(void);
+
+ int (__stdcall *GetSigHandle)(void** handle, void* disc, long track_num);
+ int (__stdcall *WriteSigData)(void* handle, void* data, long size);
+ int (__stdcall *CloseSig)(void* handle);
+ int (__stdcall *AbortSig)(void* handle);
+
+} CDDBModuleWorkOrderManagerInterface;
+
+typedef struct
+{
+ CDDBModuleInterface base;
+
+ /* SetAlwaysGenerate
+ * Description: Enables/disables a Work Order Plugin DLL to always generate
+ * a signature, regardless of work orders.
+ *
+ * Args: dll_filepath - full path and filename of the plugin DLL
+ * for example: (C:\App\Cddb12Tone.dll)
+ * b_always_generate - enable/disable ignoring work orders
+ * for example: (0 or 1)
+ *
+ * Returns: 0 for success or an error.
+ * Failure conditions include:
+ * Invalid argument
+ */
+ int (__stdcall *SetAlwaysGenerate)(char* dll_filepath,long b_always_generate);
+
+} CDDBModuleWorkOrderManagerInterface2;
+
+#endif /* CDDBMODULEWORKORDERMGR */
+
+#endif /* CDDBPLUGIN_WORKORDERMGR_H */
diff --git a/Src/gracenote/CDDBUIWinamp.dll b/Src/gracenote/CDDBUIWinamp.dll
new file mode 100644
index 00000000..2a408d79
--- /dev/null
+++ b/Src/gracenote/CDDBUIWinamp.dll
Binary files differ
diff --git a/Src/gracenote/CddbLinkWinamp.dll b/Src/gracenote/CddbLinkWinamp.dll
new file mode 100644
index 00000000..2c4e5108
--- /dev/null
+++ b/Src/gracenote/CddbLinkWinamp.dll
Binary files differ
diff --git a/Src/gracenote/CddbMusicIDUIWinamp.dll b/Src/gracenote/CddbMusicIDUIWinamp.dll
new file mode 100644
index 00000000..4237da5c
--- /dev/null
+++ b/Src/gracenote/CddbMusicIDUIWinamp.dll
Binary files differ
diff --git a/Src/gracenote/CddbMusicIDWinamp.dll b/Src/gracenote/CddbMusicIDWinamp.dll
new file mode 100644
index 00000000..6d9ce8f6
--- /dev/null
+++ b/Src/gracenote/CddbMusicIDWinamp.dll
Binary files differ
diff --git a/Src/gracenote/CddbPlaylist2Winamp.dll b/Src/gracenote/CddbPlaylist2Winamp.dll
new file mode 100644
index 00000000..d7eb50bd
--- /dev/null
+++ b/Src/gracenote/CddbPlaylist2Winamp.dll
Binary files differ
diff --git a/Src/gracenote/CddbWOManagerWinamp.dll b/Src/gracenote/CddbWOManagerWinamp.dll
new file mode 100644
index 00000000..da4837b6
--- /dev/null
+++ b/Src/gracenote/CddbWOManagerWinamp.dll
Binary files differ
diff --git a/Src/gracenote/Cddbx1.dll b/Src/gracenote/Cddbx1.dll
new file mode 100644
index 00000000..2f7e766a
--- /dev/null
+++ b/Src/gracenote/Cddbx1.dll
Binary files differ
diff --git a/Src/gracenote/Cddbx2.dll b/Src/gracenote/Cddbx2.dll
new file mode 100644
index 00000000..70ee6d48
--- /dev/null
+++ b/Src/gracenote/Cddbx2.dll
Binary files differ
diff --git a/Src/gracenote/Cddbx3.dll b/Src/gracenote/Cddbx3.dll
new file mode 100644
index 00000000..4ffc4e15
--- /dev/null
+++ b/Src/gracenote/Cddbx3.dll
Binary files differ
diff --git a/Src/gracenote/Cddbx4.dll b/Src/gracenote/Cddbx4.dll
new file mode 100644
index 00000000..559bfac7
--- /dev/null
+++ b/Src/gracenote/Cddbx4.dll
Binary files differ
diff --git a/Src/gracenote/Cddbx5.dll b/Src/gracenote/Cddbx5.dll
new file mode 100644
index 00000000..765650ef
--- /dev/null
+++ b/Src/gracenote/Cddbx5.dll
Binary files differ
diff --git a/Src/gracenote/GracenoteApi.cpp b/Src/gracenote/GracenoteApi.cpp
new file mode 100644
index 00000000..912367db
--- /dev/null
+++ b/Src/gracenote/GracenoteApi.cpp
@@ -0,0 +1,472 @@
+#include "GracenoteApi.h"
+#include "api.h"
+#include "../winamp/api_decodefile.h"
+#include <bfc/error.h>
+#include <limits.h>
+#include <shlwapi.h>
+#include <strsafe.h>
+
+GracenoteApi::GracenoteApi()
+{
+ cddbInitialized = false;
+ playlistInitialized = false;
+ pCDDBControl=0;
+}
+
+GracenoteApi::~GracenoteApi()
+{
+}
+
+void GracenoteApi::Close()
+{
+ if (pCDDBControl)
+ {
+ pCDDBControl->Shutdown();
+ pCDDBControl->Release();
+ pCDDBControl=0;
+ }
+}
+
+static void SetProxy(const wchar_t *proxy, ICddbOptions *options)
+{
+ wchar_t user[1024]=L"";
+ wchar_t pass[1024]=L"";
+ wchar_t server[1024]=L"";
+ int port=80;
+ if (!_wcsnicmp(proxy,L"https:",6))
+ port = 443;
+
+ const wchar_t *skip = wcsstr(proxy, L"://");
+ if (skip)
+ proxy = skip+3;
+
+ skip = wcsstr(proxy, L"@");
+ if (skip)
+ {
+ const wchar_t *delimiter = wcsstr(proxy, L":");
+ if (delimiter < skip) // make sure there's really a password (and we didn't end up finding the port number)
+ {
+ StringCchCopyNW(user, 1024, proxy, delimiter-proxy);
+ StringCchCopyNW(pass, 1024, delimiter+1, skip-(delimiter+1));
+ proxy=skip+1;
+ }
+ else
+ {
+ StringCchCopyNW(user, 1024, proxy, skip-proxy);
+ proxy=skip+1;
+ }
+ }
+
+ skip = wcsstr(proxy, L":"); // look for port
+ if (skip)
+ {
+ StringCchCopyNW(server, 1024, proxy, skip-proxy);
+ port = _wtoi(skip+1);
+ }
+ else
+ StringCchCopyW(server, 1024, proxy);
+
+ if (server[0])
+ options->put_ProxyServer(server);
+ if (port)
+ options->put_ProxyServerPort(port);
+ if (user[0])
+ options->put_ProxyUserName(user);
+ if (pass[0])
+ options->put_ProxyPassword(pass);
+}
+
+// {C0A565DC-0CFE-405a-A27C-468B0C8A3A5C}
+static const GUID internetConfigGroupGUID =
+ { 0xc0a565dc, 0xcfe, 0x405a, { 0xa2, 0x7c, 0x46, 0x8b, 0xc, 0x8a, 0x3a, 0x5c } };
+
+ICDDBControl2 *GracenoteApi::GetCDDB()
+{
+ Nullsoft::Utility::AutoLock lock(cddbGuard);
+ if (!cddbInitialized)
+ {
+ CoCreateInstance(__uuidof(CDDBNSWinampControl), 0, CLSCTX_INPROC_SERVER, IID_IUnknown, (void **)&pCDDBControl);
+ if (pCDDBControl == NULL)
+ return 0;
+
+#if 1 // TODO: benski> put back in once we can match winamp lang pack to a gracenote language ID
+ // translate if necessary
+ if (WASABI_API_LNG)
+ {
+ const wchar_t *langFolder = WASABI_API_LNG->GetLanguageFolder();
+ if (langFolder)
+ {
+ WIN32_FIND_DATAW find;
+ wchar_t mask[MAX_PATH] = {0}, maskLoc[16] = {0};
+
+ // attempt to get the language code to help better guess the CDDB dll needed
+ if(WASABI_API_LNG->GetLanguageIdentifier(LANG_IDENT_STR))
+ StringCchPrintfW(maskLoc, 16, L"CddbLang%s.dll", WASABI_API_LNG->GetLanguageIdentifier(LANG_LANG_CODE));
+
+ PathCombineW(mask, langFolder, maskLoc);
+ HANDLE hFind = FindFirstFileW(mask, &find);
+
+ // if the the guess provides nothing then scan for any valid dll (not ideal)
+ if (hFind == INVALID_HANDLE_VALUE)
+ {
+ PathCombineW(mask, langFolder, L"CddbLang*.dll");
+ hFind = FindFirstFileW(mask, &find);
+ }
+
+ if (hFind != INVALID_HANDLE_VALUE)
+ {
+ ICddbUIPtr ui;
+ ui.CreateInstance(__uuidof(CddbNSWinampUI));
+ if (ui)
+ {
+ long val = 0;
+ wchar_t cddb_lang_fn[MAX_PATH] = {0};
+ PathCombineW(cddb_lang_fn, langFolder, find.cFileName);
+ // TODO: benski> gracenote wants a "language ID" but we don't have a good way of knowing it :(
+ ui->SetUILanguage(0, cddb_lang_fn, &val);
+ // TODO: benski> also need to set ICddbOptions language ID
+ }
+ }
+ FindClose(hFind);
+ }
+ }
+#endif
+
+ // winamp browser id
+ //HRESULT hr = pCDDBControl->SetClientInfo(L"7944448", L"F8DE207FBA826F136FF2C7EFE0AAB181", L"1", L"regstring");
+ //wa5's id
+
+ const wchar_t *appVersion = WASABI_API_APP->main_getVersionNumString();
+
+ /* development client ID */
+ //HRESULT hr = pCDDBControl->SetClientInfo(L"3714048", L"B49286AE14F73CCD73C23B371A56DB00", const_cast<BSTR>(appVersion), L"regstring");
+
+ /* Beta Client ID */
+ //HRESULT hr = pCDDBControl->SetClientInfo(L"8337664", L"A222F2FA8B3E047291DFDBF465FD3C95", const_cast<BSTR>(appVersion), L"regstring");
+
+ /* Production Client ID */
+ BSTR appVersionBSTR = SysAllocString(appVersion);
+ HRESULT hr = pCDDBControl->SetClientInfo(L"4896768", L"C1519CAE91489E405BCA93531837F2BE", appVersionBSTR, L"regstring");
+ SysFreeString(appVersionBSTR);
+
+ if (FAILED(hr))
+ return 0;
+
+ long flags = CACHE_UPDATE_FUZZY | CACHE_DONT_WRITE_ANY | CACHE_NO_LOOKUP_MEDIA; //CACHE_SUBMIT_ALL | CACHE_SUBMIT_OFFLINE | CACHE_SUBMIT_NEW | CACHE_NO_LOOKUP_MEDIA;
+
+ // set cache path for cddb control
+ ICddbOptionsPtr pOptions;
+ hr = pCDDBControl->GetOptions(&pOptions);
+ if (SUCCEEDED(hr))
+ {
+ wchar_t dataPath[MAX_PATH] = {0};
+ PathCombineW(dataPath, WASABI_API_APP->path_getUserSettingsPath(), L"Plugins");
+ CreateDirectoryW(dataPath, 0);
+ PathAppendW(dataPath, L"Gracenote");
+ CreateDirectoryW(dataPath, 0);
+
+ hr = pOptions->put_LocalCachePath(dataPath);
+
+ // initial cache flags
+
+ //BOOL bOnline = SendMessage(line.hMainWindow, WM_USER, 0, 242);
+ //if (!bOnline)
+ //flags |= CACHE_DONT_CONNECT;
+
+ // other needed settings
+ hr = pOptions->put_ProgressEvents(FALSE);
+ //hr = pOptions->put_LocalCacheFlags(CACHE_DONT_CREATE | CACHE_UPDATE_FUZZY | CACHE_SUBMIT_ALL);
+ hr = pOptions->put_LocalCacheFlags(flags);
+ hr = pOptions->put_LocalCacheSize(128 * 1024); // 128 megabyte limit on local cache size
+ hr = pOptions->put_LocalCacheTimeout(5 * 365); // 5 years (e.g. when Gracenote contract runs out)
+ hr = pOptions->put_TestSubmitMode(FALSE);
+ //hr = pOptions->put_TestSubmitMode(TRUE); //CT> for BETA cycle...
+
+ // this is supposed to turn off the spinning logo in the upper-left-hand corner
+ hr = pOptions->put_ResourceModule(-1);
+
+ // get n set proxy settings
+ const wchar_t *proxy = AGAVE_API_CONFIG->GetString(internetConfigGroupGUID, L"proxy", L"");
+ if (proxy && proxy[0])
+ SetProxy(proxy, pOptions);
+
+ // save settings
+ hr = pCDDBControl->SetOptions(pOptions);
+ }
+
+ hr = pCDDBControl->Initialize(0/*(long)line.hMainWindow*/, (CDDBCacheFlags)flags);
+
+ // checks for user registration
+ long pVal=0;
+
+ // this must be called when control is first initialized
+ // this will load existing registration into control
+ hr = pCDDBControl->IsRegistered(FALSE, &pVal);
+
+ // if not reg'd, bring up reg UI (param1 = TRUE)
+ if (!pVal)
+ {
+ // do headless registration
+ ICddbUserInfoPtr pUser;
+
+ hr = pCDDBControl->GetUserInfo(&pUser);
+ if (pUser != NULL)
+ {
+ do
+ {
+ wchar_t strdata[129] = {0};
+ size_t size = sizeof(strdata)/sizeof(*strdata);
+ wchar_t *str = strdata;
+
+ GUID uid = GUID_NULL;
+ int x;
+ unsigned char *p;
+ CoCreateGuid(&uid);
+ p = (unsigned char *) & uid;
+ //lstrcpynW(str, L"WA2_", 129);
+ StringCchCopyExW(str, size, L"WA5_", &str, &size, 0);
+ for (x = 0; x < sizeof(uid); x ++)
+ {
+ StringCchPrintfExW(str, size, &str, &size, 0, L"%02X", p[x]);
+ //wsprintfW(str + wcslen(str), L"%02X", p[x]);
+ }
+
+ // user name will have to be unique per install
+ hr = pUser->put_UserHandle(strdata);
+ hr = pUser->put_Password(strdata);
+
+ hr = pCDDBControl->SetUserInfo(pUser);
+ }
+ while (hr == CDDBSVCHandleUsed);
+ }
+
+ // this is just to check again that the user is now registered
+ hr = pCDDBControl->IsRegistered(FALSE, &pVal);
+ }
+
+ cddbInitialized = true;
+ }
+
+ if (pCDDBControl)
+ pCDDBControl->AddRef();
+
+ return pCDDBControl;
+}
+
+#if 0
+/// This is the deprecated version of GetPlaylistManager that is no longer used without the MLDB manager
+ICddbPlaylist25Mgr *GracenoteApi::GetPlaylistManager()
+{
+ ICddbPlaylist25Mgr *playlistMgr;
+
+ ICDDBControl2 *cddb = GetCDDB();
+ if (!cddb)
+ return 0;
+
+ CoCreateInstance(__uuidof(CddbNSWinampPlaylist2Mgr), 0, CLSCTX_INPROC_SERVER, IID_IUnknown, (void **)&playlistMgr);
+ if (playlistMgr)
+ {
+ playlistMgr->AddRef();
+ wchar_t dataPath[MAX_PATH] = {0};
+ PathCombineW(dataPath, WASABI_API_APP->path_getUserSettingsPath(), L"Plugins");
+ CreateDirectoryW(dataPath, 0);
+ PathAppendW(dataPath, L"Gracenote");
+ CreateDirectoryW(dataPath, 0);
+
+ if (SUCCEEDED(playlistMgr->Initialize(cddb, dataPath)))
+ {
+ playlistMgr->DownloadCorrelates(0);
+ playlistInitialized = true;
+ }
+ else
+ {
+ playlistMgr->Release();
+ playlistMgr=0;
+ }
+ }
+ cddb->Release();
+ return playlistMgr;
+}
+#endif
+
+/// Caller is responsible for freeing the returned BSTR !!!
+BSTR SetAndCreatePath(const wchar_t *node)
+{
+ wchar_t path_to_create[MAX_PATH] = {0};
+
+ BSTR bPath = 0;
+
+ PathCombineW(path_to_create, WASABI_API_APP->path_getUserSettingsPath(), L"Plugins");
+ CreateDirectoryW(path_to_create, 0);
+ PathAppendW(path_to_create, node);
+ CreateDirectoryW(path_to_create, 0);
+
+ bPath = SysAllocString(path_to_create);
+ // modified path as return value
+ return bPath;
+}
+
+/// This has superceded the old GetPlaylistManager
+/// Returns both a playlist manager in 'playlistMgr' and an mldb manager in 'mldbMgr'
+//int GracenoteApi::GetPlaylistManagerWithMLDBManager(ICddbPlaylist25Mgr **playlistMgr, ICddbMLDBManager **mldbMgr)
+int GracenoteApi::GetPlaylistManager(ICddbPlaylist25Mgr **playlistMgr, ICddbMLDBManager **mldbMgr)
+{
+ ICddbPlaylist25Mgr *playlistMgrCreated;
+ ICddbMLDBManager *mldbMgrCreated;
+
+ ICDDBControl2 *cddb = GetCDDB();
+ if (!cddb)
+ return 0;
+
+ // Create the mldb manager
+ CoCreateInstance(__uuidof(CddbMLDBManager), 0, CLSCTX_INPROC_SERVER, IID_IUnknown, (void **)&mldbMgrCreated);
+ if (mldbMgrCreated)
+ {
+ //PL_MLDB_FLAGS_ZERO 0x00000000 Used for initialization.
+ //PL_MLDB_CHECK_BASE 0x00000001 Causes CheckDB to verify the consistency of the MLDB data file.
+ //PL_MLDB_CHECK_INDEX 0x00000002 Causes CheckDB to verify the consistency of the MLDB index file.
+ //PL_MLDB_CHECK_DEEP 0x00000004 Causes CheckDB to perform a thorough check of the MLDB file(s).
+ //PL_MLDB_CHECK_DEFAULT 0x00000007 Default operation of CheckDB.
+ //PL_MLDB_CLEAR_INIT_FLAG 0x00000010 Causes ModifyInitFlag to remove the file indicating Playlist is initialized.
+ //PL_MLDB_SET_INIT_FLAG 0x00000020 Causes ModifyInitFlag to create the file indicating Playlist is initialized.
+ //PL_MLDB_BACKUP_BASE 0x00000100 Causes BackupDB to create a backup copy of the MLDB data file.
+ //PL_MLDB_BACKUP_INDEX 0x00000200 Causes BackupDB to create a backup copy of the MLDB index file.
+ //PL_MLDB_RESTORE_BASE 0x00000400 Causes RestoreDB to restore the MLDB data file from the backup copy.
+ //PL_MLDB_RESTORE_INDEX 0x00000800 Causes RestoreDB to restore the MLDB index file from the backup copy.
+ //PL_MLDB_DELETE_INDEX 0x00001000 Causes DeleteDBFiles to remove the MLDB index file.
+ //PL_MLDB_DELETE_BASE 0x00002000 Causes DeleteDBFiles to remove the MLDB data file.
+ //PL_MLDB_DELETE_BACKUPS 0x00004000 Causes DeleteDBFiles to remove the MLDBbackup files.
+ //PL_MLDB_DELETE_OTHER 0x00008000 Causes DeleteDBFiles to remove the other (non-MLDB) files used by Playlist.
+ //PL_MLDB_AUTO_REINDEX 0x00010000 When specified in SetOptions, will cause theindex file to be automatically rebuilt atinitialization if it is corrupt.
+ //PL_MLDB_AUTO_BACKUP 0x00020000 When specified in SetOptions, will cause the MLDB files to be automatically backed up at shutdown (if they have been modified). PL_MLDB_AUTO_MANAGE_INIT_FLAG 0x00040000 When specified in SetOptions, will cause the “init file” to be managed automatically (created at initialization, deleted at shut down).
+ //PL_MLDB_AUTO_CHECK_IF_INIT_SET 0x00080000 When specified in SetOptions, will cause the MLDB files to be check at initialization if the “init file” exists (meaning shut down wasn’t called).
+ //PL_MLDB_AUTO_CHECK_AT_INIT 0x00100000 When specified in SetOptions, will cause the MLDB files to be checked always at initialization.
+ //PL_MLDB_AUTO_DEFAULT 0x000C0000 The default automatic behavior if no flags are specified with SetOptions.
+ //PL_MLDB_DEVICE_MLDB_42 0x01000000 Enable Gracenote Device SDK 4.2 compatibility for MLDB, list, and correlates files
+
+ //long autoFlags = PL_MLDB_AUTO_DEFAULT;
+ //long autoFlags = PL_MLDB_AUTO_REINDEX | PL_MLDB_AUTO_BACKUP | PL_MLDB_AUTO_MANAGE_INIT_FLAG | PL_MLDB_AUTO_CHECK_IF_INIT_SET | PL_MLDB_AUTO_CHECK_AT_INIT;
+ long autoFlags = PL_MLDB_AUTO_REINDEX | PL_MLDB_AUTO_BACKUP | PL_MLDB_AUTO_MANAGE_INIT_FLAG | PL_MLDB_AUTO_CHECK_IF_INIT_SET;
+ BSTR bDataPath = SetAndCreatePath(L"Gracenote");
+ BSTR bBackupPath = SetAndCreatePath(L"Gracenote/Backup");
+
+ mldbMgrCreated->AddRef();
+ mldbMgrCreated->SetOptions(autoFlags, bBackupPath);
+
+
+ CoCreateInstance(__uuidof(CddbNSWinampPlaylist2Mgr), 0, CLSCTX_INPROC_SERVER, IID_IUnknown, (void **)&playlistMgrCreated);
+ if (playlistMgrCreated)
+ {
+ playlistMgrCreated->AddRef();
+
+
+
+ mldbMgrCreated->Attach(playlistMgrCreated); // Attach the MLDB manager to the playlistMgr
+
+ if (SUCCEEDED(playlistMgrCreated->Initialize(cddb, bDataPath)))
+ {
+ playlistMgrCreated->DownloadCorrelates(0);
+ playlistInitialized = true;
+ }
+ else
+ {
+ playlistMgrCreated->Release();
+ playlistMgrCreated=0;
+ }
+ }
+
+ SysFreeString(bDataPath);
+ SysFreeString(bBackupPath);
+ }
+ cddb->Release();
+
+ *mldbMgr = mldbMgrCreated;
+ *playlistMgr = playlistMgrCreated;
+
+ if (mldbMgr && playlistMgr)
+ return NErr_Success;
+ else
+ return NErr_FailedCreate;
+}
+
+/// Dont really have to use this, get the MLDB manager when creating the playlist manager
+ICddbMLDBManager *GracenoteApi::GetMLDBManager()
+{
+ ICddbMLDBManager *mldbMgr;
+
+ ICDDBControl2 *cddb = GetCDDB();
+ if (!cddb)
+ return 0;
+
+ CoCreateInstance(__uuidof(CddbMLDBManager), 0, CLSCTX_INPROC_SERVER, IID_IUnknown, (void **)&mldbMgr);
+ if (mldbMgr)
+ {
+ mldbMgr->AddRef();
+ }
+ cddb->Release();
+ return mldbMgr;
+}
+
+HRESULT GracenoteApi::CreateFingerprint(ICDDBMusicIDManager *musicID, api_decodefile *decodeApi, ICddbFileInfo *info, const wchar_t *filename, long *killswitch)
+{
+ if (!musicID || !decodeApi)
+ return E_FAIL;
+
+ ICddbMusicIDFingerprinterPtr fingerprinter;
+ musicID->CreateFingerprinter(NULL, &fingerprinter);
+
+ AudioParameters parameters;
+ parameters.bitsPerSample = 16;
+ parameters.channels = 2;
+ parameters.sampleRate = 44100;
+ ifc_audiostream *decoder = decodeApi->OpenAudioBackground(filename, &parameters);
+ if (decoder)
+ {
+ HRESULT hr = fingerprinter->BeginAudioStream((long)parameters.sampleRate, (long)parameters.bitsPerSample, (long)parameters.channels);
+ char data[65536] = {0};
+ size_t decodeSize;
+ int decode_killswitch=0, decode_error;
+ while (decodeSize = decoder->ReadAudio((void *)data, sizeof(data), &decode_killswitch, &decode_error))
+ {
+ if (decodeSize > LONG_MAX) // I _really_ doubt this is going to happen, but just in case, since we cast down to a long
+ break;
+
+ if (*killswitch)
+ break;
+ hr = fingerprinter->WriteAudioData(data, (long)decodeSize);
+ if (hr == CDDBMusicID_FPAcquired)
+ break;
+ }
+ ICddbMusicIDFingerprintPtr fingerprint;
+ fingerprinter->EndAudioStream(&fingerprint);
+ decodeApi->CloseAudio(decoder);
+
+ hr=info->put_Fingerprint(fingerprint);
+ return S_OK;
+ }
+ return E_FAIL;
+}
+
+ICDDBMusicIDManager3 *GracenoteApi::GetMusicID()
+{
+ ICDDBControl2 *cddb = GetCDDB();
+ if (!cddb)
+ return 0;
+ ICDDBMusicIDManager3 *musicID;
+ CoCreateInstance(__uuidof(CDDBNSWinampMusicIDManager), 0, CLSCTX_INPROC_SERVER, IID_IUnknown, (void **)&musicID);
+ if (musicID)
+ musicID->Initialize(cddb);
+ cddb->Release();
+ return musicID;
+}
+
+#define CBCLASS GracenoteApi
+START_DISPATCH;
+CB(API_GRACENOTE_GETCDDB, GetCDDB)
+CB(API_GRACENOTE_GETMUSICID, GetMusicID)
+CB(API_GRACENOTE_GETPLAYLISTMGR, GetPlaylistManager)
+//CB(API_GRACENOTE_GETPLAYLISTMGRWITHMLDBMGR, GetPlaylistManagerWithMLDBManager)
+CB(API_GRACENOTE_GETMLDBMGR, GetMLDBManager)
+CB(API_GRACENOTE_CREATEFINGERPRINT, CreateFingerprint)
+END_DISPATCH;
+#undef CBCLASS \ No newline at end of file
diff --git a/Src/gracenote/GracenoteApi.h b/Src/gracenote/GracenoteApi.h
new file mode 100644
index 00000000..b36ecf16
--- /dev/null
+++ b/Src/gracenote/GracenoteApi.h
@@ -0,0 +1,33 @@
+#ifndef NULLSOFT_GRACENOTE_GRACENOTEAPI_H
+#define NULLSOFT_GRACENOTE_GRACENOTEAPI_H
+
+#include "api_gracenote.h"
+#include "../nu/AutoLock.h"
+
+class GracenoteApi : public api_gracenote
+{
+public:
+ GracenoteApi();
+ ~GracenoteApi();
+ ICDDBControl2 *GetCDDB();
+ ICDDBMusicIDManager3 *GetMusicID(); // TODO: might need to instantiate separate objects because each manager can only have 1 event handler
+ //ICddbPlaylist25Mgr *GetPlaylistManager();
+ //int GetPlaylistManagerWithMLDBManager(ICddbPlaylist25Mgr **playlistMg, ICddbMLDBManager **mldbMgr);
+ int GetPlaylistManager(ICddbPlaylist25Mgr **playlistMg, ICddbMLDBManager **mldbMgr);
+ ICddbMLDBManager *GetMLDBManager();
+ void Close();
+
+ /* Some utility functions */
+ HRESULT CreateFingerprint(ICDDBMusicIDManager *musicID, api_decodefile *decodeApi, ICddbFileInfo *info, const wchar_t *filename, long *killswitch);
+private:
+ bool cddbInitialized, playlistInitialized;
+
+ ICDDBControl2 *pCDDBControl;
+
+ Nullsoft::Utility::LockGuard cddbGuard;
+protected:
+ RECVS_DISPATCH;
+};
+
+extern GracenoteApi gracenoteApi;
+#endif \ No newline at end of file
diff --git a/Src/gracenote/GracenoteFactory.cpp b/Src/gracenote/GracenoteFactory.cpp
new file mode 100644
index 00000000..fcdc943e
--- /dev/null
+++ b/Src/gracenote/GracenoteFactory.cpp
@@ -0,0 +1,61 @@
+#include "api.h"
+#include "GracenoteFactory.h"
+#include "GracenoteApi.h"
+GracenoteApi gracenoteApi;
+static const char serviceName[] = "Gracenote API";
+
+FOURCC GracenoteFactory::GetServiceType()
+{
+ return WaSvc::UNIQUE;
+}
+
+const char *GracenoteFactory::GetServiceName()
+{
+ return serviceName;
+}
+
+GUID GracenoteFactory::GetGUID()
+{
+ return gracenoteApiGUID;
+}
+
+void *GracenoteFactory::GetInterface(int global_lock)
+{
+ return &gracenoteApi;
+// if (global_lock)
+// WASABI_API_SVC->service_lock(this, (void *)ifc);
+}
+
+int GracenoteFactory::SupportNonLockingInterface()
+{
+ return 1;
+}
+
+int GracenoteFactory::ReleaseInterface(void *ifc)
+{
+ //WASABI_API_SVC->service_unlock(ifc);
+ return 1;
+}
+
+const char *GracenoteFactory::GetTestString()
+{
+ return NULL;
+}
+
+int GracenoteFactory::ServiceNotify(int msg, int param1, int param2)
+{
+ return 1;
+}
+
+#define CBCLASS GracenoteFactory
+START_DISPATCH;
+CB(WASERVICEFACTORY_GETSERVICETYPE, GetServiceType)
+CB(WASERVICEFACTORY_GETSERVICENAME, GetServiceName)
+CB(WASERVICEFACTORY_GETGUID, GetGUID)
+CB(WASERVICEFACTORY_GETINTERFACE, GetInterface)
+CB(WASERVICEFACTORY_SUPPORTNONLOCKINGGETINTERFACE, SupportNonLockingInterface)
+CB(WASERVICEFACTORY_RELEASEINTERFACE, ReleaseInterface)
+CB(WASERVICEFACTORY_GETTESTSTRING, GetTestString)
+CB(WASERVICEFACTORY_SERVICENOTIFY, ServiceNotify)
+END_DISPATCH;
+#undef CBCLASS
diff --git a/Src/gracenote/GracenoteFactory.h b/Src/gracenote/GracenoteFactory.h
new file mode 100644
index 00000000..19881001
--- /dev/null
+++ b/Src/gracenote/GracenoteFactory.h
@@ -0,0 +1,23 @@
+#ifndef NULLSOFT_GRACENOTEFACTORY_H
+#define NULLSOFT_GRACENOTEFACTORY_H
+
+#include <api/service/waservicefactory.h>
+#include <api/service/services.h>
+
+class GracenoteFactory : public waServiceFactory
+{
+public:
+ FOURCC GetServiceType();
+ const char *GetServiceName();
+ GUID GetGUID();
+ void *GetInterface(int global_lock);
+ int SupportNonLockingInterface();
+ int ReleaseInterface(void *ifc);
+ const char *GetTestString();
+ int ServiceNotify(int msg, int param1, int param2);
+
+protected:
+ RECVS_DISPATCH;
+};
+
+#endif \ No newline at end of file
diff --git a/Src/gracenote/api.h b/Src/gracenote/api.h
new file mode 100644
index 00000000..9ca1b770
--- /dev/null
+++ b/Src/gracenote/api.h
@@ -0,0 +1,13 @@
+#ifndef NULLSOFT_GRACENOTE_API_H
+#define NULLSOFT_GRACENOTE_API_H
+
+#include <api/application/api_application.h>
+#define WASABI_API_APP applicationApi
+
+#include "../Agave/Config/api_config.h"
+extern api_config *agaveConfigApi;
+#define AGAVE_API_CONFIG agaveConfigApi
+
+#include "../Agave/Language/api_language.h"
+
+#endif \ No newline at end of file
diff --git a/Src/gracenote/api_gracenote.cpp b/Src/gracenote/api_gracenote.cpp
new file mode 100644
index 00000000..1e78d9fe
--- /dev/null
+++ b/Src/gracenote/api_gracenote.cpp
@@ -0,0 +1,3 @@
+#include "api_gracenote.h"
+
+// Just an empty file to ensure that api_gracenote.h is #includable by itself \ No newline at end of file
diff --git a/Src/gracenote/api_gracenote.h b/Src/gracenote/api_gracenote.h
new file mode 100644
index 00000000..fe662f16
--- /dev/null
+++ b/Src/gracenote/api_gracenote.h
@@ -0,0 +1,92 @@
+#ifndef NULLSOFT_GRACENOTE_API_GRACENOTE_H
+#define NULLSOFT_GRACENOTE_API_GRACENOTE_H
+
+/* benski>
+ * This API is facilitate initialization of Gracenote objects
+ * as well as a few common functions
+ *
+ * It is _NOT_ meant to be a wrapper around the Gracenote API
+ * It simply ensure that all plugins create objects with the same
+ * configuration, which improves code maintainability and reduces
+ * compiled file sizes.
+ */
+
+#include <bfc/dispatch.h>
+#include "gracenote.h"
+
+class api_decodefile;
+
+class api_gracenote : public Dispatchable
+{
+protected:
+ api_gracenote() {}
+ ~api_gracenote() {}
+
+public:
+ /* These return Gracenote COM objects. Since COM handles referencing counting,
+ * you can simply call their Release() method when you are done.
+ */
+
+ ICDDBControl2 *GetCDDB();
+ ICDDBMusicIDManager3 *GetMusicID(); // makes a new instance, always
+ //ICddbPlaylist25Mgr *GetPlaylistManager(); // makes a new instance, always
+ //int GetPlaylistManagerWithMLDBManager(ICddbPlaylist25Mgr **playlistMgr, ICddbMLDBManager **mldbMgr); // makes a new instance, always
+ int GetPlaylistManager(ICddbPlaylist25Mgr **playlistMgr, ICddbMLDBManager **mldbMgr); // makes a new instance, always
+ ICddbMLDBManager *GetMLDBManager();
+ void ReleasePlaylistManager();
+
+ /* Some utility functions */
+ HRESULT CreateFingerprint(ICDDBMusicIDManager *musicID, api_decodefile *decodeApi, ICddbFileInfo *info, const wchar_t *filename, long *killswitch);
+
+ DISPATCH_CODES
+ {
+ API_GRACENOTE_GETCDDB = 10,
+ API_GRACENOTE_GETMUSICID=20,
+ //API_GRACENOTE_GETPLAYLISTMGR=30, // Older codes can be removed
+ //API_GRACENOTE_GETPLAYLISTMGRWITHMLDBMGR=40, // ""
+ API_GRACENOTE_GETPLAYLISTMGR=40,
+ API_GRACENOTE_GETMLDBMGR=50,
+ API_GRACENOTE_CREATEFINGERPRINT=1000,
+ };
+};
+
+inline ICDDBControl2 *api_gracenote::GetCDDB()
+{
+ return _call(API_GRACENOTE_GETCDDB, (ICDDBControl2 *)0);
+}
+inline ICDDBMusicIDManager3 *api_gracenote::GetMusicID()
+{
+ return _call(API_GRACENOTE_GETMUSICID, (ICDDBMusicIDManager3 *)0);
+}
+
+/*inline ICddbPlaylist25Mgr *api_gracenote::GetPlaylistManager()
+{
+ return _call(API_GRACENOTE_GETPLAYLISTMGR, (ICddbPlaylist25Mgr *)0);
+}
+
+inline int api_gracenote::GetPlaylistManagerWithMLDBManager(ICddbPlaylist25Mgr **playlistMgr, ICddbMLDBManager **mldbMgr)
+{
+ return _call(API_GRACENOTE_GETPLAYLISTMGRWITHMLDBMGR, 0, playlistMgr, mldbMgr);
+}*/
+
+inline int api_gracenote::GetPlaylistManager(ICddbPlaylist25Mgr **playlistMgr, ICddbMLDBManager **mldbMgr)
+{
+ return _call(API_GRACENOTE_GETPLAYLISTMGR, 0, playlistMgr, mldbMgr);
+}
+
+inline ICddbMLDBManager *api_gracenote::GetMLDBManager()
+{
+ return _call(API_GRACENOTE_GETMLDBMGR, (ICddbMLDBManager *)0);
+}
+
+inline HRESULT api_gracenote::CreateFingerprint(ICDDBMusicIDManager *musicID, api_decodefile *decodeApi, ICddbFileInfo *info, const wchar_t *filename, long *killswitch)
+{
+ return _call(API_GRACENOTE_CREATEFINGERPRINT, E_FAIL, musicID, decodeApi, info, filename, killswitch);
+}
+
+
+// {877D90AB-FAC1-4366-B3B0-EB177F42CFCE}
+static const GUID gracenoteApiGUID =
+ { 0x877d90ab, 0xfac1, 0x4366, { 0xb3, 0xb0, 0xeb, 0x17, 0x7f, 0x42, 0xcf, 0xce } };
+
+#endif \ No newline at end of file
diff --git a/Src/gracenote/cddbcontrolwinamp.tlh b/Src/gracenote/cddbcontrolwinamp.tlh
new file mode 100644
index 00000000..bffb062d
--- /dev/null
+++ b/Src/gracenote/cddbcontrolwinamp.tlh
@@ -0,0 +1,3027 @@
+// Created by Microsoft (R) C/C++ Compiler Version 15.00.30729.01 (e63a5d34).
+//
+// f:\sandbox\20131028_225933\winamp\release\cddbcontrolwinamp.tlh
+//
+// C++ source equivalent of Win32 type library ../gracenote/CDDBControlWinamp.dll
+// compiler-generated file created 10/28/13 at 23:18:29 - DO NOT EDIT!
+
+#pragma once
+#pragma pack(push, 8)
+
+#include <comdef.h>
+
+//
+// Forward references and typedefs
+//
+
+struct __declspec(uuid("65eba1d4-45e2-4ec5-a7ff-cb7e14659c77"))
+/* LIBID */ __CDDBCONTROLLibNSWinamp;
+enum CDDBErrors;
+enum CDDBCommands;
+enum CDDBLogFlags;
+enum CDDBUIFlags;
+enum CDDBTagFlags;
+enum CDDBEventCodes;
+enum CDDBProperty;
+enum CDDBMatchCode;
+enum CDDBProgressCodes;
+enum CDDBCacheFlags;
+enum CDDBFlushFlags;
+enum CDDBServerMessageCodes;
+enum CDDBServerMessageActions;
+enum CDDBExtDataFlags;
+enum CDDBDataListID;
+enum CDDBDataListOptions;
+enum CDDBDataListFlags;
+enum CddbDataOptions;
+struct __declspec(uuid("fc288125-6636-405c-be68-e9d37700deb0"))
+/* dispinterface */ DCDDBEvents;
+struct __declspec(uuid("723695c2-3b01-42c3-a661-64d2ec30b4e5"))
+/* dual interface */ ICDDBControl;
+struct /* coclass */ CddbUserInfo;
+struct __declspec(uuid("4570cddc-94f8-4b43-b1ac-796d68fac7df"))
+/* dual interface */ ICddbUserInfo;
+struct /* coclass */ CddbOptions;
+struct __declspec(uuid("30755708-ae75-49f8-b99a-ac8d095d0448"))
+/* dual interface */ ICddbOptions;
+struct /* coclass */ CddbDisc;
+struct __declspec(uuid("5220e8fa-b11f-46cf-9786-51b11e05f657"))
+/* dual interface */ ICddbDisc;
+struct /* coclass */ CddbTrack;
+struct __declspec(uuid("7da05059-cfb4-46ce-a788-709a3ad3454d"))
+/* dual interface */ ICddbTrack;
+struct /* coclass */ CddbFullName;
+struct __declspec(uuid("2b6107ad-d1f2-41c3-b9b9-3349324f7e7b"))
+/* dual interface */ ICddbFullName;
+struct /* coclass */ CddbCredit;
+struct __declspec(uuid("2aae501a-6d20-4af3-8c79-473106bd5391"))
+/* dual interface */ ICddbCredit;
+struct /* coclass */ CddbCredits;
+struct __declspec(uuid("c30fbc5c-f56c-40dd-841d-5e4428f3baea"))
+/* dual interface */ ICddbCredits;
+struct /* coclass */ CddbTracks;
+struct __declspec(uuid("a1fa4e71-b4e0-4378-a102-04e850e0aa18"))
+/* dual interface */ ICddbTracks;
+struct /* coclass */ CddbSegments;
+struct __declspec(uuid("31480e0f-de17-4cae-8d85-1db90f9fcd2f"))
+/* dual interface */ ICddbSegments;
+struct /* coclass */ CddbSegment;
+struct __declspec(uuid("375b697c-06a1-4d99-9f5d-3589001b15fd"))
+/* dual interface */ ICddbSegment;
+struct /* coclass */ CddbURLTree;
+struct __declspec(uuid("20d2984f-0d6d-49f9-aa80-36030cef0a42"))
+/* dual interface */ ICddbURLTree;
+struct /* coclass */ CddbURLList;
+struct __declspec(uuid("680f25c4-044b-4de0-998f-dfa463626e13"))
+/* dual interface */ ICddbURLList;
+struct /* coclass */ CddbURL;
+struct __declspec(uuid("751e8ace-610b-4336-b425-5038154f68a2"))
+/* dual interface */ ICddbURL;
+struct /* coclass */ CddbLanguages;
+struct __declspec(uuid("686f7bce-1edb-4540-8c25-bba9ce7b2323"))
+/* dual interface */ ICddbLanguages;
+struct /* coclass */ CddbDiscs;
+struct __declspec(uuid("0d5072cc-86a0-4600-bb7f-da7723ddd298"))
+/* dual interface */ ICddbDiscs;
+struct /* coclass */ CddbGenreList;
+struct __declspec(uuid("9151953e-0621-4167-bcb6-36f8e65ec6c9"))
+/* dual interface */ ICddbGenreList;
+struct /* coclass */ CddbGenre;
+struct __declspec(uuid("4b3be7ee-9a6e-4276-8701-3a85f5d9e3c5"))
+/* dual interface */ ICddbGenre;
+struct /* coclass */ CddbGenreTree;
+struct __declspec(uuid("37668f25-b3ff-42ea-a3f9-25ea0740902e"))
+/* dual interface */ ICddbGenreTree;
+struct /* coclass */ CddbRegionList;
+struct __declspec(uuid("c841589b-ce3d-4fef-9422-2832a64d321e"))
+/* dual interface */ ICddbRegionList;
+struct /* coclass */ CddbRegion;
+struct __declspec(uuid("57b9551a-a3ea-484d-8fc6-1b4ec7d2420d"))
+/* dual interface */ ICddbRegion;
+struct /* coclass */ CddbRoleList;
+struct __declspec(uuid("614d9d0a-c012-4863-afbf-9c9dd01e04d1"))
+/* dual interface */ ICddbRoleList;
+struct /* coclass */ CddbRole;
+struct __declspec(uuid("84f40113-d6ca-4289-acfa-b8b1691e596b"))
+/* dual interface */ ICddbRole;
+struct /* coclass */ CddbRoleTree;
+struct __declspec(uuid("0ba44da2-a91d-4c60-8e48-61b5e69495ea"))
+/* dual interface */ ICddbRoleTree;
+struct /* coclass */ CddbLanguageList;
+struct __declspec(uuid("719c744f-cdef-49c2-9ada-df5ba8770f4b"))
+/* dual interface */ ICddbLanguageList;
+struct /* coclass */ CddbLanguage;
+struct __declspec(uuid("06c77e4d-fe13-4fa4-b52a-1cf2e047f55f"))
+/* dual interface */ ICddbLanguage;
+struct /* coclass */ CddbFieldList;
+struct __declspec(uuid("cf6268fd-7ba3-4cc5-9de1-fead923d216c"))
+/* dual interface */ ICddbFieldList;
+struct /* coclass */ CddbField;
+struct __declspec(uuid("aa3218d8-a65c-4a29-8690-1e5b75dbf3b8"))
+/* dual interface */ ICddbField;
+struct /* coclass */ CddbURLManager;
+struct __declspec(uuid("623ce0d4-7b45-4b69-a28d-2401e7aa16d4"))
+/* dual interface */ ICddbURLManager;
+struct /* coclass */ CddbID3TagManager;
+struct __declspec(uuid("e7bbbe3a-dc3c-4d00-98f9-bc620ca952f8"))
+/* dual interface */ ICddbID3TagManager;
+struct /* coclass */ CddbID3Tag;
+struct __declspec(uuid("7b2d9eb8-70aa-43d3-aa8e-e71ce53a83d8"))
+/* dual interface */ ICddbID3Tag;
+struct __declspec(uuid("ca4e0490-7ed8-44a5-9ecd-d00b90dbe808"))
+/* dual interface */ ICddbFileTag;
+struct __declspec(uuid("44959787-915b-4fcf-9763-1038483c000e"))
+/* dual interface */ ICddbID3Tag2;
+struct __declspec(uuid("3254573e-1053-4430-9ca6-7b9b89638515"))
+/* dual interface */ ICddbFileTag2_5;
+struct __declspec(uuid("2a050616-00e0-49c3-bc60-23c5192b25d3"))
+/* dual interface */ ICddbExtData;
+struct __declspec(uuid("45d1d297-dd01-4890-928c-34e1ba494a14"))
+/* dual interface */ ICddbDisc2;
+struct /* coclass */ CddbDisc2;
+struct __declspec(uuid("f19a9d2d-2287-4c64-96c7-4bb63edec9c5"))
+/* dual interface */ ICddbDataListElement;
+struct __declspec(uuid("c412e44b-a911-4e2e-ab26-f12bdb23ee55"))
+/* dual interface */ ICddbDataList;
+struct __declspec(uuid("d0f041d4-1570-4143-bb6a-4ce041b109d4"))
+/* dual interface */ ICddbInfoWindow;
+struct __declspec(uuid("06c18ba6-86a0-464c-b838-13a74e1ad049"))
+/* dual interface */ ICddbUIOptions;
+struct __declspec(uuid("d6f791c8-a7f7-4702-9d24-4b8f8ca4c807"))
+/* dual interface */ ICddbTrackManager;
+struct __declspec(uuid("1b0700ee-c9c7-4fca-9584-1096268cf6c4"))
+/* dual interface */ ICDDBControl2;
+struct __declspec(uuid("63c7d158-bca0-4c29-96c4-06bdd744ecc2"))
+/* dual interface */ ICddbOptions2;
+struct __declspec(uuid("db780e88-d446-4157-af74-04e8e48e46a3"))
+/* dual interface */ ICddbDisc2_5;
+struct __declspec(uuid("a354a00f-1f1d-44bb-853f-cb77153c302c"))
+/* dual interface */ ICddbDisc2_6;
+struct __declspec(uuid("d27c6efc-76ed-4724-9741-9531fc52242c"))
+/* dual interface */ ICddbWork;
+struct __declspec(uuid("e5c5f8ea-6f8d-4bd0-8856-95ddd5668cde"))
+/* dual interface */ ICddbTrack2;
+struct __declspec(uuid("24959692-aac0-411d-9e6b-c7611fccacba"))
+/* dual interface */ ICddbTrack2_5;
+struct __declspec(uuid("e7d07c78-6084-4628-89f6-6f89dd5f1a9f"))
+/* dual interface */ ICddbTrack2_6;
+struct __declspec(uuid("7af4e5e5-2deb-462f-bbaf-684146856c6b"))
+/* dual interface */ ICddbCacheManager;
+struct __declspec(uuid("49d2a10d-a5f3-4bd0-9c15-6b2b94f16593"))
+/* dual interface */ ICddbWMATag;
+struct __declspec(uuid("1bba432e-84b5-4559-bcf7-cbc199ed6085"))
+/* dual interface */ ICddbOptions2_5;
+struct __declspec(uuid("e6051029-5694-4e7d-a524-7e38f3c9443d"))
+/* dual interface */ ICddbListManager;
+struct __declspec(uuid("fe5e5b63-8154-4cb0-8ffc-a0aab7dbe9d5"))
+/* dual interface */ ICddbDataListTree;
+struct /* coclass */ CDDBNSWinampControl;
+struct /* coclass */ CDDBProps;
+struct /* coclass */ CddbInfoWindow;
+struct /* coclass */ CddbUIOptions;
+struct /* coclass */ CddbTrackManager;
+struct /* coclass */ CDDBControl2;
+struct /* coclass */ CddbOptions2;
+struct /* coclass */ CddbTrack2;
+struct /* coclass */ CddbCacheManager;
+struct /* coclass */ CddbWMATag;
+struct /* coclass */ CddbListManager;
+struct /* coclass */ CddbDataListTree;
+struct /* coclass */ CddbDataList;
+struct /* coclass */ CddbDataListElement;
+struct /* coclass */ CddbExtData;
+struct /* coclass */ CddbWork;
+
+//
+// Smart pointer typedef declarations
+//
+
+_COM_SMARTPTR_TYPEDEF(DCDDBEvents, __uuidof(DCDDBEvents));
+_COM_SMARTPTR_TYPEDEF(ICddbUserInfo, __uuidof(ICddbUserInfo));
+_COM_SMARTPTR_TYPEDEF(ICddbOptions, __uuidof(ICddbOptions));
+_COM_SMARTPTR_TYPEDEF(ICddbFullName, __uuidof(ICddbFullName));
+_COM_SMARTPTR_TYPEDEF(ICddbCredit, __uuidof(ICddbCredit));
+_COM_SMARTPTR_TYPEDEF(ICddbTrack, __uuidof(ICddbTrack));
+_COM_SMARTPTR_TYPEDEF(ICddbCredits, __uuidof(ICddbCredits));
+_COM_SMARTPTR_TYPEDEF(ICddbTracks, __uuidof(ICddbTracks));
+_COM_SMARTPTR_TYPEDEF(ICddbSegments, __uuidof(ICddbSegments));
+_COM_SMARTPTR_TYPEDEF(ICddbSegment, __uuidof(ICddbSegment));
+_COM_SMARTPTR_TYPEDEF(ICddbURLTree, __uuidof(ICddbURLTree));
+_COM_SMARTPTR_TYPEDEF(ICddbURLList, __uuidof(ICddbURLList));
+_COM_SMARTPTR_TYPEDEF(ICddbURL, __uuidof(ICddbURL));
+_COM_SMARTPTR_TYPEDEF(ICddbDisc, __uuidof(ICddbDisc));
+_COM_SMARTPTR_TYPEDEF(ICddbLanguages, __uuidof(ICddbLanguages));
+_COM_SMARTPTR_TYPEDEF(ICddbDiscs, __uuidof(ICddbDiscs));
+_COM_SMARTPTR_TYPEDEF(ICddbGenreList, __uuidof(ICddbGenreList));
+_COM_SMARTPTR_TYPEDEF(ICddbGenre, __uuidof(ICddbGenre));
+_COM_SMARTPTR_TYPEDEF(ICddbGenreTree, __uuidof(ICddbGenreTree));
+_COM_SMARTPTR_TYPEDEF(ICddbRegionList, __uuidof(ICddbRegionList));
+_COM_SMARTPTR_TYPEDEF(ICddbRegion, __uuidof(ICddbRegion));
+_COM_SMARTPTR_TYPEDEF(ICddbRoleList, __uuidof(ICddbRoleList));
+_COM_SMARTPTR_TYPEDEF(ICddbRole, __uuidof(ICddbRole));
+_COM_SMARTPTR_TYPEDEF(ICddbRoleTree, __uuidof(ICddbRoleTree));
+_COM_SMARTPTR_TYPEDEF(ICddbLanguageList, __uuidof(ICddbLanguageList));
+_COM_SMARTPTR_TYPEDEF(ICddbLanguage, __uuidof(ICddbLanguage));
+_COM_SMARTPTR_TYPEDEF(ICddbFieldList, __uuidof(ICddbFieldList));
+_COM_SMARTPTR_TYPEDEF(ICddbField, __uuidof(ICddbField));
+_COM_SMARTPTR_TYPEDEF(ICddbURLManager, __uuidof(ICddbURLManager));
+_COM_SMARTPTR_TYPEDEF(ICDDBControl, __uuidof(ICDDBControl));
+_COM_SMARTPTR_TYPEDEF(ICddbID3TagManager, __uuidof(ICddbID3TagManager));
+_COM_SMARTPTR_TYPEDEF(ICddbFileTag, __uuidof(ICddbFileTag));
+_COM_SMARTPTR_TYPEDEF(ICddbID3Tag, __uuidof(ICddbID3Tag));
+_COM_SMARTPTR_TYPEDEF(ICddbID3Tag2, __uuidof(ICddbID3Tag2));
+_COM_SMARTPTR_TYPEDEF(ICddbDisc2, __uuidof(ICddbDisc2));
+_COM_SMARTPTR_TYPEDEF(ICddbInfoWindow, __uuidof(ICddbInfoWindow));
+_COM_SMARTPTR_TYPEDEF(ICddbUIOptions, __uuidof(ICddbUIOptions));
+_COM_SMARTPTR_TYPEDEF(ICddbTrackManager, __uuidof(ICddbTrackManager));
+_COM_SMARTPTR_TYPEDEF(ICDDBControl2, __uuidof(ICDDBControl2));
+_COM_SMARTPTR_TYPEDEF(ICddbOptions2, __uuidof(ICddbOptions2));
+_COM_SMARTPTR_TYPEDEF(ICddbWork, __uuidof(ICddbWork));
+_COM_SMARTPTR_TYPEDEF(ICddbTrack2, __uuidof(ICddbTrack2));
+_COM_SMARTPTR_TYPEDEF(ICddbCacheManager, __uuidof(ICddbCacheManager));
+_COM_SMARTPTR_TYPEDEF(ICddbWMATag, __uuidof(ICddbWMATag));
+_COM_SMARTPTR_TYPEDEF(ICddbOptions2_5, __uuidof(ICddbOptions2_5));
+_COM_SMARTPTR_TYPEDEF(ICddbFileTag2_5, __uuidof(ICddbFileTag2_5));
+_COM_SMARTPTR_TYPEDEF(ICddbExtData, __uuidof(ICddbExtData));
+_COM_SMARTPTR_TYPEDEF(ICddbDataListElement, __uuidof(ICddbDataListElement));
+_COM_SMARTPTR_TYPEDEF(ICddbDataList, __uuidof(ICddbDataList));
+_COM_SMARTPTR_TYPEDEF(ICddbDisc2_5, __uuidof(ICddbDisc2_5));
+_COM_SMARTPTR_TYPEDEF(ICddbDisc2_6, __uuidof(ICddbDisc2_6));
+_COM_SMARTPTR_TYPEDEF(ICddbTrack2_5, __uuidof(ICddbTrack2_5));
+_COM_SMARTPTR_TYPEDEF(ICddbTrack2_6, __uuidof(ICddbTrack2_6));
+_COM_SMARTPTR_TYPEDEF(ICddbDataListTree, __uuidof(ICddbDataListTree));
+_COM_SMARTPTR_TYPEDEF(ICddbListManager, __uuidof(ICddbListManager));
+
+//
+// Type library items
+//
+
+enum CDDBErrors
+{
+ ERR_DomainMask = 134152192,
+ ERR_DomainTransport = 49938432,
+ ERR_DomainService = 50003968,
+ ERR_DomainControl = 50069504,
+ ERR_DomainCache = 50135040,
+ ERR_DomainLists = 50200576,
+ ERR_CodeMask = 65535,
+ ERR_Busy = 1,
+ ERR_NotRegistered = 2,
+ ERR_HandleUsed = 3,
+ ERR_InvalidParameter = 4,
+ ERR_MissingField = 5,
+ ERR_MissingProperty = 6,
+ ERR_NoCommand = 7,
+ ERR_NoClientInfo = 8,
+ ERR_NotInitialized = 9,
+ ERR_InvalidTagId = 10,
+ ERR_Disabled = 11,
+ CDDBTRNOutOfMemory = -2097545215,
+ CDDBTRNBadPointer = -2097545214,
+ CDDBTRNOutOfRange = -2097545213,
+ CDDBTRNCorruptedData = -2097545212,
+ CDDBTRNFieldNotFound = -2097545211,
+ CDDBTRNUnknownEncoding = -2097545210,
+ CDDBTRNSockInitErr = -2097545209,
+ CDDBTRNHostNotFound = -2097545208,
+ CDDBTRNSockCreateErr = -2097545207,
+ CDDBTRNSockOpenErr = -2097545206,
+ CDDBTRNSendFailed = -2097545205,
+ CDDBTRNRecvFailed = -2097545204,
+ CDDBTRNNoEvent = -2097545203,
+ CDDBTRNNoUserInfo = -2097545202,
+ CDDBTRNBatchNest = -2097545201,
+ CDDBTRNBatchNotOpen = -2097545200,
+ CDDBTRNBadResponseSyntax = -2097545199,
+ CDDBTRNUnknownCompression = -2097545198,
+ CDDBTRNTooManyRetries = -2097545197,
+ CDDBTRNRecordNotFound = -2097545196,
+ CDDBTRNKeyTooLong = -2097545195,
+ CDDBTRNURLNotFound = -2097545194,
+ CDDBTRNBadArgument = -2097545193,
+ CDDBTRNUnflattenFailed = -2097545192,
+ CDDBTRNTokenTooLong = -2097545191,
+ CDDBTRNTokenInvalid = -2097545190,
+ CDDBTRNCannotCreateFile = -2097545189,
+ CDDBTRNBadClientCommand = -2097545188,
+ CDDBTRNSendStatsFailed = -2097545187,
+ CDDBTRNUnknownEncryption = -2097545186,
+ CDDBTRNProtocolVersion = -2097545185,
+ CDDBTRNDataStoreVersion = -2097545184,
+ CDDBTRNDataStoreInitFail = -2097545183,
+ CDDBTRNDataStoreNotCached = -2097545182,
+ CDDBTRNCancelled = -2097545181,
+ CDDBTRNServerTimeout = -2097545180,
+ CDDBTRNInvalidURL = -2097545179,
+ CDDBTRNHTTPError = -2097545178,
+ CDDBTRNFileWriteError = -2097545177,
+ CDDBTRNFileDeleteError = -2097545176,
+ CDDBTRNIDInvalidated = -2097545175,
+ CDDBTRNHTTPProxyError = -2097545174,
+ CDDBTRNServiceLoadFailure = -2097545173,
+ CDDBSVCServiceError = -2097479680,
+ CDDBSVCHandleUsed = -2097479679,
+ CDDBSVCNoEmail = -2097479678,
+ CDDBSVCNoHint = -2097479677,
+ CDDBSVCUnknownHandle = -2097479676,
+ CDDBSVCInvalidField = -2097479580,
+ CDDBSVCMissingField = -2097479579,
+ CDDBSVCLimitReached = -2097479578,
+ CDDBCTLBusy = -2097414143,
+ CDDBCTLNotRegistered = -2097414142,
+ CDDBCTLHandleUsed = -2097414141,
+ CDDBCTLInvalidParameter = -2097414140,
+ CDDBCTLMissingField = -2097414139,
+ CDDBCTLMissingProperty = -2097414138,
+ CDDBCTLNoCommand = -2097414137,
+ CDDBCTLNoClientInfo = -2097414136,
+ CDDBCTLNotInitialized = -2097414135,
+ CDDBCTLInvalidTagId = -2097414134,
+ CDDBCTLDisabled = -2097414133,
+ CDDBCTL_ID3TagNoMemory = -2097410048,
+ CDDBCTL_ID3TagNoData = -2097410047,
+ CDDBCTL_ID3TagBadData = -2097410046,
+ CDDBCTL_ID3TagNoBuffer = -2097410045,
+ CDDBCTL_ID3TagSmallBuffer = -2097410044,
+ CDDBCTL_ID3TagInvalidFrameID = -2097410043,
+ CDDBCTL_ID3TagFieldNotFound = -2097410042,
+ CDDBCTL_ID3TagUnknownFieldType = -2097410041,
+ CDDBCTL_ID3TagAlreadyAttached = -2097410040,
+ CDDBCTL_ID3TagInvalidVersion = -2097410039,
+ CDDBCTL_ID3TagNoFile = -2097410038,
+ CDDBCTL_ID3TagReadonly = -2097410037,
+ CDDBCTL_ID3TagzlibError = -2097410036,
+ CDDBSVCTokensUsed = -2097479424,
+ CDDBSVCRegKeyUsed = -2097479423,
+ CDDBSVCInvalidRegKey = -2097479422,
+ CDDBSVCTokensExpired = -2097479421,
+ CDDBSVCInvalidToken = -2097479420,
+ CDDBCACHEBusy = -2097348607,
+ CDDBCACHENoIterator = -2097348606,
+ CDDBCACHENoMoreEntries = -2097348605,
+ CDDBCACHECorrupt = -2097348604,
+ CDDBLISTSBusy = -2097283071,
+ CDDBLISTSNoFile = -2097348606,
+ CDDBLISTSNotSupported = -2097348605
+};
+
+enum CDDBCommands
+{
+ CMD_None = 0,
+ CMD_Invalid = -1,
+ PROP_Version = 1,
+ PROP_ServiceStatusURL = 2,
+ CMD_IsRegistered = 3,
+ CMD_SetClientInfo = 4,
+ CMD_GetUserInfo = 5,
+ CMD_SetUserInfo = 6,
+ CMD_GetOptions = 7,
+ CMD_SetOptions = 8,
+ CMD_GetMediaToc = 9,
+ CMD_LookupMediaByToc = 10,
+ CMD_GetMatchedDiscInfo = 11,
+ CMD_InvokeFuzzyMatchDialog = 12,
+ CMD_GetFullDiscInfo = 13,
+ CMD_GetDiscInfo = 14,
+ CMD_InvokeDiscInfo = 15,
+ CMD_DisplayDiscInfo = 16,
+ CMD_GetSubmitDisc = 17,
+ CMD_SubmitDisc = 18,
+ CMD_InvokeSubmitDisc = 19,
+ CMD_GetMediaTagId = 100,
+ CMD_LookupMediaByTagId = 101,
+ CMD_LookupMediaByFile = 102,
+ CMD_LookupMediaFile = 103,
+ CMD_LookupMediaByWaveform = 104,
+ CMD_GetGenreList = 20,
+ CMD_GetGenreTree = 21,
+ CMD_GetGenreInfo = 22,
+ CMD_GetRegionList = 23,
+ CMD_GetRegionInfo = 24,
+ CMD_GetRoleList = 25,
+ CMD_GetRoleTree = 26,
+ CMD_GetRoleInfo = 27,
+ CMD_GetLanguageList = 28,
+ CMD_GetLanguageInfo = 29,
+ CMD_GetFieldList = 30,
+ CMD_GetFieldInfo = 31,
+ CMD_GetURLList = 32,
+ CMD_GetCoverURL = 33,
+ CMD_GetURLManager = 34,
+ CMD_Cancel = 35,
+ CMD_Status = 36,
+ CMD_GetServiceStatus = 37,
+ CMD_ServerNoop = 38,
+ CMD_FlushLocalCache = 39,
+ CMD_UpdateControl = 40,
+ CMD_GetPlaylistList = 41
+};
+
+enum CDDBLogFlags
+{
+ LOG_DEFAULT = 0,
+ LOG_OFF = 1,
+ LOG_WINDOW = 2,
+ LOG_FILE = 4,
+ LOG_APP = 8,
+ LOG_DEST_MASK = 255,
+ LOG_EVENT_MASK = -256,
+ LOG_EVENT_UI = 256,
+ LOG_EVENT_DEVICE = 512,
+ LOG_EVENT_SERVER = 1024,
+ LOG_EVENT_EVENTS = 2048,
+ LOG_EVENT_COMPLETION = 4096,
+ LOG_EVENT_ERROR = 268435456
+};
+
+enum CDDBUIFlags
+{
+ UI_NONE = 0,
+ UI_READONLY = 1,
+ UI_EDITMODE = 2,
+ UI_SUBMITNEW = 8,
+ UI_OK = 256,
+ UI_CANCEL = 512,
+ UI_DATA_CHANGED = 1024,
+ UI_FULL = 4096,
+ UI_SHORT = 8192,
+ UI_DISP_PROGRESS = 65536,
+ UI_DISP_STATIC = 131072,
+ UI_DISP_BONUS = 262144,
+ UI_ENCODING = 1048576
+};
+
+enum CDDBTagFlags
+{
+ TAG_MERGE_DEFAULT = 0,
+ TAG_MERGE_ALL = 1,
+ TAG_MERGE_ID_ONLY = 2,
+ TAG_MERGE_GN_DATA = 2
+};
+
+enum CDDBEventCodes
+{
+ EVENT_COMMAND_COMPLETED = 1,
+ EVENT_LOG_MESSAGE = 2,
+ EVENT_SERVER_MESSAGE = 3,
+ EVENT_COMMAND_PROGRESS = 4
+};
+
+enum CDDBProperty
+{
+ PROP_Default = 0,
+ PROP_DomainMask = -16777216,
+ PROP_Title = 1,
+ PROP_Artist = 2,
+ PROP_Label = 4,
+ PROP_Year = 8,
+ PROP_Notes = 16,
+ PROP_GenreId = 32,
+ PROP_SecondaryGenreId = 64,
+ PROP_RegionId = 128,
+ PROP_TotalInSet = 256,
+ PROP_NumberInSet = 512,
+ PROP_Certifier = 1024,
+ PROP_TitleSort = 2048,
+ PROP_TitleThe = 4096,
+ PROP_ArtistFirstName = 8192,
+ PROP_ArtistLastName = 16384,
+ PROP_ArtistThe = 32768,
+ PROP_Lyrics = 65536,
+ PROP_BeatsPerMinute = 131072,
+ PROP_ISRC = 262144,
+ PROP_Name = 524288,
+ PROP_StartTrack = 1048576,
+ PROP_StartFrame = 2097152,
+ PROP_EndTrack = 4194304,
+ PROP_EndFrame = 8388608,
+ PROP_Href = 16777217,
+ PROP_DisplayLink = 16777218,
+ PROP_Description = 16777220,
+ PROP_Category = 16777224,
+ PROP_Size = 16777232,
+ PROP_DisplayText = 16777248,
+ PROP_Id = 16777280,
+ PROP_Compilation = 16777344,
+ PROP_RecordingDate = 16777472,
+ PROP_ReleaseDate = 16777728,
+ PROP_ContentLanguageId = 16778240,
+ PROP_LanguageId = 16779264,
+ PROP_ProductCode = 16781312,
+ PROP_YearComposed = 16785408
+};
+
+enum CDDBMatchCode
+{
+ MATCH_NONE = 1,
+ MATCH_MULTIPLE = 2,
+ MATCH_EXACT = 3,
+ MATCH_MULTI_EXACT = 5,
+ MATCH_CODE_SIZER = -1
+};
+
+enum CDDBProgressCodes
+{
+ CMD_CONNECTING = 1,
+ CMD_SENDING = 2,
+ CMD_RECEIVING = 3,
+ CMD_CANCELLED = 4,
+ CMD_WAITING = 5,
+ CMD_COMPLETED = 6
+};
+
+enum CDDBCacheFlags
+{
+ CACHE_DEFAULT = 0,
+ CACHE_DONT_CONNECT = 1,
+ CACHE_DONT_CREATE = 2,
+ CACHE_DONT_WRITE_MEDIA = 16,
+ CACHE_DONT_WRITE_LIST = 32,
+ CACHE_DONT_WRITE_URL = 64,
+ CACHE_DONT_WRITE_ANY = 240,
+ CACHE_NO_LOOKUP_MEDIA = 256,
+ CACHE_NO_LOOKUP_LIST = 512,
+ CACHE_NO_LOOKUP_URL = 1024,
+ CACHE_NO_LOOKUP_ANY = 3840,
+ CACHE_SUBMIT_UPDATE = 4096,
+ CACHE_SUBMIT_NEW = 8192,
+ CACHE_SUBMIT_OFFLINE = 16384,
+ CACHE_SUBMIT_ALL = 61440,
+ CACHE_UPDATE_FUZZY = 65536,
+ CACHE_UPDATE_CHECK = 131072
+};
+
+enum CDDBFlushFlags
+{
+ FLUSH_DEFAULT = 0,
+ FLUSH_USERINFO = 1,
+ FLUSH_CLIENTINFO = 2,
+ FLUSH_REGISTRY = 4,
+ FLUSH_CACHE_MEDIA = 16,
+ FLUSH_CACHE_LISTS = 32,
+ FLUSH_CACHE_URLS = 64,
+ FLUSH_MEMORY_MEDIA = 256,
+ FLUSH_MEMORY_LISTS = 512,
+ FLUSH_MEMORY_URLS = 1024
+};
+
+enum CDDBServerMessageCodes
+{
+ MSG_UPDATE = 1,
+ MSG_ENABLE = 2,
+ MSG_DISABLE = 3,
+ MSG_MESSAGE = 4
+};
+
+enum CDDBServerMessageActions
+{
+ ACTION_NONE = 1,
+ ACTION_RECOMMENDED = 2,
+ ACTION_REQUIRED = 3
+};
+
+enum CDDBExtDataFlags
+{
+ EXT_DATA_DEFAULT = 1,
+ EXT_DATA_GENRE_PRIMARY = 2,
+ EXT_DATA_GENRE_SECONDARY = 4,
+ EXT_DATA_ERA = 8,
+ EXT_DATA_ORIGIN = 16,
+ EXT_DATA_ARTIST_TYPE = 32,
+ EXT_DATA_POPULARITY = 64,
+ EXT_DATA_GNUID = 128,
+ EXT_DATA_CANONICAL = 256,
+ EXT_DATA_MOOD = 512,
+ EXT_DATA_TEMPO = 1024,
+ EXT_DATA_GENRE_V1_FALLBACK = 65536,
+ EXT_DATA_NO_DISC_FALLBACK = 131072,
+ EXT_DATA_UPDATE = 262144,
+ EXT_DATA_ALL = 524288
+};
+
+enum CDDBDataListID
+{
+ DATA_LIST_NONE = 0,
+ DATA_LIST_GENRES = 1,
+ DATA_LIST_ORIGINS = 2,
+ DATA_LIST_ERAS = 3,
+ DATA_LIST_ARTIST_TYPES = 4,
+ DATA_LIST_MOODS = 5,
+ DATA_LIST_TEMPO = 6,
+ DATA_LIST_ALL = 65535
+};
+
+enum CDDBDataListOptions
+{
+ DATA_LIST_OPT_AUTO_RESET = 1,
+ DATA_LIST_OPT_NO_REV_CHECK = 2,
+ DATA_LIST_OPT_NO_INHERIT = 4,
+ DATA_LIST_OPT_MULTI_FILES = 8,
+ DATA_LIST_OPT_DEFAULT = 1
+};
+
+enum CDDBDataListFlags
+{
+ DATA_LIST_FLAG_AUTO_RESET = 1,
+ DATA_LIST_FLAG_NO_REV_CHECK = 2,
+ DATA_LIST_FLAG_CHK_ONLINE = 4,
+ DATA_LIST_FLAG_CHK_LOCAL = 8,
+ DATA_LIST_FLAG_DEFAULT = 1
+};
+
+enum CddbDataOptions
+{
+ CDDB_DATA_NONE = 0,
+ CDDB_DATA_CLASSICAL = 1,
+ CDDB_DATA_DSP = 2
+};
+
+struct __declspec(uuid("fc288125-6636-405c-be68-e9d37700deb0"))
+DCDDBEvents : IDispatch
+{};
+
+struct __declspec(uuid("796d4314-0c0e-4b10-8bc2-3f3e6956bc26"))
+CddbUserInfo;
+ // [ default ] interface ICddbUserInfo
+
+struct __declspec(uuid("4570cddc-94f8-4b43-b1ac-796d68fac7df"))
+ICddbUserInfo : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_EmailAddress (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_EmailAddress (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_UserHandle (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_UserHandle (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Password (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Password (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_PasswordHint (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_PasswordHint (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_RegionId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_RegionId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_PostalCode (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_PostalCode (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Age (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Age (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Sex (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Sex (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_AllowEmail (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_AllowEmail (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_AllowStats (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_AllowStats (
+ /*[in]*/ long pVal ) = 0;
+};
+
+struct __declspec(uuid("544bb1f5-d771-4fed-8fa7-d83e62fefb82"))
+CddbOptions;
+ // [ default ] interface ICddbOptions
+
+struct __declspec(uuid("30755708-ae75-49f8-b99a-ac8d095d0448"))
+ICddbOptions : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Language (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Language (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_LocalCachePath (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_LocalCachePath (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_LocalCacheSize (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_LocalCacheSize (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_LogFile (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_LogFile (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_LogFlags (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_LogFlags (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_LogWindow (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_LogWindow (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_ProxyServer (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ProxyServer (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ProxyServerPort (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_ProxyServerPort (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_ResourceModule (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_ResourceModule (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_ServerTimeout (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_ServerTimeout (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_AsyncCompletion (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_AsyncCompletion (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_AutoDownloadURLs (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_AutoDownloadURLs (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_AutoDownloadTargetedURLs (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_AutoDownloadTargetedURLs (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_ProxyUserName (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ProxyUserName (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ProxyPassword (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ProxyPassword (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ProgressEvents (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_ProgressEvents (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_LocalCacheTimeout (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_LocalCacheTimeout (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_LocalCacheFlags (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_LocalCacheFlags (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_TestSubmitMode (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_TestSubmitMode (
+ /*[in]*/ long pVal ) = 0;
+};
+
+struct __declspec(uuid("3d055b64-824e-4613-b845-6afcdb888aa0"))
+CddbDisc;
+ // [ default ] interface ICddbDisc
+
+struct __declspec(uuid("02d9f45f-2155-4445-83b9-75dfa5154538"))
+CddbTrack;
+ // [ default ] interface ICddbTrack
+
+struct __declspec(uuid("d5673322-c7a0-493a-98d5-f16da00724aa"))
+CddbFullName;
+ // [ default ] interface ICddbFullName
+
+struct __declspec(uuid("2b6107ad-d1f2-41c3-b9b9-3349324f7e7b"))
+ICddbFullName : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Name (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Name (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_FirstName (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_FirstName (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_LastName (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_LastName (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_The (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_The (
+ /*[in]*/ BSTR pVal ) = 0;
+};
+
+struct __declspec(uuid("61bd27fe-604c-49f8-a979-7a260a51ea5f"))
+CddbCredit;
+ // [ default ] interface ICddbCredit
+
+struct __declspec(uuid("2aae501a-6d20-4af3-8c79-473106bd5391"))
+ICddbCredit : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Id (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Id (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Name (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Name (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Notes (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Notes (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_FullName (
+ /*[out,retval]*/ struct ICddbFullName * * pVal ) = 0;
+ virtual HRESULT __stdcall put_FullName (
+ /*[in]*/ struct ICddbFullName * pVal ) = 0;
+ virtual HRESULT __stdcall IsPropertyCertified (
+ /*[in]*/ enum CDDBProperty Property,
+ /*[out,retval]*/ long * pVal ) = 0;
+};
+
+struct __declspec(uuid("9a27fc19-f3ac-4755-a05a-9c7922437271"))
+CddbCredits;
+ // [ default ] interface ICddbCredits
+
+struct __declspec(uuid("7da05059-cfb4-46ce-a788-709a3ad3454d"))
+ICddbTrack : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Title (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Title (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Artist (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Artist (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Year (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Year (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Label (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Label (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Notes (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Notes (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_GenreId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_GenreId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_SecondaryGenreId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_SecondaryGenreId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Lyrics (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Lyrics (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_BeatsPerMinute (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_BeatsPerMinute (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ISRC (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ISRC (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_TitleSort (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_TitleSort (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_TitleThe (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_TitleThe (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ArtistFullName (
+ /*[out,retval]*/ struct ICddbFullName * * pVal ) = 0;
+ virtual HRESULT __stdcall put_ArtistFullName (
+ /*[in]*/ struct ICddbFullName * pVal ) = 0;
+ virtual HRESULT __stdcall AddCredit (
+ /*[in]*/ BSTR RoleId,
+ /*[in]*/ BSTR Name,
+ /*[out,retval]*/ struct ICddbCredit * * pVal ) = 0;
+ virtual HRESULT __stdcall RemoveCredit (
+ /*[in]*/ struct ICddbCredit * Credit ) = 0;
+ virtual HRESULT __stdcall get_Credits (
+ /*[out,retval]*/ struct ICddbCredits * * pVal ) = 0;
+ virtual HRESULT __stdcall GetCredit (
+ /*[in]*/ long CreditIndex,
+ /*[out,retval]*/ struct ICddbCredit * * pVal ) = 0;
+ virtual HRESULT __stdcall get_NumCredits (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall IsPropertyCertified (
+ /*[in]*/ enum CDDBProperty Property,
+ /*[out,retval]*/ long * pVal ) = 0;
+};
+
+struct __declspec(uuid("c30fbc5c-f56c-40dd-841d-5e4428f3baea"))
+ICddbCredits : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetCredit (
+ /*[in]*/ long CreditIndex,
+ /*[out,retval]*/ struct ICddbCredit * * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("b2ebb2e2-48e5-4004-bc9e-9cdefdd9269e"))
+CddbTracks;
+ // [ default ] interface ICddbTracks
+
+struct __declspec(uuid("a1fa4e71-b4e0-4378-a102-04e850e0aa18"))
+ICddbTracks : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetTrack (
+ /*[in]*/ long TrackIndex,
+ /*[out,retval]*/ struct ICddbTrack * * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("f2f46124-41eb-4e26-b2e5-d7fc1736c8a2"))
+CddbSegments;
+ // [ default ] interface ICddbSegments
+
+struct __declspec(uuid("993bb5e2-4a0d-4ed0-bd37-8718c422997e"))
+CddbSegment;
+ // [ default ] interface ICddbSegment
+
+struct __declspec(uuid("31480e0f-de17-4cae-8d85-1db90f9fcd2f"))
+ICddbSegments : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetSegment (
+ /*[in]*/ long SegmentIndex,
+ /*[out,retval]*/ struct ICddbSegment * * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("375b697c-06a1-4d99-9f5d-3589001b15fd"))
+ICddbSegment : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Name (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Name (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Notes (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Notes (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_StartTrack (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_StartTrack (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_StartFrame (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_StartFrame (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_EndTrack (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_EndTrack (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_EndFrame (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_EndFrame (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Credits (
+ /*[out,retval]*/ struct ICddbCredits * * pVal ) = 0;
+ virtual HRESULT __stdcall AddCredit (
+ /*[in]*/ BSTR RoleId,
+ /*[in]*/ BSTR Name,
+ /*[out,retval]*/ struct ICddbCredit * * pVal ) = 0;
+ virtual HRESULT __stdcall RemoveCredit (
+ /*[in]*/ struct ICddbCredit * Credit ) = 0;
+ virtual HRESULT __stdcall GetCredit (
+ /*[in]*/ long CreditIndex,
+ /*[out,retval]*/ struct ICddbCredit * * pVal ) = 0;
+ virtual HRESULT __stdcall get_NumCredits (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall IsPropertyCertified (
+ /*[in]*/ enum CDDBProperty Property,
+ /*[out,retval]*/ long * pVal ) = 0;
+};
+
+struct __declspec(uuid("15a6784e-b924-43da-a15f-92e0072ac14d"))
+CddbURLTree;
+ // [ default ] interface ICddbURLTree
+
+struct __declspec(uuid("f61de7e3-bd71-442c-a555-d11880a0b454"))
+CddbURLList;
+ // [ default ] interface ICddbURLList
+
+struct __declspec(uuid("20d2984f-0d6d-49f9-aa80-36030cef0a42"))
+ICddbURLTree : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+ virtual HRESULT __stdcall CategoryList (
+ /*[in]*/ BSTR Category,
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetURLList (
+ /*[in]*/ long ListIndex,
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+};
+
+struct __declspec(uuid("6f6f90b2-ff9f-4f62-8eee-6ba04a45de6c"))
+CddbURL;
+ // [ default ] interface ICddbURL
+
+struct __declspec(uuid("680f25c4-044b-4de0-998f-dfa463626e13"))
+ICddbURLList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_Category (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall GetURL (
+ /*[in]*/ long URLIndex,
+ /*[out,retval]*/ struct ICddbURL * * pVal ) = 0;
+ virtual HRESULT __stdcall CreateURLTree (
+ /*[out,retval]*/ struct ICddbURLTree * * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("751e8ace-610b-4336-b425-5038154f68a2"))
+ICddbURL : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Href (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Href (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_DisplayLink (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_DisplayLink (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Description (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Description (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Type (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Type (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Category (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Category (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Weight (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Weight (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Size (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Size (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_DisplayText (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_DisplayText (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall IsPropertyCertified (
+ /*[in]*/ enum CDDBProperty Property,
+ /*[out,retval]*/ long * pVal ) = 0;
+};
+
+struct __declspec(uuid("8f3ae41f-1fe4-4293-b016-71e3bcca9841"))
+CddbLanguages;
+ // [ default ] interface ICddbLanguages
+
+struct __declspec(uuid("5220e8fa-b11f-46cf-9786-51b11e05f657"))
+ICddbDisc : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Toc (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Toc (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Title (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Title (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Artist (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Artist (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Label (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Label (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Year (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Year (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_NumTracks (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetTrackTitle (
+ /*[in]*/ long Number,
+ /*[out,retval]*/ BSTR * Title ) = 0;
+ virtual HRESULT __stdcall AddTrack (
+ /*[in]*/ long Number,
+ /*[in]*/ BSTR Title,
+ /*[out,retval]*/ struct ICddbTrack * * pVal ) = 0;
+ virtual HRESULT __stdcall get_MediaId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_MuiId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Notes (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Notes (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_GenreId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_GenreId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_SecondaryGenreId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_SecondaryGenreId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_RegionId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_RegionId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Revision (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Revision (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_TotalInSet (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_TotalInSet (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_NumberInSet (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_NumberInSet (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_TitleUId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Certifier (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_TitleSort (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_TitleSort (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_TitleThe (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_TitleThe (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Tracks (
+ /*[out,retval]*/ struct ICddbTracks * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Segments (
+ /*[out,retval]*/ struct ICddbSegments * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Credits (
+ /*[out,retval]*/ struct ICddbCredits * * pVal ) = 0;
+ virtual HRESULT __stdcall get_ArtistFullName (
+ /*[out,retval]*/ struct ICddbFullName * * pVal ) = 0;
+ virtual HRESULT __stdcall put_ArtistFullName (
+ /*[in]*/ struct ICddbFullName * pVal ) = 0;
+ virtual HRESULT __stdcall GetURLTree (
+ /*[out,retval]*/ struct ICddbURLTree * * pVal ) = 0;
+ virtual HRESULT __stdcall AddSegment (
+ /*[in]*/ BSTR Name,
+ /*[out,retval]*/ struct ICddbSegment * * pVal ) = 0;
+ virtual HRESULT __stdcall RemoveSegment (
+ /*[in]*/ BSTR Name ) = 0;
+ virtual HRESULT __stdcall AddCredit (
+ /*[in]*/ BSTR RoleId,
+ /*[in]*/ BSTR Name,
+ /*[out,retval]*/ struct ICddbCredit * * pVal ) = 0;
+ virtual HRESULT __stdcall RemoveCredit (
+ /*[in]*/ struct ICddbCredit * Credit ) = 0;
+ virtual HRESULT __stdcall get_LanguageId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_LanguageId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_RevisionTag (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_RevisionTag (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Compilation (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Compilation (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Languages (
+ /*[out,retval]*/ struct ICddbLanguages * * pVal ) = 0;
+ virtual HRESULT __stdcall GetTrack (
+ /*[in]*/ long Number,
+ /*[out,retval]*/ struct ICddbTrack * * pVal ) = 0;
+ virtual HRESULT __stdcall GetSegment (
+ /*[in]*/ long SegmentIndex,
+ /*[out,retval]*/ struct ICddbSegment * * pVal ) = 0;
+ virtual HRESULT __stdcall get_NumCredits (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_NumSegments (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetCredit (
+ /*[in]*/ long CreditIndex,
+ /*[out,retval]*/ struct ICddbCredit * * pVal ) = 0;
+ virtual HRESULT __stdcall IsSubmit (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall IsPropertyCertified (
+ /*[in]*/ enum CDDBProperty Property,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall RemoveSegmentObject (
+ /*[in]*/ struct ICddbSegment * Segment ) = 0;
+};
+
+struct __declspec(uuid("686f7bce-1edb-4540-8c25-bba9ce7b2323"))
+ICddbLanguages : IDispatch
+{};
+
+struct __declspec(uuid("e39c031c-a54e-40f7-b82d-1c47155e7411"))
+CddbDiscs;
+ // [ default ] interface ICddbDiscs
+
+struct __declspec(uuid("0d5072cc-86a0-4600-bb7f-da7723ddd298"))
+ICddbDiscs : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetDisc (
+ /*[in]*/ long DiscIndex,
+ /*[out,retval]*/ struct ICddbDisc * * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("82e54124-11a8-4b37-9820-3e63eabde079"))
+CddbGenreList;
+ // [ default ] interface ICddbGenreList
+
+struct __declspec(uuid("cd5f005a-596d-4b5a-8ab9-c9821315b950"))
+CddbGenre;
+ // [ default ] interface ICddbGenre
+
+struct __declspec(uuid("9151953e-0621-4167-bcb6-36f8e65ec6c9"))
+ICddbGenreList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetGenreName (
+ /*[in]*/ BSTR GenreId,
+ /*[out,retval]*/ BSTR * GenreName ) = 0;
+ virtual HRESULT __stdcall get_MetaGenre (
+ /*[out,retval]*/ struct ICddbGenre * * pVal ) = 0;
+ virtual HRESULT __stdcall GetGenre (
+ /*[in]*/ long GenreIndex,
+ /*[out,retval]*/ struct ICddbGenre * * pVal ) = 0;
+ virtual HRESULT __stdcall GetGenreInfo (
+ /*[in]*/ BSTR GenreId,
+ /*[out,retval]*/ struct ICddbGenre * * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("4b3be7ee-9a6e-4276-8701-3a85f5d9e3c5"))
+ICddbGenre : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Id (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Name (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Description (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Type (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Parent (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+};
+
+struct __declspec(uuid("a228e94b-2fc2-448c-b593-d293d981a335"))
+CddbGenreTree;
+ // [ default ] interface ICddbGenreTree
+
+struct __declspec(uuid("37668f25-b3ff-42ea-a3f9-25ea0740902e"))
+ICddbGenreTree : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetSubGenreList (
+ /*[in]*/ BSTR GenreId,
+ /*[out,retval]*/ struct ICddbGenreList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetMetaGenre (
+ /*[in]*/ long GenreIndex,
+ /*[out,retval]*/ struct ICddbGenre * * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("e454ac26-5551-47ee-951c-5ae1dd824d28"))
+CddbRegionList;
+ // [ default ] interface ICddbRegionList
+
+struct __declspec(uuid("203e2a74-acde-4588-ad98-a666dcb1636a"))
+CddbRegion;
+ // [ default ] interface ICddbRegion
+
+struct __declspec(uuid("c841589b-ce3d-4fef-9422-2832a64d321e"))
+ICddbRegionList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetRegionName (
+ /*[in]*/ BSTR RegionId,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall GetRegion (
+ /*[in]*/ long RegionIndex,
+ /*[out,retval]*/ struct ICddbRegion * * pVal ) = 0;
+ virtual HRESULT __stdcall GetRegionInfo (
+ /*[in]*/ BSTR RegionId,
+ /*[out,retval]*/ struct ICddbRegion * * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("57b9551a-a3ea-484d-8fc6-1b4ec7d2420d"))
+ICddbRegion : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Id (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Name (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Description (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+};
+
+struct __declspec(uuid("24575390-26a3-405d-b47b-fc72cdcb80aa"))
+CddbRoleList;
+ // [ default ] interface ICddbRoleList
+
+struct __declspec(uuid("546523f6-07ee-488c-b472-dd4a338ba7a2"))
+CddbRole;
+ // [ default ] interface ICddbRole
+
+struct __declspec(uuid("614d9d0a-c012-4863-afbf-9c9dd01e04d1"))
+ICddbRoleList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetRoleName (
+ /*[in]*/ BSTR RoleId,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall GetRole (
+ /*[in]*/ long RoleIndex,
+ /*[out,retval]*/ struct ICddbRole * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Category (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_CategoryRole (
+ /*[out,retval]*/ struct ICddbRole * * pVal ) = 0;
+ virtual HRESULT __stdcall GetRoleInfo (
+ /*[in]*/ BSTR RoleId,
+ /*[out,retval]*/ struct ICddbRole * * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("84f40113-d6ca-4289-acfa-b8b1691e596b"))
+ICddbRole : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Id (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Name (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Description (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Parent (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+};
+
+struct __declspec(uuid("a25a1b97-a3f8-4fd5-a71e-a6ab86de1946"))
+CddbRoleTree;
+ // [ default ] interface ICddbRoleTree
+
+struct __declspec(uuid("0ba44da2-a91d-4c60-8e48-61b5e69495ea"))
+ICddbRoleTree : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetCategoryRoleList (
+ /*[in]*/ BSTR RoleId,
+ /*[out,retval]*/ struct ICddbRoleList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetRoleList (
+ /*[in]*/ long ListIndex,
+ /*[out,retval]*/ struct ICddbRoleList * * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("bd8c8761-451f-4aec-9dad-f42bdbeaf9e6"))
+CddbLanguageList;
+ // [ default ] interface ICddbLanguageList
+
+struct __declspec(uuid("ee5da1c8-ea29-4ec6-a59c-23ddc304bab0"))
+CddbLanguage;
+ // [ default ] interface ICddbLanguage
+
+struct __declspec(uuid("719c744f-cdef-49c2-9ada-df5ba8770f4b"))
+ICddbLanguageList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetLanguageName (
+ /*[in]*/ BSTR LanguageId,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall GetLanguage (
+ /*[in]*/ long LanguageIndex,
+ /*[out,retval]*/ struct ICddbLanguage * * pVal ) = 0;
+ virtual HRESULT __stdcall GetLanguageInfo (
+ /*[in]*/ BSTR LanguageId,
+ /*[out,retval]*/ struct ICddbLanguage * * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("06c77e4d-fe13-4fa4-b52a-1cf2e047f55f"))
+ICddbLanguage : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Id (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Name (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Description (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+};
+
+struct __declspec(uuid("f34a22b2-a4df-4a19-bfd9-c593bd1cd6b2"))
+CddbFieldList;
+ // [ default ] interface ICddbFieldList
+
+struct __declspec(uuid("cf6268fd-7ba3-4cc5-9de1-fead923d216c"))
+ICddbFieldList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetFieldName (
+ /*[in]*/ BSTR Name,
+ /*[in]*/ BSTR Target,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("9390d4fe-56ca-42f6-b8dc-16e22d12c9c3"))
+CddbField;
+ // [ default ] interface ICddbField
+
+struct __declspec(uuid("aa3218d8-a65c-4a29-8690-1e5b75dbf3b8"))
+ICddbField : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_DisplayName (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Name (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Description (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Type (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Length (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_EnumCount (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Table (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Target (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+};
+
+struct __declspec(uuid("dccf8d5f-c1f6-44a1-b065-60d56557f821"))
+CddbURLManager;
+ // [ default ] interface ICddbURLManager
+
+struct __declspec(uuid("623ce0d4-7b45-4b69-a28d-2401e7aa16d4"))
+ICddbURLManager : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetCoverURLs (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetInfoURLs (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetAdURLs (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetMenuURLs (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetSkinURLs (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetPluginURLs (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetTypedURLs (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ BSTR Type,
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetAssociatedURLs (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ BSTR Type,
+ /*[in]*/ BSTR Property,
+ /*[in]*/ BSTR Value,
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetURLAssociations (
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetCurrentURL (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ BSTR URL,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall SubmitURL (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ struct ICddbURL * URL ) = 0;
+ virtual HRESULT __stdcall DeleteURL (
+ /*[in]*/ struct ICddbURL * URL ) = 0;
+ virtual HRESULT __stdcall GotoURL (
+ /*[in]*/ struct ICddbURL * URL,
+ /*[in]*/ BSTR RawURL ) = 0;
+};
+
+struct __declspec(uuid("a4d4fe68-1df3-42fe-8a8d-594d9bd60fd0"))
+CddbID3TagManager;
+ // [ default ] interface ICddbID3TagManager
+
+struct __declspec(uuid("723695c2-3b01-42c3-a661-64d2ec30b4e5"))
+ICDDBControl : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Version (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall IsRegistered (
+ /*[in]*/ long InvokeDialog,
+ /*[out,retval]*/ long * Registered ) = 0;
+ virtual HRESULT __stdcall SetClientInfo (
+ /*[in]*/ BSTR ClientId,
+ /*[in]*/ BSTR ClientTag,
+ /*[in]*/ BSTR ClientVersion,
+ /*[in]*/ BSTR ClientRegString ) = 0;
+ virtual HRESULT __stdcall GetUserInfo (
+ /*[out,retval]*/ struct ICddbUserInfo * * pVal ) = 0;
+ virtual HRESULT __stdcall SetUserInfo (
+ /*[in]*/ struct ICddbUserInfo * UserInfo ) = 0;
+ virtual HRESULT __stdcall GetOptions (
+ /*[out,retval]*/ struct ICddbOptions * * pVal ) = 0;
+ virtual HRESULT __stdcall SetOptions (
+ /*[in]*/ struct ICddbOptions * Options ) = 0;
+ virtual HRESULT __stdcall GetMediaToc (
+ /*[in]*/ long MciDeviceId,
+ /*[out,retval]*/ BSTR * MediaToc ) = 0;
+ virtual HRESULT __stdcall LookupMediaByToc (
+ /*[in]*/ BSTR MediaToc,
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ enum CDDBMatchCode * pMatchCode ) = 0;
+ virtual HRESULT __stdcall GetMatchedDiscInfo (
+ /*[out,retval]*/ IUnknown * * ppDisc ) = 0;
+ virtual HRESULT __stdcall GetMatchedDisc (
+ /*[out,retval]*/ struct ICddbDisc * * ppDisc ) = 0;
+ virtual HRESULT __stdcall GetMatchedDiscs (
+ /*[out,retval]*/ struct ICddbDiscs * * ppDiscs ) = 0;
+ virtual HRESULT __stdcall Initialize (
+ /*[in]*/ long ParentHWND,
+ /*[in]*/ enum CDDBCacheFlags Flags ) = 0;
+ virtual HRESULT __stdcall Shutdown ( ) = 0;
+ virtual HRESULT __stdcall SetClientInfoFromHost (
+ /*[in]*/ BSTR Target,
+ /*[in]*/ BSTR User,
+ /*[in]*/ BSTR Password ) = 0;
+ virtual HRESULT __stdcall InvokeFuzzyMatchDialog (
+ /*[in]*/ struct ICddbDiscs * Discs,
+ /*[out,retval]*/ struct ICddbDisc * * pVal ) = 0;
+ virtual HRESULT __stdcall GetFullDiscInfo (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ struct ICddbDisc * * pVal ) = 0;
+ virtual HRESULT __stdcall GetDiscInfo (
+ /*[in]*/ BSTR MediaId,
+ /*[in]*/ BSTR MuiId,
+ /*[in]*/ BSTR RevisionId,
+ /*[in]*/ BSTR RevisionTag,
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ struct ICddbDisc * * ppDisc ) = 0;
+ virtual HRESULT __stdcall InvokeDiscInfo (
+ /*[in]*/ BSTR MediaToc,
+ /*[in]*/ BSTR MediaId,
+ /*[in]*/ BSTR MuiId,
+ /*[in]*/ long MciDeviceId,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall DisplayDiscInfo (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ enum CDDBUIFlags Flags,
+ /*[out,retval]*/ enum CDDBUIFlags * pVal ) = 0;
+ virtual HRESULT __stdcall GetSubmitDisc (
+ /*[in]*/ BSTR MediaToc,
+ /*[in]*/ BSTR MediaId,
+ /*[in]*/ BSTR MuiId,
+ /*[out,retval]*/ struct ICddbDisc * * pVal ) = 0;
+ virtual HRESULT __stdcall SubmitDisc (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall InvokeSubmitDisc (
+ /*[in]*/ BSTR MediaToc,
+ /*[in]*/ long MciDeviceId,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetGenreList (
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ struct ICddbGenreList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetGenreTree (
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ struct ICddbGenreTree * * pVal ) = 0;
+ virtual HRESULT __stdcall GetGenreInfo (
+ /*[in]*/ BSTR GenreId,
+ /*[out,retval]*/ struct ICddbGenre * * pVal ) = 0;
+ virtual HRESULT __stdcall GetRegionList (
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ struct ICddbRegionList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetRegionInfo (
+ /*[in]*/ BSTR RegionId,
+ /*[out,retval]*/ struct ICddbRegion * * pVal ) = 0;
+ virtual HRESULT __stdcall GetRoleList (
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ struct ICddbRoleList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetRoleTree (
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ struct ICddbRoleTree * * pVal ) = 0;
+ virtual HRESULT __stdcall GetRoleInfo (
+ /*[in]*/ BSTR RoleId,
+ /*[out,retval]*/ struct ICddbRole * * pVal ) = 0;
+ virtual HRESULT __stdcall GetLanguageList (
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ struct ICddbLanguageList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetLanguageInfo (
+ /*[in]*/ BSTR LanguageId,
+ /*[out,retval]*/ struct ICddbLanguage * * pVal ) = 0;
+ virtual HRESULT __stdcall GetFieldList (
+ /*[in]*/ BSTR Target,
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ struct ICddbFieldList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetFieldInfo (
+ /*[in]*/ BSTR Target,
+ /*[in]*/ BSTR Name,
+ /*[out,retval]*/ struct ICddbField * * pVal ) = 0;
+ virtual HRESULT __stdcall GetURLList (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetURLManager (
+ /*[out,retval]*/ struct ICddbURLManager * * pVal ) = 0;
+ virtual HRESULT __stdcall UpdateControl (
+ /*[in]*/ long UpdateNow,
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_ServiceStatusURL (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall GetServiceStatus (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall GetCoverURL (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ struct ICddbURL * * pVal ) = 0;
+ virtual HRESULT __stdcall GetUpdateURL (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall InvokeAboutCddbDialog ( ) = 0;
+ virtual HRESULT __stdcall InvokePopupMenu (
+ /*[in]*/ enum CDDBUIFlags Flags ) = 0;
+ virtual HRESULT __stdcall InvokeUserRegDialog (
+ /*[in]*/ struct ICddbUserInfo * UserInfo,
+ /*[in]*/ enum CDDBUIFlags Flags,
+ /*[out,retval]*/ enum CDDBUIFlags * pVal ) = 0;
+ virtual HRESULT __stdcall InvokeOptionsDialog (
+ /*[in]*/ struct ICddbOptions * Options,
+ /*[out,retval]*/ enum CDDBUIFlags * pVal ) = 0;
+ virtual HRESULT __stdcall InvokeNoMatchDialog (
+ /*[out,retval]*/ enum CDDBUIFlags * pVal ) = 0;
+ virtual HRESULT __stdcall InvokeInfoBrowser (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ struct ICddbURL * URL,
+ /*[in]*/ enum CDDBUIFlags Flags ) = 0;
+ virtual HRESULT __stdcall GetDiscTagId (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ long TrackNum,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall LookupMediaByTagId (
+ /*[in]*/ BSTR TagId,
+ /*[in]*/ long EventOnCompletion,
+ /*[out]*/ long * TrackNum,
+ /*[out,retval]*/ struct ICddbDisc * * pVal ) = 0;
+ virtual HRESULT __stdcall GetTagManager (
+ /*[out,retval]*/ struct ICddbID3TagManager * * pVal ) = 0;
+ virtual HRESULT __stdcall HttpPost (
+ /*[in]*/ BSTR URL,
+ /*[in]*/ BSTR Header,
+ /*[in]*/ void * PostData,
+ /*[in]*/ long PostDataSize,
+ /*[out]*/ void * * Data,
+ /*[out]*/ long * DataSize ) = 0;
+ virtual HRESULT __stdcall HttpGet (
+ /*[in]*/ BSTR URL,
+ /*[in]*/ BSTR Header,
+ /*[in]*/ void * GetData,
+ /*[in]*/ long GetDataSize,
+ /*[out]*/ void * * Data,
+ /*[out]*/ long * DataSize ) = 0;
+ virtual HRESULT __stdcall HttpGetFile (
+ /*[in]*/ BSTR URL,
+ /*[in]*/ BSTR Header,
+ /*[in]*/ void * GetData,
+ /*[in]*/ long GetDataSize,
+ /*[in]*/ BSTR File ) = 0;
+ virtual HRESULT __stdcall Cancel (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall FlushLocalCache (
+ /*[in]*/ enum CDDBFlushFlags Flags ) = 0;
+ virtual HRESULT __stdcall Status ( ) = 0;
+ virtual HRESULT __stdcall ServerNoop (
+ /*[in]*/ long EventOnCompletion ) = 0;
+};
+
+struct __declspec(uuid("9e77a3fd-df03-4077-ba10-001d52acae44"))
+CddbID3Tag;
+ // [ default ] interface ICddbID3Tag
+ // interface ICddbID3Tag2
+ // interface ICddbFileTag
+ // interface ICddbFileTag2_5
+
+struct __declspec(uuid("e7bbbe3a-dc3c-4d00-98f9-bc620ca952f8"))
+ICddbID3TagManager : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall InitTagFromDisc (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ long TrackNum,
+ /*[out,retval]*/ struct ICddbID3Tag * * pVal ) = 0;
+ virtual HRESULT __stdcall MergeToFile (
+ /*[in]*/ struct ICddbID3Tag * Tag,
+ /*[in]*/ BSTR Filename,
+ /*[in]*/ long Flags ) = 0;
+ virtual HRESULT __stdcall GetID3TagFileId (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ long TrackNum,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_CddbOwnerId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_CddbCommentString (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall LookupMediaByFile (
+ /*[in]*/ BSTR Filename,
+ /*[in]*/ long EventOnCompletion,
+ /*[out]*/ long * TrackNum,
+ /*[out,retval]*/ struct ICddbDisc * * pVal ) = 0;
+};
+
+struct __declspec(uuid("ca4e0490-7ed8-44a5-9ecd-d00b90dbe808"))
+ICddbFileTag : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Album (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Album (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Movie (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Movie (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Title (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Title (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_CopyrightYear (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_CopyrightYear (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_CopyrightHolder (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_CopyrightHolder (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Comments (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Comments (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Label (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Label (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_BeatsPerMinute (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_BeatsPerMinute (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_LeadArtist (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_LeadArtist (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_PartOfSet (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_PartOfSet (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_TrackPosition (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_TrackPosition (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Year (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Year (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Genre (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Genre (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_FileId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_FileId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ISRC (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ISRC (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall LoadFromFile (
+ /*[in]*/ BSTR Filename,
+ /*[in]*/ long Readonly ) = 0;
+ virtual HRESULT __stdcall BindToFile (
+ /*[in]*/ BSTR Filename,
+ /*[in]*/ long Readonly ) = 0;
+ virtual HRESULT __stdcall SaveToFile (
+ /*[in]*/ BSTR Filename ) = 0;
+ virtual HRESULT __stdcall Commit ( ) = 0;
+ virtual HRESULT __stdcall Clear ( ) = 0;
+ virtual HRESULT __stdcall LoadFromBuffer (
+ /*[in]*/ VARIANT Buffer,
+ /*[in]*/ long BufferSize ) = 0;
+ virtual HRESULT __stdcall GetBufferSize (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall SaveToBuffer (
+ /*[in]*/ VARIANT Buffer,
+ /*[in]*/ long BufferSize ) = 0;
+ virtual HRESULT __stdcall GetTextFrame (
+ /*[in]*/ BSTR Frame,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall SetTextFrame (
+ /*[in]*/ BSTR Frame,
+ /*[in]*/ BSTR Text ) = 0;
+};
+
+struct __declspec(uuid("7b2d9eb8-70aa-43d3-aa8e-e71ce53a83d8"))
+ICddbID3Tag : ICddbFileTag
+{};
+
+struct __declspec(uuid("44959787-915b-4fcf-9763-1038483c000e"))
+ICddbID3Tag2 : ICddbID3Tag
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Comment (
+ /*[in]*/ BSTR desc,
+ /*[out,retval]*/ BSTR * pText ) = 0;
+ virtual HRESULT __stdcall put_Comment (
+ /*[in]*/ BSTR desc,
+ /*[in]*/ BSTR Text ) = 0;
+};
+
+struct __declspec(uuid("d0be7f39-60d3-43e2-aa96-513217443ab6"))
+CddbDisc2;
+ // [ default ] interface ICddbDisc2
+ // interface ICddbDisc
+
+struct __declspec(uuid("45d1d297-dd01-4890-928c-34e1ba494a14"))
+ICddbDisc2 : ICddbDisc
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_ContentLanguageId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ContentLanguageId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ReleaseDate (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ReleaseDate (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_RecordingDate (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_RecordingDate (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ProductCode (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ProductCode (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_TrackNum (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_TrackNum (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall GetProperty (
+ /*[in]*/ enum CDDBProperty PropId,
+ /*[in]*/ BSTR PropName,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall SetProperty (
+ /*[in]*/ enum CDDBProperty PropId,
+ /*[in]*/ BSTR PropName,
+ /*[in]*/ BSTR PropValue ) = 0;
+ virtual HRESULT __stdcall Duplicate (
+ /*[out,retval]*/ struct ICddbDisc2 * * pVal ) = 0;
+ virtual HRESULT __stdcall get_YearComposed (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_YearComposed (
+ /*[in]*/ BSTR pVal ) = 0;
+};
+
+struct __declspec(uuid("d0f041d4-1570-4143-bb6a-4ce041b109d4"))
+ICddbInfoWindow : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall Init (
+ /*[in]*/ long hWnd,
+ /*[in]*/ long Left,
+ /*[in]*/ long Top,
+ /*[in]*/ long Right,
+ /*[in]*/ long Bottom ) = 0;
+ virtual HRESULT __stdcall SetRawURL (
+ /*[in]*/ BSTR RawURL ) = 0;
+ virtual HRESULT __stdcall GetHwnd (
+ /*[out]*/ long * phwnd ) = 0;
+ virtual HRESULT __stdcall SetDisc (
+ /*[in]*/ struct ICddbDisc * Disc ) = 0;
+ virtual HRESULT __stdcall SetURL (
+ /*[in]*/ struct ICddbURL * URL ) = 0;
+ virtual HRESULT __stdcall Refresh ( ) = 0;
+ virtual HRESULT __stdcall Shutdown ( ) = 0;
+ virtual HRESULT __stdcall SetAdPosition (
+ /*[in]*/ BSTR Position ) = 0;
+};
+
+struct __declspec(uuid("06c18ba6-86a0-464c-b838-13a74e1ad049"))
+ICddbUIOptions : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetCurrent (
+ enum CDDBUIFlags Flags ) = 0;
+ virtual HRESULT __stdcall SetCurrent (
+ enum CDDBUIFlags Flags ) = 0;
+ virtual HRESULT __stdcall get_ParentHWND (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_ParentHWND (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Left (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Left (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Top (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Top (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Right (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Right (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Bottom (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Bottom (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_ResourceHINSTANCE (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_ResourceHINSTANCE (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_ProgressResourceID (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_ProgressResourceID (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_StaticResourceID (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_StaticResourceID (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Frames (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Frames (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_BonusResourceID (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_BonusResourceID (
+ /*[in]*/ long pVal ) = 0;
+};
+
+struct __declspec(uuid("d6f791c8-a7f7-4702-9d24-4b8f8ca4c807"))
+ICddbTrackManager : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall MarkStartTrack (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ long TrackNum,
+ /*[out,retval]*/ BSTR * pId ) = 0;
+ virtual HRESULT __stdcall MarkStartFile (
+ /*[in]*/ BSTR TagId,
+ /*[in]*/ BSTR Filename,
+ /*[out,retval]*/ BSTR * pId ) = 0;
+ virtual HRESULT __stdcall MarkStop (
+ /*[in]*/ BSTR Id ) = 0;
+ virtual HRESULT __stdcall GetURLContent (
+ /*[in]*/ BSTR Id,
+ /*[out,retval]*/ struct ICddbURLList * * pVal ) = 0;
+};
+
+struct __declspec(uuid("1b0700ee-c9c7-4fca-9584-1096268cf6c4"))
+ICDDBControl2 : ICDDBControl
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetHelper (
+ /*[in]*/ long Id,
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall ShutdownInterface (
+ /*[in]*/ BSTR Id,
+ /*[in]*/ IUnknown * IHelper ) = 0;
+ virtual HRESULT __stdcall HttpPost2 (
+ /*[in]*/ BSTR URL,
+ /*[in]*/ BSTR HeaderIn,
+ /*[out]*/ BSTR * HeaderOut,
+ /*[out]*/ BSTR * StatusOut,
+ /*[in]*/ long Redirect,
+ /*[in]*/ void * PostData,
+ /*[in]*/ long PostDataSize,
+ /*[out]*/ void * * Data,
+ /*[out]*/ long * DataSize ) = 0;
+ virtual HRESULT __stdcall HttpGet2 (
+ /*[in]*/ BSTR URL,
+ /*[in]*/ BSTR HeaderIn,
+ /*[out]*/ BSTR * HeaderOut,
+ /*[out]*/ BSTR * StatusOut,
+ /*[in]*/ long Redirect,
+ /*[in]*/ void * GetData,
+ /*[in]*/ long GetDataSize,
+ /*[out]*/ void * * Data,
+ /*[out]*/ long * DataSize ) = 0;
+ virtual HRESULT __stdcall HttpGetFile2 (
+ /*[in]*/ BSTR URL,
+ /*[in]*/ BSTR HeaderIn,
+ /*[out]*/ BSTR * HeaderOut,
+ /*[out]*/ BSTR * StatusOut,
+ /*[in]*/ long Redirect,
+ /*[in]*/ void * GetData,
+ /*[in]*/ long GetDataSize,
+ /*[in]*/ BSTR File ) = 0;
+ virtual HRESULT __stdcall InvokeFuzzyMatchDialog2 (
+ /*[in]*/ struct ICddbDiscs * Discs,
+ /*[in]*/ enum CDDBUIFlags Flags,
+ /*[out]*/ long * Selection,
+ /*[out,retval]*/ enum CDDBUIFlags * pVal ) = 0;
+ virtual HRESULT __stdcall LookupMediaFile (
+ /*[in]*/ BSTR Filename,
+ /*[in]*/ struct ICddbID3Tag * Tag,
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ enum CDDBMatchCode * pVal ) = 0;
+ virtual HRESULT __stdcall GetFullDiscInfo2 (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ long Preview,
+ /*[in]*/ long EventOnCompletion,
+ /*[out,retval]*/ struct ICddbDisc * * pVal ) = 0;
+ virtual HRESULT __stdcall IsRegisteredForEncoding (
+ /*[in]*/ long InvokeDialog,
+ /*[out,retval]*/ long * pVal ) = 0;
+};
+
+struct __declspec(uuid("63c7d158-bca0-4c29-96c4-06bdd744ecc2"))
+ICddbOptions2 : ICddbOptions
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_PluginPath (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_PluginPath (
+ /*[in]*/ BSTR pVal ) = 0;
+};
+
+struct __declspec(uuid("d27c6efc-76ed-4724-9741-9531fc52242c"))
+ICddbWork : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Title (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Composer (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+};
+
+struct __declspec(uuid("e5c5f8ea-6f8d-4bd0-8856-95ddd5668cde"))
+ICddbTrack2 : ICddbTrack
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_LanguageId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_LanguageId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ContentLanguageId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ContentLanguageId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ReleaseDate (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ReleaseDate (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_RecordingDate (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_RecordingDate (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall GetProperty (
+ /*[in]*/ enum CDDBProperty PropId,
+ /*[in]*/ BSTR PropName,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall SetProperty (
+ /*[in]*/ enum CDDBProperty PropId,
+ /*[in]*/ BSTR PropName,
+ /*[in]*/ BSTR PropValue ) = 0;
+ virtual HRESULT __stdcall get_YearComposed (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_YearComposed (
+ /*[in]*/ BSTR pVal ) = 0;
+};
+
+struct __declspec(uuid("7af4e5e5-2deb-462f-bbaf-684146856c6b"))
+ICddbCacheManager : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall CheckCache (
+ /*[in]*/ BSTR Filename ) = 0;
+ virtual HRESULT __stdcall BackupCache (
+ /*[in]*/ BSTR Filename ) = 0;
+ virtual HRESULT __stdcall RestoreCache (
+ /*[in]*/ BSTR Filename ) = 0;
+ virtual HRESULT __stdcall CompactCache (
+ /*[in]*/ BSTR Filename ) = 0;
+ virtual HRESULT __stdcall DeleteCache (
+ /*[in]*/ BSTR Filename ) = 0;
+ virtual HRESULT __stdcall FetchDiscByToc (
+ /*[in]*/ BSTR Toc,
+ /*[out,retval]*/ struct ICddbDisc * * pVal ) = 0;
+ virtual HRESULT __stdcall FetchDiscById (
+ /*[in]*/ BSTR MediaId,
+ /*[in]*/ BSTR MuiId,
+ /*[out,retval]*/ struct ICddbDisc * * pVal ) = 0;
+ virtual HRESULT __stdcall FetchDiscByTagId (
+ /*[in]*/ BSTR TagId,
+ /*[out,retval]*/ struct ICddbDisc * * pVal ) = 0;
+ virtual HRESULT __stdcall FetchListOrTree (
+ /*[in]*/ BSTR Type,
+ /*[in]*/ long Tree,
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall StoreDiscByToc (
+ /*[in]*/ BSTR Toc,
+ /*[in]*/ struct ICddbDisc * Disc ) = 0;
+ virtual HRESULT __stdcall StoreDiscById (
+ /*[in]*/ BSTR MediaId,
+ /*[in]*/ BSTR MuiId,
+ /*[in]*/ struct ICddbDisc * Disc ) = 0;
+ virtual HRESULT __stdcall StoreDiscByTagId (
+ /*[in]*/ BSTR TagId,
+ /*[in]*/ struct ICddbDisc * Disc ) = 0;
+ virtual HRESULT __stdcall DeleteList (
+ /*[in]*/ BSTR Type ) = 0;
+ virtual HRESULT __stdcall DeleteDisc (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ BSTR TagId ) = 0;
+ virtual HRESULT __stdcall UpdateListsFromCache (
+ /*[in]*/ BSTR Type ) = 0;
+ virtual HRESULT __stdcall StartIterating ( ) = 0;
+ virtual HRESULT __stdcall NextEntry (
+ /*[out]*/ struct ICddbDisc * * Disc,
+ /*[out]*/ BSTR * Key ) = 0;
+ virtual HRESULT __stdcall FinishIterating ( ) = 0;
+};
+
+struct __declspec(uuid("49d2a10d-a5f3-4bd0-9c15-6b2b94f16593"))
+ICddbWMATag : ICddbFileTag
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall InitFromDisc (
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ long TrackNum ) = 0;
+};
+
+struct __declspec(uuid("1bba432e-84b5-4559-bcf7-cbc199ed6085"))
+ICddbOptions2_5 : ICddbOptions2
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_UILanguageId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_UILanguageId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_DataListRegionId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_DataListRegionId (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_DataListOptions (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_DataListOptions (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_UseLocaleSettings (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_UseLocaleSettings (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_DisplayGenreLevel (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_DisplayGenreLevel (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_DefaultUIGenreLevels (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_DefaultUIGenreLevels (
+ /*[in]*/ long pVal ) = 0;
+};
+
+struct __declspec(uuid("2758dffc-f9fb-4c62-82c9-fdc9bceb5e9c"))
+CDDBNSWinampControl;
+ // [ default ] interface ICDDBControl
+ // [ default, source ] dispinterface DCDDBEvents
+
+struct __declspec(uuid("af647dae-a47c-4153-8852-3b2573d78152"))
+CDDBProps;
+ // [ default ] interface IUnknown
+
+struct __declspec(uuid("e7568058-32ea-4b10-af1b-8b666978891e"))
+CddbInfoWindow;
+ // [ default ] interface ICddbInfoWindow
+
+struct __declspec(uuid("7416f5ca-8922-4516-89e8-d826a8c091c5"))
+CddbUIOptions;
+ // [ default ] interface ICddbUIOptions
+
+struct __declspec(uuid("657eefb8-2071-4e75-8905-36c25e550aa2"))
+CddbTrackManager;
+ // [ default ] interface ICddbTrackManager
+
+struct __declspec(uuid("62d92898-9129-4a24-bc97-078ba176816b"))
+CDDBControl2;
+ // [ default ] interface ICDDBControl2
+ // interface ICDDBControl
+
+struct __declspec(uuid("f7c36ad9-691f-4640-a2e3-0200a642ad25"))
+CddbOptions2;
+ // [ default ] interface ICddbOptions2
+ // interface ICddbOptions
+
+struct __declspec(uuid("1f27a2d8-5745-4a50-b266-a90d6e43269f"))
+CddbTrack2;
+ // [ default ] interface ICddbTrack2
+ // interface ICddbTrack
+
+struct __declspec(uuid("4997bae9-4015-4030-80aa-1477ce28e66c"))
+CddbCacheManager;
+ // [ default ] interface ICddbCacheManager
+
+struct __declspec(uuid("fb51cc6e-a66e-4c28-bef5-142d4927e1cf"))
+CddbWMATag;
+ // [ default ] interface ICddbWMATag
+ // interface ICddbFileTag
+ // interface ICddbFileTag2_5
+
+struct __declspec(uuid("fbcd6aca-39bc-47af-be8e-52bef2b9d0f7"))
+CddbListManager;
+ // [ default ] interface ICddbListManager
+
+struct __declspec(uuid("a943875d-b7ed-4f49-b256-d1a39e5fec82"))
+CddbDataListTree;
+ // [ default ] interface ICddbDataListTree
+
+struct __declspec(uuid("a25bda8e-5281-4664-a325-a3a38e555c18"))
+CddbDataList;
+ // [ default ] interface ICddbDataList
+
+struct __declspec(uuid("1f767747-0f2e-4e6d-8105-56987c8c499e"))
+CddbDataListElement;
+ // [ default ] interface ICddbDataListElement
+
+struct __declspec(uuid("9bac7636-3c83-4a17-bc39-aeff43f8780b"))
+CddbExtData;
+ // [ default ] interface ICddbExtData
+
+struct __declspec(uuid("94c43420-12fe-4cb0-941d-babffc126834"))
+CddbWork;
+ // [ default ] interface ICddbWork
+
+struct __declspec(uuid("3254573e-1053-4430-9ca6-7b9b89638515"))
+ICddbFileTag2_5 : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_DiscArtist (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_DiscArtist (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Lyricist (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Lyricist (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Composer (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Composer (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_OriginalReleaseYear (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_OriginalReleaseYear (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_OriginalLyricist (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_OriginalLyricist (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Ensemble (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Ensemble (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Conductor (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Conductor (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ExtData (
+ /*[out,retval]*/ struct ICddbExtData * * ppExtData ) = 0;
+ virtual HRESULT __stdcall put_ExtData (
+ /*[in]*/ struct ICddbExtData * ppExtData ) = 0;
+ virtual HRESULT __stdcall get_ExtDataSerialized (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ExtDataSerialized (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_LengthMS (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_LengthMS (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_DataListElement (
+ /*[in]*/ long listID,
+ /*[in]*/ long Level,
+ /*[out,retval]*/ struct ICddbDataListElement * * ppDataListElement ) = 0;
+ virtual HRESULT __stdcall put_DataListElement (
+ /*[in]*/ struct ICddbDataListElement * pDataListElement ) = 0;
+};
+
+struct __declspec(uuid("2a050616-00e0-49c3-bc60-23c5192b25d3"))
+ICddbExtData : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall PopulateFromDisc (
+ /*[in]*/ struct ICddbDisc2 * pDisc,
+ /*[in]*/ long Flags,
+ /*[in]*/ long TrackNum ) = 0;
+ virtual HRESULT __stdcall PopulateFromTag (
+ /*[in]*/ struct ICddbFileTag2_5 * pTag,
+ /*[in]*/ long Flags ) = 0;
+ virtual HRESULT __stdcall PopulateFromDataElement (
+ /*[in]*/ struct ICddbDataListElement * pElement,
+ /*[in]*/ long Flags ) = 0;
+ virtual HRESULT __stdcall ApplyToDisc (
+ /*[in]*/ struct ICddbDisc2 * pDisc,
+ /*[in]*/ long Flags,
+ /*[in]*/ long TrackNum ) = 0;
+ virtual HRESULT __stdcall ApplyToTag (
+ /*[in]*/ struct ICddbFileTag2_5 * pTag,
+ /*[in]*/ long Flags ) = 0;
+ virtual HRESULT __stdcall Serialize (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall Deserialize (
+ /*[in]*/ BSTR newVal ) = 0;
+ virtual HRESULT __stdcall GetDataListElement (
+ /*[in]*/ long listID,
+ /*[in]*/ long Level,
+ /*[out,retval]*/ struct ICddbDataListElement * * ppDataListElement ) = 0;
+ virtual HRESULT __stdcall GetExtendedDataId (
+ /*[in]*/ long listID,
+ /*[in]*/ long Level,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall PutExtendedDataId (
+ /*[in]*/ long listID,
+ /*[in]*/ long newVal ) = 0;
+ virtual HRESULT __stdcall GetExtendedDataName (
+ /*[in]*/ long listID,
+ /*[in]*/ long Level,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall GetExtendedDataDescription (
+ /*[in]*/ long listID,
+ /*[in]*/ long Level,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall GetExtendedDataOrdinal (
+ /*[in]*/ long listID,
+ /*[in]*/ long Level,
+ /*[out,retval]*/ long * pVal ) = 0;
+};
+
+struct __declspec(uuid("f19a9d2d-2287-4c64-96c7-4bb63edec9c5"))
+ICddbDataListElement : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Id (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_Name (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Description (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Level (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_Ordinal (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetParent (
+ /*[out,retval]*/ struct ICddbDataListElement * * Element ) = 0;
+ virtual HRESULT __stdcall GetChildrenList (
+ /*[out,retval]*/ struct ICddbDataList * * List ) = 0;
+};
+
+struct __declspec(uuid("c412e44b-a911-4e2e-ab26-f12bdb23ee55"))
+ICddbDataList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_Level (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetElement (
+ /*[in]*/ long Index,
+ /*[out,retval]*/ struct ICddbDataListElement * * Element ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("db780e88-d446-4157-af74-04e8e48e46a3"))
+ICddbDisc2_5 : ICddbDisc2
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_V2GenreStringPrimary (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_V2GenreStringPrimary (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_V2GenreStringSecondary (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_V2GenreStringSecondary (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_V2GenreStringPrimaryByLevel (
+ /*[in]*/ long genreLevel,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_V2GenreStringPrimaryByLevel (
+ /*[in]*/ long genreLevel,
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_V2GenreStringSecondaryByLevel (
+ /*[in]*/ long genreLevel,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_V2GenreStringSecondaryByLevel (
+ /*[in]*/ long genreLevel,
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ExtDataSerialized (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ExtDataSerialized (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ExtData (
+ /*[in]*/ long Flags,
+ /*[out,retval]*/ struct ICddbExtData * * ppExtData ) = 0;
+ virtual HRESULT __stdcall put_ExtData (
+ /*[in]*/ long Flags,
+ /*[in]*/ struct ICddbExtData * ppExtData ) = 0;
+ virtual HRESULT __stdcall GetDataListElement (
+ /*[in]*/ long listID,
+ /*[in]*/ long Level,
+ /*[out,retval]*/ struct ICddbDataListElement * * ppDataListElement ) = 0;
+ virtual HRESULT __stdcall PutDataListElement (
+ /*[in]*/ struct ICddbDataListElement * pDataListElement ) = 0;
+};
+
+struct __declspec(uuid("a354a00f-1f1d-44bb-853f-cb77153c302c"))
+ICddbDisc2_6 : ICddbDisc2_5
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_WorkCount (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_Work (
+ /*[in]*/ long WorkIndex,
+ /*[out,retval]*/ struct ICddbWork * * pVal ) = 0;
+ virtual HRESULT __stdcall RetrieveData (
+ /*[in]*/ long CddbDataOptions ) = 0;
+};
+
+struct __declspec(uuid("24959692-aac0-411d-9e6b-c7611fccacba"))
+ICddbTrack2_5 : ICddbTrack2
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_V2GenreStringPrimary (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_V2GenreStringPrimary (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_V2GenreStringSecondary (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_V2GenreStringSecondary (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_V2GenreStringPrimaryByLevel (
+ /*[in]*/ long genreLevel,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_V2GenreStringPrimaryByLevel (
+ /*[in]*/ long genreLevel,
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_V2GenreStringSecondaryByLevel (
+ /*[in]*/ long genreLevel,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_V2GenreStringSecondaryByLevel (
+ /*[in]*/ long genreLevel,
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ExtDataSerialized (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_ExtDataSerialized (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_ExtData (
+ /*[in]*/ long Flags,
+ /*[out,retval]*/ struct ICddbExtData * * ppExtData ) = 0;
+ virtual HRESULT __stdcall put_ExtData (
+ /*[in]*/ long Flags,
+ /*[in]*/ struct ICddbExtData * ppExtData ) = 0;
+ virtual HRESULT __stdcall GetDataListElement (
+ /*[in]*/ long listID,
+ /*[in]*/ long Level,
+ /*[out,retval]*/ struct ICddbDataListElement * * ppDataListElement ) = 0;
+ virtual HRESULT __stdcall PutDataListElement (
+ /*[in]*/ struct ICddbDataListElement * pDataListElement ) = 0;
+};
+
+struct __declspec(uuid("e7d07c78-6084-4628-89f6-6f89dd5f1a9f"))
+ICddbTrack2_6 : ICddbTrack2_5
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_WorkCount (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_Work (
+ /*[in]*/ long WorkIndex,
+ /*[out,retval]*/ struct ICddbWork * * pVal ) = 0;
+};
+
+struct __declspec(uuid("fe5e5b63-8154-4cb0-8ffc-a0aab7dbe9d5"))
+ICddbDataListTree : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_LanguageId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_RegionId (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Variant (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Variant (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Levels (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_Revision (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetElementById (
+ /*[in]*/ long Level,
+ /*[in]*/ long Id,
+ /*[out,retval]*/ struct ICddbDataListElement * * Element ) = 0;
+ virtual HRESULT __stdcall GetElementByData (
+ /*[in]*/ long Level,
+ /*[in]*/ struct ICddbExtData * Data,
+ /*[in]*/ long Flags,
+ /*[out,retval]*/ struct ICddbDataListElement * * Element ) = 0;
+ virtual HRESULT __stdcall GetRootList (
+ /*[out,retval]*/ struct ICddbDataList * * List ) = 0;
+ virtual HRESULT __stdcall CreatePopupMenu (
+ /*[in]*/ long Levels,
+ /*[out,retval]*/ long * Menu ) = 0;
+};
+
+struct __declspec(uuid("e6051029-5694-4e7d-a524-7e38f3c9443d"))
+ICddbListManager : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall Initialize (
+ /*[in]*/ struct ICDDBControl * Control ) = 0;
+ virtual HRESULT __stdcall Shutdown ( ) = 0;
+ virtual HRESULT __stdcall GetDataListTree (
+ /*[in]*/ enum CDDBDataListID listID,
+ /*[out,retval]*/ struct ICddbDataListTree * * Tree ) = 0;
+ virtual HRESULT __stdcall ReleaseDataListTree (
+ /*[in]*/ struct ICddbDataListTree * Tree ) = 0;
+ virtual HRESULT __stdcall VerifyOptions (
+ /*[in]*/ long Flags,
+ /*[in]*/ BSTR LanguageId,
+ /*[in]*/ BSTR RegionId,
+ /*[out,retval]*/ long * Status ) = 0;
+ virtual HRESULT __stdcall DownloadUpdateLists (
+ /*[in]*/ enum CDDBDataListID listID,
+ /*[in]*/ long Flags,
+ /*[out,retval]*/ long * Status ) = 0;
+};
+
+//
+// Named GUID constants initializations
+//
+
+extern "C" const GUID __declspec(selectany) LIBID_CDDBCONTROLLibNSWinamp =
+ {0x65eba1d4,0x45e2,0x4ec5,{0xa7,0xff,0xcb,0x7e,0x14,0x65,0x9c,0x77}};
+extern "C" const GUID __declspec(selectany) DIID_DCDDBEvents =
+ {0xfc288125,0x6636,0x405c,{0xbe,0x68,0xe9,0xd3,0x77,0x00,0xde,0xb0}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbUserInfo =
+ {0x796d4314,0x0c0e,0x4b10,{0x8b,0xc2,0x3f,0x3e,0x69,0x56,0xbc,0x26}};
+extern "C" const GUID __declspec(selectany) IID_ICddbUserInfo =
+ {0x4570cddc,0x94f8,0x4b43,{0xb1,0xac,0x79,0x6d,0x68,0xfa,0xc7,0xdf}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbOptions =
+ {0x544bb1f5,0xd771,0x4fed,{0x8f,0xa7,0xd8,0x3e,0x62,0xfe,0xfb,0x82}};
+extern "C" const GUID __declspec(selectany) IID_ICddbOptions =
+ {0x30755708,0xae75,0x49f8,{0xb9,0x9a,0xac,0x8d,0x09,0x5d,0x04,0x48}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbDisc =
+ {0x3d055b64,0x824e,0x4613,{0xb8,0x45,0x6a,0xfc,0xdb,0x88,0x8a,0xa0}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbTrack =
+ {0x02d9f45f,0x2155,0x4445,{0x83,0xb9,0x75,0xdf,0xa5,0x15,0x45,0x38}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbFullName =
+ {0xd5673322,0xc7a0,0x493a,{0x98,0xd5,0xf1,0x6d,0xa0,0x07,0x24,0xaa}};
+extern "C" const GUID __declspec(selectany) IID_ICddbFullName =
+ {0x2b6107ad,0xd1f2,0x41c3,{0xb9,0xb9,0x33,0x49,0x32,0x4f,0x7e,0x7b}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbCredit =
+ {0x61bd27fe,0x604c,0x49f8,{0xa9,0x79,0x7a,0x26,0x0a,0x51,0xea,0x5f}};
+extern "C" const GUID __declspec(selectany) IID_ICddbCredit =
+ {0x2aae501a,0x6d20,0x4af3,{0x8c,0x79,0x47,0x31,0x06,0xbd,0x53,0x91}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbCredits =
+ {0x9a27fc19,0xf3ac,0x4755,{0xa0,0x5a,0x9c,0x79,0x22,0x43,0x72,0x71}};
+extern "C" const GUID __declspec(selectany) IID_ICddbTrack =
+ {0x7da05059,0xcfb4,0x46ce,{0xa7,0x88,0x70,0x9a,0x3a,0xd3,0x45,0x4d}};
+extern "C" const GUID __declspec(selectany) IID_ICddbCredits =
+ {0xc30fbc5c,0xf56c,0x40dd,{0x84,0x1d,0x5e,0x44,0x28,0xf3,0xba,0xea}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbTracks =
+ {0xb2ebb2e2,0x48e5,0x4004,{0xbc,0x9e,0x9c,0xde,0xfd,0xd9,0x26,0x9e}};
+extern "C" const GUID __declspec(selectany) IID_ICddbTracks =
+ {0xa1fa4e71,0xb4e0,0x4378,{0xa1,0x02,0x04,0xe8,0x50,0xe0,0xaa,0x18}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbSegments =
+ {0xf2f46124,0x41eb,0x4e26,{0xb2,0xe5,0xd7,0xfc,0x17,0x36,0xc8,0xa2}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbSegment =
+ {0x993bb5e2,0x4a0d,0x4ed0,{0xbd,0x37,0x87,0x18,0xc4,0x22,0x99,0x7e}};
+extern "C" const GUID __declspec(selectany) IID_ICddbSegments =
+ {0x31480e0f,0xde17,0x4cae,{0x8d,0x85,0x1d,0xb9,0x0f,0x9f,0xcd,0x2f}};
+extern "C" const GUID __declspec(selectany) IID_ICddbSegment =
+ {0x375b697c,0x06a1,0x4d99,{0x9f,0x5d,0x35,0x89,0x00,0x1b,0x15,0xfd}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbURLTree =
+ {0x15a6784e,0xb924,0x43da,{0xa1,0x5f,0x92,0xe0,0x07,0x2a,0xc1,0x4d}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbURLList =
+ {0xf61de7e3,0xbd71,0x442c,{0xa5,0x55,0xd1,0x18,0x80,0xa0,0xb4,0x54}};
+extern "C" const GUID __declspec(selectany) IID_ICddbURLTree =
+ {0x20d2984f,0x0d6d,0x49f9,{0xaa,0x80,0x36,0x03,0x0c,0xef,0x0a,0x42}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbURL =
+ {0x6f6f90b2,0xff9f,0x4f62,{0x8e,0xee,0x6b,0xa0,0x4a,0x45,0xde,0x6c}};
+extern "C" const GUID __declspec(selectany) IID_ICddbURLList =
+ {0x680f25c4,0x044b,0x4de0,{0x99,0x8f,0xdf,0xa4,0x63,0x62,0x6e,0x13}};
+extern "C" const GUID __declspec(selectany) IID_ICddbURL =
+ {0x751e8ace,0x610b,0x4336,{0xb4,0x25,0x50,0x38,0x15,0x4f,0x68,0xa2}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbLanguages =
+ {0x8f3ae41f,0x1fe4,0x4293,{0xb0,0x16,0x71,0xe3,0xbc,0xca,0x98,0x41}};
+extern "C" const GUID __declspec(selectany) IID_ICddbDisc =
+ {0x5220e8fa,0xb11f,0x46cf,{0x97,0x86,0x51,0xb1,0x1e,0x05,0xf6,0x57}};
+extern "C" const GUID __declspec(selectany) IID_ICddbLanguages =
+ {0x686f7bce,0x1edb,0x4540,{0x8c,0x25,0xbb,0xa9,0xce,0x7b,0x23,0x23}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbDiscs =
+ {0xe39c031c,0xa54e,0x40f7,{0xb8,0x2d,0x1c,0x47,0x15,0x5e,0x74,0x11}};
+extern "C" const GUID __declspec(selectany) IID_ICddbDiscs =
+ {0x0d5072cc,0x86a0,0x4600,{0xbb,0x7f,0xda,0x77,0x23,0xdd,0xd2,0x98}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbGenreList =
+ {0x82e54124,0x11a8,0x4b37,{0x98,0x20,0x3e,0x63,0xea,0xbd,0xe0,0x79}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbGenre =
+ {0xcd5f005a,0x596d,0x4b5a,{0x8a,0xb9,0xc9,0x82,0x13,0x15,0xb9,0x50}};
+extern "C" const GUID __declspec(selectany) IID_ICddbGenreList =
+ {0x9151953e,0x0621,0x4167,{0xbc,0xb6,0x36,0xf8,0xe6,0x5e,0xc6,0xc9}};
+extern "C" const GUID __declspec(selectany) IID_ICddbGenre =
+ {0x4b3be7ee,0x9a6e,0x4276,{0x87,0x01,0x3a,0x85,0xf5,0xd9,0xe3,0xc5}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbGenreTree =
+ {0xa228e94b,0x2fc2,0x448c,{0xb5,0x93,0xd2,0x93,0xd9,0x81,0xa3,0x35}};
+extern "C" const GUID __declspec(selectany) IID_ICddbGenreTree =
+ {0x37668f25,0xb3ff,0x42ea,{0xa3,0xf9,0x25,0xea,0x07,0x40,0x90,0x2e}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbRegionList =
+ {0xe454ac26,0x5551,0x47ee,{0x95,0x1c,0x5a,0xe1,0xdd,0x82,0x4d,0x28}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbRegion =
+ {0x203e2a74,0xacde,0x4588,{0xad,0x98,0xa6,0x66,0xdc,0xb1,0x63,0x6a}};
+extern "C" const GUID __declspec(selectany) IID_ICddbRegionList =
+ {0xc841589b,0xce3d,0x4fef,{0x94,0x22,0x28,0x32,0xa6,0x4d,0x32,0x1e}};
+extern "C" const GUID __declspec(selectany) IID_ICddbRegion =
+ {0x57b9551a,0xa3ea,0x484d,{0x8f,0xc6,0x1b,0x4e,0xc7,0xd2,0x42,0x0d}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbRoleList =
+ {0x24575390,0x26a3,0x405d,{0xb4,0x7b,0xfc,0x72,0xcd,0xcb,0x80,0xaa}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbRole =
+ {0x546523f6,0x07ee,0x488c,{0xb4,0x72,0xdd,0x4a,0x33,0x8b,0xa7,0xa2}};
+extern "C" const GUID __declspec(selectany) IID_ICddbRoleList =
+ {0x614d9d0a,0xc012,0x4863,{0xaf,0xbf,0x9c,0x9d,0xd0,0x1e,0x04,0xd1}};
+extern "C" const GUID __declspec(selectany) IID_ICddbRole =
+ {0x84f40113,0xd6ca,0x4289,{0xac,0xfa,0xb8,0xb1,0x69,0x1e,0x59,0x6b}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbRoleTree =
+ {0xa25a1b97,0xa3f8,0x4fd5,{0xa7,0x1e,0xa6,0xab,0x86,0xde,0x19,0x46}};
+extern "C" const GUID __declspec(selectany) IID_ICddbRoleTree =
+ {0x0ba44da2,0xa91d,0x4c60,{0x8e,0x48,0x61,0xb5,0xe6,0x94,0x95,0xea}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbLanguageList =
+ {0xbd8c8761,0x451f,0x4aec,{0x9d,0xad,0xf4,0x2b,0xdb,0xea,0xf9,0xe6}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbLanguage =
+ {0xee5da1c8,0xea29,0x4ec6,{0xa5,0x9c,0x23,0xdd,0xc3,0x04,0xba,0xb0}};
+extern "C" const GUID __declspec(selectany) IID_ICddbLanguageList =
+ {0x719c744f,0xcdef,0x49c2,{0x9a,0xda,0xdf,0x5b,0xa8,0x77,0x0f,0x4b}};
+extern "C" const GUID __declspec(selectany) IID_ICddbLanguage =
+ {0x06c77e4d,0xfe13,0x4fa4,{0xb5,0x2a,0x1c,0xf2,0xe0,0x47,0xf5,0x5f}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbFieldList =
+ {0xf34a22b2,0xa4df,0x4a19,{0xbf,0xd9,0xc5,0x93,0xbd,0x1c,0xd6,0xb2}};
+extern "C" const GUID __declspec(selectany) IID_ICddbFieldList =
+ {0xcf6268fd,0x7ba3,0x4cc5,{0x9d,0xe1,0xfe,0xad,0x92,0x3d,0x21,0x6c}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbField =
+ {0x9390d4fe,0x56ca,0x42f6,{0xb8,0xdc,0x16,0xe2,0x2d,0x12,0xc9,0xc3}};
+extern "C" const GUID __declspec(selectany) IID_ICddbField =
+ {0xaa3218d8,0xa65c,0x4a29,{0x86,0x90,0x1e,0x5b,0x75,0xdb,0xf3,0xb8}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbURLManager =
+ {0xdccf8d5f,0xc1f6,0x44a1,{0xb0,0x65,0x60,0xd5,0x65,0x57,0xf8,0x21}};
+extern "C" const GUID __declspec(selectany) IID_ICddbURLManager =
+ {0x623ce0d4,0x7b45,0x4b69,{0xa2,0x8d,0x24,0x01,0xe7,0xaa,0x16,0xd4}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbID3TagManager =
+ {0xa4d4fe68,0x1df3,0x42fe,{0x8a,0x8d,0x59,0x4d,0x9b,0xd6,0x0f,0xd0}};
+extern "C" const GUID __declspec(selectany) IID_ICDDBControl =
+ {0x723695c2,0x3b01,0x42c3,{0xa6,0x61,0x64,0xd2,0xec,0x30,0xb4,0xe5}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbID3Tag =
+ {0x9e77a3fd,0xdf03,0x4077,{0xba,0x10,0x00,0x1d,0x52,0xac,0xae,0x44}};
+extern "C" const GUID __declspec(selectany) IID_ICddbID3TagManager =
+ {0xe7bbbe3a,0xdc3c,0x4d00,{0x98,0xf9,0xbc,0x62,0x0c,0xa9,0x52,0xf8}};
+extern "C" const GUID __declspec(selectany) IID_ICddbFileTag =
+ {0xca4e0490,0x7ed8,0x44a5,{0x9e,0xcd,0xd0,0x0b,0x90,0xdb,0xe8,0x08}};
+extern "C" const GUID __declspec(selectany) IID_ICddbID3Tag =
+ {0x7b2d9eb8,0x70aa,0x43d3,{0xaa,0x8e,0xe7,0x1c,0xe5,0x3a,0x83,0xd8}};
+extern "C" const GUID __declspec(selectany) IID_ICddbID3Tag2 =
+ {0x44959787,0x915b,0x4fcf,{0x97,0x63,0x10,0x38,0x48,0x3c,0x00,0x0e}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbDisc2 =
+ {0xd0be7f39,0x60d3,0x43e2,{0xaa,0x96,0x51,0x32,0x17,0x44,0x3a,0xb6}};
+extern "C" const GUID __declspec(selectany) IID_ICddbDisc2 =
+ {0x45d1d297,0xdd01,0x4890,{0x92,0x8c,0x34,0xe1,0xba,0x49,0x4a,0x14}};
+extern "C" const GUID __declspec(selectany) IID_ICddbInfoWindow =
+ {0xd0f041d4,0x1570,0x4143,{0xbb,0x6a,0x4c,0xe0,0x41,0xb1,0x09,0xd4}};
+extern "C" const GUID __declspec(selectany) IID_ICddbUIOptions =
+ {0x06c18ba6,0x86a0,0x464c,{0xb8,0x38,0x13,0xa7,0x4e,0x1a,0xd0,0x49}};
+extern "C" const GUID __declspec(selectany) IID_ICddbTrackManager =
+ {0xd6f791c8,0xa7f7,0x4702,{0x9d,0x24,0x4b,0x8f,0x8c,0xa4,0xc8,0x07}};
+extern "C" const GUID __declspec(selectany) IID_ICDDBControl2 =
+ {0x1b0700ee,0xc9c7,0x4fca,{0x95,0x84,0x10,0x96,0x26,0x8c,0xf6,0xc4}};
+extern "C" const GUID __declspec(selectany) IID_ICddbOptions2 =
+ {0x63c7d158,0xbca0,0x4c29,{0x96,0xc4,0x06,0xbd,0xd7,0x44,0xec,0xc2}};
+extern "C" const GUID __declspec(selectany) IID_ICddbWork =
+ {0xd27c6efc,0x76ed,0x4724,{0x97,0x41,0x95,0x31,0xfc,0x52,0x24,0x2c}};
+extern "C" const GUID __declspec(selectany) IID_ICddbTrack2 =
+ {0xe5c5f8ea,0x6f8d,0x4bd0,{0x88,0x56,0x95,0xdd,0xd5,0x66,0x8c,0xde}};
+extern "C" const GUID __declspec(selectany) IID_ICddbCacheManager =
+ {0x7af4e5e5,0x2deb,0x462f,{0xbb,0xaf,0x68,0x41,0x46,0x85,0x6c,0x6b}};
+extern "C" const GUID __declspec(selectany) IID_ICddbWMATag =
+ {0x49d2a10d,0xa5f3,0x4bd0,{0x9c,0x15,0x6b,0x2b,0x94,0xf1,0x65,0x93}};
+extern "C" const GUID __declspec(selectany) IID_ICddbOptions2_5 =
+ {0x1bba432e,0x84b5,0x4559,{0xbc,0xf7,0xcb,0xc1,0x99,0xed,0x60,0x85}};
+extern "C" const GUID __declspec(selectany) CLSID_CDDBNSWinampControl =
+ {0x2758dffc,0xf9fb,0x4c62,{0x82,0xc9,0xfd,0xc9,0xbc,0xeb,0x5e,0x9c}};
+extern "C" const GUID __declspec(selectany) CLSID_CDDBProps =
+ {0xaf647dae,0xa47c,0x4153,{0x88,0x52,0x3b,0x25,0x73,0xd7,0x81,0x52}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbInfoWindow =
+ {0xe7568058,0x32ea,0x4b10,{0xaf,0x1b,0x8b,0x66,0x69,0x78,0x89,0x1e}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbUIOptions =
+ {0x7416f5ca,0x8922,0x4516,{0x89,0xe8,0xd8,0x26,0xa8,0xc0,0x91,0xc5}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbTrackManager =
+ {0x657eefb8,0x2071,0x4e75,{0x89,0x05,0x36,0xc2,0x5e,0x55,0x0a,0xa2}};
+extern "C" const GUID __declspec(selectany) CLSID_CDDBControl2 =
+ {0x62d92898,0x9129,0x4a24,{0xbc,0x97,0x07,0x8b,0xa1,0x76,0x81,0x6b}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbOptions2 =
+ {0xf7c36ad9,0x691f,0x4640,{0xa2,0xe3,0x02,0x00,0xa6,0x42,0xad,0x25}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbTrack2 =
+ {0x1f27a2d8,0x5745,0x4a50,{0xb2,0x66,0xa9,0x0d,0x6e,0x43,0x26,0x9f}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbCacheManager =
+ {0x4997bae9,0x4015,0x4030,{0x80,0xaa,0x14,0x77,0xce,0x28,0xe6,0x6c}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbWMATag =
+ {0xfb51cc6e,0xa66e,0x4c28,{0xbe,0xf5,0x14,0x2d,0x49,0x27,0xe1,0xcf}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbListManager =
+ {0xfbcd6aca,0x39bc,0x47af,{0xbe,0x8e,0x52,0xbe,0xf2,0xb9,0xd0,0xf7}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbDataListTree =
+ {0xa943875d,0xb7ed,0x4f49,{0xb2,0x56,0xd1,0xa3,0x9e,0x5f,0xec,0x82}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbDataList =
+ {0xa25bda8e,0x5281,0x4664,{0xa3,0x25,0xa3,0xa3,0x8e,0x55,0x5c,0x18}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbDataListElement =
+ {0x1f767747,0x0f2e,0x4e6d,{0x81,0x05,0x56,0x98,0x7c,0x8c,0x49,0x9e}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbExtData =
+ {0x9bac7636,0x3c83,0x4a17,{0xbc,0x39,0xae,0xff,0x43,0xf8,0x78,0x0b}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbWork =
+ {0x94c43420,0x12fe,0x4cb0,{0x94,0x1d,0xba,0xbf,0xfc,0x12,0x68,0x34}};
+extern "C" const GUID __declspec(selectany) IID_ICddbFileTag2_5 =
+ {0x3254573e,0x1053,0x4430,{0x9c,0xa6,0x7b,0x9b,0x89,0x63,0x85,0x15}};
+extern "C" const GUID __declspec(selectany) IID_ICddbExtData =
+ {0x2a050616,0x00e0,0x49c3,{0xbc,0x60,0x23,0xc5,0x19,0x2b,0x25,0xd3}};
+extern "C" const GUID __declspec(selectany) IID_ICddbDataListElement =
+ {0xf19a9d2d,0x2287,0x4c64,{0x96,0xc7,0x4b,0xb6,0x3e,0xde,0xc9,0xc5}};
+extern "C" const GUID __declspec(selectany) IID_ICddbDataList =
+ {0xc412e44b,0xa911,0x4e2e,{0xab,0x26,0xf1,0x2b,0xdb,0x23,0xee,0x55}};
+extern "C" const GUID __declspec(selectany) IID_ICddbDisc2_5 =
+ {0xdb780e88,0xd446,0x4157,{0xaf,0x74,0x04,0xe8,0xe4,0x8e,0x46,0xa3}};
+extern "C" const GUID __declspec(selectany) IID_ICddbDisc2_6 =
+ {0xa354a00f,0x1f1d,0x44bb,{0x85,0x3f,0xcb,0x77,0x15,0x3c,0x30,0x2c}};
+extern "C" const GUID __declspec(selectany) IID_ICddbTrack2_5 =
+ {0x24959692,0xaac0,0x411d,{0x9e,0x6b,0xc7,0x61,0x1f,0xcc,0xac,0xba}};
+extern "C" const GUID __declspec(selectany) IID_ICddbTrack2_6 =
+ {0xe7d07c78,0x6084,0x4628,{0x89,0xf6,0x6f,0x89,0xdd,0x5f,0x1a,0x9f}};
+extern "C" const GUID __declspec(selectany) IID_ICddbDataListTree =
+ {0xfe5e5b63,0x8154,0x4cb0,{0x8f,0xfc,0xa0,0xaa,0xb7,0xdb,0xe9,0xd5}};
+extern "C" const GUID __declspec(selectany) IID_ICddbListManager =
+ {0xe6051029,0x5694,0x4e7d,{0xa5,0x24,0x7e,0x38,0xf3,0xc9,0x44,0x3d}};
+
+#pragma pack(pop)
diff --git a/Src/gracenote/cddbmusicidwinamp.tlh b/Src/gracenote/cddbmusicidwinamp.tlh
new file mode 100644
index 00000000..2d901012
--- /dev/null
+++ b/Src/gracenote/cddbmusicidwinamp.tlh
@@ -0,0 +1,633 @@
+// Created by Microsoft (R) C/C++ Compiler Version 15.00.30729.01 (dfa22718).
+//
+// f:\sandbox\20131028_225933\winamp\release\cddbmusicidwinamp.tlh
+//
+// C++ source equivalent of Win32 type library ../gracenote/CddbMusicIDWinamp.dll
+// compiler-generated file created 10/28/13 at 23:18:29 - DO NOT EDIT!
+
+//
+// Cross-referenced type libraries:
+//
+//
+
+#pragma once
+#pragma pack(push, 8)
+
+#include <comdef.h>
+
+//
+// Forward references and typedefs
+//
+
+struct __declspec(uuid("05d652c1-7997-40f9-982d-347b8e29f8fb"))
+/* LIBID */ __CDDBMUSICIDLibNSWinamp;
+enum CddbMusicIDOptions;
+enum CddbMusicIDMatchCode;
+enum FileInfoListMatchCode;
+enum CddbMusicIDStatus;
+enum CDDBMusicID_LookupMode;
+enum MusicIDThreadPriority;
+enum CDDBMusicID_Results;
+enum MusicIDMatchType;
+struct __declspec(uuid("46ac5819-1fa8-44a1-9954-270ea2cf0dca"))
+/* dispinterface */ _ICDDBMusicIDManagerEvents;
+struct __declspec(uuid("0aa9fdfb-80d5-41bf-b383-7aab869e6b0e"))
+/* dual interface */ ICddbFileInfo;
+struct __declspec(uuid("cca2a70a-bcbc-49e9-8ef4-04dabcd68b81"))
+/* dual interface */ ICddbMusicIDFingerprint;
+struct __declspec(uuid("db104e47-62bb-4933-8f37-8984228e6938"))
+/* dual interface */ IFingerprintImpl;
+struct __declspec(uuid("099a10ed-517b-4387-a12e-af3fe90b5856"))
+/* dual interface */ ICddbFileInfoList;
+struct __declspec(uuid("5000f09e-8483-4deb-8345-4e778a9fe804"))
+/* dual interface */ ICddbFileInfoLists;
+struct __declspec(uuid("6131c03d-97d0-49ca-8eb1-5fa0d10ec072"))
+/* dual interface */ ICDDBMusicIDManager;
+struct __declspec(uuid("ec0e5dd3-8bab-4671-85a1-68bf93cb35e4"))
+/* dual interface */ ICddbMusicIDFingerprinter;
+struct __declspec(uuid("26b263b3-57cd-42fd-aa48-e505b4780055"))
+/* dual interface */ ICddbMusicIDFingerprinter2;
+struct __declspec(uuid("dc6da11f-ca85-4658-9216-2ad353cfc33b"))
+/* dual interface */ ICddbFileInfo2;
+struct __declspec(uuid("3b4a2b07-aafe-4931-a7f9-4c37729633ca"))
+/* dual interface */ ICddbFileInfo2_6;
+struct __declspec(uuid("18d6bc7c-4cbc-4b6a-9550-2b176438b87c"))
+/* dual interface */ ICddbFileInfoList2_6;
+struct __declspec(uuid("281bfe03-1503-4c60-9678-173c8b4138cc"))
+/* dual interface */ ICDDBMusicIDManager2;
+struct __declspec(uuid("5797bf13-a4e7-4170-ae22-5f06b2823e04"))
+/* dual interface */ ICDDBMusicIDManager3;
+struct __declspec(uuid("43b1b346-2394-46e7-b1ac-ea8d93124f68"))
+/* dual interface */ ICddbMusicIDSettings;
+struct /* coclass */ CDDBNSWinampMusicIDManager;
+struct /* coclass */ CddbMusicIDFingerprinter;
+struct /* coclass */ CddbMusicIDFingerprint;
+struct /* coclass */ CddbFileInfo;
+struct /* coclass */ CddbFileInfoList;
+struct /* coclass */ CddbFileInfoLists;
+struct /* coclass */ CddbMusicIDSettings;
+
+//
+// Smart pointer typedef declarations
+//
+
+_COM_SMARTPTR_TYPEDEF(_ICDDBMusicIDManagerEvents, __uuidof(_ICDDBMusicIDManagerEvents));
+_COM_SMARTPTR_TYPEDEF(IFingerprintImpl, __uuidof(IFingerprintImpl));
+_COM_SMARTPTR_TYPEDEF(ICddbMusicIDFingerprint, __uuidof(ICddbMusicIDFingerprint));
+_COM_SMARTPTR_TYPEDEF(ICddbFileInfo, __uuidof(ICddbFileInfo));
+_COM_SMARTPTR_TYPEDEF(ICddbFileInfoList, __uuidof(ICddbFileInfoList));
+_COM_SMARTPTR_TYPEDEF(ICddbFileInfoLists, __uuidof(ICddbFileInfoLists));
+_COM_SMARTPTR_TYPEDEF(ICddbMusicIDFingerprinter, __uuidof(ICddbMusicIDFingerprinter));
+_COM_SMARTPTR_TYPEDEF(ICDDBMusicIDManager, __uuidof(ICDDBMusicIDManager));
+_COM_SMARTPTR_TYPEDEF(ICddbMusicIDFingerprinter2, __uuidof(ICddbMusicIDFingerprinter2));
+_COM_SMARTPTR_TYPEDEF(ICddbFileInfo2, __uuidof(ICddbFileInfo2));
+_COM_SMARTPTR_TYPEDEF(ICddbFileInfo2_6, __uuidof(ICddbFileInfo2_6));
+_COM_SMARTPTR_TYPEDEF(ICddbFileInfoList2_6, __uuidof(ICddbFileInfoList2_6));
+_COM_SMARTPTR_TYPEDEF(ICDDBMusicIDManager2, __uuidof(ICDDBMusicIDManager2));
+_COM_SMARTPTR_TYPEDEF(ICddbMusicIDSettings, __uuidof(ICddbMusicIDSettings));
+_COM_SMARTPTR_TYPEDEF(ICDDBMusicIDManager3, __uuidof(ICDDBMusicIDManager3));
+
+//
+// Type library items
+//
+
+enum CddbMusicIDOptions
+{
+ MUSICID_DEFAULT = 0,
+ MUSICID_LOOKUP_ASYNC = 1,
+ MUSICID_RETURN_SINGLE = 16,
+ MUSICID_RETURN_EXACT_ONLY = 16,
+ MUSICID_RETURN_ALL = 32,
+ MUSICID_GET_FP_FROM_APP = 256,
+ MUSICID_GET_FP_INTERNAL = 512,
+ MUSICID_GET_TAG_FROM_APP = 4096,
+ MUSICID_GET_TAG_INTERNAL = 8192,
+ MUSICID_PREFER_WF_MATCHES = 16384,
+ MUSICID_DISABLE_TEXT_LOOKUPS = 32768,
+ MUSICID_DISABLE_WF_QUERIES = 65536,
+ MUSICID_DISABLE_TEXT_QUERIES = 131072,
+ MUSICID_PREFER_WF_QUERIES = 262144,
+ MUSICID_EXTRA_TEXT_QUERIES = 524288,
+ MUSICID_DISABLE_FILENAME_PARSING = 1048576,
+ MUSICID_HIGH_CONFIDENCE_RESULTS = 2097152
+};
+
+enum CddbMusicIDMatchCode
+{
+ MUSICID_MATCH_NONE = 0,
+ MUSICID_MATCH_EXACT = 1,
+ MUSICID_MATCH_FUZZY = 2,
+ MUSICID_MATCH_ALL = 3,
+ MUSICID_MATCH_USER = 4,
+ MUSICID_MATCH_ERROR = 5,
+ MUSICID_MATCH_ALBUM_ASSOCIATED = 6
+};
+
+enum FileInfoListMatchCode
+{
+ LIST_MATCH_ERROR = 1,
+ LIST_MATCH_NONE = 2,
+ LIST_MATCH_ALBUM_SINGLE = 3,
+ LIST_MATCH_ALBUM_EXACT = 3,
+ LIST_MATCH_ALBUM_MULTIPLE = 4,
+ LIST_MATCH_TRACK_SINGLE = 5,
+ LIST_MATCH_TRACK_EXACT = 5,
+ LIST_MATCH_TRACK_MULTIPLE = 6,
+ LIST_MATCH_LIBRARY_SINGLE = 7,
+ LIST_MATCH_ALBUM_SINGLE_ASSOCIATED = 8
+};
+
+enum CddbMusicIDStatus
+{
+ STATUS_MUSICID_Error = 1,
+ STATUS_MUSICID_ProcessingFile = 2,
+ STATUS_MUSICID_LookingUpWaveForm = 3,
+ STATUS_MUSICID_LookingUpText = 4,
+ STATUS_MUSICID_CheckForAbort = 5,
+ STATUS_ALBUMID_Querying = 6,
+ STATUS_ALBUMID_Queried = 7,
+ STATUS_ALBUMID_Processing = 8,
+ STATUS_ALBUMID_Processed = 9,
+ STATUS_MUSICID_AnalyzingWaveForm = 10,
+ STATUS_ALBUMID_QueryingWF = 11
+};
+
+enum CDDBMusicID_LookupMode
+{
+ WAVEFORM_LOOKUP = 1,
+ TEXT_LOOKUP = 2,
+ TEXT_LOCAL = 4,
+ TEXT_HINT_MULTI_EXACT = 16,
+ TEXT_HINT_MULTI_FUZZY = 32,
+ TEXT_HINT_FUZZY = 64,
+ TEXT_HINT_ALL = 240
+};
+
+enum MusicIDThreadPriority
+{
+ MUSICID_THREAD_PRIORITY_HIGHEST = 1,
+ MUSICID_THREAD_PRIORITY_ABOVE_NORMAL = 2,
+ MUSICID_THREAD_PRIORITY_NORMAL = 3,
+ MUSICID_THREAD_PRIORITY_BELOW_NORMAL = 4,
+ MUSICID_THREAD_PRIORITY_LOWEST = 5,
+ MUSICID_THREAD_PRIORITY_IDLE = 6
+};
+
+enum CDDBMusicID_Results
+{
+ ERR_DomainMusicID = 766,
+ CDDBMusicID_FPAcquired = 1,
+ CDDBMusicID_FPNotAcquired = 2,
+ CDDBMusicID_UnsupportedFileFormat = -1023541247,
+ CDDBMusicID_UnsupportedAudioFormat = -1023541246,
+ CDDBMusicID_UnknownAlgorithm = -1023541245,
+ CDDBMusicID_UnknownSetting = -1023541244,
+ CDDBMusicID_CDDBControlVersion = -1023541243,
+ CDDBMusicID_TextHintsFailed = -1023541242,
+ CDDBMusicID_NoTextAvailable = -1023541241
+};
+
+enum MusicIDMatchType
+{
+ MATCH_TYPE_TAGID = 1,
+ MATCH_TYPE_ITUNESID = 2,
+ MATCH_TYPE_ALBUM_ASSOCIATED = 3,
+ MATCH_TYPE_WF_HINT = 4,
+ MATCH_TYPE_WF = 5,
+ MATCH_TYPE_TXT_ON_WF = 6,
+ MATCH_TYPE_TXT_HINT = 7,
+ MATCH_TYPE_TXT = 8,
+ MATCH_TYPE_WF_TXT_HINT = 9,
+ MATCH_TYPE_WF_TXT = 10,
+ MATCH_TYPE_ALBUM_AND_TITLE = 11,
+ MATCH_TYPE_TXT_ALBUM_LEVEL = 12,
+ MATCH_TYPE_UNKNOWN = 13,
+ MATCH_TYPE_NONE = 14
+};
+
+struct __declspec(uuid("46ac5819-1fa8-44a1-9954-270ea2cf0dca"))
+_ICDDBMusicIDManagerEvents : IDispatch
+{};
+
+struct __declspec(uuid("db104e47-62bb-4933-8f37-8984228e6938"))
+IFingerprintImpl : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall SetFPData (
+ /*[in]*/ char * data,
+ /*[in]*/ long length ) = 0;
+ virtual HRESULT __stdcall get_Type (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Version (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Signature (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Channels (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_SampleRate (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_SampleSize (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Offset (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Duration (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Units (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+};
+
+struct __declspec(uuid("cca2a70a-bcbc-49e9-8ef4-04dabcd68b81"))
+ICddbMusicIDFingerprint : IFingerprintImpl
+{};
+
+struct __declspec(uuid("0aa9fdfb-80d5-41bf-b383-7aab869e6b0e"))
+ICddbFileInfo : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Filename (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Filename (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Fingerprint (
+ /*[out,retval]*/ struct ICddbMusicIDFingerprint * * pVal ) = 0;
+ virtual HRESULT __stdcall put_Fingerprint (
+ /*[in]*/ struct ICddbMusicIDFingerprint * pVal ) = 0;
+ virtual HRESULT __stdcall get_TrackNum (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_TrackNum (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_TrackCount (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_TrackCount (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Tag (
+ /*[out,retval]*/ struct ICddbFileTag * * pVal ) = 0;
+ virtual HRESULT __stdcall put_Tag (
+ /*[in]*/ struct ICddbFileTag * pVal ) = 0;
+ virtual HRESULT __stdcall get_Disc (
+ /*[out,retval]*/ struct ICddbDisc2 * * pVal ) = 0;
+ virtual HRESULT __stdcall put_Disc (
+ /*[in]*/ struct ICddbDisc2 * pVal ) = 0;
+ virtual HRESULT __stdcall get_MusicIDMatchCode (
+ /*[out,retval]*/ enum CddbMusicIDMatchCode * pVal ) = 0;
+ virtual HRESULT __stdcall put_MusicIDMatchCode (
+ /*[in]*/ enum CddbMusicIDMatchCode pVal ) = 0;
+};
+
+struct __declspec(uuid("099a10ed-517b-4387-a12e-af3fe90b5856"))
+ICddbFileInfoList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetFileInfo (
+ /*[in]*/ long Index,
+ /*[out,retval]*/ struct ICddbFileInfo * * pVal ) = 0;
+ virtual HRESULT __stdcall AddFileInfo (
+ /*[in]*/ struct ICddbFileInfo * pFileInfo ) = 0;
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall AddFileInfoFields (
+ /*[in]*/ BSTR Filename,
+ /*[in]*/ struct ICddbMusicIDFingerprint * pFingerprint,
+ /*[in]*/ long TrackCount,
+ /*[in]*/ long TrackNum,
+ /*[in]*/ struct ICddbFileTag * pTag,
+ /*[in]*/ struct ICddbDisc2 * pDisc,
+ /*[in]*/ long matchCode ) = 0;
+ virtual HRESULT __stdcall GetFileInfoFields (
+ /*[in]*/ long Index,
+ /*[out]*/ BSTR * Filename,
+ /*[out]*/ struct ICddbMusicIDFingerprint * * ppFingerprint,
+ /*[out]*/ long * pTrackCount,
+ /*[out]*/ long * pTrackNum,
+ /*[out]*/ struct ICddbFileTag * * ppTag,
+ /*[out]*/ struct ICddbDisc2 * * ppDisc,
+ /*[out]*/ long * pMatchCode ) = 0;
+ virtual HRESULT __stdcall GetListMatchCode (
+ /*[out]*/ long * listMatchCode ) = 0;
+ virtual HRESULT __stdcall SetListMatchCode (
+ /*[in]*/ long match_code ) = 0;
+ virtual HRESULT __stdcall RemoveFileInfo (
+ /*[in]*/ struct ICddbFileInfo * pInfo ) = 0;
+ virtual HRESULT __stdcall RemoveFile (
+ /*[in]*/ BSTR Filename ) = 0;
+};
+
+struct __declspec(uuid("5000f09e-8483-4deb-8345-4e778a9fe804"))
+ICddbFileInfoLists : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetFileInfoList (
+ /*[in]*/ long Index,
+ /*[out,retval]*/ struct ICddbFileInfoList * * ppFileInfoListOut ) = 0;
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall RemoveMatchAndFiles (
+ /*[in]*/ long Index ) = 0;
+ virtual HRESULT __stdcall RemoveFileInfoList (
+ /*[in]*/ struct ICddbFileInfoList * pList ) = 0;
+ virtual HRESULT __stdcall AddFileInfoList (
+ /*[in]*/ struct ICddbFileInfoList * pFileInfoList ) = 0;
+};
+
+struct __declspec(uuid("ec0e5dd3-8bab-4671-85a1-68bf93cb35e4"))
+ICddbMusicIDFingerprinter : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetSetting (
+ /*[in]*/ BSTR name,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall SetSetting (
+ /*[in]*/ BSTR name,
+ /*[in]*/ BSTR value ) = 0;
+ virtual HRESULT __stdcall GetFileFingerprint (
+ /*[in]*/ BSTR Filename,
+ /*[out,retval]*/ struct ICddbMusicIDFingerprint * * pVal ) = 0;
+ virtual HRESULT __stdcall BeginAudioStream (
+ /*[in]*/ long sample_rate,
+ /*[in]*/ long sample_bits,
+ /*[in]*/ long channel_count ) = 0;
+ virtual HRESULT __stdcall WriteAudioData (
+ /*[in]*/ void * buffer,
+ /*[in]*/ long length ) = 0;
+ virtual HRESULT __stdcall EndAudioStream (
+ /*[out,retval]*/ struct ICddbMusicIDFingerprint * * pVal ) = 0;
+};
+
+struct __declspec(uuid("6131c03d-97d0-49ca-8eb1-5fa0d10ec072"))
+ICDDBMusicIDManager : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Version (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall Initialize (
+ /*[in]*/ struct ICDDBControl2 * control ) = 0;
+ virtual HRESULT __stdcall Shutdown ( ) = 0;
+ virtual HRESULT __stdcall CreateFingerprinter (
+ /*[in]*/ BSTR alg_name,
+ /*[out,retval]*/ struct ICddbMusicIDFingerprinter * * pVal ) = 0;
+ virtual HRESULT __stdcall LookupFile (
+ /*[in]*/ struct ICddbMusicIDFingerprint * fp,
+ /*[in]*/ BSTR Filename,
+ /*[in]*/ struct ICddbFileTag * Tag,
+ /*[in]*/ long lookup_mode,
+ /*[in]*/ long event_on_completion,
+ /*[out,retval]*/ long * match_code ) = 0;
+ virtual HRESULT __stdcall ResolveLookup (
+ /*[in]*/ struct ICddbDiscs * discs,
+ /*[in]*/ long track_count,
+ /*[in]*/ long missing_files,
+ /*[in]*/ long extra_files,
+ /*[in]*/ long lookup_mode,
+ /*[in]*/ BSTR Filename,
+ /*[in]*/ struct ICddbFileTag * Tag,
+ /*[in]*/ long match_code,
+ /*[out,retval]*/ struct ICddbDisc * * pVal ) = 0;
+ virtual HRESULT __stdcall CompareTrackToFile (
+ /*[in]*/ BSTR Filename,
+ /*[in]*/ struct ICddbFileTag * Tag,
+ /*[in]*/ struct ICddbDisc * Disc,
+ /*[in]*/ long TrackNum,
+ /*[out,retval]*/ long * pVal ) = 0;
+};
+
+struct __declspec(uuid("26b263b3-57cd-42fd-aa48-e505b4780055"))
+ICddbMusicIDFingerprinter2 : ICddbMusicIDFingerprinter
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall WriteAudioData2 (
+ /*[in]*/ void * buffer,
+ /*[in]*/ long length,
+ /*[out]*/ long * b_complete ) = 0;
+ virtual HRESULT __stdcall FingerprintSerialize (
+ /*[in]*/ struct ICddbMusicIDFingerprint * pFingerprint,
+ /*[out,retval]*/ BSTR * pSerialized ) = 0;
+ virtual HRESULT __stdcall FingerprintDeserialize (
+ /*[in]*/ BSTR serialized,
+ /*[out,retval]*/ struct ICddbMusicIDFingerprint * * ppFingerprint ) = 0;
+};
+
+struct __declspec(uuid("dc6da11f-ca85-4658-9216-2ad353cfc33b"))
+ICddbFileInfo2 : ICddbFileInfo
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetExtData (
+ /*[out,retval]*/ struct ICddbExtData * * pVal ) = 0;
+ virtual HRESULT __stdcall PutExtData (
+ /*[in]*/ struct ICddbExtData * newVal ) = 0;
+ virtual HRESULT __stdcall GetDataListElement (
+ /*[in]*/ long ListId,
+ /*[in]*/ long Level,
+ /*[out,retval]*/ struct ICddbDataListElement * * pVal ) = 0;
+ virtual HRESULT __stdcall GetExtDataSerialized (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall PutExtDataSerialized (
+ /*[in]*/ BSTR newVal ) = 0;
+};
+
+struct __declspec(uuid("3b4a2b07-aafe-4931-a7f9-4c37729633ca"))
+ICddbFileInfo2_6 : ICddbFileInfo2
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_MatchType (
+ /*[out,retval]*/ enum MusicIDMatchType * pVal ) = 0;
+ virtual HRESULT __stdcall RetrieveData (
+ /*[in]*/ long cddbDataOptions ) = 0;
+};
+
+struct __declspec(uuid("18d6bc7c-4cbc-4b6a-9550-2b176438b87c"))
+ICddbFileInfoList2_6 : ICddbFileInfoList
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall RetrieveData (
+ /*[in]*/ long cddbDataOptions ) = 0;
+};
+
+struct __declspec(uuid("281bfe03-1503-4c60-9678-173c8b4138cc"))
+ICDDBMusicIDManager2 : ICDDBMusicIDManager
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall TrackID (
+ /*[in]*/ struct ICddbFileInfo * pInfoIn,
+ /*[in]*/ long options,
+ long * match_code,
+ /*[out]*/ struct ICddbFileInfoList * * pListOut ) = 0;
+ virtual HRESULT __stdcall AlbumID (
+ /*[in]*/ struct ICddbFileInfoList * pListIn,
+ /*[in]*/ long options,
+ long * match_code,
+ /*[out]*/ struct ICddbFileInfoLists * * pListsOut ) = 0;
+ virtual HRESULT __stdcall GetTagInternal (
+ /*[in]*/ BSTR Filename,
+ /*[out]*/ struct ICddbFileTag * * Tag ) = 0;
+ virtual HRESULT __stdcall GetFingerprintInternal (
+ /*[in]*/ BSTR Filename,
+ /*[out]*/ struct ICddbMusicIDFingerprint * * Fingerprint ) = 0;
+};
+
+struct __declspec(uuid("43b1b346-2394-46e7-b1ac-ea8d93124f68"))
+ICddbMusicIDSettings : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_ThreadPriority (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_ThreadPriority (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_LibraryIDBatchSize (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_LibraryIDBatchSize (
+ /*[in]*/ long pVal ) = 0;
+};
+
+struct __declspec(uuid("5797bf13-a4e7-4170-ae22-5f06b2823e04"))
+ICDDBMusicIDManager3 : ICDDBMusicIDManager2
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall LibraryID (
+ /*[in]*/ struct ICddbFileInfoList * pListIn,
+ /*[in]*/ long options ) = 0;
+ virtual HRESULT __stdcall LibraryIDAdd (
+ /*[in]*/ BSTR bstrFilename ) = 0;
+ virtual HRESULT __stdcall LibraryIDAddFileInfo (
+ /*[in]*/ struct ICddbFileInfo * pInfo ) = 0;
+ virtual HRESULT __stdcall LibraryIDRemove (
+ /*[in]*/ BSTR bstrFilename ) = 0;
+ virtual HRESULT __stdcall LibraryIDStart (
+ /*[in]*/ long options ) = 0;
+ virtual HRESULT __stdcall LibraryIDStop (
+ /*[in]*/ long bWait ) = 0;
+ virtual HRESULT __stdcall LibraryIDClear ( ) = 0;
+ virtual HRESULT __stdcall LibraryIDStatus (
+ /*[out]*/ long * bIsRunning,
+ /*[out]*/ long * lFilesInQueue ) = 0;
+ virtual HRESULT __stdcall GetFullDisc (
+ /*[in]*/ struct ICddbDisc2 * pDisc,
+ /*[out]*/ struct ICddbDisc2 * * ppFullDisc ) = 0;
+ virtual HRESULT __stdcall GetSettings (
+ /*[out]*/ struct ICddbMusicIDSettings * * ppSettings ) = 0;
+ virtual HRESULT __stdcall PutSettings (
+ /*[in]*/ struct ICddbMusicIDSettings * pSettings ) = 0;
+};
+
+struct __declspec(uuid("28041299-f00d-4156-88c7-4c663cd47b00"))
+CDDBNSWinampMusicIDManager;
+ // [ default ] interface ICDDBMusicIDManager
+ // interface ICDDBMusicIDManager2
+ // interface ICDDBMusicIDManager3
+ // [ default, source ] dispinterface _ICDDBMusicIDManagerEvents
+
+struct __declspec(uuid("b6d10e75-e02c-4f26-98c3-72450019942b"))
+CddbMusicIDFingerprinter;
+ // [ default ] interface ICddbMusicIDFingerprinter
+
+struct __declspec(uuid("e0ff4f0f-b53b-41d5-b1c9-3890ac403fe5"))
+CddbMusicIDFingerprint;
+ // interface IFingerprintImpl
+ // [ default ] interface ICddbMusicIDFingerprint
+
+struct __declspec(uuid("80a8f856-eda2-44db-a9ae-fafaaa2f5798"))
+CddbFileInfo;
+ // [ default ] interface ICddbFileInfo
+
+struct __declspec(uuid("93c676b4-2ded-461c-abd6-33736f951840"))
+CddbFileInfoList;
+ // [ default ] interface ICddbFileInfoList
+
+struct __declspec(uuid("d00f2f00-f910-43af-99d6-591ac5f1b560"))
+CddbFileInfoLists;
+ // [ default ] interface ICddbFileInfoLists
+
+struct __declspec(uuid("c7538f11-8d14-439b-ad2d-30c2cd8d0e68"))
+CddbMusicIDSettings;
+ // [ default ] interface ICddbMusicIDSettings
+
+//
+// Named GUID constants initializations
+//
+
+extern "C" const GUID __declspec(selectany) LIBID_CDDBMUSICIDLibNSWinamp =
+ {0x05d652c1,0x7997,0x40f9,{0x98,0x2d,0x34,0x7b,0x8e,0x29,0xf8,0xfb}};
+extern "C" const GUID __declspec(selectany) DIID__ICDDBMusicIDManagerEvents =
+ {0x46ac5819,0x1fa8,0x44a1,{0x99,0x54,0x27,0x0e,0xa2,0xcf,0x0d,0xca}};
+extern "C" const GUID __declspec(selectany) IID_IFingerprintImpl =
+ {0xdb104e47,0x62bb,0x4933,{0x8f,0x37,0x89,0x84,0x22,0x8e,0x69,0x38}};
+extern "C" const GUID __declspec(selectany) IID_ICddbMusicIDFingerprint =
+ {0xcca2a70a,0xbcbc,0x49e9,{0x8e,0xf4,0x04,0xda,0xbc,0xd6,0x8b,0x81}};
+extern "C" const GUID __declspec(selectany) IID_ICddbFileInfo =
+ {0x0aa9fdfb,0x80d5,0x41bf,{0xb3,0x83,0x7a,0xab,0x86,0x9e,0x6b,0x0e}};
+extern "C" const GUID __declspec(selectany) IID_ICddbFileInfoList =
+ {0x099a10ed,0x517b,0x4387,{0xa1,0x2e,0xaf,0x3f,0xe9,0x0b,0x58,0x56}};
+extern "C" const GUID __declspec(selectany) IID_ICddbFileInfoLists =
+ {0x5000f09e,0x8483,0x4deb,{0x83,0x45,0x4e,0x77,0x8a,0x9f,0xe8,0x04}};
+extern "C" const GUID __declspec(selectany) IID_ICddbMusicIDFingerprinter =
+ {0xec0e5dd3,0x8bab,0x4671,{0x85,0xa1,0x68,0xbf,0x93,0xcb,0x35,0xe4}};
+extern "C" const GUID __declspec(selectany) IID_ICDDBMusicIDManager =
+ {0x6131c03d,0x97d0,0x49ca,{0x8e,0xb1,0x5f,0xa0,0xd1,0x0e,0xc0,0x72}};
+extern "C" const GUID __declspec(selectany) IID_ICddbMusicIDFingerprinter2 =
+ {0x26b263b3,0x57cd,0x42fd,{0xaa,0x48,0xe5,0x05,0xb4,0x78,0x00,0x55}};
+extern "C" const GUID __declspec(selectany) IID_ICddbFileInfo2 =
+ {0xdc6da11f,0xca85,0x4658,{0x92,0x16,0x2a,0xd3,0x53,0xcf,0xc3,0x3b}};
+extern "C" const GUID __declspec(selectany) IID_ICddbFileInfo2_6 =
+ {0x3b4a2b07,0xaafe,0x4931,{0xa7,0xf9,0x4c,0x37,0x72,0x96,0x33,0xca}};
+extern "C" const GUID __declspec(selectany) IID_ICddbFileInfoList2_6 =
+ {0x18d6bc7c,0x4cbc,0x4b6a,{0x95,0x50,0x2b,0x17,0x64,0x38,0xb8,0x7c}};
+extern "C" const GUID __declspec(selectany) IID_ICDDBMusicIDManager2 =
+ {0x281bfe03,0x1503,0x4c60,{0x96,0x78,0x17,0x3c,0x8b,0x41,0x38,0xcc}};
+extern "C" const GUID __declspec(selectany) IID_ICddbMusicIDSettings =
+ {0x43b1b346,0x2394,0x46e7,{0xb1,0xac,0xea,0x8d,0x93,0x12,0x4f,0x68}};
+extern "C" const GUID __declspec(selectany) IID_ICDDBMusicIDManager3 =
+ {0x5797bf13,0xa4e7,0x4170,{0xae,0x22,0x5f,0x06,0xb2,0x82,0x3e,0x04}};
+extern "C" const GUID __declspec(selectany) CLSID_CDDBNSWinampMusicIDManager =
+ {0x28041299,0xf00d,0x4156,{0x88,0xc7,0x4c,0x66,0x3c,0xd4,0x7b,0x00}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbMusicIDFingerprinter =
+ {0xb6d10e75,0xe02c,0x4f26,{0x98,0xc3,0x72,0x45,0x00,0x19,0x94,0x2b}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbMusicIDFingerprint =
+ {0xe0ff4f0f,0xb53b,0x41d5,{0xb1,0xc9,0x38,0x90,0xac,0x40,0x3f,0xe5}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbFileInfo =
+ {0x80a8f856,0xeda2,0x44db,{0xa9,0xae,0xfa,0xfa,0xaa,0x2f,0x57,0x98}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbFileInfoList =
+ {0x93c676b4,0x2ded,0x461c,{0xab,0xd6,0x33,0x73,0x6f,0x95,0x18,0x40}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbFileInfoLists =
+ {0xd00f2f00,0xf910,0x43af,{0x99,0xd6,0x59,0x1a,0xc5,0xf1,0xb5,0x60}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbMusicIDSettings =
+ {0xc7538f11,0x8d14,0x439b,{0xad,0x2d,0x30,0xc2,0xcd,0x8d,0x0e,0x68}};
+
+#pragma pack(pop)
diff --git a/Src/gracenote/cddbplaylist2winamp.tlh b/Src/gracenote/cddbplaylist2winamp.tlh
new file mode 100644
index 00000000..a69f3af0
--- /dev/null
+++ b/Src/gracenote/cddbplaylist2winamp.tlh
@@ -0,0 +1,1713 @@
+// Created by Microsoft (R) C/C++ Compiler Version 15.00.30729.01 (3e575fdd).
+//
+// f:\sandbox\20131028_225933\winamp\release\cddbplaylist2winamp.tlh
+//
+// C++ source equivalent of Win32 type library ../gracenote/CddbPlaylist2Winamp.dll
+// compiler-generated file created 10/28/13 at 23:18:29 - DO NOT EDIT!
+
+//
+// Cross-referenced type libraries:
+//
+//
+
+#pragma once
+#pragma pack(push, 8)
+
+#include <comdef.h>
+
+//
+// Forward references and typedefs
+//
+
+struct __declspec(uuid("7919d0ca-3043-4c02-b778-ab2bf4931f58"))
+/* LIBID */ __CDDBPLAYLIST2LibNSWinamp;
+enum gnpl_crit_field_t;
+enum gnpl_crit_field_type_t;
+enum gnpl_rank_order_t;
+enum gnpl_crit_op_t;
+enum gnpl_crit_param_num_t;
+enum gnpl_criteria_matchmode_t;
+enum __MIDL___MIDL_itf_CddbPlaylist_0000_0001;
+enum gnpl_user_info_t;
+enum __MIDL___MIDL_itf_CddbPlaylist_0000_0002;
+enum __MIDL___MIDL_itf_CddbPlaylist_0000_0003;
+enum __MIDL___MIDL_itf_CddbPlaylist_0000_0004;
+enum __MIDL___MIDL_itf_CddbPlaylist_0000_0005;
+enum CddbPlaylistErrors;
+enum CddbPlaylistUpdateFlags;
+enum CddbPlaylistMLDBFlags;
+struct __declspec(uuid("a58522b9-6b50-4033-9246-1ec5701ed85c"))
+/* dispinterface */ DPlaylist2Events;
+struct __declspec(uuid("34655d2e-8550-421f-a67d-a002f14d8d5e"))
+/* dual interface */ ICddbPlaylist2Mgr;
+struct __declspec(uuid("223e85f1-b287-4571-aa1a-a6d6144d0696"))
+/* dual interface */ ICddbPL2Criteria;
+struct __declspec(uuid("29327d31-2587-48c6-8b11-3f57b096c2ea"))
+/* dual interface */ ICddbPL2ResultList;
+struct __declspec(uuid("6ac694d3-4e30-47f3-93dd-236dbb308715"))
+/* dual interface */ ICddbPL2Result;
+struct __declspec(uuid("c0e6e3a0-2fcf-4a33-8e55-19920b83d759"))
+/* dual interface */ ICddbPL2Timestamp;
+struct __declspec(uuid("b0c8851a-0209-419b-84bc-1d03e6a0dc86"))
+/* dual interface */ ICddbPL2FindData;
+struct __declspec(uuid("f8d8ee69-e17d-442f-bb11-d8a1a214feba"))
+/* dual interface */ ICddbPLGeneratorList;
+struct __declspec(uuid("5311019a-98c9-4377-b8cf-72c00a55914a"))
+/* dual interface */ ICddbPLGenerator;
+struct __declspec(uuid("a9f50e0f-859d-4397-959e-3bb7aacbb564"))
+/* dual interface */ ICddbPLGenCriteriaList;
+struct __declspec(uuid("1754c0c9-24b5-4ed6-8eea-52620ed16e58"))
+/* dual interface */ ICddbPLGenCriteria;
+struct __declspec(uuid("8d951c2e-56fb-4e0b-903c-fe738da573c1"))
+/* dual interface */ ICddbPLGenLimitList;
+struct __declspec(uuid("d79ffaf8-1bc2-4bde-b5f7-1baa899865d2"))
+/* dual interface */ ICddbPLGenLimit;
+struct __declspec(uuid("0281a5e7-bd75-4ed3-9872-3331157b923d"))
+/* dual interface */ ICddbPLGenRank;
+struct __declspec(uuid("3bfa2b55-49a3-42a0-bd2d-4d60d9b9c93f"))
+/* dual interface */ ICddbGenreDisplayList;
+struct __declspec(uuid("5e484009-3e2b-426a-b496-aebcacd6deb7"))
+/* dual interface */ ICddbPLDataList;
+struct __declspec(uuid("53881256-92a2-4292-8e24-68ca3992e337"))
+/* dual interface */ ICddbPLDataListItem;
+struct __declspec(uuid("5a4471da-0283-449e-8ee2-b0716e3c168b"))
+/* dual interface */ ICddbPLIDList;
+struct __declspec(uuid("84e284d8-34cc-4337-b1dc-d7d6f0e431cb"))
+/* dual interface */ ICddbArtistTypeList;
+struct __declspec(uuid("ba5342dc-41d7-4954-9501-fdc6acd0dc2f"))
+/* dual interface */ ICddbOriginsList;
+struct __declspec(uuid("15d93d1e-50f1-444c-9e76-e4c8aca0a29d"))
+/* dual interface */ ICddbEraDisplayList;
+struct __declspec(uuid("a2c6c4ee-32fe-4bb7-8a47-dc615034bd7c"))
+/* dual interface */ ICddbEra;
+struct __declspec(uuid("3580dee2-b1d1-46ae-88b0-cbac62d1e157"))
+/* dual interface */ ICddbPopularityRangeList;
+struct __declspec(uuid("6e1eeee1-7227-4bad-b955-b84bea914a5a"))
+/* dual interface */ ICddbPL25Generator;
+struct __declspec(uuid("b282f975-ac68-41c1-bded-de683bb8e403"))
+/* dual interface */ ICddbPLGenWeightedRank;
+struct __declspec(uuid("3ffd3787-fe3a-4f44-be99-4289875eb925"))
+/* dual interface */ ICddbPLGen25Criteria;
+struct __declspec(uuid("e0d26898-f166-4f42-9a6a-5d2e346ed6ed"))
+/* dual interface */ ICddbPLInfo;
+struct __declspec(uuid("f7bcb924-06da-41e2-af0c-c249c136303a"))
+/* dual interface */ ICddbMLDBManager;
+struct __declspec(uuid("df17e91f-434a-4e75-8645-13dd56a4cc86"))
+/* dual interface */ ICddbMLDBManager2;
+struct __declspec(uuid("be4e7feb-ee3a-4a41-b370-ae37e656be29"))
+/* dual interface */ ICddbPopularityRange;
+struct __declspec(uuid("ba9a4ba6-1879-4a32-82c8-bd84d8fadf00"))
+/* dual interface */ ICddbPlaylist25Mgr;
+struct __declspec(uuid("dbbc42ac-1409-4d95-98fc-7f6acb33ec15"))
+/* dual interface */ ICddbPLMoreLikeThisCfg;
+struct __declspec(uuid("dcf3b306-aa51-455c-9b39-51f8cb8590aa"))
+/* dual interface */ ICddbPLMoreLikeThisCfg2;
+struct __declspec(uuid("59ce219f-46aa-4fc1-85b8-31290e454503"))
+/* dual interface */ ICddbPLMoreLikeThisCfg25;
+struct /* coclass */ CddbNSWinampPlaylist2Mgr;
+struct /* coclass */ CddbPL2Criteria;
+struct /* coclass */ CddbPL2Timestamp;
+struct /* coclass */ CddbPL2FindData;
+struct /* coclass */ CddbPL2Result;
+struct /* coclass */ CddbPL2ResultList;
+struct /* coclass */ CddbEra;
+struct /* coclass */ CddbPLGeneratorList;
+struct /* coclass */ CddbPLGenerator;
+struct /* coclass */ CddbPLGenCriteria;
+struct /* coclass */ CddbPLGenLimit;
+struct /* coclass */ CddbPLGenCriteriaList;
+struct /* coclass */ CddbPLGenLimitList;
+struct /* coclass */ CddbPLGenRank;
+struct /* coclass */ CddbPLInfo;
+struct /* coclass */ CddbPLDataList;
+struct /* coclass */ CddbPLDataListItem;
+struct /* coclass */ CddbPLIDList;
+struct /* coclass */ CddbArtistTypeList;
+struct /* coclass */ CddbOriginsList;
+struct /* coclass */ CddbGenreDisplayList;
+struct /* coclass */ CddbEraDisplayList;
+struct /* coclass */ CddbPopularityRangeList;
+struct /* coclass */ CddbMLDBManager;
+struct /* coclass */ CddbPopularityRange;
+struct /* coclass */ CddbPLMoreLikeThisCfg;
+typedef enum __MIDL___MIDL_itf_CddbPlaylist_0000_0001 gnpl_stats_getdate_enum;
+typedef enum __MIDL___MIDL_itf_CddbPlaylist_0000_0002 gnpl_results_data_mask_flags_enum;
+typedef enum __MIDL___MIDL_itf_CddbPlaylist_0000_0003 gnpl_morelikethis_algorithm_t;
+typedef enum __MIDL___MIDL_itf_CddbPlaylist_0000_0004 gnpl_crit_similarity_function_t;
+typedef enum __MIDL___MIDL_itf_CddbPlaylist_0000_0005 gnpl_crit_selection_t;
+
+//
+// Smart pointer typedef declarations
+//
+
+_COM_SMARTPTR_TYPEDEF(DPlaylist2Events, __uuidof(DPlaylist2Events));
+_COM_SMARTPTR_TYPEDEF(ICddbPL2Criteria, __uuidof(ICddbPL2Criteria));
+_COM_SMARTPTR_TYPEDEF(ICddbPL2Result, __uuidof(ICddbPL2Result));
+_COM_SMARTPTR_TYPEDEF(ICddbPL2ResultList, __uuidof(ICddbPL2ResultList));
+_COM_SMARTPTR_TYPEDEF(ICddbPL2Timestamp, __uuidof(ICddbPL2Timestamp));
+_COM_SMARTPTR_TYPEDEF(ICddbPL2FindData, __uuidof(ICddbPL2FindData));
+_COM_SMARTPTR_TYPEDEF(ICddbPLGenCriteria, __uuidof(ICddbPLGenCriteria));
+_COM_SMARTPTR_TYPEDEF(ICddbPLGenCriteriaList, __uuidof(ICddbPLGenCriteriaList));
+_COM_SMARTPTR_TYPEDEF(ICddbPLGenLimit, __uuidof(ICddbPLGenLimit));
+_COM_SMARTPTR_TYPEDEF(ICddbPLGenLimitList, __uuidof(ICddbPLGenLimitList));
+_COM_SMARTPTR_TYPEDEF(ICddbPLGenRank, __uuidof(ICddbPLGenRank));
+_COM_SMARTPTR_TYPEDEF(ICddbPLGenerator, __uuidof(ICddbPLGenerator));
+_COM_SMARTPTR_TYPEDEF(ICddbPLIDList, __uuidof(ICddbPLIDList));
+_COM_SMARTPTR_TYPEDEF(ICddbPLDataListItem, __uuidof(ICddbPLDataListItem));
+_COM_SMARTPTR_TYPEDEF(ICddbPLDataList, __uuidof(ICddbPLDataList));
+_COM_SMARTPTR_TYPEDEF(ICddbGenreDisplayList, __uuidof(ICddbGenreDisplayList));
+_COM_SMARTPTR_TYPEDEF(ICddbPLGeneratorList, __uuidof(ICddbPLGeneratorList));
+_COM_SMARTPTR_TYPEDEF(ICddbArtistTypeList, __uuidof(ICddbArtistTypeList));
+_COM_SMARTPTR_TYPEDEF(ICddbOriginsList, __uuidof(ICddbOriginsList));
+_COM_SMARTPTR_TYPEDEF(ICddbEra, __uuidof(ICddbEra));
+_COM_SMARTPTR_TYPEDEF(ICddbEraDisplayList, __uuidof(ICddbEraDisplayList));
+_COM_SMARTPTR_TYPEDEF(ICddbPopularityRangeList, __uuidof(ICddbPopularityRangeList));
+_COM_SMARTPTR_TYPEDEF(ICddbPlaylist2Mgr, __uuidof(ICddbPlaylist2Mgr));
+_COM_SMARTPTR_TYPEDEF(ICddbPLGenWeightedRank, __uuidof(ICddbPLGenWeightedRank));
+_COM_SMARTPTR_TYPEDEF(ICddbPL25Generator, __uuidof(ICddbPL25Generator));
+_COM_SMARTPTR_TYPEDEF(ICddbPLGen25Criteria, __uuidof(ICddbPLGen25Criteria));
+_COM_SMARTPTR_TYPEDEF(ICddbPLInfo, __uuidof(ICddbPLInfo));
+_COM_SMARTPTR_TYPEDEF(ICddbMLDBManager, __uuidof(ICddbMLDBManager));
+_COM_SMARTPTR_TYPEDEF(ICddbMLDBManager2, __uuidof(ICddbMLDBManager2));
+_COM_SMARTPTR_TYPEDEF(ICddbPopularityRange, __uuidof(ICddbPopularityRange));
+_COM_SMARTPTR_TYPEDEF(ICddbPLMoreLikeThisCfg, __uuidof(ICddbPLMoreLikeThisCfg));
+_COM_SMARTPTR_TYPEDEF(ICddbPlaylist25Mgr, __uuidof(ICddbPlaylist25Mgr));
+_COM_SMARTPTR_TYPEDEF(ICddbPLMoreLikeThisCfg2, __uuidof(ICddbPLMoreLikeThisCfg2));
+_COM_SMARTPTR_TYPEDEF(ICddbPLMoreLikeThisCfg25, __uuidof(ICddbPLMoreLikeThisCfg25));
+
+//
+// Type library items
+//
+
+enum gnpl_crit_field_t
+{
+ gnpl_crit_field_first = 0,
+ gnpl_crit_field_file_name = 1,
+ gnpl_crit_field_file_size = 2,
+ gnpl_crit_field_file_length = 3,
+ gnpl_crit_field_file_created_date = 4,
+ gnpl_crit_field_file_modified_date = 5,
+ gnpl_crit_field_file_lastplayed_date = 6,
+ gnpl_crit_field_file_bitrate = 7,
+ gnpl_crit_field_file_codec_format = 8,
+ gnpl_crit_field_file_drm = 9,
+ gnpl_crit_field_track_name = 10,
+ gnpl_crit_field_track_sort_name = 11,
+ gnpl_crit_field_track_artist_name = 12,
+ gnpl_crit_field_track_artist_sortname = 13,
+ gnpl_crit_field_track_releaseyear = 14,
+ gnpl_crit_field_track_langid = 15,
+ gnpl_crit_field_track_bpm = 16,
+ gnpl_crit_field_track_num = 17,
+ gnpl_crit_field_track_genre = 18,
+ gnpl_crit_field_track_genrev2 = 19,
+ gnpl_crit_field_track_mood = 20,
+ gnpl_crit_field_track_tempo = 21,
+ gnpl_crit_field_track_album_pop = 22,
+ gnpl_crit_field_track_global_pop = 23,
+ gnpl_crit_field_album_name = 24,
+ gnpl_crit_field_album_sortname = 25,
+ gnpl_crit_field_album_primaryartist = 26,
+ gnpl_crit_field_album_releaseyear = 27,
+ gnpl_crit_field_album_label = 28,
+ gnpl_crit_field_album_compilation = 29,
+ gnpl_crit_field_album_region = 30,
+ gnpl_crit_field_album_genre = 31,
+ gnpl_crit_field_album_genrev2 = 32,
+ gnpl_crit_field_album_pop = 33,
+ gnpl_crit_field_artist_region = 34,
+ gnpl_crit_field_artist_era = 35,
+ gnpl_crit_field_artist_type = 36,
+ gnpl_crit_field_track_local_pop = 37,
+ gnpl_crit_field_artist_local_pop = 38,
+ gnpl_crit_field_track_playcount = 39,
+ gnpl_crit_field_track_myrating = 40,
+ gnpl_crit_field_album_myrating = 41,
+ gnpl_crit_field_artist_myrating = 42,
+ gnpl_crit_field_genre_myrating = 43,
+ gnpl_crit_field_playlist_myrating = 44,
+ gnpl_crit_field_xdev1 = 45,
+ gnpl_crit_field_xdev2 = 46,
+ gnpl_crit_field_xdev3 = 47,
+ gnpl_crit_field_xdev = 48,
+ gnpl_crit_field_tagid = 49,
+ gnpl_crit_field_path_name = 50,
+ gnpl_crit_field_genredesc = 51,
+ gnpl_crit_field_track_composer = 52,
+ gnpl_crit_field_track_conductor = 53,
+ gnpl_crit_field_track_ensemble = 54,
+ gnpl_crit_field_reserved4 = 55,
+ gnpl_crit_field_reserved5 = 56,
+ gnpl_crit_field_reserved6 = 57,
+ gnpl_crit_field_reserved7 = 58,
+ gnpl_crit_field_reserved8 = 59,
+ gnpl_crit_field_reserved9 = 60,
+ gnpl_crit_field_reserved10 = 61,
+ gnpl_crit_field_reserved11 = 62,
+ gnpl_crit_field_reserved12 = 63,
+ gnpl_crit_field_reserved13 = 64,
+ gnpl_crit_field_reserved14 = 65,
+ gnpl_crit_field_idx_numdev1 = 66,
+ gnpl_crit_field_idx_numdev2 = 67,
+ gnpl_crit_field_idx_numdev3 = 68,
+ gnpl_crit_field_idx_alphdev1 = 69,
+ gnpl_crit_field_idx_alphdev2 = 70,
+ gnpl_crit_field_idx_alphdev3 = 71,
+ gnpl_crit_field_numdev1 = 72,
+ gnpl_crit_field_numdev2 = 73,
+ gnpl_crit_field_numdev3 = 74,
+ gnpl_crit_field_numdev4 = 75,
+ gnpl_crit_field_numdev5 = 76,
+ gnpl_crit_field_alphdev1 = 77,
+ gnpl_crit_field_alphdev2 = 78,
+ gnpl_crit_field_alphdev3 = 79,
+ gnpl_crit_field_alphdev4 = 80,
+ gnpl_crit_field_alphdev5 = 81,
+ gnpl_crit_field_primary_mood_id = 82,
+ gnpl_crit_field_primary_tempo_id = 83,
+ gnpl_crit_field_track_general_dsp = 84,
+ gnpl_crit_field_last = 85
+};
+
+enum gnpl_crit_field_type_t
+{
+ gnpl_crit_field_type_unknown = 0,
+ gnpl_crit_field_type_string = 1,
+ gnpl_crit_field_type_num = 2,
+ gnpl_crit_field_type_enum = 3,
+ gnpl_crit_field_type_date = 4,
+ gnpl_crit_field_type_key_ivalue_array = 5,
+ gnpl_crit_field_type_last = 6
+};
+
+enum gnpl_rank_order_t
+{
+ gnpl_rank_order_none = 0,
+ gnpl_rank_order_ascending = 1,
+ gnpl_rank_order_descending = 2
+};
+
+enum gnpl_crit_op_t
+{
+ gnpl_crit_op_str_first = 0,
+ gnpl_crit_op_str_eq = 1,
+ gnpl_crit_op_str_neq = 2,
+ gnpl_crit_op_str_cont = 3,
+ gnpl_crit_op_str_ncont = 4,
+ gnpl_crit_op_str_sta = 5,
+ gnpl_crit_op_str_end = 6,
+ gnpl_crit_op_str_last = 7,
+ gnpl_crit_op_num_first = 8,
+ gnpl_crit_op_num_eq = 9,
+ gnpl_crit_op_num_neq = 10,
+ gnpl_crit_op_num_lt = 11,
+ gnpl_crit_op_num_gt = 12,
+ gnpl_crit_op_num_rang = 13,
+ gnpl_crit_op_num_last = 14,
+ gnpl_crit_op_enum_first = 15,
+ gnpl_crit_op_enum_eq = 16,
+ gnpl_crit_op_enum_neq = 17,
+ gnpl_crit_op_enum_sim = 18,
+ gnpl_crit_op_enum_last = 19,
+ gnpl_crit_op_date_first = 20,
+ gnpl_crit_op_date_eq = 21,
+ gnpl_crit_op_date_neq = 22,
+ gnpl_crit_op_date_lt = 23,
+ gnpl_crit_op_date_gt = 24,
+ gnpl_crit_op_date_rang = 25,
+ gnpl_crit_op_date_inlast = 26,
+ gnpl_crit_op_date_notinlast = 27,
+ gnpl_crit_op_date_last = 28,
+ gnpl_crit_op_enum_rang = 29,
+ gnpl_crit_op_kiva_first = 30,
+ gnpl_crit_op_kiva_eq = 31,
+ gnpl_crit_op_kiva_neq = 32,
+ gnpl_crit_op_kiva_sim = 33,
+ gnpl_crit_op_kiva_last = 34,
+ gnpl_crit_op_last = 35
+};
+
+enum gnpl_crit_param_num_t
+{
+ gnpl_crit_param_1 = 0,
+ gnpl_crit_param_2 = 1,
+ gnpl_crit_param_3 = 2
+};
+
+enum gnpl_criteria_matchmode_t
+{
+ gnpl_matchmode_match_any = 0,
+ gnpl_matchmode_match_all = 1
+};
+
+enum __MIDL___MIDL_itf_CddbPlaylist_0000_0001
+{
+ gnpl_stats_lastplaydate = 1,
+ gnpl_stats_lastupdateddate = 2,
+ gnpl_stats_createddate = 3
+};
+
+enum gnpl_user_info_t
+{
+ gnpl_user_rating_first = 0,
+ gnpl_user_rating_highest = 1,
+ gnpl_user_rating_favorite = 2,
+ gnpl_user_rating_lowest = 3,
+ gnpl_user_rating_good = 4,
+ gnpl_user_play_never = 5,
+ gnpl_user_play_recent = 6,
+ gnpl_user_play_last_30_days = 7,
+ gnpl_user_play_last_week = 8,
+ gnpl_user_play_last_day = 9,
+ gnpl_user_info_last = 10
+};
+
+enum __MIDL___MIDL_itf_CddbPlaylist_0000_0002
+{
+ GNPL_RESULTS_DATA_MINIMUM = 0,
+ GNPL_RESULTS_DATA_FILEPATH = 1,
+ GNPL_RESULTS_DATA_ARTIST = 2,
+ GNPL_RESULTS_DATA_ALBUM = 4,
+ GNPL_RESULTS_DATA_POPULARITY = 8,
+ GNPL_RESULTS_DATA_USER_RATING = 16,
+ GNPL_RESULTS_DATA_BITRATE = 32,
+ GNPL_RESULTS_DATA_DEVFIELD1 = 64,
+ GNPL_RESULTS_DATA_RELEASEYEAR = 128,
+ GNPL_RESULTS_DATA_LASTPLAYED = 256,
+ GNPL_RESULTS_DATA_ALL = -1
+};
+
+enum __MIDL___MIDL_itf_CddbPlaylist_0000_0003
+{
+ GNPL_MORELIKETHIS_BEGIN_ALG = 0,
+ GNPL_MORELIKETHIS_ALG_DEFAULT = 0,
+ GNPL_MORELIKETHIS_ALG_20 = 1,
+ GNPL_MORELIKETHIS_ALG_25 = 2,
+ GNPL_MORELIKETHIS_ALG_DSP_1 = 3,
+ GNPL_MORELIKETHIS_ALG_DSP_2 = 4,
+ GNPL_MORELIKETHIS_END_ALG = 4
+};
+
+enum __MIDL___MIDL_itf_CddbPlaylist_0000_0004
+{
+ GNPL_CRIT_SIMILARITY_FUNCTION_DEFAULT = 0,
+ GNPL_CRIT_SIMILARITY_FUNCTION_1 = 1,
+ GNPL_CRIT_SIMILARITY_FUNCTION_2 = 2,
+ GNPL_CRIT_SIMILARITY_FUNCTION_3 = 3
+};
+
+enum __MIDL___MIDL_itf_CddbPlaylist_0000_0005
+{
+ GNPL_CRITERION_NOT_SELECTION_BASED = 0,
+ GNPL_CRITERION_IS_SELECTION_BASED = 1,
+ GNPL_CRITERION_INCLUDE_SEED_SELECTION = 2,
+ GNPL_CRITERION_TOP_SEED_SELECTION = 3,
+ GNPL_CRITERION_EXCLUDE_SEED_SELECTION = 4
+};
+
+enum CddbPlaylistErrors
+{
+ ERR_PL_DomainPlaylist = 768,
+ ERR_PL_CDDBControlVersion = -1023409920,
+ ERR_PL_DB_Corrupt = -1023409919,
+ ERR_PL_DB_IndexCorrupt = -1023409918,
+ ERR_PL_DB_BothCorrupt = -1023409917,
+ ERR_PL_Initialized = -1023409916,
+ ERR_PL_NotInitialized = -1023409915,
+ ERR_PL_NotShutdown = -1023409914
+};
+
+enum CddbPlaylistUpdateFlags
+{
+ CDDB_UPDATE_STANDARD = 1,
+ CDDB_UPDATE_POP = 2,
+ CDDB_UPDATE_EXTENDED = 4,
+ CDDB_UPDATE_ALL = 8,
+ CDDB_UPDATE_UNPOPULATED = 16,
+ CDDB_UPDATE_NONE = 0
+};
+
+enum CddbPlaylistMLDBFlags
+{
+ PL_MLDB_FLAGS_ZERO = 0,
+ PL_MLDB_CHECK_BASE = 1,
+ PL_MLDB_CHECK_INDEX = 2,
+ PL_MLDB_CHECK_DEEP = 4,
+ PL_MLDB_CHECK_DEFAULT = 7,
+ PL_MLDB_CLEAR_INIT_FLAG = 16,
+ PL_MLDB_SET_INIT_FLAG = 32,
+ PL_MLDB_BACKUP_BASE = 256,
+ PL_MLDB_BACKUP_INDEX = 512,
+ PL_MLDB_RESTORE_BASE = 1024,
+ PL_MLDB_RESTORE_INDEX = 2048,
+ PL_MLDB_DELETE_INDEX = 4096,
+ PL_MLDB_DELETE_BASE = 8192,
+ PL_MLDB_DELETE_BACKUPS = 16384,
+ PL_MLDB_DELETE_OTHER = 32768,
+ PL_MLDB_AUTO_REINDEX = 65536,
+ PL_MLDB_AUTO_BACKUP = 131072,
+ PL_MLDB_AUTO_MANAGE_INIT_FLAG = 262144,
+ PL_MLDB_AUTO_CHECK_IF_INIT_SET = 524288,
+ PL_MLDB_AUTO_CHECK_AT_INIT = 1048576,
+ PL_MLDB_AUTO_DEFAULT = 786432,
+ PL_MLDB_AUTO_MASK = 16711680,
+ PL_MLDB_DEVICE_MLDB_42 = 16777216
+};
+
+struct __declspec(uuid("a58522b9-6b50-4033-9246-1ec5701ed85c"))
+DPlaylist2Events : IDispatch
+{};
+
+struct __declspec(uuid("223e85f1-b287-4571-aa1a-a6d6144d0696"))
+ICddbPL2Criteria : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_GenreId (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_GenreId (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Similarity (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Similarity (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_SimilarityWindow (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_SimilarityWindow (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_SimilarityMinimum (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_SimilarityMaximum (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_Popularity (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Popularity (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_PopularityWindow (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_PopularityWindow (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Artist (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Artist (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Album (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Album (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_SortOrder (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_SortOrder (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Seed (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Seed (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Name (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Name (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_MaxPerArtist (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_MaxPerArtist (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_MaxPerAlbum (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_MaxPerAlbum (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_MaxResults (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_MaxResults (
+ /*[in]*/ long pVal ) = 0;
+};
+
+struct __declspec(uuid("6ac694d3-4e30-47f3-93dd-236dbb308715"))
+ICddbPL2Result : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetFilename (
+ BSTR * filename ) = 0;
+ virtual HRESULT __stdcall GetArtist (
+ BSTR * Artist ) = 0;
+ virtual HRESULT __stdcall GetAlbum (
+ BSTR * Album ) = 0;
+ virtual HRESULT __stdcall GetTitle (
+ BSTR * title ) = 0;
+ virtual HRESULT __stdcall GetGenreId (
+ BSTR * GenreId ) = 0;
+ virtual HRESULT __stdcall GetFilesize (
+ /*[out,retval]*/ unsigned int * pVal ) = 0;
+ virtual HRESULT __stdcall GetTracklength (
+ /*[out,retval]*/ unsigned int * pVal ) = 0;
+ virtual HRESULT __stdcall GetBitrate (
+ /*[out,retval]*/ unsigned int * pVal ) = 0;
+};
+
+struct __declspec(uuid("29327d31-2587-48c6-8b11-3f57b096c2ea"))
+ICddbPL2ResultList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetResult (
+ /*[in]*/ long Index,
+ /*[out,retval]*/ struct ICddbPL2Result * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("c0e6e3a0-2fcf-4a33-8e55-19920b83d759"))
+ICddbPL2Timestamp : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Year (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Year (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Month (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Month (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Day (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Day (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Hour (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Hour (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Minute (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Minute (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall SetToNow ( ) = 0;
+ virtual HRESULT __stdcall GetAsString (
+ BSTR * str ) = 0;
+ virtual HRESULT __stdcall SetAsString (
+ BSTR str ) = 0;
+};
+
+struct __declspec(uuid("b0c8851a-0209-419b-84bc-1d03e6a0dc86"))
+ICddbPL2FindData : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Artist (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Artist (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Album (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Album (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Keyword (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Keyword (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_GenreId (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_GenreId (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall put_LastPlayRange (
+ long bSet,
+ struct ICddbPL2Timestamp * start,
+ struct ICddbPL2Timestamp * end ) = 0;
+ virtual HRESULT __stdcall get_LastPlayRange (
+ struct ICddbPL2Timestamp * start,
+ struct ICddbPL2Timestamp * end ) = 0;
+ virtual HRESULT __stdcall put_YearRange (
+ long bSet,
+ long start,
+ long end ) = 0;
+ virtual HRESULT __stdcall get_YearRange (
+ long * start,
+ long * end ) = 0;
+ virtual HRESULT __stdcall put_PlaysRange (
+ long bSet,
+ long start,
+ long end ) = 0;
+ virtual HRESULT __stdcall get_PlaysRange (
+ long * start,
+ long * end ) = 0;
+ virtual HRESULT __stdcall put_RatingRange (
+ long bSet,
+ long start,
+ long end ) = 0;
+ virtual HRESULT __stdcall get_RatingRange (
+ long * start,
+ long * end ) = 0;
+};
+
+struct __declspec(uuid("1754c0c9-24b5-4ed6-8eea-52620ed16e58"))
+ICddbPLGenCriteria : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Description (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Description (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Field (
+ /*[out,retval]*/ enum gnpl_crit_field_t * pVal ) = 0;
+ virtual HRESULT __stdcall put_Field (
+ /*[in]*/ enum gnpl_crit_field_t pVal ) = 0;
+ virtual HRESULT __stdcall get_FieldType (
+ /*[out,retval]*/ enum gnpl_crit_field_type_t * pVal ) = 0;
+ virtual HRESULT __stdcall put_FieldType (
+ /*[in]*/ enum gnpl_crit_field_type_t pVal ) = 0;
+ virtual HRESULT __stdcall get_Operation (
+ /*[out,retval]*/ enum gnpl_crit_op_t * pVal ) = 0;
+ virtual HRESULT __stdcall put_Operation (
+ /*[in]*/ enum gnpl_crit_op_t pVal ) = 0;
+ virtual HRESULT __stdcall get_IntParam1 (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_IntParam1 (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_IntParam2 (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_IntParam2 (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_IntParam3 (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_IntParam3 (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_StrParam1 (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_StrParam1 (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_StrParam2 (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_StrParam2 (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Weight (
+ /*[out,retval]*/ short * pVal ) = 0;
+ virtual HRESULT __stdcall put_Weight (
+ /*[in]*/ short pVal ) = 0;
+ virtual HRESULT __stdcall get_Order (
+ /*[out,retval]*/ short * pVal ) = 0;
+ virtual HRESULT __stdcall put_Order (
+ /*[in]*/ short pVal ) = 0;
+ virtual HRESULT __stdcall get_SelectionBased (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_SelectionBased (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_DateParam1 (
+ /*[out,retval]*/ struct ICddbPL2Timestamp * * pVal ) = 0;
+ virtual HRESULT __stdcall put_DateParam1 (
+ /*[in]*/ struct ICddbPL2Timestamp * pVal ) = 0;
+ virtual HRESULT __stdcall get_DateParam2 (
+ /*[out,retval]*/ struct ICddbPL2Timestamp * * pVal ) = 0;
+ virtual HRESULT __stdcall put_DateParam2 (
+ /*[in]*/ struct ICddbPL2Timestamp * pVal ) = 0;
+};
+
+struct __declspec(uuid("a9f50e0f-859d-4397-959e-3bb7aacbb564"))
+ICddbPLGenCriteriaList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetCriteria (
+ /*[in]*/ long Index,
+ /*[out,retval]*/ struct ICddbPLGenCriteria * * pVal ) = 0;
+ virtual HRESULT __stdcall DeleteCriteria (
+ /*[in]*/ long Index,
+ /*[in]*/ struct ICddbPLGenCriteria * criteria ) = 0;
+ virtual HRESULT __stdcall AddCriteria (
+ /*[in]*/ long Where,
+ /*[in]*/ struct ICddbPLGenCriteria * criteria ) = 0;
+ virtual HRESULT __stdcall ClearCriteria ( ) = 0;
+};
+
+struct __declspec(uuid("d79ffaf8-1bc2-4bde-b5f7-1baa899865d2"))
+ICddbPLGenLimit : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Field (
+ /*[out,retval]*/ enum gnpl_crit_field_t * pVal ) = 0;
+ virtual HRESULT __stdcall put_Field (
+ /*[in]*/ enum gnpl_crit_field_t pVal ) = 0;
+ virtual HRESULT __stdcall get_Limit (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Limit (
+ /*[in]*/ long pVal ) = 0;
+};
+
+struct __declspec(uuid("8d951c2e-56fb-4e0b-903c-fe738da573c1"))
+ICddbPLGenLimitList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetLimit (
+ /*[in]*/ long Index,
+ /*[out,retval]*/ struct ICddbPLGenLimit * * pVal ) = 0;
+ virtual HRESULT __stdcall DeleteLimit (
+ /*[in]*/ long Index,
+ /*[in]*/ struct ICddbPLGenLimit * Limit ) = 0;
+ virtual HRESULT __stdcall AddLimit (
+ /*[in]*/ long Where,
+ /*[in]*/ struct ICddbPLGenLimit * Limit ) = 0;
+ virtual HRESULT __stdcall GetLimitForField (
+ /*[in]*/ enum gnpl_crit_field_t Field,
+ /*[out,retval]*/ struct ICddbPLGenLimit * * pVal ) = 0;
+};
+
+struct __declspec(uuid("0281a5e7-bd75-4ed3-9872-3331157b923d"))
+ICddbPLGenRank : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Field (
+ /*[out,retval]*/ enum gnpl_crit_field_t * pVal ) = 0;
+ virtual HRESULT __stdcall put_Field (
+ /*[in]*/ enum gnpl_crit_field_t pVal ) = 0;
+ virtual HRESULT __stdcall get_RankOrder (
+ /*[out,retval]*/ enum gnpl_rank_order_t * pVal ) = 0;
+ virtual HRESULT __stdcall put_RankOrder (
+ /*[in]*/ enum gnpl_rank_order_t pVal ) = 0;
+};
+
+struct __declspec(uuid("5311019a-98c9-4377-b8cf-72c00a55914a"))
+ICddbPLGenerator : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Name (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Name (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_Description (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Description (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall get_CriteriaList (
+ /*[out,retval]*/ struct ICddbPLGenCriteriaList * * pVal ) = 0;
+ virtual HRESULT __stdcall put_CriteriaList (
+ /*[in]*/ struct ICddbPLGenCriteriaList * pVal ) = 0;
+ virtual HRESULT __stdcall get_MatchMode (
+ /*[out,retval]*/ enum gnpl_criteria_matchmode_t * pVal ) = 0;
+ virtual HRESULT __stdcall put_MatchMode (
+ /*[in]*/ enum gnpl_criteria_matchmode_t pVal ) = 0;
+ virtual HRESULT __stdcall get_LimitKilobytes (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_LimitKilobytes (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_LimitMinutes (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_LimitMinutes (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_LimitSongs (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_LimitSongs (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Seed (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Seed (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_LimitList (
+ /*[out,retval]*/ struct ICddbPLGenLimitList * * pVal ) = 0;
+ virtual HRESULT __stdcall put_LimitList (
+ /*[in]*/ struct ICddbPLGenLimitList * pVal ) = 0;
+ virtual HRESULT __stdcall get_Rank (
+ /*[in]*/ unsigned int RankOrder,
+ /*[out,retval]*/ struct ICddbPLGenRank * * pVal ) = 0;
+ virtual HRESULT __stdcall put_Rank (
+ /*[in]*/ unsigned int RankOrder,
+ /*[in]*/ struct ICddbPLGenRank * pVal ) = 0;
+ virtual HRESULT __stdcall get_AutoUpdate (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_AutoUpdate (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_IsSelectionBased (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_IsSelectionBased (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall Clone (
+ struct ICddbPLGenerator * * ppClonedGenerator ) = 0;
+};
+
+struct __declspec(uuid("5a4471da-0283-449e-8ee2-b0716e3c168b"))
+ICddbPLIDList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetID (
+ /*[in]*/ long Index,
+ /*[out,retval]*/ long * pVal ) = 0;
+};
+
+struct __declspec(uuid("53881256-92a2-4292-8e24-68ca3992e337"))
+ICddbPLDataListItem : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Id (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_Name (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Description (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Children (
+ /*[out,retval]*/ struct ICddbPLIDList * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Parents (
+ /*[out,retval]*/ struct ICddbPLIDList * * pVal ) = 0;
+};
+
+struct __declspec(uuid("5e484009-3e2b-426a-b496-aebcacd6deb7"))
+ICddbPLDataList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetItem (
+ /*[in]*/ long Index,
+ /*[out,retval]*/ struct ICddbPLDataListItem * * pVal ) = 0;
+ virtual HRESULT __stdcall GetItemById (
+ /*[in]*/ long Id,
+ /*[out,retval]*/ struct ICddbPLDataListItem * * pVal ) = 0;
+ virtual HRESULT __stdcall get_DescendantsById (
+ /*[in]*/ long Id,
+ /*[out,retval]*/ struct ICddbPLIDList * * pVal ) = 0;
+ virtual HRESULT __stdcall get_LeafDescendantsById (
+ /*[in]*/ long Id,
+ /*[out,retval]*/ struct ICddbPLIDList * * pVal ) = 0;
+};
+
+struct __declspec(uuid("3bfa2b55-49a3-42a0-bd2d-4d60d9b9c93f"))
+ICddbGenreDisplayList : ICddbPLDataList
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetDisplayItemByID (
+ /*[in]*/ long Id,
+ /*[out,retval]*/ struct ICddbPLDataListItem * * pVal ) = 0;
+};
+
+struct __declspec(uuid("f8d8ee69-e17d-442f-bb11-d8a1a214feba"))
+ICddbPLGeneratorList : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Count (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetPLGenerator (
+ /*[in]*/ long Index,
+ /*[out,retval]*/ struct ICddbPLGenerator * * pPlGenerator ) = 0;
+ virtual HRESULT __stdcall SavePLGensToFile (
+ /*[in]*/ BSTR filepath ) = 0;
+ virtual HRESULT __stdcall AddPLGenerator (
+ /*[in]*/ struct ICddbPLGenerator * pPlGenerator ) = 0;
+ virtual HRESULT __stdcall RemovePLGenerator (
+ /*[in]*/ struct ICddbPLGenerator * pPlGenerator ) = 0;
+ virtual HRESULT __stdcall AddPLGeneratorAtIndex (
+ /*[in]*/ struct ICddbPLGenerator * pPlGenerator,
+ /*[in,out]*/ int * pIndex ) = 0;
+ virtual HRESULT __stdcall SetGenreDisplayList (
+ struct ICddbGenreDisplayList * pGenreDisplayList ) = 0;
+ virtual HRESULT __stdcall get__NewEnum (
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Item (
+ /*[in]*/ long lIndex,
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+};
+
+struct __declspec(uuid("84e284d8-34cc-4337-b1dc-d7d6f0e431cb"))
+ICddbArtistTypeList : ICddbPLDataList
+{};
+
+struct __declspec(uuid("ba5342dc-41d7-4954-9501-fdc6acd0dc2f"))
+ICddbOriginsList : ICddbPLDataList
+{};
+
+struct __declspec(uuid("a2c6c4ee-32fe-4bb7-8a47-dc615034bd7c"))
+ICddbEra : ICddbPLDataListItem
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_StartYear (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_EndYear (
+ /*[out,retval]*/ long * pVal ) = 0;
+};
+
+struct __declspec(uuid("15d93d1e-50f1-444c-9e76-e4c8aca0a29d"))
+ICddbEraDisplayList : ICddbPLDataList
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetEraByYear (
+ /*[in]*/ unsigned long Year,
+ /*[in]*/ unsigned short minspread,
+ /*[out,retval]*/ struct ICddbEra * * pEra ) = 0;
+};
+
+struct __declspec(uuid("3580dee2-b1d1-46ae-88b0-cbac62d1e157"))
+ICddbPopularityRangeList : ICddbPLDataList
+{};
+
+struct __declspec(uuid("34655d2e-8550-421f-a67d-a002f14d8d5e"))
+ICddbPlaylist2Mgr : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall Initialize (
+ struct ICDDBControl * pCDDBControl,
+ BSTR db_path ) = 0;
+ virtual HRESULT __stdcall Shutdown ( ) = 0;
+ virtual HRESULT __stdcall DownloadCorrelates (
+ long bForce ) = 0;
+ virtual HRESULT __stdcall CreatePlaylist (
+ struct ICddbPL2Criteria * pCriteria,
+ struct ICddbPL2ResultList * * ppPLResults ) = 0;
+ virtual HRESULT __stdcall CreatePlaylistFromFolder (
+ BSTR folder,
+ long bRecurse,
+ struct ICddbPL2Criteria * criteria,
+ struct ICddbPL2ResultList * * ppPLResults ) = 0;
+ virtual HRESULT __stdcall AddFile (
+ BSTR filename ) = 0;
+ virtual HRESULT __stdcall AddFolder (
+ BSTR folder,
+ long bRecurse ) = 0;
+ virtual HRESULT __stdcall DeleteFile (
+ BSTR filename ) = 0;
+ virtual HRESULT __stdcall UpdateFile (
+ BSTR filename ) = 0;
+ virtual HRESULT __stdcall TestFile (
+ BSTR filename,
+ struct ICddbPL2Criteria * pCriteria,
+ struct ICddbPL2ResultList * pPLResults ) = 0;
+ virtual HRESULT __stdcall GetFileData (
+ BSTR filename,
+ struct ICddbDisc2 * * pDisc ) = 0;
+ virtual HRESULT __stdcall GetFileIdentifier (
+ BSTR filename,
+ BSTR * fileId ) = 0;
+ virtual HRESULT __stdcall NewPlaylistCriteria (
+ BSTR filename,
+ struct ICddbPL2Criteria * * criteria ) = 0;
+ virtual HRESULT __stdcall RetrieveCriteria (
+ long Index,
+ struct ICddbPL2Criteria * * ppCriteria ) = 0;
+ virtual HRESULT __stdcall SaveCriteria (
+ struct ICddbPL2Criteria * criteria,
+ long * Index ) = 0;
+ virtual HRESULT __stdcall DeleteCriteria (
+ long Index ) = 0;
+ virtual HRESULT __stdcall NumSavedCriteria (
+ long * Count ) = 0;
+ virtual HRESULT __stdcall StatsPlayedFile (
+ BSTR filename ) = 0;
+ virtual HRESULT __stdcall StatsGetPlays (
+ BSTR filename,
+ long * plays ) = 0;
+ virtual HRESULT __stdcall StatsRateFile (
+ BSTR filename,
+ long rating ) = 0;
+ virtual HRESULT __stdcall StatsGetRating (
+ BSTR filename,
+ long * rating ) = 0;
+ virtual HRESULT __stdcall StatsGetDate (
+ BSTR filename,
+ long type,
+ struct ICddbPL2Timestamp * date ) = 0;
+ virtual HRESULT __stdcall FindOpen (
+ struct ICddbPL2FindData * pFindData ) = 0;
+ virtual HRESULT __stdcall FindNext (
+ struct ICddbPL2FindData * pFindData,
+ struct ICddbDisc2 * * ppDisc ) = 0;
+ virtual HRESULT __stdcall FindClose (
+ struct ICddbPL2FindData * pFindData ) = 0;
+ virtual HRESULT __stdcall UpdateDatabase (
+ long flags ) = 0;
+ virtual HRESULT __stdcall CompactDatabase (
+ long flags ) = 0;
+ virtual HRESULT __stdcall GetEras (
+ IUnknown * * pEras ) = 0;
+ virtual HRESULT __stdcall GetPresetPlaylistGenList (
+ /*[out,retval]*/ struct ICddbPLGeneratorList * * pPresetPLGenList ) = 0;
+ virtual HRESULT __stdcall GetUserPlaylistGenList (
+ /*[out,retval]*/ struct ICddbPLGeneratorList * * pUserPlGenList ) = 0;
+ virtual HRESULT __stdcall LoadUserPLGens ( ) = 0;
+ virtual HRESULT __stdcall CreateDynPlaylist (
+ struct ICddbPLGenerator * pPLGen,
+ VARIANT filenamesArray,
+ struct ICddbPL2ResultList * * ppPLResults ) = 0;
+ virtual HRESULT __stdcall SaveUserPLGens ( ) = 0;
+ virtual HRESULT __stdcall GetArtistTypes (
+ /*[out,retval]*/ struct ICddbArtistTypeList * * pList ) = 0;
+ virtual HRESULT __stdcall GetOrigins (
+ /*[out,retval]*/ struct ICddbOriginsList * * pList ) = 0;
+ virtual HRESULT __stdcall GetGenreDisplayList (
+ /*[in]*/ long flags,
+ /*[out,retval]*/ struct ICddbGenreDisplayList * * pVal ) = 0;
+ virtual HRESULT __stdcall GetEraDisplayList (
+ /*[in]*/ long flags,
+ /*[out,retval]*/ struct ICddbEraDisplayList * * pVal ) = 0;
+ virtual HRESULT __stdcall get_Version (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall FileGetDevField (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ int fieldnum,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall FileSetDevField (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ int fieldnum,
+ /*[in]*/ BSTR fieldval ) = 0;
+ virtual HRESULT __stdcall get_DirDelim (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_DirDelim (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall AddFileWithTag (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ struct ICddbFileTag * tag ) = 0;
+ virtual HRESULT __stdcall AddFileWithDisc (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ struct ICddbDisc * disc ) = 0;
+ virtual HRESULT __stdcall FileSetFieldVal (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ enum gnpl_crit_field_t Field,
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall FileSetFieldValDate (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ enum gnpl_crit_field_t Field,
+ /*[in]*/ struct ICddbPL2Timestamp * pTimestamp ) = 0;
+ virtual HRESULT __stdcall FileGetFieldVal (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ enum gnpl_crit_field_t Field,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall FileGetFieldValDate (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ enum gnpl_crit_field_t Field,
+ /*[out,retval]*/ struct ICddbPL2Timestamp * * pDate ) = 0;
+ virtual HRESULT __stdcall GetPopularityRanges (
+ /*[out,retval]*/ struct ICddbPopularityRangeList * * pList ) = 0;
+ virtual HRESULT __stdcall AddEntry (
+ /*[in]*/ BSTR filename ) = 0;
+ virtual HRESULT __stdcall FileSetTagID (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ BSTR TagID,
+ /*[in]*/ int flags ) = 0;
+ virtual HRESULT __stdcall AddEntryWithTag (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ BSTR TagID ) = 0;
+ virtual HRESULT __stdcall CDDBUpdateEntry (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ int flags ) = 0;
+ virtual HRESULT __stdcall AddEntryWithDisc (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ struct ICddbDisc * disc ) = 0;
+ virtual HRESULT __stdcall UpdateFileWithDisc (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ struct ICddbDisc * pDisc ) = 0;
+ virtual HRESULT __stdcall GetPLDataList (
+ /*[in]*/ long flags,
+ /*[in]*/ BSTR Name,
+ /*[out,retval]*/ struct ICddbPLDataList * * pList ) = 0;
+};
+
+struct __declspec(uuid("b282f975-ac68-41c1-bded-de683bb8e403"))
+ICddbPLGenWeightedRank : ICddbPLGenRank
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_Weight (
+ /*[out,retval]*/ unsigned int * pVal ) = 0;
+ virtual HRESULT __stdcall put_Weight (
+ /*[in]*/ unsigned int pVal ) = 0;
+};
+
+struct __declspec(uuid("6e1eeee1-7227-4bad-b955-b84bea914a5a"))
+ICddbPL25Generator : ICddbPLGenerator
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall put_WeightedRank (
+ /*[in]*/ struct ICddbPLGenWeightedRank * _arg1 ) = 0;
+ virtual HRESULT __stdcall GetWeightedRankCount (
+ /*[out,retval]*/ unsigned int * pCount ) = 0;
+ virtual HRESULT __stdcall get_WeightedRankByIndex (
+ /*[in]*/ unsigned int Index,
+ /*[out,retval]*/ struct ICddbPLGenWeightedRank * * pVal ) = 0;
+ virtual HRESULT __stdcall get_WeightedRankByField (
+ /*[in]*/ enum gnpl_crit_field_t Field,
+ /*[out,retval]*/ struct ICddbPLGenWeightedRank * * pVal ) = 0;
+ virtual HRESULT __stdcall DeleteWeightedRank (
+ /*[in]*/ struct ICddbPLGenWeightedRank * pRank ) = 0;
+ virtual HRESULT __stdcall DeleteWeightedRankWithField (
+ /*[in]*/ enum gnpl_crit_field_t Field ) = 0;
+ virtual HRESULT __stdcall ClearRanks ( ) = 0;
+ virtual HRESULT __stdcall ClearWeightedRanks ( ) = 0;
+};
+
+struct __declspec(uuid("3ffd3787-fe3a-4f44-be99-4289875eb925"))
+ICddbPLGen25Criteria : ICddbPLGenCriteria
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_DevFieldNum (
+ /*[out,retval]*/ int * pDevFieldNum ) = 0;
+ virtual HRESULT __stdcall put_DevFieldNum (
+ /*[in]*/ int pDevFieldNum ) = 0;
+};
+
+struct __declspec(uuid("e0d26898-f166-4f42-9a6a-5d2e346ed6ed"))
+ICddbPLInfo : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetCriteriaFieldType (
+ /*[in]*/ enum gnpl_crit_field_t Field,
+ /*[out,retval]*/ enum gnpl_crit_field_type_t * pVal ) = 0;
+ virtual HRESULT __stdcall GetCriteriaFieldDescription (
+ /*[in]*/ enum gnpl_crit_field_t Field,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall GetCriteriaFieldUnits (
+ /*[in]*/ enum gnpl_crit_field_t Field,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall GetCriteriaOpDescription (
+ /*[in]*/ enum gnpl_crit_op_t Op,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall GetCriteriaOpUnits (
+ /*[in]*/ enum gnpl_crit_op_t Op,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall GetUserInfoDescription (
+ /*[in]*/ enum gnpl_user_info_t Info,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall get_Language (
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall put_Language (
+ /*[in]*/ BSTR pVal ) = 0;
+ virtual HRESULT __stdcall GetCutoffFieldDescription (
+ /*[in]*/ enum gnpl_crit_field_t Field,
+ /*[in]*/ enum gnpl_rank_order_t Order,
+ /*[out,retval]*/ BSTR * pVal ) = 0;
+ virtual HRESULT __stdcall SetDevFieldInfo (
+ /*[in]*/ int fieldnum,
+ /*[in]*/ enum gnpl_crit_field_type_t FieldType ) = 0;
+};
+
+struct __declspec(uuid("f7bcb924-06da-41e2-af0c-c249c136303a"))
+ICddbMLDBManager : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall Attach (
+ /*[in]*/ struct ICddbPlaylist2Mgr * pMgr ) = 0;
+ virtual HRESULT __stdcall Detach (
+ /*[in]*/ struct ICddbPlaylist2Mgr * pMgr ) = 0;
+ virtual HRESULT __stdcall GetOptions (
+ /*[out]*/ long * flags,
+ /*[out]*/ BSTR * backup_path ) = 0;
+ virtual HRESULT __stdcall SetOptions (
+ /*[in]*/ long flags,
+ /*[in]*/ BSTR backup_path ) = 0;
+ virtual HRESULT __stdcall CheckDB (
+ /*[in]*/ long flags,
+ /*[in]*/ BSTR db_path ) = 0;
+ virtual HRESULT __stdcall RebuildDBIndex (
+ /*[in]*/ long flags,
+ /*[in]*/ BSTR db_path ) = 0;
+ virtual HRESULT __stdcall BackupDBFiles (
+ /*[in]*/ long flags,
+ /*[in]*/ BSTR db_path,
+ /*[in]*/ BSTR backup_path ) = 0;
+ virtual HRESULT __stdcall RestoreDBFiles (
+ /*[in]*/ long flags,
+ /*[in]*/ BSTR db_path,
+ /*[in]*/ BSTR restore_path ) = 0;
+ virtual HRESULT __stdcall CheckInitFlag (
+ /*[in]*/ long flags,
+ /*[in]*/ BSTR db_path,
+ /*[out]*/ long * exists ) = 0;
+ virtual HRESULT __stdcall ModifyInitFlag (
+ /*[in]*/ long flags,
+ /*[in]*/ BSTR db_path ) = 0;
+ virtual HRESULT __stdcall CommitDB ( ) = 0;
+ virtual HRESULT __stdcall DeleteDBFiles (
+ /*[in]*/ long flags,
+ /*[in]*/ BSTR db_path ) = 0;
+};
+
+struct __declspec(uuid("df17e91f-434a-4e75-8645-13dd56a4cc86"))
+ICddbMLDBManager2 : ICddbMLDBManager
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall ExportMLDB (
+ /*[in]*/ long flags,
+ /*[in]*/ long collection_id,
+ /*[in]*/ BSTR db_path,
+ /*[in]*/ BSTR export_path ) = 0;
+ virtual HRESULT __stdcall ImportMLDB (
+ /*[in]*/ long flags,
+ /*[in]*/ long collection_id,
+ /*[in]*/ BSTR import_path,
+ /*[in]*/ BSTR db_path ) = 0;
+};
+
+struct __declspec(uuid("be4e7feb-ee3a-4a41-b370-ae37e656be29"))
+ICddbPopularityRange : ICddbPLDataListItem
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_StartRange (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall get_EndRange (
+ /*[out,retval]*/ long * pVal ) = 0;
+};
+
+struct __declspec(uuid("dbbc42ac-1409-4d95-98fc-7f6acb33ec15"))
+ICddbPLMoreLikeThisCfg : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_TrackLimit (
+ /*[out,retval]*/ unsigned int * pVal ) = 0;
+ virtual HRESULT __stdcall put_TrackLimit (
+ /*[in]*/ unsigned int pVal ) = 0;
+ virtual HRESULT __stdcall get_MaxPerArtist (
+ /*[out,retval]*/ unsigned int * pVal ) = 0;
+ virtual HRESULT __stdcall put_MaxPerArtist (
+ /*[in]*/ unsigned int pVal ) = 0;
+ virtual HRESULT __stdcall get_MaxPerAlbum (
+ /*[out,retval]*/ unsigned int * pVal ) = 0;
+ virtual HRESULT __stdcall put_MaxPerAlbum (
+ /*[in]*/ unsigned int pVal ) = 0;
+ virtual HRESULT __stdcall get_Algorithm (
+ /*[out,retval]*/ int * pVal ) = 0;
+ virtual HRESULT __stdcall put_Algorithm (
+ /*[in]*/ int pVal ) = 0;
+ virtual HRESULT __stdcall get_Seed (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Seed (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_flags (
+ /*[out,retval]*/ int * pVal ) = 0;
+ virtual HRESULT __stdcall put_flags (
+ /*[in]*/ int pVal ) = 0;
+ virtual HRESULT __stdcall get_SortByField (
+ /*[out,retval]*/ enum gnpl_crit_field_t * pVal ) = 0;
+ virtual HRESULT __stdcall put_SortByField (
+ /*[in]*/ enum gnpl_crit_field_t pVal ) = 0;
+ virtual HRESULT __stdcall get_Option (
+ /*[in]*/ BSTR optionName,
+ /*[out,retval]*/ unsigned int * pVal ) = 0;
+ virtual HRESULT __stdcall put_Option (
+ /*[in]*/ BSTR optionName,
+ /*[in]*/ unsigned int pVal ) = 0;
+};
+
+struct __declspec(uuid("ba9a4ba6-1879-4a32-82c8-bd84d8fadf00"))
+ICddbPlaylist25Mgr : ICddbPlaylist2Mgr
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall MoreLikeThisSong (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ struct ICddbPLMoreLikeThisCfg * pConfig,
+ /*[out,retval]*/ struct ICddbPL2ResultList * * ppPLResults ) = 0;
+ virtual HRESULT __stdcall MoreLikeTheseSongs (
+ /*[in]*/ VARIANT filenamesArray,
+ /*[in]*/ struct ICddbPLMoreLikeThisCfg * pConfig,
+ /*[out,retval]*/ struct ICddbPL2ResultList * * ppPLResults ) = 0;
+ virtual HRESULT __stdcall MoreLikeThisArtist (
+ /*[in]*/ BSTR artist_name,
+ /*[in]*/ struct ICddbPLMoreLikeThisCfg * pConfig,
+ /*[out,retval]*/ struct ICddbPL2ResultList * * ppPLResults ) = 0;
+ virtual HRESULT __stdcall MoreLikeThisAlbum (
+ /*[in]*/ BSTR album_name,
+ /*[in]*/ BSTR artist_name,
+ /*[in]*/ struct ICddbPLMoreLikeThisCfg * pConfig,
+ /*[out,retval]*/ struct ICddbPL2ResultList * * ppPLResults ) = 0;
+ virtual HRESULT __stdcall MoreLikeThisDisc (
+ /*[in]*/ struct ICddbDisc * pDisc,
+ /*[in]*/ struct ICddbPLMoreLikeThisCfg * pConfig,
+ /*[out,retval]*/ struct ICddbPL2ResultList * * ppPLResults ) = 0;
+ virtual HRESULT __stdcall MoreOfThisField (
+ /*[in]*/ VARIANT filenamesArray,
+ enum gnpl_crit_field_t Field,
+ /*[in]*/ struct ICddbPLMoreLikeThisCfg * pConfig,
+ /*[out,retval]*/ struct ICddbPL2ResultList * * ppPLResults ) = 0;
+ virtual HRESULT __stdcall FileSetDevFieldValDate (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ int DevFieldNum,
+ /*[in]*/ struct ICddbPL2Timestamp * pTimestamp ) = 0;
+ virtual HRESULT __stdcall FileGetDevFieldValDate (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ int DevFieldNum,
+ /*[out,retval]*/ struct ICddbPL2Timestamp * * pDate ) = 0;
+ virtual HRESULT __stdcall LoadUserPLGensFromFile (
+ /*[in]*/ BSTR bmlfile ) = 0;
+ virtual HRESULT __stdcall FileSetExtData (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ struct ICddbExtData * pExtData,
+ /*[in]*/ long lExtDataFlags ) = 0;
+ virtual HRESULT __stdcall FileGetExtData (
+ /*[in]*/ BSTR filename,
+ /*[out]*/ struct ICddbExtData * * ppExtData,
+ /*[in]*/ long lExtDataFlags ) = 0;
+ virtual HRESULT __stdcall FileSetExtDataSerialized (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ BSTR bstrSerialized,
+ /*[in]*/ long lExtDataFlags ) = 0;
+ virtual HRESULT __stdcall FileGetExtDataSerialized (
+ /*[in]*/ BSTR filename,
+ /*[out]*/ BSTR * pVal,
+ /*[in]*/ long lExtDataFlags ) = 0;
+ virtual HRESULT __stdcall AddFileWithTagEx (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ struct ICddbFileTag * pTag,
+ /*[in]*/ long lPlaylistLookupFlags ) = 0;
+ virtual HRESULT __stdcall AddFileWithDiscEx (
+ /*[in]*/ BSTR filename,
+ /*[in]*/ struct ICddbDisc * pDisc,
+ /*[in]*/ long lTrackNum,
+ /*[in]*/ long lPlaylistLookupFlags ) = 0;
+ virtual HRESULT __stdcall RenameEntry (
+ /*[in]*/ BSTR oldFilename,
+ /*[in]*/ BSTR newFilename ) = 0;
+};
+
+struct __declspec(uuid("dcf3b306-aa51-455c-9b39-51f8cb8590aa"))
+ICddbPLMoreLikeThisCfg2 : ICddbPLMoreLikeThisCfg
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_MaxKilobytes (
+ /*[out,retval]*/ unsigned int * pVal ) = 0;
+ virtual HRESULT __stdcall put_MaxKilobytes (
+ /*[in]*/ unsigned int pVal ) = 0;
+ virtual HRESULT __stdcall get_MaxMinutes (
+ /*[out,retval]*/ unsigned int * pVal ) = 0;
+ virtual HRESULT __stdcall put_MaxMinutes (
+ /*[in]*/ unsigned int pVal ) = 0;
+};
+
+struct __declspec(uuid("59ce219f-46aa-4fc1-85b8-31290e454503"))
+ICddbPLMoreLikeThisCfg25 : ICddbPLMoreLikeThisCfg2
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall get_SelectionType (
+ /*[out,retval]*/ gnpl_crit_selection_t * pVal ) = 0;
+ virtual HRESULT __stdcall put_SelectionType (
+ /*[in]*/ gnpl_crit_selection_t pVal ) = 0;
+ virtual HRESULT __stdcall get_ExcludeList (
+ /*[out,retval]*/ VARIANT * pVal ) = 0;
+ virtual HRESULT __stdcall put_ExcludeList (
+ /*[in]*/ VARIANT pVal ) = 0;
+};
+
+struct __declspec(uuid("39c806ec-eb0a-4f6e-b40d-c41d92281b5e"))
+CddbNSWinampPlaylist2Mgr;
+ // [ default ] interface ICddbPlaylist2Mgr
+ // [ default, source ] dispinterface DPlaylist2Events
+
+struct __declspec(uuid("d593724f-d0dc-431b-a395-8280d5aceccb"))
+CddbPL2Criteria;
+ // [ default ] interface ICddbPL2Criteria
+
+struct __declspec(uuid("fe4c8bff-961f-42c2-bad8-808f76edde15"))
+CddbPL2Timestamp;
+ // [ default ] interface ICddbPL2Timestamp
+
+struct __declspec(uuid("870a8c49-8935-430b-9ffe-175c47fb6b0b"))
+CddbPL2FindData;
+ // [ default ] interface ICddbPL2FindData
+
+struct __declspec(uuid("1cb70589-414c-40a6-b108-a5f02ae4cb62"))
+CddbPL2Result;
+ // [ default ] interface ICddbPL2Result
+
+struct __declspec(uuid("45f626aa-a0b4-4f3c-a173-64a7aac44670"))
+CddbPL2ResultList;
+ // [ default ] interface ICddbPL2ResultList
+
+struct __declspec(uuid("684aa29d-14f5-4dd9-949f-c2ae96e7f9ac"))
+CddbEra;
+ // [ default ] interface ICddbEra
+ // interface ICddbPLDataListItem
+
+struct __declspec(uuid("d7fbfb00-25ec-41f6-b64e-fab7668d5b75"))
+CddbPLGeneratorList;
+ // [ default ] interface ICddbPLGeneratorList
+
+struct __declspec(uuid("7052a035-2aee-4d5d-be82-6b12437bfcba"))
+CddbPLGenerator;
+ // [ default ] interface ICddbPLGenerator
+
+struct __declspec(uuid("b1f7d50c-a3fe-4bbb-9389-25b78d70b593"))
+CddbPLGenCriteria;
+ // [ default ] interface ICddbPLGenCriteria
+
+struct __declspec(uuid("783dcf23-fde3-44e1-ad01-c8100596a81b"))
+CddbPLGenLimit;
+ // [ default ] interface ICddbPLGenLimit
+
+struct __declspec(uuid("7f403f21-383b-4faf-94c7-e2c2f487f926"))
+CddbPLGenCriteriaList;
+ // [ default ] interface ICddbPLGenCriteriaList
+
+struct __declspec(uuid("f78ae80a-3ef5-498e-bf16-7696f7d31fed"))
+CddbPLGenLimitList;
+ // [ default ] interface ICddbPLGenLimitList
+
+struct __declspec(uuid("bf1caa94-1d1c-4ae7-b94c-10fdc05f493d"))
+CddbPLGenRank;
+ // [ default ] interface ICddbPLGenRank
+
+struct __declspec(uuid("654e1149-060b-4fd1-af4b-07e1d2a83ae0"))
+CddbPLInfo;
+ // [ default ] interface ICddbPLInfo
+
+struct __declspec(uuid("0f81de5a-2181-4b4a-af32-de4f21409bee"))
+CddbPLDataList;
+ // [ default ] interface ICddbPLDataList
+
+struct __declspec(uuid("56fce24a-250a-4399-bb0c-f8c5a5169f86"))
+CddbPLDataListItem;
+ // [ default ] interface ICddbPLDataListItem
+
+struct __declspec(uuid("671d0917-5346-4a5e-8100-0e75c423fdab"))
+CddbPLIDList;
+ // [ default ] interface ICddbPLIDList
+
+struct __declspec(uuid("c367baf6-6587-45a8-b774-aa20d6aa5ce4"))
+CddbArtistTypeList;
+ // [ default ] interface ICddbArtistTypeList
+ // interface ICddbPLDataList
+
+struct __declspec(uuid("642e727f-4ba8-4514-972b-d1d554d62d2f"))
+CddbOriginsList;
+ // [ default ] interface ICddbOriginsList
+ // interface ICddbPLDataList
+
+struct __declspec(uuid("09e3539f-d0cc-4913-a025-104323c2caab"))
+CddbGenreDisplayList;
+ // [ default ] interface ICddbGenreDisplayList
+ // interface ICddbPLDataList
+
+struct __declspec(uuid("f613382c-27f6-42ca-9b9b-1f1890c19c03"))
+CddbEraDisplayList;
+ // [ default ] interface ICddbEraDisplayList
+ // interface ICddbPLDataList
+
+struct __declspec(uuid("52380d21-992d-416f-97d2-3a2dd46ad7ea"))
+CddbPopularityRangeList;
+ // [ default ] interface ICddbPopularityRangeList
+
+struct __declspec(uuid("d374ceca-3e86-4ab4-87a9-3ff7e03e3cad"))
+CddbMLDBManager;
+ // [ default ] interface ICddbMLDBManager
+
+struct __declspec(uuid("b0204aad-f796-4221-acf3-c24fcee9421a"))
+CddbPopularityRange;
+ // [ default ] interface ICddbPopularityRange
+ // interface ICddbPLDataListItem
+
+struct __declspec(uuid("b3f484a1-e3b4-4ad5-a9a9-52592a08dbd2"))
+CddbPLMoreLikeThisCfg;
+ // [ default ] interface ICddbPLMoreLikeThisCfg
+
+//
+// Named GUID constants initializations
+//
+
+extern "C" const GUID __declspec(selectany) LIBID_CDDBPLAYLIST2LibNSWinamp =
+ {0x7919d0ca,0x3043,0x4c02,{0xb7,0x78,0xab,0x2b,0xf4,0x93,0x1f,0x58}};
+extern "C" const GUID __declspec(selectany) DIID_DPlaylist2Events =
+ {0xa58522b9,0x6b50,0x4033,{0x92,0x46,0x1e,0xc5,0x70,0x1e,0xd8,0x5c}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPL2Criteria =
+ {0x223e85f1,0xb287,0x4571,{0xaa,0x1a,0xa6,0xd6,0x14,0x4d,0x06,0x96}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPL2Result =
+ {0x6ac694d3,0x4e30,0x47f3,{0x93,0xdd,0x23,0x6d,0xbb,0x30,0x87,0x15}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPL2ResultList =
+ {0x29327d31,0x2587,0x48c6,{0x8b,0x11,0x3f,0x57,0xb0,0x96,0xc2,0xea}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPL2Timestamp =
+ {0xc0e6e3a0,0x2fcf,0x4a33,{0x8e,0x55,0x19,0x92,0x0b,0x83,0xd7,0x59}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPL2FindData =
+ {0xb0c8851a,0x0209,0x419b,{0x84,0xbc,0x1d,0x03,0xe6,0xa0,0xdc,0x86}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLGenCriteria =
+ {0x1754c0c9,0x24b5,0x4ed6,{0x8e,0xea,0x52,0x62,0x0e,0xd1,0x6e,0x58}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLGenCriteriaList =
+ {0xa9f50e0f,0x859d,0x4397,{0x95,0x9e,0x3b,0xb7,0xaa,0xcb,0xb5,0x64}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLGenLimit =
+ {0xd79ffaf8,0x1bc2,0x4bde,{0xb5,0xf7,0x1b,0xaa,0x89,0x98,0x65,0xd2}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLGenLimitList =
+ {0x8d951c2e,0x56fb,0x4e0b,{0x90,0x3c,0xfe,0x73,0x8d,0xa5,0x73,0xc1}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLGenRank =
+ {0x0281a5e7,0xbd75,0x4ed3,{0x98,0x72,0x33,0x31,0x15,0x7b,0x92,0x3d}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLGenerator =
+ {0x5311019a,0x98c9,0x4377,{0xb8,0xcf,0x72,0xc0,0x0a,0x55,0x91,0x4a}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLIDList =
+ {0x5a4471da,0x0283,0x449e,{0x8e,0xe2,0xb0,0x71,0x6e,0x3c,0x16,0x8b}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLDataListItem =
+ {0x53881256,0x92a2,0x4292,{0x8e,0x24,0x68,0xca,0x39,0x92,0xe3,0x37}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLDataList =
+ {0x5e484009,0x3e2b,0x426a,{0xb4,0x96,0xae,0xbc,0xac,0xd6,0xde,0xb7}};
+extern "C" const GUID __declspec(selectany) IID_ICddbGenreDisplayList =
+ {0x3bfa2b55,0x49a3,0x42a0,{0xbd,0x2d,0x4d,0x60,0xd9,0xb9,0xc9,0x3f}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLGeneratorList =
+ {0xf8d8ee69,0xe17d,0x442f,{0xbb,0x11,0xd8,0xa1,0xa2,0x14,0xfe,0xba}};
+extern "C" const GUID __declspec(selectany) IID_ICddbArtistTypeList =
+ {0x84e284d8,0x34cc,0x4337,{0xb1,0xdc,0xd7,0xd6,0xf0,0xe4,0x31,0xcb}};
+extern "C" const GUID __declspec(selectany) IID_ICddbOriginsList =
+ {0xba5342dc,0x41d7,0x4954,{0x95,0x01,0xfd,0xc6,0xac,0xd0,0xdc,0x2f}};
+extern "C" const GUID __declspec(selectany) IID_ICddbEra =
+ {0xa2c6c4ee,0x32fe,0x4bb7,{0x8a,0x47,0xdc,0x61,0x50,0x34,0xbd,0x7c}};
+extern "C" const GUID __declspec(selectany) IID_ICddbEraDisplayList =
+ {0x15d93d1e,0x50f1,0x444c,{0x9e,0x76,0xe4,0xc8,0xac,0xa0,0xa2,0x9d}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPopularityRangeList =
+ {0x3580dee2,0xb1d1,0x46ae,{0x88,0xb0,0xcb,0xac,0x62,0xd1,0xe1,0x57}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPlaylist2Mgr =
+ {0x34655d2e,0x8550,0x421f,{0xa6,0x7d,0xa0,0x02,0xf1,0x4d,0x8d,0x5e}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLGenWeightedRank =
+ {0xb282f975,0xac68,0x41c1,{0xbd,0xed,0xde,0x68,0x3b,0xb8,0xe4,0x03}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPL25Generator =
+ {0x6e1eeee1,0x7227,0x4bad,{0xb9,0x55,0xb8,0x4b,0xea,0x91,0x4a,0x5a}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLGen25Criteria =
+ {0x3ffd3787,0xfe3a,0x4f44,{0xbe,0x99,0x42,0x89,0x87,0x5e,0xb9,0x25}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLInfo =
+ {0xe0d26898,0xf166,0x4f42,{0x9a,0x6a,0x5d,0x2e,0x34,0x6e,0xd6,0xed}};
+extern "C" const GUID __declspec(selectany) IID_ICddbMLDBManager =
+ {0xf7bcb924,0x06da,0x41e2,{0xaf,0x0c,0xc2,0x49,0xc1,0x36,0x30,0x3a}};
+extern "C" const GUID __declspec(selectany) IID_ICddbMLDBManager2 =
+ {0xdf17e91f,0x434a,0x4e75,{0x86,0x45,0x13,0xdd,0x56,0xa4,0xcc,0x86}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPopularityRange =
+ {0xbe4e7feb,0xee3a,0x4a41,{0xb3,0x70,0xae,0x37,0xe6,0x56,0xbe,0x29}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLMoreLikeThisCfg =
+ {0xdbbc42ac,0x1409,0x4d95,{0x98,0xfc,0x7f,0x6a,0xcb,0x33,0xec,0x15}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPlaylist25Mgr =
+ {0xba9a4ba6,0x1879,0x4a32,{0x82,0xc8,0xbd,0x84,0xd8,0xfa,0xdf,0x00}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLMoreLikeThisCfg2 =
+ {0xdcf3b306,0xaa51,0x455c,{0x9b,0x39,0x51,0xf8,0xcb,0x85,0x90,0xaa}};
+extern "C" const GUID __declspec(selectany) IID_ICddbPLMoreLikeThisCfg25 =
+ {0x59ce219f,0x46aa,0x4fc1,{0x85,0xb8,0x31,0x29,0x0e,0x45,0x45,0x03}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbNSWinampPlaylist2Mgr =
+ {0x39c806ec,0xeb0a,0x4f6e,{0xb4,0x0d,0xc4,0x1d,0x92,0x28,0x1b,0x5e}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPL2Criteria =
+ {0xd593724f,0xd0dc,0x431b,{0xa3,0x95,0x82,0x80,0xd5,0xac,0xec,0xcb}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPL2Timestamp =
+ {0xfe4c8bff,0x961f,0x42c2,{0xba,0xd8,0x80,0x8f,0x76,0xed,0xde,0x15}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPL2FindData =
+ {0x870a8c49,0x8935,0x430b,{0x9f,0xfe,0x17,0x5c,0x47,0xfb,0x6b,0x0b}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPL2Result =
+ {0x1cb70589,0x414c,0x40a6,{0xb1,0x08,0xa5,0xf0,0x2a,0xe4,0xcb,0x62}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPL2ResultList =
+ {0x45f626aa,0xa0b4,0x4f3c,{0xa1,0x73,0x64,0xa7,0xaa,0xc4,0x46,0x70}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbEra =
+ {0x684aa29d,0x14f5,0x4dd9,{0x94,0x9f,0xc2,0xae,0x96,0xe7,0xf9,0xac}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPLGeneratorList =
+ {0xd7fbfb00,0x25ec,0x41f6,{0xb6,0x4e,0xfa,0xb7,0x66,0x8d,0x5b,0x75}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPLGenerator =
+ {0x7052a035,0x2aee,0x4d5d,{0xbe,0x82,0x6b,0x12,0x43,0x7b,0xfc,0xba}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPLGenCriteria =
+ {0xb1f7d50c,0xa3fe,0x4bbb,{0x93,0x89,0x25,0xb7,0x8d,0x70,0xb5,0x93}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPLGenLimit =
+ {0x783dcf23,0xfde3,0x44e1,{0xad,0x01,0xc8,0x10,0x05,0x96,0xa8,0x1b}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPLGenCriteriaList =
+ {0x7f403f21,0x383b,0x4faf,{0x94,0xc7,0xe2,0xc2,0xf4,0x87,0xf9,0x26}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPLGenLimitList =
+ {0xf78ae80a,0x3ef5,0x498e,{0xbf,0x16,0x76,0x96,0xf7,0xd3,0x1f,0xed}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPLGenRank =
+ {0xbf1caa94,0x1d1c,0x4ae7,{0xb9,0x4c,0x10,0xfd,0xc0,0x5f,0x49,0x3d}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPLInfo =
+ {0x654e1149,0x060b,0x4fd1,{0xaf,0x4b,0x07,0xe1,0xd2,0xa8,0x3a,0xe0}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPLDataList =
+ {0x0f81de5a,0x2181,0x4b4a,{0xaf,0x32,0xde,0x4f,0x21,0x40,0x9b,0xee}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPLDataListItem =
+ {0x56fce24a,0x250a,0x4399,{0xbb,0x0c,0xf8,0xc5,0xa5,0x16,0x9f,0x86}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPLIDList =
+ {0x671d0917,0x5346,0x4a5e,{0x81,0x00,0x0e,0x75,0xc4,0x23,0xfd,0xab}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbArtistTypeList =
+ {0xc367baf6,0x6587,0x45a8,{0xb7,0x74,0xaa,0x20,0xd6,0xaa,0x5c,0xe4}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbOriginsList =
+ {0x642e727f,0x4ba8,0x4514,{0x97,0x2b,0xd1,0xd5,0x54,0xd6,0x2d,0x2f}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbGenreDisplayList =
+ {0x09e3539f,0xd0cc,0x4913,{0xa0,0x25,0x10,0x43,0x23,0xc2,0xca,0xab}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbEraDisplayList =
+ {0xf613382c,0x27f6,0x42ca,{0x9b,0x9b,0x1f,0x18,0x90,0xc1,0x9c,0x03}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPopularityRangeList =
+ {0x52380d21,0x992d,0x416f,{0x97,0xd2,0x3a,0x2d,0xd4,0x6a,0xd7,0xea}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbMLDBManager =
+ {0xd374ceca,0x3e86,0x4ab4,{0x87,0xa9,0x3f,0xf7,0xe0,0x3e,0x3c,0xad}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPopularityRange =
+ {0xb0204aad,0xf796,0x4221,{0xac,0xf3,0xc2,0x4f,0xce,0xe9,0x42,0x1a}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbPLMoreLikeThisCfg =
+ {0xb3f484a1,0xe3b4,0x4ad5,{0xa9,0xa9,0x52,0x59,0x2a,0x08,0xdb,0xd2}};
+
+#pragma pack(pop)
diff --git a/Src/gracenote/cddbuiwinamp.tlh b/Src/gracenote/cddbuiwinamp.tlh
new file mode 100644
index 00000000..219cfc89
--- /dev/null
+++ b/Src/gracenote/cddbuiwinamp.tlh
@@ -0,0 +1,268 @@
+// Created by Microsoft (R) C/C++ Compiler Version 15.00.30729.01 (1a958924).
+//
+// f:\sandbox\20131028_225933\winamp\release\cddbuiwinamp.tlh
+//
+// C++ source equivalent of Win32 type library ../gracenote/CDDBUIWinamp.dll
+// compiler-generated file created 10/28/13 at 23:18:29 - DO NOT EDIT!
+
+#pragma once
+#pragma pack(push, 8)
+
+#include <comdef.h>
+
+//
+// Forward references and typedefs
+//
+
+struct __declspec(uuid("49f3ccb6-3ba4-4b64-9451-ccf4d42581b1"))
+/* LIBID */ __CDDBUICONTROLLibNSWinamp;
+struct __declspec(uuid("92892c0b-8da6-49df-b484-d5571c7e48cd"))
+/* dual interface */ ICddbUI;
+struct __declspec(uuid("03396e62-5abb-4e75-af96-5cc6171354ba"))
+/* dual interface */ ICddbInfoWindow2;
+struct __declspec(uuid("c50aaf00-4954-405f-abf8-1ff32be762bb"))
+/* dual interface */ ICddbUIOptions2;
+struct __declspec(uuid("038841ae-24d2-4a27-a69d-21a58e4b1077"))
+/* dual interface */ ICddbUI2;
+struct /* coclass */ CddbNSWinampUI;
+struct /* coclass */ CddbInfoWindow2;
+struct /* coclass */ CddbUIOptions2;
+struct /* coclass */ CddbUI2;
+
+//
+// Smart pointer typedef declarations
+//
+
+_COM_SMARTPTR_TYPEDEF(ICddbUI, __uuidof(ICddbUI));
+_COM_SMARTPTR_TYPEDEF(ICddbInfoWindow2, __uuidof(ICddbInfoWindow2));
+_COM_SMARTPTR_TYPEDEF(ICddbUIOptions2, __uuidof(ICddbUIOptions2));
+_COM_SMARTPTR_TYPEDEF(ICddbUI2, __uuidof(ICddbUI2));
+
+//
+// Type library items
+//
+
+struct __declspec(uuid("92892c0b-8da6-49df-b484-d5571c7e48cd"))
+ICddbUI : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall Initialize (
+ /*[in]*/ IUnknown * Control,
+ /*[in]*/ long hWND,
+ /*[in]*/ long Flags ) = 0;
+ virtual HRESULT __stdcall SetParent (
+ /*[in]*/ long hWND ) = 0;
+ virtual HRESULT __stdcall Shutdown ( ) = 0;
+ virtual HRESULT __stdcall InvokeInfoBrowser (
+ /*[in]*/ IUnknown * Disc,
+ /*[in]*/ IUnknown * URL,
+ /*[in]*/ long Flags,
+ /*[in,out]*/ long * pHWND ) = 0;
+ virtual HRESULT __stdcall InvokeSubmitDisc (
+ /*[in]*/ BSTR MediaToc,
+ /*[in]*/ long MciDeviceId,
+ /*[in]*/ long Flags,
+ /*[in,out]*/ long * pHWND,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall DisplayDiscInfo (
+ /*[in]*/ IUnknown * Disc,
+ /*[in]*/ long Flags,
+ /*[in,out]*/ long * pHWND,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall InvokeDiscInfo (
+ /*[in]*/ BSTR MediaToc,
+ /*[in]*/ BSTR MediaId,
+ /*[in]*/ BSTR MuiId,
+ /*[in]*/ long MciDeviceId,
+ /*[in]*/ long Flags,
+ /*[in,out]*/ long * pHWND,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall InvokeNoMatchDialog (
+ /*[in]*/ long Flags,
+ /*[in,out]*/ long * pHWND,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall InvokeFuzzyMatchDialog (
+ /*[in]*/ IUnknown * Discs,
+ /*[in]*/ BSTR Toc,
+ /*[in]*/ long Flags,
+ /*[in,out]*/ long * pHWND,
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall InvokeOptionsDialog (
+ /*[in]*/ IUnknown * Options,
+ /*[in]*/ long Flags,
+ /*[in,out]*/ long * pHWND,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall InvokeUserRegDialog (
+ /*[in]*/ IUnknown * UserInfo,
+ /*[in]*/ long Flags,
+ /*[in,out]*/ long * pHWND,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall InvokePopupMenu (
+ /*[in]*/ long Flags,
+ /*[in]*/ IUnknown * URLList,
+ /*[in]*/ IUnknown * DiscURLList,
+ /*[in,out]*/ long * pHWND ) = 0;
+ virtual HRESULT __stdcall InvokeAboutCddbDialog (
+ /*[in]*/ long Flags,
+ /*[in,out]*/ long * pHWND ) = 0;
+ virtual HRESULT __stdcall DrawLogo (
+ /*[in]*/ void * DrawInfo ) = 0;
+ virtual HRESULT __stdcall GetUrlFromMenu (
+ /*[in]*/ long MenuId,
+ /*[out,retval]*/ IUnknown * * pVal ) = 0;
+ virtual HRESULT __stdcall StartConnectDlg (
+ /*[in]*/ long Flags,
+ /*[in,out]*/ long * hWND ) = 0;
+ virtual HRESULT __stdcall StopConnectDlg (
+ /*[in]*/ long Flags ) = 0;
+ virtual HRESULT __stdcall SetUILanguage (
+ /*[in]*/ BSTR Id,
+ /*[in]*/ BSTR DllName,
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall GetUIResourceInstance (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall SetInfoDisc (
+ /*[in]*/ IUnknown * Disc ) = 0;
+ virtual HRESULT __stdcall GetUIObject (
+ /*[in]*/ long Id,
+ /*[out,retval]*/ void * * pVal ) = 0;
+};
+
+struct __declspec(uuid("03396e62-5abb-4e75-af96-5cc6171354ba"))
+ICddbInfoWindow2 : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall Init (
+ /*[in]*/ long hWND,
+ /*[in]*/ long Left,
+ /*[in]*/ long Top,
+ /*[in]*/ long Right,
+ /*[in]*/ long Bottom ) = 0;
+ virtual HRESULT __stdcall SetRawURL (
+ /*[in]*/ BSTR RawURL ) = 0;
+ virtual HRESULT __stdcall GetHwnd (
+ /*[out]*/ long * pHWND ) = 0;
+ virtual HRESULT __stdcall SetDisc (
+ /*[in]*/ IUnknown * Disc ) = 0;
+ virtual HRESULT __stdcall SetURL (
+ /*[in]*/ IUnknown * URL ) = 0;
+ virtual HRESULT __stdcall Refresh ( ) = 0;
+ virtual HRESULT __stdcall Shutdown ( ) = 0;
+ virtual HRESULT __stdcall SetAdPosition (
+ /*[in]*/ BSTR Position ) = 0;
+};
+
+struct __declspec(uuid("c50aaf00-4954-405f-abf8-1ff32be762bb"))
+ICddbUIOptions2 : IDispatch
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall GetCurrent (
+ /*[in]*/ long Flags ) = 0;
+ virtual HRESULT __stdcall SetCurrent (
+ /*[in]*/ long Flags ) = 0;
+ virtual HRESULT __stdcall get_ParentHWND (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_ParentHWND (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Left (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Left (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Top (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Top (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Right (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Right (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Bottom (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Bottom (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_ResourceHINSTANCE (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_ResourceHINSTANCE (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_ProgressResourceID (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_ProgressResourceID (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_StaticResourceID (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_StaticResourceID (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_Frames (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_Frames (
+ /*[in]*/ long pVal ) = 0;
+ virtual HRESULT __stdcall get_BonusResourceID (
+ /*[out,retval]*/ long * pVal ) = 0;
+ virtual HRESULT __stdcall put_BonusResourceID (
+ /*[in]*/ long pVal ) = 0;
+};
+
+struct __declspec(uuid("038841ae-24d2-4a27-a69d-21a58e4b1077"))
+ICddbUI2 : ICddbUI
+{
+ //
+ // Raw methods provided by interface
+ //
+
+ virtual HRESULT __stdcall InvokeFuzzyMatchDialog2 (
+ /*[in]*/ IUnknown * Discs,
+ /*[in,out]*/ long * Flags,
+ /*[in,out]*/ long * pHWND,
+ /*[out]*/ long * Selection ) = 0;
+};
+
+struct __declspec(uuid("75ae99c2-fe58-4aa4-8135-11d794adfd48"))
+CddbNSWinampUI;
+ // [ default ] interface ICddbUI
+
+struct __declspec(uuid("4274782f-e631-487b-bc58-34f36a2b9203"))
+CddbInfoWindow2;
+ // [ default ] interface ICddbInfoWindow2
+
+struct __declspec(uuid("a68d109d-ab8e-4476-8ba8-bce0879c4f8f"))
+CddbUIOptions2;
+ // [ default ] interface ICddbUIOptions2
+
+struct __declspec(uuid("4d60fc87-14b0-48b3-93c2-5967b0fb6f96"))
+CddbUI2;
+ // [ default ] interface ICddbUI2
+ // interface ICddbUI
+
+//
+// Named GUID constants initializations
+//
+
+extern "C" const GUID __declspec(selectany) LIBID_CDDBUICONTROLLibNSWinamp =
+ {0x49f3ccb6,0x3ba4,0x4b64,{0x94,0x51,0xcc,0xf4,0xd4,0x25,0x81,0xb1}};
+extern "C" const GUID __declspec(selectany) IID_ICddbUI =
+ {0x92892c0b,0x8da6,0x49df,{0xb4,0x84,0xd5,0x57,0x1c,0x7e,0x48,0xcd}};
+extern "C" const GUID __declspec(selectany) IID_ICddbInfoWindow2 =
+ {0x03396e62,0x5abb,0x4e75,{0xaf,0x96,0x5c,0xc6,0x17,0x13,0x54,0xba}};
+extern "C" const GUID __declspec(selectany) IID_ICddbUIOptions2 =
+ {0xc50aaf00,0x4954,0x405f,{0xab,0xf8,0x1f,0xf3,0x2b,0xe7,0x62,0xbb}};
+extern "C" const GUID __declspec(selectany) IID_ICddbUI2 =
+ {0x038841ae,0x24d2,0x4a27,{0xa6,0x9d,0x21,0xa5,0x8e,0x4b,0x10,0x77}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbNSWinampUI =
+ {0x75ae99c2,0xfe58,0x4aa4,{0x81,0x35,0x11,0xd7,0x94,0xad,0xfd,0x48}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbInfoWindow2 =
+ {0x4274782f,0xe631,0x487b,{0xbc,0x58,0x34,0xf3,0x6a,0x2b,0x92,0x03}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbUIOptions2 =
+ {0xa68d109d,0xab8e,0x4476,{0x8b,0xa8,0xbc,0xe0,0x87,0x9c,0x4f,0x8f}};
+extern "C" const GUID __declspec(selectany) CLSID_CddbUI2 =
+ {0x4d60fc87,0x14b0,0x48b3,{0x93,0xc2,0x59,0x67,0xb0,0xfb,0x6f,0x96}};
+
+#pragma pack(pop)
diff --git a/Src/gracenote/gracenote.h b/Src/gracenote/gracenote.h
new file mode 100644
index 00000000..c4f05b36
--- /dev/null
+++ b/Src/gracenote/gracenote.h
@@ -0,0 +1,24 @@
+#ifndef NULLSOFT_GRACENOTE_H
+#define NULLSOFT_GRACENOTE_H
+
+//#pragma warning(disable: 4278)
+
+#ifdef DeleteFile
+#undef DeleteFile
+#endif
+
+#ifndef IGNORE_API_GRACENOTE
+#include "cddbcontrolwinamp.tlh"
+#include "cddbmusicidwinamp.tlh"
+#include "cddbplaylist2winamp.tlh"
+#include "cddbuiwinamp.tlh"
+#endif
+
+/*#import "../gracenote/CDDBUIWinamp.dll" no_namespace, named_guids, raw_interfaces_only
+#import "../gracenote/CDDBControlWinamp.dll" no_namespace, named_guids, raw_interfaces_only
+#import "../gracenote/CddbPlaylist2Winamp.dll" no_namespace, named_guids, raw_interfaces_only
+#import "../gracenote/CddbMusicIDWinamp.dll" no_namespace, named_guids, raw_interfaces_only*/
+//#import "../gracenote/CddbLinkWinamp.dll" no_namespace, named_guids, raw_interfaces_only
+//#pragma warning(default: 4278)
+
+#endif \ No newline at end of file
diff --git a/Src/gracenote/gracenote.rc b/Src/gracenote/gracenote.rc
new file mode 100644
index 00000000..094de932
--- /dev/null
+++ b/Src/gracenote/gracenote.rc
@@ -0,0 +1,114 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 5,6,4,0
+ PRODUCTVERSION 5,6,4,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904e4"
+ BEGIN
+ VALUE "CompanyName", "Nullsoft, Inc."
+ VALUE "FileDescription", "Winamp 5.x System Component"
+ VALUE "FileVersion", "5, 6, 4, 0"
+ VALUE "InternalName", "gracenote.w5s"
+ VALUE "LegalCopyright", "Copyright © 2005-2013 Nullsoft, Inc."
+ VALUE "OriginalFilename", "gracenote.w5s"
+ VALUE "ProductName", "Winamp Gracenote Support Service"
+ VALUE "ProductVersion", "5, 6, 4, 0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1252
+ END
+END
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.K.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+#endif // English (U.K.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/Src/gracenote/gracenote.sln b/Src/gracenote/gracenote.sln
new file mode 100644
index 00000000..1d47c886
--- /dev/null
+++ b/Src/gracenote/gracenote.sln
@@ -0,0 +1,30 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29613.14
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gracenote", "gracenote.vcxproj", "{7EF5B87B-0298-492A-B3BB-FAA8102A2274}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {7EF5B87B-0298-492A-B3BB-FAA8102A2274}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7EF5B87B-0298-492A-B3BB-FAA8102A2274}.Debug|Win32.Build.0 = Debug|Win32
+ {7EF5B87B-0298-492A-B3BB-FAA8102A2274}.Debug|x64.ActiveCfg = Debug|x64
+ {7EF5B87B-0298-492A-B3BB-FAA8102A2274}.Debug|x64.Build.0 = Debug|x64
+ {7EF5B87B-0298-492A-B3BB-FAA8102A2274}.Release|Win32.ActiveCfg = Release|Win32
+ {7EF5B87B-0298-492A-B3BB-FAA8102A2274}.Release|Win32.Build.0 = Release|Win32
+ {7EF5B87B-0298-492A-B3BB-FAA8102A2274}.Release|x64.ActiveCfg = Release|x64
+ {7EF5B87B-0298-492A-B3BB-FAA8102A2274}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {6E4A6169-962E-436A-A498-F1A575FD4A3D}
+ EndGlobalSection
+EndGlobal
diff --git a/Src/gracenote/gracenote.vcxproj b/Src/gracenote/gracenote.vcxproj
new file mode 100644
index 00000000..af2d048a
--- /dev/null
+++ b/Src/gracenote/gracenote.vcxproj
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{7EF5B87B-0298-492A-B3BB-FAA8102A2274}</ProjectGuid>
+ <RootNamespace>gracenote</RootNamespace>
+ <WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v142</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v142</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v142</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v142</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
+ <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
+ <TargetExt>.w5s</TargetExt>
+ <IncludePath>$(IncludePath)</IncludePath>
+ <LibraryPath>$(LibraryPath)</LibraryPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
+ <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
+ <TargetExt>.w5s</TargetExt>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
+ <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
+ <TargetExt>.w5s</TargetExt>
+ <IncludePath>$(IncludePath)</IncludePath>
+ <LibraryPath>$(LibraryPath)</LibraryPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
+ <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
+ <TargetExt>.w5s</TargetExt>
+ </PropertyGroup>
+ <PropertyGroup Label="Vcpkg">
+ <VcpkgEnableManifest>false</VcpkgEnableManifest>
+ </PropertyGroup>
+ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <VcpkgInstalledDir>
+ </VcpkgInstalledDir>
+ <VcpkgUseStatic>false</VcpkgUseStatic>
+ <VcpkgConfiguration>Debug</VcpkgConfiguration>
+ <VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
+ </PropertyGroup>
+ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <VcpkgInstalledDir>
+ </VcpkgInstalledDir>
+ <VcpkgUseStatic>false</VcpkgUseStatic>
+ <VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
+ </PropertyGroup>
+ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <VcpkgInstalledDir>
+ </VcpkgInstalledDir>
+ <VcpkgUseStatic>false</VcpkgUseStatic>
+ <VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
+ <VcpkgConfiguration>Debug</VcpkgConfiguration>
+ </PropertyGroup>
+ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <VcpkgInstalledDir>
+ </VcpkgInstalledDir>
+ <VcpkgUseStatic>false</VcpkgUseStatic>
+ <VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;GRACENOTE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <ImportLibrary>$(ProjectDir)x86_Debug\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ </Link>
+ <PostBuildEvent>
+ <Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System\
+xcopy /Y /D $(ProjectDir)Cddbx1.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)Cddbx2.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)Cddbx3.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)Cddbx4.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)Cddbx5.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbWOManagerWinamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CDDBUIWinamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbPlaylist2Winamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbMusicIDWinamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbMusicIDUIWinamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbLinkWinamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CDDBControlWinamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+</Command>
+ <Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System\'</Message>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;_USRDLL;GRACENOTE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <ImportLibrary>$(ProjectDir)x64_Debug\$(ProjectName).lib</ImportLibrary>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ </Link>
+ <PostBuildEvent>
+ <Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System\
+xcopy /Y /D $(ProjectDir)Cddbx1.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)Cddbx2.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)Cddbx3.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)Cddbx4.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)Cddbx5.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbWOManagerWinamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CDDBUIWinamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbPlaylist2Winamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbMusicIDWinamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbMusicIDUIWinamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbLinkWinamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CDDBControlWinamp.dll ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+</Command>
+ <Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System\'</Message>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MinSpace</Optimization>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <AdditionalIncludeDirectories>../Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;GRACENOTE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <DelayLoadDLLs>ole32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <ImportLibrary>$(ProjectDir)x86_Release\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ <Message>
+ </Message>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>MinSpace</Optimization>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <AdditionalIncludeDirectories>../Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;_USRDLL;GRACENOTE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <DelayLoadDLLs>ole32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <ImportLibrary>$(ProjectDir)x64_Release\$(ProjectName).lib</ImportLibrary>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ </Link>
+ <PostBuildEvent>
+ <Command>xcopy /Y /D $(OutDir)*.w5s ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\System\
+xcopy /Y /D $(ProjectDir)Cddbx1.dll ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)Cddbx2.dll ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)Cddbx3.dll ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)Cddbx4.dll ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)Cddbx5.dll ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbWOManagerWinamp.dll ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CDDBUIWinamp.dll ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbPlaylist2Winamp.dll ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbMusicIDWinamp.dll ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbMusicIDUIWinamp.dll ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CddbLinkWinamp.dll ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+xcopy /Y /D $(ProjectDir)CDDBControlWinamp.dll ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\plugins\Gracenote\
+</Command>
+ <Message>Post build event: 'xcopy /Y /D $(OutDir)*.w5s ..\..\..\Winamp_$(PlatformShortName)_$(Configuration)\System\'</Message>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClInclude Include="api.h" />
+ <ClInclude Include="api_gracenote.h" />
+ <ClInclude Include="gracenote.h" />
+ <ClInclude Include="GracenoteApi.h" />
+ <ClInclude Include="GracenoteFactory.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="w5s.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="api_gracenote.cpp" />
+ <ClCompile Include="GracenoteApi.cpp" />
+ <ClCompile Include="GracenoteFactory.cpp" />
+ <ClCompile Include="w5s.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="gracenote.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Wasabi\Wasabi.vcxproj">
+ <Project>{3e0bfa8a-b86a-42e9-a33f-ec294f823f7f}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/Src/gracenote/gracenote.vcxproj.filters b/Src/gracenote/gracenote.vcxproj.filters
new file mode 100644
index 00000000..627ebd36
--- /dev/null
+++ b/Src/gracenote/gracenote.vcxproj.filters
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="GracenoteApi.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="api_gracenote.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="w5s.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="GracenoteFactory.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="api.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="api_gracenote.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="gracenote.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="GracenoteApi.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="GracenoteFactory.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="resource.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="w5s.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{a4cb6f02-fd13-416b-a55e-2b940de4df0a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Ressource Files">
+ <UniqueIdentifier>{8b36e9e3-e90b-46a0-8833-0e2e16fc937a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{1bd96244-031a-47d3-87a2-5a97f1aaca68}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="gracenote.rc">
+ <Filter>Ressource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/Src/gracenote/resource.h b/Src/gracenote/resource.h
new file mode 100644
index 00000000..bb27887c
--- /dev/null
+++ b/Src/gracenote/resource.h
@@ -0,0 +1,14 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by gracenote.rc
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 101
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1001
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/Src/gracenote/w5s.cpp b/Src/gracenote/w5s.cpp
new file mode 100644
index 00000000..f08e5077
--- /dev/null
+++ b/Src/gracenote/w5s.cpp
@@ -0,0 +1,74 @@
+#include "api.h"
+#include "w5s.h"
+#include "GracenoteFactory.h"
+#include <bfc/platform/export.h>
+#include <api/service/waservicefactory.h>
+#include "GracenoteApi.h"
+
+template <class api_T>
+void ServiceBuild(api_T *&api_t, GUID factoryGUID_t)
+{
+ if (WASABI_API_SVC)
+ {
+ waServiceFactory *factory = WASABI_API_SVC->service_getServiceByGuid(factoryGUID_t);
+ if (factory)
+ api_t = reinterpret_cast<api_T *>( factory->getInterface() );
+ }
+}
+
+template <class api_T>
+void ServiceRelease(api_T *api_t, GUID factoryGUID_t)
+{
+ if (WASABI_API_SVC && api_t)
+ {
+ waServiceFactory *factory = WASABI_API_SVC->service_getServiceByGuid(factoryGUID_t);
+ if (factory)
+ factory->releaseInterface(api_t);
+ }
+ api_t = NULL;
+}
+
+api_application *WASABI_API_APP = 0;
+api_service *WASABI_API_SVC = 0;
+api_config *AGAVE_API_CONFIG=0;
+api_language *WASABI_API_LNG = 0;
+
+GracenoteFactory gracenoteFactory;
+
+void WA5_Gracenote::RegisterServices(api_service *service)
+{
+ WASABI_API_SVC = service;
+
+ ServiceBuild(AGAVE_API_CONFIG, AgaveConfigGUID);
+ ServiceBuild(WASABI_API_APP, applicationApiServiceGuid);
+ ServiceBuild(WASABI_API_LNG, languageApiGUID);
+ WASABI_API_SVC->service_register(&gracenoteFactory);
+}
+
+int WA5_Gracenote::RegisterServicesSafeModeOk()
+{
+ return 1;
+}
+
+void WA5_Gracenote::DeregisterServices(api_service *service)
+{
+ gracenoteApi.Close();
+ WASABI_API_SVC->service_deregister(&gracenoteFactory);
+ ServiceRelease(AGAVE_API_CONFIG, AgaveConfigGUID);
+ ServiceRelease(WASABI_API_APP, applicationApiServiceGuid);
+ ServiceRelease(WASABI_API_LNG, languageApiGUID);
+}
+
+static WA5_Gracenote wa5_gracenote;
+extern "C" DLLEXPORT ifc_wa5component *GetWinamp5SystemComponent()
+{
+ return &wa5_gracenote;
+}
+
+#define CBCLASS WA5_Gracenote
+START_DISPATCH;
+VCB(API_WA5COMPONENT_REGISTERSERVICES, RegisterServices)
+ CB(15, RegisterServicesSafeModeOk)
+VCB(API_WA5COMPONENT_DEREEGISTERSERVICES, DeregisterServices)
+END_DISPATCH;
+#undef CBCLASS \ No newline at end of file
diff --git a/Src/gracenote/w5s.h b/Src/gracenote/w5s.h
new file mode 100644
index 00000000..66500d18
--- /dev/null
+++ b/Src/gracenote/w5s.h
@@ -0,0 +1,16 @@
+#ifndef __WASABI_WA5_GRACENOTE_H_
+#define __WASABI_WA5_GRACENOTE_H_
+
+#include "../Agave/Component/ifc_wa5component.h"
+
+class WA5_Gracenote : public ifc_wa5component
+{
+public:
+ void RegisterServices(api_service *service);
+ int RegisterServicesSafeModeOk();
+ void DeregisterServices(api_service *service);
+protected:
+ RECVS_DISPATCH;
+};
+
+#endif \ No newline at end of file