<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://kodi.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sarbes</id>
	<title>Official Kodi Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://kodi.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sarbes"/>
	<link rel="alternate" type="text/html" href="https://kodi.wiki/view/Special:Contributions/Sarbes"/>
	<updated>2026-06-15T09:37:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kodi.wiki/index.php?title=Changes_To_The_Skinning_Engine&amp;diff=253673</id>
		<title>Changes To The Skinning Engine</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Changes_To_The_Skinning_Engine&amp;diff=253673"/>
		<updated>2024-10-26T10:56:30Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Changes to Kodi 22 (Piers) ==&lt;br /&gt;
&lt;br /&gt;
=== Engine changes ===&lt;br /&gt;
; New InfoLabels to identify multiple PVR Clients&lt;br /&gt;
: System.PVRCount - If evaluated as a string or integer returns the count of enabled PVR clients.&lt;br /&gt;
: ListItem.BackendInstanceName - Returns the name of the PVR client instance for the associated list item.&lt;br /&gt;
: Renamed: System.PVRCount (int) -&amp;gt; PVR.ClientCount: Number of PVR clients enabled.&lt;br /&gt;
: Removed: System.PVRCount (string)&lt;br /&gt;
: Renamed: ListItem.BackendInstanceName (string) -&amp;gt; ListItem.PVRInstanceName: If selected item is of type PVR (recording, timer, EPG), the name of the instance of the PVR client add-on, as specified by the user in the add-on settings. Empty if the PVR client add-on does not support multiple instances or item is not of type PVR.&lt;br /&gt;
:  Added: ListItem.PVRClientName (string): If selected item is of type PVR (recording, timer, EPG), the name of the PVR client add-on, as specified by the add-on developer. Empty if the item is not of type PVR. &lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25159&lt;br /&gt;
&lt;br /&gt;
; Added channel logo&lt;br /&gt;
: ListItem.ChannelLogo (string): The path for the logo of the currently selected radio or TV channel, if available (PVR).&lt;br /&gt;
: VideoPlayer.ChannelLogo (string): The path for the logo of the currently playing TV channel, if available (PVR).&lt;br /&gt;
: MusicPlayer.ChannelLogo (string): The path for the logo of the currently playing radio channel, if available (PVR). &lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25142&lt;br /&gt;
&lt;br /&gt;
; Added parental rating icons for listitems&lt;br /&gt;
: ListItem.ParentalRatingIcon (string): The path to an icon representing the ListItem.ParentalRatingCode.&lt;br /&gt;
: ListItem.ParentalRatingSource (string): The source used to determine the ListItem.ParentalRatingCode value.  &lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/24096&lt;br /&gt;
&lt;br /&gt;
; Added parental rating icons the video player&lt;br /&gt;
: VideoPlayer.ParentalRatingCode (string): Same as the ListItem value, but for the VideoPlayer context.&lt;br /&gt;
: VideoPlayer.ParentalRatingIcon (string): Same as the ListItem value, but for the VideoPlayer context.&lt;br /&gt;
: VideoPlayer.ParentalRatingSource (string): Same as the ListItem value, but for the VideoPlayer context. &lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25664&lt;br /&gt;
&lt;br /&gt;
; Changes to image fading&lt;br /&gt;
: The amount of images fading at the same time has been limited to two. This improves performance, and might improve image quality in the future.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25565&lt;br /&gt;
&lt;br /&gt;
=== Rendering changes ===&lt;br /&gt;
; GL/GLES - Font rendering improved (no more jitter)&lt;br /&gt;
: The geometry setup for text strings has been improved. Vertex processing is now being done on the GPU, instead of the CPU. Especially zooming will look smoother. Shadow placement and alignment when rotating will look better.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/24605&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25033&lt;br /&gt;
&lt;br /&gt;
; GL/GLES - Added anisotropic filtering support&lt;br /&gt;
: When enabled in the advanced setting, a GPU might apply a better texture filter when viewing an element at a glancing angle. The effect is highly vendor dependent and might introduce a performance degradation.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/24841&lt;br /&gt;
&lt;br /&gt;
; GL/GLES - Implemented front to back rendering&lt;br /&gt;
:  Opaque elements are now rendered from front to back, if enabled via an advanced setting. This is saving resources in otherwise overdrawn areas. There should be no visual changes, but the feature is still experimental.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/22919&lt;br /&gt;
&lt;br /&gt;
; GL/GLES - Improved screen clearing behavior at the start of each frame&lt;br /&gt;
:  The same PR also changes details of the screen clearing behavior at the start of the frame. Please make sure to set a background color, if you don&#039;t draw over the whole screen. Otherwise, the content of the background is undefined for performance reasons, and might contain junk.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/22919&lt;br /&gt;
&lt;br /&gt;
; GL/GLES - Added support for new internal texture formats&lt;br /&gt;
: With Kodi 22, support for texture formats other than RGBA/BGRA has been added. This includes support for size optimized formats, such as luminance- and alpha-textures, but also compressed textures. Size optimized formats will be expanded to full BGRA on systems without support (currently DX, and partially GLES 2.0).&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25205&lt;br /&gt;
&lt;br /&gt;
=== Misc Changes ===&lt;br /&gt;
; Introducing XBT v3 texture bundles&lt;br /&gt;
: The XBT texture format has been updated. It now can support all the internal texture formats used by Kodi (https://github.com/xbmc/xbmc/blob/master/xbmc/guilib/TextureFormats.h).&lt;br /&gt;
: In addition to XBT v2 texture files, Kodi 22 will also be able to read the v3 version of the format.&lt;br /&gt;
: The texture packer will now try to store size optimized formats, if applicable.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25714&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin_development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=HOW-TO:Texture_authoring&amp;diff=253538</id>
		<title>HOW-TO:Texture authoring</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=HOW-TO:Texture_authoring&amp;diff=253538"/>
		<updated>2024-09-22T15:52:11Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Textures are an essential part of the Kodi UI. It is important for them to have suitable properties, or otherwise image quality and performance will suffer.&lt;br /&gt;
&lt;br /&gt;
Note that the page is still under construction.&lt;br /&gt;
&lt;br /&gt;
== How a GPU samples textures ==&lt;br /&gt;
In general, Kodi employs bi-linear filtering of non-mipmapped textures (https://en.wikipedia.org/wiki/Texture_filtering). For one sample, the four most adjacent texels (texture elements) get fetched, which in turn will be added together based on their distance to the sample point. If a texel point is matching a sample point, it will be the sole contributor of its color. If the sampling point is right in the middle of all four texels, the result will be the exact average of all four texels.&lt;br /&gt;
&lt;br /&gt;
Note that at the sampling stage, there is no concept of color/alpha channels. There are up to four channels of data, which are totally independent of each other. This might be RGBA, but it does not have to.&lt;br /&gt;
&lt;br /&gt;
This has implications on how textures should be authored.&lt;br /&gt;
&lt;br /&gt;
== Texture Resolution ==&lt;br /&gt;
Try to optimize textures to a nominal screen resolution of 1920x1080. This would look perfect on normal FullHD TV&#039;s, while it would still be good enough for 4k.&lt;br /&gt;
&lt;br /&gt;
The resolution of textures has to be appropriate to the content it conveys. We can distinguish between three different states here:&lt;br /&gt;
&lt;br /&gt;
=== Pixel exact resolution ===&lt;br /&gt;
For a lot of elements, this would be the ideal state in terms of quality. A texel to pixel mapping of exactly 1:1 will look the sharpest, but this is screen resolution dependent.&lt;br /&gt;
&lt;br /&gt;
=== Magnification ===&lt;br /&gt;
If the texture is smaller than the size it is displayed at, it gets magnified by interpolating linearly. This is often adequate for low-frequency textures, sporting low details.&lt;br /&gt;
&lt;br /&gt;
One recent optimization of Estuary was to introduce less demanding background patterns such as https://github.com/xbmc/xbmc/blob/248d0f0c5b38f07e04d249670dfff39b6d6959b4/addons/skin.estuary/extras/backgrounds/pattern1.png. The texture itself is just 640x630 and displayed at full screen resolution, but it is still sufficient due to the linear interpolation of the GPU. &lt;br /&gt;
&lt;br /&gt;
=== Minification ===&lt;br /&gt;
If a texture is larger than the size of the element it is displayed at, sampling performance is degraded. If the texture is significantly larger (&amp;gt;2x in a dimension), performance and image quality will be severely degraded, as texels of the source will be skipped. Heavy aliasing artifacts will occur. &lt;br /&gt;
&lt;br /&gt;
There is no justification to rely on texture minification, except when doing a &amp;quot;zoom out&amp;quot; animation.&lt;br /&gt;
&lt;br /&gt;
One bad example of that would be the Estuary codec flags (https://github.com/xbmc/xbmc/blob/248d0f0c5b38f07e04d249670dfff39b6d6959b4/addons/skin.estuary/media/flags/videoresolution/1080.png). The element is rendered at 115x52, but the textures are 270x120 in size.&lt;br /&gt;
&lt;br /&gt;
== 1D textures ==&lt;br /&gt;
Often enough, 2D textures are used for gradients when 1D textures would suffice. This is leaving free performance gains on the table.&lt;br /&gt;
&lt;br /&gt;
For example, https://github.com/xbmc/xbmc/blob/248d0f0c5b38f07e04d249670dfff39b6d6959b4/addons/skin.estuary/media/lists/panel-mediamenu.png is taking up a lot of resources unnecessarily. The texture is 450x920 (820KB) in size, but could be represented by a 450x1 (0.9KB) texture.&lt;br /&gt;
&lt;br /&gt;
== Proper alpha enabled textures ==&lt;br /&gt;
One big issue with skin textures is the improper usage of textures with pre-multiplied alpha (https://en.wikipedia.org/wiki/Alpha_compositing#Straight_versus_premultiplied). Textures have to be rendered with &amp;quot;straight&amp;quot; alpha to look correct. Otherwise, rendering quality will suffer, and texture optimizations (by video hardware and Kodi) won&#039;t be as effective.&lt;br /&gt;
&lt;br /&gt;
If working with Gimp, make sure to export PNGs with the option &amp;quot;Save color values from transparent pixels&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Channel optimized textures ==&lt;br /&gt;
&lt;br /&gt;
A lot of textures used in Kodi can be represented by just one or two texture channels. Since Kodi 22, the XBT texture processing pipeline features optimizations which make suitable textures more efficient. In older versions, the GPU driver might be able to enable some limited hardware optimizations instead.&lt;br /&gt;
&lt;br /&gt;
If a PNG just has a greyscale channel, it is stored as a single channel texture. If there is an additional alpha channel, the texture is stored with dual channels. There is no alpha only version for PNGs, but when supplying a greyscale+alpha texture with a fully white (0xFF) greyscale channel, the texture packer will be able to pack the texture into a single channel.&lt;br /&gt;
&lt;br /&gt;
By nature, textures with pre-multiplied alpha can&#039;t be stored in a single channel format, as the luminance channel contains information.&lt;br /&gt;
&lt;br /&gt;
It is often to possible to apply texture coloring via a diffuse color. This is highly preferred, as the texture can be reduced to a single/dual channel texture in this case.&lt;br /&gt;
&lt;br /&gt;
In Estuary, around 80% of all textures are single channel textures (luminance or alpha). Further 10% are dual channel textures (luminance+alpha). Remaining textures are RGB/RGBA.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
If the previous points are kept in mind when authoring textures, performance and quality gains can be substantial (compared to a lot of current textures).&lt;br /&gt;
&lt;br /&gt;
* The smaller a texture is (through resolution and channel optimization), the better the XBT size. The GPU needs less memory bandwidth, which may lead to better rendering and system performance. The texture is uploaded faster, resulting in less jank. In case of Estuary, the XBT shrank around 25%. The GPU resources needed shrank by an estimated 60%.&lt;br /&gt;
* Single and dual channel textures also help GPU compression schemes. With (often nearly lossless) GPU compression, texture sizes can be reduced further by at least 50%.&lt;br /&gt;
* Too large texture will reduce quality and performance.&lt;br /&gt;
* Textures with pre-multiplied alpha have quality issues.&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin_development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=HOW-TO:Texture_authoring&amp;diff=253537</id>
		<title>HOW-TO:Texture authoring</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=HOW-TO:Texture_authoring&amp;diff=253537"/>
		<updated>2024-09-21T14:41:23Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: Created page with &amp;quot;== Introduction == Textures are an essential part of the Kodi UI. It is important for them to have suitable properties, or otherwise image quality and performance will suffer.  Note that the page is still under construction.  == How a GPU samples textures == In general, Kodi employs bi-linear filtering of non-mipmapped textures (https://en.wikipedia.org/wiki/Texture_filtering). For one sample, the four most adjacent texels (texture elements) get fetched, which in turn wi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Textures are an essential part of the Kodi UI. It is important for them to have suitable properties, or otherwise image quality and performance will suffer.&lt;br /&gt;
&lt;br /&gt;
Note that the page is still under construction.&lt;br /&gt;
&lt;br /&gt;
== How a GPU samples textures ==&lt;br /&gt;
In general, Kodi employs bi-linear filtering of non-mipmapped textures (https://en.wikipedia.org/wiki/Texture_filtering). For one sample, the four most adjacent texels (texture elements) get fetched, which in turn will be added together based on their distance to the sample point. If a texel point is matching a sample point, it will be the sole contributor of its color. If the sampling point is right in the middle of all four texels, the result will be the exact average of all four texels.&lt;br /&gt;
&lt;br /&gt;
Note that at the sampling stage, there is no concept of color/alpha channels. There are up to four channels of data, which are totally independent of each other. This might be RGBA, but it does not have to.&lt;br /&gt;
&lt;br /&gt;
This has implications on how textures should be authored.&lt;br /&gt;
&lt;br /&gt;
== Texture Resolution ==&lt;br /&gt;
Try to optimize textures to a nominal screen resolution of 1920x1080. This would look perfect on normal FullHD TV&#039;s, while it would still be good enough for 4k.&lt;br /&gt;
&lt;br /&gt;
The resolution of textures has to be appropriate to the content it conveys. We can distinguish between three different states here:&lt;br /&gt;
&lt;br /&gt;
=== Pixel exact resolution ===&lt;br /&gt;
For a lot of elements, this would be the ideal state in terms of quality. A texel to pixel mapping of exactly 1:1 will look the sharpest, but this is screen resolution dependent.&lt;br /&gt;
&lt;br /&gt;
=== Magnification ===&lt;br /&gt;
If the texture is smaller than the size it is displayed at, it gets magnified by interpolating linearly. This is often adequate for low-frequency textures, sporting low details.&lt;br /&gt;
&lt;br /&gt;
One recent optimization of Estuary was to introduce less demanding background patterns such as https://github.com/xbmc/xbmc/blob/248d0f0c5b38f07e04d249670dfff39b6d6959b4/addons/skin.estuary/extras/backgrounds/pattern1.png. The texture itself is just 640x630 and displayed at full screen resolution, but it is still sufficient due to the linear interpolation of the GPU. &lt;br /&gt;
&lt;br /&gt;
=== Minification ===&lt;br /&gt;
If a texture is larger than the size of the element it is displayed at, sampling performance is degraded. If the texture is significantly larger (&amp;gt;2x in a dimension), performance and image quality will be severely degraded, as texels of the source will be skipped. Heavy aliasing artifacts will occur. &lt;br /&gt;
&lt;br /&gt;
There is no justification to rely on texture minification, except when doing a &amp;quot;zoom out&amp;quot; animation.&lt;br /&gt;
&lt;br /&gt;
One bad example of that would be the Estuary codec flags (https://github.com/xbmc/xbmc/blob/248d0f0c5b38f07e04d249670dfff39b6d6959b4/addons/skin.estuary/media/flags/videoresolution/1080.png). The element is rendered at 115x52, but the textures are 270x120 in size.&lt;br /&gt;
&lt;br /&gt;
== 1D textures ==&lt;br /&gt;
Often enough, 2D textures are used for gradients when 1D textures would suffice. This is leaving free performance gains on the table.&lt;br /&gt;
&lt;br /&gt;
For example, https://github.com/xbmc/xbmc/blob/248d0f0c5b38f07e04d249670dfff39b6d6959b4/addons/skin.estuary/media/lists/panel-mediamenu.png is taking up a lot of resources unnecessarily. The texture is 450x920 (820KB) in size, but could be represented by a 450x1 (0.9KB) texture.&lt;br /&gt;
&lt;br /&gt;
== Proper alpha enabled textures ==&lt;br /&gt;
One big issue with skin textures is the improper usage of textures with pre-multiplied alpha (https://en.wikipedia.org/wiki/Alpha_compositing#Straight_versus_premultiplied). Textures have to be rendered with &amp;quot;straight&amp;quot; alpha to look correct. Otherwise, rendering quality will suffer, and texture optimizations (by video hardware and Kodi) won&#039;t be as effective.&lt;br /&gt;
&lt;br /&gt;
If working with Gimp, make sure to export PNGs with the option &amp;quot;Save color values from transparent pixels&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Channel optimized textures ==&lt;br /&gt;
&lt;br /&gt;
A lot of textures used in Kodi can be represented by just one or two texture channels. Since Kodi 22, the XBT texture processing pipeline features optimizations which make suitable textures more efficient. In older versions, the GPU driver might be able to enable some limited hardware optimizations instead.&lt;br /&gt;
&lt;br /&gt;
If a PNG just has a greyscale channel, it is stored as a single channel texture. If there is an additional alpha channel, the texture is stored with dual channels. There is no alpha only version for PNGs, but when supplying a greyscale+alpha texture with a fully white (0xFF) greyscale channel, the texture packer will be able to pack the texture into a single channel.&lt;br /&gt;
&lt;br /&gt;
By nature, textures with pre-multiplied alpha can&#039;t be stored in a single channel format, as the luminance channel contains information.&lt;br /&gt;
&lt;br /&gt;
It is often to possible to apply texture coloring via a diffuse color. This is highly preferred, as the texture can be reduced to a single/dual channel texture in this case.&lt;br /&gt;
&lt;br /&gt;
In Estuary, around 80% of all textures are single channel textures (luminance or alpha). Further 10% are dual channel textures (luminance+alpha). Remaining textures are RGB/RGBA.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
If the previous points are kept in mind when authoring textures, performance and quality gains can be substantial (compared to a lot of current textures).&lt;br /&gt;
&lt;br /&gt;
* The smaller a texture is (through resolution and channel optimization), the better the XBT size. The GPU needs less memory bandwidth, which may lead to better rendering and system performance. The texture is uploaded faster, resulting in less jank. In case of Estuary, the XBT shrank around 25%. The GPU resources needed shrank by an estimated 60%.&lt;br /&gt;
* Single and dual channel textures also help GPU compression schemes. With (often nearly lossless) GPU compression, texture sizes can be reduced further by at least 50%.&lt;br /&gt;
* Too large texture will reduce quality and performance.&lt;br /&gt;
* Textures with pre-multiplied have quality issues.&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin_development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Changes_To_The_Skinning_Engine&amp;diff=253515</id>
		<title>Changes To The Skinning Engine</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Changes_To_The_Skinning_Engine&amp;diff=253515"/>
		<updated>2024-09-17T21:17:57Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Changes to Kodi 22 (Piers) ==&lt;br /&gt;
&lt;br /&gt;
=== Engine changes ===&lt;br /&gt;
; New InfoLabels to identify multiple PVR Clients&lt;br /&gt;
: System.PVRCount - If evaluated as a string or integer returns the count of enabled PVR clients.&lt;br /&gt;
: ListItem.BackendInstanceName - Returns the name of the PVR client instance for the associated list item.&lt;br /&gt;
: Renamed: System.PVRCount (int) -&amp;gt; PVR.ClientCount: Number of PVR clients enabled.&lt;br /&gt;
: Removed: System.PVRCount (string)&lt;br /&gt;
: Renamed: ListItem.BackendInstanceName (string) -&amp;gt; ListItem.PVRInstanceName: If selected item is of type PVR (recording, timer, EPG), the name of the instance of the PVR client add-on, as specified by the user in the add-on settings. Empty if the PVR client add-on does not support multiple instances or item is not of type PVR.&lt;br /&gt;
:  Added: ListItem.PVRClientName (string): If selected item is of type PVR (recording, timer, EPG), the name of the PVR client add-on, as specified by the add-on developer. Empty if the item is not of type PVR. &lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25159&lt;br /&gt;
&lt;br /&gt;
; Added channel logo&lt;br /&gt;
: ListItem.ChannelLogo (string): The path for the logo of the currently selected radio or TV channel, if available (PVR).&lt;br /&gt;
: VideoPlayer.ChannelLogo (string): The path for the logo of the currently playing TV channel, if available (PVR).&lt;br /&gt;
: MusicPlayer.ChannelLogo (string): The path for the logo of the currently playing radio channel, if available (PVR). &lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25142&lt;br /&gt;
&lt;br /&gt;
; Added parental rating icons for listitems&lt;br /&gt;
: ListItem.ParentalRatingIcon (string): The path to an icon representing the ListItem.ParentalRatingCode.&lt;br /&gt;
: ListItem.ParentalRatingSource (string): The source used to determine the ListItem.ParentalRatingCode value.  &lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/24096&lt;br /&gt;
&lt;br /&gt;
; Added parental rating icons the video player&lt;br /&gt;
: VideoPlayer.ParentalRatingCode (string): Same as the ListItem value, but for the VideoPlayer context.&lt;br /&gt;
: VideoPlayer.ParentalRatingIcon (string): Same as the ListItem value, but for the VideoPlayer context.&lt;br /&gt;
: VideoPlayer.ParentalRatingSource (string): Same as the ListItem value, but for the VideoPlayer context. &lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25664&lt;br /&gt;
&lt;br /&gt;
=== Rendering changes ===&lt;br /&gt;
; GL/GLES - Font rendering improved (no more jitter)&lt;br /&gt;
: The geometry setup for text strings has been improved. Vertex processing is now being done on the GPU, instead of the CPU. Especially zooming will look smoother. Shadow placement and alignment when rotating will look better.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/24605&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25033&lt;br /&gt;
&lt;br /&gt;
; GL/GLES - Added anisotropic filtering support&lt;br /&gt;
: When enabled in the advanced setting, a GPU might apply a better texture filter when viewing an element at a glancing angle. The effect is highly vendor dependent and might introduce a performance degradation.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/24841&lt;br /&gt;
&lt;br /&gt;
; GL/GLES - Implemented front to back rendering&lt;br /&gt;
:  Opaque elements are now rendered from front to back, if enabled via an advanced setting. This is saving resources in otherwise overdrawn areas. There should be no visual changes, but the feature is still experimental.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/22919&lt;br /&gt;
&lt;br /&gt;
; GL/GLES - Improved screen clearing behavior at the start of each frame&lt;br /&gt;
:  The same PR also changes details of the screen clearing behavior at the start of the frame. Please make sure to set a background color, if you don&#039;t draw over the whole screen. Otherwise, the content of the background is undefined for performance reasons, and might contain junk.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/22919&lt;br /&gt;
&lt;br /&gt;
; GL/GLES - Added support for new internal texture formats&lt;br /&gt;
: With Kodi 22, support for texture formats other than RGBA/BGRA has been added. This includes support for size optimized formats, such as luminance- and alpha-textures, but also compressed textures. Size optimized formats will be expanded to full BGRA on systems without support (currently DX, and partially GLES 2.0).&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25205&lt;br /&gt;
&lt;br /&gt;
=== Misc Changes ===&lt;br /&gt;
; Introducing XBT v3 texture bundles&lt;br /&gt;
: The XBT texture format has been updated. It now can support all the internal texture formats used by Kodi (https://github.com/xbmc/xbmc/blob/master/xbmc/guilib/TextureFormats.h).&lt;br /&gt;
: In addition to XBT v2 texture files, Kodi 22 will also be able to read the v3 version of the format.&lt;br /&gt;
: The texture packer will now try to store size optimized formats, if applicable.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25714&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin_development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Changes_To_The_Skinning_Engine&amp;diff=253514</id>
		<title>Changes To The Skinning Engine</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Changes_To_The_Skinning_Engine&amp;diff=253514"/>
		<updated>2024-09-17T21:16:25Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: Created page with &amp;quot;== Changes to Kodi 22 (Piers) ==  === Engine changes === ; New InfoLabels to identify multiple PVR Clients : System.PVRCount - If evaluated as a string or integer returns the count of enabled PVR clients. : ListItem.BackendInstanceName - Returns the name of the PVR client instance for the associated list item. : Renamed: System.PVRCount (int) -&amp;gt; PVR.ClientCount: Number of PVR clients enabled. : Removed: System.PVRCount (string) : Renamed: ListItem.BackendInstanceName (st...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Changes to Kodi 22 (Piers) ==&lt;br /&gt;
&lt;br /&gt;
=== Engine changes ===&lt;br /&gt;
; New InfoLabels to identify multiple PVR Clients&lt;br /&gt;
: System.PVRCount - If evaluated as a string or integer returns the count of enabled PVR clients.&lt;br /&gt;
: ListItem.BackendInstanceName - Returns the name of the PVR client instance for the associated list item.&lt;br /&gt;
: Renamed: System.PVRCount (int) -&amp;gt; PVR.ClientCount: Number of PVR clients enabled.&lt;br /&gt;
: Removed: System.PVRCount (string)&lt;br /&gt;
: Renamed: ListItem.BackendInstanceName (string) -&amp;gt; ListItem.PVRInstanceName: If selected item is of type PVR (recording, timer, EPG), the name of the instance of the PVR client add-on, as specified by the user in the add-on settings. Empty if the PVR client add-on does not support multiple instances or item is not of type PVR.&lt;br /&gt;
:  Added: ListItem.PVRClientName (string): If selected item is of type PVR (recording, timer, EPG), the name of the PVR client add-on, as specified by the add-on developer. Empty if the item is not of type PVR. &lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25159&lt;br /&gt;
&lt;br /&gt;
; Added channel logo&lt;br /&gt;
: ListItem.ChannelLogo (string): The path for the logo of the currently selected radio or TV channel, if available (PVR).&lt;br /&gt;
: VideoPlayer.ChannelLogo (string): The path for the logo of the currently playing TV channel, if available (PVR).&lt;br /&gt;
: MusicPlayer.ChannelLogo (string): The path for the logo of the currently playing radio channel, if available (PVR). &lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25142&lt;br /&gt;
&lt;br /&gt;
; Added parental rating icons for listitems&lt;br /&gt;
: ListItem.ParentalRatingIcon (string): The path to an icon representing the ListItem.ParentalRatingCode.&lt;br /&gt;
: ListItem.ParentalRatingSource (string): The source used to determine the ListItem.ParentalRatingCode value.  &lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/24096&lt;br /&gt;
&lt;br /&gt;
; Added parental rating icons the video player&lt;br /&gt;
: VideoPlayer.ParentalRatingCode (string): Same as the ListItem value, but for the VideoPlayer context.&lt;br /&gt;
: VideoPlayer.ParentalRatingIcon (string): Same as the ListItem value, but for the VideoPlayer context.&lt;br /&gt;
: VideoPlayer.ParentalRatingSource (string): Same as the ListItem value, but for the VideoPlayer context. &lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25664&lt;br /&gt;
&lt;br /&gt;
=== Rendering changes ===&lt;br /&gt;
; GL/GLES - Font rendering improved (no more jitter)&lt;br /&gt;
: The geometry setup for text strings has been improved. Vertex processing is now being done on the GPU, instead of the CPU. Especially zooming will look smoother. Shadow placement and alignment when rotating will look better.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/24605&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25033&lt;br /&gt;
&lt;br /&gt;
; GL/GLES - Added anisotropic filtering support&lt;br /&gt;
: When enabled in the advanced setting, a GPU might apply a better texture filter when viewing an element at a glancing angle. The effect is highly vendor dependent and might introduce a performance degradation.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/24841&lt;br /&gt;
&lt;br /&gt;
; GL/GLES - Implemented front to back rendering&lt;br /&gt;
:  Opaque elements are now rendered from front to back, if enabled via an advanced setting. This is saving resources in otherwise overdrawn areas. There should be no visual changes, but the feature is still experimental.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/22919&lt;br /&gt;
&lt;br /&gt;
; GL/GLES - Improved screen clearing behavior at the start of each frame&lt;br /&gt;
:  The same PR also changes details of the screen clearing behavior at the start of the frame. Please make sure to set a background color, if you don&#039;t draw over the whole screen. Otherwise, the content of the background is undefined for performance reasons, and might contain junk.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/22919&lt;br /&gt;
&lt;br /&gt;
; GL/GLES - Added support for new internal texture formats&lt;br /&gt;
: With Kodi 22, support for texture formats other than RGBA/BGRA has been added. This includes support for size optimized formats, such as luminance- and alpha-textures, but also compressed textures. Size optimized formats will be expanded to full BGRA on systems without support (currently DX, and partially GLES 2.0).&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25205&lt;br /&gt;
&lt;br /&gt;
=== Misc Changes ===&lt;br /&gt;
; Introducing XBT v3 texture bundles&lt;br /&gt;
: The XBT texture format has been updated. It now can support all the internal texture formats used by Kodi (https://github.com/xbmc/xbmc/blob/master/xbmc/guilib/TextureFormats.h).&lt;br /&gt;
: In addition to XBT v2 texture files, Kodi 22 will also be able to read the v3 version of the format.&lt;br /&gt;
: The texture packer will now try to store size optimized formats, if applicable.&lt;br /&gt;
: PR: https://github.com/xbmc/xbmc/pull/25714&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Supported_hardware&amp;diff=253513</id>
		<title>Supported hardware</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Supported_hardware&amp;diff=253513"/>
		<updated>2024-09-14T15:42:41Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[General topics]]{{l2|[[Hardware]]}}|[[Installing]]}}&lt;br /&gt;
{{forum link2|1=Want to discuss or ask about what hardware is good for Kodi? Check out the [http://forum.kodi.tv/forumdisplay.php?fid=112 Hardware for Kodi subforum]}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;Kodi is officially supported on a number of operating systems and hardware devices that are designed to be connected directly to a TV. Kodi runs well on what are relatively &amp;quot;underpowered&amp;quot; systems, thanks to hardware video decoding being common on nearly all supported platforms. These requirements don&#039;t include what might be required for some &amp;quot;advanced&amp;quot; features, such as PVR, which might require additional hardware. &amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Requirements ==&lt;br /&gt;
&amp;lt;section begin=&amp;quot;General Requirements&amp;quot; /&amp;gt;&lt;br /&gt;
Kodi&#039;s rich user interface requires hardware acceleration by a graphics card. The currently supported application interfaces are OpenGL, OpenGL ES, and DirectX. DirectX is used only on Windows and Xbox, all other platforms access OpenGL/OpenGL ES. Each interface comes with its own requirements.&lt;br /&gt;
&lt;br /&gt;
=== OpenGL ===&lt;br /&gt;
&amp;lt;section begin=&amp;quot;OpenGL&amp;quot; /&amp;gt;Kodi will run on older systems sporting OpenGL 2.1, provided it supports the following GL extensions:&lt;br /&gt;
* GL_EXT_texture_swizzle/GL_ARB_texture_swizzle&lt;br /&gt;
&lt;br /&gt;
The follwing extensions are optional, but recommended:&lt;br /&gt;
* GL_EXT_texture_sRGB&lt;br /&gt;
* GL_EXT_texture_sRGB_R8&lt;br /&gt;
* GL_EXT_texture_sRGB_RG8&lt;br /&gt;
&lt;br /&gt;
The recommended version of OpenGL is 3.3 (released in 2010) or newer. To get the full feature set of Kodi, OpenGL 4.0 is needed.&lt;br /&gt;
&amp;lt;section end=&amp;quot;OpenGL&amp;quot; /&amp;gt;&lt;br /&gt;
=== OpenGL ES ===&lt;br /&gt;
&amp;lt;section begin=&amp;quot;OpenGL ES&amp;quot; /&amp;gt;Kodi features support of OpenGL ES 2.0, with some limitations. The follwing extensions are optional, but recommended:&lt;br /&gt;
* GL_EXT_texture_format_BGRA8888/GL_IMG_texture_format_BGRA8888/GL_APPLE_texture_format_BGRA8888&lt;br /&gt;
* GL_ETC1_RGB8_OES&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 3.0 is recommended, but OpenGL ES 3.2 is required to enable all features.&amp;lt;section end=&amp;quot;OpenGL ES&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;section begin=&amp;quot;DirectX&amp;quot; /&amp;gt;GPU drivers must support DirectX 11 Feature Level 9.1.&amp;lt;section end=&amp;quot;DirectX&amp;quot; /&amp;gt;&amp;lt;section end=&amp;quot;General Requirements&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Android ==&lt;br /&gt;
{{see also|Android|Android hardware}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;Android&amp;quot; /&amp;gt;{{Warning|It is highly recommended for users to not make any hardware purchases in anticipation of running Kodi on Android without first researching the device you want to buy. Before you do buy, make sure multiple people have verified that it works! &amp;lt;big&amp;gt;&amp;lt;u&amp;gt;&#039;&#039;&#039;&#039;&#039;If in doubt, do not buy any hardware!&#039;&#039;&#039;&#039;&#039;&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;}}&lt;br /&gt;
* Kodi v17 and later requires Android 5.0 or higher.&lt;br /&gt;
* x86 (Intel) or a NEON-compatible ARM-processor, (for example: Nvidia Tegra 3 and newer are fully supported by Kodi, while Tegra 2 and older are not).&lt;br /&gt;
* The main aim for the Android port of Kodi is to foremost target media-players/set-top-boxes/sticks that connect to a large screen television and uses a standard remote control as its main interface device, (that is the same market as for HTPC).&amp;lt;section end=&amp;quot;Android&amp;quot; /&amp;gt;&lt;br /&gt;
* Android TV 11 or higher to allow Kodi access to local files you need to manually set files permissions. On Android TV go to &amp;quot;Settings -&amp;gt; Apps - Kodi -&amp;gt; Permissions -&amp;gt; Files and Media&amp;quot; and select &amp;quot;Allow all the time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== iOS and iPadOS ==&lt;br /&gt;
{{see also|iOS}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;iOS&amp;quot; /&amp;gt;&lt;br /&gt;
*To &#039;&#039;&#039;[[HOW-TO:Install Kodi for iOS|install Kodi for iOS/iPadOS]]&#039;&#039;&#039; you must have one of the following:&lt;br /&gt;
** a jailbroken [[w:iDevice|iDevice]] running iOS 6.0 or higher, though iOS 8.0 or higher is recommended&lt;br /&gt;
** a normal iDevice running iOS 6.0 or higher and a Mac running Xcode 7 and higher&lt;br /&gt;
* For hardware: iPad, iPhone and iPod touch.&amp;lt;section end=&amp;quot;iOS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== tvOS ==&lt;br /&gt;
{{see also|tvOS}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;tvOS&amp;quot; /&amp;gt;&lt;br /&gt;
=== Apple TV 2 ===&lt;br /&gt;
&amp;lt;section begin=&amp;quot;Apple TV 2&amp;quot; /&amp;gt;* As of v15.0, Kodi no longer supports the Apple TV 2.&amp;lt;section end=&amp;quot;Apple TV 2&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Apple TV 3 ===&lt;br /&gt;
&amp;lt;section begin=&amp;quot;Apple TV 3&amp;quot; /&amp;gt;* Kodi is not supported on Apple TV 3 because there is no jailbreak for this device and it&#039;s impossible to sideload an application on it.&amp;lt;section end=&amp;quot;Apple TV 3&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Apple TV 4 and 5 (HD and 4K) ===&lt;br /&gt;
&amp;lt;section begin=&amp;quot;ATV4&amp;quot; /&amp;gt;* Apple TV 4 and 5 (also called Apple TV HD and Apple TV 4K) are supported by Kodi. For step by step Installation guide, follow &#039;&#039;&#039;[[HOW-TO:Install Kodi on Apple TV 4 and 5 (HD and 4K)|HOW-TO:Install Kodi on Apple TV 4 and 5 (HD and 4K)]]&#039;&#039;&#039;.&amp;lt;section end=&amp;quot;ATV4&amp;quot; /&amp;gt;&amp;lt;section end=&amp;quot;tvOS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
{{See also|Linux}}&lt;br /&gt;
&lt;br /&gt;
=== Desktop ===&lt;br /&gt;
&amp;lt;section begin=&amp;quot;Linux&amp;quot; /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; style=&amp;quot;background-color:#FFFFFF;&amp;quot;&lt;br /&gt;
! CPU&lt;br /&gt;
| x86 or x86-64 processor such as: Intel Pentium 4/ Pentium M, AMD Athlon 64 / Opteron, or newer CPU (that support [[w:Streaming SIMD Extensions|SSE2]], which all CPUs made within the last 10-years does).&lt;br /&gt;
* If your GPU/VPU does not support hardware video decoding then you will require a fast modern processor is required to decode some 1080p videos encoded in H.264, VC-1/WMV9, HEVC/H.265 VP9, etc&lt;br /&gt;
|-&lt;br /&gt;
! RAM&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;Recommended:&#039;&#039;&#039; 1GB or more in a HTPC media player appliance-like computer dedicated for Kodi, and 2GB or more in a computer for multipurpose use.&lt;br /&gt;
|-&lt;br /&gt;
! Graphics&lt;br /&gt;
|&lt;br /&gt;
Kodi will run on most graphics cards made within the last 10-years or so, though for good hardware video decoding support a little newer graphics cards can be required. This includes most cards from AMD/ATI, Intel, or NVIDIA which support OpenGL 2.0 or later.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AMD/Intel&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Minimum:&#039;&#039;&#039; [[w:Mesa_(computer_graphics)|Mesa 11.3]] or later&lt;br /&gt;
* &#039;&#039;&#039;Recommended:&#039;&#039;&#039;  [[w:Mesa_(computer_graphics)|Mesa 17.1]] or later (required for 10 bit HEVC)&lt;br /&gt;
|-&lt;br /&gt;
! Video decoding&lt;br /&gt;
| For hardware video decoding, which may be necessary on low-performance CPUs to playback 1080p content, make sure your GPU or VPU supports either VAAPI or VDPAU. For everything but older AMD cards and Nvidia, VAAPI is recommended. On AMD, you might have to start with the environment variable &amp;lt;code&amp;gt;KODI_GL_INTERFACE&amp;lt;/code&amp;gt; set to &amp;lt;code&amp;gt;GLX&amp;lt;/code&amp;gt; in order to get VDPAU support.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;datatable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
! !! ATI/AMD ( [[w:Video Acceleration API|VA-API]] 2.0.0 or [[w:VDPAU|VDPAU]] ) !! Intel ( [[w:Video Acceleration API|VA-API]] 1.7.1 ) !! Nvidia ( [[w:VDPAU|VDPAU]] )&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Minimum without HW decoding:&#039;&#039;&#039; || [[w:Radeon|ATI Radeon RV710/M92 (HD 4300/4500)]] [[w:Unified Video Decoder#UVD enabled GPUs|Note: These are uvd2.2 cards]] || [[w:Intel HD and Iris Graphics| Arrandale / Clarkdale]] or newer || [[w:GeForce|Nvidia GeForce 6-Series]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Minimum for HW decoding of 8-bit H.264 and VC-1:&#039;&#039;&#039; || [[w:Radeon HD 5000 series|Radeon HD 5000 series]] or newer || [[w:Sandy Bridge|Sandy Bridge]] / [[w:Silvermont|Silvermont]] or newer || [[w:GeForce 8 series|GeForce 8 series]] or newer &amp;lt;small&amp;gt;(released 2006)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Minimum for HW decoding of 8-bit HEVC (H.265):&#039;&#039;&#039; || [[w:AMD_Radeon_Rx_300_series|AMD Radeon Rx 300 series]] or newer || [[w:Intel HD and Iris Graphics| Braswell / Skylake]] or newer || [[w:GeForce|Nvidia GeForce 900 series (GM20x)]] or newer&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Minimum for HW decoding of 10-bit HEVC (H.265):&#039;&#039;&#039; || [[w:AMD_Radeon_400_series|AMD Radeon 400 series]] or newer || [[w:Intel_HD_and_Iris_Graphic| Apollo Lake / Kaby Lake]] or newer || Not available&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Minimum for HW decoding of VP9:&#039;&#039;&#039; || Stoney Ridge [[w:AMD_Accelerated_Processing_Unit|APU]] or newer; not available for desktop GPUs at the moment || [[w:Intel_HD_and_Iris_Graphic| Apollo Lake / Kaby Lake]] or newer || Not available&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
! Drive space&lt;br /&gt;
| The Kodi application generally only takes up between 100 to 200 MB of space, depending on how the binary is compiled. Technically speaking, if your hardware supports netbooting, you do not even require a internal storage for either the operating-system or for Kodi.&lt;br /&gt;
* &#039;&#039;&#039;Minimum:&#039;&#039;&#039; 4 to 8GB&lt;br /&gt;
* &#039;&#039;&#039;Recommended:&#039;&#039;&#039; 16GB or more&lt;br /&gt;
: Depending on how big your video library is. Most of the space required for Kodi comes from the images/artwork cache.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{note|There´s no 304.xxx driver for Ubuntu 18.04 available anymore from the &amp;quot;Graphic Drivers&amp;quot;-ppa. Users who are using GeForce 6-series cards should either stay on an older Ubuntu version or use newer cards}}&lt;br /&gt;
&amp;lt;section end=&amp;quot;Linux&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Embedded systems (ARM/MIPS-based hardware) ===&lt;br /&gt;
Other than OpenGL ES 2.0 graphics support being a must it is very hard to generalize Kodi hardware requirements for Linux-based operating-system distributions on ARM or MIPS based embedded systems. This is partially due to most of the work in this area still being early/on-going in development. For most ARM and MIPS-based devices, hardware video decoding support will also be needed for most high-definition videos, (and possibly even some standard-definition videos). Some newer and faster high-end ARM/MIPS chipset can decode some high-definition video using software video decoding, but those encoded with the latest video codecs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Here are a few popular embedded hardware devices that are known to work with Kodi and Linux:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Raspberry Pi]]&#039;&#039;&#039; - Hardware video decoding support for H.264, MPEG-2, and VC-1. GUI is responsive on most light skins. Official supported by many third-party JeOS (Just enough Operating System) Linux distributions made for Kodi such as [[LibreELEC]], GeeXboX, XBian, and [[OSMC]]&lt;br /&gt;
* &#039;&#039;&#039;SolidRun_CuBox-i&#039;&#039;&#039; - Official supported by [[LibreELEC]], GeeXboX and XBian&lt;br /&gt;
* &#039;&#039;&#039;Various &amp;quot;Android&amp;quot; boxes&#039;&#039;&#039; - can run reinstalled with a Linux firmware and boot directly into Kodi. Hardware video decoding for most video codecs, GUI is very responsive on most skins. Running Linux and Kodi on these &amp;quot;Android boxes&amp;quot; will likely result in better performance and enhanced playback capabilities than running Kodi under Android.&lt;br /&gt;
&lt;br /&gt;
=== JeOS implementations for Kodi ===&lt;br /&gt;
{{main|JeOS implementations for Kodi}} &lt;br /&gt;
{{#lst:JeOS implementations for Kodi|JeOS for Kodi}}&lt;br /&gt;
&lt;br /&gt;
=== WebOS ===&lt;br /&gt;
{{see also|HOW-TO:Install Kodi for webOS}}&lt;br /&gt;
Initial support for WebOS was implemented in version 21.0a1-Omega (Apr 17, 2023). &lt;br /&gt;
&lt;br /&gt;
== Mac OS X ==&lt;br /&gt;
{{see also|Mac OS X}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;Mac OS X&amp;quot; /&amp;gt;&lt;br /&gt;
*Kodi v17 requires Mac OS X 10.8 or later.&lt;br /&gt;
*Kodi v18 (and its nightlies) will at least require 10.9)&lt;br /&gt;
*Kodi v20 and above requires an Intel Mac running OS X 10.13 or higher.&amp;lt;section end=&amp;quot;Mac OS X&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
{{See also|Windows}}&lt;br /&gt;
{{Note|Due to changes in code it may be possible that older hardware/videocards are no longer supported. If starting of Kodi fails then try upgrading to last available drivers (or beta drivers).}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;Windows&amp;quot; /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; style=&amp;quot;background-color:#FFFFFF;&amp;quot;&lt;br /&gt;
! Windows Version&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;Minimum:&#039;&#039;&#039; Windows 10&lt;br /&gt;
* &#039;&#039;&#039;Recommended:&#039;&#039;&#039; Windows 11&lt;br /&gt;
|-&lt;br /&gt;
! CPU&lt;br /&gt;
| x86 or x86-64 processor such as: Intel Pentium 4/ Pentium M, AMD Athlon 64 / Opteron, or newer CPU (that support [[w:Streaming SIMD Extensions|SSE2]], which all CPUs made within the last 10-years does).&lt;br /&gt;
* If your GPU/VPU does not support hardware video decoding then you will require a fast modern processor is required to decode some 1080p videos encoded in H.264, VC-1/WMV9, HEVC/H.265 VP9, etc&lt;br /&gt;
|-&lt;br /&gt;
! RAM&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;Recommended:&#039;&#039;&#039; 1GB or more in a HTPC media player appliance-like computer dedicated for Kodi, and 2GB or more in a computer for multipurpose use.&lt;br /&gt;
|-&lt;br /&gt;
! Graphics&lt;br /&gt;
|&lt;br /&gt;
GPU hardware must support at least level [[w:DirectX|DirectX version 9.0c]] however the GPU software drivers must support the [[w:Feature_levels_in_Direct3D#Direct3D_11| DirectX 11 Feature Level 9.1]] (which means the DX11 API has been implemented in the GPU software driver to be compatible with DX9 hardware) &lt;br /&gt;
|-&lt;br /&gt;
! Video decoding&lt;br /&gt;
| On low-performance CPUs to playback 1080p content then hardware video decoding maybe necessary.&lt;br /&gt;
{| class=&amp;quot;datatable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
! !! AMD/ATI !! Intel !! Nvidia&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Minimum without HW decoding:&#039;&#039;&#039; || [[w:Radeon|ATI Radeon R300 Series (Radeon 9500)]] || [[w:Intel HD and Iris Graphics| Arrandale / Clarkdale]] or newer || [[w:GeForce|Nvidia GeForce 4-Series]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Minimum for HW decoding of 8-bit H.264 and VC-1:&#039;&#039;&#039; || [[w:Radeon|	AMD/ATI Radeon HD 3000 Series ]] or newer || [[w:Intel HD and Iris Graphics| Bay Trail /Sandybridge]] or newer || [[w:GeForce|Nvidia GeForce 4-Series]] or newer&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Minimum for HW decoding of 8-bit HEVC (H.265) and VP9:&#039;&#039;&#039; || [[w:Radeon|AMD Radeon RX 300 series]] or newer || [[w:Intel HD and Iris Graphics| Braswell / Skylake]] or newer || [[w:GeForce|Nvidia GeForce 8-Series]] or newer&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Minimum for HW decoding of 10-bit HEVC (H.265) and VP9:&#039;&#039;&#039; || [[w:Radeon|AMD Radeon 400 series]] or newer || [[w:Intel_HD_and_Iris_Graphic| Apollo Lake / Kaby Lake]] or newer || [[w:GeForce|Nvidia GeForce 8-Series]] or newer&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
! Drive space&lt;br /&gt;
| The Kodi application generally only takes up between 100 to 200 MB of space, depending on how the binary is compiled. Technically speaking, if your hardware supports netbooting, you do not even require a internal storage for either the operating-system or for Kodi.&lt;br /&gt;
* &#039;&#039;&#039;Minimum:&#039;&#039;&#039; 4 to 8GB&lt;br /&gt;
* &#039;&#039;&#039;Recommended:&#039;&#039;&#039; 16GB or more&lt;br /&gt;
: Depending on how big your video library is. Most of the space required for Kodi comes from the images/artwork cache.&lt;br /&gt;
|}&amp;lt;section end=&amp;quot;Windows&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Updated|17}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Hardware|*]]&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:General topics]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Advancedsettings.xml&amp;diff=252615</id>
		<title>Advancedsettings.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Advancedsettings.xml&amp;diff=252615"/>
		<updated>2024-04-28T19:13:37Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: Include new GL/GLES GUI features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}{{mininav|[[Settings]]|page=advancedsettings.xml}}&lt;br /&gt;
{{bigger|{{note|&#039;&#039;&#039;The advancedsettings.xml file does not exist by default. You have to create it first!&#039;&#039;&#039;}} }}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;The [[advancedsettings.xml]] file, which does not exist by default, can be created by a user in their &#039;&#039;&#039;[[Userdata|userdata folder]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;advancedsettings.xml&amp;quot;. These advanced settings can be used to tweak various things such as episode naming patterns, special network ports, special behaviors, and more.&amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following page will describe the structure of the advancedsettings.xml file and the various individual settings.&lt;br /&gt;
&lt;br /&gt;
{{note|&lt;br /&gt;
# All XML tags must be lowercase. The start and end of the advancedsettings.xml file must have the &amp;lt;advancedsettings&amp;gt; and &amp;lt;/advancedsettings&amp;gt; tags.&lt;br /&gt;
# 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.&lt;br /&gt;
# For some Windows versions, Kodi has two &amp;lt;code&amp;gt;\userdata\&amp;lt;/code&amp;gt; folders. The correct one to put the advancedsettings.xml file in is not the one in Program Files, but in &amp;lt;code&amp;gt;%appdata%\Kodi\userdata\.&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
&lt;br /&gt;
The layout of &amp;lt;code&amp;gt;advancedsettings.xml&amp;lt;/code&amp;gt; is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting&amp;gt;value&amp;lt;/setting&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;setting&amp;gt;value&amp;lt;/setting&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;setting&amp;quot; gives the name of the setting, and &amp;quot;value&amp;quot; gives its value.&lt;br /&gt;
&lt;br /&gt;
A list of the available &amp;quot;setting&amp;quot; strings and their values is given below.&lt;br /&gt;
&lt;br /&gt;
= List of available settings =&lt;br /&gt;
List of available settings that are recognised in the advancedsettings.xml file &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/blob/master/xbmc/settings/AdvancedSettings.cpp&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recommended: Use the table of contents or the search function in your browser to locate items.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting settings ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== loglevel ===&lt;br /&gt;
{{Anchor|.3Cloglevel.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;loglevel&amp;quot; /&amp;gt;&lt;br /&gt;
Sets the logging level used to log errors and information. The &amp;quot;hide&amp;quot; attribute is optional. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;loglevel hide=&amp;quot;attribute&amp;quot;&amp;gt;options&amp;lt;/loglevel&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Attribute&lt;br /&gt;
! style=&amp;quot;width:500px;&amp;quot; | Action&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;true&#039;&#039;&#039; &lt;br /&gt;
| Hides the &amp;quot;enable debugging&amp;quot; setting in the Settings page. (default)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
| Allows &amp;quot;enable debugging&amp;quot; setting to switch between &#039;&#039;&#039;0&#039;&#039;&#039; and &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Option&lt;br /&gt;
! style=&amp;quot;width:500px;&amp;quot; | Action&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;-1&#039;&#039;&#039;&lt;br /&gt;
| No logging, suppresses all log output &lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
| Normal logging, only logging errors (default)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
| Debug logging with freemem, fps and cpu usage (no on screen)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;2&#039;&#039;&#039; &lt;br /&gt;
| Same as 1 (with on screen display)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;3&#039;&#039;&#039; &lt;br /&gt;
| Same as 1 + full smb logging&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Example &lt;br /&gt;
! style=&amp;quot;width:500px;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
! Example 1:&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;loglevel&amp;gt;2&amp;lt;/loglevel&amp;gt;  &lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Example 2:&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;loglevel hide=&amp;quot;true&amp;quot;&amp;gt;2&amp;lt;/loglevel&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The setting is persistent through shutdown and restarts.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If debugging is enabled in the GUI, loglevel will be set to &#039;&#039;&#039;2&#039;&#039;&#039;. This will over-ride the &amp;lt;code&amp;gt;advancedsettings.xml&amp;lt;/code&amp;gt; setting. You must disable the GUI Setting before adding the entry to &amp;lt;code&amp;gt;advancedsettings.xml&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;loglevel&amp;quot; /&amp;gt;&lt;br /&gt;
:&#039;&#039;{{see also|Log_file|label 1=Debug Log}}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== jsonrpc ===&lt;br /&gt;
{{Anchor|.3Cjsonrpc.3E}}&lt;br /&gt;
To make it easier for developers using the [[JSON-RPC_API]] API in their (third party) applications to debug during development the json output of Kodi can be prettified by setting &#039;&#039;&#039;compactoutput&#039;&#039;&#039; to &#039;&#039;&#039;false&#039;&#039;&#039;. Default json output mode is a compact print which does not contain any unnecessary whitespaces and therefore is difficult to read for humans.&lt;br /&gt;
Furthermore using the &#039;&#039;&#039;tcpport&#039;&#039;&#039; setting it is possible to change the default TCP port used by Kodi for JSON RPC (which is 9090) to any other valid port.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jsonrpc&amp;gt;&lt;br /&gt;
    &amp;lt;compactoutput&amp;gt;false&amp;lt;/compactoutput&amp;gt;&lt;br /&gt;
    &amp;lt;tcpport&amp;gt;9999&amp;lt;/tcpport&amp;gt;&lt;br /&gt;
&amp;lt;/jsonrpc&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Audio/video playback settings ==&lt;br /&gt;
&lt;br /&gt;
=== skiploopfilter ===&lt;br /&gt;
{{anchor|.3Cskiploopfilter.3E}}&lt;br /&gt;
The amount of the loop filter to skip on h.264 decoding.  This can help the performance of slower machines when decoding h264 content.  Values, in decreasing CPU usage (and decreasing quality)&lt;br /&gt;
* -16 None&lt;br /&gt;
* 0 Skip only empty frames (default)&lt;br /&gt;
* 8 Skip non-reference frames&lt;br /&gt;
* 16 Skip bi-dir frames&lt;br /&gt;
* 32 Skip all non-key frames&lt;br /&gt;
* 48 Skip all frames&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;skiploopfilter&amp;gt;8&amp;lt;/skiploopfilter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== video ===&lt;br /&gt;
{{anchor|.3Cvideo.3E}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;video&amp;gt; section also includes the following child-tags, which have their own sections:&lt;br /&gt;
*[[#cleandatetime]]&lt;br /&gt;
*[[#cleanstrings]]&lt;br /&gt;
*[[#excludefromscan]]&lt;br /&gt;
*[[#excludefromlisting]]&lt;br /&gt;
*[[#excludetvshowsfromscan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{note|Some tags that have a &amp;quot;third-level&amp;quot; and are grouped together are highlighted in color.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! Tag !! Description&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Parent tag that all other child tags need to be placed inside of. Do not use more than one &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; tag, but instead place all other child-tags within a single &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/video&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; set.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;subsdelayrange&amp;gt;10&amp;lt;/subsdelayrange&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Delay range for subtitles, in seconds.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;maxtempo&amp;gt;2.1&amp;lt;/maxtempo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Allow further increase of playback speed over the default of 1.5&amp;lt;br&amp;gt;&lt;br /&gt;
maxtempo must be in the range of 1.5 to 2.1 &amp;lt;br&amp;gt;&lt;br /&gt;
Be aware of the limitations of your platform / hardware as not all are capable of the increased maxtempo &amp;lt;ref&amp;gt;https://forum.kodi.tv/showthread.php?tid=10023&amp;amp;pid=2795069#pid2795069&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;audiodelayrange&amp;gt;10&amp;lt;/audiodelayrange&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Delay range for audio/video sync, in seconds.&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;usetimeseeking&amp;gt;true&amp;lt;/usetimeseeking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Whether to use time based or percentage based seeking. {{small see also|Skip steps}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekforwardbig&amp;gt;600&amp;lt;/timeseekforwardbig&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekbackwardbig&amp;gt;-600&amp;lt;/timeseekbackwardbig&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Time to seek forward in seconds when doing a long seek.  Defaults to 600 (10 minutes) and -600 (-10 minutes) respectively. &#039;&#039;{{small|See also: [[Skip steps]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekforward&amp;gt;2&amp;lt;/percentseekforward&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekbackward&amp;gt;-2&amp;lt;/percentseekbackward&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Amount to seek forward as a percentage, when doing a short seek.  Defaults to 2 (2%) and -2 (2%) respectively. &#039;&#039;{{small|See also: [[Skip steps]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekforwardbig&amp;gt;10&amp;lt;/percentseekforwardbig&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekbackwardbig&amp;gt;-10&amp;lt;/percentseekbackwardbig&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Amount to seek forward as a percentage, when doing a long seek.  Defaults to 10 (10%) and -10 (10%) respectively. &#039;&#039;{{small|See also: [[Skip steps]] }}&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;fullscreenonmoviestart&amp;gt;true&amp;lt;/fullscreenonmoviestart&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Whether to go to fullscreen or not when starting a movie. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;defaultplayer&amp;gt;VideoPlayer&amp;lt;/defaultplayer&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Set the default video player: VideoPlayer or an external player. See &#039;&#039;&#039;[[External players]]&#039;&#039;&#039; for more info.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromscan&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromscan&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Regular expressions that if evaluated to true won&#039;t be added to library.  It is possible to add multiple &amp;lt;code&amp;gt;&amp;lt;regexp&amp;gt;&amp;lt;/code&amp;gt; tags to match multiple patterns&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromlisting&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromlisting&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Regular expressions that if evaluated to true won&#039;t be displayed in files view.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;playcountminimumpercent&amp;gt;90&amp;lt;/playcountminimumpercent&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Minimum percentage that has to be played before it is marked as watched. Set to 101 to never auto-mark items as watched. &#039;&#039;{{small|See also: [[HOW-TO:Modify automatic watch and resume points]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ignoresecondsatstart&amp;gt;180&amp;lt;/ignoresecondsatstart&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Number of seconds to ignore at video start after which a resume point is created. &#039;&#039;{{small|See also: [[HOW-TO:Modify automatic watch and resume points]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ignorepercentatend&amp;gt;8&amp;lt;/ignorepercentatend&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| 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. &#039;&#039;{{small|See also: [[HOW-TO:Modify automatic watch and resume points]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;vdpauscaling&amp;gt;true&amp;lt;/vdpauscaling&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ppffmpegdeinterlacing&amp;gt;linblenddeint&amp;lt;/ppffmpegdeinterlacing&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Override the deinterlacing options passed to libpostproc.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ppffmpegpostprocessing&amp;gt;ha:128:7,va,dr&amp;lt;/ppffmpegpostprocessing&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Override the post processing options passed to libpostproc when &#039;Video post-processing&#039; is activated in GUI Videos-Settings-Playback.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;autoscalemaxfps&amp;gt;30&amp;lt;/autoscalemaxfps&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| When scaling method is set to auto, bilinear is chosen when the fps is higher than this limit, the default is 30.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;adjustrefreshrate&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | Settings for when &amp;quot;Adjust refreshrate to match video fps&amp;quot; is enabled in the video playback GUI settings.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;override&amp;gt;&lt;br /&gt;
      &amp;lt;fps&amp;gt;23.976&amp;lt;/fps&amp;gt;&lt;br /&gt;
      &amp;lt;refresh&amp;gt;60.0&amp;lt;/refresh&amp;gt;&lt;br /&gt;
    &amp;lt;/override&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; &amp;quot;Adjust refreshrate to match video fps&amp;quot; will try to select the best refreshrate for the video fps but it doesn&#039;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&#039;s possible to add as many overrides as you need.  Overrides are processed in order, if the first one doesn&#039;t match the fps or no refreshrates match that override, it will try the next one until no overrides are left.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fps&#039;&#039;&#039; - if the fps is between 23.966 and 23.986&lt;br /&gt;
* &#039;&#039;&#039;refresh&#039;&#039;&#039; - switch to the first found refreshrate that is between 59.99 and 60.01&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;override&amp;gt;&lt;br /&gt;
      &amp;lt;fpsmin&amp;gt;29.96&amp;lt;/fpsmin&amp;gt;&lt;br /&gt;
      &amp;lt;fpsmax&amp;gt;30.01&amp;lt;/fpsmax&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmin&amp;gt;59.0&amp;lt;/refreshmin&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmax&amp;gt;61.0&amp;lt;/refreshmax&amp;gt;&lt;br /&gt;
    &amp;lt;/override&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;fpsmin&#039;&#039;&#039; / &#039;&#039;&#039;fpsmin&#039;&#039;&#039; - You can also specify the fps range yourself.&lt;br /&gt;
* &#039;&#039;&#039;refreshmin&#039;&#039;&#039; / &#039;&#039;&#039;refreshmax&#039;&#039;&#039; - Same for the refreshrate&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;fallback&amp;gt;&lt;br /&gt;
      &amp;lt;refresh&amp;gt;50.0&amp;lt;/refresh&amp;gt;&lt;br /&gt;
    &amp;lt;/fallback&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; If 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&#039;t match any refreshrate, it will try the next one until no fallbacks are left.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;refresh&#039;&#039;&#039; - Switch to the first found refreshrate that is between 49.99 and 50.01.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;fallback&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmin&amp;gt;49.0&amp;lt;/refreshmin&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmax&amp;gt;51.0&amp;lt;/refreshmax&amp;gt;&lt;br /&gt;
    &amp;lt;/fallback&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; You can also specify the range for the fallback yourself.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;/adjustrefreshrate&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;checkdxvacompatibility&amp;gt;value&amp;lt;/checkdxvacompatibility&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Advanced setting not present: let Kodi autodetect cards that support H.264 profile &amp;gt; L4.1. Set value to false to enable DXVA no matter what. Set value to true if Kodi doesn&#039;t autodetect that the graphics card doesn&#039;t support &amp;gt; L4.1.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;useocclusionquery&amp;gt;-1&amp;lt;/useocclusionquery&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Use an occlusion query when capturing videoframes, -1 means auto detect, 0 means disabled, 1 means enabled, the default is -1.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;fpsdetect&amp;gt;1&amp;lt;/fpsdetect&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| FPS detection for video playback&lt;br /&gt;
* 0 = trust codec fps&lt;br /&gt;
* 1 = recalculate from video timestamps with uniform spacing&lt;br /&gt;
* 2 = recalculate from video timestamps always&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;latency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot;| Start of &#039;&#039;&#039;latency&#039;&#039;&#039; tags. Display latency (video lag). Latency is given in msecs.&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;delay&amp;gt;0&amp;lt;/delay&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | Global default display latency.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;refresh&amp;gt;&amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | Override latency for given display (not video) refresh rates. When Kodi is in windowed mode, override is ignored. Multiple overrides are allowed.&lt;br /&gt;
&lt;br /&gt;
Syntax of an override entry:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;refresh&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;, &amp;lt;max&amp;gt; refresh rate range, OR&lt;br /&gt;
  &amp;lt;rate&amp;gt; exact refresh rate&lt;br /&gt;
  &amp;lt;delay&amp;gt; display latency for the given refresh rate&lt;br /&gt;
&amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;refresh&amp;gt;&lt;br /&gt;
      &amp;lt;min&amp;gt;23&amp;lt;/min&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;24&amp;lt;/max&amp;gt;&lt;br /&gt;
      &amp;lt;delay&amp;gt;125&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | &#039;&#039;&#039;Example:&#039;&#039;&#039; display has 125 msec latency at 23-24 Hz&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;refresh&amp;gt;&lt;br /&gt;
      &amp;lt;rate&amp;gt;50&amp;lt;/rate&amp;gt;&lt;br /&gt;
      &amp;lt;delay&amp;gt;50&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | &#039;&#039;&#039;Example:&#039;&#039;&#039; display has 50 msec latency at 50 (+/-0.01) Hz&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;/latency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;stereoscopicregex3d&amp;gt;[-. _]3d[-. _]&amp;lt;/stereoscopicregex3d&amp;gt;&lt;br /&gt;
  &amp;lt;stereoscopicregexsbs&amp;gt;[-. _]h?sbs[-. _]&amp;lt;/stereoscopicregexsbs&amp;gt;&lt;br /&gt;
  &amp;lt;stereoscopicregextab&amp;gt;[-. _]h?tab[-. _]&amp;lt;/stereoscopicregextab&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Filename triggers for 3D (stereoscopic) mode.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;assfixedworks&amp;gt;false&amp;lt;/assfixedworks&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Position behavior of ass subtitiles when setting &amp;quot;subtitle position on screen&amp;quot; set to &amp;quot;fixed&amp;quot;. True to show at the fixed position set in video calibration. False to show at the bottom of video (default). {{note|Removed in Kodi v20.}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;subtitleverticalmargin&amp;gt;120&amp;lt;/subtitleverticalmargin&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Allows to customise the vertical margin of text based subtitles, which will be applied to each type of subtitle position in subtitle settings. {{note|Available in Kodi v20 and above.}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== audio ===&lt;br /&gt;
{{anchor|.3Caudio.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;audio&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount of headroom Kodi should use above the maximum volume level, in decibels.  Defaults to 0, valid values 0, 6, 12. --&amp;gt;&lt;br /&gt;
  &amp;lt;headroom&amp;gt;0&amp;lt;/headroom&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Default audio player: paplayer or videoplayer --&amp;gt;&lt;br /&gt;
  &amp;lt;defaultplayer&amp;gt;paplayer&amp;lt;/defaultplayer&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be added to library. --&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromscan&amp;gt; &lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](podcast)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromscan&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be displayed in Files View --&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromlisting&amp;gt; &lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](podcast)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromlisting&amp;gt;&lt;br /&gt;
  &amp;lt;!-- 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. --&amp;gt;&lt;br /&gt;
  &amp;lt;ac3downmixgain&amp;gt;12.0&amp;lt;/ac3downmixgain&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Whether to use time based or percentage based seeking. --&amp;gt;&lt;br /&gt;
  &amp;lt;usetimeseeking&amp;gt;true&amp;lt;/usetimeseeking&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Time to seek forward in seconds when doing a long seek.  Defaults to 600 (10 minutes) and -600 (-10 minutes) respectively. --&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekforwardbig&amp;gt;600&amp;lt;/timeseekfowardbig&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Time to seek backward in seconds when doing a long seek back.  Defaults to 600 (10 minutes) and -600 (-10 minutes) respectively. --&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekbackwardbig&amp;gt;-600&amp;lt;/timeseekbackward&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Minimum percentage that has to be played before it is considered for incrementing in the Top 100 database view, or for last.fm submittal --&amp;gt;&lt;br /&gt;
  &amp;lt;playcountminimumpercent&amp;gt;99&amp;lt;/playcountminimumpercent&amp;gt; &lt;br /&gt;
  &amp;lt;!-- Whether to use Dynamic Range Compression (DRC) on AC3 streams. 1.0 is &amp;quot;full&amp;quot; compression, as defined by the audio track&#039;s metadata, which is recommended for &amp;quot;basic&amp;quot; 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. --&amp;gt;&lt;br /&gt;
  &amp;lt;applydrc&amp;gt;-1.0&amp;lt;/applydrc&amp;gt; &lt;br /&gt;
  &amp;lt;!-- default values for limiter/compressor --&amp;gt;&lt;br /&gt;
  &amp;lt;limiterhold&amp;gt;0.025&amp;lt;/limiterhold&amp;gt; &lt;br /&gt;
  &amp;lt;!-- default values for limiter/compressor --&amp;gt;&lt;br /&gt;
  &amp;lt;limiterrelease&amp;gt;0.1&amp;lt;/limiterrelease&amp;gt; &lt;br /&gt;
  &amp;lt;!-- This setting is only relevant for Passthrough in the context of resyncing, e.g.; when there is no resampling possible. This value decides after which amount of discontinuity in milliseconds VideoPlayer will ErrorAdjust the Clock. On platforms like Android where the sink delay is just a non exact interpolation, a too small value might cause rare image stutter. The maximum value is 100 ms. A higher value makes no sense cause of A/V issues. This is a last-resort workaround as the root-cause cannot be mitigated 100% [Available from Kodi v20] --&amp;gt;&lt;br /&gt;
  &amp;lt;maxpassthroughoffsyncduration&amp;gt;10&amp;lt;/maxpassthroughoffsyncduration&amp;gt; &lt;br /&gt;
  &amp;lt;!-- This setting is used on Android only. While Android itself supports 32 bit Float format for at least Stereo since many years, certain Vendors don&#039;t properly implement it for Multi-Channel Audio. As those devices still open correctly, but then no signal reaches the output device, we disabled this for the time being and used 16 bit Integer only. With this setting you can enable 32 bit Output for multi-channel for kodi by setting allowmultichannelfloat to true. Default: false. This makes a lossless Input -&amp;gt; Output chain possible, as it can hold 24 bit Audio without any loss towards the internal Android Mixer, which is using Float precision anyways. --&amp;gt;&lt;br /&gt;
  &amp;lt;allowmultichannelfloat&amp;gt;false&amp;lt;/allowmultichannelfloat&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Android only. There are currently various broken devices with AMLogic BSP out there. They open a sink with a buffer of 170 ms, but then don&#039;t consume any idea for sometimes even more than 1000 ms of audio data. Then they silently drop the data under the hood and move on, resulting in kodi being totally out of sink. Reopening the devices (sometimes 2 times) fixes this. Sadly there are some semi-broken devices out there that do the same on startup, but afterwards work kind of fine with a higher delay. I cannot programmatically distinguish those two cases. For Zidoo and FireTV Cube 3rd Gen, you have to manually enable this advanced setting. --&amp;gt;&lt;br /&gt;
  &amp;lt;superviseaudiodelay&amp;gt;false&amp;lt;/superviseaudiodelay&amp;gt;&lt;br /&gt;
&amp;lt;/audio&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== forcedswaptime ===&lt;br /&gt;
{{anchor|.3Cforcedswaptime.3E}}&lt;br /&gt;
Use to force a backbuffer-&amp;gt;frontbuffer swap while vsync is enabled. Set to the time (in ms) to allow for the swap (e.g. &amp;lt;forcedswaptime&amp;gt;1&amp;lt;/forcedswaptime&amp;gt; is typical).  &lt;br /&gt;
&lt;br /&gt;
Default: Off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== edl ===&lt;br /&gt;
{{anchor|.3Cedl.3E}}&lt;br /&gt;
{{main|Edit_decision_list}}&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;edl&amp;gt;&lt;br /&gt;
    &amp;lt;!-- if true, commercial breaks will be merged according to the remaining options. --&amp;gt;&lt;br /&gt;
  &amp;lt;mergeshortcommbreaks&amp;gt;false&amp;lt;/mergeshortcommbreaks&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Commercial breaks won&#039;t be merged if the total length of the commercial break would be greater than this (seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;maxcommbreaklength&amp;gt;250&amp;lt;/maxcommbreaklength&amp;gt;&lt;br /&gt;
    &amp;lt;!-- After merging, commercial breaks shorter than this will be removed (seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;mincommbreaklength&amp;gt;90&amp;lt;/mincommbreaklength&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Commercial breaks that are further apart than this won&#039;t be merged (seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;maxcommbreakgap&amp;gt;120&amp;lt;/maxcommbreakgap&amp;gt;&lt;br /&gt;
    &amp;lt;!-- How long to wait before automatically skipping when the start of a commercial break reached (seconds). Possible values: from -60 to 60--&amp;gt;&lt;br /&gt;
  &amp;lt;commbreakautowait&amp;gt;0&amp;lt;/commbreakautowait&amp;gt;&lt;br /&gt;
    &amp;lt;!-- How long to rewind after automatically skipping to the end of the commercial break (seconds). Possible values: from -60 to 60 --&amp;gt;&lt;br /&gt;
  &amp;lt;commbreakautowind&amp;gt;0&amp;lt;/commbreakautowind&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Avoid showing the edl commbreak notifications. These are displayed by default --&amp;gt;&lt;br /&gt;
  &amp;lt;displaycommbreaknotifications&amp;gt;false&amp;lt;/displaycommbreaknotifications&amp;gt;&lt;br /&gt;
&amp;lt;/edl&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* displaycommbreaknotifications&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/20711&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PVR &amp;amp; Live TV ==&lt;br /&gt;
{{anchor|.3Cpvr.3E}}&lt;br /&gt;
Settings available for PVR, EPG and Live TV. Edit Decision List settings are located in the previous section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pvr ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;pvr&amp;gt;&lt;br /&gt;
  &amp;lt;timecorrection&amp;gt;0&amp;lt;/timecorrection&amp;gt;  &amp;lt;!-- Correct all times (epg tags, timer tags, recording tags) by this amount of minutes. --&amp;gt;&lt;br /&gt;
  &amp;lt;infotoggleinterval&amp;gt;3000&amp;lt;/infotoggleinterval&amp;gt;  &amp;lt;!-- 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. --&amp;gt;&lt;br /&gt;
  &amp;lt;channeliconsautoscan&amp;gt;true&amp;lt;/channeliconsautoscan&amp;gt; &amp;lt;!-- Automatically scan user defined folder for channel icons when loading internal channel groups. --&amp;gt;&lt;br /&gt;
  &amp;lt;autoscaniconsuserset&amp;gt;false&amp;lt;/autoscaniconsuserset&amp;gt; &amp;lt;!-- Mark channel icons populated by auto scan as &amp;quot;user set&amp;quot;. --&amp;gt;&lt;br /&gt;
  &amp;lt;numericchannelswitchtimeout&amp;gt;1000&amp;lt;/numericchannelswitchtimeout&amp;gt; &amp;lt;!-- Time in ms before the numeric dialog auto closes when confirmchannelswitch is disabled. --&amp;gt;&lt;br /&gt;
&amp;lt;/pvr&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== pvrrecordings ====&lt;br /&gt;
In v19 and later, allows users to modify sort type and order of pvr recordings. &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/18605&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Note- These settings are child tags to the &#039;&#039;&amp;lt;pvr&amp;gt;&#039;&#039; tag in the previous section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;pvr&amp;gt;&lt;br /&gt;
   &amp;lt;pvrrecordings&amp;gt;&lt;br /&gt;
      &amp;lt;sortmethod&amp;gt;2&amp;lt;/sortmethod&amp;gt;  &amp;lt;!-- 1=Name 2=Date 3=Size 4=File --&amp;gt;&lt;br /&gt;
      &amp;lt;sortorder&amp;gt;2&amp;lt;/sortorder&amp;gt;    &amp;lt;!-- 1=Ascending 2=Descending --&amp;gt;&lt;br /&gt;
   &amp;lt;/pvrrecordings&amp;gt;&lt;br /&gt;
&amp;lt;/pvr&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== epg ===&lt;br /&gt;
{{anchor|.3Cpvr.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;epg&amp;gt;&lt;br /&gt;
  &amp;lt;updatecheckinterval&amp;gt;300&amp;lt;/updatecheckinterval&amp;gt;  &amp;lt;!-- Check every X seconds, if EPG data need to be updated. This does not mean that every X seconds an EPG update is actually triggered, it&#039;s just the interval how often to check whether an update should be triggered. If this value is greater than GUI setting &#039;epg.epgupdate&#039; value, then EPG updates will done with the value specified for &#039;updatecheckinterval&#039;, effectively overriding the GUI setting&#039;s value. --&amp;gt;&lt;br /&gt;
  &amp;lt;updateemptytagsinterval&amp;gt;60&amp;lt;/updateemptytagsinterval&amp;gt;  &amp;lt;!-- If a TV channel has no EPG data, try to obtain data for that channel every X seconds. This overrides the GUI setting &#039;epg.epgupdate&#039; value, but only for channels without EPG data. If this value is less than &#039;updatecheckinterval&#039; value, then data update will be done with the interval specified by &#039;updatecheckinterval&#039;. Example 1: epg.epgupdate = 120 (minutes!), updatecheckinterval = 300, updateemptytagsinterval = 60 =&amp;gt; trigger an EPG update for every channel without EPG data every 5 minutes and trigger an EPG update for every channel with EPG data every 2 hours. Example 2: epg.epgupdate = 120 (minutes!), updatecheckinterval = 300, updateemptytagsinterval = 3600 =&amp;gt; trigger an EPG update for every channel without EPG data every 2 hours and trigger an EPG update for every channel with EPG data every 1 hour. --&amp;gt;&lt;br /&gt;
  &amp;lt;cleanupinterval&amp;gt;900&amp;lt;/cleanupinterval&amp;gt;  &amp;lt;!-- remove old entries from the EPG every X seconds --&amp;gt;&lt;br /&gt;
  &amp;lt;activetagcheckinterval&amp;gt;60&amp;lt;/activetagcheckinterval&amp;gt;  &amp;lt;!-- check for updated active tags every X seconds --&amp;gt;&lt;br /&gt;
  &amp;lt;retryinterruptedupdateinterval&amp;gt;60&amp;lt;/retryinterruptedupdateinterval&amp;gt;  &amp;lt;!-- retry an interrupted EPG update after X seconds --&amp;gt;&lt;br /&gt;
  &amp;lt;displayupdatepopup&amp;gt;true&amp;lt;/displayupdatepopup&amp;gt;  &amp;lt;!-- display a progress popup while updating EPG data from clients --&amp;gt;&lt;br /&gt;
  &amp;lt;displayincrementalupdatepopup&amp;gt;false&amp;lt;/displayincrementalupdatepopup&amp;gt;  &amp;lt;!-- also display a progress popup while doing incremental EPG updates --&amp;gt;&lt;br /&gt;
&amp;lt;/epg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Video library settings ==&lt;br /&gt;
&lt;br /&gt;
=== videoextensions ===&lt;br /&gt;
{{anchor|.3Cvideoextensions.3E}}&amp;lt;section begin=&amp;quot;videoextensions&amp;quot; /&amp;gt;&lt;br /&gt;
A list of additional file-extensions to allow (&#039;&#039;&#039;add&#039;&#039;&#039;) or exclude (&#039;&#039;&#039;remove&#039;&#039;&#039;) in the My Video windows.&lt;br /&gt;
&lt;br /&gt;
Default extensions for VIDEOS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.m4v .3g2 .3gp .nsv .tp .ts .ty .strm .pls .rm .rmvb .mpd .m3u .m3u8 .ifo .mov .qt .divx .xvid&lt;br /&gt;
.bivx .vob .nrg .img .iso .udf .pva .wmv .asf .asx .ogm .m2v .avi .bin .dat .mpg .mpeg .mp4&lt;br /&gt;
.mkv .mk3d .avc .vp3 .svq3 .nuv .viv .dv .fli .flv .001 .wpl .xspf .zip .vdr .dvr-ms .xsp .mts&lt;br /&gt;
.m2t .m2ts .evo .ogv .sdp .avs .rec .url .pxml .vc1 .h264 .rcv .rss .mpls .mpl .webm .bdmv&lt;br /&gt;
.bdm .wtv .trp .f4v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;videoextensions&amp;gt;&lt;br /&gt;
  &amp;lt;add&amp;gt;.ex1|.ex2&amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;remove&amp;gt;.ex3|.ex4&amp;lt;/remove&amp;gt;&lt;br /&gt;
&amp;lt;/videoextensions&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;videoextensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== discstubextensions ===&lt;br /&gt;
{{main|Media stubs}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;discstubextensions&amp;quot; /&amp;gt;&lt;br /&gt;
The default filename extension for Disc Stubs is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
.disc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Using the following tags, it is possible to &amp;lt;tt&amp;gt;&amp;lt;add&amp;gt;&amp;lt;/tt&amp;gt; additional or &amp;lt;tt&amp;gt;&amp;lt;remove&amp;gt;&amp;lt;/tt&amp;gt; existing disc stub extensions to better suit your requirements.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;discstubextensions&amp;gt;&lt;br /&gt;
  &amp;lt;add&amp;gt;.disk|.stub&amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;remove&amp;gt;.disc&amp;lt;/remove&amp;gt;&lt;br /&gt;
&amp;lt;/discstubextensions&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;discstubextensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== languagecodes ===&lt;br /&gt;
{{anchor|.3Clanguagecodes.3E}}&lt;br /&gt;
User-defined translation table for language codes used in subtitles and audio.&lt;br /&gt;
It can be used to add, extend or override Kodi&#039;s language codes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to add a new language code:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languagecodes&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;short&amp;gt;alt&amp;lt;/short&amp;gt;&lt;br /&gt;
    &amp;lt;long&amp;gt;Alternate&amp;lt;/long&amp;gt;&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/languagecodes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to add a new language code with subtag (e.g. pt-BR):&#039;&#039;&#039;&lt;br /&gt;
{{note|This support is available from Kodi v20}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languagecodes&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;short&amp;gt;pt-BR&amp;lt;/short&amp;gt;&lt;br /&gt;
    &amp;lt;long&amp;gt;Portuguese - Brazil&amp;lt;/long&amp;gt;&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/languagecodes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE FOR MKV FILES:&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
MKV files that contain audio/subtitle tracks with language codes with subtags are not yet supported, but from &amp;lt;code&amp;gt;Kodi v21&amp;lt;/code&amp;gt; a workaround was introduced that allows Kodi to recognize language codes with subtags.&lt;br /&gt;
To use the workaround, you must open the MKV file with an editor and in the metadata of the desired audio/subtitle track, edit the track Name (or Title field) by adding the language code wrapped in curly brackets, as in following example:&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;Original track name: Audio portuguese/brazil&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;Modified track name: Audio portuguese/brazil {pt-BR}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to extend an existing language code:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Set the same &amp;quot;long&amp;quot; description of the existing language, for example we reuse the Portughese language for another language code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languagecodes&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;short&amp;gt;pt-BR&amp;lt;/short&amp;gt;&lt;br /&gt;
    &amp;lt;long&amp;gt;Portuguese&amp;lt;/long&amp;gt;&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/languagecodes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case when in Kodi settings you set the &amp;quot;Portuguese&amp;quot; language, when in playing according to availability the track &amp;quot;pt&amp;quot; or &amp;quot;pt-BR&amp;quot; will be chosen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to override an existing language code:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This allow you to rename an existing language. Set to an existing language code your preferred &amp;quot;long&amp;quot; name description.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;WARNING: This can cause problems with add-ons, so do not override languages if you are not aware of the side effects.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languagecodes&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;short&amp;gt;en&amp;lt;/short&amp;gt;&lt;br /&gt;
    &amp;lt;long&amp;gt;English example&amp;lt;/long&amp;gt;&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;short&amp;gt;en-GB&amp;lt;/short&amp;gt;&lt;br /&gt;
    &amp;lt;long&amp;gt;English example&amp;lt;/long&amp;gt;&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/languagecodes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== moviestacking ===&lt;br /&gt;
{{anchor|.3Cmoviestacking.3E}}&amp;lt;section begin=&amp;quot;moviestacking&amp;quot; /&amp;gt;&lt;br /&gt;
{{main|Naming_video_files/Movies}}&lt;br /&gt;
This is used by the [[Naming_video_files/Movies#Split_Video_Files|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 &#039;&#039;&#039;[[advancedsettings.xml#folderstacking|&amp;lt;folderstacking&amp;gt;]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As of v9.11, video stacking regular expressions &#039;&#039;&#039;must&#039;&#039;&#039; contain exactly four (4) capture expressions. &lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;moviestacking&amp;gt;&lt;br /&gt;
  &amp;lt;!-- &amp;lt;cd/dvd/part/pt/disk/disc&amp;gt; &amp;lt;0-N&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck])[ _.-]*[0-9]+)(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;!-- &amp;lt;cd/dvd/part/pt/disk/disc&amp;gt; &amp;lt;a-d&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck])[ _.-]*[a-d])(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;!-- movienamea-xvid.avi, movienameb-xvid.avi --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ ._-]*[a-d])(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/moviestacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the argument &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;append=&amp;quot;yes&amp;quot;&amp;lt;/tt&amp;gt; is supplied, the default moviestacking regular expressions will remain intact and the user specified ones will be added to the end.  &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;moviestacking action=&amp;quot;append&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This expression will match movename1-xvid.avi, moviename2-xvid.avi.&lt;br /&gt;
         Be warned that it will likely stack sequels in a flat directory layout,&lt;br /&gt;
         so it is only recommend in a dir-per-video layout. --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ ._-]*[0-9])(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/moviestacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the argument &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; is supplied, the default moviestacking regular expressions will remain intact and the user specified ones will be added to the beginning. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;moviestacking action=&amp;quot;prepend&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(Title)(Volume)(Ignore)(Extension)&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/moviestacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If no argument is supplied, or the argument &amp;lt;tt&amp;gt;append=&amp;quot;no&amp;quot;&amp;lt;/tt&amp;gt; is supplied, the default moviestacking regular expressions are overwritten by the user specified ones.&lt;br /&gt;
&amp;lt;section end=&amp;quot;moviestacking&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== folderstacking ===&lt;br /&gt;
{{main|Naming_video_files/Movies}}&lt;br /&gt;
This is similar to &#039;&#039;&#039;[[advancedsettings.xml#moviestacking|&amp;lt;moviestacking&amp;gt;]]&#039;&#039;&#039;, 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).&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;folderstacking&amp;gt;&lt;br /&gt;
  &amp;lt;!-- &amp;lt;cd/dvd/disk/disc&amp;gt; &amp;lt;0-N&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;((cd|dvd|dis[ck])[0-9]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/folderstacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cleandatetime ===&lt;br /&gt;
{{anchor|.3Ccleandatetime.3E}}&lt;br /&gt;
Matches a year number in a string using a Regular Expression&lt;br /&gt;
&lt;br /&gt;
Default expression:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;cleandatetime&amp;gt;(.*[^ _\,\.\(\)\[\]\-])[ _\.\(\)\[\]\-]+(19[0-9][0-9]|20[0-9][0-9])([ _\,\.\(\)\[\]\-]|[^0-9]$)?&amp;lt;/cleandatetime&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
:* The string found before will be used as basis string getting cleaned by the cleanstrings expressions. &lt;br /&gt;
:* By default date formats like MM:YY are ignored.&lt;br /&gt;
&lt;br /&gt;
=== cleanstrings ===&lt;br /&gt;
{{anchor|.3Ccleanstrings.3E}}&lt;br /&gt;
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 &#039;&#039;Super movie.mp4&#039;&#039; and would add &amp;lt;tt&amp;gt;&amp;lt;regexp&amp;gt; &amp;lt;/regexp&amp;gt;&amp;lt;/tt&amp;gt; (only a space), the only thing that would be left is &#039;&#039;Super&#039;&#039;, which is probably not what you want.&lt;br /&gt;
&lt;br /&gt;
{{Github_link|[https://github.com/xbmc/xbmc/blob/Nexus/xbmc/settings/AdvancedSettings.cpp#L201-L211 Code in Github]}}&lt;br /&gt;
&lt;br /&gt;
Default expressions:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;cleanstrings&amp;gt;&lt;br /&gt;
   &amp;lt;regexp&amp;gt;([ _\\,\\.\\(\\)\\[\\]\\-](10bit|480p|480i|576p|576i|720p|720i|1080p|1080i|2160p|3d|aac|ac3|aka|atmos|avi|bd5|bdrip|bluray|brrip|cam|cd[1-9]|custom|dc|ddp|divx|divx5|dolbydigital|dolbyvision|dsr|dsrip|dts|dts-hdma|dts-hra|dts-x|dv|dvd|dvd5|dvd9|dvdivx|dvdrip|dvdscr|dvdscreener|extended|fragment|fs|h264|h265|hdr|hdr10|hevc|hddvd|hdrip|hdtv|hdtvrip|hrhd|hrhdtv|internal|limited|multisubs|nfofix|ntsc|ogg|ogm|pal|pdtv|proper|r3|r5|read.nfo|remastered|remux|repack|rerip|retail|screener|se|svcd|tc|telecine|telesync|truehd|ts|uhd|unrated|ws|x264|x265|xvid|xvidvd|xxx|web-dl|webrip|www.www|\\[.*\\])([ _\\,\\.\\(\\)\\[\\]\\-]|$)&amp;quot;);&amp;lt;/regexp&amp;gt;&lt;br /&gt;
   &amp;lt;regexp&amp;gt;(\[.*\])&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/cleanstrings&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Updated in v20&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/20549&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
&lt;br /&gt;
=== tvshowmatching ===&lt;br /&gt;
{{anchor|.3Ctvshowmatching.3E}}&lt;br /&gt;
Matches the season and episode numbers in file paths by using a list of Regular Expressions&lt;br /&gt;
&lt;br /&gt;
{{Github_link|[https://github.com/xbmc/xbmc/blob/Matrix/xbmc/settings/AdvancedSettings.cpp#L232 Code in Github]}}&lt;br /&gt;
&lt;br /&gt;
Defaults:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tvshowmatching&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;s([0-9]+)[ ._x-]*e([0-9]+(?:(?:[a-i]|\\.[1-9])(?![0-9]))?)([^\\\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.s01.e01, foo.s01_e01, S01E02 foo, S01 - E02, S01xE02 --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\._ -]()[Ee][Pp]_?([0-9]+)([^\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.ep01, foo.EP_01 --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;([0-9]{4})[\.-]([0-9]{2})[\.-]([0-9]{2})&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.yyyy.mm.dd.* (byDate=true) --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;([0-9]{2})[\.-]([0-9]{2})[\.-]([0-9]{4})&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.mm.dd.yyyy.* (byDate=true) --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\\/\._ \[\(-]([0-9]+)x([0-9]+)([^\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.1x09* or just /1x09* --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\\/\._ -]([0-9]+)([0-9][0-9])([\._ -][^\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.103*, 103 foo --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\/._ -]p(?:ar)?t[_. -]()([ivx]+)([._ -][^\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- Part I, Pt.VI --&amp;gt;&lt;br /&gt;
&amp;lt;/tvshowmatching&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
:* Paths are converted to lower case before matching.&lt;br /&gt;
:* For multi-episode matching to work, there needs to be a third set of parentheses &#039;()&#039; at the end, this part is fed back into the regexp engine.&lt;br /&gt;
:* A [https://forum.kodi.tv/showthread.php?tid=51614 forum thread] has a discussion of pre-made regex lists to match common names. These might improve Kodi&#039;s ability to match TV show names in some situations, at the risk of additional false positives.&lt;br /&gt;
&lt;br /&gt;
==== Filenames without Season ====&lt;br /&gt;
There are two methods to add episodes without a season in their file path. Both ways will force the season to &#039;1&#039; by default, so that you can use&lt;br /&gt;
the &#039;Use Absolute Ordering (Single Season)&#039; setting from the TheTvDb.com scraper.&lt;br /&gt;
&lt;br /&gt;
; Simple Method &#039;&#039;(XBMC v9.11 onwards and Kodi)&#039;&#039;&lt;br /&gt;
: Use only one pair of parentheses&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;regexp&amp;gt;[/\._ \-]([0-9]+)&amp;lt;/regexp&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
; Advanced Method &#039;&#039;(XBMC v10.05 onwards and Kodi)&#039;&#039;&lt;br /&gt;
: Supports multi-episode files without season&lt;br /&gt;
: Use an empty pair of parentheses for the season&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;regexp&amp;gt;[/\._ \-]()([0-9]+)(-[0-9]+)?&amp;lt;/regexp&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Specifying Default Season &#039;&#039;(XBMC v12.0 onwards and Kodi)&#039;&#039;&lt;br /&gt;
It is possible to set the default season for specific regular expressions by setting the &#039;defaultseason&#039; attribute.&lt;br /&gt;
: Works with both the simple method and advanced method&lt;br /&gt;
: If not used, the season will be set to &#039;1&#039;&lt;br /&gt;
: Useful for setting specials to season &#039;0&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;regexp defaultseason=&amp;quot;0&amp;quot;&amp;gt;[/\._ \-]X()([0-9]+)(-[0-9]+)?&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;regexp defaultseason=&amp;quot;1&amp;quot;&amp;gt;[/\._ \-]E()([0-9]+)(-[0-9]+)?&amp;lt;/regexp&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== tvmultipartmatching ===&lt;br /&gt;
{{anchor|.3Ctvmultipartmatching.3E}}&lt;br /&gt;
Matches a multipart episode number based on a previously identified episode file, using a list of Regular Expressions.&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tvmultipartmatching&amp;gt;^[-_ex]+([0-9]+(?:(?:[a-i]|\\.[1-9])(?![0-9]))?)&amp;lt;/tvmultipartmatching&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
:* Text matching is compared case-insensitive.&lt;br /&gt;
:* Specifying this option &#039;&#039;&#039;replaces&#039;&#039;&#039; the default value&lt;br /&gt;
&lt;br /&gt;
=== excludefromscan ===&lt;br /&gt;
{{anchor|.3Cexcludefromscan.3E}}&lt;br /&gt;
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 &amp;lt;tt&amp;gt;advancedsettings.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Defaults:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromscan&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;-trailer&amp;lt;/regexp&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[!-._ \\/]sample[-._ \\/]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromscan&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
&lt;br /&gt;
=== excludefromlisting ===&lt;br /&gt;
{{anchor|.3Cexcludefromlisting.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;  &lt;br /&gt;
  &amp;lt;excludefromlisting&amp;gt; &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be displayed in Files View --&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromlisting&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== excludetvshowsfromscan ===&lt;br /&gt;
{{anchor|.3Cexcludetvshowsfromscan.3E}}&lt;br /&gt;
Matches filenames or folders which should be excluded from a tvshow library scan using a list of Regular Expressions&lt;br /&gt;
&lt;br /&gt;
Defaults:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;excludetvshowsfromscan&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[!-._ \\/]sample[-._ \\/]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludetvshowsfromscan&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
&lt;br /&gt;
=== trailermatching ===&lt;br /&gt;
{{anchor|.3Ctrailermatching.3E}}&lt;br /&gt;
Contains Regular Expression syntax to match the locally stored trailers to movies in the library. Only files with recognized video file extensions will be considered, and the extensions are removed for the Regular Expression evaluation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;trailermatching&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This regexp will match moviename_Trailer.avi --&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;(.*?)(_Trailer)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/trailermatching&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== videolibrary ===&lt;br /&gt;
{{anchor|.3Cvideolibrary.3E}}&lt;br /&gt;
Options specific to the Video Library&lt;br /&gt;
&lt;br /&gt;
{{Note|Kodi v20 users don&#039;t need set &amp;quot;importwatched&amp;quot; or &amp;quot;importresumepoint&amp;quot; to true anymore as that&#039;s the default then &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/20842&amp;lt;/ref&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
  &amp;lt;videolibrary&amp;gt;&lt;br /&gt;
    &amp;lt;allitemsonbottom&amp;gt;false&amp;lt;/allitemsonbottom&amp;gt;  &amp;lt;!-- sorts the &amp;quot;*All&amp;quot; items at the bottom of the list when in Ascending order --&amp;gt;&lt;br /&gt;
    &amp;lt;cleanonupdate&amp;gt;false&amp;lt;/cleanonupdate&amp;gt;  &amp;lt;!-- default set to false to prevent Kodi from removing items from the database while updating.  --&amp;gt;&lt;br /&gt;
    &amp;lt;usefasthash&amp;gt;true&amp;lt;/usefasthash&amp;gt; &amp;lt;!-- defaults to true. Set to false in order to skip hashing based on the folders modification time. --&amp;gt;&lt;br /&gt;
    &amp;lt;recentlyaddeditems&amp;gt;35&amp;lt;/recentlyaddeditems&amp;gt; &amp;lt;!-- number of recently added items. Defaults to 25 --&amp;gt;&lt;br /&gt;
    &amp;lt;itemseparator&amp;gt; / &amp;lt;/itemseparator&amp;gt;  &amp;lt;!-- separator used for multiple artists/genres in tags. Note, this is *space* *slash* *space* --&amp;gt;&lt;br /&gt;
    &amp;lt;exportautothumbs&amp;gt;false&amp;lt;/exportautothumbs&amp;gt;  &amp;lt;!-- export auto-generated thumbs. Defaults to false --&amp;gt;&lt;br /&gt;
    &amp;lt;importwatchedstate&amp;gt;false&amp;lt;/importwatchedstate&amp;gt;  &amp;lt;!-- import previously exported playdate and playcount from .nfo files. Defaults to false --&amp;gt;&lt;br /&gt;
    &amp;lt;importresumepoint&amp;gt;false&amp;lt;/importresumepoint&amp;gt;  &amp;lt;!-- import previously exported resume point from .nfo files. Defaults to false --&amp;gt;&lt;br /&gt;
    &amp;lt;dateadded&amp;gt;1&amp;lt;/dateadded&amp;gt; &amp;lt;!-- 0 results in using the current datetime when adding a video;&lt;br /&gt;
                                  1 (default) results in prefering to use the files mtime (if it&#039;s valid) and only using the file&#039;s ctime if the mtime isn&#039;t valid;&lt;br /&gt;
                                  2 results in using the newer datetime of the file&#039;s mtime and ctime --&amp;gt;&lt;br /&gt;
  &amp;lt;/videolibrary&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== videoscanner ===&lt;br /&gt;
{{anchor|.3Cvideoscanner.3E}}&lt;br /&gt;
Options specific to the Video scanner&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;videoscanner&amp;gt;&lt;br /&gt;
    &amp;lt;ignoreerrors&amp;gt;true&amp;lt;/ignoreerrors&amp;gt; &amp;lt;!-- Set to true to silently ignore errors while scanning videos. This prevents the error dialogue box, so you don&#039;t have to keep hitting &amp;quot;yes&amp;quot; to keep scanning.--&amp;gt;&lt;br /&gt;
  &amp;lt;/videoscanner&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Library artwork ==&lt;br /&gt;
&lt;br /&gt;
{{note|Using &amp;lt;imageres&amp;gt;9999&amp;lt;/imageres&amp;gt; and &amp;lt;fanartres&amp;gt;9999&amp;lt;/fanartres&amp;gt; will allow caching artwork at original size.}}&lt;br /&gt;
&lt;br /&gt;
=== imageres ===&lt;br /&gt;
{{anchor|.3Cimageres.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;imageres description&amp;quot; /&amp;gt;Specify the maximum resolution that [[Artwork/Cache#Texture optimization| cached artwork]] (other than fanart / 16:9 images) 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.&amp;lt;section end=&amp;quot;imageres description&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;imageres&amp;gt;720&amp;lt;/imageres&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== fanartres ===&lt;br /&gt;
{{anchor|.3Cfanartres.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;fanartres description&amp;quot; /&amp;gt;Specify the maximum resolution that [[Artwork/Cache#Texture optimization| 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 &amp;lt;imageres&amp;gt;. The default value is 1080.&amp;lt;section end=&amp;quot;fanartres description&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fanartres&amp;gt;1080&amp;lt;/fanartres&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imagescalingalgorithm ===&lt;br /&gt;
Specify the image scaling algorithm for image resizing when [[Artwork/Cache#Texture optimization| caching artwork]] to the local texture cache.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;imagescalingalgorithm&amp;gt;bicubic&amp;lt;/imagescalingalgorithm&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/xbmc/xbmc/blob/master/xbmc/pictures/PictureScalingAlgorithm.cpp#L20-L32 Available image scaling algorithms]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=text enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
fast_bilinear&lt;br /&gt;
bilinear&lt;br /&gt;
bicubic&lt;br /&gt;
experimental&lt;br /&gt;
nearest_neighbor&lt;br /&gt;
averaging_area&lt;br /&gt;
bicublin&lt;br /&gt;
gaussian&lt;br /&gt;
sinc&lt;br /&gt;
lanczos&lt;br /&gt;
bicubic_spline&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imagequalityjpeg ===&lt;br /&gt;
This specifies the quality of the images when stored in jpeg format. By default kodi uses a quality of 4 which is a good compromise between size and quality. If you want to reduce the thumbnail sizes (decreasing quality) choose a higher value up to 21. If high quality (large thumbnail size) is needed, chose a smaller value, e.g. 0,1,2 or 3. (Added in v20 &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/21418&amp;lt;/ref&amp;gt;)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;imagequalityjpeg&amp;gt;4&amp;lt;/imagequalityjpeg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Video and music library settings ==&lt;br /&gt;
&lt;br /&gt;
=== playlistasfolders ===&lt;br /&gt;
{{anchor|.3Cplaylistasfolders.3E}}&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
:{{note|This setting will not affect smart playlists, they will always show as folders.}}&lt;br /&gt;
&lt;br /&gt;
;Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;playlistasfolders&amp;gt;true&amp;lt;/playlistasfolders&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playlistretries ===&lt;br /&gt;
{{anchor|.3Cplaylistretries.3E}}&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;playlistretries&amp;gt;100&amp;lt;/playlistretries&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playlisttimeout ===&lt;br /&gt;
{{anchor|.3Cplaylisttimeout.3E}}&lt;br /&gt;
The timeout, in seconds, before item failure.&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;playlisttimeout&amp;gt;20&amp;lt;/playlisttimeout&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sorttokens ===&lt;br /&gt;
Allows you to specify additional tokens that will be ignored at the start of lines during sorting.&lt;br /&gt;
{{note|Sort tokens are case sensitive.}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;sorttokens&amp;gt;&lt;br /&gt;
  &amp;lt;token&amp;gt;the&amp;lt;/token&amp;gt;&lt;br /&gt;
&amp;lt;/sorttokens&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example &amp;quot;the &amp;quot;, &amp;quot;the.&amp;quot; and &amp;quot;the_&amp;quot; will be ignored at the start of titles or names when sorting items, in both video and music libraries. A separator can also be specified, for example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;sorttokens&amp;gt;&lt;br /&gt;
    &amp;lt;token separators=&amp;quot;&#039;&amp;quot;&amp;gt;L&amp;lt;/token&amp;gt;&lt;br /&gt;
&amp;lt;/sorttokens&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
In that case the value L&#039;, as in French movie name &#039;&#039;L&#039;argent&#039;&#039;, will be ignored and the item listed under &amp;quot;A&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== musicdatabase/videodatabase ===&lt;br /&gt;
{{anchor|.3Cmusicdatabase.3E/.3Cvideodatabase.3E|musicdatabase/videodatabase|database tags music/video/tv/epg/adsp}}&lt;br /&gt;
{{main|MySQL}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;videodatabase&amp;quot; /&amp;gt;&lt;br /&gt;
Allows advanced customization of the default database settings for music, video, TV, EPG, and ADSP databases.&lt;br /&gt;
&lt;br /&gt;
:{{note| &#039;&#039;&#039;It is HIGHLY recommended that you not attempt to place an sqlite3 database outside of kodi&#039;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.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parent tags:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;videodatabase&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;musicdatabase&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tvdatabase&amp;gt;&#039;&#039;&#039; - Highly experimental/unstable and no practical benefit for most users. &#039;&#039;&#039;Avoid using.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;epgdatabase&amp;gt;&#039;&#039;&#039; - Highly experimental/unstable and no practical benefit for most users. &#039;&#039;&#039;Avoid using.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;adspdatabase&amp;gt;&#039;&#039;&#039; - Highly experimental/unstable and no practical benefit for most users. &#039;&#039;&#039;Avoid using.&#039;&#039;&#039;&lt;br /&gt;
{{MySQL warning}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Child tags: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;type&amp;gt;&lt;br /&gt;
: &#039;&#039;Required&#039;&#039; - Can be either &amp;quot;sqlite3&amp;quot; or &amp;quot;mysql&amp;quot; (default: sqlite3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;host&amp;gt;&lt;br /&gt;
:&#039;&#039;Required&#039;&#039; - &lt;br /&gt;
* sqlite3: defines the relative path to the database file (eg. /usr/local/kodi/databases).&lt;br /&gt;
* mysql: defines the host of the mysql socket (eg. localhost, 192.168.0.1, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;port&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; -&lt;br /&gt;
* sqlite3: silently ignored&lt;br /&gt;
* mysql: defines the port of the mysql socket (default: 3306)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;name&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; -&lt;br /&gt;
:by default &amp;quot;MyVideos&amp;quot;+DB number will be used.&lt;br /&gt;
* sqlite3: defines the name of the database file to read from, excluding the &amp;quot;.db&amp;quot; extension.&lt;br /&gt;
* mysql: defines the name of the database to use&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;user&amp;gt;&lt;br /&gt;
: &#039;&#039;Required for MySQL&#039;&#039; -&lt;br /&gt;
* sqlite3: silently ignored&lt;br /&gt;
* mysql: defines the user with privileged access to the database&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;pass&amp;gt;&lt;br /&gt;
: &#039;&#039;Required for MySQL&#039;&#039; -&lt;br /&gt;
* sqlite3: silently ignored&lt;br /&gt;
* mysql: defines the password for the user with privileged access to the database&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;compression&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - Defaults to false. Set to &amp;quot;true&amp;quot; to enable MySQL compression protocol. Performance benefit is going to be largely dependent on the network bandwidth, latency between database and clients and on the size of the result sets. [https://github.com/xbmc/xbmc/pull/6484]&lt;br /&gt;
: {{Note|Slower clients (such as the RPi and others) won&#039;t benefit from it as the zlib de-compression overhead is higher than the actual compression savings}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;key&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;cert&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;ca&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;capath&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;ciphers&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1) Configure a database for MySQL.&lt;br /&gt;
:{{note| &#039;&#039;The &#039;&#039;&#039;&amp;lt;videodatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;musicdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;tvdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;epgdatabase&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;adspdatabase&amp;gt;&#039;&#039;&#039; tags are interchangeable here.&#039;&#039;}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;videodatabase&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;mysql&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;host&amp;gt;192.168.0.10&amp;lt;/host&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;kodi_video&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;user&amp;gt;kodi&amp;lt;/user&amp;gt;&lt;br /&gt;
  &amp;lt;pass&amp;gt;kodi&amp;lt;/pass&amp;gt;&lt;br /&gt;
&amp;lt;/videodatabase&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Configure a database for an sqlite database.&lt;br /&gt;
:{{note| &#039;&#039;The &#039;&#039;&#039;&amp;lt;videodatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;musicdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;tvdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;epgdatabase&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;adspdatabase&amp;gt;&#039;&#039;&#039; tags are interchangeable here.&#039;&#039;}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;musicdatabase&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;sqlite3&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;host&amp;gt;/usr/local/share/kodi/databases&amp;lt;/host&amp;gt;&lt;br /&gt;
&amp;lt;/musicdatabase&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;videodatabase&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== externalplayer ===&lt;br /&gt;
{{anchor|.3Cexternalplayer.3E}}&lt;br /&gt;
{{see|External players}}&lt;br /&gt;
&lt;br /&gt;
== Music settings ==&lt;br /&gt;
&lt;br /&gt;
=== musicextensions ===&lt;br /&gt;
{{anchor|.3Cmusicextensions.3E}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;musicextensions&amp;quot; /&amp;gt;&lt;br /&gt;
Default extensions for MUSIC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.nsv .m4a .flac .aac .strm .pls .rm .rma .mpa .wav .wma .ogg .mp3 .mp2 .m3u .gdm .imf .m15 .sfx&lt;br /&gt;
.uni .ac3 .dts .cue .aif .aiff .wpl .xspf .ape .mac .mpc .mp+ .mpp .shn .zip .wv .dsp .xsp .xwav&lt;br /&gt;
.waa .wvs .wam .gcm .idsp .mpdsp .mss .spt .rsd .sap .cmc .cmr .dmc .mpt .mpd .rmt .tmc .tm8&lt;br /&gt;
.tm2 .oga .url .pxml .tta .rss .wtv .mka .tak .opus .dff .dsf .m4b .dtshd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to add or remove extensions for Music, using the following XML tags. Useful if you keep, say, FLAC and mp3 versions of music in the same folder. The &amp;lt;remove&amp;gt; tag can be used to remove mp3 from being listed in the library, leaving only the higher quality FLAC being displayed.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;musicextensions&amp;gt;&lt;br /&gt;
   &amp;lt;add&amp;gt;.ex1|.ex2&amp;lt;/add&amp;gt;&lt;br /&gt;
   &amp;lt;remove&amp;gt;.ex3|.ex4&amp;lt;/remove&amp;gt;&lt;br /&gt;
 &amp;lt;/musicextensions&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;musicextensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cddbaddress ===&lt;br /&gt;
{{anchor|.3Ccddbaddress.3E}}&lt;br /&gt;
The address of the online CDDb database.  You may set this to another freedb mirror if there is a more suitable one.  &lt;br /&gt;
&lt;br /&gt;
Default: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;gt;&lt;br /&gt;
&amp;lt;cddbaddress&amp;gt;freedb.freedb.org&amp;lt;/cddbaddress&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== songinfoduration ===&lt;br /&gt;
{{anchor|.3Csonginfoduration.3E}}&lt;br /&gt;
This controls how long the song information will remain onscreen when the song changes during visualisations.  The valid range is &amp;quot;1&amp;quot; to &amp;quot;Indefinite (0)&amp;quot;, in seconds.  This does not include the duration of any transition effects. &lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;songinfoduration&amp;gt;10&amp;lt;/songinfoduration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== musicfilenamefilters ===&lt;br /&gt;
{{anchor|.3Cmusicfilenamefilters.3E}}&lt;br /&gt;
Contains filters to match music information (artist, title etc.) from a tag-less music filename.  The first &amp;lt;filter&amp;gt; to match completely is used. Matched items include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%A - Artist&lt;br /&gt;
%T - Title&lt;br /&gt;
%B - Album&lt;br /&gt;
%N - Track number&lt;br /&gt;
%S - Part of set (disk number)&lt;br /&gt;
%D - Duration&lt;br /&gt;
%G - Genre&lt;br /&gt;
%Y - Year&lt;br /&gt;
%R - Rating&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;musicfilenamefilters&amp;gt;&lt;br /&gt;
  &amp;lt;filter&amp;gt;%A - %T&amp;lt;/filter&amp;gt;&lt;br /&gt;
&amp;lt;/musicfilenamefilters&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== musiclibrary ===&lt;br /&gt;
Options specific to the Music Library&lt;br /&gt;
&amp;lt;section begin=&amp;quot;MusicLibrary&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;musiclibrary&amp;gt;&lt;br /&gt;
    &amp;lt;allitemsonbottom&amp;gt;true&amp;lt;/allitemsonbottom&amp;gt;       &amp;lt;!-- sorts the &amp;quot;*All&amp;quot; items at the bottom of the list when in Ascending order --&amp;gt;&lt;br /&gt;
    &amp;lt;cleanonupdate&amp;gt;false&amp;lt;/cleanonupdate&amp;gt;            &amp;lt;!-- default set to false to prevent Kodi from removing items from the database while updating.  --&amp;gt;&lt;br /&gt;
    &amp;lt;recentlyaddeditems&amp;gt;35&amp;lt;/recentlyaddeditems&amp;gt;     &amp;lt;!-- number of recently added items. Defaults to 25 --&amp;gt;&lt;br /&gt;
    &amp;lt;albumformat&amp;gt;%B - %Y&amp;lt;/albumformat&amp;gt;              &amp;lt;!-- album label template, default is &amp;quot;%B&amp;quot; --&amp;gt;&lt;br /&gt;
    &amp;lt;prioritiseapetags&amp;gt;true&amp;lt;/prioritiseapetags&amp;gt;     &amp;lt;!-- prioritise APEv2 tags over ID3v1/2 tags, default is false. --&amp;gt;&lt;br /&gt;
    &amp;lt;itemseparator&amp;gt; / &amp;lt;/itemseparator&amp;gt;              &amp;lt;!-- separator used for multiple artists/genres in tags. Note, this is *space* *slash* *space* See Note below--&amp;gt;&lt;br /&gt;
    &amp;lt;artistseparators&amp;gt;                              &amp;lt;!-- separator used for multiple artists. Note that spaces are used for some separators. See Note below--&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt;;&amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt;:&amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt;|&amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt; feat. &amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt; ft. &amp;lt;/separator&amp;gt;&lt;br /&gt;
    &amp;lt;/artistseparators&amp;gt;&lt;br /&gt;
    &amp;lt;dateadded&amp;gt;1&amp;lt;/dateadded&amp;gt;                        &amp;lt;!--0 results in using the current datetime when adding a song;&lt;br /&gt;
                                                        1 (default) results in prefering to use the files mtime (if it&#039;s valid) and only using the file&#039;s ctime if the mtime isn&#039;t valid;&lt;br /&gt;
                                                        2 results in using the newer datetime of the file&#039;s mtime and ctime   --&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;!-- New for v19 and later releases --&amp;gt;&lt;br /&gt;
    &amp;lt;useisodates&amp;gt;false&amp;lt;/useisodates&amp;gt;                &amp;lt;!-- When &amp;quot;true&amp;quot; all dates displayed in the music library will be in ISO 8601 format (YYYY-MM-DD or part thereof).&lt;br /&gt;
                                                         Defaults to &amp;quot;false&amp;quot; (use localized dates) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- New for v21 and later --&amp;gt;&lt;br /&gt;
    &amp;lt;artistnavigatestosongs&amp;gt;true&amp;lt;/artistnavigatestosongs&amp;gt;  &amp;lt;!-- When set to &amp;quot;true&amp;quot; Kodi will skip directly to the songs of an artist. Instead of navigating artist -&amp;gt; album -&amp;gt; disc -&amp;gt; songs, it&lt;br /&gt;
                                                                will navigate artist -&amp;gt; songs.  This is similar to how Spotify etc navigates.  Defaults to &amp;quot;false&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;/musiclibrary&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Note|Changing the &amp;lt;itemseparator&amp;gt; or &amp;lt;artistseparators&amp;gt; will only affect newly added items. A rescan won&#039;t change the existing ones. Remove the Source(s) or delete the Music DB and rebuild. This process should be made easier from v18 and up using &amp;lt;promptfulltagscan&amp;gt;}}&amp;lt;section end=&amp;quot;MusicLibrary&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos settings ==&lt;br /&gt;
&lt;br /&gt;
=== pictureextensions ===&lt;br /&gt;
{{anchor|.3Cpictureextensions.3E}}&lt;br /&gt;
A list of additional file-extensions to allow (&#039;&#039;&#039;add&#039;&#039;&#039;) or exclude (&#039;&#039;&#039;remove&#039;&#039;&#039;) in the My Pictures window.&lt;br /&gt;
&lt;br /&gt;
Default extensions for PICTURES:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.png .jpg .jpeg .bmp .gif .ico .tif .tiff .tga .pcx .cbz .zip .rss .webp .jp2 .apng&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pictureextensions&amp;gt;&lt;br /&gt;
  &amp;lt;add&amp;gt;.ex1|.ex2&amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;remove&amp;gt;.ex3|.ex4&amp;lt;/remove&amp;gt;&lt;br /&gt;
&amp;lt;/pictureextensions&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pictureexcludes ===&lt;br /&gt;
{{anchor|.3Cpictureexcludes.3E}}&lt;br /&gt;
Matches filenames or folders which should be excluded from being displayed in My Pictures using a list of Regular Expressions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pictureexcludes&amp;gt;  &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be displayed in My Pictures --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;small&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/pictureexcludes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== slideshow ===&lt;br /&gt;
{{anchor|.3Cslideshow.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;slideshow&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount to pan images as a percentage of the screen --&amp;gt;&lt;br /&gt;
  &amp;lt;panamount&amp;gt;2.5&amp;lt;/panamount&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount to zoom images as a percentage of the screen --&amp;gt;&lt;br /&gt;
  &amp;lt;zoomamount&amp;gt;5.0&amp;lt;/zoomamount&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount to compensate (zoom) images to attempt to reduce black bars. --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Results in cropping of the longer length of the image in order to reduce the black bars on the shorter length of the image.  --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Defaults to 20. --&amp;gt;&lt;br /&gt;
  &amp;lt;blackbarcompensation&amp;gt;20&amp;lt;/blackbarcompensation&amp;gt;  &lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Network settings ==&lt;br /&gt;
&lt;br /&gt;
=== ftp ===&lt;br /&gt;
{{anchor|.3Cftp.3DE}}&lt;br /&gt;
Specific settings if a ftp server is in use as a source&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ftp&amp;gt;&lt;br /&gt;
  &amp;lt;remotethumbs&amp;gt;true&amp;lt;/remotethumbs&amp;gt; &amp;lt;!-- enable extraction of flag and thumb for ftp --&amp;gt;&lt;br /&gt;
&amp;lt;/ftp&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== samba ===&lt;br /&gt;
{{anchor|.3Csamba.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;samba&amp;gt;&lt;br /&gt;
  &amp;lt;doscodepage&amp;gt;&amp;lt;/doscodepage&amp;gt;  &amp;lt;!-- code page to use for filenames --&amp;gt;&lt;br /&gt;
  &amp;lt;clienttimeout&amp;gt;10&amp;lt;/clienttimeout&amp;gt;  &amp;lt;!-- timeout (in seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;statfiles&amp;gt;true&amp;lt;/statfiles&amp;gt;  &amp;lt;!-- Set to false to disable smb stat() on files to speed up listings of large directories (over slow links) --&amp;gt;&lt;br /&gt;
&amp;lt;/samba&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hosts ===&lt;br /&gt;
{{anchor|.3Cfhosts.3E}}&lt;br /&gt;
Static dns entries which take precedence over your dns server.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hosts&amp;gt;&lt;br /&gt;
  &amp;lt;entry name=&amp;quot;HOSTNAME&amp;quot;&amp;gt;IPADDRESS&amp;lt;/entry&amp;gt;&lt;br /&gt;
&amp;lt;/hosts&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== network ===&lt;br /&gt;
{{anchor|.3Cnetwork.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;network&amp;gt;&lt;br /&gt;
  &amp;lt;curlclienttimeout&amp;gt;10&amp;lt;/curlclienttimeout&amp;gt;  &amp;lt;!-- Timeout in seconds for libcurl (http/ftp) connections --&amp;gt;&lt;br /&gt;
  &amp;lt;curllowspeedtime&amp;gt;20&amp;lt;/curllowspeedtime&amp;gt;    &amp;lt;!-- Time in seconds for libcurl to consider a connection lowspeed --&amp;gt;&lt;br /&gt;
  &amp;lt;curlretries&amp;gt;2&amp;lt;/curlretries&amp;gt;               &amp;lt;!-- Amount of retries for certain failed libcurl operations (e.g. timeout) --&amp;gt;&lt;br /&gt;
  &amp;lt;httpproxyusername&amp;gt;&amp;lt;/httpproxyusername&amp;gt;    &amp;lt;!-- username for Basic Proxy Authentication --&amp;gt;&lt;br /&gt;
  &amp;lt;httpproxypassword&amp;gt;&amp;lt;/httpproxypassword&amp;gt;    &amp;lt;!-- password for Basic Proxy Authentication --&amp;gt;&lt;br /&gt;
  &amp;lt;disableipv6&amp;gt;false&amp;lt;/disableipv6&amp;gt;           &amp;lt;!-- Certain hardware/OS combinations have trouble with ipv6. Set &amp;quot;true&amp;quot; to disable --&amp;gt;&lt;br /&gt;
  &amp;lt;disablehttp2&amp;gt;false&amp;lt;/disablehttp2&amp;gt;         &amp;lt;!-- Added in v19- Allows disabling HTTP2 for broken Curl / HTTP2 servers --&amp;gt;&lt;br /&gt;
  &amp;lt;nfstimeout&amp;gt;30&amp;lt;/nfstimeout&amp;gt;                &amp;lt;!-- Added in v19- Timeout in seconds for NFS access, 0 = wait forever (previous behaviour) default is 5s  --&amp;gt;&lt;br /&gt;
  &amp;lt;catrustfile&amp;gt;filepath&amp;lt;/catrustfile&amp;gt;        &amp;lt;!-- Added in v19- Allows specifying a custom SSL CA trust store bundle. e.g. special://masterprofile/cacerts.pem --&amp;gt;&lt;br /&gt;
  &amp;lt;curlkeepaliveinterval&amp;gt;30&amp;lt;/curlkeepaliveinterval&amp;gt;     &amp;lt;!-- Added in v19- Enable TCP keepalive probes in curl --&amp;gt;&lt;br /&gt;
  &amp;lt;nfsretries&amp;gt;0&amp;lt;/nfsretries&amp;gt;                 &amp;lt;!-- 0 to disable, default: -1 (unlimited) Added in v20--&amp;gt;&lt;br /&gt;
&amp;lt;/network&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More information:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;curlkeepaliveinterval&amp;gt;&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/19319&amp;lt;/ref&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;nfsretries&amp;gt;&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/19513&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cache ===&lt;br /&gt;
{{see also|HOW-TO:Modify_the_video_cache}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cache&amp;gt;&lt;br /&gt;
  &amp;lt;memorysize&amp;gt;0&amp;lt;/memorysize&amp;gt;   &amp;lt;!-- Number of bytes used for buffering streams in memory when set to 0 the cache will be written to disk instead of RAM --&amp;gt;&lt;br /&gt;
  &amp;lt;buffermode&amp;gt;0&amp;lt;/buffermode&amp;gt;   &amp;lt;!-- Choose what to buffer:&lt;br /&gt;
                                    0) Buffer all internet filesystems (like &amp;quot;2&amp;quot; but additionally also ftp, webdav, etc.) &lt;br /&gt;
                                    1) Buffer all filesystems (including local) (default since Kodi 19)&lt;br /&gt;
                                    2) Only buffer true internet filesystems (streams) (http, https, etc.)&lt;br /&gt;
                                    3) No buffer&lt;br /&gt;
                                    4) Buffer all network filesystems (incl. smb, nfs, etc.) --&amp;gt;&lt;br /&gt;
  &amp;lt;readfactor&amp;gt;4.0&amp;lt;/readfactor&amp;gt; &amp;lt;!-- This factor determines the max readrate in terms of readfactor * avg bitrate of a video file. &lt;br /&gt;
                                    This can help on bad connections to keep the cache filled. It will also greatly speed up buffering. Default value 4.0. --&amp;gt;&lt;br /&gt;
  &amp;lt;chunksize&amp;gt;65536&amp;lt;/chunksize&amp;gt; &amp;lt;!-- Filesystem like e.g. NFS might not properly receive the server&#039;s max read chunk values and therefore end up with a very low&lt;br /&gt;
                                    default, causing issues during Cache filling and buffering. This values can be tuned between 256 Bytes and 1048576 Bytes.&lt;br /&gt;
                                    Depending on the filesystem this value is overwritten by e.g. FileCache implementation when another default is appropriate --&amp;gt;&lt;br /&gt;
&amp;lt;/cache&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== airtunesport ===&lt;br /&gt;
{{anchor|.3Cairtunesport.3E}}&amp;lt;section begin=&amp;quot;airtunesport&amp;quot; /&amp;gt;&lt;br /&gt;
This overwrites the defalt listening port of the AirTunes server (announced via zeroconf).&lt;br /&gt;
&amp;lt;section end=&amp;quot;airtunesport&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== airplayport ===&lt;br /&gt;
{{anchor|.3Cairplayport.3E}}&amp;lt;section begin=&amp;quot;airplayport&amp;quot; /&amp;gt;&lt;br /&gt;
This overwrites the default listening port of the AirPlay server (announced via zeroconf).&lt;br /&gt;
&amp;lt;section end=&amp;quot;airplayport&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File system settings ==&lt;br /&gt;
&lt;br /&gt;
=== packagefoldersize ===&lt;br /&gt;
&amp;lt;section begin=&amp;quot;packagefoldersize&amp;quot; /&amp;gt;&lt;br /&gt;
{{anchor|.3Cpackagefoldersize.3E}}&lt;br /&gt;
{{xml setting&lt;br /&gt;
 | tag name = packagefoldersize&lt;br /&gt;
 | option type = numerical&lt;br /&gt;
 | option values = &lt;br /&gt;
 | default values = 200&lt;br /&gt;
 | platform = all&lt;br /&gt;
 | XBMC version = 12&lt;br /&gt;
 | description = The amount (in megabytes) of add-on zip packages saved from previous add-on installs. These packages are mainly used for the [[Add-ons|add-on]] rollback feature. Increasing the size should increase the amount of past versions saved. Defaults to 200 MB.&lt;br /&gt;
 | example = Example: &amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;packagefoldersize&amp;gt;200&amp;lt;/packagefoldersize&amp;gt; &amp;lt;!-- this example would keep up to 200MB of add-on packages. --&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;section end=&amp;quot;packagefoldersize&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== detectasudf ===&lt;br /&gt;
{{anchor|.3Cdetectasudf.3E}}&lt;br /&gt;
{{xml setting&lt;br /&gt;
 | tag name = detectasudf&lt;br /&gt;
 | option type = binary&lt;br /&gt;
 | option values = true, false&lt;br /&gt;
 | default values = false&lt;br /&gt;
 | platform = all&lt;br /&gt;
 | XBMC version = &lt;br /&gt;
 | description = Set to true if you wish to detect joint ISO9660/UDF disks as UDF.&lt;br /&gt;
 | example = Example: &amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;detectasudf&amp;gt;false&amp;lt;/detectasudf&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== handlemounting ===&lt;br /&gt;
{{anchor|.3Chandlemounting.3E}}&lt;br /&gt;
{{xml setting&lt;br /&gt;
 | tag name = handlemounting&lt;br /&gt;
 | option type = binary&lt;br /&gt;
 | option values = true, false&lt;br /&gt;
 | default values = false&lt;br /&gt;
 | platform = Linux&lt;br /&gt;
 | XBMC version = &lt;br /&gt;
 | description = Only used in Linux, it defines if Kodi should attempt to mount media drives (via udisks or udisks2).&amp;lt;br/&amp;gt;Default: False. If kodi is executed with the --standalone option (e.g. as done by kodi-standalone.sh) it by default will be True.&lt;br /&gt;
 | example = Example: &amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;handlemounting&amp;gt;false&amp;lt;/handlemounting&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== automountopticalmedia ===&lt;br /&gt;
{{xml setting&lt;br /&gt;
 | tag name = automountopticalmedia&lt;br /&gt;
 | option type = binary&lt;br /&gt;
 | option values = true, false&lt;br /&gt;
 | default values = false&lt;br /&gt;
 | platform = Linux&lt;br /&gt;
 | XBMC version = &lt;br /&gt;
 | description = Only used in linux for the udisks and udisks2 providers&amp;lt;br/&amp;gt;defines if kodi should automount optical discs&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/20840&amp;lt;/ref&amp;gt;&lt;br /&gt;
 | example = Example: &amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;automountopticalmedia&amp;gt;true&amp;lt;/automountopticalmedia&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pathsubstitution ===&lt;br /&gt;
{{anchor|.3Cpathsubstitution.3E}}&lt;br /&gt;
{{main|Path substitution}}&lt;br /&gt;
&lt;br /&gt;
{{divbox|red||&#039;&#039;&#039;Note:&#039;&#039;&#039; Path substition for &amp;quot;sources&amp;quot; and profiles is broken, and will &#039;&#039;&#039;NOT&#039;&#039;&#039; be fixed.}}&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
Default: No path substitutions defined.  &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pathsubstitution&amp;gt;&lt;br /&gt;
  &amp;lt;substitute&amp;gt;&lt;br /&gt;
    &amp;lt;from&amp;gt;G:\dvds\&amp;lt;/from&amp;gt;&lt;br /&gt;
    &amp;lt;to&amp;gt;smb://somecomputer/g-share/dvds/&amp;lt;/to&amp;gt; &amp;lt;!-- Note the difference between the usage of forward and backslashes --&amp;gt;&lt;br /&gt;
  &amp;lt;/substitute&amp;gt;&lt;br /&gt;
&amp;lt;/pathsubstitution&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Input control settings ==&lt;br /&gt;
&lt;br /&gt;
=== remotedelay ===&lt;br /&gt;
{{anchor|.3Cremotedelay.3E}}&lt;br /&gt;
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&#039;s held down). &lt;br /&gt;
&lt;br /&gt;
Default: 3&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;remotedelay&amp;gt;10&amp;lt;/remotedelay&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== controllerdeadzone ===&lt;br /&gt;
{{anchor|.3Ccontrollerdeadzone.3E}}&lt;br /&gt;
This advanced settings has been removed. &lt;br /&gt;
Since v17, the [[Advancedsettings.xml#controllerdeadzone|&amp;amp;lt;controllerdeadzone&amp;amp;gt;]] advanced setting has been removed. Deadzones can now be configured by plugging in the controller and selecting it in Settings -&amp;gt; System settings -&amp;gt; Input -&amp;gt; Peripherals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== enablemultimediakeys ===&lt;br /&gt;
{{anchor|.3Cenablemultimediakeys.3E}}&lt;br /&gt;
This setting only has any effect on Windows versions of Kodi, and only applies to builds from 28th May 2011 onwards.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enablemultimediakeys&amp;gt;true&amp;lt;/enablemultimediakeys&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== seeksteps ===&lt;br /&gt;
{{Main|Skip steps}}&lt;br /&gt;
&lt;br /&gt;
This setting changes which increments are available in the settings GUI for additive seeking. Note that &amp;lt;code&amp;gt;&amp;lt;seeksteps&amp;gt;&amp;lt;/code&amp;gt; is not used to actually choose which seek steps are enabled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;seeksteps&amp;gt;7, 15, 30, 60, 180, 300, 600, 900, 1800&amp;lt;/seeksteps&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{editor note|the defaults need to be updated for seeksteps.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== touchscreen ===&lt;br /&gt;
{{anchor|.3Ctouchscreen.3E}}&lt;br /&gt;
This setting allows you to move/align the origin of the touch screen with the origin of the display used. If touch input does not result in a correct movement of the mouse pointer, the behaviour can be corrected with an offset and a stretch/compress factor.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;touchscreen&amp;gt;&lt;br /&gt;
		&amp;lt;x_offset&amp;gt;0&amp;lt;/x_offset&amp;gt; &amp;lt;!-- set pixel x offset to align it to the used display--&amp;gt;&lt;br /&gt;
		&amp;lt;y_offset&amp;gt;0&amp;lt;/y_offset&amp;gt; &amp;lt;!-- set pixel y offset to align it to the used display--&amp;gt;&lt;br /&gt;
		&amp;lt;x_stretch_factor&amp;gt;1.0&amp;lt;/x_stretch_factor&amp;gt; &amp;lt;!-- stretch/compress the touch x axis--&amp;gt;&lt;br /&gt;
		&amp;lt;y_stretch_factor&amp;gt;1.0&amp;lt;/y_stretch_factor&amp;gt; &amp;lt;!-- stretch/compress the touch y axis--&amp;gt;&lt;br /&gt;
    &amp;lt;/touchscreen&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== scanirserver ===&lt;br /&gt;
Introduced in v18 and used in MS Windows setups only.&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/13896&amp;lt;/ref&amp;gt;&lt;br /&gt;
Used to disable the regular connection attempts to the IR Server Suite when there is no remote to connect to.&lt;br /&gt;
&lt;br /&gt;
The default setting is to allow connection attempts. To disable connection attempts change value to &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;scanirserver&amp;gt;true&amp;lt;/scanirserver&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GUI rendering settings ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== algorithmdirtyregions ===&lt;br /&gt;
{{anchor|.3Calgorithmdirtyregions.3E}}&lt;br /&gt;
{{see also|HOW-TO:Modify dirty regions}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;algorithmdirtyregions&amp;quot; /&amp;gt;{{note|Some GPU/hardware configurations will have some minor issues (such as a visual &amp;quot;flicker&amp;quot;). 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.}}&lt;br /&gt;
 &lt;br /&gt;
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&#039;t changed the GUI can be sped up. Because all GPUs work differently, only Mode 3 is guaranteed to work for everyone without flickering issues. This mode will reduce CPU/GPU usage, but will not increase GUI speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! value !! result !! description&lt;br /&gt;
|-&lt;br /&gt;
! 0&lt;br /&gt;
| Off&lt;br /&gt;
| The entire viewport is always rendered.&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
|Union&lt;br /&gt;
|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.&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| {{nowrap|Cost reduction}}&lt;br /&gt;
| Each dirty region is presented separately, in as many passes as there are regions.&lt;br /&gt;
|-&lt;br /&gt;
! 3&lt;br /&gt;
| {{nowrap|Whole Screen}}&lt;br /&gt;
| The entire screen is rendered if there are any dirty regions. This is a safe default for drivers that clear buffer contents (manifests as blinking or vibrating images). &#039;&#039;&#039;Default&#039;&#039;&#039;&lt;br /&gt;
|}&amp;lt;section end=&amp;quot;algorithmdirtyregions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;algorithmdirtyregions&amp;gt;1&amp;lt;/algorithmdirtyregions&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== visualizedirtyregions ===&lt;br /&gt;
{{anchor|.3Cvisualizedirtyregions.3E}}&lt;br /&gt;
{{see also|HOW-TO:Modify dirty regions}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;visualizedirtyregions&amp;quot; /&amp;gt;Enable dirty-region visualization. Paints a rectangle over marked controls.&lt;br /&gt;
&lt;br /&gt;
* true: on&lt;br /&gt;
* false: off &#039;&#039;&#039;(Default)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|This is only a development mode and isn&#039;t of use to normal users.}}&lt;br /&gt;
&amp;lt;section end=&amp;quot;visualizedirtyregions&amp;quot; /&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;visualizedirtyregions&amp;gt;true&amp;lt;/visualizedirtyregions&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== smartredraw ===&lt;br /&gt;
&lt;br /&gt;
{{note|This is an experimental feature and you might face issues using it. So please be aware of that.}}&lt;br /&gt;
&lt;br /&gt;
This new feature was introduced in Kodi 18 and if enabled, the GUI process call (and therefore the render call) is only done if anything has changed. The result will be a faster GUI and less load if Kodi plays a video&lt;br /&gt;
&lt;br /&gt;
* true: on&lt;br /&gt;
* false: off &#039;&#039;&#039;(Default)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;smartredraw&amp;gt;true&amp;lt;/smartredraw&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== anisotropicfiltering ===&lt;br /&gt;
&lt;br /&gt;
This new feature was introduced for the GL/GLES rendering backends in Kodi 22. It allows for better (hardware specific) filtering of textures at glancing angles. Depending on the hardware it might have no effect, or there might be a performance degradation. Typical values are &amp;quot;2&amp;quot; or &amp;quot;3&amp;quot;, but might go as high as &amp;quot;16&amp;quot;, depending on the hardware. The default is &amp;quot;1&amp;quot; (disabled).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;anisotropicfiltering&amp;gt;2&amp;lt;/anisotropicfiltering&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== fronttobackrendering ===&lt;br /&gt;
&lt;br /&gt;
This experimental feature was introduced for the GL/GLES rendering backends in Kodi 22. It enables a form of occlusion culling, by rendering opaque object from front to back. Most GPUs should benefit from this setting (especially on ARM based systems), often resulting in higher frame rates or less memory bandwidth usage.&lt;br /&gt;
&lt;br /&gt;
* true: on&lt;br /&gt;
* false: off &#039;&#039;&#039;(Default)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;fronttobackrendering&amp;gt;true&amp;lt;/fronttobackrendering&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== geometryclear ===&lt;br /&gt;
&lt;br /&gt;
This experimental setting was introduced for the GL/GLES rendering backends in Kodi 22. It disables geometry based screen clearing in favor of fixed function clearing. Depending on the GPU (most ARM systems, Intel &amp;gt;gen 12), disabling the setting might be preferable for increased performance.&lt;br /&gt;
&lt;br /&gt;
* true: on &#039;&#039;&#039;(Default)&#039;&#039;&#039;&lt;br /&gt;
* false: off&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;geometryclear&amp;gt;false&amp;lt;/geometryclear&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other interface settings ==&lt;br /&gt;
&lt;br /&gt;
=== window ===&lt;br /&gt;
{{anchor|.3Cwindow.3E}}&lt;br /&gt;
{{note|This is a &amp;quot;hidden&amp;quot; guisettings.xml setting (defined by the mouse moving the window size), but it is mentioned here because it is a particularly useful override when used in advancedsettings.xml}}&lt;br /&gt;
This allows you to manually set the default size of Kodi&#039;s windowed mode.  If you resize the window, it will return to the set size when restarting.&lt;br /&gt;
&lt;br /&gt;
WIDTH and HEIGHT are the values for each dimension, in pixels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;window&amp;gt;&lt;br /&gt;
    &amp;lt;width&amp;gt;WIDTH&amp;lt;/width&amp;gt;&lt;br /&gt;
    &amp;lt;height&amp;gt;HEIGHT&amp;lt;/height&amp;gt;&lt;br /&gt;
&amp;lt;/window&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== restrictcapsmask ===&lt;br /&gt;
{{anchor|.3Crestrictcapsmask.3E}}&lt;br /&gt;
Windows only. A bitmask to prevent Kodi from using detected texture capabilities of the GPU. This helps work around buggy hardware/drivers.&lt;br /&gt;
&lt;br /&gt;
1: prevent the use of compressed textures (DXT1, DXT3, DXT5)&lt;br /&gt;
2: prevent the use of non-power-of-two dimensions for textures&lt;br /&gt;
4: prevent the use of compressed textures with non-power-of-two dimensions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;restrictcapsmask&amp;gt;0&amp;lt;/restrictcapsmask&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== showexitbutton ===&lt;br /&gt;
{{anchor|.3Cshowexitbutton.3E}}&lt;br /&gt;
Setting to hide the exit button, useful for people running appliance based setups where exit would only confuse/complicate the user. Modifiable via the advancedsettings.xml by setting showexitbutton to false, default is true (show)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;showexitbutton&amp;gt;true&amp;lt;/showexitbutton&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== fullscreen ===&lt;br /&gt;
{{anchor|.3Cfullscreen.3E}}&lt;br /&gt;
Starts Kodi in full screen (check resolutions!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fullscreen&amp;gt;false&amp;lt;/fullscreen&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== splash ===&lt;br /&gt;
{{anchor|.3Csplash.3E}}&lt;br /&gt;
Set to false if you wish to disable the startup splash image. Defaults to true.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;splash&amp;gt;true&amp;lt;/splash&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== cputempcommand ===&lt;br /&gt;
{{anchor|.3Ccputempcommand.3E}}&lt;br /&gt;
Provide a shell command Kodi will use to get CPU temperature. It should print out only &amp;quot;[temp as integer] [scale as one of &amp;quot;CcFf&amp;quot;]&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For Nvidia and Raspberry Pi&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cputempcommand&amp;gt;sed -e &#039;s/\([0-9]*\)[0-9]\{3\}.*/\1 C/&#039; /sys/class/thermal/thermal_zone0/temp&amp;lt;/cputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cputempcommand&amp;gt;echo &amp;quot;$(sensors -u | tail -n64 | grep temp1_input | awk &#039;{print $2 }&#039; |awk &#039;{printf(&amp;quot;%d\n&amp;quot;,$1 + 0.5);}&#039;) C&amp;quot;&amp;lt;/cputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For ATI/AMD&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cputempcommand&amp;gt;sensors|sed -ne &amp;quot;s/temp1: \+[-+]\([0-9]\+\).*/\1 C/p&amp;quot;&amp;lt;/cputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== gputempcommand ===&lt;br /&gt;
{{anchor|.3Cgputempcommand.3E}}&lt;br /&gt;
Provide a shell command Kodi will use to get GPU temperature. It should print out only &amp;quot;[temp as integer] [scale as one of &amp;quot;CcFf&amp;quot;]&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For Nvidia&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;echo &amp;quot;$(nvidia-settings -tq gpuCoreTemp) C&amp;quot;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;echo &amp;quot;$(nvidia-smi -q -d TEMPERATURE | grep Gpu | cut -c35-36) C&amp;quot;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For ATI/AMD&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;/usr/bin/aticonfig --od-gettemperature | grep Temperature | cut -f 2 -d &amp;quot;-&amp;quot; | cut -f 1 -d &amp;quot;.&amp;quot; | sed -e &amp;quot;s, ,,&amp;quot; | sed &#039;s/$/ C/&#039;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;u&amp;gt;For Raspberry Pi&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;/opt/vc/bin/vcgencmd measure_temp | sed -e &amp;quot;s/temp=//&amp;quot; -e &amp;quot;s/\..*&#039;/ /&amp;quot;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== glrectanglehack ===&lt;br /&gt;
{{anchor|.3Cglrectanglehack.3E}}&lt;br /&gt;
Problems with ghosting or videos which are only played back in the left upper quarter? The following ATI hack may solve it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;glrectanglehack&amp;gt;yes&amp;lt;/glrectanglehack&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== alwaysontop ===&lt;br /&gt;
{{anchor|.3Calwaysontop.3E}}&lt;br /&gt;
Added in XBMC v9.11 (Windows OS only). Keeps Kodi always on top when windowed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;alwaysontop&amp;gt;yes&amp;lt;/alwaysontop&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a fake fullscreen GUI option in Kodi&#039;s settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== minimizetotray ===&lt;br /&gt;
{{anchor|.3Cminimizetotray.3E}}&lt;br /&gt;
{{note|Available in Kodi v20 and above.}}&lt;br /&gt;
&lt;br /&gt;
Windows only. Minimizes Kodi to the system tray. Defaults to false.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;minimizetotray&amp;gt;true&amp;lt;/minimizetotray&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Removed tags =&lt;br /&gt;
{{anchor|Recently removed tags}}&lt;br /&gt;
* {{anchor|.3Cthumbsize.3E}}&#039;&#039;&#039;&amp;lt;thumbsize&amp;gt;&#039;&#039;&#039; - replaced by &amp;lt;[[#imageres|imageres]]&amp;gt; in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cfanartheight.3E}}&#039;&#039;&#039;&amp;lt;fanartheight&amp;gt;&#039;&#039;&#039; - replaced by &amp;lt;[[#fanartres|fanartres]]&amp;gt; in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cdvdthumbs.3E}}&#039;&#039;&#039;&amp;lt;dvdthumbs&amp;gt;&#039;&#039;&#039; - removed in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cbusydialogdelayms.3E}}&#039;&#039;&#039;&amp;lt;busydialogdelayms&amp;gt;&#039;&#039;&#039; - removed in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cbginfoloadermaxthreads.3E}}&#039;&#039;&#039;&amp;lt;bginfoloadermaxthreads&amp;gt;&#039;&#039;&#039; - removed in v13 Gotham&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;showepginfoonselect&amp;gt;&#039;&#039;&#039; - replaced by a GUI setting in v13 Gotham&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;resample&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;forceDirectSound&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;audiophile&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;audiosinkbufferdurationmsec&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;allowtranscode44100&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;streamsilence&amp;gt;&#039;&#039;&#039; - These were various sub-tags for &amp;lt;audio&amp;gt; that were removed in v13 Gotham and either replaced by GUI settings or were no longer needed.&lt;br /&gt;
* {{anchor|.3Cenableairtunesdebuglog.3E}}&#039;&#039;&#039;&amp;lt;enableairtunesdebuglog&amp;gt;&#039;&#039;&#039; - replaced by a GUI option in v14 Helix&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;videoDisableHi10pMultithreading&amp;gt;&#039;&#039;&#039; - renamed to &amp;lt;disableswmultithreading&amp;gt; in v14 Helix&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;hideallitems&amp;gt;&#039;&#039;&#039; - For both the &amp;lt;code&amp;gt;&amp;lt;videolibrary&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;musiclibrary&amp;gt;&amp;lt;/code&amp;gt; sections, this is replaced by a GUI option in v15 Isengard&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;SmallStepBackSeconds&amp;gt;&#039;&#039;&#039; - In v15 the &amp;lt;code&amp;gt;SmallStepBack&amp;lt;/code&amp;gt; [[Action_IDs]] has been replaced by &amp;lt;code&amp;gt;seek(-7)&amp;lt;/code&amp;gt; in default keymaps. See &#039;&#039;&#039;[[skip steps]]&#039;&#039;&#039; for details. When the original &amp;lt;code&amp;gt;SmallStepBack&amp;lt;/code&amp;gt; action ID is used it defaults to the first backwards [[skip steps|additive seeking value]].&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;timeseekforward&amp;gt;/&amp;lt;timeseekbackward&amp;gt;&#039;&#039;&#039; - In v15 these tags are replaced by GUI options via [[skip steps|additive seeking]], which is configured in the GUI. See &#039;&#039;&#039;[[skip steps]]&#039;&#039;&#039; for details.&lt;br /&gt;
* {{anchor|.3Ckaraoke.3E}}&#039;&#039;&#039;&amp;lt;karaoke&amp;gt;&#039;&#039;&#039; - In v16 all of the karaoke features in Kodi were removed.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;useddsfanart&amp;gt;&#039;&#039;&#039; - removed in v17 Krypton.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;cachemembuffersize&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;&amp;lt;readbufferfactor&amp;gt;&#039;&#039;&#039; - In v17 &#039;&#039;&#039;&amp;lt;cachemembuffersize&amp;gt;&#039;&#039;&#039; is renamed to &#039;&#039;&#039;&amp;lt;memorysize&amp;gt;&#039;&#039;&#039; and &amp;lt;code&amp;gt;&amp;lt;readbufferfactor&amp;gt;&amp;lt;/code&amp;gt; is renamed to &amp;lt;code&amp;gt;&amp;lt;readfactor&amp;gt;&amp;lt;/code&amp;gt;. In addition, all three buffer related settings in &amp;lt;network&amp;gt; are moved out of &amp;lt;network&amp;gt; and into a new &amp;lt;cache&amp;gt; parent tag.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;minvideocachelevel&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;minaudiocachelevel&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;cacheindvdplayer&amp;gt;&#039;&#039;&#039; have been removed in v17.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;useffmpegvda&amp;gt;&#039;&#039;&#039; - Tag was only used for development testing. Removed in v17.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;nofliptimeout&amp;gt;&#039;&#039;&#039; - Removed in v17&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;blackbarcolour&amp;gt;&#039;&#039;&#039; - Removed in v17 (maybe?)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;disableswmultithreading&amp;gt;&#039;&#039;&#039; - Removed in v17 (maybe?)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;controllerdeadzone&amp;gt;&#039;&#039;&#039; - Removed in v17&lt;br /&gt;
* {{anchor|.3Cmeasurerefreshrate.3E}}&#039;&#039;&#039;&amp;lt;measurerefreshrate&amp;gt;&#039;&#039;&#039; - Removed in v17 or v18?&lt;br /&gt;
* {{anchor|.3Cmyth.3E}}&#039;&#039;&#039;&amp;lt;myth&amp;gt;&#039;&#039;&#039; - Removed sometime between v16 to v18&lt;br /&gt;
* {{anchor|.3Ctuxbox.3E}}&#039;&#039;&#039;&amp;lt;tuxbox&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;backgroundupdate&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;hideemptyseries&amp;gt;&#039;&#039;&#039; - Replaced by a GUI option.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;mymovies&amp;gt;&#039;&#039;&#039; and child tag &#039;&#039;&#039;&amp;lt;categoriestogenres&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;albumssortbyartistthenyear&#039;&#039;&#039;&amp;gt; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;albumformatright&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* {{anchor|.3Cremoterepeat.3E}}&#039;&#039;&#039;&amp;lt;remoterepeat&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* {{anchor|.3Callowd3d9ex.3E}}&#039;&#039;&#039;&amp;lt;allowd3d9ex&amp;gt;&#039;&#039;&#039; and {{anchor|.3Cforced3d9ex.3E}}&#039;&#039;&#039;&amp;lt;forced3d9ex&amp;gt;&#039;&#039;&#039; - Removed sometime between v16 to v18&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;lingertime&amp;gt;&#039;&#039;&#039; - Replaced by a GUI setting in v18&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;forcevaapienabled&amp;gt;&#039;&#039;&#039; - Removed in v18&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;dxvaallowhqscaling&amp;gt;&#039;&#039;&#039; - Removed in v18 &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/15466&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;promptfulltagscan&amp;gt;false&amp;lt;/promptfulltagscan&amp;gt;&#039;&#039;&#039; Removed in v18. Now automatically asked each time a scan is conducted.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;omxdecodestartwithvalidframe&amp;gt;&#039;&#039;&#039; - This tag is only in some Raspberry Pi specific distributions, such as OpenELEC. As of March 2015, this tag has not been merged into &amp;quot;vanilla&amp;quot; Kodi builds&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;musicthumbs&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Thumbnail image files&#039;&#039;&#039; found in Media -&amp;gt; Music&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;artistextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Artist art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Music&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;albumextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Album art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Music&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;episodeextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Episode art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Videos&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tvshowextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;TV show art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Videos&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tvseasonextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;TV show art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Videos&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;movieextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Movie art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Videos&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;moviesetextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Movie art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Videos&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;musicvideoextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Music video art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Videos&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;fanart&amp;gt;&#039;&#039;&#039; Removed in v19&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;assfixedworks&amp;gt;&#039;&#039;&#039; Removed in v20&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;try10bitoutput&amp;gt;&#039;&#039;&#039; Removed in v20 and replaced with [[Settings/System/Display#Use_10_bit_for_SDR|Use 10 bit for SDR]] setting &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/20014&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;enablehighqualityhwscalers&amp;gt;&#039;&#039;&#039; Removed in v20 &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/21537&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= guisettings.xml Setting Conversion =&lt;br /&gt;
It is possible to convert settings found in the &#039;&#039;&#039;[[Settings]]&#039;&#039;&#039; &#039;&#039;(guisettings.xml)&#039;&#039; pages of {{kodi}} into entries for the advancedsettings.xml file.&lt;br /&gt;
&lt;br /&gt;
When a setting from the guisettings.xml is added to the advancedsettings.xml file, it will override the existing guisettings.xml values and the setting will be removed from the settings pages.&lt;br /&gt;
&lt;br /&gt;
Why would I need to do this?&lt;br /&gt;
* You set up multiple devices and then need to individually change settings and preferences on each device. Using this conversion method, you save those settings in the advancedsettings.xml file and simply add the file to each device&lt;br /&gt;
* You need to hide settings to prevent those settings from being modified&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To convert a guisetting to advancedsettings.xml follow these steps:&lt;br /&gt;
# In the {{kodi}} settings pages, adjust the setting(s) to your preference.&lt;br /&gt;
# Back out of the settings pages to the main menu, which forces {{kodi}} to save the adjusted settings to the guisettings.xml file&lt;br /&gt;
# Locate the guisettings.xml file in the [[Userdata]] folder and open it&lt;br /&gt;
# Locate the setting(s) to be converted. The list can be overwhelming so make use of the Search feature of whichever editor you are using&lt;br /&gt;
# Using the following setting as an example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;setting id=&amp;quot;videolibrary.showemptytvshows&amp;quot;&amp;gt;true&amp;lt;/setting&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: Breaking down the string:&lt;br /&gt;
::&#039;&#039;&#039;videolibrary&#039;&#039;&#039;- parent tag&lt;br /&gt;
::&#039;&#039;&#039;showemptytvshows&#039;&#039;&#039;- child tag&lt;br /&gt;
::&#039;&#039;&#039;true&#039;&#039;&#039;- value&lt;br /&gt;
: The conversion is as follows and place this in the advancedsettings.xml file&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;videolibrary&amp;gt;&lt;br /&gt;
          &amp;lt;showemptytvshows&amp;gt;true&amp;lt;/showemptytvshows&amp;gt;&lt;br /&gt;
     &amp;lt;/videolibrary&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Some parent tags may already be in use in your advancedsettings.xml file. Do not duplicate them, but add the child tag beneath the existing parent tag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Updated|18}}&lt;br /&gt;
{{DISPLAYTITLE:advancedsettings.xml}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Advanced topics]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Settings]]&lt;br /&gt;
[[Category:Karellen]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Advancedsettings.xml&amp;diff=252614</id>
		<title>Advancedsettings.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Advancedsettings.xml&amp;diff=252614"/>
		<updated>2024-04-28T18:45:57Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}{{mininav|[[Settings]]|page=advancedsettings.xml}}&lt;br /&gt;
{{bigger|{{note|&#039;&#039;&#039;The advancedsettings.xml file does not exist by default. You have to create it first!&#039;&#039;&#039;}} }}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;The [[advancedsettings.xml]] file, which does not exist by default, can be created by a user in their &#039;&#039;&#039;[[Userdata|userdata folder]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;advancedsettings.xml&amp;quot;. These advanced settings can be used to tweak various things such as episode naming patterns, special network ports, special behaviors, and more.&amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following page will describe the structure of the advancedsettings.xml file and the various individual settings.&lt;br /&gt;
&lt;br /&gt;
{{note|&lt;br /&gt;
# All XML tags must be lowercase. The start and end of the advancedsettings.xml file must have the &amp;lt;advancedsettings&amp;gt; and &amp;lt;/advancedsettings&amp;gt; tags.&lt;br /&gt;
# 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.&lt;br /&gt;
# For some Windows versions, Kodi has two &amp;lt;code&amp;gt;\userdata\&amp;lt;/code&amp;gt; folders. The correct one to put the advancedsettings.xml file in is not the one in Program Files, but in &amp;lt;code&amp;gt;%appdata%\Kodi\userdata\.&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
&lt;br /&gt;
The layout of &amp;lt;code&amp;gt;advancedsettings.xml&amp;lt;/code&amp;gt; is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting&amp;gt;value&amp;lt;/setting&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;setting&amp;gt;value&amp;lt;/setting&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;setting&amp;quot; gives the name of the setting, and &amp;quot;value&amp;quot; gives its value.&lt;br /&gt;
&lt;br /&gt;
A list of the available &amp;quot;setting&amp;quot; strings and their values is given below.&lt;br /&gt;
&lt;br /&gt;
= List of available settings =&lt;br /&gt;
List of available settings that are recognised in the advancedsettings.xml file &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/blob/master/xbmc/settings/AdvancedSettings.cpp&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recommended: Use the table of contents or the search function in your browser to locate items.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting settings ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== loglevel ===&lt;br /&gt;
{{Anchor|.3Cloglevel.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;loglevel&amp;quot; /&amp;gt;&lt;br /&gt;
Sets the logging level used to log errors and information. The &amp;quot;hide&amp;quot; attribute is optional. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;loglevel hide=&amp;quot;attribute&amp;quot;&amp;gt;options&amp;lt;/loglevel&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Attribute&lt;br /&gt;
! style=&amp;quot;width:500px;&amp;quot; | Action&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;true&#039;&#039;&#039; &lt;br /&gt;
| Hides the &amp;quot;enable debugging&amp;quot; setting in the Settings page. (default)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
| Allows &amp;quot;enable debugging&amp;quot; setting to switch between &#039;&#039;&#039;0&#039;&#039;&#039; and &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Option&lt;br /&gt;
! style=&amp;quot;width:500px;&amp;quot; | Action&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;-1&#039;&#039;&#039;&lt;br /&gt;
| No logging, suppresses all log output &lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
| Normal logging, only logging errors (default)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
| Debug logging with freemem, fps and cpu usage (no on screen)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;2&#039;&#039;&#039; &lt;br /&gt;
| Same as 1 (with on screen display)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;3&#039;&#039;&#039; &lt;br /&gt;
| Same as 1 + full smb logging&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Example &lt;br /&gt;
! style=&amp;quot;width:500px;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
! Example 1:&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;loglevel&amp;gt;2&amp;lt;/loglevel&amp;gt;  &lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Example 2:&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;loglevel hide=&amp;quot;true&amp;quot;&amp;gt;2&amp;lt;/loglevel&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The setting is persistent through shutdown and restarts.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If debugging is enabled in the GUI, loglevel will be set to &#039;&#039;&#039;2&#039;&#039;&#039;. This will over-ride the &amp;lt;code&amp;gt;advancedsettings.xml&amp;lt;/code&amp;gt; setting. You must disable the GUI Setting before adding the entry to &amp;lt;code&amp;gt;advancedsettings.xml&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;loglevel&amp;quot; /&amp;gt;&lt;br /&gt;
:&#039;&#039;{{see also|Log_file|label 1=Debug Log}}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== jsonrpc ===&lt;br /&gt;
{{Anchor|.3Cjsonrpc.3E}}&lt;br /&gt;
To make it easier for developers using the [[JSON-RPC_API]] API in their (third party) applications to debug during development the json output of Kodi can be prettified by setting &#039;&#039;&#039;compactoutput&#039;&#039;&#039; to &#039;&#039;&#039;false&#039;&#039;&#039;. Default json output mode is a compact print which does not contain any unnecessary whitespaces and therefore is difficult to read for humans.&lt;br /&gt;
Furthermore using the &#039;&#039;&#039;tcpport&#039;&#039;&#039; setting it is possible to change the default TCP port used by Kodi for JSON RPC (which is 9090) to any other valid port.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jsonrpc&amp;gt;&lt;br /&gt;
    &amp;lt;compactoutput&amp;gt;false&amp;lt;/compactoutput&amp;gt;&lt;br /&gt;
    &amp;lt;tcpport&amp;gt;9999&amp;lt;/tcpport&amp;gt;&lt;br /&gt;
&amp;lt;/jsonrpc&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Audio/video playback settings ==&lt;br /&gt;
&lt;br /&gt;
=== skiploopfilter ===&lt;br /&gt;
{{anchor|.3Cskiploopfilter.3E}}&lt;br /&gt;
The amount of the loop filter to skip on h.264 decoding.  This can help the performance of slower machines when decoding h264 content.  Values, in decreasing CPU usage (and decreasing quality)&lt;br /&gt;
* -16 None&lt;br /&gt;
* 0 Skip only empty frames (default)&lt;br /&gt;
* 8 Skip non-reference frames&lt;br /&gt;
* 16 Skip bi-dir frames&lt;br /&gt;
* 32 Skip all non-key frames&lt;br /&gt;
* 48 Skip all frames&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;skiploopfilter&amp;gt;8&amp;lt;/skiploopfilter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== video ===&lt;br /&gt;
{{anchor|.3Cvideo.3E}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;video&amp;gt; section also includes the following child-tags, which have their own sections:&lt;br /&gt;
*[[#cleandatetime]]&lt;br /&gt;
*[[#cleanstrings]]&lt;br /&gt;
*[[#excludefromscan]]&lt;br /&gt;
*[[#excludefromlisting]]&lt;br /&gt;
*[[#excludetvshowsfromscan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{note|Some tags that have a &amp;quot;third-level&amp;quot; and are grouped together are highlighted in color.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! Tag !! Description&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Parent tag that all other child tags need to be placed inside of. Do not use more than one &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; tag, but instead place all other child-tags within a single &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/video&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; set.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;subsdelayrange&amp;gt;10&amp;lt;/subsdelayrange&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Delay range for subtitles, in seconds.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;maxtempo&amp;gt;2.1&amp;lt;/maxtempo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Allow further increase of playback speed over the default of 1.5&amp;lt;br&amp;gt;&lt;br /&gt;
maxtempo must be in the range of 1.5 to 2.1 &amp;lt;br&amp;gt;&lt;br /&gt;
Be aware of the limitations of your platform / hardware as not all are capable of the increased maxtempo &amp;lt;ref&amp;gt;https://forum.kodi.tv/showthread.php?tid=10023&amp;amp;pid=2795069#pid2795069&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;audiodelayrange&amp;gt;10&amp;lt;/audiodelayrange&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Delay range for audio/video sync, in seconds.&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;usetimeseeking&amp;gt;true&amp;lt;/usetimeseeking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Whether to use time based or percentage based seeking. {{small see also|Skip steps}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekforwardbig&amp;gt;600&amp;lt;/timeseekforwardbig&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekbackwardbig&amp;gt;-600&amp;lt;/timeseekbackwardbig&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Time to seek forward in seconds when doing a long seek.  Defaults to 600 (10 minutes) and -600 (-10 minutes) respectively. &#039;&#039;{{small|See also: [[Skip steps]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekforward&amp;gt;2&amp;lt;/percentseekforward&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekbackward&amp;gt;-2&amp;lt;/percentseekbackward&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Amount to seek forward as a percentage, when doing a short seek.  Defaults to 2 (2%) and -2 (2%) respectively. &#039;&#039;{{small|See also: [[Skip steps]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekforwardbig&amp;gt;10&amp;lt;/percentseekforwardbig&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekbackwardbig&amp;gt;-10&amp;lt;/percentseekbackwardbig&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Amount to seek forward as a percentage, when doing a long seek.  Defaults to 10 (10%) and -10 (10%) respectively. &#039;&#039;{{small|See also: [[Skip steps]] }}&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;fullscreenonmoviestart&amp;gt;true&amp;lt;/fullscreenonmoviestart&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Whether to go to fullscreen or not when starting a movie. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;defaultplayer&amp;gt;VideoPlayer&amp;lt;/defaultplayer&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Set the default video player: VideoPlayer or an external player. See &#039;&#039;&#039;[[External players]]&#039;&#039;&#039; for more info.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromscan&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromscan&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Regular expressions that if evaluated to true won&#039;t be added to library.  It is possible to add multiple &amp;lt;code&amp;gt;&amp;lt;regexp&amp;gt;&amp;lt;/code&amp;gt; tags to match multiple patterns&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromlisting&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromlisting&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Regular expressions that if evaluated to true won&#039;t be displayed in files view.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;playcountminimumpercent&amp;gt;90&amp;lt;/playcountminimumpercent&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Minimum percentage that has to be played before it is marked as watched. Set to 101 to never auto-mark items as watched. &#039;&#039;{{small|See also: [[HOW-TO:Modify automatic watch and resume points]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ignoresecondsatstart&amp;gt;180&amp;lt;/ignoresecondsatstart&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Number of seconds to ignore at video start after which a resume point is created. &#039;&#039;{{small|See also: [[HOW-TO:Modify automatic watch and resume points]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ignorepercentatend&amp;gt;8&amp;lt;/ignorepercentatend&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| 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. &#039;&#039;{{small|See also: [[HOW-TO:Modify automatic watch and resume points]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;vdpauscaling&amp;gt;true&amp;lt;/vdpauscaling&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ppffmpegdeinterlacing&amp;gt;linblenddeint&amp;lt;/ppffmpegdeinterlacing&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Override the deinterlacing options passed to libpostproc.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ppffmpegpostprocessing&amp;gt;ha:128:7,va,dr&amp;lt;/ppffmpegpostprocessing&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Override the post processing options passed to libpostproc when &#039;Video post-processing&#039; is activated in GUI Videos-Settings-Playback.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;autoscalemaxfps&amp;gt;30&amp;lt;/autoscalemaxfps&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| When scaling method is set to auto, bilinear is chosen when the fps is higher than this limit, the default is 30.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;adjustrefreshrate&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | Settings for when &amp;quot;Adjust refreshrate to match video fps&amp;quot; is enabled in the video playback GUI settings.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;override&amp;gt;&lt;br /&gt;
      &amp;lt;fps&amp;gt;23.976&amp;lt;/fps&amp;gt;&lt;br /&gt;
      &amp;lt;refresh&amp;gt;60.0&amp;lt;/refresh&amp;gt;&lt;br /&gt;
    &amp;lt;/override&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; &amp;quot;Adjust refreshrate to match video fps&amp;quot; will try to select the best refreshrate for the video fps but it doesn&#039;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&#039;s possible to add as many overrides as you need.  Overrides are processed in order, if the first one doesn&#039;t match the fps or no refreshrates match that override, it will try the next one until no overrides are left.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fps&#039;&#039;&#039; - if the fps is between 23.966 and 23.986&lt;br /&gt;
* &#039;&#039;&#039;refresh&#039;&#039;&#039; - switch to the first found refreshrate that is between 59.99 and 60.01&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;override&amp;gt;&lt;br /&gt;
      &amp;lt;fpsmin&amp;gt;29.96&amp;lt;/fpsmin&amp;gt;&lt;br /&gt;
      &amp;lt;fpsmax&amp;gt;30.01&amp;lt;/fpsmax&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmin&amp;gt;59.0&amp;lt;/refreshmin&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmax&amp;gt;61.0&amp;lt;/refreshmax&amp;gt;&lt;br /&gt;
    &amp;lt;/override&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;fpsmin&#039;&#039;&#039; / &#039;&#039;&#039;fpsmin&#039;&#039;&#039; - You can also specify the fps range yourself.&lt;br /&gt;
* &#039;&#039;&#039;refreshmin&#039;&#039;&#039; / &#039;&#039;&#039;refreshmax&#039;&#039;&#039; - Same for the refreshrate&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;fallback&amp;gt;&lt;br /&gt;
      &amp;lt;refresh&amp;gt;50.0&amp;lt;/refresh&amp;gt;&lt;br /&gt;
    &amp;lt;/fallback&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; If 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&#039;t match any refreshrate, it will try the next one until no fallbacks are left.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;refresh&#039;&#039;&#039; - Switch to the first found refreshrate that is between 49.99 and 50.01.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;fallback&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmin&amp;gt;49.0&amp;lt;/refreshmin&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmax&amp;gt;51.0&amp;lt;/refreshmax&amp;gt;&lt;br /&gt;
    &amp;lt;/fallback&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; You can also specify the range for the fallback yourself.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;/adjustrefreshrate&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;checkdxvacompatibility&amp;gt;value&amp;lt;/checkdxvacompatibility&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Advanced setting not present: let Kodi autodetect cards that support H.264 profile &amp;gt; L4.1. Set value to false to enable DXVA no matter what. Set value to true if Kodi doesn&#039;t autodetect that the graphics card doesn&#039;t support &amp;gt; L4.1.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;useocclusionquery&amp;gt;-1&amp;lt;/useocclusionquery&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Use an occlusion query when capturing videoframes, -1 means auto detect, 0 means disabled, 1 means enabled, the default is -1.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;fpsdetect&amp;gt;1&amp;lt;/fpsdetect&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| FPS detection for video playback&lt;br /&gt;
* 0 = trust codec fps&lt;br /&gt;
* 1 = recalculate from video timestamps with uniform spacing&lt;br /&gt;
* 2 = recalculate from video timestamps always&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;latency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot;| Start of &#039;&#039;&#039;latency&#039;&#039;&#039; tags. Display latency (video lag). Latency is given in msecs.&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;delay&amp;gt;0&amp;lt;/delay&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | Global default display latency.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;refresh&amp;gt;&amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | Override latency for given display (not video) refresh rates. When Kodi is in windowed mode, override is ignored. Multiple overrides are allowed.&lt;br /&gt;
&lt;br /&gt;
Syntax of an override entry:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;refresh&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;, &amp;lt;max&amp;gt; refresh rate range, OR&lt;br /&gt;
  &amp;lt;rate&amp;gt; exact refresh rate&lt;br /&gt;
  &amp;lt;delay&amp;gt; display latency for the given refresh rate&lt;br /&gt;
&amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;refresh&amp;gt;&lt;br /&gt;
      &amp;lt;min&amp;gt;23&amp;lt;/min&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;24&amp;lt;/max&amp;gt;&lt;br /&gt;
      &amp;lt;delay&amp;gt;125&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | &#039;&#039;&#039;Example:&#039;&#039;&#039; display has 125 msec latency at 23-24 Hz&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;refresh&amp;gt;&lt;br /&gt;
      &amp;lt;rate&amp;gt;50&amp;lt;/rate&amp;gt;&lt;br /&gt;
      &amp;lt;delay&amp;gt;50&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | &#039;&#039;&#039;Example:&#039;&#039;&#039; display has 50 msec latency at 50 (+/-0.01) Hz&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;/latency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;stereoscopicregex3d&amp;gt;[-. _]3d[-. _]&amp;lt;/stereoscopicregex3d&amp;gt;&lt;br /&gt;
  &amp;lt;stereoscopicregexsbs&amp;gt;[-. _]h?sbs[-. _]&amp;lt;/stereoscopicregexsbs&amp;gt;&lt;br /&gt;
  &amp;lt;stereoscopicregextab&amp;gt;[-. _]h?tab[-. _]&amp;lt;/stereoscopicregextab&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Filename triggers for 3D (stereoscopic) mode.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;assfixedworks&amp;gt;false&amp;lt;/assfixedworks&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Position behavior of ass subtitiles when setting &amp;quot;subtitle position on screen&amp;quot; set to &amp;quot;fixed&amp;quot;. True to show at the fixed position set in video calibration. False to show at the bottom of video (default). {{note|Removed in Kodi v20.}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;subtitleverticalmargin&amp;gt;120&amp;lt;/subtitleverticalmargin&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Allows to customise the vertical margin of text based subtitles, which will be applied to each type of subtitle position in subtitle settings. {{note|Available in Kodi v20 and above.}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== audio ===&lt;br /&gt;
{{anchor|.3Caudio.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;audio&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount of headroom Kodi should use above the maximum volume level, in decibels.  Defaults to 0, valid values 0, 6, 12. --&amp;gt;&lt;br /&gt;
  &amp;lt;headroom&amp;gt;0&amp;lt;/headroom&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Default audio player: paplayer or videoplayer --&amp;gt;&lt;br /&gt;
  &amp;lt;defaultplayer&amp;gt;paplayer&amp;lt;/defaultplayer&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be added to library. --&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromscan&amp;gt; &lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](podcast)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromscan&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be displayed in Files View --&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromlisting&amp;gt; &lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](podcast)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromlisting&amp;gt;&lt;br /&gt;
  &amp;lt;!-- 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. --&amp;gt;&lt;br /&gt;
  &amp;lt;ac3downmixgain&amp;gt;12.0&amp;lt;/ac3downmixgain&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Whether to use time based or percentage based seeking. --&amp;gt;&lt;br /&gt;
  &amp;lt;usetimeseeking&amp;gt;true&amp;lt;/usetimeseeking&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Time to seek forward in seconds when doing a long seek.  Defaults to 600 (10 minutes) and -600 (-10 minutes) respectively. --&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekforwardbig&amp;gt;600&amp;lt;/timeseekfowardbig&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Time to seek backward in seconds when doing a long seek back.  Defaults to 600 (10 minutes) and -600 (-10 minutes) respectively. --&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekbackwardbig&amp;gt;-600&amp;lt;/timeseekbackward&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Minimum percentage that has to be played before it is considered for incrementing in the Top 100 database view, or for last.fm submittal --&amp;gt;&lt;br /&gt;
  &amp;lt;playcountminimumpercent&amp;gt;99&amp;lt;/playcountminimumpercent&amp;gt; &lt;br /&gt;
  &amp;lt;!-- Whether to use Dynamic Range Compression (DRC) on AC3 streams. 1.0 is &amp;quot;full&amp;quot; compression, as defined by the audio track&#039;s metadata, which is recommended for &amp;quot;basic&amp;quot; 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. --&amp;gt;&lt;br /&gt;
  &amp;lt;applydrc&amp;gt;-1.0&amp;lt;/applydrc&amp;gt; &lt;br /&gt;
  &amp;lt;!-- default values for limiter/compressor --&amp;gt;&lt;br /&gt;
  &amp;lt;limiterhold&amp;gt;0.025&amp;lt;/limiterhold&amp;gt; &lt;br /&gt;
  &amp;lt;!-- default values for limiter/compressor --&amp;gt;&lt;br /&gt;
  &amp;lt;limiterrelease&amp;gt;0.1&amp;lt;/limiterrelease&amp;gt; &lt;br /&gt;
  &amp;lt;!-- This setting is only relevant for Passthrough in the context of resyncing, e.g.; when there is no resampling possible. This value decides after which amount of discontinuity in milliseconds VideoPlayer will ErrorAdjust the Clock. On platforms like Android where the sink delay is just a non exact interpolation, a too small value might cause rare image stutter. The maximum value is 100 ms. A higher value makes no sense cause of A/V issues. This is a last-resort workaround as the root-cause cannot be mitigated 100% [Available from Kodi v20] --&amp;gt;&lt;br /&gt;
  &amp;lt;maxpassthroughoffsyncduration&amp;gt;10&amp;lt;/maxpassthroughoffsyncduration&amp;gt; &lt;br /&gt;
  &amp;lt;!-- This setting is used on Android only. While Android itself supports 32 bit Float format for at least Stereo since many years, certain Vendors don&#039;t properly implement it for Multi-Channel Audio. As those devices still open correctly, but then no signal reaches the output device, we disabled this for the time being and used 16 bit Integer only. With this setting you can enable 32 bit Output for multi-channel for kodi by setting allowmultichannelfloat to true. Default: false. This makes a lossless Input -&amp;gt; Output chain possible, as it can hold 24 bit Audio without any loss towards the internal Android Mixer, which is using Float precision anyways. --&amp;gt;&lt;br /&gt;
  &amp;lt;allowmultichannelfloat&amp;gt;false&amp;lt;/allowmultichannelfloat&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Android only. There are currently various broken devices with AMLogic BSP out there. They open a sink with a buffer of 170 ms, but then don&#039;t consume any idea for sometimes even more than 1000 ms of audio data. Then they silently drop the data under the hood and move on, resulting in kodi being totally out of sink. Reopening the devices (sometimes 2 times) fixes this. Sadly there are some semi-broken devices out there that do the same on startup, but afterwards work kind of fine with a higher delay. I cannot programmatically distinguish those two cases. For Zidoo and FireTV Cube 3rd Gen, you have to manually enable this advanced setting. --&amp;gt;&lt;br /&gt;
  &amp;lt;superviseaudiodelay&amp;gt;false&amp;lt;/superviseaudiodelay&amp;gt;&lt;br /&gt;
&amp;lt;/audio&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== forcedswaptime ===&lt;br /&gt;
{{anchor|.3Cforcedswaptime.3E}}&lt;br /&gt;
Use to force a backbuffer-&amp;gt;frontbuffer swap while vsync is enabled. Set to the time (in ms) to allow for the swap (e.g. &amp;lt;forcedswaptime&amp;gt;1&amp;lt;/forcedswaptime&amp;gt; is typical).  &lt;br /&gt;
&lt;br /&gt;
Default: Off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== edl ===&lt;br /&gt;
{{anchor|.3Cedl.3E}}&lt;br /&gt;
{{main|Edit_decision_list}}&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;edl&amp;gt;&lt;br /&gt;
    &amp;lt;!-- if true, commercial breaks will be merged according to the remaining options. --&amp;gt;&lt;br /&gt;
  &amp;lt;mergeshortcommbreaks&amp;gt;false&amp;lt;/mergeshortcommbreaks&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Commercial breaks won&#039;t be merged if the total length of the commercial break would be greater than this (seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;maxcommbreaklength&amp;gt;250&amp;lt;/maxcommbreaklength&amp;gt;&lt;br /&gt;
    &amp;lt;!-- After merging, commercial breaks shorter than this will be removed (seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;mincommbreaklength&amp;gt;90&amp;lt;/mincommbreaklength&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Commercial breaks that are further apart than this won&#039;t be merged (seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;maxcommbreakgap&amp;gt;120&amp;lt;/maxcommbreakgap&amp;gt;&lt;br /&gt;
    &amp;lt;!-- How long to wait before automatically skipping when the start of a commercial break reached (seconds). Possible values: from -60 to 60--&amp;gt;&lt;br /&gt;
  &amp;lt;commbreakautowait&amp;gt;0&amp;lt;/commbreakautowait&amp;gt;&lt;br /&gt;
    &amp;lt;!-- How long to rewind after automatically skipping to the end of the commercial break (seconds). Possible values: from -60 to 60 --&amp;gt;&lt;br /&gt;
  &amp;lt;commbreakautowind&amp;gt;0&amp;lt;/commbreakautowind&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Avoid showing the edl commbreak notifications. These are displayed by default --&amp;gt;&lt;br /&gt;
  &amp;lt;displaycommbreaknotifications&amp;gt;false&amp;lt;/displaycommbreaknotifications&amp;gt;&lt;br /&gt;
&amp;lt;/edl&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* displaycommbreaknotifications&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/20711&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PVR &amp;amp; Live TV ==&lt;br /&gt;
{{anchor|.3Cpvr.3E}}&lt;br /&gt;
Settings available for PVR, EPG and Live TV. Edit Decision List settings are located in the previous section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pvr ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;pvr&amp;gt;&lt;br /&gt;
  &amp;lt;timecorrection&amp;gt;0&amp;lt;/timecorrection&amp;gt;  &amp;lt;!-- Correct all times (epg tags, timer tags, recording tags) by this amount of minutes. --&amp;gt;&lt;br /&gt;
  &amp;lt;infotoggleinterval&amp;gt;3000&amp;lt;/infotoggleinterval&amp;gt;  &amp;lt;!-- 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. --&amp;gt;&lt;br /&gt;
  &amp;lt;channeliconsautoscan&amp;gt;true&amp;lt;/channeliconsautoscan&amp;gt; &amp;lt;!-- Automatically scan user defined folder for channel icons when loading internal channel groups. --&amp;gt;&lt;br /&gt;
  &amp;lt;autoscaniconsuserset&amp;gt;false&amp;lt;/autoscaniconsuserset&amp;gt; &amp;lt;!-- Mark channel icons populated by auto scan as &amp;quot;user set&amp;quot;. --&amp;gt;&lt;br /&gt;
  &amp;lt;numericchannelswitchtimeout&amp;gt;1000&amp;lt;/numericchannelswitchtimeout&amp;gt; &amp;lt;!-- Time in ms before the numeric dialog auto closes when confirmchannelswitch is disabled. --&amp;gt;&lt;br /&gt;
&amp;lt;/pvr&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== pvrrecordings ====&lt;br /&gt;
In v19 and later, allows users to modify sort type and order of pvr recordings. &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/18605&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Note- These settings are child tags to the &#039;&#039;&amp;lt;pvr&amp;gt;&#039;&#039; tag in the previous section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;pvr&amp;gt;&lt;br /&gt;
   &amp;lt;pvrrecordings&amp;gt;&lt;br /&gt;
      &amp;lt;sortmethod&amp;gt;2&amp;lt;/sortmethod&amp;gt;  &amp;lt;!-- 1=Name 2=Date 3=Size 4=File --&amp;gt;&lt;br /&gt;
      &amp;lt;sortorder&amp;gt;2&amp;lt;/sortorder&amp;gt;    &amp;lt;!-- 1=Ascending 2=Descending --&amp;gt;&lt;br /&gt;
   &amp;lt;/pvrrecordings&amp;gt;&lt;br /&gt;
&amp;lt;/pvr&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== epg ===&lt;br /&gt;
{{anchor|.3Cpvr.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;epg&amp;gt;&lt;br /&gt;
  &amp;lt;updatecheckinterval&amp;gt;300&amp;lt;/updatecheckinterval&amp;gt;  &amp;lt;!-- Check every X seconds, if EPG data need to be updated. This does not mean that every X seconds an EPG update is actually triggered, it&#039;s just the interval how often to check whether an update should be triggered. If this value is greater than GUI setting &#039;epg.epgupdate&#039; value, then EPG updates will done with the value specified for &#039;updatecheckinterval&#039;, effectively overriding the GUI setting&#039;s value. --&amp;gt;&lt;br /&gt;
  &amp;lt;updateemptytagsinterval&amp;gt;60&amp;lt;/updateemptytagsinterval&amp;gt;  &amp;lt;!-- If a TV channel has no EPG data, try to obtain data for that channel every X seconds. This overrides the GUI setting &#039;epg.epgupdate&#039; value, but only for channels without EPG data. If this value is less than &#039;updatecheckinterval&#039; value, then data update will be done with the interval specified by &#039;updatecheckinterval&#039;. Example 1: epg.epgupdate = 120 (minutes!), updatecheckinterval = 300, updateemptytagsinterval = 60 =&amp;gt; trigger an EPG update for every channel without EPG data every 5 minutes and trigger an EPG update for every channel with EPG data every 2 hours. Example 2: epg.epgupdate = 120 (minutes!), updatecheckinterval = 300, updateemptytagsinterval = 3600 =&amp;gt; trigger an EPG update for every channel without EPG data every 2 hours and trigger an EPG update for every channel with EPG data every 1 hour. --&amp;gt;&lt;br /&gt;
  &amp;lt;cleanupinterval&amp;gt;900&amp;lt;/cleanupinterval&amp;gt;  &amp;lt;!-- remove old entries from the EPG every X seconds --&amp;gt;&lt;br /&gt;
  &amp;lt;activetagcheckinterval&amp;gt;60&amp;lt;/activetagcheckinterval&amp;gt;  &amp;lt;!-- check for updated active tags every X seconds --&amp;gt;&lt;br /&gt;
  &amp;lt;retryinterruptedupdateinterval&amp;gt;60&amp;lt;/retryinterruptedupdateinterval&amp;gt;  &amp;lt;!-- retry an interrupted EPG update after X seconds --&amp;gt;&lt;br /&gt;
  &amp;lt;displayupdatepopup&amp;gt;true&amp;lt;/displayupdatepopup&amp;gt;  &amp;lt;!-- display a progress popup while updating EPG data from clients --&amp;gt;&lt;br /&gt;
  &amp;lt;displayincrementalupdatepopup&amp;gt;false&amp;lt;/displayincrementalupdatepopup&amp;gt;  &amp;lt;!-- also display a progress popup while doing incremental EPG updates --&amp;gt;&lt;br /&gt;
&amp;lt;/epg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Video library settings ==&lt;br /&gt;
&lt;br /&gt;
=== videoextensions ===&lt;br /&gt;
{{anchor|.3Cvideoextensions.3E}}&amp;lt;section begin=&amp;quot;videoextensions&amp;quot; /&amp;gt;&lt;br /&gt;
A list of additional file-extensions to allow (&#039;&#039;&#039;add&#039;&#039;&#039;) or exclude (&#039;&#039;&#039;remove&#039;&#039;&#039;) in the My Video windows.&lt;br /&gt;
&lt;br /&gt;
Default extensions for VIDEOS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.m4v .3g2 .3gp .nsv .tp .ts .ty .strm .pls .rm .rmvb .mpd .m3u .m3u8 .ifo .mov .qt .divx .xvid&lt;br /&gt;
.bivx .vob .nrg .img .iso .udf .pva .wmv .asf .asx .ogm .m2v .avi .bin .dat .mpg .mpeg .mp4&lt;br /&gt;
.mkv .mk3d .avc .vp3 .svq3 .nuv .viv .dv .fli .flv .001 .wpl .xspf .zip .vdr .dvr-ms .xsp .mts&lt;br /&gt;
.m2t .m2ts .evo .ogv .sdp .avs .rec .url .pxml .vc1 .h264 .rcv .rss .mpls .mpl .webm .bdmv&lt;br /&gt;
.bdm .wtv .trp .f4v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;videoextensions&amp;gt;&lt;br /&gt;
  &amp;lt;add&amp;gt;.ex1|.ex2&amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;remove&amp;gt;.ex3|.ex4&amp;lt;/remove&amp;gt;&lt;br /&gt;
&amp;lt;/videoextensions&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;videoextensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== discstubextensions ===&lt;br /&gt;
{{main|Media stubs}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;discstubextensions&amp;quot; /&amp;gt;&lt;br /&gt;
The default filename extension for Disc Stubs is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
.disc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Using the following tags, it is possible to &amp;lt;tt&amp;gt;&amp;lt;add&amp;gt;&amp;lt;/tt&amp;gt; additional or &amp;lt;tt&amp;gt;&amp;lt;remove&amp;gt;&amp;lt;/tt&amp;gt; existing disc stub extensions to better suit your requirements.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;discstubextensions&amp;gt;&lt;br /&gt;
  &amp;lt;add&amp;gt;.disk|.stub&amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;remove&amp;gt;.disc&amp;lt;/remove&amp;gt;&lt;br /&gt;
&amp;lt;/discstubextensions&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;discstubextensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== languagecodes ===&lt;br /&gt;
{{anchor|.3Clanguagecodes.3E}}&lt;br /&gt;
User-defined translation table for language codes used in subtitles and audio.&lt;br /&gt;
It can be used to add, extend or override Kodi&#039;s language codes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to add a new language code:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languagecodes&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;short&amp;gt;alt&amp;lt;/short&amp;gt;&lt;br /&gt;
    &amp;lt;long&amp;gt;Alternate&amp;lt;/long&amp;gt;&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/languagecodes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to add a new language code with subtag (e.g. pt-BR):&#039;&#039;&#039;&lt;br /&gt;
{{note|This support is available from Kodi v20}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languagecodes&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;short&amp;gt;pt-BR&amp;lt;/short&amp;gt;&lt;br /&gt;
    &amp;lt;long&amp;gt;Portuguese - Brazil&amp;lt;/long&amp;gt;&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/languagecodes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE FOR MKV FILES:&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
MKV files that contain audio/subtitle tracks with language codes with subtags are not yet supported, but from &amp;lt;code&amp;gt;Kodi v21&amp;lt;/code&amp;gt; a workaround was introduced that allows Kodi to recognize language codes with subtags.&lt;br /&gt;
To use the workaround, you must open the MKV file with an editor and in the metadata of the desired audio/subtitle track, edit the track Name (or Title field) by adding the language code wrapped in curly brackets, as in following example:&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;Original track name: Audio portuguese/brazil&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;Modified track name: Audio portuguese/brazil {pt-BR}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to extend an existing language code:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Set the same &amp;quot;long&amp;quot; description of the existing language, for example we reuse the Portughese language for another language code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languagecodes&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;short&amp;gt;pt-BR&amp;lt;/short&amp;gt;&lt;br /&gt;
    &amp;lt;long&amp;gt;Portuguese&amp;lt;/long&amp;gt;&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/languagecodes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case when in Kodi settings you set the &amp;quot;Portuguese&amp;quot; language, when in playing according to availability the track &amp;quot;pt&amp;quot; or &amp;quot;pt-BR&amp;quot; will be chosen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to override an existing language code:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This allow you to rename an existing language. Set to an existing language code your preferred &amp;quot;long&amp;quot; name description.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;WARNING: This can cause problems with add-ons, so do not override languages if you are not aware of the side effects.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languagecodes&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;short&amp;gt;en&amp;lt;/short&amp;gt;&lt;br /&gt;
    &amp;lt;long&amp;gt;English example&amp;lt;/long&amp;gt;&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;short&amp;gt;en-GB&amp;lt;/short&amp;gt;&lt;br /&gt;
    &amp;lt;long&amp;gt;English example&amp;lt;/long&amp;gt;&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/languagecodes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== moviestacking ===&lt;br /&gt;
{{anchor|.3Cmoviestacking.3E}}&amp;lt;section begin=&amp;quot;moviestacking&amp;quot; /&amp;gt;&lt;br /&gt;
{{main|Naming_video_files/Movies}}&lt;br /&gt;
This is used by the [[Naming_video_files/Movies#Split_Video_Files|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 &#039;&#039;&#039;[[advancedsettings.xml#folderstacking|&amp;lt;folderstacking&amp;gt;]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As of v9.11, video stacking regular expressions &#039;&#039;&#039;must&#039;&#039;&#039; contain exactly four (4) capture expressions. &lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;moviestacking&amp;gt;&lt;br /&gt;
  &amp;lt;!-- &amp;lt;cd/dvd/part/pt/disk/disc&amp;gt; &amp;lt;0-N&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck])[ _.-]*[0-9]+)(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;!-- &amp;lt;cd/dvd/part/pt/disk/disc&amp;gt; &amp;lt;a-d&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck])[ _.-]*[a-d])(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;!-- movienamea-xvid.avi, movienameb-xvid.avi --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ ._-]*[a-d])(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/moviestacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the argument &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;append=&amp;quot;yes&amp;quot;&amp;lt;/tt&amp;gt; is supplied, the default moviestacking regular expressions will remain intact and the user specified ones will be added to the end.  &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;moviestacking action=&amp;quot;append&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This expression will match movename1-xvid.avi, moviename2-xvid.avi.&lt;br /&gt;
         Be warned that it will likely stack sequels in a flat directory layout,&lt;br /&gt;
         so it is only recommend in a dir-per-video layout. --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ ._-]*[0-9])(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/moviestacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the argument &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; is supplied, the default moviestacking regular expressions will remain intact and the user specified ones will be added to the beginning. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;moviestacking action=&amp;quot;prepend&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(Title)(Volume)(Ignore)(Extension)&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/moviestacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If no argument is supplied, or the argument &amp;lt;tt&amp;gt;append=&amp;quot;no&amp;quot;&amp;lt;/tt&amp;gt; is supplied, the default moviestacking regular expressions are overwritten by the user specified ones.&lt;br /&gt;
&amp;lt;section end=&amp;quot;moviestacking&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== folderstacking ===&lt;br /&gt;
{{main|Naming_video_files/Movies}}&lt;br /&gt;
This is similar to &#039;&#039;&#039;[[advancedsettings.xml#moviestacking|&amp;lt;moviestacking&amp;gt;]]&#039;&#039;&#039;, 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).&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;folderstacking&amp;gt;&lt;br /&gt;
  &amp;lt;!-- &amp;lt;cd/dvd/disk/disc&amp;gt; &amp;lt;0-N&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;((cd|dvd|dis[ck])[0-9]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/folderstacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cleandatetime ===&lt;br /&gt;
{{anchor|.3Ccleandatetime.3E}}&lt;br /&gt;
Matches a year number in a string using a Regular Expression&lt;br /&gt;
&lt;br /&gt;
Default expression:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;cleandatetime&amp;gt;(.*[^ _\,\.\(\)\[\]\-])[ _\.\(\)\[\]\-]+(19[0-9][0-9]|20[0-9][0-9])([ _\,\.\(\)\[\]\-]|[^0-9]$)?&amp;lt;/cleandatetime&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
:* The string found before will be used as basis string getting cleaned by the cleanstrings expressions. &lt;br /&gt;
:* By default date formats like MM:YY are ignored.&lt;br /&gt;
&lt;br /&gt;
=== cleanstrings ===&lt;br /&gt;
{{anchor|.3Ccleanstrings.3E}}&lt;br /&gt;
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 &#039;&#039;Super movie.mp4&#039;&#039; and would add &amp;lt;tt&amp;gt;&amp;lt;regexp&amp;gt; &amp;lt;/regexp&amp;gt;&amp;lt;/tt&amp;gt; (only a space), the only thing that would be left is &#039;&#039;Super&#039;&#039;, which is probably not what you want.&lt;br /&gt;
&lt;br /&gt;
{{Github_link|[https://github.com/xbmc/xbmc/blob/Nexus/xbmc/settings/AdvancedSettings.cpp#L201-L211 Code in Github]}}&lt;br /&gt;
&lt;br /&gt;
Default expressions:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;cleanstrings&amp;gt;&lt;br /&gt;
   &amp;lt;regexp&amp;gt;([ _\\,\\.\\(\\)\\[\\]\\-](10bit|480p|480i|576p|576i|720p|720i|1080p|1080i|2160p|3d|aac|ac3|aka|atmos|avi|bd5|bdrip|bluray|brrip|cam|cd[1-9]|custom|dc|ddp|divx|divx5|dolbydigital|dolbyvision|dsr|dsrip|dts|dts-hdma|dts-hra|dts-x|dv|dvd|dvd5|dvd9|dvdivx|dvdrip|dvdscr|dvdscreener|extended|fragment|fs|h264|h265|hdr|hdr10|hevc|hddvd|hdrip|hdtv|hdtvrip|hrhd|hrhdtv|internal|limited|multisubs|nfofix|ntsc|ogg|ogm|pal|pdtv|proper|r3|r5|read.nfo|remastered|remux|repack|rerip|retail|screener|se|svcd|tc|telecine|telesync|truehd|ts|uhd|unrated|ws|x264|x265|xvid|xvidvd|xxx|web-dl|webrip|www.www|\\[.*\\])([ _\\,\\.\\(\\)\\[\\]\\-]|$)&amp;quot;);&amp;lt;/regexp&amp;gt;&lt;br /&gt;
   &amp;lt;regexp&amp;gt;(\[.*\])&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/cleanstrings&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Updated in v20&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/20549&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
&lt;br /&gt;
=== tvshowmatching ===&lt;br /&gt;
{{anchor|.3Ctvshowmatching.3E}}&lt;br /&gt;
Matches the season and episode numbers in file paths by using a list of Regular Expressions&lt;br /&gt;
&lt;br /&gt;
{{Github_link|[https://github.com/xbmc/xbmc/blob/Matrix/xbmc/settings/AdvancedSettings.cpp#L232 Code in Github]}}&lt;br /&gt;
&lt;br /&gt;
Defaults:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tvshowmatching&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;s([0-9]+)[ ._x-]*e([0-9]+(?:(?:[a-i]|\\.[1-9])(?![0-9]))?)([^\\\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.s01.e01, foo.s01_e01, S01E02 foo, S01 - E02, S01xE02 --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\._ -]()[Ee][Pp]_?([0-9]+)([^\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.ep01, foo.EP_01 --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;([0-9]{4})[\.-]([0-9]{2})[\.-]([0-9]{2})&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.yyyy.mm.dd.* (byDate=true) --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;([0-9]{2})[\.-]([0-9]{2})[\.-]([0-9]{4})&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.mm.dd.yyyy.* (byDate=true) --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\\/\._ \[\(-]([0-9]+)x([0-9]+)([^\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.1x09* or just /1x09* --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\\/\._ -]([0-9]+)([0-9][0-9])([\._ -][^\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.103*, 103 foo --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\/._ -]p(?:ar)?t[_. -]()([ivx]+)([._ -][^\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- Part I, Pt.VI --&amp;gt;&lt;br /&gt;
&amp;lt;/tvshowmatching&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
:* Paths are converted to lower case before matching.&lt;br /&gt;
:* For multi-episode matching to work, there needs to be a third set of parentheses &#039;()&#039; at the end, this part is fed back into the regexp engine.&lt;br /&gt;
:* A [https://forum.kodi.tv/showthread.php?tid=51614 forum thread] has a discussion of pre-made regex lists to match common names. These might improve Kodi&#039;s ability to match TV show names in some situations, at the risk of additional false positives.&lt;br /&gt;
&lt;br /&gt;
==== Filenames without Season ====&lt;br /&gt;
There are two methods to add episodes without a season in their file path. Both ways will force the season to &#039;1&#039; by default, so that you can use&lt;br /&gt;
the &#039;Use Absolute Ordering (Single Season)&#039; setting from the TheTvDb.com scraper.&lt;br /&gt;
&lt;br /&gt;
; Simple Method &#039;&#039;(XBMC v9.11 onwards and Kodi)&#039;&#039;&lt;br /&gt;
: Use only one pair of parentheses&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;regexp&amp;gt;[/\._ \-]([0-9]+)&amp;lt;/regexp&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
; Advanced Method &#039;&#039;(XBMC v10.05 onwards and Kodi)&#039;&#039;&lt;br /&gt;
: Supports multi-episode files without season&lt;br /&gt;
: Use an empty pair of parentheses for the season&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;regexp&amp;gt;[/\._ \-]()([0-9]+)(-[0-9]+)?&amp;lt;/regexp&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Specifying Default Season &#039;&#039;(XBMC v12.0 onwards and Kodi)&#039;&#039;&lt;br /&gt;
It is possible to set the default season for specific regular expressions by setting the &#039;defaultseason&#039; attribute.&lt;br /&gt;
: Works with both the simple method and advanced method&lt;br /&gt;
: If not used, the season will be set to &#039;1&#039;&lt;br /&gt;
: Useful for setting specials to season &#039;0&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;regexp defaultseason=&amp;quot;0&amp;quot;&amp;gt;[/\._ \-]X()([0-9]+)(-[0-9]+)?&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;regexp defaultseason=&amp;quot;1&amp;quot;&amp;gt;[/\._ \-]E()([0-9]+)(-[0-9]+)?&amp;lt;/regexp&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== tvmultipartmatching ===&lt;br /&gt;
{{anchor|.3Ctvmultipartmatching.3E}}&lt;br /&gt;
Matches a multipart episode number based on a previously identified episode file, using a list of Regular Expressions.&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tvmultipartmatching&amp;gt;^[-_ex]+([0-9]+(?:(?:[a-i]|\\.[1-9])(?![0-9]))?)&amp;lt;/tvmultipartmatching&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
:* Text matching is compared case-insensitive.&lt;br /&gt;
:* Specifying this option &#039;&#039;&#039;replaces&#039;&#039;&#039; the default value&lt;br /&gt;
&lt;br /&gt;
=== excludefromscan ===&lt;br /&gt;
{{anchor|.3Cexcludefromscan.3E}}&lt;br /&gt;
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 &amp;lt;tt&amp;gt;advancedsettings.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Defaults:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromscan&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;-trailer&amp;lt;/regexp&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[!-._ \\/]sample[-._ \\/]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromscan&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
&lt;br /&gt;
=== excludefromlisting ===&lt;br /&gt;
{{anchor|.3Cexcludefromlisting.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;  &lt;br /&gt;
  &amp;lt;excludefromlisting&amp;gt; &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be displayed in Files View --&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromlisting&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== excludetvshowsfromscan ===&lt;br /&gt;
{{anchor|.3Cexcludetvshowsfromscan.3E}}&lt;br /&gt;
Matches filenames or folders which should be excluded from a tvshow library scan using a list of Regular Expressions&lt;br /&gt;
&lt;br /&gt;
Defaults:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;excludetvshowsfromscan&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[!-._ \\/]sample[-._ \\/]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludetvshowsfromscan&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
&lt;br /&gt;
=== trailermatching ===&lt;br /&gt;
{{anchor|.3Ctrailermatching.3E}}&lt;br /&gt;
Contains Regular Expression syntax to match the locally stored trailers to movies in the library. Only files with recognized video file extensions will be considered, and the extensions are removed for the Regular Expression evaluation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;trailermatching&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This regexp will match moviename_Trailer.avi --&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;(.*?)(_Trailer)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/trailermatching&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== videolibrary ===&lt;br /&gt;
{{anchor|.3Cvideolibrary.3E}}&lt;br /&gt;
Options specific to the Video Library&lt;br /&gt;
&lt;br /&gt;
{{Note|Kodi v20 users don&#039;t need set &amp;quot;importwatched&amp;quot; or &amp;quot;importresumepoint&amp;quot; to true anymore as that&#039;s the default then &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/20842&amp;lt;/ref&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
  &amp;lt;videolibrary&amp;gt;&lt;br /&gt;
    &amp;lt;allitemsonbottom&amp;gt;false&amp;lt;/allitemsonbottom&amp;gt;  &amp;lt;!-- sorts the &amp;quot;*All&amp;quot; items at the bottom of the list when in Ascending order --&amp;gt;&lt;br /&gt;
    &amp;lt;cleanonupdate&amp;gt;false&amp;lt;/cleanonupdate&amp;gt;  &amp;lt;!-- default set to false to prevent Kodi from removing items from the database while updating.  --&amp;gt;&lt;br /&gt;
    &amp;lt;usefasthash&amp;gt;true&amp;lt;/usefasthash&amp;gt; &amp;lt;!-- defaults to true. Set to false in order to skip hashing based on the folders modification time. --&amp;gt;&lt;br /&gt;
    &amp;lt;recentlyaddeditems&amp;gt;35&amp;lt;/recentlyaddeditems&amp;gt; &amp;lt;!-- number of recently added items. Defaults to 25 --&amp;gt;&lt;br /&gt;
    &amp;lt;itemseparator&amp;gt; / &amp;lt;/itemseparator&amp;gt;  &amp;lt;!-- separator used for multiple artists/genres in tags. Note, this is *space* *slash* *space* --&amp;gt;&lt;br /&gt;
    &amp;lt;exportautothumbs&amp;gt;false&amp;lt;/exportautothumbs&amp;gt;  &amp;lt;!-- export auto-generated thumbs. Defaults to false --&amp;gt;&lt;br /&gt;
    &amp;lt;importwatchedstate&amp;gt;false&amp;lt;/importwatchedstate&amp;gt;  &amp;lt;!-- import previously exported playdate and playcount from .nfo files. Defaults to false --&amp;gt;&lt;br /&gt;
    &amp;lt;importresumepoint&amp;gt;false&amp;lt;/importresumepoint&amp;gt;  &amp;lt;!-- import previously exported resume point from .nfo files. Defaults to false --&amp;gt;&lt;br /&gt;
    &amp;lt;dateadded&amp;gt;1&amp;lt;/dateadded&amp;gt; &amp;lt;!-- 0 results in using the current datetime when adding a video;&lt;br /&gt;
                                  1 (default) results in prefering to use the files mtime (if it&#039;s valid) and only using the file&#039;s ctime if the mtime isn&#039;t valid;&lt;br /&gt;
                                  2 results in using the newer datetime of the file&#039;s mtime and ctime --&amp;gt;&lt;br /&gt;
  &amp;lt;/videolibrary&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== videoscanner ===&lt;br /&gt;
{{anchor|.3Cvideoscanner.3E}}&lt;br /&gt;
Options specific to the Video scanner&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;videoscanner&amp;gt;&lt;br /&gt;
    &amp;lt;ignoreerrors&amp;gt;true&amp;lt;/ignoreerrors&amp;gt; &amp;lt;!-- Set to true to silently ignore errors while scanning videos. This prevents the error dialogue box, so you don&#039;t have to keep hitting &amp;quot;yes&amp;quot; to keep scanning.--&amp;gt;&lt;br /&gt;
  &amp;lt;/videoscanner&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Library artwork ==&lt;br /&gt;
&lt;br /&gt;
{{note|Using &amp;lt;imageres&amp;gt;9999&amp;lt;/imageres&amp;gt; and &amp;lt;fanartres&amp;gt;9999&amp;lt;/fanartres&amp;gt; will allow caching artwork at original size.}}&lt;br /&gt;
&lt;br /&gt;
=== imageres ===&lt;br /&gt;
{{anchor|.3Cimageres.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;imageres description&amp;quot; /&amp;gt;Specify the maximum resolution that [[Artwork/Cache#Texture optimization| cached artwork]] (other than fanart / 16:9 images) 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.&amp;lt;section end=&amp;quot;imageres description&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;imageres&amp;gt;720&amp;lt;/imageres&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== fanartres ===&lt;br /&gt;
{{anchor|.3Cfanartres.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;fanartres description&amp;quot; /&amp;gt;Specify the maximum resolution that [[Artwork/Cache#Texture optimization| 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 &amp;lt;imageres&amp;gt;. The default value is 1080.&amp;lt;section end=&amp;quot;fanartres description&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fanartres&amp;gt;1080&amp;lt;/fanartres&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imagescalingalgorithm ===&lt;br /&gt;
Specify the image scaling algorithm for image resizing when [[Artwork/Cache#Texture optimization| caching artwork]] to the local texture cache.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;imagescalingalgorithm&amp;gt;bicubic&amp;lt;/imagescalingalgorithm&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/xbmc/xbmc/blob/master/xbmc/pictures/PictureScalingAlgorithm.cpp#L20-L32 Available image scaling algorithms]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=text enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
fast_bilinear&lt;br /&gt;
bilinear&lt;br /&gt;
bicubic&lt;br /&gt;
experimental&lt;br /&gt;
nearest_neighbor&lt;br /&gt;
averaging_area&lt;br /&gt;
bicublin&lt;br /&gt;
gaussian&lt;br /&gt;
sinc&lt;br /&gt;
lanczos&lt;br /&gt;
bicubic_spline&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imagequalityjpeg ===&lt;br /&gt;
This specifies the quality of the images when stored in jpeg format. By default kodi uses a quality of 4 which is a good compromise between size and quality. If you want to reduce the thumbnail sizes (decreasing quality) choose a higher value up to 21. If high quality (large thumbnail size) is needed, chose a smaller value, e.g. 0,1,2 or 3. (Added in v20 &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/21418&amp;lt;/ref&amp;gt;)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;imagequalityjpeg&amp;gt;4&amp;lt;/imagequalityjpeg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Video and music library settings ==&lt;br /&gt;
&lt;br /&gt;
=== playlistasfolders ===&lt;br /&gt;
{{anchor|.3Cplaylistasfolders.3E}}&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
:{{note|This setting will not affect smart playlists, they will always show as folders.}}&lt;br /&gt;
&lt;br /&gt;
;Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;playlistasfolders&amp;gt;true&amp;lt;/playlistasfolders&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playlistretries ===&lt;br /&gt;
{{anchor|.3Cplaylistretries.3E}}&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;playlistretries&amp;gt;100&amp;lt;/playlistretries&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playlisttimeout ===&lt;br /&gt;
{{anchor|.3Cplaylisttimeout.3E}}&lt;br /&gt;
The timeout, in seconds, before item failure.&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;playlisttimeout&amp;gt;20&amp;lt;/playlisttimeout&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sorttokens ===&lt;br /&gt;
Allows you to specify additional tokens that will be ignored at the start of lines during sorting.&lt;br /&gt;
{{note|Sort tokens are case sensitive.}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;sorttokens&amp;gt;&lt;br /&gt;
  &amp;lt;token&amp;gt;the&amp;lt;/token&amp;gt;&lt;br /&gt;
&amp;lt;/sorttokens&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example &amp;quot;the &amp;quot;, &amp;quot;the.&amp;quot; and &amp;quot;the_&amp;quot; will be ignored at the start of titles or names when sorting items, in both video and music libraries. A separator can also be specified, for example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;sorttokens&amp;gt;&lt;br /&gt;
    &amp;lt;token separators=&amp;quot;&#039;&amp;quot;&amp;gt;L&amp;lt;/token&amp;gt;&lt;br /&gt;
&amp;lt;/sorttokens&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
In that case the value L&#039;, as in French movie name &#039;&#039;L&#039;argent&#039;&#039;, will be ignored and the item listed under &amp;quot;A&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== musicdatabase/videodatabase ===&lt;br /&gt;
{{anchor|.3Cmusicdatabase.3E/.3Cvideodatabase.3E|musicdatabase/videodatabase|database tags music/video/tv/epg/adsp}}&lt;br /&gt;
{{main|MySQL}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;videodatabase&amp;quot; /&amp;gt;&lt;br /&gt;
Allows advanced customization of the default database settings for music, video, TV, EPG, and ADSP databases.&lt;br /&gt;
&lt;br /&gt;
:{{note| &#039;&#039;&#039;It is HIGHLY recommended that you not attempt to place an sqlite3 database outside of kodi&#039;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.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parent tags:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;videodatabase&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;musicdatabase&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tvdatabase&amp;gt;&#039;&#039;&#039; - Highly experimental/unstable and no practical benefit for most users. &#039;&#039;&#039;Avoid using.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;epgdatabase&amp;gt;&#039;&#039;&#039; - Highly experimental/unstable and no practical benefit for most users. &#039;&#039;&#039;Avoid using.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;adspdatabase&amp;gt;&#039;&#039;&#039; - Highly experimental/unstable and no practical benefit for most users. &#039;&#039;&#039;Avoid using.&#039;&#039;&#039;&lt;br /&gt;
{{MySQL warning}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Child tags: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;type&amp;gt;&lt;br /&gt;
: &#039;&#039;Required&#039;&#039; - Can be either &amp;quot;sqlite3&amp;quot; or &amp;quot;mysql&amp;quot; (default: sqlite3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;host&amp;gt;&lt;br /&gt;
:&#039;&#039;Required&#039;&#039; - &lt;br /&gt;
* sqlite3: defines the relative path to the database file (eg. /usr/local/kodi/databases).&lt;br /&gt;
* mysql: defines the host of the mysql socket (eg. localhost, 192.168.0.1, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;port&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; -&lt;br /&gt;
* sqlite3: silently ignored&lt;br /&gt;
* mysql: defines the port of the mysql socket (default: 3306)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;name&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; -&lt;br /&gt;
:by default &amp;quot;MyVideos&amp;quot;+DB number will be used.&lt;br /&gt;
* sqlite3: defines the name of the database file to read from, excluding the &amp;quot;.db&amp;quot; extension.&lt;br /&gt;
* mysql: defines the name of the database to use&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;user&amp;gt;&lt;br /&gt;
: &#039;&#039;Required for MySQL&#039;&#039; -&lt;br /&gt;
* sqlite3: silently ignored&lt;br /&gt;
* mysql: defines the user with privileged access to the database&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;pass&amp;gt;&lt;br /&gt;
: &#039;&#039;Required for MySQL&#039;&#039; -&lt;br /&gt;
* sqlite3: silently ignored&lt;br /&gt;
* mysql: defines the password for the user with privileged access to the database&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;compression&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - Defaults to false. Set to &amp;quot;true&amp;quot; to enable MySQL compression protocol. Performance benefit is going to be largely dependent on the network bandwidth, latency between database and clients and on the size of the result sets. [https://github.com/xbmc/xbmc/pull/6484]&lt;br /&gt;
: {{Note|Slower clients (such as the RPi and others) won&#039;t benefit from it as the zlib de-compression overhead is higher than the actual compression savings}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;key&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;cert&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;ca&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;capath&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;ciphers&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1) Configure a database for MySQL.&lt;br /&gt;
:{{note| &#039;&#039;The &#039;&#039;&#039;&amp;lt;videodatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;musicdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;tvdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;epgdatabase&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;adspdatabase&amp;gt;&#039;&#039;&#039; tags are interchangeable here.&#039;&#039;}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;videodatabase&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;mysql&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;host&amp;gt;192.168.0.10&amp;lt;/host&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;kodi_video&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;user&amp;gt;kodi&amp;lt;/user&amp;gt;&lt;br /&gt;
  &amp;lt;pass&amp;gt;kodi&amp;lt;/pass&amp;gt;&lt;br /&gt;
&amp;lt;/videodatabase&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Configure a database for an sqlite database.&lt;br /&gt;
:{{note| &#039;&#039;The &#039;&#039;&#039;&amp;lt;videodatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;musicdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;tvdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;epgdatabase&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;adspdatabase&amp;gt;&#039;&#039;&#039; tags are interchangeable here.&#039;&#039;}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;musicdatabase&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;sqlite3&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;host&amp;gt;/usr/local/share/kodi/databases&amp;lt;/host&amp;gt;&lt;br /&gt;
&amp;lt;/musicdatabase&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;videodatabase&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== externalplayer ===&lt;br /&gt;
{{anchor|.3Cexternalplayer.3E}}&lt;br /&gt;
{{see|External players}}&lt;br /&gt;
&lt;br /&gt;
== Music settings ==&lt;br /&gt;
&lt;br /&gt;
=== musicextensions ===&lt;br /&gt;
{{anchor|.3Cmusicextensions.3E}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;musicextensions&amp;quot; /&amp;gt;&lt;br /&gt;
Default extensions for MUSIC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.nsv .m4a .flac .aac .strm .pls .rm .rma .mpa .wav .wma .ogg .mp3 .mp2 .m3u .gdm .imf .m15 .sfx&lt;br /&gt;
.uni .ac3 .dts .cue .aif .aiff .wpl .xspf .ape .mac .mpc .mp+ .mpp .shn .zip .wv .dsp .xsp .xwav&lt;br /&gt;
.waa .wvs .wam .gcm .idsp .mpdsp .mss .spt .rsd .sap .cmc .cmr .dmc .mpt .mpd .rmt .tmc .tm8&lt;br /&gt;
.tm2 .oga .url .pxml .tta .rss .wtv .mka .tak .opus .dff .dsf .m4b .dtshd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to add or remove extensions for Music, using the following XML tags. Useful if you keep, say, FLAC and mp3 versions of music in the same folder. The &amp;lt;remove&amp;gt; tag can be used to remove mp3 from being listed in the library, leaving only the higher quality FLAC being displayed.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;musicextensions&amp;gt;&lt;br /&gt;
   &amp;lt;add&amp;gt;.ex1|.ex2&amp;lt;/add&amp;gt;&lt;br /&gt;
   &amp;lt;remove&amp;gt;.ex3|.ex4&amp;lt;/remove&amp;gt;&lt;br /&gt;
 &amp;lt;/musicextensions&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;musicextensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cddbaddress ===&lt;br /&gt;
{{anchor|.3Ccddbaddress.3E}}&lt;br /&gt;
The address of the online CDDb database.  You may set this to another freedb mirror if there is a more suitable one.  &lt;br /&gt;
&lt;br /&gt;
Default: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;gt;&lt;br /&gt;
&amp;lt;cddbaddress&amp;gt;freedb.freedb.org&amp;lt;/cddbaddress&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== songinfoduration ===&lt;br /&gt;
{{anchor|.3Csonginfoduration.3E}}&lt;br /&gt;
This controls how long the song information will remain onscreen when the song changes during visualisations.  The valid range is &amp;quot;1&amp;quot; to &amp;quot;Indefinite (0)&amp;quot;, in seconds.  This does not include the duration of any transition effects. &lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;songinfoduration&amp;gt;10&amp;lt;/songinfoduration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== musicfilenamefilters ===&lt;br /&gt;
{{anchor|.3Cmusicfilenamefilters.3E}}&lt;br /&gt;
Contains filters to match music information (artist, title etc.) from a tag-less music filename.  The first &amp;lt;filter&amp;gt; to match completely is used. Matched items include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%A - Artist&lt;br /&gt;
%T - Title&lt;br /&gt;
%B - Album&lt;br /&gt;
%N - Track number&lt;br /&gt;
%S - Part of set (disk number)&lt;br /&gt;
%D - Duration&lt;br /&gt;
%G - Genre&lt;br /&gt;
%Y - Year&lt;br /&gt;
%R - Rating&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;musicfilenamefilters&amp;gt;&lt;br /&gt;
  &amp;lt;filter&amp;gt;%A - %T&amp;lt;/filter&amp;gt;&lt;br /&gt;
&amp;lt;/musicfilenamefilters&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== musiclibrary ===&lt;br /&gt;
Options specific to the Music Library&lt;br /&gt;
&amp;lt;section begin=&amp;quot;MusicLibrary&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;musiclibrary&amp;gt;&lt;br /&gt;
    &amp;lt;allitemsonbottom&amp;gt;true&amp;lt;/allitemsonbottom&amp;gt;       &amp;lt;!-- sorts the &amp;quot;*All&amp;quot; items at the bottom of the list when in Ascending order --&amp;gt;&lt;br /&gt;
    &amp;lt;cleanonupdate&amp;gt;false&amp;lt;/cleanonupdate&amp;gt;            &amp;lt;!-- default set to false to prevent Kodi from removing items from the database while updating.  --&amp;gt;&lt;br /&gt;
    &amp;lt;recentlyaddeditems&amp;gt;35&amp;lt;/recentlyaddeditems&amp;gt;     &amp;lt;!-- number of recently added items. Defaults to 25 --&amp;gt;&lt;br /&gt;
    &amp;lt;albumformat&amp;gt;%B - %Y&amp;lt;/albumformat&amp;gt;              &amp;lt;!-- album label template, default is &amp;quot;%B&amp;quot; --&amp;gt;&lt;br /&gt;
    &amp;lt;prioritiseapetags&amp;gt;true&amp;lt;/prioritiseapetags&amp;gt;     &amp;lt;!-- prioritise APEv2 tags over ID3v1/2 tags, default is false. --&amp;gt;&lt;br /&gt;
    &amp;lt;itemseparator&amp;gt; / &amp;lt;/itemseparator&amp;gt;              &amp;lt;!-- separator used for multiple artists/genres in tags. Note, this is *space* *slash* *space* See Note below--&amp;gt;&lt;br /&gt;
    &amp;lt;artistseparators&amp;gt;                              &amp;lt;!-- separator used for multiple artists. Note that spaces are used for some separators. See Note below--&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt;;&amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt;:&amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt;|&amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt; feat. &amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt; ft. &amp;lt;/separator&amp;gt;&lt;br /&gt;
    &amp;lt;/artistseparators&amp;gt;&lt;br /&gt;
    &amp;lt;dateadded&amp;gt;1&amp;lt;/dateadded&amp;gt;                        &amp;lt;!--0 results in using the current datetime when adding a song;&lt;br /&gt;
                                                        1 (default) results in prefering to use the files mtime (if it&#039;s valid) and only using the file&#039;s ctime if the mtime isn&#039;t valid;&lt;br /&gt;
                                                        2 results in using the newer datetime of the file&#039;s mtime and ctime   --&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;!-- New for v19 and later releases --&amp;gt;&lt;br /&gt;
    &amp;lt;useisodates&amp;gt;false&amp;lt;/useisodates&amp;gt;                &amp;lt;!-- When &amp;quot;true&amp;quot; all dates displayed in the music library will be in ISO 8601 format (YYYY-MM-DD or part thereof).&lt;br /&gt;
                                                         Defaults to &amp;quot;false&amp;quot; (use localized dates) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- New for v21 and later --&amp;gt;&lt;br /&gt;
    &amp;lt;artistnavigatestosongs&amp;gt;true&amp;lt;/artistnavigatestosongs&amp;gt;  &amp;lt;!-- When set to &amp;quot;true&amp;quot; Kodi will skip directly to the songs of an artist. Instead of navigating artist -&amp;gt; album -&amp;gt; disc -&amp;gt; songs, it&lt;br /&gt;
                                                                will navigate artist -&amp;gt; songs.  This is similar to how Spotify etc navigates.  Defaults to &amp;quot;false&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;/musiclibrary&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Note|Changing the &amp;lt;itemseparator&amp;gt; or &amp;lt;artistseparators&amp;gt; will only affect newly added items. A rescan won&#039;t change the existing ones. Remove the Source(s) or delete the Music DB and rebuild. This process should be made easier from v18 and up using &amp;lt;promptfulltagscan&amp;gt;}}&amp;lt;section end=&amp;quot;MusicLibrary&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos settings ==&lt;br /&gt;
&lt;br /&gt;
=== pictureextensions ===&lt;br /&gt;
{{anchor|.3Cpictureextensions.3E}}&lt;br /&gt;
A list of additional file-extensions to allow (&#039;&#039;&#039;add&#039;&#039;&#039;) or exclude (&#039;&#039;&#039;remove&#039;&#039;&#039;) in the My Pictures window.&lt;br /&gt;
&lt;br /&gt;
Default extensions for PICTURES:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.png .jpg .jpeg .bmp .gif .ico .tif .tiff .tga .pcx .cbz .zip .rss .webp .jp2 .apng&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pictureextensions&amp;gt;&lt;br /&gt;
  &amp;lt;add&amp;gt;.ex1|.ex2&amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;remove&amp;gt;.ex3|.ex4&amp;lt;/remove&amp;gt;&lt;br /&gt;
&amp;lt;/pictureextensions&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pictureexcludes ===&lt;br /&gt;
{{anchor|.3Cpictureexcludes.3E}}&lt;br /&gt;
Matches filenames or folders which should be excluded from being displayed in My Pictures using a list of Regular Expressions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pictureexcludes&amp;gt;  &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be displayed in My Pictures --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;small&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/pictureexcludes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== slideshow ===&lt;br /&gt;
{{anchor|.3Cslideshow.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;slideshow&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount to pan images as a percentage of the screen --&amp;gt;&lt;br /&gt;
  &amp;lt;panamount&amp;gt;2.5&amp;lt;/panamount&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount to zoom images as a percentage of the screen --&amp;gt;&lt;br /&gt;
  &amp;lt;zoomamount&amp;gt;5.0&amp;lt;/zoomamount&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount to compensate (zoom) images to attempt to reduce black bars. --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Results in cropping of the longer length of the image in order to reduce the black bars on the shorter length of the image.  --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Defaults to 20. --&amp;gt;&lt;br /&gt;
  &amp;lt;blackbarcompensation&amp;gt;20&amp;lt;/blackbarcompensation&amp;gt;  &lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Network settings ==&lt;br /&gt;
&lt;br /&gt;
=== ftp ===&lt;br /&gt;
{{anchor|.3Cftp.3DE}}&lt;br /&gt;
Specific settings if a ftp server is in use as a source&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ftp&amp;gt;&lt;br /&gt;
  &amp;lt;remotethumbs&amp;gt;true&amp;lt;/remotethumbs&amp;gt; &amp;lt;!-- enable extraction of flag and thumb for ftp --&amp;gt;&lt;br /&gt;
&amp;lt;/ftp&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== samba ===&lt;br /&gt;
{{anchor|.3Csamba.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;samba&amp;gt;&lt;br /&gt;
  &amp;lt;doscodepage&amp;gt;&amp;lt;/doscodepage&amp;gt;  &amp;lt;!-- code page to use for filenames --&amp;gt;&lt;br /&gt;
  &amp;lt;clienttimeout&amp;gt;10&amp;lt;/clienttimeout&amp;gt;  &amp;lt;!-- timeout (in seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;statfiles&amp;gt;true&amp;lt;/statfiles&amp;gt;  &amp;lt;!-- Set to false to disable smb stat() on files to speed up listings of large directories (over slow links) --&amp;gt;&lt;br /&gt;
&amp;lt;/samba&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hosts ===&lt;br /&gt;
{{anchor|.3Cfhosts.3E}}&lt;br /&gt;
Static dns entries which take precedence over your dns server.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hosts&amp;gt;&lt;br /&gt;
  &amp;lt;entry name=&amp;quot;HOSTNAME&amp;quot;&amp;gt;IPADDRESS&amp;lt;/entry&amp;gt;&lt;br /&gt;
&amp;lt;/hosts&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== network ===&lt;br /&gt;
{{anchor|.3Cnetwork.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;network&amp;gt;&lt;br /&gt;
  &amp;lt;curlclienttimeout&amp;gt;10&amp;lt;/curlclienttimeout&amp;gt;  &amp;lt;!-- Timeout in seconds for libcurl (http/ftp) connections --&amp;gt;&lt;br /&gt;
  &amp;lt;curllowspeedtime&amp;gt;20&amp;lt;/curllowspeedtime&amp;gt;    &amp;lt;!-- Time in seconds for libcurl to consider a connection lowspeed --&amp;gt;&lt;br /&gt;
  &amp;lt;curlretries&amp;gt;2&amp;lt;/curlretries&amp;gt;               &amp;lt;!-- Amount of retries for certain failed libcurl operations (e.g. timeout) --&amp;gt;&lt;br /&gt;
  &amp;lt;httpproxyusername&amp;gt;&amp;lt;/httpproxyusername&amp;gt;    &amp;lt;!-- username for Basic Proxy Authentication --&amp;gt;&lt;br /&gt;
  &amp;lt;httpproxypassword&amp;gt;&amp;lt;/httpproxypassword&amp;gt;    &amp;lt;!-- password for Basic Proxy Authentication --&amp;gt;&lt;br /&gt;
  &amp;lt;disableipv6&amp;gt;false&amp;lt;/disableipv6&amp;gt;           &amp;lt;!-- Certain hardware/OS combinations have trouble with ipv6. Set &amp;quot;true&amp;quot; to disable --&amp;gt;&lt;br /&gt;
  &amp;lt;disablehttp2&amp;gt;false&amp;lt;/disablehttp2&amp;gt;         &amp;lt;!-- Added in v19- Allows disabling HTTP2 for broken Curl / HTTP2 servers --&amp;gt;&lt;br /&gt;
  &amp;lt;nfstimeout&amp;gt;30&amp;lt;/nfstimeout&amp;gt;                &amp;lt;!-- Added in v19- Timeout in seconds for NFS access, 0 = wait forever (previous behaviour) default is 5s  --&amp;gt;&lt;br /&gt;
  &amp;lt;catrustfile&amp;gt;filepath&amp;lt;/catrustfile&amp;gt;        &amp;lt;!-- Added in v19- Allows specifying a custom SSL CA trust store bundle. e.g. special://masterprofile/cacerts.pem --&amp;gt;&lt;br /&gt;
  &amp;lt;curlkeepaliveinterval&amp;gt;30&amp;lt;/curlkeepaliveinterval&amp;gt;     &amp;lt;!-- Added in v19- Enable TCP keepalive probes in curl --&amp;gt;&lt;br /&gt;
  &amp;lt;nfsretries&amp;gt;0&amp;lt;/nfsretries&amp;gt;                 &amp;lt;!-- 0 to disable, default: -1 (unlimited) Added in v20--&amp;gt;&lt;br /&gt;
&amp;lt;/network&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More information:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;curlkeepaliveinterval&amp;gt;&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/19319&amp;lt;/ref&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;nfsretries&amp;gt;&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/19513&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cache ===&lt;br /&gt;
{{see also|HOW-TO:Modify_the_video_cache}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cache&amp;gt;&lt;br /&gt;
  &amp;lt;memorysize&amp;gt;0&amp;lt;/memorysize&amp;gt;   &amp;lt;!-- Number of bytes used for buffering streams in memory when set to 0 the cache will be written to disk instead of RAM --&amp;gt;&lt;br /&gt;
  &amp;lt;buffermode&amp;gt;0&amp;lt;/buffermode&amp;gt;   &amp;lt;!-- Choose what to buffer:&lt;br /&gt;
                                    0) Buffer all internet filesystems (like &amp;quot;2&amp;quot; but additionally also ftp, webdav, etc.) &lt;br /&gt;
                                    1) Buffer all filesystems (including local) (default since Kodi 19)&lt;br /&gt;
                                    2) Only buffer true internet filesystems (streams) (http, https, etc.)&lt;br /&gt;
                                    3) No buffer&lt;br /&gt;
                                    4) Buffer all network filesystems (incl. smb, nfs, etc.) --&amp;gt;&lt;br /&gt;
  &amp;lt;readfactor&amp;gt;4.0&amp;lt;/readfactor&amp;gt; &amp;lt;!-- This factor determines the max readrate in terms of readfactor * avg bitrate of a video file. &lt;br /&gt;
                                    This can help on bad connections to keep the cache filled. It will also greatly speed up buffering. Default value 4.0. --&amp;gt;&lt;br /&gt;
  &amp;lt;chunksize&amp;gt;65536&amp;lt;/chunksize&amp;gt; &amp;lt;!-- Filesystem like e.g. NFS might not properly receive the server&#039;s max read chunk values and therefore end up with a very low&lt;br /&gt;
                                    default, causing issues during Cache filling and buffering. This values can be tuned between 256 Bytes and 1048576 Bytes.&lt;br /&gt;
                                    Depending on the filesystem this value is overwritten by e.g. FileCache implementation when another default is appropriate --&amp;gt;&lt;br /&gt;
&amp;lt;/cache&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== airtunesport ===&lt;br /&gt;
{{anchor|.3Cairtunesport.3E}}&amp;lt;section begin=&amp;quot;airtunesport&amp;quot; /&amp;gt;&lt;br /&gt;
This overwrites the defalt listening port of the AirTunes server (announced via zeroconf).&lt;br /&gt;
&amp;lt;section end=&amp;quot;airtunesport&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== airplayport ===&lt;br /&gt;
{{anchor|.3Cairplayport.3E}}&amp;lt;section begin=&amp;quot;airplayport&amp;quot; /&amp;gt;&lt;br /&gt;
This overwrites the default listening port of the AirPlay server (announced via zeroconf).&lt;br /&gt;
&amp;lt;section end=&amp;quot;airplayport&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File system settings ==&lt;br /&gt;
&lt;br /&gt;
=== packagefoldersize ===&lt;br /&gt;
&amp;lt;section begin=&amp;quot;packagefoldersize&amp;quot; /&amp;gt;&lt;br /&gt;
{{anchor|.3Cpackagefoldersize.3E}}&lt;br /&gt;
{{xml setting&lt;br /&gt;
 | tag name = packagefoldersize&lt;br /&gt;
 | option type = numerical&lt;br /&gt;
 | option values = &lt;br /&gt;
 | default values = 200&lt;br /&gt;
 | platform = all&lt;br /&gt;
 | XBMC version = 12&lt;br /&gt;
 | description = The amount (in megabytes) of add-on zip packages saved from previous add-on installs. These packages are mainly used for the [[Add-ons|add-on]] rollback feature. Increasing the size should increase the amount of past versions saved. Defaults to 200 MB.&lt;br /&gt;
 | example = Example: &amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;packagefoldersize&amp;gt;200&amp;lt;/packagefoldersize&amp;gt; &amp;lt;!-- this example would keep up to 200MB of add-on packages. --&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;section end=&amp;quot;packagefoldersize&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== detectasudf ===&lt;br /&gt;
{{anchor|.3Cdetectasudf.3E}}&lt;br /&gt;
{{xml setting&lt;br /&gt;
 | tag name = detectasudf&lt;br /&gt;
 | option type = binary&lt;br /&gt;
 | option values = true, false&lt;br /&gt;
 | default values = false&lt;br /&gt;
 | platform = all&lt;br /&gt;
 | XBMC version = &lt;br /&gt;
 | description = Set to true if you wish to detect joint ISO9660/UDF disks as UDF.&lt;br /&gt;
 | example = Example: &amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;detectasudf&amp;gt;false&amp;lt;/detectasudf&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== handlemounting ===&lt;br /&gt;
{{anchor|.3Chandlemounting.3E}}&lt;br /&gt;
{{xml setting&lt;br /&gt;
 | tag name = handlemounting&lt;br /&gt;
 | option type = binary&lt;br /&gt;
 | option values = true, false&lt;br /&gt;
 | default values = false&lt;br /&gt;
 | platform = Linux&lt;br /&gt;
 | XBMC version = &lt;br /&gt;
 | description = Only used in Linux, it defines if Kodi should attempt to mount media drives (via udisks or udisks2).&amp;lt;br/&amp;gt;Default: False. If kodi is executed with the --standalone option (e.g. as done by kodi-standalone.sh) it by default will be True.&lt;br /&gt;
 | example = Example: &amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;handlemounting&amp;gt;false&amp;lt;/handlemounting&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== automountopticalmedia ===&lt;br /&gt;
{{xml setting&lt;br /&gt;
 | tag name = automountopticalmedia&lt;br /&gt;
 | option type = binary&lt;br /&gt;
 | option values = true, false&lt;br /&gt;
 | default values = false&lt;br /&gt;
 | platform = Linux&lt;br /&gt;
 | XBMC version = &lt;br /&gt;
 | description = Only used in linux for the udisks and udisks2 providers&amp;lt;br/&amp;gt;defines if kodi should automount optical discs&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/20840&amp;lt;/ref&amp;gt;&lt;br /&gt;
 | example = Example: &amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;automountopticalmedia&amp;gt;true&amp;lt;/automountopticalmedia&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pathsubstitution ===&lt;br /&gt;
{{anchor|.3Cpathsubstitution.3E}}&lt;br /&gt;
{{main|Path substitution}}&lt;br /&gt;
&lt;br /&gt;
{{divbox|red||&#039;&#039;&#039;Note:&#039;&#039;&#039; Path substition for &amp;quot;sources&amp;quot; and profiles is broken, and will &#039;&#039;&#039;NOT&#039;&#039;&#039; be fixed.}}&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
Default: No path substitutions defined.  &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pathsubstitution&amp;gt;&lt;br /&gt;
  &amp;lt;substitute&amp;gt;&lt;br /&gt;
    &amp;lt;from&amp;gt;G:\dvds\&amp;lt;/from&amp;gt;&lt;br /&gt;
    &amp;lt;to&amp;gt;smb://somecomputer/g-share/dvds/&amp;lt;/to&amp;gt; &amp;lt;!-- Note the difference between the usage of forward and backslashes --&amp;gt;&lt;br /&gt;
  &amp;lt;/substitute&amp;gt;&lt;br /&gt;
&amp;lt;/pathsubstitution&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Input control settings ==&lt;br /&gt;
&lt;br /&gt;
=== remotedelay ===&lt;br /&gt;
{{anchor|.3Cremotedelay.3E}}&lt;br /&gt;
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&#039;s held down). &lt;br /&gt;
&lt;br /&gt;
Default: 3&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;remotedelay&amp;gt;10&amp;lt;/remotedelay&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== controllerdeadzone ===&lt;br /&gt;
{{anchor|.3Ccontrollerdeadzone.3E}}&lt;br /&gt;
This advanced settings has been removed. &lt;br /&gt;
Since v17, the [[Advancedsettings.xml#controllerdeadzone|&amp;amp;lt;controllerdeadzone&amp;amp;gt;]] advanced setting has been removed. Deadzones can now be configured by plugging in the controller and selecting it in Settings -&amp;gt; System settings -&amp;gt; Input -&amp;gt; Peripherals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== enablemultimediakeys ===&lt;br /&gt;
{{anchor|.3Cenablemultimediakeys.3E}}&lt;br /&gt;
This setting only has any effect on Windows versions of Kodi, and only applies to builds from 28th May 2011 onwards.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enablemultimediakeys&amp;gt;true&amp;lt;/enablemultimediakeys&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== seeksteps ===&lt;br /&gt;
{{Main|Skip steps}}&lt;br /&gt;
&lt;br /&gt;
This setting changes which increments are available in the settings GUI for additive seeking. Note that &amp;lt;code&amp;gt;&amp;lt;seeksteps&amp;gt;&amp;lt;/code&amp;gt; is not used to actually choose which seek steps are enabled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;seeksteps&amp;gt;7, 15, 30, 60, 180, 300, 600, 900, 1800&amp;lt;/seeksteps&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{editor note|the defaults need to be updated for seeksteps.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== touchscreen ===&lt;br /&gt;
{{anchor|.3Ctouchscreen.3E}}&lt;br /&gt;
This setting allows you to move/align the origin of the touch screen with the origin of the display used. If touch input does not result in a correct movement of the mouse pointer, the behaviour can be corrected with an offset and a stretch/compress factor.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;touchscreen&amp;gt;&lt;br /&gt;
		&amp;lt;x_offset&amp;gt;0&amp;lt;/x_offset&amp;gt; &amp;lt;!-- set pixel x offset to align it to the used display--&amp;gt;&lt;br /&gt;
		&amp;lt;y_offset&amp;gt;0&amp;lt;/y_offset&amp;gt; &amp;lt;!-- set pixel y offset to align it to the used display--&amp;gt;&lt;br /&gt;
		&amp;lt;x_stretch_factor&amp;gt;1.0&amp;lt;/x_stretch_factor&amp;gt; &amp;lt;!-- stretch/compress the touch x axis--&amp;gt;&lt;br /&gt;
		&amp;lt;y_stretch_factor&amp;gt;1.0&amp;lt;/y_stretch_factor&amp;gt; &amp;lt;!-- stretch/compress the touch y axis--&amp;gt;&lt;br /&gt;
    &amp;lt;/touchscreen&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== scanirserver ===&lt;br /&gt;
Introduced in v18 and used in MS Windows setups only.&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/13896&amp;lt;/ref&amp;gt;&lt;br /&gt;
Used to disable the regular connection attempts to the IR Server Suite when there is no remote to connect to.&lt;br /&gt;
&lt;br /&gt;
The default setting is to allow connection attempts. To disable connection attempts change value to &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;scanirserver&amp;gt;true&amp;lt;/scanirserver&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GUI rendering settings ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== algorithmdirtyregions ===&lt;br /&gt;
{{anchor|.3Calgorithmdirtyregions.3E}}&lt;br /&gt;
{{see also|HOW-TO:Modify dirty regions}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;algorithmdirtyregions&amp;quot; /&amp;gt;{{note|Some GPU/hardware configurations will have some minor issues (such as a visual &amp;quot;flicker&amp;quot;). 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.}}&lt;br /&gt;
 &lt;br /&gt;
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&#039;t changed the GUI can be sped up. Because all GPUs work differently, only Mode 3 is guaranteed to work for everyone without flickering issues. This mode will reduce CPU/GPU usage, but will not increase GUI speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! value !! result !! description&lt;br /&gt;
|-&lt;br /&gt;
! 0&lt;br /&gt;
| Off&lt;br /&gt;
| The entire viewport is always rendered.&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
|Union&lt;br /&gt;
|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.&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| {{nowrap|Cost reduction}}&lt;br /&gt;
| Each dirty region is presented separately, in as many passes as there are regions.&lt;br /&gt;
|-&lt;br /&gt;
! 3&lt;br /&gt;
| {{nowrap|Whole Screen}}&lt;br /&gt;
| The entire screen is rendered if there are any dirty regions. This is a safe default for drivers that clear buffer contents (manifests as blinking or vibrating images). &#039;&#039;&#039;Default&#039;&#039;&#039;&lt;br /&gt;
|}&amp;lt;section end=&amp;quot;algorithmdirtyregions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;algorithmdirtyregions&amp;gt;1&amp;lt;/algorithmdirtyregions&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== visualizedirtyregions ===&lt;br /&gt;
{{anchor|.3Cvisualizedirtyregions.3E}}&lt;br /&gt;
{{see also|HOW-TO:Modify dirty regions}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;visualizedirtyregions&amp;quot; /&amp;gt;Enable dirty-region visualization. Paints a rectangle over marked controls.&lt;br /&gt;
&lt;br /&gt;
* true: on&lt;br /&gt;
* false: off &#039;&#039;&#039;(Default)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|This is only a development mode and isn&#039;t of use to normal users.}}&lt;br /&gt;
&amp;lt;section end=&amp;quot;visualizedirtyregions&amp;quot; /&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;visualizedirtyregions&amp;gt;true&amp;lt;/visualizedirtyregions&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== smartredraw ===&lt;br /&gt;
&lt;br /&gt;
{{note|This is an experimental feature and you might face issues using it. So please be aware of that.}}&lt;br /&gt;
&lt;br /&gt;
This new feature was introduced in Kodi 18 and if enabled, the GUI process call (and therefore the render call) is only done if anything has changed. The result will be a faster GUI and less load if Kodi plays a video&lt;br /&gt;
&lt;br /&gt;
* true: on&lt;br /&gt;
* false: off &#039;&#039;&#039;(Default)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;smartredraw&amp;gt;true&amp;lt;/smartredraw&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other interface settings ==&lt;br /&gt;
&lt;br /&gt;
=== window ===&lt;br /&gt;
{{anchor|.3Cwindow.3E}}&lt;br /&gt;
{{note|This is a &amp;quot;hidden&amp;quot; guisettings.xml setting (defined by the mouse moving the window size), but it is mentioned here because it is a particularly useful override when used in advancedsettings.xml}}&lt;br /&gt;
This allows you to manually set the default size of Kodi&#039;s windowed mode.  If you resize the window, it will return to the set size when restarting.&lt;br /&gt;
&lt;br /&gt;
WIDTH and HEIGHT are the values for each dimension, in pixels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;window&amp;gt;&lt;br /&gt;
    &amp;lt;width&amp;gt;WIDTH&amp;lt;/width&amp;gt;&lt;br /&gt;
    &amp;lt;height&amp;gt;HEIGHT&amp;lt;/height&amp;gt;&lt;br /&gt;
&amp;lt;/window&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== restrictcapsmask ===&lt;br /&gt;
{{anchor|.3Crestrictcapsmask.3E}}&lt;br /&gt;
Windows only. A bitmask to prevent Kodi from using detected texture capabilities of the GPU. This helps work around buggy hardware/drivers.&lt;br /&gt;
&lt;br /&gt;
1: prevent the use of compressed textures (DXT1, DXT3, DXT5)&lt;br /&gt;
2: prevent the use of non-power-of-two dimensions for textures&lt;br /&gt;
4: prevent the use of compressed textures with non-power-of-two dimensions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;restrictcapsmask&amp;gt;0&amp;lt;/restrictcapsmask&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== showexitbutton ===&lt;br /&gt;
{{anchor|.3Cshowexitbutton.3E}}&lt;br /&gt;
Setting to hide the exit button, useful for people running appliance based setups where exit would only confuse/complicate the user. Modifiable via the advancedsettings.xml by setting showexitbutton to false, default is true (show)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;showexitbutton&amp;gt;true&amp;lt;/showexitbutton&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== fullscreen ===&lt;br /&gt;
{{anchor|.3Cfullscreen.3E}}&lt;br /&gt;
Starts Kodi in full screen (check resolutions!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fullscreen&amp;gt;false&amp;lt;/fullscreen&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== splash ===&lt;br /&gt;
{{anchor|.3Csplash.3E}}&lt;br /&gt;
Set to false if you wish to disable the startup splash image. Defaults to true.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;splash&amp;gt;true&amp;lt;/splash&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== cputempcommand ===&lt;br /&gt;
{{anchor|.3Ccputempcommand.3E}}&lt;br /&gt;
Provide a shell command Kodi will use to get CPU temperature. It should print out only &amp;quot;[temp as integer] [scale as one of &amp;quot;CcFf&amp;quot;]&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For Nvidia and Raspberry Pi&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cputempcommand&amp;gt;sed -e &#039;s/\([0-9]*\)[0-9]\{3\}.*/\1 C/&#039; /sys/class/thermal/thermal_zone0/temp&amp;lt;/cputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cputempcommand&amp;gt;echo &amp;quot;$(sensors -u | tail -n64 | grep temp1_input | awk &#039;{print $2 }&#039; |awk &#039;{printf(&amp;quot;%d\n&amp;quot;,$1 + 0.5);}&#039;) C&amp;quot;&amp;lt;/cputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For ATI/AMD&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cputempcommand&amp;gt;sensors|sed -ne &amp;quot;s/temp1: \+[-+]\([0-9]\+\).*/\1 C/p&amp;quot;&amp;lt;/cputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== gputempcommand ===&lt;br /&gt;
{{anchor|.3Cgputempcommand.3E}}&lt;br /&gt;
Provide a shell command Kodi will use to get GPU temperature. It should print out only &amp;quot;[temp as integer] [scale as one of &amp;quot;CcFf&amp;quot;]&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For Nvidia&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;echo &amp;quot;$(nvidia-settings -tq gpuCoreTemp) C&amp;quot;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;echo &amp;quot;$(nvidia-smi -q -d TEMPERATURE | grep Gpu | cut -c35-36) C&amp;quot;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For ATI/AMD&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;/usr/bin/aticonfig --od-gettemperature | grep Temperature | cut -f 2 -d &amp;quot;-&amp;quot; | cut -f 1 -d &amp;quot;.&amp;quot; | sed -e &amp;quot;s, ,,&amp;quot; | sed &#039;s/$/ C/&#039;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;u&amp;gt;For Raspberry Pi&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;/opt/vc/bin/vcgencmd measure_temp | sed -e &amp;quot;s/temp=//&amp;quot; -e &amp;quot;s/\..*&#039;/ /&amp;quot;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== glrectanglehack ===&lt;br /&gt;
{{anchor|.3Cglrectanglehack.3E}}&lt;br /&gt;
Problems with ghosting or videos which are only played back in the left upper quarter? The following ATI hack may solve it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;glrectanglehack&amp;gt;yes&amp;lt;/glrectanglehack&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== alwaysontop ===&lt;br /&gt;
{{anchor|.3Calwaysontop.3E}}&lt;br /&gt;
Added in XBMC v9.11 (Windows OS only). Keeps Kodi always on top when windowed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;alwaysontop&amp;gt;yes&amp;lt;/alwaysontop&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a fake fullscreen GUI option in Kodi&#039;s settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== minimizetotray ===&lt;br /&gt;
{{anchor|.3Cminimizetotray.3E}}&lt;br /&gt;
{{note|Available in Kodi v20 and above.}}&lt;br /&gt;
&lt;br /&gt;
Windows only. Minimizes Kodi to the system tray. Defaults to false.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;minimizetotray&amp;gt;true&amp;lt;/minimizetotray&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Removed tags =&lt;br /&gt;
{{anchor|Recently removed tags}}&lt;br /&gt;
* {{anchor|.3Cthumbsize.3E}}&#039;&#039;&#039;&amp;lt;thumbsize&amp;gt;&#039;&#039;&#039; - replaced by &amp;lt;[[#imageres|imageres]]&amp;gt; in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cfanartheight.3E}}&#039;&#039;&#039;&amp;lt;fanartheight&amp;gt;&#039;&#039;&#039; - replaced by &amp;lt;[[#fanartres|fanartres]]&amp;gt; in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cdvdthumbs.3E}}&#039;&#039;&#039;&amp;lt;dvdthumbs&amp;gt;&#039;&#039;&#039; - removed in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cbusydialogdelayms.3E}}&#039;&#039;&#039;&amp;lt;busydialogdelayms&amp;gt;&#039;&#039;&#039; - removed in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cbginfoloadermaxthreads.3E}}&#039;&#039;&#039;&amp;lt;bginfoloadermaxthreads&amp;gt;&#039;&#039;&#039; - removed in v13 Gotham&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;showepginfoonselect&amp;gt;&#039;&#039;&#039; - replaced by a GUI setting in v13 Gotham&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;resample&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;forceDirectSound&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;audiophile&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;audiosinkbufferdurationmsec&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;allowtranscode44100&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;streamsilence&amp;gt;&#039;&#039;&#039; - These were various sub-tags for &amp;lt;audio&amp;gt; that were removed in v13 Gotham and either replaced by GUI settings or were no longer needed.&lt;br /&gt;
* {{anchor|.3Cenableairtunesdebuglog.3E}}&#039;&#039;&#039;&amp;lt;enableairtunesdebuglog&amp;gt;&#039;&#039;&#039; - replaced by a GUI option in v14 Helix&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;videoDisableHi10pMultithreading&amp;gt;&#039;&#039;&#039; - renamed to &amp;lt;disableswmultithreading&amp;gt; in v14 Helix&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;hideallitems&amp;gt;&#039;&#039;&#039; - For both the &amp;lt;code&amp;gt;&amp;lt;videolibrary&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;musiclibrary&amp;gt;&amp;lt;/code&amp;gt; sections, this is replaced by a GUI option in v15 Isengard&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;SmallStepBackSeconds&amp;gt;&#039;&#039;&#039; - In v15 the &amp;lt;code&amp;gt;SmallStepBack&amp;lt;/code&amp;gt; [[Action_IDs]] has been replaced by &amp;lt;code&amp;gt;seek(-7)&amp;lt;/code&amp;gt; in default keymaps. See &#039;&#039;&#039;[[skip steps]]&#039;&#039;&#039; for details. When the original &amp;lt;code&amp;gt;SmallStepBack&amp;lt;/code&amp;gt; action ID is used it defaults to the first backwards [[skip steps|additive seeking value]].&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;timeseekforward&amp;gt;/&amp;lt;timeseekbackward&amp;gt;&#039;&#039;&#039; - In v15 these tags are replaced by GUI options via [[skip steps|additive seeking]], which is configured in the GUI. See &#039;&#039;&#039;[[skip steps]]&#039;&#039;&#039; for details.&lt;br /&gt;
* {{anchor|.3Ckaraoke.3E}}&#039;&#039;&#039;&amp;lt;karaoke&amp;gt;&#039;&#039;&#039; - In v16 all of the karaoke features in Kodi were removed.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;useddsfanart&amp;gt;&#039;&#039;&#039; - removed in v17 Krypton.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;cachemembuffersize&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;&amp;lt;readbufferfactor&amp;gt;&#039;&#039;&#039; - In v17 &#039;&#039;&#039;&amp;lt;cachemembuffersize&amp;gt;&#039;&#039;&#039; is renamed to &#039;&#039;&#039;&amp;lt;memorysize&amp;gt;&#039;&#039;&#039; and &amp;lt;code&amp;gt;&amp;lt;readbufferfactor&amp;gt;&amp;lt;/code&amp;gt; is renamed to &amp;lt;code&amp;gt;&amp;lt;readfactor&amp;gt;&amp;lt;/code&amp;gt;. In addition, all three buffer related settings in &amp;lt;network&amp;gt; are moved out of &amp;lt;network&amp;gt; and into a new &amp;lt;cache&amp;gt; parent tag.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;minvideocachelevel&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;minaudiocachelevel&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;cacheindvdplayer&amp;gt;&#039;&#039;&#039; have been removed in v17.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;useffmpegvda&amp;gt;&#039;&#039;&#039; - Tag was only used for development testing. Removed in v17.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;nofliptimeout&amp;gt;&#039;&#039;&#039; - Removed in v17&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;blackbarcolour&amp;gt;&#039;&#039;&#039; - Removed in v17 (maybe?)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;disableswmultithreading&amp;gt;&#039;&#039;&#039; - Removed in v17 (maybe?)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;controllerdeadzone&amp;gt;&#039;&#039;&#039; - Removed in v17&lt;br /&gt;
* {{anchor|.3Cmeasurerefreshrate.3E}}&#039;&#039;&#039;&amp;lt;measurerefreshrate&amp;gt;&#039;&#039;&#039; - Removed in v17 or v18?&lt;br /&gt;
* {{anchor|.3Cmyth.3E}}&#039;&#039;&#039;&amp;lt;myth&amp;gt;&#039;&#039;&#039; - Removed sometime between v16 to v18&lt;br /&gt;
* {{anchor|.3Ctuxbox.3E}}&#039;&#039;&#039;&amp;lt;tuxbox&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;backgroundupdate&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;hideemptyseries&amp;gt;&#039;&#039;&#039; - Replaced by a GUI option.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;mymovies&amp;gt;&#039;&#039;&#039; and child tag &#039;&#039;&#039;&amp;lt;categoriestogenres&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;albumssortbyartistthenyear&#039;&#039;&#039;&amp;gt; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;albumformatright&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* {{anchor|.3Cremoterepeat.3E}}&#039;&#039;&#039;&amp;lt;remoterepeat&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* {{anchor|.3Callowd3d9ex.3E}}&#039;&#039;&#039;&amp;lt;allowd3d9ex&amp;gt;&#039;&#039;&#039; and {{anchor|.3Cforced3d9ex.3E}}&#039;&#039;&#039;&amp;lt;forced3d9ex&amp;gt;&#039;&#039;&#039; - Removed sometime between v16 to v18&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;lingertime&amp;gt;&#039;&#039;&#039; - Replaced by a GUI setting in v18&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;forcevaapienabled&amp;gt;&#039;&#039;&#039; - Removed in v18&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;dxvaallowhqscaling&amp;gt;&#039;&#039;&#039; - Removed in v18 &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/15466&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;promptfulltagscan&amp;gt;false&amp;lt;/promptfulltagscan&amp;gt;&#039;&#039;&#039; Removed in v18. Now automatically asked each time a scan is conducted.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;omxdecodestartwithvalidframe&amp;gt;&#039;&#039;&#039; - This tag is only in some Raspberry Pi specific distributions, such as OpenELEC. As of March 2015, this tag has not been merged into &amp;quot;vanilla&amp;quot; Kodi builds&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;musicthumbs&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Thumbnail image files&#039;&#039;&#039; found in Media -&amp;gt; Music&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;artistextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Artist art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Music&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;albumextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Album art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Music&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;episodeextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Episode art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Videos&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tvshowextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;TV show art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Videos&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tvseasonextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;TV show art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Videos&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;movieextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Movie art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Videos&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;moviesetextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Movie art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Videos&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;musicvideoextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Music video art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Videos&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;fanart&amp;gt;&#039;&#039;&#039; Removed in v19&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;assfixedworks&amp;gt;&#039;&#039;&#039; Removed in v20&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;try10bitoutput&amp;gt;&#039;&#039;&#039; Removed in v20 and replaced with [[Settings/System/Display#Use_10_bit_for_SDR|Use 10 bit for SDR]] setting &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/20014&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;enablehighqualityhwscalers&amp;gt;&#039;&#039;&#039; Removed in v20 &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/21537&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= guisettings.xml Setting Conversion =&lt;br /&gt;
It is possible to convert settings found in the &#039;&#039;&#039;[[Settings]]&#039;&#039;&#039; &#039;&#039;(guisettings.xml)&#039;&#039; pages of {{kodi}} into entries for the advancedsettings.xml file.&lt;br /&gt;
&lt;br /&gt;
When a setting from the guisettings.xml is added to the advancedsettings.xml file, it will override the existing guisettings.xml values and the setting will be removed from the settings pages.&lt;br /&gt;
&lt;br /&gt;
Why would I need to do this?&lt;br /&gt;
* You set up multiple devices and then need to individually change settings and preferences on each device. Using this conversion method, you save those settings in the advancedsettings.xml file and simply add the file to each device&lt;br /&gt;
* You need to hide settings to prevent those settings from being modified&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To convert a guisetting to advancedsettings.xml follow these steps:&lt;br /&gt;
# In the {{kodi}} settings pages, adjust the setting(s) to your preference.&lt;br /&gt;
# Back out of the settings pages to the main menu, which forces {{kodi}} to save the adjusted settings to the guisettings.xml file&lt;br /&gt;
# Locate the guisettings.xml file in the [[Userdata]] folder and open it&lt;br /&gt;
# Locate the setting(s) to be converted. The list can be overwhelming so make use of the Search feature of whichever editor you are using&lt;br /&gt;
# Using the following setting as an example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;setting id=&amp;quot;videolibrary.showemptytvshows&amp;quot;&amp;gt;true&amp;lt;/setting&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: Breaking down the string:&lt;br /&gt;
::&#039;&#039;&#039;videolibrary&#039;&#039;&#039;- parent tag&lt;br /&gt;
::&#039;&#039;&#039;showemptytvshows&#039;&#039;&#039;- child tag&lt;br /&gt;
::&#039;&#039;&#039;true&#039;&#039;&#039;- value&lt;br /&gt;
: The conversion is as follows and place this in the advancedsettings.xml file&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;videolibrary&amp;gt;&lt;br /&gt;
          &amp;lt;showemptytvshows&amp;gt;true&amp;lt;/showemptytvshows&amp;gt;&lt;br /&gt;
     &amp;lt;/videolibrary&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Some parent tags may already be in use in your advancedsettings.xml file. Do not duplicate them, but add the child tag beneath the existing parent tag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Updated|18}}&lt;br /&gt;
{{DISPLAYTITLE:advancedsettings.xml}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Advanced topics]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Settings]]&lt;br /&gt;
[[Category:Karellen]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Skin_Optimizations&amp;diff=244315</id>
		<title>Skin Optimizations</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Skin_Optimizations&amp;diff=244315"/>
		<updated>2023-02-19T23:19:48Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: /* Misc improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Skinning]]}}&lt;br /&gt;
== Why to optimize skins ==&lt;br /&gt;
While the PC the skin is written on might be fast enough to render the GUI at 4k/60fps, it might be too expensive to run on lower end hardware. This page will give examples how to optimize skins, focusing on GPU performance.&lt;br /&gt;
&lt;br /&gt;
In general, the two most important resources on the GPU are memory bandwidth and computing power. Different systems might show different bottlenecks to render the GUI, but the following topics should help both.&lt;br /&gt;
&lt;br /&gt;
== Analysis via Renderdoc ==&lt;br /&gt;
It is highly advised to use a tool like Renderdoc, a debugging program for computer graphics. While it offers a lot of features for graphics developers, it is also suitable for skinners to check for issues in the GUI layer compositing. With Renderdoc, the amount of overdraw can easily be judged.&lt;br /&gt;
&lt;br /&gt;
A tutorial how it can aid in skin development can be found [[Debugging_via_Renderdoc|here]].&lt;br /&gt;
&lt;br /&gt;
== Overdraw ==&lt;br /&gt;
&lt;br /&gt;
An important metric for performance evaluation is the amount of overdraw. Overdraw defines how many times a pixel gets rendered to, averaging across the whole screen. Using lots of layers increases the rendering costs. In order to have a performance target, a value should be picked when designing the skin. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Typical overdraw values&lt;br /&gt;
|-&lt;br /&gt;
! Performance target !! Permissible Overdraw&lt;br /&gt;
|-&lt;br /&gt;
| Raspberry Pi 3, 1080p60 || 2.5&lt;br /&gt;
|-&lt;br /&gt;
| Raspberry Pi 4, 1080p60 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Odroid C2, 1080p60 || 4.5&lt;br /&gt;
|-&lt;br /&gt;
| Intel HD 610, 1080p60 || 7&lt;br /&gt;
|-&lt;br /&gt;
| Intel HD 630, 2160p60 || 2.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please take all of the values with a great pinch of salt. The actual value might vary when the system is busy, like when playing a video or rendering a visualization. Overdraw should be seen as a guide to keep the whole GUI experience consistent.&lt;br /&gt;
&lt;br /&gt;
Also, the performance target can be set lower when doing animations transitioning between menus. This will result in stutter on low-end systems during the transition, but the user experience is fine otherwise. On systems where the video is rendered via the GPU (Intel and similar &amp;quot;desktop&amp;quot; systems), this might be more noticable.&lt;br /&gt;
&lt;br /&gt;
As an example, a target of 3.5 permits the usage of one background layer (fanart) with one texture filter on top, while still leaving 1.5 pixel draws for UI elements.&lt;br /&gt;
&lt;br /&gt;
For comparison, the overdraw for the Estuary movie home screen is about 4.2, while the amount for Confluence is about 1.8.&lt;br /&gt;
&lt;br /&gt;
== Reducing layer counts ==&lt;br /&gt;
&lt;br /&gt;
While Kodi can render dozens of layers on top of each other, each layer consumes quite a bit of rendering resources. The overall goal should be to use as few layers as possible. &lt;br /&gt;
&lt;br /&gt;
Typically, the most performance gains can be made by reducing the full-screen layers, but this is not exclusive to them.&lt;br /&gt;
&lt;br /&gt;
=== Diffuse texture usage ===&lt;br /&gt;
The skinning engine has the ability to apply diffuse textures. While it might be tempting to get the same effect via a separate texture, it is faster. &lt;br /&gt;
&lt;br /&gt;
[[Texture_Attributes|See here for additional information.]]&lt;br /&gt;
=== Coloring via diffusecolors ===&lt;br /&gt;
In a lot of skins, coloring/shading is done by applying a white, featureless texture with a diffuse color to do color filtering. Most often, the same/similar effect can be obtained by applying the diffuse color to the underlying layer, so a whole layer can be saved.&lt;br /&gt;
&lt;br /&gt;
With Kodi 20 (Nexus), it will even be possible to animate the diffuse color (see https://github.com/xbmc/xbmc/pull/21400).&lt;br /&gt;
&lt;br /&gt;
=== Squashing filter layers ===&lt;br /&gt;
In a lot of skins, various shadow effects get applied to the fanart in the background. Most often, such effects can be combined together into one texture to achieve a very similar effect. &lt;br /&gt;
&lt;br /&gt;
Combined into a diffuse texture, such savings could halve the rendering cost for some skins.&lt;br /&gt;
&lt;br /&gt;
=== Disabling invisible layers ===&lt;br /&gt;
Always disable occluded layers. Even though they have no impact on the final result, they still have to be processed and rendered. This wastes a lot of resources.&lt;br /&gt;
&lt;br /&gt;
=== Avoid presenting assets multiple times ===&lt;br /&gt;
Another pitfall is to present an asset (posters, fanart, ...) multiple times in the exact same location. While this has no or just a small impact on the output, it eats up resources.&lt;br /&gt;
&lt;br /&gt;
=== Usage of background color ===&lt;br /&gt;
If the skin uses a plain background color, set it via the &amp;lt;code&amp;gt;&amp;lt;backgroundcolor&amp;gt;&amp;lt;/code&amp;gt; tag instead of using an image spanning the whole screen. This saves a good amount of resources.&lt;br /&gt;
&lt;br /&gt;
[[Skinning_Manual#Window_Header|See here for additional information.]]&lt;br /&gt;
&lt;br /&gt;
== Misc improvements ==&lt;br /&gt;
Other optimization considerations.&lt;br /&gt;
&lt;br /&gt;
=== Proper asset sizes ===&lt;br /&gt;
One easy to solve issue is the use of too large assets. Check the resolution of the displayed icons. They should be suitably sized to the targeted rendering resolution (most often 1920x1080). When too large, it will result in increased usage of memory resources and in &#039;&#039;&#039;decreased&#039;&#039;&#039; image quality.&lt;br /&gt;
&lt;br /&gt;
For a lot of background effects, a smaller resolution texture might be used. Often enough, just 1/4th of the target resolution might do the trick (e.g. 960x540), especially when there are multiple layers.&lt;br /&gt;
&lt;br /&gt;
=== Avoid infill by border textures ===&lt;br /&gt;
If a &amp;lt;code&amp;gt;bordertexture&amp;lt;/code&amp;gt; with a transparent center is used, the GUI can be informed via &amp;lt;code&amp;gt;infill=&amp;quot;false&amp;quot;&amp;lt;/code&amp;gt; that it does not have to be rendered.&lt;br /&gt;
&lt;br /&gt;
[[Image_Control#Available_tags_and_attributes|See here for additional information.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoid almost opaque elements ===&lt;br /&gt;
Consider using opaque elements instead of barely transparent ones. Especially on modern GPU&#039;s, this avoids rendering everything below such an element.&lt;br /&gt;
&lt;br /&gt;
=== Don&#039;t include unnecessary alpha layers in textures ===&lt;br /&gt;
Including an alpha layer in a texture implies that it is used, even if the texture is fully opaque. The GUI has to treat such an element as transparent, with all the associated costs.&lt;br /&gt;
&lt;br /&gt;
=== Use single channel textures if possible ===&lt;br /&gt;
A lot of GUI assets included in skins are delivered in a RGB format, even when they are greyscale. A single channel format saves disk space and might even reduce memory bandwidth in the future. Such textures can be colored by a &amp;lt;code&amp;gt;diffusecolor&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Don&#039;t use different uniformly colored textures ===&lt;br /&gt;
Skins might use different textures to color in elements (for example &amp;quot;white.png&amp;quot;, &amp;quot;red.png&amp;quot;, &amp;quot;black.png&amp;quot;). Instead of using textures for each color, use a white texture in combination with a diffuse color. This saves resources.&lt;br /&gt;
&lt;br /&gt;
=== Avoid dead-zones around icons ===&lt;br /&gt;
Icons are often used as decals, featuring transparent portions. Keep those transparent to a minimum to save resources, as the transparent pixels have to be rendered as well.&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin_development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Animating_your_skin&amp;diff=242319</id>
		<title>Animating your skin</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Animating_your_skin&amp;diff=242319"/>
		<updated>2022-06-26T13:37:54Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]|[[Skinning]]}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
The Kodi skin engine has support for animations between control and window states. The animations are defined through use of the &amp;lt;animation&amp;gt; tag, which has a defined type and various attributes that specify the animation to be performed. All animations are additive – if two of them are in effect at the same time, their effects are added together. You may also have more than one animation of each type.&lt;br /&gt;
&lt;br /&gt;
== Window Animations ==&lt;br /&gt;
There are two valid window animations – the animation to perform when the window is opened, and the animation to perform when the window is closed. They take the same format as the control animations. You can, however, have more than one animation performed for the WindowOpen or WindowClose animation.&lt;br /&gt;
&lt;br /&gt;
== Control Animations ==&lt;br /&gt;
There are 6 valid control animations: WindowOpen, WindowClose, Visible, Hidden, Focus, and Unfocus. There is also a combination animation VisibleChange that constructs the Visible animation, then reverses it for the Hidden animation.&lt;br /&gt;
&lt;br /&gt;
== Format of Animation Tags ==&lt;br /&gt;
The animation tag is formatted as follows for a single animation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;EFFECT&amp;quot; attributes&amp;gt;TYPE&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and as follows for multiple animations:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation type=&amp;quot;TYPE&amp;quot; condition=&amp;quot;Window.IsActive(Home)&amp;quot; reversible=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;effect type=&amp;quot;EFFECT&amp;quot; other_attributes /&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
  &amp;lt;effect type=&amp;quot;EFFECT&amp;quot; other_attributes /&amp;gt;&lt;br /&gt;
&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
The type can be one of the following:&lt;br /&gt;
; WindowOpen &lt;br /&gt;
: Performed once only when the window is opened. &lt;br /&gt;
; WindowClose &lt;br /&gt;
: Performed once only when the window is closed. No animation is performed when switching to fullscreen video, however. &lt;br /&gt;
;Visible &lt;br /&gt;
:Performed when the control becomes visible via its &amp;lt;visible&amp;gt; tag. &lt;br /&gt;
; Hidden &lt;br /&gt;
: Performed when the control becomes hidden via its &amp;lt;visible&amp;gt; tag. &lt;br /&gt;
; Focus &lt;br /&gt;
: Performed when the control gains focus. &lt;br /&gt;
; Unfocus &lt;br /&gt;
: Performed when the control loses focus.&lt;br /&gt;
; Conditional &lt;br /&gt;
: Performed when the control&#039;s condition attribute is filled. &lt;br /&gt;
; VisibleChange &lt;br /&gt;
: The same as the Visible type, except the reverse animation is auto-created for the Hidden type. Just saves having to have both animations if the animation is the same in both directions (ie just reversed)&lt;br /&gt;
&lt;br /&gt;
=== Attributes ===&lt;br /&gt;
The attributes available are as follows. Note that all attributes, like tags, are case sensitive&lt;br /&gt;
; effect &lt;br /&gt;
: Specifies the effect to use. Currently “fade”, fadediffuse, “slide”, “rotate”, &amp;quot;rotatex&amp;quot;, &amp;quot;rotatey&amp;quot;, and “zoom” are supported.&lt;br /&gt;
: fade - influences the opaqueness&lt;br /&gt;
: fadediffuse - influences the opaqueness and color&lt;br /&gt;
: rotatex - rotates a control around the X-Axis (horizontal)&lt;br /&gt;
: rotatey - rotates a control around the Y-Axis (vertical)&lt;br /&gt;
: rotate - rotates a control around the Z-Axis&lt;br /&gt;
: slide - translates the control&lt;br /&gt;
: zoom - magnifies/minifies the control&lt;br /&gt;
; time : &lt;br /&gt;
Specifies the length of time that the animation will run, in milliseconds. &lt;br /&gt;
; delay &lt;br /&gt;
: The time to delay the transistion before starting it, in milliseconds. &lt;br /&gt;
; start &lt;br /&gt;
: The start state of the control for this transistion. &lt;br /&gt;
:* For fades, this is the opaqueness as a percentage (ie start=&amp;quot;100&amp;quot; is fully opaque, start=&amp;quot;0&amp;quot; is fully transparent). &lt;br /&gt;
:* For diffuse fades, this is the color as a &amp;quot;AARRGGBB&amp;quot; (ie start=&amp;quot;FFFF0000&amp;quot; is fully red opaque; start=&amp;quot;7F00FF00&amp;quot; is green, half transparent). &lt;br /&gt;
:* For slides, this is the relative coordinate offset to start the control at (ie start=&amp;quot;50,60&amp;quot; will start the control off at 50 pixels to the right, and 60 pixels below it&#039;s normal viewing position). &lt;br /&gt;
:* For rotates, this is the starting degree offset from the horizontal. (ie start=&amp;quot;30&amp;quot; will start the control off on an angle of 30 degrees from the horizontal). &lt;br /&gt;
:* For zooms, this is the starting size as a percentage. (ie start=&amp;quot;50,60&amp;quot; will start the control at 50% of it&#039;s horizontal size and 60% of it&#039;s vertical size). &lt;br /&gt;
:Note: With zooms you can also specify the coordinates and dimensions of the texture. (ie start=&amp;quot;left,top,width,height&amp;quot;).&lt;br /&gt;
; end &lt;br /&gt;
: The end state of the control for this transistion. Similar to the start state, except that the end state is always kept after the animation is finished, and until the control changes its state. &lt;br /&gt;
; acceleration &lt;br /&gt;
: Amount to accelerate or decelerate during a “slide”, “zoom” or “rotate” transistion. For deceleration, use a negative value. A value of -1 will cause the control to come to rest at its end coordinates. Defaults to 0. (Also see the tween attribute)&lt;br /&gt;
; center &lt;br /&gt;
: Center of the rotation or zoom to perform with a “rotate” or “zoom” transistion. This is the coordinates about which the rotation or zoom will take place. eg center=&amp;quot;30,50” will mean that all points will revolve around (or zoom from) the (30,50) pixel location. You can set center=&amp;quot;auto&amp;quot; to have Kodi automatically zoom from the center of the control.&lt;br /&gt;
: Center shifts the rotational axis at the level, rotatex - center=&amp;quot;y,z&amp;quot; coordinates, rotatey - center=&amp;quot;x,z&amp;quot; coordinates, rotate - center=&amp;quot;x,y&amp;quot; coordinates&lt;br /&gt;
; condition&lt;br /&gt;
: The conditions under which this animation should be performed. Defaults to being always performed. [[Conditional Visibility|See here for a list of valid conditionals.]]&lt;br /&gt;
; reversible &lt;br /&gt;
: If “false” the animation is not reversed if it is interrupted when it is finished. For instance a Visible animation will normally be reversed (instead of running the Hidden animation) if the control becomes hidden before the visible animation has finished. Setting reversible=&amp;quot;false” prevents this behaviour (the Hidden animation will take its place). Defaults to true.&lt;br /&gt;
; loop&lt;br /&gt;
: If “true” will make your animation loop. (jump back to the start after it reaches the end)&lt;br /&gt;
; pulse &lt;br /&gt;
: If “true” will make your animation pulse. (Bounce back from start to end to start to end .........)&lt;br /&gt;
; tween&lt;br /&gt;
: Tween is like an advanced acceleration attribute that can be applied to all animations. Instead of a steady acceleration or deceleration, you can specify curves that the animation should follow. Currently, the engine supports “elastic“, “bounce“, “circle“, “back“, “sine“, “cubic“, “quadratic“ and, the default, “linear“. [[Tweeners|More information about Tweeners]]&lt;br /&gt;
; easing&lt;br /&gt;
: Easing basically defines the direction of the tween and can be one of “out“, “inout“ and “in“. The default value is “out“. [[Tweeners|More information about Easing]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;visible&amp;gt;Player.HasAudio&amp;lt;/visible&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;400&amp;quot;&amp;gt;VisibleChange&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This causes Kodi to fade the control in 400 milliseconds between the visible and hidden states. The control will start off hidden, and will fade in over 400ms when you play audio, and when it&#039;s finished, it will fade out again over 400ms.&lt;br /&gt;
----&lt;br /&gt;
You can also specify different transistion times for transistioning in and out as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;100&amp;quot;&amp;gt;WindowOpen&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;1000&amp;quot;&amp;gt;WindowClose&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This, when used as the animation tag for the ~MusicOSD dialog, will cause it to fade in quickly (in 100ms) when activated and the fade out again slowly (in 1 second (1000ms)) when it&#039;s cancelled.&lt;br /&gt;
----&lt;br /&gt;
You can also specify that a control should always fade in when the window is opened by using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;WindowOpen&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This specifies that it will always start hidden, but will fade in immediately (over a time of 200ms) when the window is opened.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
There is also ability to add delays preceding the transistions. For instance&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;200&amp;quot; delay=&amp;quot;200&amp;quot;&amp;gt;Hidden&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
would mean that the control will fade out after a delay of 200ms. This is useful for &amp;quot;crossfade&amp;quot; effects, where you want the new control to fade in while the old control is still on screen (and then fade the old one out once the new one is completely opaque).&lt;br /&gt;
----&lt;br /&gt;
There are also slide effects available.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;slide&amp;quot; end=&amp;quot;30,0&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;Focus&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will slide the control 30 pixels to the right of its normal position when it becomes focused. Note that when it becomes unfocused it will jump back to it&#039;s normal position. A Unfocus animation will make it slide back gracefully.&lt;br /&gt;
----&lt;br /&gt;
There are also rotate effects available.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;rotate&amp;quot; end=&amp;quot;30&amp;quot; center=&amp;quot;360,288&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;Focus&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will rotate the control 30 degrees counter clockwise about the center of a PAL screen (360,288) when the control becomes focused.&lt;br /&gt;
----&lt;br /&gt;
And we also have zoom effects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;zoom&amp;quot; end=&amp;quot;120&amp;quot; center=&amp;quot;360,288&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;Focus&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will zoom the control to 120% of its normal size when the control becomes focused, with the zoom centered at the center of a PAL screen (360,288). You can zoom each dimension by different amounts (effectively a stretch operation) as well. To stretch a control an extra 50% horizontally when focused, we can use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;zoom&amp;quot; end=&amp;quot;150,100&amp;quot; center=&amp;quot;360,288&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;Focus&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
An example of a condition attribute is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;slide&amp;quot; start=&amp;quot;-120,0&amp;quot; time=&amp;quot;200&amp;quot; condition=&amp;quot;Window.Previous(Home)&amp;quot;&amp;gt;WindowOpen&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the slide animation to only be performed if you are coming to this window from the Home window.&lt;br /&gt;
----&lt;br /&gt;
An example of a Conditional animation type is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;slide&amp;quot; start=&amp;quot;-120,0&amp;quot; time=&amp;quot;200&amp;quot; condition=&amp;quot;Control.HasFocus(2)&amp;quot;&amp;gt;Conditional&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the slide animation to only be performed when the control with the id of 2 gains focus.&lt;br /&gt;
----&lt;br /&gt;
An example of a fade animation with a pulse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; start=&amp;quot;20&amp;quot; time=&amp;quot;200&amp;quot; condition=&amp;quot;Control.HasFocus(2)&amp;quot; pulse=&amp;quot;true&amp;quot;&amp;gt;Conditional&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the control to start at 20% opacity and fade to full in 200 milliseconds and fade back to 20% opacity and keeping looping in that fashion&lt;br /&gt;
----&lt;br /&gt;
An example of a fadediffuse animation with a pulse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fadediffuse&amp;quot; start=&amp;quot;FFFF0000&amp;quot; start=&amp;quot;FF00FF00&amp;quot; time=&amp;quot;200&amp;quot; condition=&amp;quot;Control.HasFocus(2)&amp;quot; pulse=&amp;quot;true&amp;quot;&amp;gt;Conditional&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the example above, but it pulses between red and green.&lt;br /&gt;
----&lt;br /&gt;
An example of two animations at once:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation type=&amp;quot;WindowOpen&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;effect type=&amp;quot;fade&amp;quot; start=&amp;quot;0&amp;quot; end=&amp;quot;100&amp;quot; time=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;effect type=&amp;quot;zoom&amp;quot; end=&amp;quot;150,100&amp;quot; center=&amp;quot;auto&amp;quot; time=&amp;quot;200&amp;quot; delay=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the control to fade in over 200 ms, then zoom to 150% it&#039;s width from the center of the control.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Animating_your_skin&amp;diff=242318</id>
		<title>Animating your skin</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Animating_your_skin&amp;diff=242318"/>
		<updated>2022-06-26T13:34:03Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: /* Attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]|[[Skinning]]}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
The Kodi skin engine has support for animations between control and window states. The animations are defined through use of the &amp;lt;animation&amp;gt; tag, which has a defined type and various attributes that specify the animation to be performed. All animations are additive – if two of them are in effect at the same time, their effects are added together. You may also have more than one animation of each type.&lt;br /&gt;
&lt;br /&gt;
== Window Animations ==&lt;br /&gt;
There are two valid window animations – the animation to perform when the window is opened, and the animation to perform when the window is closed. They take the same format as the control animations. You can, however, have more than one animation performed for the WindowOpen or WindowClose animation.&lt;br /&gt;
&lt;br /&gt;
== Control Animations ==&lt;br /&gt;
There are 6 valid control animations: WindowOpen, WindowClose, Visible, Hidden, Focus, and Unfocus. There is also a combination animation VisibleChange that constructs the Visible animation, then reverses it for the Hidden animation.&lt;br /&gt;
&lt;br /&gt;
== Format of Animation Tags ==&lt;br /&gt;
The animation tag is formatted as follows for a single animation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;EFFECT&amp;quot; attributes&amp;gt;TYPE&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and as follows for multiple animations:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation type=&amp;quot;TYPE&amp;quot; condition=&amp;quot;Window.IsActive(Home)&amp;quot; reversible=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;effect type=&amp;quot;EFFECT&amp;quot; other_attributes /&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
  &amp;lt;effect type=&amp;quot;EFFECT&amp;quot; other_attributes /&amp;gt;&lt;br /&gt;
&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
The type can be one of the following:&lt;br /&gt;
; WindowOpen &lt;br /&gt;
: Performed once only when the window is opened. &lt;br /&gt;
; WindowClose &lt;br /&gt;
: Performed once only when the window is closed. No animation is performed when switching to fullscreen video, however. &lt;br /&gt;
;Visible &lt;br /&gt;
:Performed when the control becomes visible via its &amp;lt;visible&amp;gt; tag. &lt;br /&gt;
; Hidden &lt;br /&gt;
: Performed when the control becomes hidden via its &amp;lt;visible&amp;gt; tag. &lt;br /&gt;
; Focus &lt;br /&gt;
: Performed when the control gains focus. &lt;br /&gt;
; Unfocus &lt;br /&gt;
: Performed when the control loses focus.&lt;br /&gt;
; Conditional &lt;br /&gt;
: Performed when the control&#039;s condition attribute is filled. &lt;br /&gt;
; VisibleChange &lt;br /&gt;
: The same as the Visible type, except the reverse animation is auto-created for the Hidden type. Just saves having to have both animations if the animation is the same in both directions (ie just reversed)&lt;br /&gt;
&lt;br /&gt;
=== Attributes ===&lt;br /&gt;
The attributes available are as follows. Note that all attributes, like tags, are case sensitive&lt;br /&gt;
; effect &lt;br /&gt;
: Specifies the effect to use. Currently “fade”, fadediffuse, “slide”, “rotate”, &amp;quot;rotatex&amp;quot;, &amp;quot;rotatey&amp;quot;, and “zoom” are supported.&lt;br /&gt;
: fade - influences the opaqueness&lt;br /&gt;
: fadediffuse - influences the opaqueness and color&lt;br /&gt;
: rotatex - rotates a control around the X-Axis (horizontal)&lt;br /&gt;
: rotatey - rotates a control around the Y-Axis (vertical)&lt;br /&gt;
: rotate - rotates a control around the Z-Axis&lt;br /&gt;
: slide - translates the control&lt;br /&gt;
: zoom - magnifies/minifies the control&lt;br /&gt;
; time : &lt;br /&gt;
Specifies the length of time that the animation will run, in milliseconds. &lt;br /&gt;
; delay &lt;br /&gt;
: The time to delay the transistion before starting it, in milliseconds. &lt;br /&gt;
; start &lt;br /&gt;
: The start state of the control for this transistion. &lt;br /&gt;
:* For fades, this is the opaqueness as a percentage (ie start=&amp;quot;100&amp;quot; is fully opaque, start=&amp;quot;0&amp;quot; is fully transparent). &lt;br /&gt;
:* For diffuse fades, this is the color as a &amp;quot;AARRGGBB&amp;quot; (ie start=&amp;quot;FFFF0000&amp;quot; is fully red opaque; start=&amp;quot;7F00FF00&amp;quot; is green, half transparent). &lt;br /&gt;
:* For slides, this is the relative coordinate offset to start the control at (ie start=&amp;quot;50,60&amp;quot; will start the control off at 50 pixels to the right, and 60 pixels below it&#039;s normal viewing position). &lt;br /&gt;
:* For rotates, this is the starting degree offset from the horizontal. (ie start=&amp;quot;30&amp;quot; will start the control off on an angle of 30 degrees from the horizontal). &lt;br /&gt;
:* For zooms, this is the starting size as a percentage. (ie start=&amp;quot;50,60&amp;quot; will start the control at 50% of it&#039;s horizontal size and 60% of it&#039;s vertical size). &lt;br /&gt;
:Note: With zooms you can also specify the coordinates and dimensions of the texture. (ie start=&amp;quot;left,top,width,height&amp;quot;).&lt;br /&gt;
; end &lt;br /&gt;
: The end state of the control for this transistion. Similar to the start state, except that the end state is always kept after the animation is finished, and until the control changes its state. &lt;br /&gt;
; acceleration &lt;br /&gt;
: Amount to accelerate or decelerate during a “slide”, “zoom” or “rotate” transistion. For deceleration, use a negative value. A value of -1 will cause the control to come to rest at its end coordinates. Defaults to 0. (Also see the tween attribute)&lt;br /&gt;
; center &lt;br /&gt;
: Center of the rotation or zoom to perform with a “rotate” or “zoom” transistion. This is the coordinates about which the rotation or zoom will take place. eg center=&amp;quot;30,50” will mean that all points will revolve around (or zoom from) the (30,50) pixel location. You can set center=&amp;quot;auto&amp;quot; to have Kodi automatically zoom from the center of the control.&lt;br /&gt;
: Center shifts the rotational axis at the level, rotatex - center=&amp;quot;y,z&amp;quot; coordinates, rotatey - center=&amp;quot;x,z&amp;quot; coordinates, rotate - center=&amp;quot;x,y&amp;quot; coordinates&lt;br /&gt;
; condition&lt;br /&gt;
: The conditions under which this animation should be performed. Defaults to being always performed. [[Conditional Visibility|See here for a list of valid conditionals.]]&lt;br /&gt;
; reversible &lt;br /&gt;
: If “false” the animation is not reversed if it is interrupted when it is finished. For instance a Visible animation will normally be reversed (instead of running the Hidden animation) if the control becomes hidden before the visible animation has finished. Setting reversible=&amp;quot;false” prevents this behaviour (the Hidden animation will take its place). Defaults to true.&lt;br /&gt;
; loop&lt;br /&gt;
: If “true” will make your animation loop. (jump back to the start after it reaches the end)&lt;br /&gt;
; pulse &lt;br /&gt;
: If “true” will make your animation pulse. (Bounce back from start to end to start to end .........)&lt;br /&gt;
; tween&lt;br /&gt;
: Tween is like an advanced acceleration attribute that can be applied to all animations. Instead of a steady acceleration or deceleration, you can specify curves that the animation should follow. Currently, the engine supports “elastic“, “bounce“, “circle“, “back“, “sine“, “cubic“, “quadratic“ and, the default, “linear“. [[Tweeners|More information about Tweeners]]&lt;br /&gt;
; easing&lt;br /&gt;
: Easing basically defines the direction of the tween and can be one of “out“, “inout“ and “in“. The default value is “out“. [[Tweeners|More information about Easing]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;visible&amp;gt;Player.HasAudio&amp;lt;/visible&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;400&amp;quot;&amp;gt;VisibleChange&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This causes Kodi to fade the control in 400 milliseconds between the visible and hidden states. The control will start off hidden, and will fade in over 400ms when you play audio, and when it&#039;s finished, it will fade out again over 400ms.&lt;br /&gt;
----&lt;br /&gt;
You can also specify different transistion times for transistioning in and out as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;100&amp;quot;&amp;gt;WindowOpen&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;1000&amp;quot;&amp;gt;WindowClose&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This, when used as the animation tag for the ~MusicOSD dialog, will cause it to fade in quickly (in 100ms) when activated and the fade out again slowly (in 1 second (1000ms)) when it&#039;s cancelled.&lt;br /&gt;
----&lt;br /&gt;
You can also specify that a control should always fade in when the window is opened by using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;WindowOpen&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This specifies that it will always start hidden, but will fade in immediately (over a time of 200ms) when the window is opened.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
There is also ability to add delays preceding the transistions. For instance&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;200&amp;quot; delay=&amp;quot;200&amp;quot;&amp;gt;Hidden&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
would mean that the control will fade out after a delay of 200ms. This is useful for &amp;quot;crossfade&amp;quot; effects, where you want the new control to fade in while the old control is still on screen (and then fade the old one out once the new one is completely opaque).&lt;br /&gt;
----&lt;br /&gt;
There are also slide effects available.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;slide&amp;quot; end=&amp;quot;30,0&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;Focus&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will slide the control 30 pixels to the right of its normal position when it becomes focused. Note that when it becomes unfocused it will jump back to it&#039;s normal position. A Unfocus animation will make it slide back gracefully.&lt;br /&gt;
----&lt;br /&gt;
There are also rotate effects available.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;rotate&amp;quot; end=&amp;quot;30&amp;quot; center=&amp;quot;360,288&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;Focus&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will rotate the control 30 degrees counter clockwise about the center of a PAL screen (360,288) when the control becomes focused.&lt;br /&gt;
----&lt;br /&gt;
And we also have zoom effects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;zoom&amp;quot; end=&amp;quot;120&amp;quot; center=&amp;quot;360,288&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;Focus&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will zoom the control to 120% of its normal size when the control becomes focused, with the zoom centered at the center of a PAL screen (360,288). You can zoom each dimension by different amounts (effectively a stretch operation) as well. To stretch a control an extra 50% horizontally when focused, we can use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;zoom&amp;quot; end=&amp;quot;150,100&amp;quot; center=&amp;quot;360,288&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;Focus&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
An example of a condition attribute is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;slide&amp;quot; start=&amp;quot;-120,0&amp;quot; time=&amp;quot;200&amp;quot; condition=&amp;quot;Window.Previous(Home)&amp;quot;&amp;gt;WindowOpen&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the slide animation to only be performed if you are coming to this window from the Home window.&lt;br /&gt;
----&lt;br /&gt;
An example of a Conditional animation type is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;slide&amp;quot; start=&amp;quot;-120,0&amp;quot; time=&amp;quot;200&amp;quot; condition=&amp;quot;Control.HasFocus(2)&amp;quot;&amp;gt;Conditional&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the slide animation to only be performed when the control with the id of 2 gains focus.&lt;br /&gt;
----&lt;br /&gt;
An example of a fade animation with a pulse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; start=&amp;quot;20&amp;quot; time=&amp;quot;200&amp;quot; condition=&amp;quot;Control.HasFocus(2)&amp;quot; pulse=&amp;quot;true&amp;quot;&amp;gt;Conditional&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the control to start at 20% opacity and fade to full in 200 milliseconds and fade back to 20% opacity and keeping looping in that fashion&lt;br /&gt;
----&lt;br /&gt;
An example of two animations at once:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation type=&amp;quot;WindowOpen&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;effect type=&amp;quot;fade&amp;quot; start=&amp;quot;0&amp;quot; end=&amp;quot;100&amp;quot; time=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;effect type=&amp;quot;zoom&amp;quot; end=&amp;quot;150,100&amp;quot; center=&amp;quot;auto&amp;quot; time=&amp;quot;200&amp;quot; delay=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the control to fade in over 200 ms, then zoom to 150% it&#039;s width from the center of the control.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
== See also ==&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Animating_your_skin&amp;diff=242317</id>
		<title>Animating your skin</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Animating_your_skin&amp;diff=242317"/>
		<updated>2022-06-26T13:29:56Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: /* Attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]|[[Skinning]]}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
The Kodi skin engine has support for animations between control and window states. The animations are defined through use of the &amp;lt;animation&amp;gt; tag, which has a defined type and various attributes that specify the animation to be performed. All animations are additive – if two of them are in effect at the same time, their effects are added together. You may also have more than one animation of each type.&lt;br /&gt;
&lt;br /&gt;
== Window Animations ==&lt;br /&gt;
There are two valid window animations – the animation to perform when the window is opened, and the animation to perform when the window is closed. They take the same format as the control animations. You can, however, have more than one animation performed for the WindowOpen or WindowClose animation.&lt;br /&gt;
&lt;br /&gt;
== Control Animations ==&lt;br /&gt;
There are 6 valid control animations: WindowOpen, WindowClose, Visible, Hidden, Focus, and Unfocus. There is also a combination animation VisibleChange that constructs the Visible animation, then reverses it for the Hidden animation.&lt;br /&gt;
&lt;br /&gt;
== Format of Animation Tags ==&lt;br /&gt;
The animation tag is formatted as follows for a single animation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;EFFECT&amp;quot; attributes&amp;gt;TYPE&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and as follows for multiple animations:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation type=&amp;quot;TYPE&amp;quot; condition=&amp;quot;Window.IsActive(Home)&amp;quot; reversible=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;effect type=&amp;quot;EFFECT&amp;quot; other_attributes /&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
  &amp;lt;effect type=&amp;quot;EFFECT&amp;quot; other_attributes /&amp;gt;&lt;br /&gt;
&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
The type can be one of the following:&lt;br /&gt;
; WindowOpen &lt;br /&gt;
: Performed once only when the window is opened. &lt;br /&gt;
; WindowClose &lt;br /&gt;
: Performed once only when the window is closed. No animation is performed when switching to fullscreen video, however. &lt;br /&gt;
;Visible &lt;br /&gt;
:Performed when the control becomes visible via its &amp;lt;visible&amp;gt; tag. &lt;br /&gt;
; Hidden &lt;br /&gt;
: Performed when the control becomes hidden via its &amp;lt;visible&amp;gt; tag. &lt;br /&gt;
; Focus &lt;br /&gt;
: Performed when the control gains focus. &lt;br /&gt;
; Unfocus &lt;br /&gt;
: Performed when the control loses focus.&lt;br /&gt;
; Conditional &lt;br /&gt;
: Performed when the control&#039;s condition attribute is filled. &lt;br /&gt;
; VisibleChange &lt;br /&gt;
: The same as the Visible type, except the reverse animation is auto-created for the Hidden type. Just saves having to have both animations if the animation is the same in both directions (ie just reversed)&lt;br /&gt;
&lt;br /&gt;
=== Attributes ===&lt;br /&gt;
The attributes available are as follows. Note that all attributes, like tags, are case sensitive&lt;br /&gt;
; effect &lt;br /&gt;
: Specifies the effect to use. Currently “fade”, fadediffuse, “slide”, “rotate”, &amp;quot;rotatex&amp;quot;, &amp;quot;rotatey&amp;quot;, and “zoom” are supported.&lt;br /&gt;
: rotatex - rotates a control around the X-Axis (horizontal)&lt;br /&gt;
: rotatey - rotates a control around the Y-Axis (vertical)&lt;br /&gt;
: rotate - rotates a control around the Z-Axis&lt;br /&gt;
; time : &lt;br /&gt;
Specifies the length of time that the animation will run, in milliseconds. &lt;br /&gt;
; delay &lt;br /&gt;
: The time to delay the transistion before starting it, in milliseconds. &lt;br /&gt;
; start &lt;br /&gt;
: The start state of the control for this transistion. &lt;br /&gt;
:* For fades, this is the opaqueness as a percentage (ie start=&amp;quot;100&amp;quot; is fully opaque, start=&amp;quot;0&amp;quot; is fully transparent). &lt;br /&gt;
:* For diffuse fades, this is the color as a &amp;quot;AARRGGBB&amp;quot; (ie start=&amp;quot;FFFF0000&amp;quot; is fully red opaque; start=&amp;quot;7F00FF00&amp;quot; is green, half transparent). &lt;br /&gt;
:* For slides, this is the relative coordinate offset to start the control at (ie start=&amp;quot;50,60&amp;quot; will start the control off at 50 pixels to the right, and 60 pixels below it&#039;s normal viewing position). &lt;br /&gt;
:* For rotates, this is the starting degree offset from the horizontal. (ie start=&amp;quot;30&amp;quot; will start the control off on an angle of 30 degrees from the horizontal). &lt;br /&gt;
:* For zooms, this is the starting size as a percentage. (ie start=&amp;quot;50,60&amp;quot; will start the control at 50% of it&#039;s horizontal size and 60% of it&#039;s vertical size). &lt;br /&gt;
:Note: With zooms you can also specify the coordinates and dimensions of the texture. (ie start=&amp;quot;left,top,width,height&amp;quot;).&lt;br /&gt;
; end &lt;br /&gt;
: The end state of the control for this transistion. Similar to the start state, except that the end state is always kept after the animation is finished, and until the control changes its state. &lt;br /&gt;
; acceleration &lt;br /&gt;
: Amount to accelerate or decelerate during a “slide”, “zoom” or “rotate” transistion. For deceleration, use a negative value. A value of -1 will cause the control to come to rest at its end coordinates. Defaults to 0. (Also see the tween attribute)&lt;br /&gt;
; center &lt;br /&gt;
: Center of the rotation or zoom to perform with a “rotate” or “zoom” transistion. This is the coordinates about which the rotation or zoom will take place. eg center=&amp;quot;30,50” will mean that all points will revolve around (or zoom from) the (30,50) pixel location. You can set center=&amp;quot;auto&amp;quot; to have Kodi automatically zoom from the center of the control.&lt;br /&gt;
: Center shifts the rotational axis at the level, rotatex - center=&amp;quot;y,z&amp;quot; coordinates, rotatey - center=&amp;quot;x,z&amp;quot; coordinates, rotate - center=&amp;quot;x,y&amp;quot; coordinates&lt;br /&gt;
; condition&lt;br /&gt;
: The conditions under which this animation should be performed. Defaults to being always performed. [[Conditional Visibility|See here for a list of valid conditionals.]]&lt;br /&gt;
; reversible &lt;br /&gt;
: If “false” the animation is not reversed if it is interrupted when it is finished. For instance a Visible animation will normally be reversed (instead of running the Hidden animation) if the control becomes hidden before the visible animation has finished. Setting reversible=&amp;quot;false” prevents this behaviour (the Hidden animation will take its place). Defaults to true.&lt;br /&gt;
; loop&lt;br /&gt;
: If “true” will make your animation loop. (jump back to the start after it reaches the end)&lt;br /&gt;
; pulse &lt;br /&gt;
: If “true” will make your animation pulse. (Bounce back from start to end to start to end .........)&lt;br /&gt;
; tween&lt;br /&gt;
: Tween is like an advanced acceleration attribute that can be applied to all animations. Instead of a steady acceleration or deceleration, you can specify curves that the animation should follow. Currently, the engine supports “elastic“, “bounce“, “circle“, “back“, “sine“, “cubic“, “quadratic“ and, the default, “linear“. [[Tweeners|More information about Tweeners]]&lt;br /&gt;
; easing&lt;br /&gt;
: Easing basically defines the direction of the tween and can be one of “out“, “inout“ and “in“. The default value is “out“. [[Tweeners|More information about Easing]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;visible&amp;gt;Player.HasAudio&amp;lt;/visible&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;400&amp;quot;&amp;gt;VisibleChange&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This causes Kodi to fade the control in 400 milliseconds between the visible and hidden states. The control will start off hidden, and will fade in over 400ms when you play audio, and when it&#039;s finished, it will fade out again over 400ms.&lt;br /&gt;
----&lt;br /&gt;
You can also specify different transistion times for transistioning in and out as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;100&amp;quot;&amp;gt;WindowOpen&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;1000&amp;quot;&amp;gt;WindowClose&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This, when used as the animation tag for the ~MusicOSD dialog, will cause it to fade in quickly (in 100ms) when activated and the fade out again slowly (in 1 second (1000ms)) when it&#039;s cancelled.&lt;br /&gt;
----&lt;br /&gt;
You can also specify that a control should always fade in when the window is opened by using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;WindowOpen&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This specifies that it will always start hidden, but will fade in immediately (over a time of 200ms) when the window is opened.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
There is also ability to add delays preceding the transistions. For instance&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;200&amp;quot; delay=&amp;quot;200&amp;quot;&amp;gt;Hidden&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
would mean that the control will fade out after a delay of 200ms. This is useful for &amp;quot;crossfade&amp;quot; effects, where you want the new control to fade in while the old control is still on screen (and then fade the old one out once the new one is completely opaque).&lt;br /&gt;
----&lt;br /&gt;
There are also slide effects available.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;slide&amp;quot; end=&amp;quot;30,0&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;Focus&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will slide the control 30 pixels to the right of its normal position when it becomes focused. Note that when it becomes unfocused it will jump back to it&#039;s normal position. A Unfocus animation will make it slide back gracefully.&lt;br /&gt;
----&lt;br /&gt;
There are also rotate effects available.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;rotate&amp;quot; end=&amp;quot;30&amp;quot; center=&amp;quot;360,288&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;Focus&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will rotate the control 30 degrees counter clockwise about the center of a PAL screen (360,288) when the control becomes focused.&lt;br /&gt;
----&lt;br /&gt;
And we also have zoom effects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;zoom&amp;quot; end=&amp;quot;120&amp;quot; center=&amp;quot;360,288&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;Focus&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will zoom the control to 120% of its normal size when the control becomes focused, with the zoom centered at the center of a PAL screen (360,288). You can zoom each dimension by different amounts (effectively a stretch operation) as well. To stretch a control an extra 50% horizontally when focused, we can use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;zoom&amp;quot; end=&amp;quot;150,100&amp;quot; center=&amp;quot;360,288&amp;quot; time=&amp;quot;200&amp;quot;&amp;gt;Focus&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
An example of a condition attribute is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;slide&amp;quot; start=&amp;quot;-120,0&amp;quot; time=&amp;quot;200&amp;quot; condition=&amp;quot;Window.Previous(Home)&amp;quot;&amp;gt;WindowOpen&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the slide animation to only be performed if you are coming to this window from the Home window.&lt;br /&gt;
----&lt;br /&gt;
An example of a Conditional animation type is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;slide&amp;quot; start=&amp;quot;-120,0&amp;quot; time=&amp;quot;200&amp;quot; condition=&amp;quot;Control.HasFocus(2)&amp;quot;&amp;gt;Conditional&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the slide animation to only be performed when the control with the id of 2 gains focus.&lt;br /&gt;
----&lt;br /&gt;
An example of a fade animation with a pulse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation effect=&amp;quot;fade&amp;quot; start=&amp;quot;20&amp;quot; time=&amp;quot;200&amp;quot; condition=&amp;quot;Control.HasFocus(2)&amp;quot; pulse=&amp;quot;true&amp;quot;&amp;gt;Conditional&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the control to start at 20% opacity and fade to full in 200 milliseconds and fade back to 20% opacity and keeping looping in that fashion&lt;br /&gt;
----&lt;br /&gt;
An example of two animations at once:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animation type=&amp;quot;WindowOpen&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;effect type=&amp;quot;fade&amp;quot; start=&amp;quot;0&amp;quot; end=&amp;quot;100&amp;quot; time=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;effect type=&amp;quot;zoom&amp;quot; end=&amp;quot;150,100&amp;quot; center=&amp;quot;auto&amp;quot; time=&amp;quot;200&amp;quot; delay=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the control to fade in over 200 ms, then zoom to 150% it&#039;s width from the center of the control.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
== See also ==&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Skin_Optimizations&amp;diff=242230</id>
		<title>Skin Optimizations</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Skin_Optimizations&amp;diff=242230"/>
		<updated>2022-06-09T14:49:12Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: /* Overdraw */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Skinning]]}}&lt;br /&gt;
== Why to optimize skins ==&lt;br /&gt;
While the PC the skin is written on might be fast enough to render the GUI at 4k/60fps, it might be too expensive to run on lower end hardware. This page will give examples how to optimize skins, focusing on GPU performance.&lt;br /&gt;
&lt;br /&gt;
In general, the two most important resources on the GPU are memory bandwidth and computing power. Different systems might show different bottlenecks to render the GUI, but the following topics should help both.&lt;br /&gt;
&lt;br /&gt;
== Analysis via Renderdoc ==&lt;br /&gt;
It is highly advised to use a tool like Renderdoc, a debugging program for computer graphics. While it offers a lot of features for graphics developers, it is also suitable for skinners to check for issues in the GUI layer compositing. With Renderdoc, the amount of overdraw can easily be judged.&lt;br /&gt;
&lt;br /&gt;
A tutorial how it can aid in skin development can be found [[Debugging_via_Renderdoc|here]].&lt;br /&gt;
&lt;br /&gt;
== Overdraw ==&lt;br /&gt;
&lt;br /&gt;
An important metric for performance evaluation is the amount of overdraw. Overdraw defines how many times a pixel gets rendered to, averaging across the whole screen. Using lots of layers increases the rendering costs. In order to have a performance target, a value should be picked when designing the skin. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Typical overdraw values&lt;br /&gt;
|-&lt;br /&gt;
! Performance target !! Permissible Overdraw&lt;br /&gt;
|-&lt;br /&gt;
| Raspberry Pi 3, 1080p60 || 2.5&lt;br /&gt;
|-&lt;br /&gt;
| Raspberry Pi 4, 1080p60 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Odroid C2, 1080p60 || 4.5&lt;br /&gt;
|-&lt;br /&gt;
| Intel HD 610, 1080p60 || 7&lt;br /&gt;
|-&lt;br /&gt;
| Intel HD 630, 2160p60 || 2.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please take all of the values with a great pinch of salt. The actual value might vary when the system is busy, like when playing a video or rendering a visualization. Overdraw should be seen as a guide to keep the whole GUI experience consistent.&lt;br /&gt;
&lt;br /&gt;
Also, the performance target can be set lower when doing animations transitioning between menus. This will result in stutter on low-end systems during the transition, but the user experience is fine otherwise. On systems where the video is rendered via the GPU (Intel and similar &amp;quot;desktop&amp;quot; systems), this might be more noticable.&lt;br /&gt;
&lt;br /&gt;
As an example, a target of 3.5 permits the usage of one background layer (fanart) with one texture filter on top, while still leaving 1.5 pixel draws for UI elements.&lt;br /&gt;
&lt;br /&gt;
For comparison, the overdraw for the Estuary movie home screen is about 4.2, while the amount for Confluence is about 1.8.&lt;br /&gt;
&lt;br /&gt;
== Reducing layer counts ==&lt;br /&gt;
&lt;br /&gt;
While Kodi can render dozens of layers on top of each other, each layer consumes quite a bit of rendering resources. The overall goal should be to use as few layers as possible. &lt;br /&gt;
&lt;br /&gt;
Typically, the most performance gains can be made by reducing the full-screen layers, but this is not exclusive to them.&lt;br /&gt;
&lt;br /&gt;
=== Diffuse texture usage ===&lt;br /&gt;
The skinning engine has the ability to apply diffuse textures. While it might be tempting to get the same effect via a separate texture, it is faster. &lt;br /&gt;
&lt;br /&gt;
[[Texture_Attributes|See here for additional information.]]&lt;br /&gt;
=== Coloring via diffusecolors ===&lt;br /&gt;
In a lot of skins, coloring/shading is done by applying a white, featureless texture with a diffuse color to do color filtering. Most often, the same/similar effect can be obtained by applying the diffuse color to the underlying layer, so a whole layer can be saved.&lt;br /&gt;
&lt;br /&gt;
With Kodi 20 (Nexus), it will even be possible to animate the diffuse color (see https://github.com/xbmc/xbmc/pull/21400).&lt;br /&gt;
&lt;br /&gt;
=== Squashing filter layers ===&lt;br /&gt;
In a lot of skins, various shadow effects get applied to the fanart in the background. Most often, such effects can be combined together into one texture to achieve a very similar effect. &lt;br /&gt;
&lt;br /&gt;
Combined into a diffuse texture, such savings could halve the rendering cost for some skins.&lt;br /&gt;
&lt;br /&gt;
=== Disabling invisible layers ===&lt;br /&gt;
Always disable occluded layers. Even though they have no impact on the final result, they still have to be processed and rendered. This wastes a lot of resources.&lt;br /&gt;
&lt;br /&gt;
=== Avoid presenting assets multiple times ===&lt;br /&gt;
Another pitfall is to present an asset (posters, fanart, ...) multiple times in the exact same location. While this has no or just a small impact on the output, it eats up resources.&lt;br /&gt;
&lt;br /&gt;
=== Usage of background color ===&lt;br /&gt;
If the skin uses a plain background color, set it via the &amp;lt;code&amp;gt;&amp;lt;backgroundcolor&amp;gt;&amp;lt;/code&amp;gt; tag instead of using an image spanning the whole screen. This saves a good amount of resources.&lt;br /&gt;
&lt;br /&gt;
[[Skinning_Manual#Window_Header|See here for additional information.]]&lt;br /&gt;
&lt;br /&gt;
== Misc improvements ==&lt;br /&gt;
Other optimization considerations.&lt;br /&gt;
&lt;br /&gt;
=== Proper asset sizes ===&lt;br /&gt;
One easy to solve issue is the use of too large assets. Check the resolution of the displayed icons. They should be suitably sized to the targeted rendering resolution (most often 1920x1080). When too large, it will result in increased usage of memory resources and in &#039;&#039;&#039;decreased&#039;&#039;&#039; image quality.&lt;br /&gt;
&lt;br /&gt;
For a lot of background effects, a smaller resolution texture might be used. Often enough, just 1/4th of the target resolution might do the trick (e.g. 960x540), especially when there are multiple layers.&lt;br /&gt;
&lt;br /&gt;
=== Avoid infill by border textures ===&lt;br /&gt;
If a &amp;lt;code&amp;gt;bordertexture&amp;lt;/code&amp;gt; with a transparent center is used, the GUI can be informed via &amp;lt;code&amp;gt;infill=&amp;quot;false&amp;quot;&amp;lt;/code&amp;gt; that it does not have to be rendered.&lt;br /&gt;
&lt;br /&gt;
[[Image_Control#Available_tags_and_attributes|See here for additional information.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoid almost opaque elements ===&lt;br /&gt;
Consider using opaque elements instead of barely transparent ones. Especially on modern GPU&#039;s, this avoids rendering everything below such an element.&lt;br /&gt;
&lt;br /&gt;
=== Don&#039;t include unnecessary alpha layers in textures ===&lt;br /&gt;
Including an alpha layer in a texture implies that it is used, even if the texture is fully opaque. The GUI has to treat such an element as transparent, with all the associated costs.&lt;br /&gt;
&lt;br /&gt;
=== Use single channel textures if possible ===&lt;br /&gt;
A lot of GUI assets included in skins are delivered in a RGB format, even when they are greyscale. A single channel format saves disk space and might even reduce memory bandwidth in the future. Such textures can be colored by a &amp;lt;code&amp;gt;diffusecolor&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin_development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Skin_Optimizations&amp;diff=242229</id>
		<title>Skin Optimizations</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Skin_Optimizations&amp;diff=242229"/>
		<updated>2022-06-09T14:47:48Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: /* Reducing layer counts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Skinning]]}}&lt;br /&gt;
== Why to optimize skins ==&lt;br /&gt;
While the PC the skin is written on might be fast enough to render the GUI at 4k/60fps, it might be too expensive to run on lower end hardware. This page will give examples how to optimize skins, focusing on GPU performance.&lt;br /&gt;
&lt;br /&gt;
In general, the two most important resources on the GPU are memory bandwidth and computing power. Different systems might show different bottlenecks to render the GUI, but the following topics should help both.&lt;br /&gt;
&lt;br /&gt;
== Analysis via Renderdoc ==&lt;br /&gt;
It is highly advised to use a tool like Renderdoc, a debugging program for computer graphics. While it offers a lot of features for graphics developers, it is also suitable for skinners to check for issues in the GUI layer compositing. With Renderdoc, the amount of overdraw can easily be judged.&lt;br /&gt;
&lt;br /&gt;
A tutorial how it can aid in skin development can be found [[Debugging_via_Renderdoc|here]].&lt;br /&gt;
&lt;br /&gt;
== Overdraw ==&lt;br /&gt;
&lt;br /&gt;
An important metric for performance evaluation is the amount of overdraw. Overdraw defines how many times a pixel gets rendered to, averaging across the whole screen. Using lots of layers increases the rendering costs. In order to have a performance target, a value should be picked when designing the skin. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Typical overdraw values&lt;br /&gt;
|-&lt;br /&gt;
! Performance target !! Permissible Overdraw&lt;br /&gt;
|-&lt;br /&gt;
| Raspberry Pi 3, 1080p60 || 2.5&lt;br /&gt;
|-&lt;br /&gt;
| Raspberry Pi 4, 1080p60 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Odroid C2, 1080p60 || 4.5&lt;br /&gt;
|-&lt;br /&gt;
| Intel HD 610, 1080p60 || 7&lt;br /&gt;
|-&lt;br /&gt;
| Intel HD 630, 2160p60 || 2.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please take all of the values with a great pinch of salt. The actual value might vary when the system is busy, like when playing a video or rendering a visualization. Overdraw should be seen as a guide to keep the whole GUI experience consistent.&lt;br /&gt;
&lt;br /&gt;
Also, the performance target can be set lower when doing animations transitioning between menus. This will result in stutter on low-end systems during the transition, but the user experience is fine otherwise. On systems where the video is rendered via the GPU (Intel and similar &amp;quot;desktop&amp;quot; systems), this might be more noticable.&lt;br /&gt;
&lt;br /&gt;
As an example, a target of 3.5 permits the usage of one background layer (fanart) with one texture filter on top, while still leaving 1.5 pixel draws for UI elements.&lt;br /&gt;
&lt;br /&gt;
For comparison, the overdraw for The Estuary movie screen is about 4.2, while the amount for Confluence is about 1.8.&lt;br /&gt;
&lt;br /&gt;
== Reducing layer counts ==&lt;br /&gt;
&lt;br /&gt;
While Kodi can render dozens of layers on top of each other, each layer consumes quite a bit of rendering resources. The overall goal should be to use as few layers as possible. &lt;br /&gt;
&lt;br /&gt;
Typically, the most performance gains can be made by reducing the full-screen layers, but this is not exclusive to them.&lt;br /&gt;
&lt;br /&gt;
=== Diffuse texture usage ===&lt;br /&gt;
The skinning engine has the ability to apply diffuse textures. While it might be tempting to get the same effect via a separate texture, it is faster. &lt;br /&gt;
&lt;br /&gt;
[[Texture_Attributes|See here for additional information.]]&lt;br /&gt;
=== Coloring via diffusecolors ===&lt;br /&gt;
In a lot of skins, coloring/shading is done by applying a white, featureless texture with a diffuse color to do color filtering. Most often, the same/similar effect can be obtained by applying the diffuse color to the underlying layer, so a whole layer can be saved.&lt;br /&gt;
&lt;br /&gt;
With Kodi 20 (Nexus), it will even be possible to animate the diffuse color (see https://github.com/xbmc/xbmc/pull/21400).&lt;br /&gt;
&lt;br /&gt;
=== Squashing filter layers ===&lt;br /&gt;
In a lot of skins, various shadow effects get applied to the fanart in the background. Most often, such effects can be combined together into one texture to achieve a very similar effect. &lt;br /&gt;
&lt;br /&gt;
Combined into a diffuse texture, such savings could halve the rendering cost for some skins.&lt;br /&gt;
&lt;br /&gt;
=== Disabling invisible layers ===&lt;br /&gt;
Always disable occluded layers. Even though they have no impact on the final result, they still have to be processed and rendered. This wastes a lot of resources.&lt;br /&gt;
&lt;br /&gt;
=== Avoid presenting assets multiple times ===&lt;br /&gt;
Another pitfall is to present an asset (posters, fanart, ...) multiple times in the exact same location. While this has no or just a small impact on the output, it eats up resources.&lt;br /&gt;
&lt;br /&gt;
=== Usage of background color ===&lt;br /&gt;
If the skin uses a plain background color, set it via the &amp;lt;code&amp;gt;&amp;lt;backgroundcolor&amp;gt;&amp;lt;/code&amp;gt; tag instead of using an image spanning the whole screen. This saves a good amount of resources.&lt;br /&gt;
&lt;br /&gt;
[[Skinning_Manual#Window_Header|See here for additional information.]]&lt;br /&gt;
&lt;br /&gt;
== Misc improvements ==&lt;br /&gt;
Other optimization considerations.&lt;br /&gt;
&lt;br /&gt;
=== Proper asset sizes ===&lt;br /&gt;
One easy to solve issue is the use of too large assets. Check the resolution of the displayed icons. They should be suitably sized to the targeted rendering resolution (most often 1920x1080). When too large, it will result in increased usage of memory resources and in &#039;&#039;&#039;decreased&#039;&#039;&#039; image quality.&lt;br /&gt;
&lt;br /&gt;
For a lot of background effects, a smaller resolution texture might be used. Often enough, just 1/4th of the target resolution might do the trick (e.g. 960x540), especially when there are multiple layers.&lt;br /&gt;
&lt;br /&gt;
=== Avoid infill by border textures ===&lt;br /&gt;
If a &amp;lt;code&amp;gt;bordertexture&amp;lt;/code&amp;gt; with a transparent center is used, the GUI can be informed via &amp;lt;code&amp;gt;infill=&amp;quot;false&amp;quot;&amp;lt;/code&amp;gt; that it does not have to be rendered.&lt;br /&gt;
&lt;br /&gt;
[[Image_Control#Available_tags_and_attributes|See here for additional information.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoid almost opaque elements ===&lt;br /&gt;
Consider using opaque elements instead of barely transparent ones. Especially on modern GPU&#039;s, this avoids rendering everything below such an element.&lt;br /&gt;
&lt;br /&gt;
=== Don&#039;t include unnecessary alpha layers in textures ===&lt;br /&gt;
Including an alpha layer in a texture implies that it is used, even if the texture is fully opaque. The GUI has to treat such an element as transparent, with all the associated costs.&lt;br /&gt;
&lt;br /&gt;
=== Use single channel textures if possible ===&lt;br /&gt;
A lot of GUI assets included in skins are delivered in a RGB format, even when they are greyscale. A single channel format saves disk space and might even reduce memory bandwidth in the future. Such textures can be colored by a &amp;lt;code&amp;gt;diffusecolor&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin_development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Skin_Optimizations&amp;diff=242228</id>
		<title>Skin Optimizations</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Skin_Optimizations&amp;diff=242228"/>
		<updated>2022-06-08T07:45:59Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: /* Analysis via Renderdoc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Skinning]]}}&lt;br /&gt;
== Why to optimize skins ==&lt;br /&gt;
While the PC the skin is written on might be fast enough to render the GUI at 4k/60fps, it might be too expensive to run on lower end hardware. This page will give examples how to optimize skins, focusing on GPU performance.&lt;br /&gt;
&lt;br /&gt;
In general, the two most important resources on the GPU are memory bandwidth and computing power. Different systems might show different bottlenecks to render the GUI, but the following topics should help both.&lt;br /&gt;
&lt;br /&gt;
== Analysis via Renderdoc ==&lt;br /&gt;
It is highly advised to use a tool like Renderdoc, a debugging program for computer graphics. While it offers a lot of features for graphics developers, it is also suitable for skinners to check for issues in the GUI layer compositing. With Renderdoc, the amount of overdraw can easily be judged.&lt;br /&gt;
&lt;br /&gt;
A tutorial how it can aid in skin development can be found [[Debugging_via_Renderdoc|here]].&lt;br /&gt;
&lt;br /&gt;
== Overdraw ==&lt;br /&gt;
&lt;br /&gt;
An important metric for performance evaluation is the amount of overdraw. Overdraw defines how many times a pixel gets rendered to, averaging across the whole screen. Using lots of layers increases the rendering costs. In order to have a performance target, a value should be picked when designing the skin. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Typical overdraw values&lt;br /&gt;
|-&lt;br /&gt;
! Performance target !! Permissible Overdraw&lt;br /&gt;
|-&lt;br /&gt;
| Raspberry Pi 3, 1080p60 || 2.5&lt;br /&gt;
|-&lt;br /&gt;
| Raspberry Pi 4, 1080p60 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Odroid C2, 1080p60 || 4.5&lt;br /&gt;
|-&lt;br /&gt;
| Intel HD 610, 1080p60 || 7&lt;br /&gt;
|-&lt;br /&gt;
| Intel HD 630, 2160p60 || 2.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please take all of the values with a great pinch of salt. The actual value might vary when the system is busy, like when playing a video or rendering a visualization. Overdraw should be seen as a guide to keep the whole GUI experience consistent.&lt;br /&gt;
&lt;br /&gt;
Also, the performance target can be set lower when doing animations transitioning between menus. This will result in stutter on low-end systems during the transition, but the user experience is fine otherwise. On systems where the video is rendered via the GPU (Intel and similar &amp;quot;desktop&amp;quot; systems), this might be more noticable.&lt;br /&gt;
&lt;br /&gt;
As an example, a target of 3.5 permits the usage of one background layer (fanart) with one texture filter on top, while still leaving 1.5 pixel draws for UI elements.&lt;br /&gt;
&lt;br /&gt;
For comparison, the overdraw for The Estuary movie screen is about 4.2, while the amount for Confluence is about 1.8.&lt;br /&gt;
&lt;br /&gt;
== Reducing layer counts ==&lt;br /&gt;
&lt;br /&gt;
While Kodi can render dozens of layers on top of each other, each layer consumes quite a bit of rendering resources. The overall goal should be to use as few layers as possible. &lt;br /&gt;
&lt;br /&gt;
Typically, the most performance gains can be made by reducing the full-screen layers, but this is not exclusive to them.&lt;br /&gt;
&lt;br /&gt;
=== Diffuse texture usage ===&lt;br /&gt;
The skinning engine has the ability to apply diffuse textures. While it might be tempting to get the same effect via a separate texture, it is faster. &lt;br /&gt;
&lt;br /&gt;
[[Texture_Attributes|See here for additional information.]]&lt;br /&gt;
=== Coloring via diffusecolors ===&lt;br /&gt;
In a lot of skins, coloring/shading is done by applying a white, featureless texture with a diffuse color to do color filtering. Most often, the same/similar effect can be obtained by applying the diffuse color to the underlying layer, so a whole layer can be saved.&lt;br /&gt;
&lt;br /&gt;
With Kodi 20 (Nexus), it will even be possible to animate the diffuse color (see https://github.com/xbmc/xbmc/pull/21400).&lt;br /&gt;
&lt;br /&gt;
=== Squashing filter layers ===&lt;br /&gt;
In a lot of skins, various shadow effects get applied to the fanart in the background. Most often, such effects can be combined together into one texture to achieve a very similar effect. &lt;br /&gt;
&lt;br /&gt;
Combined into a diffuse texture, such savings could halve the rendering cost for some skins.&lt;br /&gt;
&lt;br /&gt;
=== Disabling invisible layers ===&lt;br /&gt;
Always disable occluded layers. Even though they have no impact on the final result, they still have to be processed and rendered. This wastes a lot of resources.&lt;br /&gt;
&lt;br /&gt;
=== Avoid presenting assets multiple times ===&lt;br /&gt;
Another pitfall is to present an asset (posters, fanart, ...) multiple times in the exact same location. While this has no or just a small impact on the ouptut, it eats up resources.&lt;br /&gt;
&lt;br /&gt;
== Misc improvements ==&lt;br /&gt;
Other optimization considerations.&lt;br /&gt;
&lt;br /&gt;
=== Proper asset sizes ===&lt;br /&gt;
One easy to solve issue is the use of too large assets. Check the resolution of the displayed icons. They should be suitably sized to the targeted rendering resolution (most often 1920x1080). When too large, it will result in increased usage of memory resources and in &#039;&#039;&#039;decreased&#039;&#039;&#039; image quality.&lt;br /&gt;
&lt;br /&gt;
For a lot of background effects, a smaller resolution texture might be used. Often enough, just 1/4th of the target resolution might do the trick (e.g. 960x540), especially when there are multiple layers.&lt;br /&gt;
&lt;br /&gt;
=== Avoid infill by border textures ===&lt;br /&gt;
If a &amp;lt;code&amp;gt;bordertexture&amp;lt;/code&amp;gt; with a transparent center is used, the GUI can be informed via &amp;lt;code&amp;gt;infill=&amp;quot;false&amp;quot;&amp;lt;/code&amp;gt; that it does not have to be rendered.&lt;br /&gt;
&lt;br /&gt;
[[Image_Control#Available_tags_and_attributes|See here for additional information.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoid almost opaque elements ===&lt;br /&gt;
Consider using opaque elements instead of barely transparent ones. Especially on modern GPU&#039;s, this avoids rendering everything below such an element.&lt;br /&gt;
&lt;br /&gt;
=== Don&#039;t include unnecessary alpha layers in textures ===&lt;br /&gt;
Including an alpha layer in a texture implies that it is used, even if the texture is fully opaque. The GUI has to treat such an element as transparent, with all the associated costs.&lt;br /&gt;
&lt;br /&gt;
=== Use single channel textures if possible ===&lt;br /&gt;
A lot of GUI assets included in skins are delivered in a RGB format, even when they are greyscale. A single channel format saves disk space and might even reduce memory bandwidth in the future. Such textures can be colored by a &amp;lt;code&amp;gt;diffusecolor&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin_development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Debugging_via_Renderdoc&amp;diff=242226</id>
		<title>Debugging via Renderdoc</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Debugging_via_Renderdoc&amp;diff=242226"/>
		<updated>2022-06-08T07:30:34Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: /* Capturing a frame */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Skinning]]}}&lt;br /&gt;
&lt;br /&gt;
== What&#039;s Renderdoc? ==&lt;br /&gt;
&lt;br /&gt;
Renderdoc (https://renderdoc.org/) is a free graphics debugger for OpenGL and DirectX. It can record, store and replay frames rendered by an application. It exposes a plethora of information related to the commands the GPU receives. &lt;br /&gt;
&lt;br /&gt;
The scope of this tutorial is to give you an idea how it can be used to debug Kodi skins.&lt;br /&gt;
&lt;br /&gt;
== Capturing a frame ==&lt;br /&gt;
&lt;br /&gt;
Firstly, it is highly recommended to disable [[Advancedsettings.xml#smartredraw|smart redraw]] and [[Advancedsettings.xml#algorithmdirtyregions|dirty regions]] in Kodi.&lt;br /&gt;
&lt;br /&gt;
Install and run Renderdoc. Go to the &amp;quot;Launch Application&amp;quot; tab, select the Kodi executable and click &amp;quot;Launch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:renderdoc_start.png]]&lt;br /&gt;
&lt;br /&gt;
Kodi should start up. Navigate to a view you want to analyze. In Renderdoc, select &amp;quot;Capture Frame(s) Immediately&amp;quot;. The capture should show up. Activate it via double click.&lt;br /&gt;
&lt;br /&gt;
[[File:renderdoc_capture.png]]&lt;br /&gt;
&lt;br /&gt;
You can save this capture for future reference.&lt;br /&gt;
&lt;br /&gt;
== Analyzing frame composition ==&lt;br /&gt;
&lt;br /&gt;
Select the &amp;quot;Texture Viewer&amp;quot; tab. In the &amp;quot;Event Browser&amp;quot; on the left hand side, extend the &amp;quot;Colour Pass&amp;quot; list on the left. There you can &#039;replay&#039; each draw command the GPU receives for this frame. On the main screen, you will see the state of the framebuffer at the selected GPU command.&lt;br /&gt;
&lt;br /&gt;
[[File:renderdoc_drawcalls.png]]&lt;br /&gt;
&lt;br /&gt;
On the right, you can switch to the input texture of the selected draw command. With a click on the thumbnail, it will show up on the main screen. The alpha channel is off by default, so some textures might look a bit odd.&lt;br /&gt;
&lt;br /&gt;
By right clicking on the main screen, the content of the selected pixel can be analyzed.&lt;br /&gt;
&lt;br /&gt;
== Overlays ==&lt;br /&gt;
Some overlays have relevance for Kodi. Select one with the dropdown menu.&lt;br /&gt;
&lt;br /&gt;
[[File:renderdoc_overlays.png]]&lt;br /&gt;
&lt;br /&gt;
=== Highlight Drawcall ===&lt;br /&gt;
Shows the boundary box of the selected draw call.&lt;br /&gt;
&lt;br /&gt;
=== Wireframe mesh ===&lt;br /&gt;
Shows the geometry the current selected draw call is using.&lt;br /&gt;
&lt;br /&gt;
=== Quad Overdraw (Pass) ===&lt;br /&gt;
Shows the accumulated amount of overdraw of the currently selected draw call. This is the most interesting overlay. It shows how many layers are making up the skin. The colors change with each layer applied. Right click on a pixel to see how many layers are drawn.&lt;br /&gt;
&lt;br /&gt;
[[File:renderdoc_overdraw.png]]&lt;br /&gt;
&lt;br /&gt;
Higher numbers should be investigated. See the Skin Optimization page for more info.&lt;br /&gt;
&lt;br /&gt;
== Performance estimation ==&lt;br /&gt;
&lt;br /&gt;
First of, any performance numbers gathered here are only indicative and might not reflect real world results. Numbers scale with current clock speed of the GPU. Memory bottlenecks are usually not encountered in this static test. Any results are only remotely comparative with other ones taken on the same system.&lt;br /&gt;
&lt;br /&gt;
Navigate to &amp;quot;Performance Counters&amp;quot;. If the tab is not shown, enable it via &amp;quot;Window&amp;quot;. Click &amp;quot;Capture counters&amp;quot;, select generic (or other metrics if available) and hit &amp;quot;Sample counters&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:renderdoc_performance.png]]&lt;br /&gt;
&lt;br /&gt;
On the result screen, &amp;quot;GPU Duration (µs)&amp;quot; and &amp;quot;PS Invocations&amp;quot; are the most interesting fields. The first one indicates how long the draw call has taken, the latter describes how many pixels where put out during the call. Double clicking a call will select it in the Event Browser. From here, you can hop into the Texture Viewer to see what&#039;s taking so long.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin_development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Debugging_via_Renderdoc&amp;diff=242223</id>
		<title>Debugging via Renderdoc</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Debugging_via_Renderdoc&amp;diff=242223"/>
		<updated>2022-06-07T21:33:18Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: Created page with &amp;quot;== What&amp;#039;s Renderdoc? ==  Renderdoc (https://renderdoc.org/) is a free graphics debugger for OpenGL and DirectX. It can record, store and replay frames rendered by an applicati...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What&#039;s Renderdoc? ==&lt;br /&gt;
&lt;br /&gt;
Renderdoc (https://renderdoc.org/) is a free graphics debugger for OpenGL and DirectX. It can record, store and replay frames rendered by an application. It exposes a plethora of information related to the commands the GPU receives. &lt;br /&gt;
&lt;br /&gt;
The scope of this tutorial is to give you an idea how it can be used to debug Kodi skins.&lt;br /&gt;
&lt;br /&gt;
== Capturing a frame ==&lt;br /&gt;
&lt;br /&gt;
Install and run Renderdoc. Go to the &amp;quot;Launch Application&amp;quot; tab, select the Kodi executable and click &amp;quot;Launch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:renderdoc_start.png]]&lt;br /&gt;
&lt;br /&gt;
Kodi should start up. Navigate to a view you want to analyze. In Renderdoc, select &amp;quot;Capture Frame(s) Immediately&amp;quot;. The capture should show up. Activate it via double click.&lt;br /&gt;
&lt;br /&gt;
[[File:renderdoc_capture.png]]&lt;br /&gt;
&lt;br /&gt;
You can save this capture for future reference.&lt;br /&gt;
&lt;br /&gt;
== Analyzing frame composition ==&lt;br /&gt;
&lt;br /&gt;
Select the &amp;quot;Texture Viewer&amp;quot; tab. In the &amp;quot;Event Browser&amp;quot; on the left hand side, extend the &amp;quot;Colour Pass&amp;quot; list on the left. There you can &#039;replay&#039; each draw command the GPU receives for this frame. On the main screen, you will see the state of the framebuffer at the selected GPU command.&lt;br /&gt;
&lt;br /&gt;
[[File:renderdoc_drawcalls.png]]&lt;br /&gt;
&lt;br /&gt;
On the right, you can switch to the input texture of the selected draw command. With a click on the thumbnail, it will show up on the main screen. The alpha channel is off by default, so some textures might look a bit odd.&lt;br /&gt;
&lt;br /&gt;
By right clicking on the main screen, the content of the selected pixel can be analyzed.&lt;br /&gt;
&lt;br /&gt;
== Overlays ==&lt;br /&gt;
Some overlays have relevance for Kodi. Select one with the dropdown menu.&lt;br /&gt;
&lt;br /&gt;
[[File:renderdoc_overlays.png]]&lt;br /&gt;
&lt;br /&gt;
=== Highlight Drawcall ===&lt;br /&gt;
Shows the boundary box of the selected draw call.&lt;br /&gt;
&lt;br /&gt;
=== Wireframe mesh ===&lt;br /&gt;
Shows the geometry the current selected draw call is using.&lt;br /&gt;
&lt;br /&gt;
=== Quad Overdraw (Pass) ===&lt;br /&gt;
Shows the accumulated amount of overdraw of the currently selected draw call. This is the most interesting overlay. It shows how many layers are making up the skin. The colors change with each layer applied. Right click on a pixel to see how many layers are drawn.&lt;br /&gt;
&lt;br /&gt;
[[File:renderdoc_overdraw.png]]&lt;br /&gt;
&lt;br /&gt;
Higher numbers should be investigated. See the Skin Optimization page for more info.&lt;br /&gt;
&lt;br /&gt;
== Performance estimation ==&lt;br /&gt;
&lt;br /&gt;
First of, any performance numbers gathered here are only indicative and might not reflect real world results. Numbers scale with current clock speed of the GPU. Memory bottlenecks are usually not encountered in this static test. Any results are only remotely comparative with other ones taken on the same system.&lt;br /&gt;
&lt;br /&gt;
Navigate to &amp;quot;Performance Counters&amp;quot;. If the tab is not shown, enable it via &amp;quot;Window&amp;quot;. Click &amp;quot;Capture counters&amp;quot;, select generic (or other metrics if available) and hit &amp;quot;Sample counters&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:renderdoc_performance.png]]&lt;br /&gt;
&lt;br /&gt;
On the result screen, &amp;quot;GPU Duration (µs)&amp;quot; and &amp;quot;PS Invocations&amp;quot; are the most interesting fields. The first one indicates how long the draw call has taken, the latter describes how many pixels where put out during the call. Double clicking a call will select it in the Event Browser. From here, you can hop into the Texture Viewer to see what&#039;s taking so long.&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=File:Renderdoc_start.png&amp;diff=242222</id>
		<title>File:Renderdoc start.png</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=File:Renderdoc_start.png&amp;diff=242222"/>
		<updated>2022-06-07T21:30:33Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=File:Renderdoc_performance.png&amp;diff=242221</id>
		<title>File:Renderdoc performance.png</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=File:Renderdoc_performance.png&amp;diff=242221"/>
		<updated>2022-06-07T21:30:32Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=File:Renderdoc_overlays.png&amp;diff=242220</id>
		<title>File:Renderdoc overlays.png</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=File:Renderdoc_overlays.png&amp;diff=242220"/>
		<updated>2022-06-07T21:30:31Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=File:Renderdoc_overdraw.png&amp;diff=242219</id>
		<title>File:Renderdoc overdraw.png</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=File:Renderdoc_overdraw.png&amp;diff=242219"/>
		<updated>2022-06-07T21:30:30Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=File:Renderdoc_drawcalls.png&amp;diff=242218</id>
		<title>File:Renderdoc drawcalls.png</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=File:Renderdoc_drawcalls.png&amp;diff=242218"/>
		<updated>2022-06-07T21:30:29Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=File:Renderdoc_capture.png&amp;diff=242217</id>
		<title>File:Renderdoc capture.png</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=File:Renderdoc_capture.png&amp;diff=242217"/>
		<updated>2022-06-07T21:30:28Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Skin_Optimizations&amp;diff=242204</id>
		<title>Skin Optimizations</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Skin_Optimizations&amp;diff=242204"/>
		<updated>2022-06-06T17:20:13Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: Created page with &amp;quot;== Why to optimize skins == While the PC the skin is written on might be fast enough to render the GUI at 4k/60fps, it might be too expensive to run on lower end hardware. Thi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Why to optimize skins ==&lt;br /&gt;
While the PC the skin is written on might be fast enough to render the GUI at 4k/60fps, it might be too expensive to run on lower end hardware. This page will give examples how to optimize skins, focusing on GPU performance.&lt;br /&gt;
&lt;br /&gt;
In general, the two most important resources on the GPU are memory bandwidth and computing power. Different systems might show different bottlenecks to render the GUI, but the following topics should help both.&lt;br /&gt;
&lt;br /&gt;
== Analysis via Renderdoc ==&lt;br /&gt;
It is highly advised to use a tool like Renderdoc, a debugging program for computer graphics. While it offers a lot of features for graphics developers, it is also suitable for skinners to check for issues in the GUI layer compositing. With Renderdoc, the amount of overdraw can easily be judged.&lt;br /&gt;
&lt;br /&gt;
In a the future there will be a tutorial how to use RD.&lt;br /&gt;
&lt;br /&gt;
== Overdraw ==&lt;br /&gt;
&lt;br /&gt;
An important metric for performance evaluation is the amount of overdraw. Overdraw defines how many times a pixel gets rendered to, averaging across the whole screen. Using lots of layers increases the rendering costs. In order to have a performance target, a value should be picked when designing the skin. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Typical overdraw values&lt;br /&gt;
|-&lt;br /&gt;
! Performance target !! Permissible Overdraw&lt;br /&gt;
|-&lt;br /&gt;
| Raspberry Pi 3, 1080p60 || 2.5&lt;br /&gt;
|-&lt;br /&gt;
| Raspberry Pi 4, 1080p60 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Odroid C2, 1080p60 || 4.5&lt;br /&gt;
|-&lt;br /&gt;
| Intel HD 610, 1080p60 || 7&lt;br /&gt;
|-&lt;br /&gt;
| Intel HD 630, 2160p60 || 2.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please take all of the values with a great pinch of salt. The actual value might vary when the system is busy, like when playing a video or rendering a visualization. Overdraw should be seen as a guide to keep the whole GUI experience consistent.&lt;br /&gt;
&lt;br /&gt;
Also, the performance target can be set lower when doing animations transitioning between menus. This will result in stutter on low-end systems during the transition, but the user experience is fine otherwise. On systems where the video is rendered via the GPU (Intel and similar &amp;quot;desktop&amp;quot; systems), this might be more noticable.&lt;br /&gt;
&lt;br /&gt;
As an example, a target of 3.5 permits the usage of one background layer (fanart) with one texture filter on top, while still leaving 1.5 pixel draws for UI elements.&lt;br /&gt;
&lt;br /&gt;
For comparison, the overdraw for The Estuary movie screen is about 4.2, while the amount for Confluence is about 1.8.&lt;br /&gt;
&lt;br /&gt;
== Reducing layer counts ==&lt;br /&gt;
&lt;br /&gt;
While Kodi can render dozens of layers on top of each other, each layer consumes quite a bit of rendering resources. The overall goal should be to use as few layers as possible. &lt;br /&gt;
&lt;br /&gt;
Typically, the most performance gains can be made by reducing the full-screen layers, but this is not exclusive to them.&lt;br /&gt;
&lt;br /&gt;
=== Diffuse texture usage ===&lt;br /&gt;
The skinning engine has the ability to apply diffuse textures. While it might be tempting to get the same effect via a separate texture, it is faster. &lt;br /&gt;
&lt;br /&gt;
[[Texture_Attributes|See here for additional information.]]&lt;br /&gt;
=== Coloring via diffusecolors ===&lt;br /&gt;
In a lot of skins, coloring/shading is done by applying a white, featureless texture with a diffuse color to do color filtering. Most often, the same/similar effect can be obtained by applying the diffuse color to the underlying layer, so a whole layer can be saved.&lt;br /&gt;
&lt;br /&gt;
With Kodi 20 (Nexus), it will even be possible to animate the diffuse color (see https://github.com/xbmc/xbmc/pull/21400).&lt;br /&gt;
&lt;br /&gt;
=== Squashing filter layers ===&lt;br /&gt;
In a lot of skins, various shadow effects get applied to the fanart in the background. Most often, such effects can be combined together into one texture to achieve a very similar effect. &lt;br /&gt;
&lt;br /&gt;
Combined into a diffuse texture, such savings could halve the rendering cost for some skins.&lt;br /&gt;
&lt;br /&gt;
=== Disabling invisible layers ===&lt;br /&gt;
Always disable occluded layers. Even though they have no impact on the final result, they still have to be processed and rendered. This wastes a lot of resources.&lt;br /&gt;
&lt;br /&gt;
=== Avoid presenting assets multiple times ===&lt;br /&gt;
Another pitfall is to present an asset (posters, fanart, ...) multiple times in the exact same location. While this has no or just a small impact on the ouptut, it eats up resources.&lt;br /&gt;
&lt;br /&gt;
== Misc improvements ==&lt;br /&gt;
Other optimization considerations.&lt;br /&gt;
&lt;br /&gt;
=== Proper asset sizes ===&lt;br /&gt;
One easy to solve issue is the use of too large assets. Check the resolution of the displayed icons. They should be suitably sized to the targeted rendering resolution (most often 1920x1080). When too large, it will result in increased usage of memory resources and in &#039;&#039;&#039;decreased&#039;&#039;&#039; image quality.&lt;br /&gt;
&lt;br /&gt;
For a lot of background effects, a smaller resolution texture might be used. Often enough, just 1/4th of the target resolution might do the trick (e.g. 960x540), especially when there are multiple layers.&lt;br /&gt;
&lt;br /&gt;
=== Avoid infill by border textures ===&lt;br /&gt;
If a &amp;lt;code&amp;gt;bordertexture&amp;lt;/code&amp;gt; with a transparent center is used, the GUI can be informed via &amp;lt;code&amp;gt;infill=&amp;quot;false&amp;quot;&amp;lt;/code&amp;gt; that it does not have to be rendered.&lt;br /&gt;
&lt;br /&gt;
[[Image_Control#Available_tags_and_attributes|See here for additional information.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoid almost opaque elements ===&lt;br /&gt;
Consider using opaque elements instead of barely transparent ones. Especially on modern GPU&#039;s, this avoids rendering everything below such an element.&lt;br /&gt;
&lt;br /&gt;
=== Don&#039;t include unnecessary alpha layers in textures ===&lt;br /&gt;
Including an alpha layer in a texture implies that it is used, even if the texture is fully opaque. The GUI has to treat such an element as transparent, with all the associated costs.&lt;br /&gt;
&lt;br /&gt;
=== Use single channel textures if possible ===&lt;br /&gt;
A lot of GUI assets included in skins are delivered in a RGB format, even when they are greyscale. A single channel format saves disk space and might even reduce memory bandwidth in the future. Such textures can be colored by a &amp;lt;code&amp;gt;diffusecolor&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Image_Control&amp;diff=242203</id>
		<title>Image Control</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Image_Control&amp;diff=242203"/>
		<updated>2022-06-06T14:54:03Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: /* Available tags and attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Skinning]] }}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
The image control is used for displaying images in Kodi. You can choose the position, size, transparency and contents of the image to be displayed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;control type=&amp;quot;image&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;description&amp;gt;My first image control&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;left&amp;gt;80&amp;lt;/left&amp;gt;&lt;br /&gt;
      &amp;lt;top&amp;gt;60&amp;lt;/top&amp;gt;&lt;br /&gt;
      &amp;lt;width&amp;gt;250&amp;lt;/width&amp;gt;&lt;br /&gt;
      &amp;lt;height&amp;gt;200&amp;lt;/height&amp;gt;&lt;br /&gt;
      &amp;lt;visible&amp;gt;true&amp;lt;/visible&amp;gt;&lt;br /&gt;
      &amp;lt;colordiffuse&amp;gt;FFFFFFFF&amp;lt;/colordiffuse&amp;gt;&lt;br /&gt;
      &amp;lt;fadetime&amp;gt;200&amp;lt;/fadetime&amp;gt;&lt;br /&gt;
      &amp;lt;texture border=&amp;quot;5&amp;quot; flipy=&amp;quot;true&amp;quot; flipx=&amp;quot;false&amp;quot;&amp;gt;mytexture.png&amp;lt;/texture&amp;gt;&lt;br /&gt;
      &amp;lt;bordertexture border=&amp;quot;5&amp;quot; infill=&amp;quot;false&amp;quot;&amp;gt;mybordertexture.png&amp;lt;/bordertexture&amp;gt;&lt;br /&gt;
      &amp;lt;bordersize&amp;gt;5&amp;lt;/bordersize&amp;gt;&lt;br /&gt;
      &amp;lt;aspectratio&amp;gt;keep&amp;lt;/aspectratio&amp;gt;&lt;br /&gt;
&amp;lt;/control&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Image Size and Type Restrictions ===&lt;br /&gt;
For the &amp;lt;texture&amp;gt; tags, and for all &amp;lt;texture&amp;gt; tags in other controls, there is a small set of rules that you should follow if at all possible:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Size ===&lt;br /&gt;
Images can be any size, though some graphics cards allow only power of 2 textures, so this may be a consideration. For the most case, it doesn&#039;t really matter what size things are - Kodi will quite happily load most files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formats ===&lt;br /&gt;
If you wish to use transparency, then use PNG. It is suggested that you use PNG and JPG as much as possible. Note that once the images are injected into Textures.xbt, they are not stored as JPG or PNG – rather they are stored in a native format used for GPUs for faster loading, such as ARGB or DXTc textures. The size of the images (in kb) is therefore not as important as the size of the images in pixels – so feel free to store them in a lossless (eg PNG) manner if you wish.&lt;br /&gt;
&lt;br /&gt;
The only exception to this is if you require an animated texture. In this case, we support only animated GIF. There are also some animated gifs that may not work. Use ImageReady CS and make sure you set the gif-anim to “restore to background” and they should work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Available tags and attributes ===&lt;br /&gt;
In addition to the [[Default Control Tags|default control tags]], the following tags are available. Note that each tag is &#039;&#039;&#039;lower case only.&#039;&#039;&#039; This is important, as xml tags are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! Tag !! Description&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;aspectratio&#039;&#039;&#039;&lt;br /&gt;
|  This specifies how the image will be drawn inside the box defined by &amp;lt;code&amp;gt;&amp;lt;width&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;height&amp;gt;&amp;lt;/code&amp;gt;. [[Aspect Ratio|See here for more information]].&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;texture&#039;&#039;&#039;&lt;br /&gt;
|  Specifies the image file which should be displayed. [[Texture Attributes|See here for additional information about textures.]]&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;bordertexture&#039;&#039;&#039;&lt;br /&gt;
|  Specifies the image file which should be displayed as a border around the image.  Use the &amp;lt;code&amp;gt;&amp;lt;bordersize&amp;gt;&amp;lt;/code&amp;gt; to specify the size of the border. The &amp;lt;code&amp;gt;&amp;lt;width&amp;gt;&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;&amp;lt;height&amp;gt;&amp;lt;/code&amp;gt; box specifies the size of the image plus border. Set the argument &amp;lt;code&amp;gt;infill=&amp;quot;false&amp;quot;&amp;lt;/code&amp;gt; to hint to the GUI that the inner portion of the border doesn&#039;t have to be rendered.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;bordersize&#039;&#039;&#039;&lt;br /&gt;
|  Specifies the size of the border.  A single number specifies the border should be the same size all the way around the image, whereas a comma separated list of 4 values indicates left,top,right,bottom values.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;info&#039;&#039;&#039;&lt;br /&gt;
|  Specifies the information that this image control is presenting. Kodi will select the texture to use based on this tag. [[InfoLabels|See here for&amp;amp;nbsp;more information.]]&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;fadetime&#039;&#039;&#039;&lt;br /&gt;
|  This specifies a crossfade time that will be used whenever the underlying &amp;lt;texture&amp;gt; filename changes.  The previous image will be held until the new image is ready, and then they will be crossfaded.  This is particularly useful for a large thumbnail image showing the focused item in a list, or for fanart or other large backdrops.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;background&#039;&#039;&#039;&lt;br /&gt;
|  For images inside a container, you can specify background=&amp;quot;true&amp;quot; to load the textures in a background worker thread.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texture Loading ===&lt;br /&gt;
==== Normal texture loading ====&lt;br /&gt;
The only textures loaded by Kodi are the ones currently visible. Nothing displays on the screen until all the images have been loaded in memory, this can result in &amp;quot;jerky&amp;quot; scrolling through panel containers. As you scroll down, Kodi will delay the scrolling animation until all of the images in the next row are loaded.&lt;br /&gt;
&lt;br /&gt;
==== Background loading ====&lt;br /&gt;
Images are loaded one at a time in a background worker thread and are shown as soon as xbmc processes them. Has the benefit that images can be loaded into memory before they&#039;re visible, resulting in smoother scrolling and transitions.&lt;br /&gt;
&lt;br /&gt;
==== Preloading ====&lt;br /&gt;
Used to automatically load the next items (or rows/columns in the case of a panel) while scrolling. Currently limited to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Image_Control&amp;diff=242202</id>
		<title>Image Control</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Image_Control&amp;diff=242202"/>
		<updated>2022-06-06T14:51:11Z</updated>

		<summary type="html">&lt;p&gt;Sarbes: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Skinning]] }}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
The image control is used for displaying images in Kodi. You can choose the position, size, transparency and contents of the image to be displayed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;control type=&amp;quot;image&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;description&amp;gt;My first image control&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;left&amp;gt;80&amp;lt;/left&amp;gt;&lt;br /&gt;
      &amp;lt;top&amp;gt;60&amp;lt;/top&amp;gt;&lt;br /&gt;
      &amp;lt;width&amp;gt;250&amp;lt;/width&amp;gt;&lt;br /&gt;
      &amp;lt;height&amp;gt;200&amp;lt;/height&amp;gt;&lt;br /&gt;
      &amp;lt;visible&amp;gt;true&amp;lt;/visible&amp;gt;&lt;br /&gt;
      &amp;lt;colordiffuse&amp;gt;FFFFFFFF&amp;lt;/colordiffuse&amp;gt;&lt;br /&gt;
      &amp;lt;fadetime&amp;gt;200&amp;lt;/fadetime&amp;gt;&lt;br /&gt;
      &amp;lt;texture border=&amp;quot;5&amp;quot; flipy=&amp;quot;true&amp;quot; flipx=&amp;quot;false&amp;quot;&amp;gt;mytexture.png&amp;lt;/texture&amp;gt;&lt;br /&gt;
      &amp;lt;bordertexture border=&amp;quot;5&amp;quot; infill=&amp;quot;false&amp;quot;&amp;gt;mybordertexture.png&amp;lt;/bordertexture&amp;gt;&lt;br /&gt;
      &amp;lt;bordersize&amp;gt;5&amp;lt;/bordersize&amp;gt;&lt;br /&gt;
      &amp;lt;aspectratio&amp;gt;keep&amp;lt;/aspectratio&amp;gt;&lt;br /&gt;
&amp;lt;/control&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Image Size and Type Restrictions ===&lt;br /&gt;
For the &amp;lt;texture&amp;gt; tags, and for all &amp;lt;texture&amp;gt; tags in other controls, there is a small set of rules that you should follow if at all possible:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Size ===&lt;br /&gt;
Images can be any size, though some graphics cards allow only power of 2 textures, so this may be a consideration. For the most case, it doesn&#039;t really matter what size things are - Kodi will quite happily load most files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formats ===&lt;br /&gt;
If you wish to use transparency, then use PNG. It is suggested that you use PNG and JPG as much as possible. Note that once the images are injected into Textures.xbt, they are not stored as JPG or PNG – rather they are stored in a native format used for GPUs for faster loading, such as ARGB or DXTc textures. The size of the images (in kb) is therefore not as important as the size of the images in pixels – so feel free to store them in a lossless (eg PNG) manner if you wish.&lt;br /&gt;
&lt;br /&gt;
The only exception to this is if you require an animated texture. In this case, we support only animated GIF. There are also some animated gifs that may not work. Use ImageReady CS and make sure you set the gif-anim to “restore to background” and they should work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Available tags and attributes ===&lt;br /&gt;
In addition to the [[Default Control Tags|default control tags]], the following tags are available. Note that each tag is &#039;&#039;&#039;lower case only.&#039;&#039;&#039; This is important, as xml tags are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! Tag !! Description&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;aspectratio&#039;&#039;&#039;&lt;br /&gt;
|  This specifies how the image will be drawn inside the box defined by &amp;lt;code&amp;gt;&amp;lt;width&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;height&amp;gt;&amp;lt;/code&amp;gt;. [[Aspect Ratio|See here for more information]].&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;texture&#039;&#039;&#039;&lt;br /&gt;
|  Specifies the image file which should be displayed. [[Texture Attributes|See here for additional information about textures.]]&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;bordertexture&#039;&#039;&#039;&lt;br /&gt;
|  Specifies the image file which should be displayed as a border around the image.  Use the &amp;lt;code&amp;gt;&amp;lt;bordersize&amp;gt;&amp;lt;/code&amp;gt; to specify the size of the border. The &amp;lt;code&amp;gt;&amp;lt;width&amp;gt;&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;&amp;lt;height&amp;gt;&amp;lt;/code&amp;gt; box specifies the size of the image plus border.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;bordersize&#039;&#039;&#039;&lt;br /&gt;
|  Specifies the size of the border.  A single number specifies the border should be the same size all the way around the image, whereas a comma separated list of 4 values indicates left,top,right,bottom values.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;info&#039;&#039;&#039;&lt;br /&gt;
|  Specifies the information that this image control is presenting. Kodi will select the texture to use based on this tag. [[InfoLabels|See here for&amp;amp;nbsp;more information.]]&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;fadetime&#039;&#039;&#039;&lt;br /&gt;
|  This specifies a crossfade time that will be used whenever the underlying &amp;lt;texture&amp;gt; filename changes.  The previous image will be held until the new image is ready, and then they will be crossfaded.  This is particularly useful for a large thumbnail image showing the focused item in a list, or for fanart or other large backdrops.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;background&#039;&#039;&#039;&lt;br /&gt;
|  For images inside a container, you can specify background=&amp;quot;true&amp;quot; to load the textures in a background worker thread.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Texture Loading ===&lt;br /&gt;
==== Normal texture loading ====&lt;br /&gt;
The only textures loaded by Kodi are the ones currently visible. Nothing displays on the screen until all the images have been loaded in memory, this can result in &amp;quot;jerky&amp;quot; scrolling through panel containers. As you scroll down, Kodi will delay the scrolling animation until all of the images in the next row are loaded.&lt;br /&gt;
&lt;br /&gt;
==== Background loading ====&lt;br /&gt;
Images are loaded one at a time in a background worker thread and are shown as soon as xbmc processes them. Has the benefit that images can be loaded into memory before they&#039;re visible, resulting in smoother scrolling and transitions.&lt;br /&gt;
&lt;br /&gt;
==== Preloading ====&lt;br /&gt;
Used to automatically load the next items (or rows/columns in the case of a panel) while scrolling. Currently limited to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Sarbes</name></author>
	</entry>
</feed>