advancedsettings.xml

From Official Kodi Wiki
Revision as of 07:31, 14 July 2015 by UNiversal (talk | contribs) (→‎useddsfanart: <imagescalingalgorithm>)
Jump to navigation Jump to search
Home icon grey.png   ▶ Settings ▶ advancedsettings.xml

Note: The advancedsettings.xml file does not exist by default. You have to create it first!

The advancedsettings.xml file, which does not exist by default, can be created by a user in their userdata folder.

This file is used for advanced settings and options that do not have GUI controls inside of Kodi. Some settings are experimental or very rarely set, so they can only be used via the advancedsettings.xml file. The file is simply a plain text file and can be edited by various text editors, so long as the name is "advancedsettings.xml". These advanced settings can be used to tweak various things such as episode naming patterns, special network ports, special behaviors, and more.

The following page will describe the structure of the advancedsettings.xml file and the various individual settings.

Note:

  1. All XML tags must be lowercase. The start and end of the advancedsettings.xml file must have the <advancedsettings> and </advancedsettings> tags.
  2. Kodi will only read the advancedsettings.xml file when it starts up. If you make changes while it is running then you must restart Kodi.
  3. For some Windows versions, Kodi has two \userdata\ folders. The correct one to put the advancedsettings.xml file in is not the one in Program Files, but in %appdata%\Kodi\userdata\.

Layout

The layout of advancedsettings.xml is as follows:

<advancedsettings>
    <setting>value</setting>
    ...
    <setting>value</setting>
</advancedsettings>

where "setting" gives the name of the setting, and "value" gives it's value.

A list of the available "setting" strings and their values is given below.

List of available settings

Troubleshooting settings

loglevel

<loglevel hide="attribute">options</loglevel>

The logging level that Kodi will use to log errors and information. The "hide" attribute is optional.

Attribute options:

true Hides "enable debugging" guisetting.
false "enable debugging" guisetting will switch between min(loglevel, 0) and max(loglevel, 2) for off and on respectively. (Default)

Main options:

-1 No logging, suppresses all log output
0 Normal logging, only logging errors (Default)
1 Debug logging (without showing text on screen)
2 Debug logging with freemem, fps and cpu usage shown on screen
3 Debug logging with freemem, fps and cpu usage and full smb logging

Example:

    <loglevel hide="false">1</loglevel>


Note: If debugging is switched on in the GUI, loglevel will be set to 2 (log to both file and on-screen information); this will over-ride any advancedsettings.xml setting.

Note: If debugging is switched on in the GUI when Kodi is shut down, then it will be automatically be re-enabled at level 2 when it is re-started. This is true even if 'hide' is subsequently set to 'true' - in other words, if you enable it in the GUI and then hide the GUI toggle, it will stay on level 2 irrespective of what you subsequently set in advancedsettings.xml.


jsonrpc

To make it easier for developers using the JSON RPC API in their (third party) applications to debug during development the json output of Kodi can be prettified by setting compactoutput to false. Default json output mode is a compact print which does not contain any unnecessary whitespaces and therefore is difficult to read for humans. Furthermore using the tcpport setting it is possible to change the default TCP port used by Kodi for JSON RPC (which is 9090) to any other valid port.

Example:

<jsonrpc>
    <compactoutput>false</compactoutput>
    <tcpport>9999</tcpport>
</jsonrpc>

other - enableairtunesdebuglog

See: #enableairtunesdebuglog

Audio/video playback settings

skiploopfilter

The amount of the loop filter to skip on h264 decoding. This can help the performance of slower machines when decoding h264 content. Values, in decreasing CPU usage (and decreasing quality)

  • -16 None
  • 0 Skip only empty frames (default)
  • 8 Skip non-reference frames (default on ATV)
  • 16 Skip bi-dir frames
  • 32 Skip all non-key frames
  • 48 Skip all frames

Example:

  <skiploopfilter>8</skiploopfilter>

video

<video>
  <subsdelayrange>10</subsdelayrange>  <!-- Delay range for subtitles, in seconds. -->
  <audiodelayrange>10</audiodelayrange>  <!-- Delay range for audio/video sync, in seconds. -->

  <smallstepbackseconds>7</smallstepbackseconds>  <!-- Length of the small skip back when playing a video --> <!-- Will be replaced by a GUI option in v15 -->
  <usetimeseeking>true</usetimeseeking>  <!-- Whether to use time based or percentage based seeking. -->
  <timeseekforward>30</timeseekforward>  <!-- Time to seek forward in seconds when doing a short seek.  Defaults to 30. --> <!-- Deprecated. Will be replaced by a GUI option in v15. Note: Need to double check if it will actually be removed? -->
  <timeseekbackward>-30</timeseekbackward>  <!-- Time to seek backward in seconds when doing a short seek.  Defaults to -30. --> <!-- Deprecated. Will be replaced by a GUI option in v15. Note: Need to double check if it will actually be removed? -->
  <timeseekforwardbig>600</timeseekforwardbig>  <!-- Time to seek forward in seconds when doing a long seek.  Defaults to 600 (10 minutes). -->
  <timeseekbackwardbig>-600</timeseekbackwardbig>  <!-- Time to seek forward in seconds when doing a long seek.  Defaults to -600 (10 minutes). -->
  <percentseekforward>2</percentseekforward>  <!-- Amount to seek forward as a percentage, when doing a short seek.  Defaults to 2. -->
  <percentseekbackward>-2</percentseekbackward>  <!-- Amount to seek backward as a percentage, when doing a short seek.  Defaults to -2. -->
  <percentseekforwardbig>10</percentseekforwardbig>  <!-- Amount to seek forward as a percentage, when doing a long seek.  Defaults to 10. -->
  <percentseekbackwardbig>-10</percentseekbackwardbig>  <!-- Amount to seek forward as a percentage, when doing a long seek.  Defaults to -10. -->

  <blackbarcolour>1</blackbarcolour>  <!-- colour of the black bars (0->255), (black->white) on videos. -->

  <fullscreenonmoviestart>true</fullscreenonmoviestart> <!-- Whether to go to fullscreen or not when starting a movie. Defaults to true. -->

  <defaultplayer>dvdplayer</defaultplayer> <!-- Set the default video player: dvdplayer or extplayer. -->

  <excludefromscan> <!-- Regular expressions that if evaluated to true won't be added to library. -->
    <regexp>[-\._ ](sample|trailer)[-\._ ]</regexp>
  </excludefromscan>
  <excludefromlisting> <!-- Regular expressions that if evaluated to true won't be displayed in Files View -->
    <regexp>[-\._ ](sample|trailer)[-\._ ]</regexp>
  </excludefromlisting>

  <playcountminimumpercent>90</playcountminimumpercent> <!--Minimum percentage that has to be played before it is marked as watched. Set to 101 to never auto-mark items as watched -->
  <ignoresecondsatstart>180</ignoresecondsatstart> <!-- Number of seconds to ignore at video start after which a resume point is created -->
  <ignorepercentatend>8</ignorepercentatend> <!-- percentage of video to ignore at the end. If you stop watching the video here no resume point is created. Set to 101 to never save a resume point. The video is already marked as watched at 90%, see above. -->
  
  <forcevaapienabled>true</forcevaapienabled> <!-- VAAPI is only tested on intel hardware. This flag helps wrapper developers and fglrx users to easily test current VAAPI state on their hardware. Default is false. Please report crashes directly to your driver vendor -->

  <vdpauscaling>true</vdpauscaling> <!-- scales with vdpau instead of opengl and turns on its HQ scaler when available, enabling this might slow down rendering and cause framedrops especially on ION systems, this setting requires a vdpau feature set C gpu-->
  
  <enablehighqualityhwscalers>true</enablehighqualityhwscalers> <!-- allow turning on the spline36 and lanczos3 shader (for GL builds) -->

    <dxvaallowhqscaling>false</dxvaallowhqscaling> <!-- enables high quality video upscaling for Windows -->

  <ppffmpegdeinterlacing>linblenddeint</ppffmpegdeinterlacing> <!-- override the deinterlacing options passed to libpostproc -->

  <ppffmpegpostprocessing>ha:128:7,va,dr</ppffmpegpostprocessing> <!-- override the post processing options passed to libpostproc when 'Video post-processing' is activated in GUI Videos-Settings-Playback -->
  <autoscalemaxfps>30</autoscalemaxfps> <!-- when scaling method is set to auto, bilinear is chosen when the fps is higher than this limit, the default is 30 -->


  <!-- Settings for when "Adjust refreshrate to match video fps" is enabled, available since r33806. -->
  <adjustrefreshrate> 

    <!-- "Adjust refreshrate to match video fps" will try to select the best refreshrate for the video fps but it doesn't always get it right, for example it might switch to an unsupported refreshrate. You can add overrides here to switch to a certain refreshrate based on video fps. It's possible to add as many overrides as you need.  Overrides are processed in order, if the first one doesn't match the fps or no refreshrates match that override, it will try the next one until no overrides are left -->

    <override>
      <fps>23.976</fps>       <!-- if the fps is between 23.966 and 23.986 -->
      <refresh>60.0</refresh> <!-- switch to the first found refreshrate that is between 59.99 and 60.01 -->
    </override>

    <override>
      <fpsmin>29.96</fpsmin>        <!-- You can also specify the fps range yourself -->
      <fpsmax>30.01</fpsmax>
      <refreshmin>59.0</refreshmin> <!-- Same for the refreshrate -->
      <refreshmax>61.0</refreshmax>
    </override>
    
    <!-- It none of the overrides match, or none of the refreshrates match any of the fps matching overrides, it will choose a fallback refreshrate. Fallbacks are process in order, if the first fallback doesn't match any refreshrate, it will try the next one until no fallbacks are left -->
    <fallback>
      <refresh>50.0</refresh> <!-- switch to the first found refreshrate that is between 49.99 and 50.01. -->
    </fallback>

    <!-- You can also specify the range for the fallback yourself -->
    <fallback>
      <refreshmin>49.0</refreshmin>
      <refreshmax>51.0</refreshmax>
    </fallback>

    <!-- If none of the overrides match the video fps, or no refreshrates match any of the fps matching overrides, and no fallbacks are specified or no refreshrates match any fallbacks, it will automatically choose the best refreshrate (same as having no overrides and fallbacks). -->
  </adjustrefreshrate>
  
  <checkdxvacompatibility>value</checkdxvacompatibility> <!-- Advanced setting not present: let Kodi autodetect cards that support H264 profile > L4.1. Set value to false to enable DXVA no matter what. Set value to true if Kodi doesn't autodetect that the graphics card doesn't support > L4.1 -->

  <useocclusionquery>-1</useocclusionquery> <!--Use an occlusion query when capturing videoframes, -1 means auto detect, 0 means disabled, 1 means enabled, the default is -1.-->
  <fpsdetect>1</fpsdetect> <!-- fps detection for video playback, 0 = trust codec fps, 1 = recalculate from video timestamps with uniform spacing, 2 = recalculate from video timestamps always -->


  <latency> <!-- Compensate display latency (video lag). Latency is given in msecs. -->

    <delay>0</delay> <!-- Global default display latency -->

    <!-- Override latency for given display (not video) refresh rates. When Kodi is in windowed mode, override is ignored. Multiple overrides are allowed.

      Syntax of an override entry:
        <refresh>
          <min>, <max> refresh rate range, OR
          <rate> exact refresh rate
          <delay> display latency for the given refresh rate
        </refresh>
     -->

    <!-- Example: display has 125 msec latency at 23-24 Hz -->
    <refresh>
      <min>23</min>
      <max>24</max>
      <delay>125</delay>
    </refresh>

    <!-- Example: display has 50 msec latency at 50 (+/-0.01) Hz -->
    <refresh>
      <rate>50</rate>
      <delay>50</delay>
    </refresh>

  </latency>

    <stereoscopicregex3d>[-. _]3d[-. _]</stereoscopicregex3d> <!-- Filename triggers for 3D (stereoscopic) mode. -->
    <stereoscopicregexsbs>[-. _]h?sbs[-. _]</stereoscopicregexsbs>
    <stereoscopicregextab>[-. _]h?tab[-. _]</stereoscopicregextab>

    <stagefright> <!-- Previously this page also listed <mediacodec> tags as well as stagefright tags, but this was in error. There are only stagefright options for official Kodi builds. SPMC has mediacodec options for codec tweaking, though. -1 is default, 0 is never used this codec, 1 is always use this codec, bypassing blacklist -->
      <useavccodec>-1</useavccodec>
      <usehevccodec>-1</usehevccodec> <!-- Added in v15 -->
      <usevc1codec>-1</usevc1codec>
      <usevpxcodec>-1</usevpxcodec>
      <usemp4codec>-1</usemp4codec>
      <usempeg2codec>-1</usempeg2codec>
      <useswrenderer>false</useswrenderer>
    </stagefright>

  <disableswmultithreading>false</disableswmultithreading> <!-- Replaces disablehi10pmultithreading. Set this to true if you want software decoding to use only one CPU thread. -->

  <useffmpegvda>false</useffmpegvda> <!-- Experimental hardware video decoding mode for OS X. Option is available for development/testing purposes. -->

Template:Isengard box


</video>

audio

<audio>
  <!-- Amount of headroom Kodi should use above the maximum volume level, in decibels.  Defaults to 0, valid values 0, 6, 12. -->
  <headroom>0</headroom>
  <!-- Default audio player: paplayer or dvdplayer -->
  <defaultplayer>paplayer</defaultplayer>
  <!-- Regular expressions that if evaluated to true won't be added to library. -->
  <excludefromscan> 
    <regexp>[-\._ ](podcast)[-\._ ]</regexp>
  </excludefromscan>
  <!-- Regular expressions that if evaluated to true won't be displayed in Files View -->
  <excludefromlisting> 
    <regexp>[-\._ ](podcast)[-\._ ]</regexp>
  </excludefromlisting>
  <!-- Amount of gain (dB) to be applied to AC3 streams that have been mixed-down to 2 channels. Default is 12.0. Valid values are: -96.0 to 96.0. -->
  <ac3downmixgain>12.0</ac3downmixgain>
  <!-- Minimum percentage that has to be played before it is considered for incrementing in the Top 100 database view, or for last.fm submittal -->
  <playcountminimumpercent>99</playcountminimumpercent> 
  <!-- Whether to use Dynamic Range Compression (DRC) on AC3 streams. 1.0 is "full" compression, as defined by the audio track's metadata, which is recommended for "basic" sound systems such as the internal speakers on a TV. 0.0 is no compression at all, which is recommended for people with nice multi-speaker sound systems. -1.0 (default) defaults to whatever ffmpeg uses, which is currently the same as 1.0. This has no effect if passthrough is enabled for AC3. -->
  <applydrc>-1.0</applydrc> 
  <!-- set to true to skip decoding of DTS in wav files when using dvdplayer (10.10 only) -->
  <dvdplayerignoredtsinwav>false</dvdplayerignoredtsinwav> 
  <!-- default values for limiter/compressor -->
  <limiterhold>0.025</limiterhold> 
  <!-- default values for limiter/compressor -->
  <limiterrelease>0.1</limiterrelease> 
</audio>

For more information on the configuration of audio under Frodo see AudioEngine/HOW-TO: Configure audio

measurerefreshrate

When using "Sync playback to display" on Windows, the detected refreshrate might be wrong. When enabling measurerefreshrate, the refreshrate is measured instead, which makes it more accurate.

<measurerefreshrate>true</measurerefreshrate>

edl

Commercial break detection not as good you think it could be? Are some commercial breaks in a series of adverts not being skipped? Are some parts being skipped that are clearly not commercials? Does the end of the previous recording still show? The following advanced settings can be used to better identify full commercial break sequences, remove incorrectly flagged commercial breaks, and have playback start at the actual beginning of the recording.

<edl>
  <!-- if true, commercial breaks will be merged according to the remaining options. -->
  <mergeshortcommbreaks>false</mergeshortcommbreaks>
  <!-- Commercial breaks won't be merged if the total length of the commercial break would be greater than this (seconds) -->
  <maxcommbreaklength>250</maxcommbreaklength>
  <!-- After merging, commercial breaks shorter than this will be removed (seconds) -->
  <mincommbreaklength>90</mincommbreaklength>
  <!-- Commercial breaks that are further apart than this won't be merged (seconds) -->
  <maxcommbreakgap>120</maxcommbreakgap>
  <!-- How long to wait before automatically skipping when the start of a commercial break reached (seconds) -->
  <commbreakautowait>0</commbreakautowait>
  <!-- How long to rewind after automatically skipping to the end of the commercial break (seconds) -->
  <commbreakautowind>0</commbreakautowind>
</edl>

pvr

<pvr>
  <timecorrection>0</timecorrection>  <!-- Correct all times (epg tags, timer tags, recording tags) by this amount of minutes. -->
  <infotoggleinterval>3000</infotoggleinterval>  <!-- If there is more than one pvr gui info item available (e.g. multiple recordings active at the same time), use this toggle delay in milliseconds. -->
  <minvideocachelevel>5</minvideocachelevel> <!-- Cache up to this level in the video buffer buffer before resuming playback if the buffers run dry. -->
  <minaudiocachelevel>10</minaudiocachelevel> <!-- Cache up to this level in the audio buffer before resuming playback if the buffers run dry. -->
  <cacheindvdplayer>true</cacheindvdplayer> <!-- Cache PVR stream in DVDPlayer. -->
  <channeliconsautoscan>true</channeliconsautoscan> <!-- Automatically scan user defined folder for channel icons when loading internal channel groups. -->
  <autoscaniconsuserset>false</autoscaniconsuserset> <!-- Mark channel icons populated by auto scan as "user set". -->
  <numericchannelswitchtimeout>1000</numericchannelswitchtimeout> <!-- Time in ms before the numeric dialog auto closes when confirmchannelswitch is disabled. -->
</pvr>

epg

<epg>
  <lingertime>1440</lingertime>  <!-- keep X minutes of past epg data (default: 24h) -->
  <updatecheckinterval>300</updatecheckinterval>  <!-- check if tables need to be updated every X minutes -->
  <lingercleanupintervaltime>900</cleanupinterval>  <!-- remove old entries from the EPG every X minutes -->
  <activetagcheckinterval>60</activetagcheckinterval>  <!-- check for updated active tags every X minute -->
  <retryinterruptedupdateinterval>30</retryinterruptedupdateinterval>  <!-- retry an interrupted epg update after X seconds -->
  <updateemptytagsinterval>60</updateemptytagsinterval>  <!-- override user selectable EPG update interval (minutes) for empty EPG tags -->
  <displayupdatepopup>true</displayupdatepopup>  <!-- display a progress popup while updating EPG data from clients -->
  <displayincrementalupdatepopup>false</displayincrementalupdatepopup>  <!-- also display a progress popup while doing incremental EPG updates -->
</epg>

forcedswaptime

Use to force a backbuffer->frontbuffer swap while vsync is enabled. Set to the time (in ms) to allow for the swap (e.g. <forcedswaptime>1</forcedswaptime> is typical).

Default: Off


Video library settings

videoextensions

A list of additional file-extensions to allow (add) or exclude (remove) in the My Video windows.

Default extensions for VIDEOS:

.m4v .3gp .nsv .ts .ty .strm .rm .rmvb .m3u .ifo .mov .qt .divx .xvid .bivx .vob .nrg .img
.iso .pva .wmv .asf .asx .ogm .m2v .avi .bin .dat .dvr-ms .mpg .mpeg .mp4 .mkv .avc .vp3 
.svq3 .nuv .viv .dv .fli .flv .rar .001 .wpl .zip

Examples:

<videoextensions>
  <add>.ex1|.ex2</add>
  <remove>.ex3|.ex4</remove>
</videoextensions>


discstubextensions

A list of additional file-extensions that will (<add>) or will not (<remove>) be treated as disc stubs.

Default extensions for DISC STUBS:

.disc

Examples:

<discstubextensions>
  <add>.dvd|.blu</add>
  <remove>.cd|.vhs</remove>
</discstubextensions>

languagecodes

Translation table for subtitle and audio names. Contains entries of the form

<languagecodes>
  <code>
    <short>alt</short>
    <long>Alternate</long>
  </code>
</languagecodes>

sorttokens

Allows you to specify additional tokens that will be ignored at the start of lines during sorting.

<sorttokens>
  <token>the</token>
</sorttokens>

moviestacking

This is used by the file stacking algorithm to combine multi-part files and contains a list of "regular expressions". For stacking videos that are contained in folders, such as VIDEO_TS folders, see <folderstacking>

As of v9.11, video stacking regular expressions must contain exactly four (4) capture expressions.

Default:

<moviestacking>
  <!-- <cd/dvd/part/pt/disk/disc> <0-N> -->
  <regexp>(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck])[ _.-]*[0-9]+)(.*?)(\.[^.]+)$</regexp>
  <!-- <cd/dvd/part/pt/disk/disc> <a-d> -->
  <regexp>(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck])[ _.-]*[a-d])(.*?)(\.[^.]+)$</regexp>
  <!-- movienamea-xvid.avi, movienameb-xvid.avi -->
  <regexp>(.*?)([ ._-]*[a-d])(.*?)(\.[^.]+)$</regexp>
</moviestacking>

If the argument action="append" or append="yes" is supplied, the default moviestacking regular expressions will remain intact and the user specified ones will be added to the end.

Example:

<moviestacking action="append">
    <!-- This expression will match movename1-xvid.avi, moviename2-xvid.avi.
         Be warned that it will likely stack sequels in a flat directory layout,
         so it is only recommend in a dir-per-video layout. -->
  <regexp>(.*?)([ ._-]*[0-9])(.*?)(\.[^.]+)$</regexp>
</moviestacking>


If the argument action="prepend" is supplied, the default moviestacking regular expressions will remain intact and the user specified ones will be added to the beginning.

Example:

<moviestacking action="prepend">
  <regexp>(Title)(Volume)(Ignore)(Extension)</regexp>
</moviestacking>

If no argument is supplied, or the argument append="no" is supplied, the default moviestacking regular expressions are overwritten by the user specified ones.


folderstacking

This is similar to <moviestacking>, but is used for videos that are contained in folders that use the folder names to stack, such as VIDEO_TS folders (DVD rips that are not in ISO format).

Default:

<folderstacking>
  <!-- <cd/dvd/disk/disc> <0-N> -->
  <regexp>((cd|dvd|dis[ck])[0-9]+)$</regexp>
</folderstacking>

cleandatetime

Matches a year number in a string using a Regular Expression

Default expression:

<video>
  <cleandatetime>(.+[^ _\,\.\(\)\[\]\-])[ _\.\(\)\[\]\-]+(19[0-9][0-9]|20[0-1][0-9])([ _\,\.\(\)\[\]\-][^0-9]|$)</cleandatetime>
</video>
  • The string found before will be used as basis string getting cleaned by the cleanstrings expressions.
  • By default date formats like MM:YY are ignored.

cleanstrings

Clean unwanted characters from filenames or folders by using a list of Regular Expressions. Please note that everything right of the match (at the end of the file name) is removed, so if you would have a file named Super movie.mp4 and would add <regexp> </regexp> (only a space), the only thing that would be left is Super, which is probably not what you want.

Default expressions:

<video>
  <cleanstrings>
   <regexp>[ _\,\.\(\)\[\]\-](ac3|dts|custom|dc|divx|divx5|dsr|dsrip|dutch|dvd|dvdrip|dvdscr|dvdscreener|screener|dvdivx|cam|fragment|fs|hdtv|hdrip|hdtvrip|internal|limited|multisubs|ntsc|ogg|ogm|pal|pdtv|proper|repack|rerip|retail|cd[1-9]|r3|r5|bd5|se|svcd|swedish|german|read.nfo|nfofix|unrated|ws|telesync|ts|telecine|tc|brrip|bdrip|480p|480i|576p|576i|720p|720i|1080p|1080i|hrhd|hrhdtv|hddvd|bluray|x264|h264|xvid|xvidvd|xxx|www.www|\[.*\])([ _\,\.\(\)\[\]\-]|$)</regexp>
   <regexp>(\[.*\])</regexp>
  </cleanstrings>
</video>
  • Arguments action="append" or action="prepend" will insert user specified expressions after, or before, the defaults above. (Further details in moviestacking section)

tvshowmatching

Matches the season and episode numbers in file paths by using a list of Regular Expressions

Defaults:

<tvshowmatching>
  <regexp>[Ss]([0-9]+)[][ ._-]*[Ee]([0-9]+)([^\\/]*)$</regexp>  <!-- foo.s01.e01, foo.s01_e01, S01E02 foo, S01 - E02 -->
  <regexp>[\._ -]()[Ee][Pp]_?([0-9]+)([^\\/]*)$</regexp>  <!-- foo.ep01, foo.EP_01 -->
  <regexp>([0-9]{4})[\.-]([0-9]{2})[\.-]([0-9]{2})</regexp>  <!-- foo.yyyy.mm.dd.* (byDate=true) -->
  <regexp>([0-9]{2})[\.-]([0-9]{2})[\.-]([0-9]{4})</regexp>  <!-- foo.mm.dd.yyyy.* (byDate=true) -->
  <regexp>[\\/\._ \[\(-]([0-9]+)x([0-9]+)([^\\/]*)$</regexp>  <!-- foo.1x09* or just /1x09* -->
  <regexp>[\\/\._ -]([0-9]+)([0-9][0-9])([\._ -][^\\/]*)$</regexp>  <!-- foo.103*, 103 foo -->
  <regexp>[\/._ -]p(?:ar)?t[_. -]()([ivx]+)([._ -][^\/]*)$</regexp>  <!-- Part I, Pt.VI -->
</tvshowmatching>
  • Arguments action="append" or action="prepend" will insert user specified expressions after, or before, the defaults above. (Further details in moviestacking section)
  • Paths are converted to lower case before matching.
  • Examples of matching regexps for certain filenames can be found on the TV shows page.
  • For multi-episode matching to work, there needs to be a third set of parentheses '()' at the end, this part is fed back into the regexp engine.
  • A forum thread has a discussion of pre-made regex lists to match common names. These might improve Kodi's ability to match TV show names in some situations, at the risk of additional false positives.

Filenames without Season

There are two methods to add episodes without a season in their file path. Both ways will force the season to '1' by default, so that you can use the 'Use Absolute Ordering (Single Season)' setting from the TheTvDb.com scraper.

Simple Method (XBMC v9.11 onwards and Kodi)
Use only one pair of parentheses
<regexp>[/\._ \-]([0-9]+)</regexp>
Advanced Method (XBMC v10.05 onwards and Kodi)
Supports multi-episode files without season
Use an empty pair of parentheses for the season
<regexp>[/\._ \-]()([0-9]+)(-[0-9]+)?</regexp>
Specifying Default Season (XBMC v12.0 onwards and Kodi)

It is possible to set the default season for specific regular expressions by setting the 'defaultseason' attribute.

Works with both the simple method and advanced method
If not used, the season will be set to '1'
Useful for setting specials to season '0'
<regexp defaultseason="0">[/\._ \-]X()([0-9]+)(-[0-9]+)?</regexp>
<regexp defaultseason="1">[/\._ \-]E()([0-9]+)(-[0-9]+)?</regexp>

tvmultipartmatching

Matches a multipart episode number based on a previously identified episode file, using a list of Regular Expressions.

Default:

<tvmultipartmatching>^[-_ex]+([0-9]+(?:(?:[a-i]|\\.[1-9])(?![0-9]))?)</tvmultipartmatching>
  • Text matching is compared case-insensitive.
  • Specifying this option replaces the default value

excludefromscan

Matches filenames or folders which should be excluded from a library scan (except tvshows) using a list of Regular Expressions. This can be for both Video or Audio sections of advancedsettings.xml.

Defaults:

<video>
  <excludefromscan>
    <regexp>-trailer</regexp>
    <regexp>[!-._ \\/]sample[-._ \\/]</regexp>
  </excludefromscan>
</video>
  • Arguments action="append" or action="prepend" will insert user specified expressions after, or before, the defaults above. (Further details in moviestacking section)

excludefromlisting

<video>  
  <excludefromlisting> <!-- Regular expressions that if evaluated to true won't be displayed in Files View -->
    <regexp>[-\._ ](sample|trailer)[-\._ ]</regexp>
  </excludefromlisting>
</video>

excludetvshowsfromscan

Matches filenames or folders which should be excluded from a tvshow library scan using a list of Regular Expressions

Defaults:

<video>
  <excludetvshowsfromscan>
    <regexp>[!-._ \\/]sample[-._ \\/]</regexp>
  </excludetvshowsfromscan>
</video>
  • Arguments action="append" or action="prepend" will insert user specified expressions after, or before, the defaults above. (Further details in moviestacking section)

trailermatching

Contains "Regular Expression" syntax (commonly referred to as "RegEx" or "RegExp") to match the locally stored trailers to movies in the library.

  <trailermatching>
    <!-- This regexp will match moviename_Trailer.avi -->
    <regexp>(.*?)(_Trailer)(\.[^.]+)$</regexp>
  </trailermatching>

videolibrary

Options specific to the Video Library

  <videolibrary>
    <allitemsonbottom>false</allitemsonbottom>  <!-- sorts the "*All" items at the bottom of the list when in Ascending order -->
    <backgroundupdate>false</backgroundupdate> <!-- set to "true" to hide the video scanner dialog from the GUI -->
    <!-- NOTE: To get this working properly, you have to do a 'Clean Library' in settings the first time after you enable the setting. -->
    <cleanonupdate>false</cleanonupdate>  <!-- default set to false to prevent Kodi from removing items from the database while updating.  -->
    <usefasthash>true</usefasthash> <!-- defaults to true. Set to false in order to skip hashing based on the folders modification time. -->
    <hideallitems>false</hideallitems>  <!-- removes the "*All" items from the video library --> <!-- This will be replaced in v15 with a GUI option. -->
    <hideemptyseries>false</hideemptyseries>  <!-- set to "true" to hide empty series in the video library and prevent empty series from being removed during a library cleanup. -->
    <recentlyaddeditems>35</recentlyaddeditems> <!-- number of recently added items. Defaults to 25 -->
    <itemseparator> / </itemseparator>  <!-- separator used for multiple artists/genres in tags. Note, this is *space* *slash* *space* -->
    <exportautothumbs>false</exportautothumbs>  <!-- export auto-generated thumbs. Defaults to false -->
    <importwatchedstate>false</importwatchedstate>  <!-- import previously exported playdate and playcount from .nfo files. Defaults to false -->
    <importresumepoint>false</importresumepoint>  <!-- import previously exported resume point from .nfo files. Defaults to false -->
    <mymovies>  <!-- Options specific to MyMovies XML file parsing -->
      <categoriestogenres>false</categoriestogenres>  <!-- Add MyMovies Custom Categories to Genres (boolean, default is false) -->
    </mymovies>
    <dateadded>1</dateadded> <!-- 0 results in using the current datetime when adding a video;
                                  1 (default) results in prefering to use the files mtime (if it's valid) and only using the file's ctime if the mtime isn't valid;
                                  2 results in using the newer datetime of the file's mtime and ctime -->
  </videolibrary>

videoscanner

Options specific to the Video scanner

  <videoscanner>
    <ignoreerrors>true</ignoreerrors> <!-- Set to true to silently ignore errors while scanning videos. This prevents the error dialogue box, so you don't have to keep hitting "yes" to keep scanning.-->
  </videoscanner>

myth

Not seeing all the recordings you expected in the Movies folder? If so, it's very likely that the electronic program guide (EPG) used by MythTV doesn't accurately distinguish between TV Shows and Movies all the time. The following setting allows the length of the recording to also be used to determine if a recording is a Movie.

<myth>
   <!-- Recordings longer than this will be added to the Movies folder (minutes). 0 = off -->
  <movielength>0</movielength>
</myth>

Library artwork

imageres

This tag is new for v12 (Frodo), replacing <thumbsize>.

Specify the maximal resolution that art should be resized to in pixels. The width is automatically calculated as being 16/9*height. The image will be resized to fit within this size. e.g. an image that is 2000x500 will be cached at size 1280x320. An image that is 500x800 will be cached at size 450x720 using the default value of 720.

<imageres>720</imageres>

fanartres

This tag is new for v12 (Frodo), replacing <fanartheight>.

Specify the resolution that cached fanart should be resized to in pixels. The width is automatically calculated as being 16/9*height. Only images that are exactly 16x9 and equal to or greater than this resolution will be cached at this size - all other images will be cached using <imageres>. The default value is 1080.

<fanartres>1080</fanartres>

fanart

As of v12 (Frodo), this tag is only used for music and not video.

A list of additional files to try when searching for fanart images. (The defaults are fanart.jpg and fanart.png which can be removed.)

Example:

<fanart>
  <remove>fanart.jpg</remove>
  <add>backdrop.jpg</add>
</fanart>

musicthumbs

A list of additional files to try when searching for music thumbnail images. (The default is folder.jpg which can be removed.)

Example:

<musicthumbs>
  <remove>folder.jpg</remove>
  <add>thumb.jpg|cover.jpg</add>
</musicthumbs>

useddsfanart

This settings allows Kodi to use your GPU rendering fanart and some other images. This will make loading images considerably faster, especially on systems with slower processors (e.g. atom based systems). Do not use this option on ARM based systems (Apple TV2/iOS/RPi/many Android systems) as it is likely to degrade performance because DDS images are not supported.

<useddsfanart>true</useddsfanart>

imagescalingalgorithm

Future.png Current Kodi v16 development version feature:
This page or section describes a feature that is only available in Kodi v16 currently in development.


<imagescalingalgorithm>bicubic</imagescalingalgorithm>

Available image scaling algorithms

fast_bilinear
bilinear
bicubic
experimental
nearest_neighbor
averaging_area
bicublin
gaussian
sinc
lanczos
bicubic_spline

Video and music library settings

playlistasfolders

In the recent releases, playlists are treated as folders. Selecting a playlist no longer plays it, but opens it, as if it were a folder.

Set to false to revert to the previous behaviour. When you select a playlist, its content is added to the list of elements to be played.

Note: This setting will not affect smart playlists, they will always show as folders.
Example
<playlistasfolders>true</playlistasfolders>

playlistretries

The number of retries attempted if a source is offline. With this control you can alter the number of consecutive failed items before a playlist fails.

Default:

  <playlistretries>100</playlistretries>

playlisttimeout

The timeout, in seconds, before item failure.

Default:

<playlisttimeout>20</playlisttimeout>

musicdatabase/videodatabase

Allows advanced customization of the default database settings for both music and video.

Note: It is HIGHLY recommended that you not attempt to place an sqlite3 database outside of kodi's path. sqlite3 contains no filesystem abstraction, so this will plain break on any non-local (as far as Kodi is concerned) paths. Use this for mysql only.

type

Can be either "sqlite3" or "mysql" (default: sqlite3)


host
  • sqlite3: defines the relative path to the database file (eg. /usr/local/kodi/databases).
  • mysql: defines the host of the mysql socket (eg. localhost, 192.168.0.1, etc)


port
  • sqlite3: silently ignored
  • mysql: defines the port of the mysql socket (default: 3306)


name
by default "MyVideos"+DB number will be used.
  • sqlite3: defines the name of the database file to read from, excluding the ".db" extension.
  • mysql: defines the name of the database to use


user
  • sqlite3: silently ignored
  • mysql: defines the user with privileged access to the database


pass
  • sqlite3: silently ignored
  • mysql: defines the password for the user with privileged access to the database


key
Optional SSL setting for MySQL [1]


cert
Optional SSL setting for MySQL [2]


ca
Optional SSL setting for MySQL [3]


capath
Optional SSL setting for MySQL [4]


ciphers
Optional SSL setting for MySQL [5]


FUTURE FEATURE:

This page or section describes features that are a future part of a Kodi release. For more information see development builds.


Examples:

1) Configure a database for MySQL.

Note: The videodatabase and musicdatabase tags are interchangeable here.
<videodatabase>
  <type>mysql</type>
  <host>192.168.0.10</host>
  <name>kodi_video</name>
  <user>kodi</user>
  <pass>kodi</pass>
</videodatabase>

2) Configure a database for an sqlite database.

Note: The videodatabase and musicdatabase tags are interchangeable here.
<musicdatabase>
  <type>sqlite3</type>
  <host>/usr/local/share/kodi/databases</host>
  <name>kodi_music</name>
</musicdatabase>


externalplayer

See: External players

Music settings

musicextensions

A list of additional file-extensions to allow (add) or exclude (remove) in the My Music windows.

Default extensions for MUSIC:

.nsv .m4a .flac .aac .strm .pls .rm .mpa .wav .wma .ogg .mp3 .mp2 .m3u .mod .amf .669 .dmf .dsm .far .gdm 
.imf .it .m15 .med .okt .s3m .stm .sfx .ult .uni .xm .sid .ac3 .dts .cue .aif .aiff .wpl .ape .mac .mpc 
.mp+ .mpp .shn .zip .rar .wv .nsf .spc .gym .adplug .adx .dsp .adp .ymf .ast .afc .hps .xsp

Examples:

<musicextensions>
  <add>.ex1|.ex2</add>
  <remove>.ex3|.ex4</remove>
</musicextensions>

cddbaddress

The address of the online CDDb database. You may set this to another freedb mirror if there is a more suitable one.

Default:

<cddbaddress>freedb.freedb.org</cddbaddress>

songinfoduration

This controls how long the song information will remain onscreen when the song changes during visualisations. The valid range is "1" to "Indefinite (0)", in seconds. This does not include the duration of any transition effects.

Default:

<songinfoduration>10</songinfoduration>

musicfilenamefilters

Contains filters to match music information (artist, title etc.) from a tag-less music filename. The first <filter> to match completely is used. Matched items include:

%A - Artist
%T - Title
%B - Album
%N - Track number
%S - Part of set (disk number)
%D - Duration
%G - Genre
%Y - Year
%R - Rating

Example:

<musicfilenamefilters>
  <filter>%A - %T</filter>
</musicfilenamefilters>

musiclibrary

Options specific to the Music Library

  <musiclibrary>
    <hideallitems>true</hideallitems> <!-- removes the "*All" items from the music library --> <!-- This will be replaced in v15 with a GUI option. -->
    <allitemsonbottom>true</allitemsonbottom> <!-- sorts the "*All" items at the bottom of the list when in Ascending order -->
    <backgroundupdate>true</backgroundupdate> <!-- set to hide the music scanner dialog from the gui -->
    <recentlyaddeditems>35</recentlyaddeditems> <!-- number of recently added items. Defaults to 25 -->
    <albumssortbyartistthenyear>true</albumssortbyartistthenyear>    <!-- at an albums listing, when you sort by artist, secondary sort will be year. -->
    <albumformat>%B - %Y</albumformat>  <!-- album label template, default is "%B" -->
    <albumformatright>%A</albumformatright>  <!-- album label template for right column, default is "%A" -->
    <prioritiseapetags>true</prioritiseapetags>  <!-- prioritise APEv2 tags over ID3v1/2 tags, default is false. -->
    <itemseparator> / </itemseparator>    <!-- separator used for multiple artists/genres in tags. Note, this is *space* *slash* *space* -->
  </musiclibrary>

karaoke

<karaoke>
  <!-- Music-lyrics delay for CDG format lyrics in SECONDS. Floating number, may be negative. -->
  <syncdelaycdg>0.0</syncdelaycdg>
  <!-- Music-lyrics delay for LRC format lyrics in 1/10 seconds. Floating number, may be negative. -->
  <syncdelaylrc>0.0</syncdelaylrc>
  <!-- If set to true, when the songs are added to the library, Kodi will automatically replace the song genre by "Karaoke"
    if the song has associated lyrics. Default is false. -->
  <alwaysreplacegenre>false</alwaysreplacegenre>
  <!-- If set to true, when the music-lyrics delay was modified while playing using subtitle delay buttons, the delay value
    for this song will be stored, and restored when the song is played next time. Default is true. -->
  <storedelay>true</storedelay>
  <!-- When karaoke songs are added to the library during scans, an autoincrement number is automatically assigned
 to each song, starting from the value specified below. Default starts from 1. -->
  <autoassignstartfrom>1</autoassignstartfrom>
  <!-- If set to true (default), the background for CDG songs is always empty (plain color) no matter what setting is set in 
    defaultbackground below. When setting this to false, then one can see through the background and see the video or
    visualization.-->
  <nocdgbackground>true</nocdgbackground>
  <!-- Sets default background mode. Type could be "none", "vis" for visualisation, "image" or "video".
    For image/video types the "path" parameter should specify the image or video file to play. -->
  <defaultbackground type="video" path="special://masterprofile/karaokevideobg.avi"/>
  <!-- If non-zero, specifies the time in seconds left before the end of the current song when a window will pop up informing you
    about the next played song. The window does not pop up if there is no next song, or it is not a karaoke song -->
  <nextsongpopuptime>0.0</nextsongpopuptime>
</karaoke>


Photos settings

pictureextensions

A list of additional file-extensions to allow (add) or exclude (remove) in the My Pictures window.

Default extensions for PICTURES:

.png .jpg .jpeg .bmp .gif .ico .tif .tiff .tga .pcx .cbz .zip .cbr .rar .m3u

Examples:

<pictureextensions>
  <add>.ex1|.ex2</add>
  <remove>.ex3|.ex4</remove>
</pictureextensions>

pictureexcludes

Matches filenames or folders which should be excluded from being displayed in My Pictures using a list of Regular Expressions

<pictureexcludes>  <!-- Regular expressions that if evaluated to true won't be displayed in My Pictures -->
  <regexp>small</regexp>
  <regexp>[-\._ ](sample|trailer)[-\._ ]</regexp>
</pictureexcludes>

slideshow

<slideshow>
  <!-- Amount to pan images as a percentage of the screen -->
  <panamount>2.5</panamount>
  <!-- Amount to zoom images as a percentage of the screen -->
  <zoomamount>5.0</zoomamount>
  <!-- Amount to compensate (zoom) images to attempt to reduce black bars. -->
  <!-- Results in cropping of the longer length of the image in order to reduce the black bars on the shorter length of the image.  -->
  <!-- Defaults to 20. -->
  <blackbarcompensation>20</blackbarcompensation>  
</slideshow>

Network settings

samba

<samba>
  <doscodepage></doscodepage>  <!-- code page to use for filenames -->
  <clienttimeout>10</clienttimeout>  <!-- timeout (in seconds) -->
  <statfiles>true</statfiles>  <!-- Set to false to disable smb stat() on files to speed up listings of large directories (over slow links) -->
</samba>

hosts

Static dns entries which take precedence over your dns server.

<hosts>
  <entry name="HOSTNAME">IPADDRESS</entry>
</hosts>

network

<network>
  <curlclienttimeout>10</curlclienttimeout>  <!-- Timeout in seconds for libcurl (http/ftp) connections -->
  <curllowspeedtime>5</curllowspeedtime>  <!-- Time in seconds for libcurl to consider a connection lowspeed -->
  <httpproxyusername></httpproxyusername>  <!-- username for Basic Proxy Authentication -->
  <httpproxypassword></httpproxypassword>  <!-- password for Basic Proxy Authentication -->
  <cachemembuffersize>20971520</cachemembuffersize>  <!-- number of bytes used for buffering streams ahead in memory 
    Kodi will not buffer ahead more than this. WARNING: for the bytes set here, Kodi will consume 3x the amount of RAM
    When set to 0 the cache will be written to disk instead of RAM, as of v12 Frodo -->
  <buffermode>0</buffermode>  <!-- Choose what to buffer:
     0) Buffer all internet filesystems (like "2" but additionally also ftp, webdav, etc.) (default)
     1) Buffer all filesystems (including local)
     2) Only buffer true internet filesystems (streams) (http, etc.)
     3) No buffer -->
  <readbufferfactor>1.0</readbufferfactor> <!-- this factor determines the max readrate in terms of readbufferfactor * avg bitrate of a video file. 
This can help on bad connections to keep the cache filled. It will also greatly speed up buffering. Default value 1.0. -->
</network>

tuxbox

<tuxbox>
    <!-- "audiochannelselection"; default is 'false', 'true' will popup the audio channel selection if
          there is more then one audio stream !-->
    <audiochannelselection>false</audiochannelselection>
    <!-- "submenuselection"; default is 'false', 'true' will popup the Submenu selection !-->
    <submenuselection>false</submenuselection>
    <!-- "defaultrootmenu"; MODE: 0 = TV (Default), 1 = Radio, 2 = Data, 3 = Movies, 4 = Root !-->
    <defaultrootmenu>0</defaultrootmenu>
    <!-- "defaultsubmenu"; 1=Services  2=Satellites 3=Providers 4=Bouquets (default) !-->
    <defaultsubmenu>4</defaultsubmenu>
    <!-- "pictureicon"; default is 'true', will use the Picture Icons from folder /UserData/PictureIcon/ !-->
    <pictureicon>true</pictureicon>
    <!-- "epgrequesttime"; default is '10', 0-3600, defines the time in seconds between epg queries, some tuxbox
          devices need longer to response (Minimum: 1, Maximum: 3600) !-->
    <epgrequesttime>10</epgrequesttime>
    <!-- "zapwaittime"; default is '0' (0 = OFF), defines the time in seconds to wait for a valid PMT after the
          zaping was send (Minimum: 0, Maximum: 120) !-->
    <zapwaittime>0</zapwaittime>  
</tuxbox>

airtunesport

This overwrites the defalt listening port of the AirTunes server (announced via zeroconf).


airplayport

This overwrites the default listening port of the AirPlay server (announced via zeroconf).


File system settings

packagefoldersize

<packagefoldersize>options</packagefoldersize>

The amount (in megabytes) of add-on zip packages saved from previous add-on installs. These packages are mainly used for the add-on rollback feature. Increasing the size should increase the amount of past versions saved.

Example:

<packagefoldersize>200</packagefoldersize> <!-- this example would keep up to 200MB of add-on packages. -->

detectasudf

Set to true if you wish to detect joint ISO9660/UDF disks as UDF.

Default: False

pathsubstitution

Path substitutions are for use for redirecting file paths. These are processed in order, and are useful for substituting an absolute path on a PC with a path suitable for Kodi to handle.

Default: No path substitutions defined.

Example:

<pathsubstitution>
  <substitute>
    <from>G:\dvds\</from>
    <to>smb://somecomputer/g-share/dvds/</to> <!-- Note the difference between the usage of forward and backslashes -->
  </substitute>
</pathsubstitution>

Input control settings

remotedelay

The repeat delay for a LIRC remote control. A delay value between 1 and 20 before a remote button starts repeating on a long keypress (i.e. continuously sending button pushes while it's held down).

Default: 3

<remotedelay>10</remotedelay>

remoterepeat

This used to adjust the amount of time in milliseconds between repeated keystrokes. Used to prevent key-bounce, in other words prevents Kodi (lirc?) seeing one key press as multiple key presses with certain remotes.

<remoterepeat>800</remoterepeat>

controllerdeadzone

The controller deadzone is the region of movement around the center which is not recognized by the device. Because joysticks can have noise (report motion when still) and bias (report an offset when centered), spurious events can be reported even though the controller isn't being touched. If you notice these kinds of events, you most likely need to increase your controller's deadzone (both axes recommended). The values range from 0.0 (no deadzone, Kodi will see all input your controller is capable of registering) to 1.0 (it will ignore all input inside of the device's physical limits).

<controllerdeadzone>0.2</controllerdeadzone>

enablemultimediakeys

This setting only has any effect on Windows versions of Kodi, and only applies to builds from 28th May 2011 onwards. In Windows the multimedia keys generate a WM_APPCOMMAND message in addition the keypress. Kodi processes both keypresses and the WM_APPCOMMAND messages, and the end result would be that the command is executed twice. To avoid this, by default multimedia keypresses are disabled. Although it should rarely be necessary, the enablemultimediakeys setting allows you to enable the multimedia keys.

Example:

<enablemultimediakeys>true</enablemultimediakeys>


seeksteps

FUTURE FEATURE:

This page or section describes features that are a future part of a Kodi release. For more information see development builds.

Editor note: the defaults need to be updated for seeksteps.

Other interface settings

window

This allows you to manually set the default size of Kodi's windowed mode. If you resize the window, it will return to the set size when restarting.

WIDTH and HEIGHT are the values for each dimension, in pixels.

<window><width>WIDTH</width><height>HEIGHT</height></window>

allowd3d9ex

Applies only to Windows Vista and up. Values: true/false. Allows Kodi to use Direct3D 9Ex, which is a bit more stable and robust than Direct3D 9.

Default:

<allowd3d9ex>true</allowd3d9ex>

restrictcapsmask

Windows only. A bitmask to prevent Kodi from using detected texture capabilities of the GPU. This helps work around buggy hardware/drivers.

1: prevent the use of compressed textures (DXT1, DXT3, DXT5) 2: prevent the use of non-power-of-two dimensions for textures 4: prevent the use of compressed textures with non-power-of-two dimensions.

<restrictcapsmask>0</restrictcapsmask>

forced3d9ex

Windows only: Kodi attempts to detect drivers released for a version earlier than Vista, to avoid using advanced features which are often not emulated correctly. The detection may be incorrect and this setting allows forcing the using of D3D9Ex.

<forced3d9ex>false</forced3d9ex>

algorithmdirtyregions

Note: Some GPU/hardware configurations will have some minor issues (such as a visual "flicker"). For those situations try mode 2 or use the default (mode 3, which requires no advancedsetting). Almost all ARM-based devices (such as Android) willl likely have flickering issues.

Enable dirty-region processing. Dirty regions are any parts of the screen that have changed since the last frame. By not re-rendering what hasn't changed the GUI can be sped up. Because all GPUs work differently, only Mode 3, combined with nofliptimeout=0, is guaranteed to work for everyone without flickering issues. This mode will reduce CPU/GPU usage, but will not increase GUI speed.

value result description
0 Off The entire viewport is always rendered.
1 Union All dirty regions are grouped into the smallest possible rectangle. This is typically the fastest mode for slower GPUs due to only making one pass.
2 Cost reduction Each dirty region is presented separately, in as many passes as there are regions.
3 Whole Screen The entire screen is rendered if there are any dirty regions. This, combined with nofliptimeout is a safe default for drivers that clear buffer contents (manifests as blinking or vibrating images). Default

Example:

<gui>    
  <algorithmdirtyregions>1</algorithmdirtyregions>
</gui>

nofliptimeout

Specifies the timeout in milliseconds after which Kodi will not flip the graphics buffers anymore when nothing has been rendered, this lowers both CPU and GPU usage. Sometimes adjusting this value can help prevent flickering.

  • -1: disabled
  • 0 or higher: timeout in milliseconds (0 is default)

Example:

<gui>    
  <nofliptimeout>1000</nofliptimeout>
</gui>

visualizedirtyregions

Enable dirty-region visualization. Paints a rectangle over marked controls.

  • true: on
  • false: off (Default)

Note: This is only a development mode and isn't of use to normal users.

Example:

<gui>    
  <visualizedirtyregions>true</visualizedirtyregions>
</gui>

showexitbutton

Setting to hide the exit button, useful for people running appliance based setup's where exit would only confuse/complicate the user. Modifiable via the advancedsettings.xml by setting showexitbutton to false, default is true (show)

Example:

<showexitbutton>true</showexitbutton>

fullscreen

Starts Kodi in full screen (check resolutions!).

<fullscreen>false</fullscreen>

splash

Set to false if you wish to disable the startup splash image. Defaults to true.

<splash>true</splash>

cputempcommand

Provide a shell command Kodi will use to get CPU temperature. It should print out only "[temp as integer] [scale as one of "CcFf"]".

For Nvidia and Raspberry Pi
<cputempcommand>sed -e 's/\([0-9]*\)[0-9]\{3\}.*/\1 C/' /sys/class/thermal/thermal_zone0/temp</cputempcommand>

or

<cputempcommand>echo "$(sensors -u | tail -n64 | grep temp1_input | awk '{print $2 }' |awk '{printf("%d\n",$1 + 0.5);}') C"</cputempcommand>
For ATI/AMD
<cputempcommand>sensors|sed -ne "s/temp1: \+[-+]\([0-9]\+\).*/\1 C/p"</cputempcommand>

gputempcommand

Provide a shell command Kodi will use to get GPU temperature. It should print out only "[temp as integer] [scale as one of "CcFf"]".

For Nvidia
<gputempcommand>echo "$(nvidia-settings -tq gpuCoreTemp) C"</gputempcommand>

or

<gputempcommand>echo "$(nvidia-smi -q -d TEMPERATURE | grep Gpu | cut -c35-36) C"</gputempcommand>
For ATI/AMD
<gputempcommand>/usr/bin/aticonfig --od-gettemperature | grep Temperature | cut -f 2 -d "-" | cut -f 1 -d "." | sed -e "s, ,," | sed 's/$/ C/'</gputempcommand>
For Raspberry Pi
<gputempcommand>/opt/vc/bin/vcgencmd measure_temp | sed -e "s/temp=//" -e "s/\..*'/ /"</gputempcommand>

glrectanglehack

Problems with ghosting or videos which are only played back in the left upper quarter? The following ATI hack may solve it.

<glrectanglehack>yes</glrectanglehack>

alwaysontop

Added in XBMC v9.11 (Windows OS only). Keeps Kodi always on top when windowed.

<alwaysontop>yes</alwaysontop>

Alternate code.

    <videoscreen>
        <fakefullscreen>false</fakefullscreen>
    </videoscreen>

Recently removed tags

  • <thumbsize> - replaced by <imageres> in v12 Frodo
  • <fanartheight> - replaced by <fanartres> in v12 Frodo
  • <dvdthumbs> - removed in v12 Frodo
  • <busydialogdelayms> - removed in v12 Frodo
  • <bginfoloadermaxthreads> - removed in v13 Gotham
  • <showepginfoonselect> - replaced by a GUI setting in v13 Gotham
  • <resample>, <forceDirectSound>, <audiophile>, <audiosinkbufferdurationmsec>, <allowtranscode44100>, and <streamsilence> - These were various sub-tags for <audio> that were removed in v13 Gotham and either replaced by GUI settings or were no longer needed.
  • <enableairtunesdebuglog> - replaced by a GUI option in v14 Helix
  • <videoDisableHi10pMultithreading> - renamed to <disableswmultithreading> in v14 Helix
  • <hideallitems> - For both the <videolibrary> and <musiclibrary> sections, this is replaced by a GUI option in v15 Isengard
  • <SmallStepBackSeconds> - In v15 the SmallStepBack action ID has been replaced by seek(-7) in default keymaps. See skip steps for details. When the original SmallStepBack action ID is used it defaults to the first backwards additive seeking value.
  • <timeseekforward>/<timeseekbackward> - In v15 these tags are replaced by GUI options via additive seeking, which is configured in the GUI. See skip steps for details.

guisettings.xml settings

You can also define the settings normally defined in the GUI (and stored in guisettings.xml) in advancedsettings.xml. Most guisettings.xml settings defined in advancedsettings.xml will override the guisettings.xml values, and the settings will be removed completely from the interface.

The easiest way to include a guisettings.xml setting is to first change the setting in the interface to the value that you want, and then open the userdata/guisettings.xml file and find the XML entry that corresponds to that setting.

Then just add that entry to the advancedsettings.xml file.

For instance, to set the Font Character Set (found in the appearance setting, in the Look and Feel section), you'd open up guisettings.xml and find:

  <lookandfeel>
    <charset>Hebrew (Windows)</charset>
  </lookandfeel>

Simply take that entry and place it in advancedsettings.xml. The option in Kodi's interface for the character set will then no longer be visible, and Kodi will always use the Hebrew (Windows) character set.