Here's a section from another thread here on QQ that describes how the QQ Codec Logo mod works:
Although I converts all my discs to FLAC I still like to know what type of disc the album was originally sourced from (DVDA, BDA, Q8, etc). I decided I could add this info to the folder name so users only need to edit their album folder names for the Aeon Nox Silvo skin to 'see' the original codec and display the logo during play back:
Examples:
DVD Audio converted to FLAC:
DTS-CD converted to FLAC:
If you use any of the bold '
keywords' below in your album folder name the mod will do the work.
How does this work:
This mod will display logos by reading certain user defined text from the album folder name. Examples for Pink Floyd albums:
Atom Heart Mother (
Quad Q8)
Dark Side of the Moon (
SACD)
Wish You Were Here (
Quad BDA)
So no need to re-tag any music files, just add a ‘codec/format’ to the folder name. Valid Codecs are in the Rules section below and are user definable. You will need to rescan your Music Library in Kodi for it to see the any albums with changed folder names.
Users can modify the 'rules' I've defined and/or modify/add new logos to the QQ Logos folder (named QQcodec) in the skin folder:
The
Variables.xml file contains the rules for selecting the desired logo based on a user defined string (text) in the rule condition. This is just a simple xml text file that can be edited easily. (you must restart Kodi for any changes to be applied).
This is what the current variable definition is for 'QQCodecFromPathvar' is:
<variable name="QQCodecFromPathvar">
<value condition="String.Contains(Player.Folderpath,
DVDA UM)">QQcodec/upmix.png</value>
<value condition="String.Contains(Player.Folderpath,
SACD UM)">QQcodec/upmix.png</value>
<value condition="String.Contains(Player.Folderpath,
SACD)">QQcodec/SACD.png</value>
<value condition="String.Contains(Player.Folderpath,
DVDA)">QQcodec/mlp.png</value>
<value condition="String.Contains(Player.Folderpath,
DVD-A)">QQcodec/mlp.png</value>
<value condition="String.Contains(Player.Folderpath,
DTS 9624)">QQcodec/dts9624.png</value>
<value condition="String.Contains(Player.Folderpath,
DTS9624)">QQcodec/dts9624.png</value>
<value condition="String.Contains(Player.Folderpath,
ADVD)">QQcodec/DVDV.png</value>
<value condition="String.Contains(Player.Folderpath,
DVDV)">QQcodec/DVDV.png</value>
<value condition="String.Contains(Player.Folderpath,
DVD-V)">QQcodec/DVDV.png</value>
<value condition="String.Contains(Player.Folderpath,
Quad BDA)">QQcodec/BDA.png</value>
<value condition="String.Contains(Player.Folderpath,
Quad SQ)">QQcodec/QuadSQ.png</value>
<value condition="String.Contains(Player.Folderpath,
Quad Q8)">QQcodec/QuadQ8.png</value>
<value condition="String.Contains(Player.Folderpath,
Quad QR)">QQcodec/QuadQR.png</value>
<value condition="String.Contains(Player.Folderpath,
Quad Reel)">QQcodec/QuadQR.png</value>
<value condition="String.Contains(Player.Folderpath,
Quad QS)">QQcodec/QuadQS.png</value>
<value condition="String.Contains(Player.Folderpath,
Quad CD4)">QQcodec/QuadCD4.png</value>
<value condition="String.Contains(Player.Folderpath,
Quad Q4)">QQcodec/QuadQ4.png</value>
<value condition="String.Contains(Player.Folderpath,
Quadradisc)">QQcodec/quadradisc.png</value>
<value condition="String.Contains(Player.Folderpath,
Quad)">QQcodec/quadraphonic.png</value>
<value condition="String.Contains(Player.Folderpath,
BDA)">QQcodec/BDA.png</value>
<value condition="String.Contains(Player.Folderpath,
BDV)">QQcodec/BDA.png</value>
<value condition="String.Contains(Player.Folderpath,
Penteo)">QQcodec/upmix.png</value>
<value condition="String.Contains(Player.Folderpath,
Upmix)">QQcodec/upmix.png</value>
<value condition="String.Contains(Player.Folderpath,
Multitrack)">QQcodec/multitrack.png</value>
<value condition="String.Contains(Player.Folderpath,
Atmos)">QQcodec/dolbyatmos.png</value>
<value condition="String.Contains(Player.Folderpath,
DTSX)">QQcodec/dtsx.png</value>
<value condition="String.Contains(Player.Folderpath,
DTS-CD)">QQcodec/dtssurround.png</value>
<value condition="String.Contains(Player.Folderpath,
DTSCD)">QQcodec/dtssurround.png</value>
<value condition="String.Contains(Player.Folderpath,
DTS CD)">QQcodec/dtssurround.png</value>
<value condition="String.Contains(Player.Folderpath,
DTSDVD)">QQcodec/dtssurround.png</value>
<value condition="String.Contains(Player.Folderpath,
Dolby DVD)">QQcodec/dolbydigital.png</value>
<value condition="String.Contains(Player.Folderpath,
DTS DVD)">QQcodec/dtssurround.png</value>
<value condition="String.Contains(Player.Folderpath,
DSF)">QQcodec/dsd.png</value>
<value condition="String.Contains(Player.Filename,.flac)">QQcodec/flac.png</value>
<value condition="String.Contains(Player.Filename,.dsf)">QQcodec/dsd.png</value>
<value condition="String.Contains(Player.Filename,.dff)">QQcodec/dsd.png</value>
<value condition="String.Contains(Player.Filename,.mp3)">QQcodec/mp3.png</value>
</variable>
This works as a stacked rule list, when run each rule is sequentially tested, top down, and if its condition is True the value is returned and no further rules are tested. That means the first match is used, hence the order of rules above.
In the first rule:
<value condition="String.Contains(Player.Folderpath,
SACD)">QQcodec/
SACD.png</value>
The condition (test) means: If the current playing file's folder path contains the word 'SACD' then return the logo file name 'SACD.png' from the logo folder.
So its easy to add a new rule (copy a line and modify) or to change a rule to check for different text value or use a different logo file.
NOTE: In Linux and Android filenames are case sensitive (Example: FileName.png is not the same as filename.png). In Windows they are seen as the same file.
Channel Identification and Display:
Since many of us use silent channels to fix playback of quad files on many AVRs I have also added a new variable used in this mod named 'QQNoOfChannelsFromPathvar'. This variable is used to update the Number Of Channels dispalyed in the Kodi UI based on rules.
The new variable basically returns 'Quad' for any album path with the word 'Quad' in it, likewise 'Atmos' and 'DTS:X', otherwise it looks at the number of channels and returns it converted to MCH naming:
<variable name="QQNoOfChannelsFromPathvar">
<value condition="String.Contains(Player.Filename,Quad) + String.Contains(Player.Folderpath,Penteo)">4.1</value>
<value condition="String.Contains(Player.Folderpath,Quad) + !String.Contains(Player.Folderpath,Quad Penteo)">4.1</value>
<value condition="String.Contains(Player.Folderpath,Quad)">Quad</value>
<value condition="String.Contains(Player.Folderpath,Atmos)">Atmos</value>
<value condition="String.Contains(Player.Folderpath,DTSX)">DTS:X</value>
<value condition="String.IsEqual(MusicPlayer.Channels,5)">5.0</value>
<value condition="String.IsEqual(MusicPlayer.Channels,6)">5.1</value>
<value condition="String.IsEqual(MusicPlayer.Channels,8)">7.1</value>
<value condition="String.IsEqual(MusicPlayer.Channels,2)">stereo</value>
<value condition="String.IsEqual(MusicPlayer.Channels,1)">mono</value>
<value>$INFO[MusicPlayer.Channels]</value>
</variable>