summaryrefslogtreecommitdiffstats
path: root/docs/patches/amarok.txt
diff options
context:
space:
mode:
Diffstat (limited to 'docs/patches/amarok.txt')
-rw-r--r--docs/patches/amarok.txt27
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.