0 Members and 1 Guest are viewing this topic.
Пару раз сталкивался с такой проблемой при попытке воспроизведения "битого" файла наступает висяк - AIMP выдает окошко (точно не помню) "error code 14, unsupported file format" - проигрувание прерывается и пока не нажмешь ok,
И еще один вопрос, в MuzCat есть возможность редактировать треки, добавлять изображения к файлам - возможно ли добавить возможность оповещать AIMP о таких изменениях?
Необходима возможность обновлять данные для конкретного файла? (Не вопрос, добавлю, если нужна) В данный момент вы можете вызвать лишь рескан всего плейлиста.
Напишу здесь...zldoНадо бы реализовать в музкате автоматический запуск AIMP при начале воспроизведения и что это за окно muzcat_to_aimp_helper у плагина (для чего оно)?
Может все-таки стоит учитывать данные передаваемые при добавлении файлов в список воспроизведения (AIMPClassic.AIMP_PLS_AddFiles)? Просто при активной работе со списком состоящим из 15-20 тысяч файлов тормоза просто жуткие (для людей с одноядерным процессором это наверное вообще жуть)
AIMP_PLS_Find - не нужен, в принципе-то, легко можно обойтись связкой AIMP_PLS_Count + AIMP_PLS_Info.
AIMP_PLS_ID_PlayingRePlay - можно обойтись связкой AIMP_PLS_ID_ActiveSet + AIMP_PLS_PlayFileAFailIfNotExists - в последней, если флаг стоит в False и файла такого в активном плейлисте нет - файл будет добавлен и начнется проигрывание.
AIMP_PLS_ID_PlayingSetTrackIndex - можно тоже обойтись, но слишком коряво получится =), поэтому такую добавлю.
Согласен, тогда еще один вопрос. Как долго живет PLS_ID: HPLS, есть ли гарантия того, что это значение не поменяется во время жизни списка (допустим при изменении положения закладки списка воспроизведения)
Согласен, так и пробовал делать, однако работоспособность этой связки зависит слишком от многого, например запускалось ли воспроизведение списка до этого, всех ньюансов не скажу, но работать
Столько же, сколько живет сам плейлист.можно тогда попробовать через IAIMP2Player function PlayTrack(ID: HPLS; ATrackIndex: Integer): Boolean; stdcall;
AIMP_FILE_RATING_CHANGED = 15;AIMP_FILE_TAG_CHANGED = 16;// for File Info CallBack Types (AIMP_FILE_xxxxx_CHANGED) TAIMPFileInfoChanged = procedure (User: DWORD; CallBackType: DWORD; FileName: PWideChar); stdcall;
wc.cbSize := SizeOf(wc); wc.style := cs_hredraw or cs_vredraw; wc.lpfnWndProc := @WindowProc; wc.cbClsExtra := 0; wc.cbWndExtra := 0; wc.hInstance := HInstance; wc.hIcon := LoadIcon(0,idi_application); wc.hCursor := LoadCursor(0, IDC_ARROW); wc.hbrBackground := 0; wc.lpszMenuName := nil; wc.cbSize:=sizeof(wc); wc.lpszClassName := AimpToMCHelperWNDClassName; if RegisterClassEx(wc) = 0 then MessageBox(0, PCHAR(SysErrorToStr(GetLastError)), '', 0);
AIMtoMCPlugin.PlaylistManager.EntryPropertyGetValue(AIMtoMCPlugin.PlaylistManager.StorageActiveGet, AIMP_PLAYLIST_STORAGE_PROPERTY_PLAYINGINDEX, @x, SizeOf(x));
AIMtoMCPlugin.PlaylistManager.StorageBeginUpdate(AIMtoMCPlugin.mcpls);AIMtoMCPlugin.PlaylistManager.StorageAddEntries(AIMtoMCPlugin.mcpls, TAIMPAddonsPlaylistStrings(wparam));AIMtoMCPlugin.PlaylistManager.StorageEndUpdate(AIMtoMCPlugin.mcpls);
(Напишу зачем это нужно - допустим польхователь отсортировал список в моей прграмме, следовательно необходимо привести состояние списка проигрывателя в то же состояние, а индекс того файла который проигрывается естественно поменялся). Если ТОТ СПИСОК с которым я работал до описаных выше действий ВОСПРОИЗВОДИЛСЯ, то все OK если же до этого воспризводился другой список, то тут начинаются всякие чудеса.Еще один момент - в моей программе не хранится индекс воспризводимого файла, а при двойном клике выполняется нечно похожее наPlay(List, Idx), что в конечном итоге сводится к трем пунктам что я описал, так как 3 пункт не всегда работает верно, то и получается что этот самый Idx теряется Одним словом все упирается в УСТАНОВКУ ИНДЕКСА ВОСПРОИЗВОДИМОГО ФАЙЛА В ПРОИЗВОЛЬНОМ СПИСКЕ ВОСПРОИЗВЕДЕНИЯ вне зависимости от его состояния, и состояния проигрывания. На данный момент это например нельзя сделать для списка который ни разу не воспроизводился.
PlayingIndex - это всего лишь визуальная часть. К примеру, если проигрываемый файл будет удален, то PlayingIndex станет = -1, а вот TrackIndex будет показывать на предыдущий файл.
AIMP_PLAYLIST_STORAGE_PROPERTY_PLAYINGINDEX = 54; // READONLY! ABuffer: Pointer to Integer, ABufferSize: SizeOf(Integer)
2) Формат просто Filename.cue:trackindex
3) Тут как бы две стороны медали, если плеер не будет действовать в разрез с настройками - будет тоже не очень правильно.
я думаю не совсем верно - получается что файл с cue невозможно прослушать в AIMP как таковой - он при любых обстоятельствах рассыпается на кучу виртуальных .
Мне визуальная часть как раз и нужна, просто в sdk AIMP_PLAYLIST_STORAGE_PROPERTY_PLAYINGINDEX помечен как readonly
А в StorageAddEntries(AIMtoMCPlugin.mcpls, AIMPAddonsPlaylistStrings) можно будет параметр третий добавить "разделять файлы на кучу виртуальных"?
Нашел еще один момент - при добавлении файлов в список игнорируются файлы с неподдерживаемыми/пустыми расширениями что также ведет к рассогласованию индексов.
Все же тема звучит как "Вопросы по SDK", а не "Просьба о новой функции", так что актуален пока единственный вопрос - будет ли новая SDK?