diff options
author | Suren A. Chilingaryan <csa@suren.me> | 2021-03-12 03:55:34 +0100 |
---|---|---|
committer | Suren A. Chilingaryan <csa@suren.me> | 2021-03-12 03:55:34 +0100 |
commit | 60bd665e74cfeeaf70882173a0dd56c883e2014a (patch) | |
tree | 8a0066bb9f0259becac5605641e8e1eed1ae0e89 /docs/patches/amarok.txt | |
download | rusxmms2-60bd665e74cfeeaf70882173a0dd56c883e2014a.tar.gz rusxmms2-60bd665e74cfeeaf70882173a0dd56c883e2014a.tar.bz2 rusxmms2-60bd665e74cfeeaf70882173a0dd56c883e2014a.tar.xz rusxmms2-60bd665e74cfeeaf70882173a0dd56c883e2014a.zip |
Added to git tree
Diffstat (limited to 'docs/patches/amarok.txt')
-rw-r--r-- | docs/patches/amarok.txt | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/docs/patches/amarok.txt b/docs/patches/amarok.txt new file mode 100644 index 0000000..e2f6b5d --- /dev/null +++ b/docs/patches/amarok.txt @@ -0,0 +1,27 @@ +Amarok (1.4.8) устроен примерно следующим образом. Если мы имеем дело с +локальными файлами, то все тэги получаются через Taglib (в функции +MetaBundle::readTags из metabundle.cpp). + +Однако, taglib (1.5 и раньше) не умеет за тагами по сети лазить. По-этому +smb, nfs и т.п. обрабатываются по другому. +1. Во-первых в томже metabundle.cpp есть: + MetaBundle::init( const KFileMetaInfo& info ) + который может принимать тэги в некой KDEшной структуру. Подозреваю, что + это связано с KIO. Впрочем, неважно для SMB файлов эта функция не запускается. +2. Реально для smb файлов тэги ловятся функцией slotEngineMetaData (из + enginecontroller.cpp). Вызывается данная функция по приходу сигнала + "metaData". + + Насколько я понял, данный сигнал посылают всякие enginы, которые проигрывают + музыку для амарок. Типа engine/yauap, engine/xine и т.п. Вот видать они + читают тэги (криво, поскольку не с линкованы с taglib или еще чем с RusXMMS + патчем). + +3. Может еще чего есть ;) + + +Вообщем, резюме. Патчить надо либо эти движки, либо, что мне (на первый взгляд) +кажется проще, надо подцепится к slotEngineMetaData. Трабла там только в том, +что приходит туда тэги уже в UTF-8, некоректно перекодированном. Поэтому, +сначала надо конвертуть UTF-8 обратно в Latin1, а уже потом натравливать +librcc. Впрочем, перекодировку UTF->Latin тоже можно сделать через librcc. |