Total Members Voted: 27
0 Members and 1 Guest are viewing this topic.
AService: IAIMPServiceMusicLibrary;... AService.GetStorageByID(MakeString(AIMPML_LOCALDATASTORAGE_ID), IAIMPMLDataStorage2, FDataStorage);... if Supports(FDataStorage, IAIMPMLDataProvider, ADataProvider) then begin if Succeeded(ADataProvider.GetData(BuildFieldList, BuildFilter, AData)) then begin if Supports(AData, IAIMPMLDataProviderSelection, ASelection) then repeat SetString(AValue, ASelection.GetValueAsString(0, ALength), ALength); ... until not ASelection.NextRow; end; end; function <>.BuildFieldList: IAIMPObjectList; begin CoreCreateObject(IAIMPObjectList, Result); Result.Add(MakeString('FileName')); Result.Add(MakeString('Title')); end; function <>.BuildFilter: IAIMPMLDataFilter; var AFieldFilter: IAIMPMLDataFieldFilter; begin CheckResult(FDataStorage.CreateObject(IAIMPMLDataFilter, Result)); CheckResult(Result.SetValueAsInt32(AIMPML_FILTERGROUP_OPERATION, AIMPML_FILTERGROUP_OPERATION_AND)); CheckResult(Result.Add(MakeString('Artist'), FArtist, Null, AIMPML_FIELDFILTER_OPERATION_EQUALS, AFieldFilter)); CheckResult(Result.Add(MakeString('Album'), FAlbum, Null, AIMPML_FIELDFILTER_OPERATION_EQUALS, AFieldFilter)); end;
Does IAIMPServiceMusicLibrary::GetStorageByID need to be called from the main thread?
Presumably there's no harm in getting that IAIMPMLDataStorage2 object when the plugin is initialized and holding on to it?
static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_ID = _T("ID"); // Int32static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_ADDDED = _T("Added"); // DateTime (Float);static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_ALBUM = _T("Album"); // String, multiple valuesstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_ALBUMARTIST = _T("AlbumArtist"); // String, multiple valuesstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_ARTIST = _T("Artist"); // String, multiple valuesstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_BITDEPTH = _T("BitDepth"); // Int32;static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_BITRATE = _T("Bitrate"); // Int32static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_BPM = _T("BPM"); // Int32;static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_CHANNELS = _T("Channels"); // Int32;static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_COMMENT = _T("Comment"); // String (Memo)static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_COMPOSER = _T("Composer"); // String, multiple valuesstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_CONDUCTOR = _T("Conductor"); // Stringstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_COPYRIGHTS = _T("Copyrights"); // Stringstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_DISKNUMBER = _T("DiskNumber"); // Stringstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_DURATION = _T("Duration"); // = AIMPML_RESERVED_FIELD_DURATION; // Duration (Float)static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_FILEFORMAT = _T("FileFormat"); // Stringstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_FILENAME = _T("FileName"); // = AIMPML_RESERVED_FIELD_FILENAME; // FileName (String);static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_FILESIZE =_T("FileSize"); // = AIMPML_RESERVED_FIELD_FILESIZE; // FileSize (Int64);static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_GENRE = _T("Genre"); // String, multiple valuesstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_LABELS = _T("Labels"); // String, multiple valuesstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_LASTMODIFICATION = _T("LastModification"); // DateTime (Float)static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_LASTPLAYBACK = _T("LastPlayback"); // DateTime (Float);static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_LYRICIST = _T("Lyricist"); // String, multiple valuesstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_MOOD = _T("Mood"); // String, multiple valuesstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_PLAYBACKCOUNT = _T("PlaybackCount"); // Int32static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_PUBLISHER = _T("Publisher"); // String, multiple valuesstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_RATING = _T("Rating"); // Int32static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_SAMPLERATE = _T("SampleRate"); // Int32static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_TITLE = _T("Title"); // Stringstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_TRACKNUMBER = _T("TrackNumber"); // Stringstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_URL = _T("URL"); // Stringstatic const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_USERMARK = _T("UserMark"); // = AIMPML_RESERVED_FIELD_USERMARK;static const WCHAR* AIMPML_LOCALDATASTORAGE_FIELD_YEAR = _T("Year"); // String
m_albumArt->Get(fileUriObj, artistObj, albumObj, AIMP_SERVICE_ALBUMART_FLAGS_ORIGINAL | AIMP_SERVICE_ALBUMART_FLAGS_WAITFOR, AIMPServiceAlbumArtReceiveProc, &info, &taskId)