diff options
Diffstat (limited to 'Src/gracenote/api_gracenote.h')
-rw-r--r-- | Src/gracenote/api_gracenote.h | 92 |
1 files changed, 92 insertions, 0 deletions
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 |