diff --git a/multimedia/kodi/Makefile b/multimedia/kodi/Makefile index 6407e95a6982..e4ca578bd2a5 100644 --- a/multimedia/kodi/Makefile +++ b/multimedia/kodi/Makefile @@ -1,304 +1,309 @@ PORTNAME= kodi -DISTVERSION= 20.5 +DISTVERSION= 21.0 CATEGORIES= multimedia java +MASTER_SITES= http://mirrors.kodi.tv/build-deps/sources/ +DISTFILES= apache-groovy-binary-${GROOVY_VERSION}.zip \ + commons-lang3-${COMMONS_LANG_VERSION}-bin.tar.gz \ + commons-text-${COMMONS_TEXT_VERSION}-bin.tar.gz +DIST_SUBDIR= ${PORTNAME} # do not forget to fix devel/kodi-platform when updating kodi MAINTAINER= yzrh@noema.org COMMENT= Award winning media center application WWW= https://kodi.tv/ LICENSE= GPLv2+ ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc64 powerpc64le BUILD_DEPENDS= flatbuffers>0:devel/flatbuffers \ rapidjson>0:devel/rapidjson \ swig>0:devel/swig LIB_DEPENDS= libass.so:multimedia/libass \ libavcodec.so:multimedia/ffmpeg \ libavfilter.so:multimedia/ffmpeg \ libavformat.so:multimedia/ffmpeg \ libavutil.so:multimedia/ffmpeg \ libcdio.so:sysutils/libcdio \ libcrossguid.so:devel/libcrossguid \ libcurl.so:ftp/curl \ libexpat.so:textproc/expat2 \ libfmt.so:devel/libfmt \ libfreetype.so:print/freetype2 \ libfribidi.so:converters/fribidi \ libfstrcmp.so:devel/fstrcmp \ libgif.so:graphics/giflib \ libharfbuzz.so:print/harfbuzz \ liblzo2.so:archivers/lzo2 \ libpcre.so:devel/pcre \ libpng.so:graphics/png \ libpostproc.so:multimedia/ffmpeg \ libspdlog.so:devel/spdlog \ libswresample.so:multimedia/ffmpeg \ libswscale.so:multimedia/ffmpeg \ libtag.so:audio/taglib \ libtinyxml.so:textproc/tinyxml \ + libtinyxml2.so:textproc/tinyxml2 \ + libudfread.so:multimedia/libudfread \ libuuid.so:misc/e2fsprogs-libuuid RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} USES= autoreconf:build cmake:noninja compiler:c++17-lang cpe \ desktop-file-utils gettext gmake gnome iconv jpeg libtool \ pkgconfig python sqlite ssl -KODI_CODENAME= Nexus +KODI_CODENAME= Omega LIBDVDCSS_VERSION= 1.4.3-Next-Nexus-Alpha2-2 LIBDVDNAV_VERSION= 6.1.1-Next-Nexus-Alpha2-2 LIBDVDREAD_VERSION= 6.1.3-Next-Nexus-Alpha2-2 +GROOVY_VERSION= 4.0.16 +COMMONS_LANG_VERSION= 3.14.0 +COMMONS_TEXT_VERSION= 1.11.0 USE_GITHUB= yes GH_TUPLE= xbmc:xbmc:${DISTVERSION}-${KODI_CODENAME} \ xbmc:libdvdcss:${LIBDVDCSS_VERSION}:libdvdcss/tools/depends/target/libdvdcss/native \ xbmc:libdvdnav:${LIBDVDNAV_VERSION}:libdvdnav/tools/depends/target/libdvdnav/native \ xbmc:libdvdread:${LIBDVDREAD_VERSION}:libdvdread/tools/depends/target/libdvdread/native KODI_ARCH_aarch64= aarch64 KODI_ARCH_amd64= x86_64 KODI_ARCH_i386= x86 KODI_ARCH_armv7= armv7 KODI_ARCH_armv6= armv6 KODI_ARCH_powerpc64= powerpc64 KODI_ARCH_powerpc64le= powerpc64le PLIST_SUB= ARCH=${KODI_ARCH_${ARCH}} USE_LDCONFIG= yes USE_JAVA= yes JAVA_BUILD= jre USE_GNOME= libxml2 CMAKE_ARGS= -DGIT_VERSION="${DISTVERSION}-${KODI_CODENAME}" \ - -DLIBDVDCSS_URL="${DISTDIR}/xbmc-libdvdcss-${LIBDVDCSS_VERSION}_GH0.tar.gz" \ - -DLIBDVDNAV_URL="${DISTDIR}/xbmc-libdvdnav-${LIBDVDNAV_VERSION}_GH0.tar.gz" \ - -DLIBDVDREAD_URL="${DISTDIR}/xbmc-libdvdread-${LIBDVDREAD_VERSION}_GH0.tar.gz" \ - -DCROSSGUID_INCLUDE_DIR="${LOCALBASE}/include" -CMAKE_OFF= ENABLE_INTERNAL_CROSSGUID ENABLE_INTERNAL_RapidJSON + -DLIBDVDCSS_URL="${DISTDIR}/${PORTNAME}/xbmc-libdvdcss-${LIBDVDCSS_VERSION}_GH0.tar.gz" \ + -DLIBDVDNAV_URL="${DISTDIR}/${PORTNAME}/xbmc-libdvdnav-${LIBDVDNAV_VERSION}_GH0.tar.gz" \ + -DLIBDVDREAD_URL="${DISTDIR}/${PORTNAME}/xbmc-libdvdread-${LIBDVDREAD_VERSION}_GH0.tar.gz" \ + -Dgroovy_SOURCE_DIR="${WRKSRC}/tools/depends/share/groovy" \ + -Dapache-commons-lang_SOURCE_DIR="${WRKSRC}/tools/depends/share/java/lang" \ + -Dapache-commons-text_SOURCE_DIR="${WRKSRC}/tools/depends/share/java/text" \ + -DCROSSGUID_INCLUDE_DIR="${LOCALBASE}/include" \ + -DCORE_PLATFORM_NAME:STRING="${KODI_PLATFORM}" \ + -DCMAKE_VERBOSE_MAKEFILE=ON +CMAKE_OFF= ENABLE_INTERNAL_CROSSGUID CONFIGURE_ENV= _CPU_FEATURE="${CPU_FEATURE}" OPTIONS_SUB= yes -# Broken: BLUETOOTH OPTIONS_DEFINE= AIRPLAY AVAHI LIBBLURAY CEC DAV1D DBUS \ DVDCSS LCMS2 LIRC WEBSERVER MYSQL NFS DVD SMB TEST \ UDEV UPNP VAAPI VDPAU XSLT DOCS OPTIONS_DEFAULT= LIBBLURAY CEC LCMS2 WEBSERVER DAV1D \ - DVD UPNP VAAPI VDPAU XSLT WAYLAND X11 GL + DVD UPNP VAAPI VDPAU XSLT GBM WAYLAND X11 GL OPTIONS_DEFAULT_amd64= SSE SSE2 SSE3 SSSE3 SSE4_1 SSE4_2 OPTIONS_DEFAULT_i386= SSE SSE2 SSE3 OPTIONS_SINGLE= RENDER OPTIONS_SINGLE_RENDER= GL GLES OPTIONS_GROUP= SOUND FEATURE PLATFORM OPTIONS_GROUP_SOUND= ALSA PIPEWIRE PULSEAUDIO SNDIO OPTIONS_GROUP_FEATURE= SSE SSE2 SSE3 SSSE3 SSE4_1 SSE4_2 AVX AVX2 OPTIONS_GROUP_PLATFORM= GBM WAYLAND X11 OPTIONS_EXCLUDE_aarch64=FEATURE OPTIONS_EXCLUDE_armv7= FEATURE OPTIONS_EXCLUDE_armv6= FEATURE OPTIONS_EXCLUDE_powerpc64= FEATURE OPTIONS_EXCLUDE_powerpc64le= FEATURE PLATFORM_DESC= Kodi platform FEATURE_DESC= X86 CPU feature AIRPLAY_DESC= AirPlay support -BLUETOOTH_DESC= Bluetooth support CEC_DESC= CEC adapter support DAV1D_DESC= Use dav1d as AV1 decoder DVD_DESC= DVD support UDEV_DESC= Use libudev-devd XSLT_DESC= Use libxslt RENDER_DESC= Render system GL_DESC= OpenGL GLES_DESC= OpenGL ES GBM_DESC= GBM support SSE2_DESC= Use SSE2 optimized routines SSE3_DESC= Use SSE3 optimized routines SSSE3_DESC= Use SSSE3 optimized routines SSE4_1_DESC= Use SSE4.1 optimized routines SSE4_2_DESC= Use SSE4.2 optimized routines AVX_DESC= Use AVX optimized routines AVX2_DESC= Use AVX2 optimized routines AIRPLAY_LIB_DEPENDS= libplist-2.0.so:devel/libplist \ libshairplay.so:audio/shairplay AIRPLAY_CMAKE_BOOL= ENABLE_PLIST \ ENABLE_AIRTUNES AVAHI_LIB_DEPENDS= libavahi-client.so:net/avahi-app AVAHI_CMAKE_BOOL= ENABLE_AVAHI -BLUETOOTH_CMAKE_BOOL= ENABLE_BLUETOOTH -BLUETOOTH_CMAKE_ON= -DBLUETOOTH_INCLUDE_DIR="${LOCALBASE}/include" - LIBBLURAY_LIB_DEPENDS= libbluray.so:multimedia/libbluray LIBBLURAY_CMAKE_BOOL= ENABLE_BLURAY CEC_LIB_DEPENDS= libcec.so:multimedia/libcec CEC_CMAKE_BOOL= ENABLE_CEC DAV1D_LIB_DEPENDS= libdav1d.so:multimedia/dav1d DAV1D_CMAKE_BOOL= ENABLE_DAV1D DBUS_LIB_DEPENDS= libdbus-1.so:devel/dbus DBUS_CMAKE_BOOL= ENABLE_DBUS DVDCSS_CMAKE_BOOL= ENABLE_DVDCSS LCMS2_LIB_DEPENDS= liblcms2.so.2:graphics/lcms2 LCMS2_CMAKE_BOOL= ENABLE_LCMS2 LIRC_LIB_DEPENDS= liblirc_client.so:comms/lirc LIRC_CMAKE_BOOL= ENABLE_LIRCCLIENT WEBSERVER_LIB_DEPENDS= libmicrohttpd.so:www/libmicrohttpd WEBSERVER_CMAKE_BOOL= ENABLE_MICROHTTPD NFS_LIB_DEPENDS= libnfs.so:net/libnfs NFS_CMAKE_BOOL= ENABLE_NFS DVD_CMAKE_BOOL= ENABLE_OPTICAL SMB_USES= samba:lib SMB_CMAKE_BOOL= ENABLE_SMBCLIENT TEST_LIB_DEPENDS= libgtest.so:devel/googletest TEST_CMAKE_BOOL= ENABLE_TESTING UDEV_LIB_DEPENDS= libudev.so:devel/libudev-devd UDEV_CMAKE_BOOL= ENABLE_UDEV UPNP_CMAKE_BOOL= ENABLE_UPNP VAAPI_LIB_DEPENDS= libva.so:multimedia/libva VAAPI_CMAKE_BOOL= ENABLE_VAAPI +VDPAU_IMPLIES= X11 GL VDPAU_LIB_DEPENDS= libvdpau.so:multimedia/libvdpau VDPAU_CMAKE_BOOL= ENABLE_VDPAU XSLT_LIB_DEPENDS= libxslt.so:textproc/libxslt XSLT_CMAKE_BOOL= ENABLE_XSLT GL_CMAKE_ON= -DAPP_RENDER_SYSTEM:STRING="gl" GL_USES= gl GL_USE= GL=gl GLES_CMAKE_ON= -DAPP_RENDER_SYSTEM:STRING="gles" GLES_USES= gl GLES_USE= GL=glesv2 MYSQL_USES= mysql MYSQL_CMAKE_BOOL= ENABLE_MYSQLCLIENT ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib ALSA_CMAKE_BOOL= ENABLE_ALSA PIPEWIRE_LIB_DEPENDS= libpipewire-0.3.so:multimedia/pipewire PIPEWIRE_CMAKE_BOOL= ENABLE_PIPEWIRE PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio PULSEAUDIO_CMAKE_BOOL= ENABLE_PULSEAUDIO SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio SNDIO_CMAKE_BOOL= ENABLE_SNDIO SSE_VARS= CPU_FEATURE+=SSE SSE2_VARS= CPU_FEATURE+=SSE2 SSE3_VARS= CPU_FEATURE+=SSE3 SSSE3_VARS= CPU_FEATURE+=SSSE3 SSE4_1_VARS= CPU_FEATURE+=SSE4.1 SSE4_2_VARS= CPU_FEATURE+=SSE4.2 AVX_VARS= CPU_FEATURE+=AVX AVX2_VARS= CPU_FEATURE+=AVX2 GBM_IMPLIES= UDEV +GBM_VARS= KODI_PLATFORM+=gbm GBM_USES= gl GBM_USE= GL=egl,gbm,glu -GBM_CFLAGS= -I${LOCALBASE}/include/libepoll-shim -GBM_LDFLAGS= -L${LOCALBASE}/lib -lepoll-shim GBM_BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto GBM_LIB_DEPENDS= libepoll-shim.so:devel/libepoll-shim \ libdrm.so:graphics/libdrm \ libxkbcommon.so:x11/libxkbcommon \ - libinput.so:x11/libinput + libinput.so:x11/libinput \ + libdisplay-info.so:sysutils/libdisplay-info GBM_RUN_DEPENDS= mesa-dri>0:graphics/mesa-dri +WAYLAND_VARS= KODI_PLATFORM+=wayland WAYLAND_CATEGORIES= wayland WAYLAND_USES= gl WAYLAND_USE= GL=egl,glu WAYLAND_BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto \ wayland-protocols>0:graphics/wayland-protocols WAYLAND_LIB_DEPENDS= libdrm.so:graphics/libdrm \ libxkbcommon.so:x11/libxkbcommon \ libinput.so:x11/libinput \ libwayland-client++.so:graphics/waylandpp +X11_VARS= KODI_PLATFORM+=x11 X11_USES= xorg gl X11_USE= XORG=x11,xext,xrandr GL=egl,gbm,glu X11_LIB_DEPENDS= libdrm.so:graphics/libdrm .include .if (!empty(PORT_OPTIONS:MGBM) && !empty(PORT_OPTIONS:MWAYLAND) || !empty(PORT_OPTIONS:MGBM) && !empty(PORT_OPTIONS:MX11) || !empty(PORT_OPTIONS:MWAYLAND) && !empty(PORT_OPTIONS:MX11)) && !empty(PORT_OPTIONS:MGLES) BROKEN= option GLES does not build with multiple PLATFORM .endif -.if !empty(PORT_OPTIONS:MGBM) && !empty(PORT_OPTIONS:MWAYLAND) && !empty(PORT_OPTIONS:MX11) -CMAKE_ARGS+= -DCORE_PLATFORM_NAME:STRING="gbm wayland x11" -.elif empty(PORT_OPTIONS:MGBM) && !empty(PORT_OPTIONS:MWAYLAND) && !empty(PORT_OPTIONS:MX11) -CMAKE_ARGS+= -DCORE_PLATFORM_NAME:STRING="wayland x11" -.elif !empty(PORT_OPTIONS:MGBM) && empty(PORT_OPTIONS:MWAYLAND) && !empty(PORT_OPTIONS:MX11) -CMAKE_ARGS+= -DCORE_PLATFORM_NAME:STRING="gbm x11" -.elif !empty(PORT_OPTIONS:MGBM) && !empty(PORT_OPTIONS:MWAYLAND) && empty(PORT_OPTIONS:MX11) -CMAKE_ARGS+= -DCORE_PLATFORM_NAME:STRING="gbm wayland" -.elif empty(PORT_OPTIONS:MGBM) && empty(PORT_OPTIONS:MWAYLAND) && !empty(PORT_OPTIONS:MX11) -CMAKE_ARGS+= -DCORE_PLATFORM_NAME:STRING="x11" -.elif empty(PORT_OPTIONS:MGBM) && !empty(PORT_OPTIONS:MWAYLAND) && empty(PORT_OPTIONS:MX11) -CMAKE_ARGS+= -DCORE_PLATFORM_NAME:STRING="wayland" -.elif !empty(PORT_OPTIONS:MGBM) && empty(PORT_OPTIONS:MWAYLAND) && empty(PORT_OPTIONS:MX11) -CMAKE_ARGS+= -DCORE_PLATFORM_NAME:STRING="gbm" -.endif - .if !empty(PORT_OPTIONS:MGBM) && !empty(PORT_OPTIONS:MWAYLAND) || !empty(PORT_OPTIONS:MGBM) && !empty(PORT_OPTIONS:MX11) || !empty(PORT_OPTIONS:MWAYLAND) && !empty(PORT_OPTIONS:MX11) PLIST_SUB+= KODICOMBINED="" \ KODIGBM="@comment " \ KODIWAYLAND="@comment " \ KODIX11="@comment " .else PLIST_SUB+= KODICOMBINED="@comment " .if !empty(PORT_OPTIONS:MGBM) PLIST_SUB+= KODIGBM="" .else PLIST_SUB+= KODIGBM="@comment " .endif .if !empty(PORT_OPTIONS:MWAYLAND) PLIST_SUB+= KODIWAYLAND="" .else PLIST_SUB+= KODIWAYLAND="@comment " .endif .if !empty(PORT_OPTIONS:MX11) PLIST_SUB+= KODIX11="" .else PLIST_SUB+= KODIX11="@comment " .endif .endif +post-extract: + @${MKDIR} ${WRKSRC}/tools/depends/share + @${MV} ${WRKDIR}/groovy-${GROOVY_VERSION} ${WRKSRC}/tools/depends/share/groovy + + @${MKDIR} ${WRKSRC}/tools/depends/share/java + @${MV} ${WRKDIR}/commons-lang3-${COMMONS_LANG_VERSION} ${WRKSRC}/tools/depends/share/java/lang + @${MV} ${WRKDIR}/commons-text-${COMMONS_TEXT_VERSION} ${WRKSRC}/tools/depends/share/java/text + post-patch: ${REINPLACE_CMD} 's|/usr/share|${LOCALBASE}/share|' \ ${WRKSRC}/xbmc/platform/linux/input/LibInputSettings.cpp post-install: ${INSTALL_MAN} ${WRKSRC}/docs/manpages/kodi.bin.1 ${STAGEDIR}${PREFIX}/share/man/man1 cd ${STAGEDIR}${PREFIX}/share/man/man1 && ${LN} -s kodi.bin.1.gz kodi.1.gz - cd ${STAGEDIR}${PREFIX}/bin && ${STRIP_CMD} JsonSchemaBuilder kodi-TexturePacker + cd ${STAGEDIR}${PREFIX}/bin && ${STRIP_CMD} kodi-TexturePacker TexturePacker ${FIND} ${STAGEDIR}${PREFIX}/lib/kodi -type f -name '*.so' -print0 | ${XARGS} -0 ${STRIP_CMD} ${RM} -r ${STAGEDIR}${PREFIX}/lib/firewalld .include diff --git a/multimedia/kodi/distinfo b/multimedia/kodi/distinfo index 9962dfff28b0..da2b055758eb 100644 --- a/multimedia/kodi/distinfo +++ b/multimedia/kodi/distinfo @@ -1,9 +1,15 @@ -TIMESTAMP = 1709571779 -SHA256 (xbmc-xbmc-20.5-20.5-Nexus_GH0.tar.gz) = 9bf3257ebf251d20f276b7f90681985a270779150af2fb395d4b593c04002deb -SIZE (xbmc-xbmc-20.5-20.5-Nexus_GH0.tar.gz) = 54568445 -SHA256 (xbmc-libdvdcss-1.4.3-Next-Nexus-Alpha2-2_GH0.tar.gz) = f38c4a4e7a4f4da6d8e83b8852489aa3bb6588a915dc41f5ee89d9aad305a06e -SIZE (xbmc-libdvdcss-1.4.3-Next-Nexus-Alpha2-2_GH0.tar.gz) = 102124 -SHA256 (xbmc-libdvdnav-6.1.1-Next-Nexus-Alpha2-2_GH0.tar.gz) = 584f62a3896794408d46368e2ecf2c6217ab9c676ce85921b2d68b8961f49dfc -SIZE (xbmc-libdvdnav-6.1.1-Next-Nexus-Alpha2-2_GH0.tar.gz) = 128547 -SHA256 (xbmc-libdvdread-6.1.3-Next-Nexus-Alpha2-2_GH0.tar.gz) = 719130091e3adc9725ba72df808f24a14737a009dca5a4c38c601c0c76449b62 -SIZE (xbmc-libdvdread-6.1.3-Next-Nexus-Alpha2-2_GH0.tar.gz) = 110513 +TIMESTAMP = 1712510398 +SHA256 (kodi/apache-groovy-binary-4.0.16.zip) = b8c3bec88a3f5a62235d9429a97e371032bf7216f3e28724823a9169dd10befc +SIZE (kodi/apache-groovy-binary-4.0.16.zip) = 29793704 +SHA256 (kodi/commons-lang3-3.14.0-bin.tar.gz) = 317c3e3fcd5fcca3781a7996ff1e0c50c13244ee961e94e5f6f6d84b84733b16 +SIZE (kodi/commons-lang3-3.14.0-bin.tar.gz) = 9442785 +SHA256 (kodi/commons-text-1.11.0-bin.tar.gz) = 4169cb90571fb28fad4c5eea7c1c994c18f1995452f73e8ea7a86087c0e3822e +SIZE (kodi/commons-text-1.11.0-bin.tar.gz) = 3018564 +SHA256 (kodi/xbmc-xbmc-21.0-21.0-Omega_GH0.tar.gz) = 7f54c1fd8456ac46221fbc85e447362bdc209163c6cb19fca98d106560071b7c +SIZE (kodi/xbmc-xbmc-21.0-21.0-Omega_GH0.tar.gz) = 40987733 +SHA256 (kodi/xbmc-libdvdcss-1.4.3-Next-Nexus-Alpha2-2_GH0.tar.gz) = f38c4a4e7a4f4da6d8e83b8852489aa3bb6588a915dc41f5ee89d9aad305a06e +SIZE (kodi/xbmc-libdvdcss-1.4.3-Next-Nexus-Alpha2-2_GH0.tar.gz) = 102124 +SHA256 (kodi/xbmc-libdvdnav-6.1.1-Next-Nexus-Alpha2-2_GH0.tar.gz) = 584f62a3896794408d46368e2ecf2c6217ab9c676ce85921b2d68b8961f49dfc +SIZE (kodi/xbmc-libdvdnav-6.1.1-Next-Nexus-Alpha2-2_GH0.tar.gz) = 128547 +SHA256 (kodi/xbmc-libdvdread-6.1.3-Next-Nexus-Alpha2-2_GH0.tar.gz) = 719130091e3adc9725ba72df808f24a14737a009dca5a4c38c601c0c76449b62 +SIZE (kodi/xbmc-libdvdread-6.1.3-Next-Nexus-Alpha2-2_GH0.tar.gz) = 110513 diff --git a/multimedia/kodi/files/patch-cmake_modules_FindCrossGUID.cmake b/multimedia/kodi/files/patch-cmake_modules_FindCrossGUID.cmake index 4fd05dca7c94..9abea5170820 100644 --- a/multimedia/kodi/files/patch-cmake_modules_FindCrossGUID.cmake +++ b/multimedia/kodi/files/patch-cmake_modules_FindCrossGUID.cmake @@ -1,29 +1,20 @@ ---- cmake/modules/FindCrossGUID.cmake.orig 2022-07-08 10:04:52 UTC +--- cmake/modules/FindCrossGUID.cmake.orig 2024-03-04 21:39:38 UTC +++ cmake/modules/FindCrossGUID.cmake -@@ -45,7 +45,7 @@ else() - endif() +@@ -45,7 +45,7 @@ if(NOT TARGET CrossGUID::CrossGUID) + set(CROSSGUID_VERSION ${PC_CROSSGUID_VERSION}) + endif() - if(CROSSGUID_FOUND) - find_path(CROSSGUID_INCLUDE_DIR NAMES crossguid/guid.hpp guid.h + find_path(CROSSGUID_INCLUDE_DIR NAMES guid.hpp guid.h - PATHS ${PC_CROSSGUID_INCLUDEDIR}) - - find_library(CROSSGUID_LIBRARY_RELEASE NAMES crossguid -@@ -53,7 +53,7 @@ else() - find_library(CROSSGUID_LIBRARY_DEBUG NAMES crossguidd crossguid-dgb - PATHS ${PC_CROSSGUID_LIBDIR}) - else() -- find_path(CROSSGUID_INCLUDE_DIR NAMES crossguid/guid.hpp guid.h) -+ find_path(CROSSGUID_INCLUDE_DIR NAMES guid.hpp guid.h) - find_library(CROSSGUID_LIBRARY_RELEASE NAMES crossguid) - find_library(CROSSGUID_LIBRARY_DEBUG NAMES crossguidd) - endif() -@@ -73,7 +73,7 @@ if(CROSSGUID_FOUND) - set(CROSSGUID_INCLUDE_DIRS ${CROSSGUID_INCLUDE_DIR}) + HINTS ${DEPENDS_PATH}/include ${PC_CROSSGUID_INCLUDEDIR} + ${${CORE_PLATFORM_LC}_SEARCH_CONFIG} + NO_CACHE) +@@ -59,7 +59,7 @@ if(NOT TARGET CrossGUID::CrossGUID) + NO_CACHE) - # NEW_CROSSGUID >= 0.2.0 release -- if(EXISTS "${CROSSGUID_INCLUDE_DIR}/crossguid/guid.hpp") -+ if(EXISTS "${CROSSGUID_INCLUDE_DIR}/guid.hpp") - list(APPEND CROSSGUID_DEFINITIONS -DHAVE_NEW_CROSSGUID) + # NEW_CROSSGUID >= 0.2.0 release +- if(EXISTS "${CROSSGUID_INCLUDE_DIR}/crossguid/guid.hpp") ++ if(EXISTS "${CROSSGUID_INCLUDE_DIR}/guid.hpp") + list(APPEND _crossguid_definitions HAVE_NEW_CROSSGUID) + endif() endif() - diff --git a/multimedia/kodi/files/patch-cmake_modules_FindLibDvdCSS.cmake b/multimedia/kodi/files/patch-cmake_modules_FindLibDvdCSS.cmake deleted file mode 100644 index 450c48a9ed4d..000000000000 --- a/multimedia/kodi/files/patch-cmake_modules_FindLibDvdCSS.cmake +++ /dev/null @@ -1,11 +0,0 @@ ---- cmake/modules/FindLibDvdCSS.cmake.orig 2022-08-18 23:36:30 UTC -+++ cmake/modules/FindLibDvdCSS.cmake -@@ -63,7 +63,7 @@ if(ENABLE_DVDCSS) - ${LIBDVD_ADDITIONAL_ARGS}) - else() - find_program(AUTORECONF autoreconf REQUIRED) -- find_program(MAKE_EXECUTABLE make REQUIRED) -+ find_program(MAKE_EXECUTABLE gmake REQUIRED) - - set(CONFIGURE_COMMAND ${AUTORECONF} -vif - COMMAND ac_cv_path_GIT= ./configure diff --git a/multimedia/kodi/files/patch-cmake_modules_FindLibDvdNav.cmake b/multimedia/kodi/files/patch-cmake_modules_FindLibDvdNav.cmake deleted file mode 100644 index c8efbe69cbc6..000000000000 --- a/multimedia/kodi/files/patch-cmake_modules_FindLibDvdNav.cmake +++ /dev/null @@ -1,11 +0,0 @@ ---- cmake/modules/FindLibDvdNav.cmake.orig 2022-08-18 23:36:26 UTC -+++ cmake/modules/FindLibDvdNav.cmake -@@ -76,7 +76,7 @@ if(NOT TARGET LibDvdNav::LibDvdNav) - string(APPEND LIBDVDNAV_CFLAGS " -I$ $") - - find_program(AUTORECONF autoreconf REQUIRED) -- find_program(MAKE_EXECUTABLE make REQUIRED) -+ find_program(MAKE_EXECUTABLE gmake REQUIRED) - - set(CONFIGURE_COMMAND ${AUTORECONF} -vif - COMMAND ac_cv_path_GIT= ./configure diff --git a/multimedia/kodi/files/patch-cmake_modules_FindLibDvdRead.cmake b/multimedia/kodi/files/patch-cmake_modules_FindLibDvdRead.cmake deleted file mode 100644 index 44208f126053..000000000000 --- a/multimedia/kodi/files/patch-cmake_modules_FindLibDvdRead.cmake +++ /dev/null @@ -1,11 +0,0 @@ ---- cmake/modules/FindLibDvdRead.cmake.orig 2022-08-18 23:36:34 UTC -+++ cmake/modules/FindLibDvdRead.cmake -@@ -81,7 +81,7 @@ if(NOT TARGET LibDvdRead::LibDvdRead) - endif() - - find_program(AUTORECONF autoreconf REQUIRED) -- find_program(MAKE_EXECUTABLE make REQUIRED) -+ find_program(MAKE_EXECUTABLE gmake REQUIRED) - - set(CONFIGURE_COMMAND ${AUTORECONF} -vif - COMMAND ac_cv_path_GIT= ./configure diff --git a/multimedia/kodi/files/patch-ffmpeg6-support b/multimedia/kodi/files/patch-ffmpeg6-support deleted file mode 100644 index f337f73931b2..000000000000 --- a/multimedia/kodi/files/patch-ffmpeg6-support +++ /dev/null @@ -1,2155 +0,0 @@ -diff -urN cmake/modules/FindFFMPEG.cmake.orig cmake/modules/FindFFMPEG.cmake ---- cmake/modules/FindFFMPEG.cmake.orig 2023-03-11 22:16:38.000000000 +0000 -+++ cmake/modules/FindFFMPEG.cmake 2023-04-19 10:01:30.831589000 +0000 -@@ -151,14 +151,14 @@ - set(REQUIRED_FFMPEG_VERSION undef) - else() - # required ffmpeg library versions -- set(REQUIRED_FFMPEG_VERSION 4.4.1) -- set(_avcodec_ver ">=58.134.100") -- set(_avfilter_ver ">=7.110.100") -- set(_avformat_ver ">=58.76.100") -- set(_avutil_ver ">=56.70.100") -- set(_postproc_ver ">=55.9.100") -- set(_swresample_ver ">=3.9.100") -- set(_swscale_ver ">=5.9.100") -+ set(REQUIRED_FFMPEG_VERSION 6.0.0) -+ set(_avcodec_ver ">=60.2.100") -+ set(_avfilter_ver ">=9.3.100") -+ set(_avformat_ver ">=60.3.100") -+ set(_avutil_ver ">=58.2.100") -+ set(_postproc_ver ">=57.1.100") -+ set(_swresample_ver ">=4.10.100") -+ set(_swscale_ver ">=7.1.100") - endif() - - # Allows building with external ffmpeg not found in system paths, -diff -urN tools/buildsteps/windows/patches/0001-ffmpeg-windows-configure-detect-openssl.patch.orig tools/buildsteps/windows/patches/0001-ffmpeg-windows-configure-detect-openssl.patch ---- tools/buildsteps/windows/patches/0001-ffmpeg-windows-configure-detect-openssl.patch.orig 2023-03-11 22:16:38.000000000 +0000 -+++ tools/buildsteps/windows/patches/0001-ffmpeg-windows-configure-detect-openssl.patch 2023-04-19 10:01:22.854832000 +0000 -@@ -11,7 +11,7 @@ - index d7a3f507e8..4b85e881b1 100755 - --- a/configure - +++ b/configure --@@ -6530,6 +6530,8 @@ enabled openssl && { check_pkg_config openssl openssl openssl/ssl.h OP -+@@ -6728,6 +6728,8 @@ enabled openssl && { check_pkg_config openssl openssl openssl/ssl.h OP - check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto || - check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 || - check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 || -diff -urN tools/buildsteps/windows/patches/0002-ffmpeg-windows-configure-fix-zlib-conflict.patch.orig tools/buildsteps/windows/patches/0002-ffmpeg-windows-configure-fix-zlib-conflict.patch ---- tools/buildsteps/windows/patches/0002-ffmpeg-windows-configure-fix-zlib-conflict.patch.orig 2023-03-11 22:16:38.000000000 +0000 -+++ tools/buildsteps/windows/patches/0002-ffmpeg-windows-configure-fix-zlib-conflict.patch 2023-04-19 10:01:22.854952000 +0000 -@@ -11,16 +11,16 @@ - index 4b85e881b1..da457705d1 100755 - --- a/configure - +++ b/configure --@@ -7627,6 +7627,9 @@ print_config CONFIG_ "$config_files" $CONFIG_LIST \ -+@@ -7825,6 +7825,9 @@ print_config CONFIG_ "$config_files" $CONFIG_LIST \ -+ print_config CONFIG_ "$config_files" $CONFIG_LIST \ - $CONFIG_EXTRA \ -- $ALL_COMPONENTS \ - - +echo "#if defined(HAVE_UNISTD_H) && HAVE_UNISTD_H == 0" >> $TMPH - +echo "#undef HAVE_UNISTD_H" >> $TMPH - +echo "#endif" >> $TMPH - echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH -- echo "endif # FFMPEG_CONFIG_MAK" >> ffbuild/config.mak - -+ # Do not overwrite an unchanged config.h to avoid superfluous rebuilds. - -- - 2.29.2 - -diff -urN tools/buildsteps/windows/patches/0003-ffmpeg-windows-configure-allow-building-static.patch.orig tools/buildsteps/windows/patches/0003-ffmpeg-windows-configure-allow-building-static.patch ---- tools/buildsteps/windows/patches/0003-ffmpeg-windows-configure-allow-building-static.patch.orig 2023-03-11 22:16:38.000000000 +0000 -+++ tools/buildsteps/windows/patches/0003-ffmpeg-windows-configure-allow-building-static.patch 2023-04-19 10:01:22.855081000 +0000 -@@ -11,7 +11,7 @@ - index da457705d1..e3a8f45ff4 100755 - --- a/configure - +++ b/configure --@@ -5440,6 +5440,8 @@ case $target_os in -+@@ -5566,6 +5566,8 @@ case $target_os in - enabled shared && ! enabled small && test_cmd $windres --version && enable gnu_windres - enabled x86_32 && check_ldflags -Wl,--large-address-aware - shlibdir_default="$bindir_default" -@@ -20,7 +20,7 @@ - SLIBPREF="" - SLIBSUF=".dll" - SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' --@@ -5489,6 +5491,8 @@ case $target_os in -+@@ -5615,6 +5617,8 @@ case $target_os in - fi - enabled x86_32 && check_ldflags -LARGEADDRESSAWARE - shlibdir_default="$bindir_default" -diff -urN tools/buildsteps/windows/patches/0004-ffmpeg-windows-configure-detect-libdav1d.patch.orig tools/buildsteps/windows/patches/0004-ffmpeg-windows-configure-detect-libdav1d.patch ---- tools/buildsteps/windows/patches/0004-ffmpeg-windows-configure-detect-libdav1d.patch.orig 2023-03-11 22:16:38.000000000 +0000 -+++ tools/buildsteps/windows/patches/0004-ffmpeg-windows-configure-detect-libdav1d.patch 2023-04-19 10:01:22.855205000 +0000 -@@ -11,7 +11,7 @@ - index e3a8f45ff4..983d7e1078 100755 - --- a/configure - +++ b/configure --@@ -6358,7 +6358,7 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 && -+@@ -6541,7 +6541,7 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 && - die "ERROR: libcelt must be installed and version must be >= 0.11.0."; } - enabled libcaca && require_pkg_config libcaca caca caca.h caca_create_canvas - enabled libcodec2 && require libcodec2 codec2/codec2.h codec2_create -lcodec2 -diff -urN tools/depends/target/ffmpeg/CMakeLists.txt.orig tools/depends/target/ffmpeg/CMakeLists.txt ---- tools/depends/target/ffmpeg/CMakeLists.txt.orig 2023-03-11 22:16:38.000000000 +0000 -+++ tools/depends/target/ffmpeg/CMakeLists.txt 2023-04-19 10:01:22.854687000 +0000 -@@ -92,6 +92,7 @@ - elseif(CORE_SYSTEM_NAME STREQUAL darwin_embedded) - list(APPEND ffmpeg_conf --disable-crystalhd - --enable-videotoolbox -+ --disable-filter=yadif_videotoolbox - --target-os=darwin - ) - elseif(CORE_SYSTEM_NAME STREQUAL osx) -diff -urN tools/depends/target/ffmpeg/FFMPEG-VERSION.orig tools/depends/target/ffmpeg/FFMPEG-VERSION ---- tools/depends/target/ffmpeg/FFMPEG-VERSION.orig 2023-03-11 22:16:38.000000000 +0000 -+++ tools/depends/target/ffmpeg/FFMPEG-VERSION 2023-04-19 10:02:41.108169000 +0000 -@@ -1,5 +1,5 @@ - LIBNAME=ffmpeg --BASE_URL=https://github.com/xbmc/FFmpeg --VERSION=4.4.1-Nexus-Alpha1 -+VERSION=6.0 - ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz --SHA512=8beb04d577b5251e74b0d52f4d130997a8ba94bbd488c7c8309e6b45095c27807e150212888ce3a384b23dff52f8df1a7bde5407bae924ddc363f8125c0616c5 -+SHA512=b3214328f2792364353f38c6b46a71d4970c071d8656b20780abf0e02950167d0933eae825c09102cf8fb19fc679ac444bf1f41a448b624eaa5ea6b0f0bdf4f5 -+ -diff -urN xbmc/cdrip/EncoderFFmpeg.cpp.orig xbmc/cdrip/EncoderFFmpeg.cpp ---- xbmc/cdrip/EncoderFFmpeg.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cdrip/EncoderFFmpeg.cpp 2023-04-19 10:01:22.848595000 +0000 -@@ -11,6 +11,7 @@ - #include "ServiceBroker.h" - #include "addons/Addon.h" - #include "addons/AddonManager.h" -+#include "cores/FFmpeg.h" - #include "settings/Settings.h" - #include "settings/SettingsComponent.h" - #include "utils/StringUtils.h" -@@ -19,24 +20,9 @@ - #include "utils/log.h" - - using namespace KODI::CDRIP; -+using FFMPEG_HELP_TOOLS::FFMpegErrorToString; -+using FFMPEG_HELP_TOOLS::FFMpegException; - --namespace --{ -- --struct EncoderException : public std::exception --{ -- std::string s; -- template -- EncoderException(const std::string& fmt, Args&&... args) -- : s(StringUtils::Format(fmt, std::forward(args)...)) -- { -- } -- ~EncoderException() throw() {} // Updated -- const char* what() const throw() { return s.c_str(); } --}; -- --} /* namespace */ -- - bool CEncoderFFmpeg::Init() - { - try -@@ -54,7 +40,7 @@ - } - else - { -- throw EncoderException("Could not get add-on: {}", addonId); -+ throw FFMpegException("Could not get add-on: {}", addonId); - } - - // Hack fix about PTS on generated files. -@@ -66,50 +52,50 @@ - else if (addonId == "audioencoder.kodi.builtin.wma") - m_samplesCountMultiply = 1000; - else -- throw EncoderException("Internal add-on id \"{}\" not known as usable", addonId); -+ throw FFMpegException("Internal add-on id \"{}\" not known as usable", addonId); - - const std::string filename = URIUtils::GetFileName(m_strFile); - - m_formatCtx = avformat_alloc_context(); - if (!m_formatCtx) -- throw EncoderException("Could not allocate output format context"); -+ throw FFMpegException("Could not allocate output format context"); - - m_bcBuffer = static_cast(av_malloc(BUFFER_SIZE + AV_INPUT_BUFFER_PADDING_SIZE)); - if (!m_bcBuffer) -- throw EncoderException("Could not allocate buffer"); -+ throw FFMpegException("Could not allocate buffer"); - - m_formatCtx->pb = avio_alloc_context(m_bcBuffer, BUFFER_SIZE, AVIO_FLAG_WRITE, this, nullptr, - avio_write_callback, avio_seek_callback); - if (!m_formatCtx->pb) -- throw EncoderException("Failed to allocate ByteIOContext"); -+ throw FFMpegException("Failed to allocate ByteIOContext"); - - /* Guess the desired container format based on the file extension. */ - m_formatCtx->oformat = av_guess_format(nullptr, filename.c_str(), nullptr); - if (!m_formatCtx->oformat) -- throw EncoderException("Could not find output file format"); -+ throw FFMpegException("Could not find output file format"); - - m_formatCtx->url = av_strdup(filename.c_str()); - if (!m_formatCtx->url) -- throw EncoderException("Could not allocate url"); -+ throw FFMpegException("Could not allocate url"); - - /* Find the encoder to be used by its name. */ -- AVCodec* codec = avcodec_find_encoder(m_formatCtx->oformat->audio_codec); -+ const AVCodec* codec = avcodec_find_encoder(m_formatCtx->oformat->audio_codec); - if (!codec) -- throw EncoderException("Unable to find a suitable FFmpeg encoder"); -+ throw FFMpegException("Unable to find a suitable FFmpeg encoder"); - - /* Create a new audio stream in the output file container. */ - m_stream = avformat_new_stream(m_formatCtx, nullptr); - if (!m_stream) -- throw EncoderException("Failed to allocate AVStream context"); -+ throw FFMpegException("Failed to allocate AVStream context"); - - m_codecCtx = avcodec_alloc_context3(codec); - if (!m_codecCtx) -- throw EncoderException("Failed to allocate the encoder context"); -+ throw FFMpegException("Failed to allocate the encoder context"); - - /* Set the basic encoder parameters. - * The input file's sample rate is used to avoid a sample rate conversion. */ -- m_codecCtx->channels = m_iInChannels; -- m_codecCtx->channel_layout = av_get_default_channel_layout(m_iInChannels); -+ av_channel_layout_uninit(&m_codecCtx->ch_layout); -+ av_channel_layout_default(&m_codecCtx->ch_layout, m_iInChannels); - m_codecCtx->sample_rate = m_iInSampleRate; - m_codecCtx->sample_fmt = codec->sample_fmts[0]; - m_codecCtx->bit_rate = bitrate; -@@ -128,14 +114,14 @@ - - int err = avcodec_open2(m_codecCtx, codec, nullptr); - if (err < 0) -- throw EncoderException("Failed to open the codec {} (error '{}')", -- codec->long_name ? codec->long_name : codec->name, -- FFmpegErrorToString(err)); -+ throw FFMpegException("Failed to open the codec {} (error '{}')", -+ codec->long_name ? codec->long_name : codec->name, -+ FFMpegErrorToString(err)); - - err = avcodec_parameters_from_context(m_stream->codecpar, m_codecCtx); - if (err < 0) -- throw EncoderException("Failed to copy encoder parameters to output stream (error '{}')", -- FFmpegErrorToString(err)); -+ throw FFMpegException("Failed to copy encoder parameters to output stream (error '{}')", -+ FFMpegErrorToString(err)); - - m_inFormat = GetInputFormat(m_iInBitsPerSample); - m_outFormat = m_codecCtx->sample_fmt; -@@ -150,44 +136,48 @@ - - m_bufferFrame = av_frame_alloc(); - if (!m_bufferFrame || !m_buffer) -- throw EncoderException("Failed to allocate necessary buffers"); -+ throw FFMpegException("Failed to allocate necessary buffers"); - - m_bufferFrame->nb_samples = m_codecCtx->frame_size; - m_bufferFrame->format = m_inFormat; -- m_bufferFrame->channel_layout = m_codecCtx->channel_layout; -+ -+ av_channel_layout_uninit(&m_bufferFrame->ch_layout); -+ av_channel_layout_copy(&m_bufferFrame->ch_layout, &m_codecCtx->ch_layout); -+ - m_bufferFrame->sample_rate = m_codecCtx->sample_rate; - - err = av_frame_get_buffer(m_bufferFrame, 0); - if (err < 0) -- throw EncoderException("Could not allocate output frame samples (error '{}')", -- FFmpegErrorToString(err)); -+ throw FFMpegException("Could not allocate output frame samples (error '{}')", -+ FFMpegErrorToString(err)); - - avcodec_fill_audio_frame(m_bufferFrame, m_iInChannels, m_inFormat, m_buffer, m_neededBytes, 0); - - if (m_needConversion) - { -- m_swrCtx = swr_alloc_set_opts(nullptr, m_codecCtx->channel_layout, m_outFormat, -- m_codecCtx->sample_rate, m_codecCtx->channel_layout, m_inFormat, -+ int ret = swr_alloc_set_opts2(&m_swrCtx, &m_codecCtx->ch_layout, m_outFormat, -+ m_codecCtx->sample_rate, &m_codecCtx->ch_layout, m_inFormat, - m_codecCtx->sample_rate, 0, nullptr); -- if (!m_swrCtx || swr_init(m_swrCtx) < 0) -- throw EncoderException("Failed to initialize the resampler"); -+ if (ret || swr_init(m_swrCtx) < 0) -+ throw FFMpegException("Failed to initialize the resampler"); - - m_resampledBufferSize = - av_samples_get_buffer_size(nullptr, m_iInChannels, m_neededFrames, m_outFormat, 0); - m_resampledBuffer = static_cast(av_malloc(m_resampledBufferSize)); - m_resampledFrame = av_frame_alloc(); - if (!m_resampledBuffer || !m_resampledFrame) -- throw EncoderException("Failed to allocate a frame for resampling"); -+ throw FFMpegException("Failed to allocate a frame for resampling"); - - m_resampledFrame->nb_samples = m_neededFrames; - m_resampledFrame->format = m_outFormat; -- m_resampledFrame->channel_layout = m_codecCtx->channel_layout; -+ av_channel_layout_uninit(&m_resampledFrame->ch_layout); -+ av_channel_layout_copy(&m_resampledFrame->ch_layout, &m_codecCtx->ch_layout); - m_resampledFrame->sample_rate = m_codecCtx->sample_rate; - - err = av_frame_get_buffer(m_resampledFrame, 0); - if (err < 0) -- throw EncoderException("Could not allocate output resample frame samples (error '{}')", -- FFmpegErrorToString(err)); -+ throw FFMpegException("Could not allocate output resample frame samples (error '{}')", -+ FFMpegErrorToString(err)); - - avcodec_fill_audio_frame(m_resampledFrame, m_iInChannels, m_outFormat, m_resampledBuffer, - m_resampledBufferSize, 0); -@@ -204,7 +194,7 @@ - /* write the header */ - err = avformat_write_header(m_formatCtx, nullptr); - if (err != 0) -- throw EncoderException("Failed to write the header (error '{}')", FFmpegErrorToString(err)); -+ throw FFMpegException("Failed to write the header (error '{}')", FFMpegErrorToString(err)); - - CLog::Log(LOGDEBUG, "CEncoderFFmpeg::{} - Successfully initialized with muxer {} and codec {}", - __func__, -@@ -212,16 +202,19 @@ - : m_formatCtx->oformat->name, - codec->long_name ? codec->long_name : codec->name); - } -- catch (EncoderException& caught) -+ catch (const FFMpegException& caught) - { - CLog::Log(LOGERROR, "CEncoderFFmpeg::{} - {}", __func__, caught.what()); - - av_freep(&m_buffer); -+ av_channel_layout_uninit(&m_bufferFrame->ch_layout); - av_frame_free(&m_bufferFrame); - swr_free(&m_swrCtx); -+ av_channel_layout_uninit(&m_resampledFrame->ch_layout); - av_frame_free(&m_resampledFrame); - av_freep(&m_resampledBuffer); - av_free(m_bcBuffer); -+ av_channel_layout_uninit(&m_codecCtx->ch_layout); - avcodec_free_context(&m_codecCtx); - if (m_formatCtx) - { -@@ -299,7 +292,7 @@ - if (swr_convert(m_swrCtx, m_resampledFrame->data, m_neededFrames, - const_cast(m_bufferFrame->extended_data), - m_neededFrames) < 0) -- throw EncoderException("Error resampling audio"); -+ throw FFMpegException("Error resampling audio"); - - frame = m_resampledFrame; - } -@@ -316,8 +309,8 @@ - m_bufferSize = 0; - err = avcodec_send_frame(m_codecCtx, frame); - if (err < 0) -- throw EncoderException("Error sending a frame for encoding (error '{}')", __func__, -- FFmpegErrorToString(err)); -+ throw FFMpegException("Error sending a frame for encoding (error '{}')", -+ FFMpegErrorToString(err)); - - while (err >= 0) - { -@@ -329,19 +322,18 @@ - } - else if (err < 0) - { -- throw EncoderException("Error during encoding (error '{}')", __func__, -- FFmpegErrorToString(err)); -+ throw FFMpegException("Error during encoding (error '{}')", FFMpegErrorToString(err)); - } - - err = av_write_frame(m_formatCtx, pkt); - if (err < 0) -- throw EncoderException("Failed to write the frame data (error '{}')", __func__, -- FFmpegErrorToString(err)); -+ throw FFMpegException("Failed to write the frame data (error '{}')", -+ FFMpegErrorToString(err)); - - av_packet_unref(pkt); - } - } -- catch (EncoderException& caught) -+ catch (const FFMpegException& caught) - { - CLog::Log(LOGERROR, "CEncoderFFmpeg::{} - {}", __func__, caught.what()); - } -@@ -366,8 +358,10 @@ - - /* Flush if needed */ - av_freep(&m_buffer); -+ av_channel_layout_uninit(&m_bufferFrame->ch_layout); - av_frame_free(&m_bufferFrame); - swr_free(&m_swrCtx); -+ av_channel_layout_uninit(&m_resampledFrame->ch_layout); - av_frame_free(&m_resampledFrame); - av_freep(&m_resampledBuffer); - m_needConversion = false; -@@ -379,6 +373,7 @@ - - /* cleanup */ - av_free(m_bcBuffer); -+ av_channel_layout_uninit(&m_codecCtx->ch_layout); - avcodec_free_context(&m_codecCtx); - av_freep(&m_formatCtx->pb); - avformat_free_context(m_formatCtx); -@@ -400,14 +395,6 @@ - case 32: - return AV_SAMPLE_FMT_S32; - default: -- throw EncoderException("Invalid input bits per sample"); -+ throw FFMpegException("Invalid input bits per sample"); - } --} -- --std::string CEncoderFFmpeg::FFmpegErrorToString(int err) --{ -- std::string text; -- text.reserve(AV_ERROR_MAX_STRING_SIZE); -- av_strerror(err, text.data(), AV_ERROR_MAX_STRING_SIZE); -- return text; - } -diff -urN xbmc/cdrip/EncoderFFmpeg.h.orig xbmc/cdrip/EncoderFFmpeg.h ---- xbmc/cdrip/EncoderFFmpeg.h.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cdrip/EncoderFFmpeg.h 2023-04-19 10:01:22.835616000 +0000 -@@ -39,7 +39,6 @@ - void SetTag(const std::string& tag, const std::string& value); - bool WriteFrame(); - AVSampleFormat GetInputFormat(int inBitsPerSample); -- std::string FFmpegErrorToString(int err); - - AVFormatContext* m_formatCtx{nullptr}; - AVCodecContext* m_codecCtx{nullptr}; -diff -urN xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp.orig xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp ---- xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp 2023-04-19 10:01:22.848879000 +0000 -@@ -10,14 +10,25 @@ - #define DTS_ENCODE_BITRATE 1411200 - - #include "cores/AudioEngine/Encoders/AEEncoderFFmpeg.h" --#include "cores/AudioEngine/Utils/AEUtil.h" -+ - #include "ServiceBroker.h" --#include "utils/log.h" -+#include "cores/AudioEngine/Utils/AEUtil.h" -+#include "cores/FFmpeg.h" - #include "settings/Settings.h" - #include "settings/SettingsComponent.h" --#include -+#include "utils/log.h" -+ -+extern "C" -+{ -+#include -+} -+ - #include -+#include - -+using FFMPEG_HELP_TOOLS::FFMpegErrorToString; -+using FFMPEG_HELP_TOOLS::FFMpegException; -+ - CAEEncoderFFmpeg::CAEEncoderFFmpeg() : m_CodecCtx(NULL), m_SwrCtx(NULL) - { - } -@@ -26,6 +37,7 @@ - { - Reset(); - swr_free(&m_SwrCtx); -+ av_channel_layout_uninit(&m_CodecCtx->ch_layout); - avcodec_free_context(&m_CodecCtx); - } - -@@ -81,7 +93,7 @@ - - bool ac3 = CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(CSettings::SETTING_AUDIOOUTPUT_AC3PASSTHROUGH); - -- AVCodec *codec = NULL; -+ const AVCodec* codec = nullptr; - - /* fallback to ac3 if we support it, we might not have DTS support */ - if (ac3) -@@ -102,7 +114,8 @@ - - m_CodecCtx->bit_rate = m_BitRate; - m_CodecCtx->sample_rate = format.m_sampleRate; -- m_CodecCtx->channel_layout = AV_CH_LAYOUT_5POINT1_BACK; -+ av_channel_layout_uninit(&m_CodecCtx->ch_layout); -+ av_channel_layout_from_mask(&m_CodecCtx->ch_layout, AV_CH_LAYOUT_5POINT1_BACK); - - /* select a suitable data format */ - if (codec->sample_fmts) -@@ -179,22 +192,28 @@ - LOGERROR, - "CAEEncoderFFmpeg::Initialize - Unable to find a suitable data format for the codec ({})", - m_CodecName); -+ av_channel_layout_uninit(&m_CodecCtx->ch_layout); - avcodec_free_context(&m_CodecCtx); - return false; - } - } - -- m_CodecCtx->channels = BuildChannelLayout(m_CodecCtx->channel_layout, m_Layout); -+ uint64_t mask = m_CodecCtx->ch_layout.u.mask; -+ av_channel_layout_uninit(&m_CodecCtx->ch_layout); -+ av_channel_layout_from_mask(&m_CodecCtx->ch_layout, mask); -+ m_CodecCtx->ch_layout.nb_channels = BuildChannelLayout(mask, m_Layout); - - /* open the codec */ - if (avcodec_open2(m_CodecCtx, codec, NULL)) - { -+ av_channel_layout_uninit(&m_CodecCtx->ch_layout); - avcodec_free_context(&m_CodecCtx); - return false; - } - - format.m_frames = m_CodecCtx->frame_size; -- format.m_frameSize = m_CodecCtx->channels * (CAEUtil::DataFormatToBits(format.m_dataFormat) >> 3); -+ int channels = m_CodecCtx->ch_layout.nb_channels; -+ format.m_frameSize = channels * (CAEUtil::DataFormatToBits(format.m_dataFormat) >> 3); - format.m_channelLayout = m_Layout; - - m_CurrentFormat = format; -@@ -204,14 +223,14 @@ - - if (m_NeedConversion) - { -- m_SwrCtx = swr_alloc_set_opts(NULL, -- m_CodecCtx->channel_layout, m_CodecCtx->sample_fmt, m_CodecCtx->sample_rate, -- m_CodecCtx->channel_layout, AV_SAMPLE_FMT_FLT, m_CodecCtx->sample_rate, -- 0, NULL); -- if (!m_SwrCtx || swr_init(m_SwrCtx) < 0) -+ int ret = swr_alloc_set_opts2(&m_SwrCtx, &m_CodecCtx->ch_layout, m_CodecCtx->sample_fmt, -+ m_CodecCtx->sample_rate, &m_CodecCtx->ch_layout, -+ AV_SAMPLE_FMT_FLT, m_CodecCtx->sample_rate, 0, NULL); -+ if (ret || swr_init(m_SwrCtx) < 0) - { - CLog::Log(LOGERROR, "CAEEncoderFFmpeg::Initialize - Failed to initialise resampler."); - swr_free(&m_SwrCtx); -+ av_channel_layout_uninit(&m_CodecCtx->ch_layout); - avcodec_free_context(&m_CodecCtx); - return false; - } -@@ -242,62 +261,83 @@ - - int CAEEncoderFFmpeg::Encode(uint8_t *in, int in_size, uint8_t *out, int out_size) - { -- int got_output; -- AVFrame *frame; -+ int size = 0; -+ int err = AVERROR_UNKNOWN; -+ AVFrame* frame = nullptr; -+ AVPacket* pkt = nullptr; - - if (!m_CodecCtx) -- return 0; -+ return size; - -- /* allocate the input frame -- * sadly, we have to alloc/dealloc it everytime since we have no guarantee the -- * data argument will be constant over iterated calls and the frame needs to -- * setup pointers inside data */ -- frame = av_frame_alloc(); -- if (!frame) -- return 0; -+ try -+ { -+ /* allocate the input frame and output packet -+ * sadly, we have to alloc/dealloc it everytime since we have no guarantee the -+ * data argument will be constant over iterated calls and the frame needs to -+ * setup pointers inside data */ -+ frame = av_frame_alloc(); -+ pkt = av_packet_alloc(); -+ if (!frame || !pkt) -+ throw FFMpegException( -+ "Failed to allocate \"AVFrame\" or \"AVPacket\" for encoding (error '{}')", -+ strerror(errno)); - -- frame->nb_samples = m_CodecCtx->frame_size; -- frame->format = m_CodecCtx->sample_fmt; -- frame->channel_layout = m_CodecCtx->channel_layout; -- frame->channels = m_CodecCtx->channels; -+ frame->nb_samples = m_CodecCtx->frame_size; -+ frame->format = m_CodecCtx->sample_fmt; -+ av_channel_layout_uninit(&frame->ch_layout); -+ av_channel_layout_copy(&frame->ch_layout, &m_CodecCtx->ch_layout); -+ int channelNum = m_CodecCtx->ch_layout.nb_channels; - -- avcodec_fill_audio_frame(frame, m_CodecCtx->channels, m_CodecCtx->sample_fmt, -- in, in_size, 0); -+ avcodec_fill_audio_frame(frame, channelNum, m_CodecCtx->sample_fmt, in, in_size, 0); - -- /* initialize the output packet */ -- AVPacket* pkt = av_packet_alloc(); -- if (!pkt) -+ /* encode it */ -+ err = avcodec_send_frame(m_CodecCtx, frame); -+ if (err < 0) -+ throw FFMpegException("Error sending a frame for encoding (error '{}')", -+ FFMpegErrorToString(err)); -+ -+ err = avcodec_receive_packet(m_CodecCtx, pkt); -+ //! @TODO: This is a workaround for our current design. The caller should be made -+ // aware of the potential error values to use the ffmpeg API in a proper way, which means -+ // copying with EAGAIN and multiple packet output. -+ // For the current situation there is a relationship implicitely assumed of: -+ // 1 frame in - 1 packet out. This holds true in practice but the API does not guarantee it. -+ if (err >= 0) -+ { -+ if (pkt->size <= out_size) -+ { -+ memset(out, 0, out_size); -+ memcpy(out, pkt->data, pkt->size); -+ size = pkt->size; -+ } -+ else -+ { -+ CLog::LogF(LOGERROR, "Encoded pkt size ({}) is bigger than buffer ({})", pkt->size, -+ out_size); -+ } -+ av_packet_unref(pkt); -+ } -+ else -+ { -+ CLog::LogF(LOGERROR, "Error receiving encoded paket ({})", err); -+ } -+ } -+ catch (const FFMpegException& caught) - { -- CLog::Log(LOGERROR, "CAEEncoderFFmpeg::{} - av_packet_alloc failed: {}", __FUNCTION__, -- strerror(errno)); -- av_frame_free(&frame); -- return 0; -+ CLog::Log(LOGERROR, "CAEEncoderFFmpeg::{} - {}", __func__, caught.what()); - } - -- pkt->size = out_size; -- pkt->data = out; -+ av_channel_layout_uninit(&frame->ch_layout); - -- /* encode it */ -- int ret = avcodec_encode_audio2(m_CodecCtx, pkt, frame, &got_output); -- -- int size = pkt->size; -- - /* free temporary data */ - av_frame_free(&frame); - - /* free the packet */ - av_packet_free(&pkt); - -- if (ret < 0 || !got_output) -- { -- CLog::Log(LOGERROR, "CAEEncoderFFmpeg::Encode - Encoding failed"); -- return 0; -- } -- - /* return the number of frames used */ - return size; - } -- - - int CAEEncoderFFmpeg::GetData(uint8_t **data) - { -diff -urN xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp.orig xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp ---- xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp 2023-04-19 10:01:22.849708000 +0000 -@@ -16,17 +16,16 @@ - #include "ActiveAESound.h" - #include "ActiveAEStream.h" - #include "ServiceBroker.h" -+#include "cores/AudioEngine/AEResampleFactory.h" -+#include "cores/AudioEngine/Encoders/AEEncoderFFmpeg.h" - #include "cores/AudioEngine/Interfaces/IAudioCallback.h" --#include "cores/AudioEngine/Utils/AEUtil.h" - #include "cores/AudioEngine/Utils/AEStreamData.h" - #include "cores/AudioEngine/Utils/AEStreamInfo.h" --#include "cores/AudioEngine/AEResampleFactory.h" --#include "cores/AudioEngine/Encoders/AEEncoderFFmpeg.h" -- -+#include "cores/AudioEngine/Utils/AEUtil.h" - #include "settings/Settings.h" - #include "settings/SettingsComponent.h" --#include "windowing/WinSystem.h" - #include "utils/log.h" -+#include "windowing/WinSystem.h" - - using namespace std::chrono_literals; - -@@ -3043,8 +3042,8 @@ - AVFormatContext *fmt_ctx = nullptr; - AVCodecContext *dec_ctx = nullptr; - AVIOContext *io_ctx; -- AVInputFormat *io_fmt = nullptr; -- AVCodec *dec = nullptr; -+ const AVInputFormat* io_fmt = nullptr; -+ const AVCodec* dec = nullptr; - SampleConfig config; - - // No custom deleter until sound is registered -@@ -3096,8 +3095,8 @@ - AVCodecID codecId = fmt_ctx->streams[0]->codecpar->codec_id; - dec = avcodec_find_decoder(codecId); - config.sample_rate = fmt_ctx->streams[0]->codecpar->sample_rate; -- config.channels = fmt_ctx->streams[0]->codecpar->channels; -- config.channel_layout = fmt_ctx->streams[0]->codecpar->channel_layout; -+ config.channels = fmt_ctx->streams[0]->codecpar->ch_layout.nb_channels; -+ config.channel_layout = fmt_ctx->streams[0]->codecpar->ch_layout.u.mask; - } - } - if (dec == nullptr) -@@ -3113,10 +3112,14 @@ - - dec_ctx = avcodec_alloc_context3(dec); - dec_ctx->sample_rate = config.sample_rate; -- dec_ctx->channels = config.channels; -+ AVChannelLayout layout = {}; - if (!config.channel_layout) -- config.channel_layout = av_get_default_channel_layout(config.channels); -- dec_ctx->channel_layout = config.channel_layout; -+ av_channel_layout_default(&layout, config.channels); -+ else -+ av_channel_layout_from_mask(&layout, config.channel_layout); -+ config.channel_layout = layout.u.mask; -+ av_channel_layout_copy(&dec_ctx->ch_layout, &layout); -+ av_channel_layout_uninit(&layout); - - AVPacket* avpkt = av_packet_alloc(); - if (!avpkt) -@@ -3183,6 +3186,7 @@ - - av_packet_free(&avpkt); - av_frame_free(&decoded_frame); -+ av_channel_layout_uninit(&dec_ctx->ch_layout); - avcodec_free_context(&dec_ctx); - avformat_close_input(&fmt_ctx); - if (io_ctx) -diff -urN xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEFilter.cpp.orig xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEFilter.cpp ---- xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEFilter.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEFilter.cpp 2023-04-19 10:01:22.849964000 +0000 -@@ -12,8 +12,8 @@ - #include - - extern "C" { --#include - #include -+#include - #include - #include - #include -@@ -171,7 +171,10 @@ - } - - if (m_pOutFrame) -+ { -+ av_channel_layout_uninit(&m_pOutFrame->ch_layout); - av_frame_free(&m_pOutFrame); -+ } - - if (m_pConvertFrame) - av_frame_free(&m_pConvertFrame); -@@ -205,10 +208,9 @@ - if (!frame) - return -1; - -- int channels = av_get_channel_layout_nb_channels(m_channelLayout); -- -- frame->channel_layout = m_channelLayout; -- frame->channels = channels; -+ av_channel_layout_uninit(&frame->ch_layout); -+ av_channel_layout_from_mask(&frame->ch_layout, m_channelLayout); -+ int channels = frame->ch_layout.nb_channels; - frame->sample_rate = m_sampleRate; - frame->nb_samples = src_samples; - frame->format = m_sampleFormat; -@@ -224,6 +226,7 @@ - src_buffer[0], src_bufsize, 16); - if (result < 0) - { -+ av_channel_layout_uninit(&frame->ch_layout); - av_frame_free(&frame); - CLog::Log(LOGERROR, "CActiveAEFilter::ProcessFilter - avcodec_fill_audio_frame failed"); - m_filterEof = true; -@@ -231,6 +234,7 @@ - } - - result = av_buffersrc_write_frame(m_pFilterCtxIn, frame); -+ av_channel_layout_uninit(&frame->ch_layout); - av_frame_free(&frame); - if (result < 0) - { -@@ -284,7 +288,8 @@ - { - av_frame_unref(m_pOutFrame); - m_pOutFrame->format = m_sampleFormat; -- m_pOutFrame->channel_layout = m_channelLayout; -+ av_channel_layout_uninit(&m_pOutFrame->ch_layout); -+ av_channel_layout_from_mask(&m_pOutFrame->ch_layout, m_channelLayout); - m_pOutFrame->sample_rate = m_sampleRate; - result = swr_convert_frame(m_pConvertCtx, m_pOutFrame, m_pConvertFrame); - av_frame_unref(m_pConvertFrame); -@@ -302,7 +307,10 @@ - - if (m_hasData) - { -- int channels = av_get_channel_layout_nb_channels(m_channelLayout); -+ AVChannelLayout layout = {}; -+ av_channel_layout_from_mask(&layout, m_channelLayout); -+ int channels = layout.nb_channels; -+ av_channel_layout_uninit(&layout); - int planes = av_sample_fmt_is_planar(m_sampleFormat) ? channels : 1; - int samples = std::min(dst_samples, m_pOutFrame->nb_samples - m_sampleOffset); - int bytes = samples * av_get_bytes_per_sample(m_sampleFormat) * channels / planes; -diff -urN xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResampleFFMPEG.cpp.orig xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResampleFFMPEG.cpp ---- xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResampleFFMPEG.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResampleFFMPEG.cpp 2023-04-19 10:01:22.850224000 +0000 -@@ -49,15 +49,30 @@ - m_doesResample = true; - - if (m_dst_chan_layout == 0) -- m_dst_chan_layout = av_get_default_channel_layout(m_dst_channels); -+ { -+ AVChannelLayout layout = {}; -+ av_channel_layout_default(&layout, m_dst_channels); -+ m_dst_chan_layout = layout.u.mask; -+ av_channel_layout_uninit(&layout); -+ } - if (m_src_chan_layout == 0) -- m_src_chan_layout = av_get_default_channel_layout(m_src_channels); -+ { -+ AVChannelLayout layout = {}; -+ av_channel_layout_default(&layout, m_src_channels); -+ m_src_chan_layout = layout.u.mask; -+ av_channel_layout_uninit(&layout); -+ } - -- m_pContext = swr_alloc_set_opts(NULL, m_dst_chan_layout, m_dst_fmt, m_dst_rate, -- m_src_chan_layout, m_src_fmt, m_src_rate, -- 0, NULL); -+ AVChannelLayout dstChLayout = {}; -+ AVChannelLayout srcChLayout = {}; - -- if (!m_pContext) -+ av_channel_layout_from_mask(&dstChLayout, m_dst_chan_layout); -+ av_channel_layout_from_mask(&srcChLayout, m_src_chan_layout); -+ -+ int ret = swr_alloc_set_opts2(&m_pContext, &dstChLayout, m_dst_fmt, m_dst_rate, &srcChLayout, -+ m_src_fmt, m_src_rate, 0, NULL); -+ -+ if (ret) - { - CLog::Log(LOGERROR, "CActiveAEResampleFFMPEG::Init - create context failed"); - return false; -@@ -126,10 +141,12 @@ - else if (upmix && m_src_channels == 2 && m_dst_channels > 2) - { - memset(m_rematrix, 0, sizeof(m_rematrix)); -+ av_channel_layout_uninit(&dstChLayout); -+ av_channel_layout_from_mask(&dstChLayout, m_dst_chan_layout); - for (int out=0; out - #endif - --extern "C" { --#include --} -- - void AEDelayStatus::SetDelay(double d) - { - delay = d; -@@ -550,34 +546,64 @@ - } - } - --uint64_t CAEUtil::GetAVChannel(enum AEChannel aechannel) -+uint64_t CAEUtil::GetAVChannelMask(enum AEChannel aechannel) - { -+ enum AVChannel ch = GetAVChannel(aechannel); -+ if (ch == AV_CHAN_NONE) -+ return 0; -+ return (1ULL << ch); -+} -+ -+enum AVChannel CAEUtil::GetAVChannel(enum AEChannel aechannel) -+{ - switch (aechannel) - { -- case AE_CH_FL: return AV_CH_FRONT_LEFT; -- case AE_CH_FR: return AV_CH_FRONT_RIGHT; -- case AE_CH_FC: return AV_CH_FRONT_CENTER; -- case AE_CH_LFE: return AV_CH_LOW_FREQUENCY; -- case AE_CH_BL: return AV_CH_BACK_LEFT; -- case AE_CH_BR: return AV_CH_BACK_RIGHT; -- case AE_CH_FLOC: return AV_CH_FRONT_LEFT_OF_CENTER; -- case AE_CH_FROC: return AV_CH_FRONT_RIGHT_OF_CENTER; -- case AE_CH_BC: return AV_CH_BACK_CENTER; -- case AE_CH_SL: return AV_CH_SIDE_LEFT; -- case AE_CH_SR: return AV_CH_SIDE_RIGHT; -- case AE_CH_TC: return AV_CH_TOP_CENTER; -- case AE_CH_TFL: return AV_CH_TOP_FRONT_LEFT; -- case AE_CH_TFC: return AV_CH_TOP_FRONT_CENTER; -- case AE_CH_TFR: return AV_CH_TOP_FRONT_RIGHT; -- case AE_CH_TBL: return AV_CH_TOP_BACK_LEFT; -- case AE_CH_TBC: return AV_CH_TOP_BACK_CENTER; -- case AE_CH_TBR: return AV_CH_TOP_BACK_RIGHT; -- default: -- return 0; -+ case AE_CH_FL: -+ return AV_CHAN_FRONT_LEFT; -+ case AE_CH_FR: -+ return AV_CHAN_FRONT_RIGHT; -+ case AE_CH_FC: -+ return AV_CHAN_FRONT_CENTER; -+ case AE_CH_LFE: -+ return AV_CHAN_LOW_FREQUENCY; -+ case AE_CH_BL: -+ return AV_CHAN_BACK_LEFT; -+ case AE_CH_BR: -+ return AV_CHAN_BACK_RIGHT; -+ case AE_CH_FLOC: -+ return AV_CHAN_FRONT_LEFT_OF_CENTER; -+ case AE_CH_FROC: -+ return AV_CHAN_FRONT_RIGHT_OF_CENTER; -+ case AE_CH_BC: -+ return AV_CHAN_BACK_CENTER; -+ case AE_CH_SL: -+ return AV_CHAN_SIDE_LEFT; -+ case AE_CH_SR: -+ return AV_CHAN_SIDE_RIGHT; -+ case AE_CH_TC: -+ return AV_CHAN_TOP_CENTER; -+ case AE_CH_TFL: -+ return AV_CHAN_TOP_FRONT_LEFT; -+ case AE_CH_TFC: -+ return AV_CHAN_TOP_FRONT_CENTER; -+ case AE_CH_TFR: -+ return AV_CHAN_TOP_FRONT_RIGHT; -+ case AE_CH_TBL: -+ return AV_CHAN_TOP_BACK_LEFT; -+ case AE_CH_TBC: -+ return AV_CHAN_TOP_BACK_CENTER; -+ case AE_CH_TBR: -+ return AV_CHAN_TOP_BACK_RIGHT; -+ default: -+ return AV_CHAN_NONE; - } - } - - int CAEUtil::GetAVChannelIndex(enum AEChannel aechannel, uint64_t layout) - { -- return av_get_channel_layout_channel_index(layout, GetAVChannel(aechannel)); -+ AVChannelLayout ch_layout = {}; -+ av_channel_layout_from_mask(&ch_layout, layout); -+ int idx = av_channel_layout_index_from_channel(&ch_layout, GetAVChannel(aechannel)); -+ av_channel_layout_uninit(&ch_layout); -+ return idx; - } -diff -urN xbmc/cores/AudioEngine/Utils/AEUtil.h.orig xbmc/cores/AudioEngine/Utils/AEUtil.h ---- xbmc/cores/AudioEngine/Utils/AEUtil.h.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/AudioEngine/Utils/AEUtil.h 2023-04-19 10:01:22.850626000 +0000 -@@ -13,6 +13,7 @@ - #include - - extern "C" { -+#include - #include - } - -@@ -171,6 +172,7 @@ - static uint64_t GetAVChannelLayout(const CAEChannelInfo &info); - static CAEChannelInfo GetAEChannelLayout(uint64_t layout); - static AVSampleFormat GetAVSampleFormat(AEDataFormat format); -- static uint64_t GetAVChannel(enum AEChannel aechannel); -+ static uint64_t GetAVChannelMask(enum AEChannel aechannel); -+ static enum AVChannel GetAVChannel(enum AEChannel aechannel); - static int GetAVChannelIndex(enum AEChannel aechannel, uint64_t layout); - }; -diff -urN xbmc/cores/FFmpeg.cpp.orig xbmc/cores/FFmpeg.cpp ---- xbmc/cores/FFmpeg.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/FFmpeg.cpp 2023-04-19 10:01:22.850804000 +0000 -@@ -16,11 +16,29 @@ - #include "utils/StringUtils.h" - #include "utils/log.h" - -+extern "C" -+{ -+#include -+} -+ - #include - #include - - static thread_local CFFmpegLog* CFFmpegLogTls; - -+namespace FFMPEG_HELP_TOOLS -+{ -+ -+std::string FFMpegErrorToString(int err) -+{ -+ std::string text; -+ text.resize(AV_ERROR_MAX_STRING_SIZE); -+ av_strerror(err, text.data(), AV_ERROR_MAX_STRING_SIZE); -+ return text; -+} -+ -+} // namespace FFMPEG_HELP_TOOLS -+ - void CFFmpegLog::SetLogLevel(int level) - { - CFFmpegLog::ClearLogLevel(); -@@ -117,3 +135,128 @@ - buffer.erase(0, start); - } - -+std::tuple GetPacketExtradata(const AVPacket* pkt, -+ const AVCodecParserContext* parserCtx, -+ AVCodecContext* codecCtx) -+{ -+ constexpr int FF_MAX_EXTRADATA_SIZE = ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE); -+ -+ if (!pkt) -+ return std::make_tuple(nullptr, 0); -+ -+ uint8_t* extraData = nullptr; -+ int extraDataSize = 0; -+ -+ /* extract_extradata bitstream filter is implemented only -+ * for certain codecs, as noted in discussion of PR#21248 -+ */ -+ -+ AVCodecID codecId = codecCtx->codec_id; -+ -+ // clang-format off -+ if ( -+ codecId != AV_CODEC_ID_MPEG1VIDEO && -+ codecId != AV_CODEC_ID_MPEG2VIDEO && -+ codecId != AV_CODEC_ID_H264 && -+ codecId != AV_CODEC_ID_HEVC && -+ codecId != AV_CODEC_ID_MPEG4 && -+ codecId != AV_CODEC_ID_VC1 && -+ codecId != AV_CODEC_ID_AV1 && -+ codecId != AV_CODEC_ID_AVS2 && -+ codecId != AV_CODEC_ID_AVS3 && -+ codecId != AV_CODEC_ID_CAVS -+ ) -+ // clang-format on -+ return std::make_tuple(nullptr, 0); -+ -+ const AVBitStreamFilter* f = av_bsf_get_by_name("extract_extradata"); -+ if (!f) -+ return std::make_tuple(nullptr, 0); -+ -+ AVBSFContext* bsf = nullptr; -+ int ret = av_bsf_alloc(f, &bsf); -+ if (ret < 0) -+ return std::make_tuple(nullptr, 0); -+ -+ bsf->par_in->codec_id = codecId; -+ -+ ret = av_bsf_init(bsf); -+ if (ret < 0) -+ { -+ av_bsf_free(&bsf); -+ return std::make_tuple(nullptr, 0); -+ } -+ -+ AVPacket* dstPkt = av_packet_alloc(); -+ if (!dstPkt) -+ { -+ CLog::LogF(LOGERROR, "failed to allocate packet"); -+ -+ av_bsf_free(&bsf); -+ return std::make_tuple(nullptr, 0); -+ } -+ AVPacket* pktRef = dstPkt; -+ -+ ret = av_packet_ref(pktRef, pkt); -+ if (ret < 0) -+ { -+ av_bsf_free(&bsf); -+ av_packet_free(&dstPkt); -+ return std::make_tuple(nullptr, 0); -+ } -+ -+ ret = av_bsf_send_packet(bsf, pktRef); -+ if (ret < 0) -+ { -+ av_packet_unref(pktRef); -+ av_bsf_free(&bsf); -+ av_packet_free(&dstPkt); -+ return std::make_tuple(nullptr, 0); -+ } -+ -+ ret = 0; -+ while (ret >= 0) -+ { -+ ret = av_bsf_receive_packet(bsf, pktRef); -+ if (ret < 0) -+ { -+ if (ret != AVERROR(EAGAIN) && ret != AVERROR_EOF) -+ break; -+ -+ continue; -+ } -+ -+ size_t retExtraDataSize = 0; -+ uint8_t* retExtraData = -+ av_packet_get_side_data(pktRef, AV_PKT_DATA_NEW_EXTRADATA, &retExtraDataSize); -+ if (retExtraData && retExtraDataSize > 0 && retExtraDataSize < FF_MAX_EXTRADATA_SIZE) -+ { -+ extraData = static_cast(av_malloc(retExtraDataSize + AV_INPUT_BUFFER_PADDING_SIZE)); -+ if (!extraData) -+ { -+ CLog::LogF(LOGERROR, "failed to allocate {} bytes for extradata", retExtraDataSize); -+ -+ av_packet_unref(pktRef); -+ av_bsf_free(&bsf); -+ av_packet_free(&dstPkt); -+ return std::make_tuple(nullptr, 0); -+ } -+ -+ CLog::LogF(LOGDEBUG, "fetching extradata, extradata_size({})", retExtraDataSize); -+ -+ memcpy(extraData, retExtraData, retExtraDataSize); -+ memset(extraData + retExtraDataSize, 0, AV_INPUT_BUFFER_PADDING_SIZE); -+ extraDataSize = retExtraDataSize; -+ -+ av_packet_unref(pktRef); -+ break; -+ } -+ -+ av_packet_unref(pktRef); -+ } -+ -+ av_bsf_free(&bsf); -+ av_packet_free(&dstPkt); -+ -+ return std::make_tuple(extraData, extraDataSize); -+} -diff -urN xbmc/cores/FFmpeg.h.orig xbmc/cores/FFmpeg.h ---- xbmc/cores/FFmpeg.h.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/FFmpeg.h 2023-04-19 10:01:22.850926000 +0000 -@@ -10,6 +10,7 @@ - - #include "ServiceBroker.h" - #include "utils/CPUInfo.h" -+#include "utils/StringUtils.h" - - extern "C" { - #include -@@ -21,6 +22,26 @@ - #include - } - -+#include -+ -+namespace FFMPEG_HELP_TOOLS -+{ -+ -+struct FFMpegException : public std::exception -+{ -+ std::string s; -+ template -+ FFMpegException(const std::string& fmt, Args&&... args) -+ : s(StringUtils::Format(fmt, std::forward(args)...)) -+ { -+ } -+ const char* what() const noexcept override { return s.c_str(); } -+}; -+ -+std::string FFMpegErrorToString(int err); -+ -+} // namespace FFMPEG_HELP_TOOLS -+ - inline int PPCPUFlags() - { - unsigned int cpuFeatures = CServiceBroker::GetCPUInfo()->GetCPUFeatures(); -@@ -51,3 +72,6 @@ - int level; - }; - -+std::tuple GetPacketExtradata(const AVPacket* pkt, -+ const AVCodecParserContext* parserCtx, -+ AVCodecContext* codecCtx); -diff -urN xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp.orig xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp ---- xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp 2023-04-19 10:01:30.826672000 +0000 -@@ -7,14 +7,16 @@ - */ - - #include "DVDAudioCodecFFmpeg.h" --#include "ServiceBroker.h" -+ - #include "../../DVDStreamInfo.h" --#include "utils/log.h" -+#include "DVDCodecs/DVDCodecs.h" -+#include "ServiceBroker.h" -+#include "cores/AudioEngine/Utils/AEUtil.h" -+#include "cores/FFmpeg.h" - #include "settings/AdvancedSettings.h" - #include "settings/Settings.h" - #include "settings/SettingsComponent.h" --#include "DVDCodecs/DVDCodecs.h" --#include "cores/AudioEngine/Utils/AEUtil.h" -+#include "utils/log.h" - - extern "C" { - #include -@@ -44,7 +46,7 @@ - return false; - } - -- AVCodec* pCodec = NULL; -+ const AVCodec* pCodec = nullptr; - bool allowdtshddecode = true; - - // set any special options -@@ -71,13 +73,28 @@ - m_pCodecContext->debug = 0; - m_pCodecContext->workaround_bugs = 1; - -+#if LIBAVCODEC_VERSION_MAJOR < 60 - if (pCodec->capabilities & AV_CODEC_CAP_TRUNCATED) - m_pCodecContext->flags |= AV_CODEC_FLAG_TRUNCATED; -+#endif - - m_matrixEncoding = AV_MATRIX_ENCODING_NONE; - m_channels = 0; -- m_pCodecContext->channels = hints.channels; -- m_hint_layout = hints.channellayout; -+ av_channel_layout_uninit(&m_pCodecContext->ch_layout); -+ -+ if (hints.channels > 0 && hints.channellayout > 0) -+ { -+ m_pCodecContext->ch_layout.order = AV_CHANNEL_ORDER_NATIVE; -+ m_pCodecContext->ch_layout.nb_channels = hints.channels; -+ m_pCodecContext->ch_layout.u.mask = hints.channellayout; -+ } -+ else if (hints.channels > 0) -+ { -+ av_channel_layout_default(&m_pCodecContext->ch_layout, hints.channels); -+ } -+ -+ m_hint_layout = m_pCodecContext->ch_layout.u.mask; -+ - m_pCodecContext->sample_rate = hints.samplerate; - m_pCodecContext->block_align = hints.blockalign; - m_pCodecContext->bit_rate = hints.bitrate; -@@ -259,12 +276,13 @@ - m_format.m_frameSize = m_format.m_channelLayout.Count() * - CAEUtil::DataFormatToBits(m_format.m_dataFormat) >> 3; - -- int planes = av_sample_fmt_is_planar(m_pCodecContext->sample_fmt) ? m_pFrame->channels : 1; -+ int channels = m_pFrame->ch_layout.nb_channels; -+ int planes = av_sample_fmt_is_planar(m_pCodecContext->sample_fmt) ? channels : 1; -+ - for (int i=0; iextended_data[i]; - -- return m_pFrame->nb_samples * m_pFrame->channels * -- av_get_bytes_per_sample(m_pCodecContext->sample_fmt); -+ return m_pFrame->nb_samples * channels * av_get_bytes_per_sample(m_pCodecContext->sample_fmt); - } - - return 0; -@@ -278,7 +296,7 @@ - - int CDVDAudioCodecFFmpeg::GetChannels() - { -- return m_pCodecContext->channels; -+ return m_pCodecContext->ch_layout.nb_channels; - } - - int CDVDAudioCodecFFmpeg::GetSampleRate() -@@ -345,28 +363,33 @@ - - void CDVDAudioCodecFFmpeg::BuildChannelMap() - { -- if (m_channels == m_pCodecContext->channels && m_layout == m_pCodecContext->channel_layout) -+ int codecChannels = m_pCodecContext->ch_layout.nb_channels; -+ uint64_t codecChannelLayout = m_pCodecContext->ch_layout.u.mask; -+ if (m_channels == codecChannels && m_layout == codecChannelLayout) - return; //nothing to do here - -- m_channels = m_pCodecContext->channels; -- m_layout = m_pCodecContext->channel_layout; -+ m_channels = codecChannels; -+ m_layout = codecChannelLayout; - - int64_t layout; - -- int bits = count_bits(m_pCodecContext->channel_layout); -- if (bits == m_pCodecContext->channels) -- layout = m_pCodecContext->channel_layout; -+ int bits = count_bits(codecChannelLayout); -+ if (bits == codecChannels) -+ layout = codecChannelLayout; - else - { - CLog::Log(LOGINFO, - "CDVDAudioCodecFFmpeg::GetChannelMap - FFmpeg reported {} channels, but the layout " - "contains {} - trying hints", -- m_pCodecContext->channels, bits); -- if (static_cast(count_bits(m_hint_layout)) == m_pCodecContext->channels) -+ codecChannels, bits); -+ if (static_cast(count_bits(m_hint_layout)) == codecChannels) - layout = m_hint_layout; - else - { -- layout = av_get_default_channel_layout(m_pCodecContext->channels); -+ AVChannelLayout def_layout = {}; -+ av_channel_layout_default(&def_layout, codecChannels); -+ layout = def_layout.u.mask; -+ av_channel_layout_uninit(&def_layout); - CLog::Log(LOGINFO, "Using default layout..."); - } - } -@@ -392,7 +415,7 @@ - if (layout & AV_CH_TOP_BACK_CENTER ) m_channelLayout += AE_CH_BC ; - if (layout & AV_CH_TOP_BACK_RIGHT ) m_channelLayout += AE_CH_BR ; - -- m_channels = m_pCodecContext->channels; -+ m_channels = codecChannels; - } - - CAEChannelInfo CDVDAudioCodecFFmpeg::GetChannelMap() -diff -urN xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp.orig xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp ---- xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp 2023-04-19 10:01:22.851350000 +0000 -@@ -10,6 +10,7 @@ - - #include "DVDOverlayImage.h" - #include "DVDStreamInfo.h" -+#include "cores/FFmpeg.h" - #include "cores/VideoPlayer/Interface/DemuxPacket.h" - #include "cores/VideoPlayer/Interface/TimingConstants.h" - #include "utils/EndianSwap.h" -@@ -39,7 +40,7 @@ - if (hints.codec == AV_CODEC_ID_EIA_608) - return false; - -- AVCodec* pCodec = avcodec_find_decoder(hints.codec); -+ const AVCodec* pCodec = avcodec_find_decoder(hints.codec); - if (!pCodec) - { - CLog::Log(LOGDEBUG, "{} - Unable to find codec {}", __FUNCTION__, hints.codec); -diff -urN xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp.orig xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp ---- xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp 2023-04-19 10:01:30.832626000 +0000 -@@ -12,6 +12,7 @@ - #include "DVDCodecs/DVDFactoryCodec.h" - #include "DVDStreamInfo.h" - #include "ServiceBroker.h" -+#include "cores/FFmpeg.h" - #include "cores/VideoPlayer/Interface/TimingConstants.h" - #include "cores/VideoPlayer/VideoRenderers/RenderManager.h" - #include "cores/VideoSettings.h" -@@ -27,12 +28,13 @@ - #include - - extern "C" { --#include --#include - #include - #include - #include -+#include -+#include - #include -+#include - } - - #ifndef TARGET_POSIX -@@ -327,7 +329,7 @@ - m_hints = hints; - m_options = options; - -- AVCodec* pCodec = nullptr; -+ const AVCodec* pCodec = nullptr; - - m_iOrientation = hints.orientation; - -@@ -368,6 +370,10 @@ - m_pCodecContext->get_format = GetFormat; - m_pCodecContext->codec_tag = hints.codec_tag; - -+#if LIBAVCODEC_VERSION_MAJOR >= 60 -+ m_pCodecContext->flags = AV_CODEC_FLAG_COPY_OPAQUE; -+#endif -+ - // setup threading model - if (!(hints.codecOptions & CODEC_FORCE_SOFTWARE)) - { -@@ -543,9 +549,10 @@ - CLog::Log(LOGDEBUG, "CDVDVideoCodecFFmpeg - Updated codec: {}", m_name); - } - -+#if LIBAVCODEC_VERSION_MAJOR < 60 - union pts_union - { -- double pts_d; -+ double pts_d; - int64_t pts_i; - }; - -@@ -555,6 +562,7 @@ - u.pts_d = pts; - return u.pts_i; - } -+#endif - - bool CDVDVideoCodecFFmpeg::AddData(const DemuxPacket &packet) - { -@@ -573,7 +581,10 @@ - m_started = true; - - m_dts = packet.dts; -+ -+#if LIBAVCODEC_VERSION_MAJOR < 60 - m_pCodecContext->reordered_opaque = pts_dtoi(packet.pts); -+#endif - - AVPacket* avpkt = av_packet_alloc(); - if (!avpkt) -@@ -1048,24 +1059,27 @@ - pVideoPicture->qscale_type = 0; - - AVFrameSideData* sd; -- sd = av_frame_get_side_data(m_pFrame, AV_FRAME_DATA_QP_TABLE_PROPERTIES); -+ -+ // https://github.com/FFmpeg/FFmpeg/blob/991d417692/doc/APIchanges#L18-L20 -+ sd = av_frame_get_side_data(m_pFrame, AV_FRAME_DATA_VIDEO_ENC_PARAMS); - if (sd) - { -- struct qp_properties -- { -- int stride; -- int type; -- }; -+ unsigned int mb_h = (m_pFrame->height + 15) / 16; -+ unsigned int mb_w = (m_pFrame->width + 15) / 16; -+ unsigned int nb_mb = mb_h * mb_w; -+ unsigned int block_idx; - -- auto qp = reinterpret_cast(sd->data); -- -- sd = av_frame_get_side_data(m_pFrame, AV_FRAME_DATA_QP_TABLE_DATA); -- if (sd && sd->buf && qp) -+ auto par = reinterpret_cast(sd->data); -+ if (par->type == AV_VIDEO_ENC_PARAMS_MPEG2 && (par->nb_blocks == 0 || par->nb_blocks == nb_mb)) - { -- // this seems wrong but it's what ffmpeg does internally -- pVideoPicture->qp_table = reinterpret_cast(sd->buf->data); -- pVideoPicture->qstride = qp->stride; -- pVideoPicture->qscale_type = qp->type; -+ pVideoPicture->qstride = mb_w; -+ pVideoPicture->qscale_type = par->type; -+ pVideoPicture->qp_table = static_cast(av_malloc(nb_mb)); -+ for (block_idx = 0; block_idx < nb_mb; block_idx++) -+ { -+ AVVideoBlockParams* b = av_video_enc_params_block(par, block_idx); -+ pVideoPicture->qp_table[block_idx] = par->qp + b->delta_qp; -+ } - } - } - -@@ -1159,8 +1173,9 @@ - const AVFilter* outFilter = avfilter_get_by_name("buffersink"); // should be last filter in the graph for now - - std::string args = StringUtils::Format( -- "{}:{}:{}:{}:{}:{}:{}", m_pCodecContext->width, m_pCodecContext->height, -- m_pCodecContext->pix_fmt, m_pCodecContext->time_base.num ? m_pCodecContext->time_base.num : 1, -+ "video_size={}x{}:pix_fmt={}:time_base={}/{}:pixel_aspect={}/{}", m_pCodecContext->width, -+ m_pCodecContext->height, m_pCodecContext->pix_fmt, -+ m_pCodecContext->time_base.num ? m_pCodecContext->time_base.num : 1, - m_pCodecContext->time_base.num ? m_pCodecContext->time_base.den : 1, - m_pCodecContext->sample_aspect_ratio.num != 0 ? m_pCodecContext->sample_aspect_ratio.num : 1, - m_pCodecContext->sample_aspect_ratio.num != 0 ? m_pCodecContext->sample_aspect_ratio.den : 1); -diff -urN xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoPPFFmpeg.cpp.orig xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoPPFFmpeg.cpp ---- xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoPPFFmpeg.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoPPFFmpeg.cpp 2023-04-19 10:01:22.851870000 +0000 -@@ -118,6 +118,8 @@ - m_pMode, m_pContext, - pSource->pict_type | pSource->qscale_type ? PP_PICT_TYPE_QP2 : 0); - -+ // https://github.com/FFmpeg/FFmpeg/blob/991d417692/doc/APIchanges#L18-L20 -+ av_free(pSource->qp_table); - - pPicture->SetParams(*pSource); - if (pPicture->videoBuffer) -diff -urN xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp.orig xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp ---- xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp 2023-04-19 10:01:30.833014000 +0000 -@@ -973,7 +973,8 @@ - m_event.Set(); - m_avD3D11Context = av_d3d11va_alloc_context(); - m_avD3D11Context->cfg = reinterpret_cast(av_mallocz(sizeof(D3D11_VIDEO_DECODER_CONFIG))); -- m_avD3D11Context->surface = reinterpret_cast(av_mallocz_array(32, sizeof(ID3D11VideoDecoderOutputView*))); -+ m_avD3D11Context->surface = reinterpret_cast( -+ av_calloc(32, sizeof(ID3D11VideoDecoderOutputView*))); - m_bufferPool.reset(); - - DX::Windowing()->Register(this); -@@ -1538,8 +1539,6 @@ - return -1; - } - -- pic->reordered_opaque = avctx->reordered_opaque; -- - for (unsigned i = 0; i < 4; i++) - { - pic->data[i] = nullptr; -@@ -1555,6 +1554,10 @@ - return -1; - } - pic->buf[0] = buffer; -+ -+#if LIBAVCODEC_VERSION_MAJOR < 60 -+ pic->reordered_opaque = avctx->reordered_opaque; -+#endif - - Acquire(); - -diff -urN xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp.orig xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp ---- xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp 2023-04-19 10:01:30.833643000 +0000 -@@ -868,7 +868,10 @@ - } - pic->buf[0] = buffer; - -+#if LIBAVCODEC_VERSION_MAJOR < 60 - pic->reordered_opaque = avctx->reordered_opaque; -+#endif -+ - va->Acquire(); - return 0; - } -@@ -1259,7 +1262,9 @@ - - IHardwareDecoder* CDecoder::Create(CDVDStreamInfo &hint, CProcessInfo &processInfo, AVPixelFormat fmt) - { -- if (fmt == AV_PIX_FMT_VAAPI_VLD && CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(SETTING_VIDEOPLAYER_USEVAAPI)) -+ // https://github.com/FFmpeg/FFmpeg/blob/56450a0ee4fdda160f4039fc2ae33edfd27765c9/doc/APIchanges#L18-L26 -+ if (fmt == AV_PIX_FMT_VAAPI && -+ CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(SETTING_VIDEOPLAYER_USEVAAPI)) - return new VAAPI::CDecoder(processInfo); - - return nullptr; -@@ -2966,10 +2971,11 @@ - const AVFilter* srcFilter = avfilter_get_by_name("buffer"); - const AVFilter* outFilter = avfilter_get_by_name("buffersink"); - -- std::string args = StringUtils::Format("{}:{}:{}:{}:{}:{}:{}", m_config.vidWidth, -- m_config.vidHeight, AV_PIX_FMT_NV12, 1, 1, -- (m_config.aspect.num != 0) ? m_config.aspect.num : 1, -- (m_config.aspect.num != 0) ? m_config.aspect.den : 1); -+ std::string args = -+ StringUtils::Format("video_size={}x{}:pix_fmt={}:time_base={}/{}:pixel_aspect={}/{}", -+ m_config.vidWidth, m_config.vidHeight, AV_PIX_FMT_NV12, 1, 1, -+ (m_config.aspect.num != 0) ? m_config.aspect.num : 1, -+ (m_config.aspect.num != 0) ? m_config.aspect.den : 1); - - if (avfilter_graph_create_filter(&m_pFilterIn, srcFilter, "src", args.c_str(), NULL, m_pFilterGraph) < 0) - { -diff -urN xbmc/cores/VideoPlayer/DVDCodecs/Video/VDPAU.cpp.orig xbmc/cores/VideoPlayer/DVDCodecs/Video/VDPAU.cpp ---- xbmc/cores/VideoPlayer/DVDCodecs/Video/VDPAU.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/VideoPlayer/DVDCodecs/Video/VDPAU.cpp 2023-04-19 10:01:30.834410000 +0000 -@@ -1045,7 +1045,10 @@ - } - pic->buf[0] = buffer; - -- pic->reordered_opaque= avctx->reordered_opaque; -+#if LIBAVCODEC_VERSION_MAJOR < 60 -+ pic->reordered_opaque = avctx->reordered_opaque; -+#endif -+ - return 0; - } - -diff -urN xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp.orig xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp ---- xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp 2023-04-19 10:01:22.852749000 +0000 -@@ -10,13 +10,13 @@ - - #include "DVDDemuxUtils.h" - #include "DVDInputStreams/DVDInputStream.h" -+#include "cores/FFmpeg.h" - #include "cores/VideoPlayer/Interface/TimingConstants.h" - #include "utils/log.h" - -+#include - #include - --#define FF_MAX_EXTRADATA_SIZE ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE) -- - class CDemuxStreamClientInternal - { - public: -@@ -130,7 +130,7 @@ - - if (stream->m_context == nullptr) - { -- AVCodec *codec = avcodec_find_decoder(st->codec); -+ const AVCodec* codec = avcodec_find_decoder(st->codec); - if (codec == nullptr) - { - CLog::Log(LOGERROR, "{} - can't find decoder", __FUNCTION__); -@@ -149,17 +149,26 @@ - stream->m_context->time_base.den = DVD_TIME_BASE; - } - -- if (stream->m_parser_split && stream->m_parser->parser->split) -+ if (stream->m_parser_split && stream->m_parser && stream->m_parser->parser) - { -- int len = stream->m_parser->parser->split(stream->m_context, pkt->pData, pkt->iSize); -- if (len > 0 && len < FF_MAX_EXTRADATA_SIZE) -+ AVPacket* avpkt = av_packet_alloc(); -+ if (!avpkt) - { -+ CLog::LogF(LOGERROR, "av_packet_alloc failed: {}", strerror(errno)); -+ return false; -+ } -+ -+ avpkt->data = pkt->pData; -+ avpkt->size = pkt->iSize; -+ avpkt->dts = avpkt->pts = AV_NOPTS_VALUE; -+ -+ auto [retExtraData, len] = GetPacketExtradata(avpkt, stream->m_parser, stream->m_context); -+ if (len > 0) -+ { - st->changes++; - st->disabled = false; - st->ExtraSize = len; -- st->ExtraData = std::make_unique(len + AV_INPUT_BUFFER_PADDING_SIZE); -- memcpy(st->ExtraData.get(), pkt->pData, len); -- memset(st->ExtraData.get() + len, 0, AV_INPUT_BUFFER_PADDING_SIZE); -+ st->ExtraData = std::unique_ptr(retExtraData); - stream->m_parser_split = false; - change = true; - CLog::Log(LOGDEBUG, "CDVDDemuxClient::ParsePacket - split extradata"); -@@ -167,21 +176,12 @@ - // Allow ffmpeg to transport codec information to stream->m_context - if (!avcodec_open2(stream->m_context, stream->m_context->codec, nullptr)) - { -- AVPacket* avpkt = av_packet_alloc(); -- if (!avpkt) -- { -- CLog::Log(LOGERROR, "CDVDDemuxClient::{} - av_packet_alloc failed: {}", __FUNCTION__, -- strerror(errno)); -- return false; -- } -- avpkt->data = pkt->pData; -- avpkt->size = pkt->iSize; -- avpkt->dts = avpkt->pts = AV_NOPTS_VALUE; - avcodec_send_packet(stream->m_context, avpkt); - avcodec_close(stream->m_context); -- av_packet_free(&avpkt); - } - } -+ -+ av_packet_free(&avpkt); - } - - uint8_t *outbuf = nullptr; -@@ -219,10 +219,12 @@ - case STREAM_AUDIO: - { - CDemuxStreamClientInternalTpl* sta = static_cast*>(st); -- if (stream->m_context->channels != sta->iChannels && stream->m_context->channels != 0) -+ int streamChannels = stream->m_context->ch_layout.nb_channels; -+ if (streamChannels != sta->iChannels && streamChannels != 0) - { -- CLog::Log(LOGDEBUG, "CDVDDemuxClient::ParsePacket - ({}) channels changed from {} to {}", st->uniqueId, sta->iChannels, stream->m_context->channels); -- sta->iChannels = stream->m_context->channels; -+ CLog::Log(LOGDEBUG, "CDVDDemuxClient::ParsePacket - ({}) channels changed from {} to {}", -+ st->uniqueId, sta->iChannels, streamChannels); -+ sta->iChannels = streamChannels; - sta->changes++; - sta->disabled = false; - } -@@ -234,7 +236,7 @@ - sta->changes++; - sta->disabled = false; - } -- if (stream->m_context->channels) -+ if (streamChannels) - st->changes = -1; // stop parsing - break; - } -diff -urN xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp.orig xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp ---- xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp 2023-04-19 10:01:30.828436000 +0000 -@@ -34,10 +34,12 @@ - - #include - #include -+#include - #include - - extern "C" - { -+#include "libavutil/channel_layout.h" - #include "libavutil/pixdesc.h" - } - -@@ -104,8 +106,6 @@ - } - } // namespace - --#define FF_MAX_EXTRADATA_SIZE ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE) -- - std::string CDemuxStreamAudioFFmpeg::GetStreamName() - { - if (!m_stream) -@@ -235,7 +235,7 @@ - - bool CDVDDemuxFFmpeg::Open(const std::shared_ptr& pInput, bool fileinfo) - { -- AVInputFormat* iformat = NULL; -+ const AVInputFormat* iformat = nullptr; - std::string strFile; - m_streaminfo = !pInput->IsRealtime() && !m_reopen; - m_reopen = false; -@@ -323,7 +323,6 @@ - } - if (result < 0) - { -- m_pFormatContext->flags |= AVFMT_FLAG_PRIV_OPT; - if (avformat_open_input(&m_pFormatContext, strFile.c_str(), iformat, &options) < 0) - { - CLog::Log(LOGDEBUG, "Error, could not open file {}", CURL::GetRedacted(strFile)); -@@ -335,7 +334,6 @@ - avformat_close_input(&m_pFormatContext); - m_pFormatContext = avformat_alloc_context(); - m_pFormatContext->interrupt_callback = int_cb; -- m_pFormatContext->flags &= ~AVFMT_FLAG_PRIV_OPT; - AVDictionary* options = GetFFMpegOptionsFromInput(); - av_dict_set_int(&options, "load_all_variants", 0, AV_OPT_SEARCH_CHILDREN); - if (avformat_open_input(&m_pFormatContext, strFile.c_str(), iformat, &options) < 0) -@@ -422,9 +420,7 @@ - // is present, we assume it is PCM audio. - // AC3 is always wrapped in iec61937 (ffmpeg "spdif"), while DTS - // may be just padded. -- AVInputFormat* iformat2; -- iformat2 = av_find_input_format("spdif"); -- -+ const AVInputFormat* iformat2 = av_find_input_format("spdif"); - if (iformat2 && iformat2->read_probe(&pd) > AVPROBE_SCORE_MAX / 4) - { - iformat = iformat2; -@@ -544,12 +540,6 @@ - m_streaminfo = true; - } - -- if (iformat && (strcmp(iformat->name, "mov,mp4,m4a,3gp,3g2,mj2") == 0)) -- { -- if (URIUtils::IsRemote(strFile)) -- m_pFormatContext->iformat->flags |= AVFMT_NOGENSEARCH; -- } -- - // we need to know if this is matroska, avi or sup later - m_bMatroska = strncmp(m_pFormatContext->iformat->name, "matroska", 8) == 0; // for "matroska.webm" - m_bAVI = strcmp(m_pFormatContext->iformat->name, "avi") == 0; -@@ -604,9 +594,6 @@ - // if format can be nonblocking, let's use that - m_pFormatContext->flags |= AVFMT_FLAG_NONBLOCK; - -- // deprecated, will be always set in future versions -- m_pFormatContext->flags |= AVFMT_FLAG_KEEP_SIDE_DATA; -- - UpdateCurrentPTS(); - - // select the correct program if requested -@@ -647,7 +634,10 @@ - { - int idx = m_pFormatContext->programs[i]->stream_index[j]; - AVStream* st = m_pFormatContext->streams[idx]; -- if ((st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && st->codec_info_nb_frames > 0) || -+ // Related to https://patchwork.ffmpeg.org/project/ffmpeg/patch/20210429143825.53040-1-jamrial@gmail.com/ -+ // has been replaced with AVSTREAM_EVENT_FLAG_NEW_PACKETS. -+ if ((st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && -+ (st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS)) || - (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && st->codecpar->sample_rate > 0)) - { - nProgram = i; -@@ -1218,8 +1208,11 @@ - else if (stream->type == STREAM_AUDIO) - { - CDemuxStreamAudioFFmpeg* audiostream = dynamic_cast(stream); -- if (audiostream && (audiostream->iChannels != m_pFormatContext->streams[pPacket->iStreamId]->codecpar->channels || -- audiostream->iSampleRate != m_pFormatContext->streams[pPacket->iStreamId]->codecpar->sample_rate)) -+ int codecparChannels = -+ m_pFormatContext->streams[pPacket->iStreamId]->codecpar->ch_layout.nb_channels; -+ if (audiostream && (audiostream->iChannels != codecparChannels || -+ audiostream->iSampleRate != -+ m_pFormatContext->streams[pPacket->iStreamId]->codecpar->sample_rate)) - { - // content has changed - stream = AddStream(pPacket->iStreamId); -@@ -1401,9 +1394,10 @@ - if (idx >= 0) - { - AVStream* stream = m_pFormatContext->streams[idx]; -- if (stream && stream->cur_dts != (int64_t)AV_NOPTS_VALUE) -+ -+ if (stream && m_pkt.pkt.dts != (int64_t)AV_NOPTS_VALUE) - { -- double ts = ConvertTimestamp(stream->cur_dts, stream->time_base.den, stream->time_base.num); -+ double ts = ConvertTimestamp(m_pkt.pkt.dts, stream->time_base.den, stream->time_base.num); - m_currentPts = ts; - } - } -@@ -1614,14 +1608,20 @@ - { - CDemuxStreamAudioFFmpeg* st = new CDemuxStreamAudioFFmpeg(pStream); - stream = st; -- st->iChannels = pStream->codecpar->channels; -+ int codecparChannels = pStream->codecpar->ch_layout.nb_channels; -+ int codecparChannelLayout = pStream->codecpar->ch_layout.u.mask; -+ st->iChannels = codecparChannels; -+ st->iChannelLayout = codecparChannelLayout; - st->iSampleRate = pStream->codecpar->sample_rate; - st->iBlockAlign = pStream->codecpar->block_align; - st->iBitRate = static_cast(pStream->codecpar->bit_rate); - st->iBitsPerSample = pStream->codecpar->bits_per_raw_sample; -- st->iChannelLayout = pStream->codecpar->channel_layout; - char buf[32] = {}; -- av_get_channel_layout_string(buf, 31, st->iChannels, st->iChannelLayout); -+ // https://github.com/FFmpeg/FFmpeg/blob/6ccc3989d15/doc/APIchanges#L50-L53 -+ AVChannelLayout layout = {}; -+ av_channel_layout_from_mask(&layout, st->iChannelLayout); -+ av_channel_layout_describe(&layout, buf, sizeof(buf)); -+ av_channel_layout_uninit(&layout); - st->m_channelLayoutName = buf; - if (st->iBitsPerSample == 0) - st->iBitsPerSample = pStream->codecpar->bits_per_coded_sample; -@@ -1663,16 +1663,6 @@ - st->iFpsScale = 0; - } - -- if (pStream->codec_info_nb_frames > 0 && -- pStream->codec_info_nb_frames <= 2 && -- m_pInput->IsStreamType(DVDSTREAM_TYPE_DVD)) -- { -- CLog::Log(LOGDEBUG, "{} - fps may be unreliable since ffmpeg decoded only {} frame(s)", -- __FUNCTION__, pStream->codec_info_nb_frames); -- st->iFpsRate = 0; -- st->iFpsScale = 0; -- } -- - st->iWidth = pStream->codecpar->width; - st->iHeight = pStream->codecpar->height; - st->fAspect = SelectAspect(pStream, st->bForcedAspect); -@@ -1693,7 +1683,8 @@ - st->colorRange = pStream->codecpar->color_range; - st->hdr_type = DetermineHdrType(pStream); - -- int size = 0; -+ // https://github.com/FFmpeg/FFmpeg/blob/release/5.0/doc/APIchanges -+ size_t size = 0; - uint8_t* side_data = nullptr; - - side_data = av_stream_get_side_data(pStream, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, &size); -@@ -2103,7 +2094,7 @@ - return strName; - } - -- AVCodec* codec = avcodec_find_decoder(stream->codec); -+ const AVCodec* codec = avcodec_find_decoder(stream->codec); - if (codec) - strName = avcodec_get_name(codec->id); - } -@@ -2158,8 +2149,8 @@ - if (m_pFormatContext->streams[idx]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) - { - CDemuxStreamAudioFFmpeg* audiostream = dynamic_cast(stream); -- if (audiostream && -- m_pFormatContext->streams[idx]->codecpar->channels != audiostream->iChannels) -+ int codecparChannels = m_pFormatContext->streams[idx]->codecpar->ch_layout.nb_channels; -+ if (audiostream && codecparChannels != audiostream->iChannels) - { - return true; - } -@@ -2279,7 +2270,7 @@ - - parser->second->m_parserCtx = av_parser_init(st->codecpar->codec_id); - -- AVCodec* codec = avcodec_find_decoder(st->codecpar->codec_id); -+ const AVCodec* codec = avcodec_find_decoder(st->codecpar->codec_id); - if (codec == nullptr) - { - CLog::Log(LOGERROR, "{} - can't find decoder", __FUNCTION__); -@@ -2295,45 +2286,37 @@ - - if (parser->second->m_parserCtx && - parser->second->m_parserCtx->parser && -- parser->second->m_parserCtx->parser->split && - !st->codecpar->extradata) - { -- int i = parser->second->m_parserCtx->parser->split(parser->second->m_codecCtx, pkt->data, pkt->size); -- if (i > 0 && i < FF_MAX_EXTRADATA_SIZE) -+ auto [retExtraData, i] = -+ GetPacketExtradata(pkt, parser->second->m_parserCtx, parser->second->m_codecCtx); -+ if (i > 0) - { -- st->codecpar->extradata = (uint8_t*)av_malloc(i + AV_INPUT_BUFFER_PADDING_SIZE); -- if (st->codecpar->extradata) -+ st->codecpar->extradata_size = i; -+ st->codecpar->extradata = retExtraData; -+ -+ if (parser->second->m_parserCtx->parser->parser_parse) - { -- CLog::Log(LOGDEBUG, -- "CDVDDemuxFFmpeg::ParsePacket() fetching extradata, extradata_size({})", i); -- st->codecpar->extradata_size = i; -- memcpy(st->codecpar->extradata, pkt->data, i); -- memset(st->codecpar->extradata + i, 0, AV_INPUT_BUFFER_PADDING_SIZE); -+ parser->second->m_codecCtx->extradata = st->codecpar->extradata; -+ parser->second->m_codecCtx->extradata_size = st->codecpar->extradata_size; -+ const uint8_t* outbufptr; -+ int bufSize; -+ parser->second->m_parserCtx->flags |= PARSER_FLAG_COMPLETE_FRAMES; -+ parser->second->m_parserCtx->parser->parser_parse(parser->second->m_parserCtx, -+ parser->second->m_codecCtx, &outbufptr, -+ &bufSize, pkt->data, pkt->size); -+ parser->second->m_codecCtx->extradata = nullptr; -+ parser->second->m_codecCtx->extradata_size = 0; - -- if (parser->second->m_parserCtx->parser->parser_parse) -+ if (parser->second->m_parserCtx->width != 0) - { -- parser->second->m_codecCtx->extradata = st->codecpar->extradata; -- parser->second->m_codecCtx->extradata_size = st->codecpar->extradata_size; -- const uint8_t* outbufptr; -- int bufSize; -- parser->second->m_parserCtx->flags |= PARSER_FLAG_COMPLETE_FRAMES; -- parser->second->m_parserCtx->parser->parser_parse(parser->second->m_parserCtx, -- parser->second->m_codecCtx, -- &outbufptr, &bufSize, -- pkt->data, pkt->size); -- parser->second->m_codecCtx->extradata = nullptr; -- parser->second->m_codecCtx->extradata_size = 0; -- -- if (parser->second->m_parserCtx->width != 0) -- { -- st->codecpar->width = parser->second->m_parserCtx->width; -- st->codecpar->height = parser->second->m_parserCtx->height; -- } -- else -- { -- CLog::Log(LOGERROR, "CDVDDemuxFFmpeg::ParsePacket() invalid width/height"); -- } -+ st->codecpar->width = parser->second->m_parserCtx->width; -+ st->codecpar->height = parser->second->m_parserCtx->height; - } -+ else -+ { -+ CLog::Log(LOGERROR, "CDVDDemuxFFmpeg::ParsePacket() invalid width/height"); -+ } - } - } - } -@@ -2357,7 +2340,8 @@ - { - if (!m_startTime) - { -- m_startTime = av_rescale(st->cur_dts, st->time_base.num, st->time_base.den) - 0.000001; -+ m_startTime = -+ av_rescale(m_pkt.pkt.dts, st->time_base.num, st->time_base.den) - 0.000001; - m_seekStream = idx; - } - return TRANSPORT_STREAM_STATE::READY; -@@ -2377,7 +2361,8 @@ - { - if (!m_startTime) - { -- m_startTime = av_rescale(st->cur_dts, st->time_base.num, st->time_base.den) - 0.000001; -+ m_startTime = -+ av_rescale(m_pkt.pkt.dts, st->time_base.num, st->time_base.den) - 0.000001; - m_seekStream = i; - } - return TRANSPORT_STREAM_STATE::READY; -@@ -2410,7 +2395,8 @@ - { - if (!m_startTime) - { -- m_startTime = av_rescale(st->cur_dts, st->time_base.num, st->time_base.den) - 0.000001; -+ m_startTime = -+ av_rescale(m_pkt.pkt.dts, st->time_base.num, st->time_base.den) - 0.000001; - m_seekStream = idx; - } - return TRANSPORT_STREAM_STATE::READY; -@@ -2430,7 +2416,8 @@ - { - if (!m_startTime) - { -- m_startTime = av_rescale(st->cur_dts, st->time_base.num, st->time_base.den) - 0.000001; -+ m_startTime = -+ av_rescale(m_pkt.pkt.dts, st->time_base.num, st->time_base.den) - 0.000001; - m_seekStream = i; - } - return TRANSPORT_STREAM_STATE::READY; -diff -urN xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp.orig xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp ---- xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp 2023-04-19 10:01:22.853712000 +0000 -@@ -12,6 +12,7 @@ - #include "addons/addoninfo/AddonType.h" - #include "addons/binary-addons/AddonDll.h" - #include "addons/kodi-dev-kit/include/kodi/addon-instance/VideoCodec.h" -+#include "cores/FFmpeg.h" - #include "cores/VideoPlayer/DVDDemuxers/DVDDemux.h" - #include "cores/VideoPlayer/DVDDemuxers/DVDDemuxUtils.h" - #include "cores/VideoPlayer/Interface/DemuxCrypto.h" -@@ -392,7 +393,7 @@ - return nullptr; - - std::string codecName(stream->m_codecName); -- AVCodec* codec = nullptr; -+ const AVCodec* codec = nullptr; - - if (stream->m_streamType != INPUTSTREAM_TYPE_TELETEXT && - stream->m_streamType != INPUTSTREAM_TYPE_RDS && stream->m_streamType != INPUTSTREAM_TYPE_ID3) -diff -urN xbmc/filesystem/AudioBookFileDirectory.cpp.orig xbmc/filesystem/AudioBookFileDirectory.cpp ---- xbmc/filesystem/AudioBookFileDirectory.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/filesystem/AudioBookFileDirectory.cpp 2023-04-19 10:01:22.853859000 +0000 -@@ -11,6 +11,7 @@ - #include "TextureDatabase.h" - #include "URL.h" - #include "Util.h" -+#include "cores/FFmpeg.h" - #include "filesystem/File.h" - #include "guilib/LocalizeStrings.h" - #include "music/tags/MusicInfoTag.h" -@@ -149,7 +150,7 @@ - - m_ioctx->max_packet_size = 32768; - -- AVInputFormat* iformat=nullptr; -+ const AVInputFormat* iformat = nullptr; - av_probe_input_buffer(m_ioctx, &iformat, url.Get().c_str(), nullptr, 0, 0); - - bool contains = false; -diff -urN xbmc/guilib/FFmpegImage.cpp.orig xbmc/guilib/FFmpegImage.cpp ---- xbmc/guilib/FFmpegImage.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/guilib/FFmpegImage.cpp 2023-04-19 10:01:30.832285000 +0000 -@@ -52,7 +52,7 @@ - AVFrame* frame_temporary = nullptr; - SwsContext* sws = nullptr; - AVCodecContext* avOutctx = nullptr; -- AVCodec* codec = nullptr; -+ const AVCodec* codec = nullptr; - ~ThumbDataManagement() - { - av_free(intermediateBuffer); -@@ -198,7 +198,7 @@ - bool is_png = (bufSize > 3 && buffer[1] == 'P' && buffer[2] == 'N' && buffer[3] == 'G'); - bool is_tiff = (bufSize > 2 && buffer[0] == 'I' && buffer[1] == 'I' && buffer[2] == '*'); - -- AVInputFormat* inp = nullptr; -+ const AVInputFormat* inp = nullptr; - if (is_jpeg) - inp = av_find_input_format("image2"); - else if (m_strMimeType == "image/apng") -@@ -236,7 +236,7 @@ - return false; - } - AVCodecParameters* codec_params = m_fctx->streams[0]->codecpar; -- AVCodec* codec = avcodec_find_decoder(codec_params->codec_id); -+ const AVCodec* codec = avcodec_find_decoder(codec_params->codec_id); - m_codec_ctx = avcodec_alloc_context3(codec); - if (!m_codec_ctx) - { -@@ -294,7 +294,15 @@ - return nullptr; - } - //we need milliseconds -- frame->pkt_duration = av_rescale_q(frame->pkt_duration, m_fctx->streams[0]->time_base, AVRational{ 1, 1000 }); -+ -+#if LIBAVCODEC_VERSION_MAJOR < 60 -+ frame->pkt_duration = -+ av_rescale_q(frame->pkt_duration, m_fctx->streams[0]->time_base, AVRational{1, 1000}); -+#else -+ frame->duration = -+ av_rescale_q(frame->duration, m_fctx->streams[0]->time_base, AVRational{1, 1000}); -+#endif -+ - m_height = frame->height; - m_width = frame->width; - m_originalWidth = m_width; -@@ -745,7 +753,13 @@ - if (avframe == nullptr) - return nullptr; - std::shared_ptr frame(new Frame()); -+ -+#if LIBAVCODEC_VERSION_MAJOR < 60 - frame->m_delay = (unsigned int)avframe->pkt_duration; -+#else -+ frame->m_delay = (unsigned int)avframe->duration; -+#endif -+ - frame->m_pitch = avframe->width * 4; - frame->m_pImage = (unsigned char*) av_malloc(avframe->height * frame->m_pitch); - DecodeFrame(avframe, avframe->width, avframe->height, frame->m_pitch, frame->m_pImage); -diff -urN xbmc/music/tags/MusicInfoTagLoaderFFmpeg.cpp.orig xbmc/music/tags/MusicInfoTagLoaderFFmpeg.cpp ---- xbmc/music/tags/MusicInfoTagLoaderFFmpeg.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/music/tags/MusicInfoTagLoaderFFmpeg.cpp 2023-04-19 10:01:22.854258000 +0000 -@@ -58,7 +58,7 @@ - if (file.IoControl(IOCTRL_SEEK_POSSIBLE, NULL) != 1) - ioctx->seekable = 0; - -- AVInputFormat* iformat=NULL; -+ const AVInputFormat* iformat = nullptr; - av_probe_input_buffer(ioctx, &iformat, strFileName.c_str(), NULL, 0, 0); - - if (avformat_open_input(&fctx, strFileName.c_str(), iformat, NULL) < 0) -diff -urN xbmc/video/tags/VideoTagLoaderFFmpeg.cpp.orig xbmc/video/tags/VideoTagLoaderFFmpeg.cpp ---- xbmc/video/tags/VideoTagLoaderFFmpeg.cpp.orig 2023-03-11 22:16:38.000000000 +0000 -+++ xbmc/video/tags/VideoTagLoaderFFmpeg.cpp 2023-04-19 10:01:22.854418000 +0000 -@@ -65,7 +65,7 @@ - if (m_file->IoControl(IOCTRL_SEEK_POSSIBLE, nullptr) != 1) - m_ioctx->seekable = 0; - -- AVInputFormat* iformat = nullptr; -+ const AVInputFormat* iformat = nullptr; - av_probe_input_buffer(m_ioctx, &iformat, m_item.GetPath().c_str(), nullptr, 0, 0); - if (avformat_open_input(&m_fctx, m_item.GetPath().c_str(), iformat, nullptr) < 0) - { diff --git a/multimedia/kodi/files/patch-xbmc_cores_AudioEngine_Sinks_AESinkALSA.cpp b/multimedia/kodi/files/patch-xbmc_cores_AudioEngine_Sinks_AESinkALSA.cpp index 4dc4300bfee4..1cbd14cdbc22 100644 --- a/multimedia/kodi/files/patch-xbmc_cores_AudioEngine_Sinks_AESinkALSA.cpp +++ b/multimedia/kodi/files/patch-xbmc_cores_AudioEngine_Sinks_AESinkALSA.cpp @@ -1,16 +1,16 @@ ---- xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp.orig 2022-05-22 10:57:33 UTC +--- xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp.orig 2024-03-04 21:50:54 UTC +++ xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp -@@ -949,13 +949,6 @@ void CAESinkALSA::HandleError(const char* name, int er +@@ -957,13 +957,6 @@ void CAESinkALSA::HandleError(const char* name, int er { case -EPIPE: CLog::Log(LOGERROR, "CAESinkALSA::HandleError({}) - underrun", name); - if ((err = snd_pcm_prepare(m_pcm)) < 0) - CLog::Log(LOGERROR, "CAESinkALSA::HandleError({}) - snd_pcm_prepare returned {} ({})", name, - err, snd_strerror(err)); - break; - - case -ESTRPIPE: - CLog::Log(LOGINFO, "CAESinkALSA::HandleError({}) - Resuming after suspend", name); /* try to resume the stream */ while((err = snd_pcm_resume(m_pcm)) == -EAGAIN) diff --git a/multimedia/kodi/files/patch-xbmc_cores_AudioEngine_Utils_AEELDParser.cpp b/multimedia/kodi/files/patch-xbmc_cores_AudioEngine_Utils_AEELDParser.cpp deleted file mode 100644 index 05038e7087d1..000000000000 --- a/multimedia/kodi/files/patch-xbmc_cores_AudioEngine_Utils_AEELDParser.cpp +++ /dev/null @@ -1,11 +0,0 @@ ---- xbmc/cores/AudioEngine/Utils/AEELDParser.cpp.orig 2022-05-22 11:38:07 UTC -+++ xbmc/cores/AudioEngine/Utils/AEELDParser.cpp -@@ -72,7 +72,7 @@ typedef struct - #define CEA_861_FORMAT_WMAPRO 14 - #define CEA_861_FORMAT_RESERVED2 15 - --#define rtrim(s) s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun(std::isspace))).base(), s.end()) -+#define rtrim(s) s.erase(std::find_if(s.rbegin(), s.rend(), [](unsigned char c) { return !std::isspace(c); }).base(), s.end()) - - void CAEELDParser::Parse(const uint8_t *data, size_t length, CAEDeviceInfo& info) - { diff --git a/multimedia/kodi/pkg-plist b/multimedia/kodi/pkg-plist index df3e5660dd4b..8e7c614a192f 100644 --- a/multimedia/kodi/pkg-plist +++ b/multimedia/kodi/pkg-plist @@ -1,2155 +1,2054 @@ -bin/JsonSchemaBuilder +bin/TexturePacker bin/kodi bin/kodi-TexturePacker bin/kodi-standalone include/kodi/AddonBase.h include/kodi/AudioEngine.h include/kodi/Filesystem.h include/kodi/General.h include/kodi/Network.h include/kodi/addon-instance/AudioDecoder.h include/kodi/addon-instance/AudioEncoder.h include/kodi/addon-instance/Game.h include/kodi/addon-instance/ImageDecoder.h include/kodi/addon-instance/Inputstream.h include/kodi/addon-instance/PVR.h include/kodi/addon-instance/Peripheral.h include/kodi/addon-instance/Screensaver.h include/kodi/addon-instance/VFS.h include/kodi/addon-instance/VideoCodec.h include/kodi/addon-instance/Visualization.h include/kodi/addon-instance/inputstream/DemuxPacket.h include/kodi/addon-instance/inputstream/StreamCodec.h include/kodi/addon-instance/inputstream/StreamConstants.h include/kodi/addon-instance/inputstream/StreamCrypto.h include/kodi/addon-instance/inputstream/TimingConstants.h include/kodi/addon-instance/peripheral/PeripheralUtils.h include/kodi/addon-instance/pvr/ChannelGroups.h include/kodi/addon-instance/pvr/Channels.h include/kodi/addon-instance/pvr/EDL.h include/kodi/addon-instance/pvr/EPG.h include/kodi/addon-instance/pvr/General.h include/kodi/addon-instance/pvr/MenuHook.h include/kodi/addon-instance/pvr/Providers.h include/kodi/addon-instance/pvr/Recordings.h include/kodi/addon-instance/pvr/Stream.h include/kodi/addon-instance/pvr/Timers.h include/kodi/c-api/addon-instance/audiodecoder.h include/kodi/c-api/addon-instance/audioencoder.h include/kodi/c-api/addon-instance/game.h include/kodi/c-api/addon-instance/imagedecoder.h include/kodi/c-api/addon-instance/inputstream.h include/kodi/c-api/addon-instance/inputstream/demux_packet.h include/kodi/c-api/addon-instance/inputstream/stream_codec.h include/kodi/c-api/addon-instance/inputstream/stream_constants.h include/kodi/c-api/addon-instance/inputstream/stream_crypto.h include/kodi/c-api/addon-instance/inputstream/timing_constants.h include/kodi/c-api/addon-instance/peripheral.h include/kodi/c-api/addon-instance/pvr.h include/kodi/c-api/addon-instance/pvr/pvr_channel_groups.h include/kodi/c-api/addon-instance/pvr/pvr_channels.h include/kodi/c-api/addon-instance/pvr/pvr_defines.h include/kodi/c-api/addon-instance/pvr/pvr_edl.h include/kodi/c-api/addon-instance/pvr/pvr_epg.h include/kodi/c-api/addon-instance/pvr/pvr_general.h include/kodi/c-api/addon-instance/pvr/pvr_menu_hook.h include/kodi/c-api/addon-instance/pvr/pvr_providers.h include/kodi/c-api/addon-instance/pvr/pvr_recordings.h include/kodi/c-api/addon-instance/pvr/pvr_stream.h include/kodi/c-api/addon-instance/pvr/pvr_timers.h include/kodi/c-api/addon-instance/screensaver.h include/kodi/c-api/addon-instance/vfs.h include/kodi/c-api/addon-instance/video_codec.h include/kodi/c-api/addon-instance/visualization.h include/kodi/c-api/addon_base.h include/kodi/c-api/audio_engine.h include/kodi/c-api/filesystem.h include/kodi/c-api/general.h include/kodi/c-api/gui/controls/button.h include/kodi/c-api/gui/controls/edit.h include/kodi/c-api/gui/controls/fade_label.h include/kodi/c-api/gui/controls/image.h include/kodi/c-api/gui/controls/label.h include/kodi/c-api/gui/controls/progress.h include/kodi/c-api/gui/controls/radio_button.h include/kodi/c-api/gui/controls/rendering.h include/kodi/c-api/gui/controls/settings_slider.h include/kodi/c-api/gui/controls/slider.h include/kodi/c-api/gui/controls/spin.h include/kodi/c-api/gui/controls/text_box.h include/kodi/c-api/gui/definitions.h include/kodi/c-api/gui/dialogs/context_menu.h include/kodi/c-api/gui/dialogs/extended_progress.h include/kodi/c-api/gui/dialogs/filebrowser.h include/kodi/c-api/gui/dialogs/keyboard.h include/kodi/c-api/gui/dialogs/numeric.h include/kodi/c-api/gui/dialogs/ok.h include/kodi/c-api/gui/dialogs/progress.h include/kodi/c-api/gui/dialogs/select.h include/kodi/c-api/gui/dialogs/text_viewer.h include/kodi/c-api/gui/dialogs/yes_no.h include/kodi/c-api/gui/general.h include/kodi/c-api/gui/input/action_ids.h include/kodi/c-api/gui/list_item.h include/kodi/c-api/gui/window.h include/kodi/c-api/network.h include/kodi/c-api/platform/android/system.h include/kodi/gui/General.h include/kodi/gui/ListItem.h include/kodi/gui/Window.h include/kodi/gui/controls/Button.h include/kodi/gui/controls/Edit.h include/kodi/gui/controls/FadeLabel.h include/kodi/gui/controls/Image.h include/kodi/gui/controls/Label.h include/kodi/gui/controls/Progress.h include/kodi/gui/controls/RadioButton.h include/kodi/gui/controls/Rendering.h include/kodi/gui/controls/SettingsSlider.h include/kodi/gui/controls/Slider.h include/kodi/gui/controls/Spin.h include/kodi/gui/controls/TextBox.h include/kodi/gui/dialogs/ContextMenu.h include/kodi/gui/dialogs/ExtendedProgress.h include/kodi/gui/dialogs/FileBrowser.h include/kodi/gui/dialogs/Keyboard.h include/kodi/gui/dialogs/Numeric.h include/kodi/gui/dialogs/OK.h include/kodi/gui/dialogs/Progress.h include/kodi/gui/dialogs/Select.h include/kodi/gui/dialogs/TextViewer.h include/kodi/gui/dialogs/YesNo.h include/kodi/gui/gl/GL.h include/kodi/gui/gl/GLonDX.h include/kodi/gui/gl/Shader.h include/kodi/gui/input/ActionIDs.h include/kodi/gui/renderHelper.h include/kodi/platform/android/System.h include/kodi/tools/DllHelper.h include/kodi/tools/EndTime.h include/kodi/tools/StringUtils.h include/kodi/tools/Thread.h include/kodi/tools/Timer.h include/kodi/versions.h lib/kodi/cmake/KodiConfig.cmake %%KODIGBM%%lib/kodi/kodi-gbm %%KODIWAYLAND%%lib/kodi/kodi-wayland %%KODIX11%%lib/kodi/kodi-x11 %%KODICOMBINED%%lib/kodi/kodi.bin %%X11%%lib/kodi/kodi-xrandr %%SSE4_1%%lib/kodi/system/libsse4-%%ARCH%%-freebsd.so lib/kodi/system/players/VideoPlayer/libdvdnav-%%ARCH%%-freebsd.so share/applications/kodi.desktop %%PORTDOCS%%%%DOCSDIR%%/LICENSE.md %%PORTDOCS%%%%DOCSDIR%%/README.Linux.md %%PORTDOCS%%%%DOCSDIR%%/version.txt share/icons/hicolor/128x128/apps/kodi.png share/icons/hicolor/16x16/apps/kodi.png share/icons/hicolor/22x22/apps/kodi.png share/icons/hicolor/24x24/apps/kodi.png share/icons/hicolor/256x256/apps/kodi.png share/icons/hicolor/32x32/apps/kodi.png share/icons/hicolor/48x48/apps/kodi.png share/icons/hicolor/64x64/apps/kodi.png +share/icons/hicolor/scalable/apps/kodi.png %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/addon.xml %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/icon.png %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.af_za/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.am_et/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.ar_sa/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.ast_es/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.az_az/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.be_by/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.bg_bg/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.bs_ba/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.ca_es/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.cs_cz/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.cy_gb/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.da_dk/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.de_de/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.el_gr/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.en_au/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.en_nz/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.en_us/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.eo/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.es_ar/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.es_es/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.es_mx/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.et_ee/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.eu_es/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.fa_af/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.fa_ir/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.fi_fi/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.fo_fo/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.fr_ca/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.fr_fr/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.gl_es/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.he_il/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.hi_in/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.hr_hr/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.hu_hu/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.hy_am/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.id_id/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.is_is/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.it_it/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.ja_jp/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.kn_in/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.ko_kr/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.lt_lt/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.lv_lv/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.mi/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.mk_mk/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.ml_in/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.mn_mn/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.ms_my/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.mt_mt/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.my_mm/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.nb_no/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.nl_nl/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.oc_fr/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.os_os/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.pl_pl/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.pt_br/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.pt_pt/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.ro_ro/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.ru_ru/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.si_lk/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.sk_sk/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.sl_si/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.sq_al/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.sr_rs/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.sr_rs@latin/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.sv_se/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.szl/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.ta_in/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.te_in/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.tg_tj/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.th_th/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.tr_tr/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.uk_ua/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.uz_uz/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/settings.xml %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/addon.xml %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/icon.png %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.af_za/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.am_et/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.ar_sa/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.ast_es/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.az_az/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.be_by/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.bg_bg/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.bs_ba/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.ca_es/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.cs_cz/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.cy_gb/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.da_dk/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.de_de/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.el_gr/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.en_au/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.en_nz/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.en_us/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.eo/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.es_ar/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.es_es/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.es_mx/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.et_ee/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.eu_es/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.fa_af/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.fa_ir/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.fi_fi/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.fo_fo/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.fr_ca/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.fr_fr/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.gl_es/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.he_il/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.hi_in/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.hr_hr/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.hu_hu/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.hy_am/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.id_id/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.is_is/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.it_it/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.ja_jp/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.kn_in/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.ko_kr/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.lt_lt/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.lv_lv/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.mi/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.mk_mk/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.ml_in/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.mn_mn/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.ms_my/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.mt_mt/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.my_mm/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.nb_no/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.nl_nl/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.oc_fr/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.os_os/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.pl_pl/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.pt_br/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.pt_pt/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.ro_ro/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.ru_ru/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.si_lk/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.sk_sk/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.sl_si/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.sq_al/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.sr_rs/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.sr_rs@latin/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.sv_se/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.szl/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.ta_in/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.te_in/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.tg_tj/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.th_th/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.tr_tr/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.uk_ua/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.uz_uz/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/settings.xml %%DATADIR%%/addons/game.controller.default/addon.xml %%DATADIR%%/addons/game.controller.default/resources/icon.png %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.af_za/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.am_et/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.ar_sa/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.ast_es/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.az_az/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.be_by/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.bg_bg/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.bs_ba/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.ca_es/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.cs_cz/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.cy_gb/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.da_dk/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.de_de/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.el_gr/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.en_au/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.en_nz/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.en_us/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.eo/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.es_ar/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.es_es/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.es_mx/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.et_ee/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.eu_es/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.fa_af/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.fa_ir/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.fi_fi/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.fil/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.fo_fo/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.fr_ca/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.fr_fr/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.gl_es/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.he_il/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.hi_in/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.hr_hr/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.hu_hu/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.hy_am/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.id_id/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.is_is/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.it_it/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.ja_jp/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.kn_in/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.ko_kr/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.lt_lt/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.lv_lv/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.mi/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.mk_mk/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.ml_in/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.mn_mn/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.ms_my/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.mt_mt/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.my_mm/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.nb_no/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.nl_nl/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.oc_fr/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.os_os/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.pl_pl/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.pt_br/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.pt_pt/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.ro_ro/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.ru_ru/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.si_lk/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.sk_sk/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.sl_si/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.sq_al/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.sr_rs/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.sr_rs@latin/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.sv_se/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.szl/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.ta_in/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.te_in/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.tg_tj/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.th_th/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.tr_tr/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.uk_ua/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.uz_uz/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/game.controller.default/resources/layout.png %%DATADIR%%/addons/game.controller.default/resources/layout.xml %%DATADIR%%/addons/game.controller.keyboard/addon.xml %%DATADIR%%/addons/game.controller.keyboard/resources/icon.png %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.af_za/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.am_et/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.ar_sa/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.ast_es/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.az_az/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.be_by/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.bg_bg/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.bs_ba/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.ca_es/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.cs_cz/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.cy_gb/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.da_dk/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.de_de/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.el_gr/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.en_au/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.en_nz/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.en_us/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.eo/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.es_ar/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.es_es/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.es_mx/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.et_ee/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.eu_es/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.fa_af/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.fa_ir/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.fi_fi/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.fo_fo/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.fr_ca/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.fr_fr/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.gl_es/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.he_il/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.hi_in/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.hr_hr/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.hu_hu/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.hy_am/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.id_id/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.is_is/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.it_it/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.ja_jp/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.kn_in/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.ko_kr/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.lt_lt/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.lv_lv/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.mi/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.mk_mk/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.ml_in/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.mn_mn/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.ms_my/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.mt_mt/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.my_mm/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.nb_no/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.nl_nl/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.oc_fr/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.os_os/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.pl_pl/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.pt_br/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.pt_pt/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.ro_ro/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.ru_ru/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.si_lk/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.sk_sk/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.sl_si/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.sq_al/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.sr_rs/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.sr_rs@latin/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.sv_se/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.szl/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.ta_in/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.te_in/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.tg_tj/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.th_th/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.tr_tr/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.uk_ua/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.uz_uz/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/game.controller.keyboard/resources/layout.png %%DATADIR%%/addons/game.controller.keyboard/resources/layout.xml %%DATADIR%%/addons/game.controller.mouse/addon.xml %%DATADIR%%/addons/game.controller.mouse/resources/icon.png %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.af_za/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.am_et/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.ar_sa/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.ast_es/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.az_az/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.be_by/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.bg_bg/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.bs_ba/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.ca_es/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.cs_cz/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.cy_gb/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.da_dk/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.de_de/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.el_gr/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.en_au/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.en_nz/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.en_us/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.eo/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.es_ar/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.es_es/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.es_mx/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.et_ee/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.eu_es/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.fa_af/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.fa_ir/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.fi_fi/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.fo_fo/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.fr_ca/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.fr_fr/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.gl_es/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.he_il/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.hi_in/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.hr_hr/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.hu_hu/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.hy_am/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.id_id/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.is_is/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.it_it/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.ja_jp/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.kn_in/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.ko_kr/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.lt_lt/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.lv_lv/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.mi/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.mk_mk/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.ml_in/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.mn_mn/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.ms_my/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.mt_mt/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.my_mm/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.nb_no/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.nl_nl/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.oc_fr/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.os_os/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.pl_pl/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.pt_br/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.pt_pt/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.ro_ro/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.ru_ru/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.si_lk/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.sk_sk/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.sl_si/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.sq_al/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.sr_rs/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.sr_rs@latin/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.sv_se/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.szl/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.ta_in/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.te_in/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.tg_tj/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.th_th/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.tr_tr/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.uk_ua/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.uz_uz/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/game.controller.mouse/resources/layout.png %%DATADIR%%/addons/game.controller.mouse/resources/layout.xml %%DATADIR%%/addons/game.controller.snes/addon.xml %%DATADIR%%/addons/game.controller.snes/resources/icon.png %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.af_za/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.am_et/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.ar_sa/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.ast_es/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.az_az/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.be_by/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.bg_bg/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.bs_ba/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.ca_es/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.cs_cz/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.cy_gb/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.da_dk/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.de_de/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.el_gr/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.en_au/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.en_nz/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.en_us/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.eo/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.es_ar/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.es_es/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.es_mx/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.et_ee/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.eu_es/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.fa_af/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.fa_ir/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.fi_fi/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.fil/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.fo_fo/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.fr_ca/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.fr_fr/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.gl_es/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.he_il/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.hi_in/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.hr_hr/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.hu_hu/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.hy_am/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.id_id/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.is_is/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.it_it/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.ja_jp/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.kn_in/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.ko_kr/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.lt_lt/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.lv_lv/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.mi/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.mk_mk/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.ml_in/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.mn_mn/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.ms_my/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.mt_mt/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.my_mm/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.nb_no/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.nl_nl/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.oc_fr/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.os_os/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.pl_pl/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.pt_br/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.pt_pt/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.ro_ro/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.ru_ru/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.si_lk/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.sk_sk/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.sl_si/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.sq_al/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.sr_rs/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.sr_rs@latin/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.sv_se/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.szl/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.ta_in/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.te_in/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.tg_tj/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.th_th/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.tr_tr/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.uk_ua/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.uz_uz/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/game.controller.snes/resources/layout.png %%DATADIR%%/addons/game.controller.snes/resources/layout.xml %%DATADIR%%/addons/game.controller.snes/resources/mask.png %%DATADIR%%/addons/kodi.binary.global.audioengine/addon.xml %%DATADIR%%/addons/kodi.binary.global.filesystem/addon.xml %%DATADIR%%/addons/kodi.binary.global.general/addon.xml %%DATADIR%%/addons/kodi.binary.global.gui/addon.xml %%DATADIR%%/addons/kodi.binary.global.main/addon.xml %%DATADIR%%/addons/kodi.binary.global.network/addon.xml %%DATADIR%%/addons/kodi.binary.global.tools/addon.xml %%DATADIR%%/addons/kodi.binary.instance.audiodecoder/addon.xml %%DATADIR%%/addons/kodi.binary.instance.audioencoder/addon.xml %%DATADIR%%/addons/kodi.binary.instance.game/addon.xml %%DATADIR%%/addons/kodi.binary.instance.imagedecoder/addon.xml %%DATADIR%%/addons/kodi.binary.instance.inputstream/addon.xml %%DATADIR%%/addons/kodi.binary.instance.peripheral/addon.xml %%DATADIR%%/addons/kodi.binary.instance.pvr/addon.xml %%DATADIR%%/addons/kodi.binary.instance.screensaver/addon.xml %%DATADIR%%/addons/kodi.binary.instance.vfs/addon.xml %%DATADIR%%/addons/kodi.binary.instance.videocodec/addon.xml %%DATADIR%%/addons/kodi.binary.instance.visualization/addon.xml %%DATADIR%%/addons/kodi.resource/addon.xml %%DATADIR%%/addons/kodi.resource/games.xsd %%DATADIR%%/addons/kodi.resource/icon.png %%DATADIR%%/addons/kodi.resource/images.xsd %%DATADIR%%/addons/kodi.resource/language.xsd %%DATADIR%%/addons/kodi.resource/uisounds.xsd %%DATADIR%%/addons/metadata.album.universal/addon.xml %%DATADIR%%/addons/metadata.album.universal/albumuniversal.xml %%DATADIR%%/addons/metadata.album.universal/changelog.txt %%DATADIR%%/addons/metadata.album.universal/icon.png %%DATADIR%%/addons/metadata.album.universal/resources/language/Afrikaans/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Amharic/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Asturian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Belarusian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Bulgarian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Burmese/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Catalan/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Chinese (Simple)/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Chinese (Traditional)/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Croatian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Czech/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Danish/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Dutch/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/English (Australia)/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/English (New Zealand)/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/English (US)/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/English/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Estonian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Finnish/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/French (Canada)/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/French/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Galician/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Georgian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/German/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Greek/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Hebrew/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Hungarian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Icelandic/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Indonesian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Italian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Japanese/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Korean/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Latvian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Lithuanian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Macedonian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Malay/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Norwegian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Polish/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Portuguese (Brazil)/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Portuguese/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Romanian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Russian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Slovak/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Slovenian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Spanish (Argentina)/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Spanish (Mexico)/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Spanish/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Swedish/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Tamil (India)/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Thai/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Turkish/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Ukrainian/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Vietnamese/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/language/Welsh/strings.po %%DATADIR%%/addons/metadata.album.universal/resources/settings.xml %%DATADIR%%/addons/metadata.artists.universal/addon.xml %%DATADIR%%/addons/metadata.artists.universal/artistuniversal.xml %%DATADIR%%/addons/metadata.artists.universal/changelog.txt %%DATADIR%%/addons/metadata.artists.universal/icon.png %%DATADIR%%/addons/metadata.artists.universal/resources/language/Afrikaans/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Amharic/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Arabic/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Asturian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Belarusian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Bulgarian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Burmese/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Catalan/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Chinese (Simple)/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Chinese (Traditional)/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Croatian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Czech/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Danish/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Dutch/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/English (Australia)/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/English (New Zealand)/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/English (US)/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/English/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Estonian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Finnish/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/French (Canada)/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/French/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Galician/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/German/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Greek/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Hebrew/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Hungarian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Icelandic/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Indonesian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Italian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Japanese/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Korean/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Latvian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Lithuanian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Macedonian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Malay/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Norwegian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Polish/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Portuguese (Brazil)/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Portuguese/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Romanian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Russian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Slovak/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Slovenian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Spanish (Argentina)/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Spanish (Mexico)/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Spanish/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Swedish/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Tamil (India)/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Thai/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Turkish/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Ukrainian/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Vietnamese/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/language/Welsh/strings.po %%DATADIR%%/addons/metadata.artists.universal/resources/settings.xml %%DATADIR%%/addons/metadata.common.allmusic.com/addon.xml %%DATADIR%%/addons/metadata.common.allmusic.com/allmusic.xml %%DATADIR%%/addons/metadata.common.allmusic.com/icon.png %%DATADIR%%/addons/metadata.common.fanart.tv/addon.xml %%DATADIR%%/addons/metadata.common.fanart.tv/fanarttv.xml %%DATADIR%%/addons/metadata.common.fanart.tv/icon.png %%DATADIR%%/addons/metadata.common.musicbrainz.org/addon.xml %%DATADIR%%/addons/metadata.common.musicbrainz.org/icon.png %%DATADIR%%/addons/metadata.common.musicbrainz.org/musicbrainz.xml %%DATADIR%%/addons/metadata.common.theaudiodb.com/addon.xml %%DATADIR%%/addons/metadata.common.theaudiodb.com/icon.png %%DATADIR%%/addons/metadata.common.theaudiodb.com/tadb.xml %%DATADIR%%/addons/metadata.generic.albums/LICENSE.txt %%DATADIR%%/addons/metadata.generic.albums/addon.xml %%DATADIR%%/addons/metadata.generic.albums/changelog.txt %%DATADIR%%/addons/metadata.generic.albums/default.py %%DATADIR%%/addons/metadata.generic.albums/lib/allmusic.py %%DATADIR%%/addons/metadata.generic.albums/lib/discogs.py %%DATADIR%%/addons/metadata.generic.albums/lib/fanarttv.py %%DATADIR%%/addons/metadata.generic.albums/lib/musicbrainz.py %%DATADIR%%/addons/metadata.generic.albums/lib/nfo.py %%DATADIR%%/addons/metadata.generic.albums/lib/scraper.py %%DATADIR%%/addons/metadata.generic.albums/lib/theaudiodb.py %%DATADIR%%/addons/metadata.generic.albums/lib/utils.py %%DATADIR%%/addons/metadata.generic.albums/lib/wikipedia.py %%DATADIR%%/addons/metadata.generic.albums/resources/icon.png %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.af_za/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.am_et/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.ar_sa/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.ast_es/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.az_az/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.be_by/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.bg_bg/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.bs_ba/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.ca_es/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.cs_cz/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.cy_gb/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.da_dk/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.de_de/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.el_gr/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.en_au/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.en_nz/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.en_us/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.eo/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.es_ar/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.es_es/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.es_mx/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.et_ee/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.eu_es/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.fa_af/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.fa_ir/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.fi_fi/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.fo_fo/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.fr_ca/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.fr_fr/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.gl_es/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.he_il/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.hi_in/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.hr_hr/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.hu_hu/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.hy_am/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.id_id/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.is_is/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.it_it/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.ja_jp/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.kn_in/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.ko_kr/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.lt_lt/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.lv_lv/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.mi/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.mk_mk/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.ml_in/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.mn_mn/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.ms_my/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.mt_mt/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.my_mm/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.nb_no/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.nl_nl/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.pl_pl/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.pt_br/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.pt_pt/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.ro_ro/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.ru_ru/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.si_lk/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.sk_sk/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.sl_si/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.sq_al/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.sr_rs/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.sr_rs@latin/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.sv_se/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.szl/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.ta_in/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.te_in/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.tg_tj/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.th_th/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.tr_tr/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.uk_ua/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.uz_uz/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/metadata.generic.albums/resources/settings.xml %%DATADIR%%/addons/metadata.generic.artists/LICENSE.txt %%DATADIR%%/addons/metadata.generic.artists/addon.xml %%DATADIR%%/addons/metadata.generic.artists/changelog.txt %%DATADIR%%/addons/metadata.generic.artists/default.py %%DATADIR%%/addons/metadata.generic.artists/lib/allmusic.py %%DATADIR%%/addons/metadata.generic.artists/lib/discogs.py %%DATADIR%%/addons/metadata.generic.artists/lib/fanarttv.py %%DATADIR%%/addons/metadata.generic.artists/lib/musicbrainz.py %%DATADIR%%/addons/metadata.generic.artists/lib/nfo.py %%DATADIR%%/addons/metadata.generic.artists/lib/scraper.py %%DATADIR%%/addons/metadata.generic.artists/lib/theaudiodb.py %%DATADIR%%/addons/metadata.generic.artists/lib/utils.py %%DATADIR%%/addons/metadata.generic.artists/lib/wikipedia.py %%DATADIR%%/addons/metadata.generic.artists/resources/icon.png %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.af_za/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.am_et/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.ar_sa/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.ast_es/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.az_az/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.be_by/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.bg_bg/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.bs_ba/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.ca_es/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.cs_cz/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.cy_gb/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.da_dk/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.de_de/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.el_gr/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.en_au/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.en_nz/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.en_us/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.eo/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.es_ar/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.es_es/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.es_mx/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.et_ee/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.eu_es/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.fa_af/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.fa_ir/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.fi_fi/strings.po +%%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.fil/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.fo_fo/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.fr_ca/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.fr_fr/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.gl_es/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.he_il/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.hi_in/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.hr_hr/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.hu_hu/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.hy_am/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.id_id/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.is_is/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.it_it/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.ja_jp/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.kn_in/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.ko_kr/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.lt_lt/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.lv_lv/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.mi/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.mk_mk/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.ml_in/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.mn_mn/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.ms_my/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.mt_mt/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.my_mm/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.nb_no/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.nl_nl/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.pl_pl/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.pt_br/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.pt_pt/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.ro_ro/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.ru_ru/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.si_lk/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.sk_sk/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.sl_si/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.sq_al/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.sr_rs/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.sr_rs@latin/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.sv_se/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.szl/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.ta_in/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.te_in/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.tg_tj/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.th_th/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.tr_tr/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.uk_ua/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.uz_uz/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/metadata.generic.artists/resources/settings.xml %%DATADIR%%/addons/metadata.local/addon.xml %%DATADIR%%/addons/metadata.local/icon.png %%DATADIR%%/addons/metadata.local/local.xml %%DATADIR%%/addons/metadata.themoviedb.org.python/LICENSE.txt %%DATADIR%%/addons/metadata.themoviedb.org.python/README.md %%DATADIR%%/addons/metadata.themoviedb.org.python/addon.xml %%DATADIR%%/addons/metadata.themoviedb.org.python/python/lib/__init__.py %%DATADIR%%/addons/metadata.themoviedb.org.python/python/lib/tmdbscraper/__init__.py %%DATADIR%%/addons/metadata.themoviedb.org.python/python/lib/tmdbscraper/api_utils.py %%DATADIR%%/addons/metadata.themoviedb.org.python/python/lib/tmdbscraper/fanarttv.py %%DATADIR%%/addons/metadata.themoviedb.org.python/python/lib/tmdbscraper/imdbratings.py %%DATADIR%%/addons/metadata.themoviedb.org.python/python/lib/tmdbscraper/tmdb.py %%DATADIR%%/addons/metadata.themoviedb.org.python/python/lib/tmdbscraper/tmdbapi.py %%DATADIR%%/addons/metadata.themoviedb.org.python/python/lib/tmdbscraper/traktratings.py %%DATADIR%%/addons/metadata.themoviedb.org.python/python/scraper.py %%DATADIR%%/addons/metadata.themoviedb.org.python/python/scraper_config.py %%DATADIR%%/addons/metadata.themoviedb.org.python/python/scraper_datahelper.py %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/icon.png %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.af_za/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.am_et/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.be_by/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.bg_bg/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.ca_es/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.cs_cz/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.cy_gb/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.da_dk/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.de_de/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.el_gr/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_nz/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_us/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.es_ar/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.es_es/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.es_mx/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.et_ee/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.eu_es/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.fi_fi/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.fr_ca/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.fr_fr/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.gl_es/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.he_il/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.hi_in/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.hr_hr/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.hu_hu/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.id_id/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.is_is/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.it_it/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.ja_jp/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.ko_kr/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.lt_lt/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.mk_mk/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.ml_in/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.ms_my/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.my_mm/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.nb_no/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.nl_nl/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.pl_pl/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.pt_br/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.pt_pt/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.ro_ro/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.ru_ru/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.sk_sk/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.sl_si/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.sq_al/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.sv_se/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.ta_in/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.th_th/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.tr_tr/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.uk_ua/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.uz_uz/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/metadata.themoviedb.org.python/resources/settings.xml %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/LICENSE.txt %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/addon.xml %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/changelog.txt %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/libs/actions.py %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/libs/api_utils.py %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/libs/cache.py %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/libs/data_utils.py %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/libs/debugger.py %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/libs/imdbratings.py %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/libs/settings.py %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/libs/tmdb.py %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/libs/traktratings.py %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/libs/utils.py %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/main.py %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/resources/icon.png %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/metadata.tvshows.themoviedb.org.python/resources/settings.xml %%DATADIR%%/addons/repository.xbmc.org/addon.xml %%DATADIR%%/addons/repository.xbmc.org/icon.png +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.af_za/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.am_et/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.ar_sa/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.ast_es/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.az_az/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.be_by/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.bg_bg/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.bs_ba/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.ca_es/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.cs_cz/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.cy_gb/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.da_dk/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.de_de/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.el_gr/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.en_au/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.en_gb/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.en_nz/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.en_us/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.eo/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.es_ar/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.es_es/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.es_mx/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.et_ee/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.eu_es/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.fa_af/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.fa_ir/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.fi_fi/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.fo_fo/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.fr_ca/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.fr_fr/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.gl_es/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.he_il/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.hi_in/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.hr_hr/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.hu_hu/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.hy_am/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.id_id/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.is_is/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.it_it/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.ja_jp/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.kn_in/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.ko_kr/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.lt_lt/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.lv_lv/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.mi/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.mk_mk/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.ml_in/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.mn_mn/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.ms_my/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.mt_mt/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.my_mm/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.nb_no/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.nl_nl/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.os_os/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.pl_pl/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.pt_br/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.pt_pt/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.ro_ro/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.ru_ru/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.si_lk/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.sk_sk/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.sl_si/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.sq_al/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.sr_rs/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.sr_rs@latin/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.sv_se/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.szl/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.ta_in/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.te_in/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.tg_tj/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.th_th/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.tr_tr/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.uk_ua/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.uz_uz/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.vi_vn/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.zh_cn/strings.po +%%DATADIR%%/addons/repository.xbmc.org/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/resource.images.weathericons.default/License.txt %%DATADIR%%/addons/resource.images.weathericons.default/addon.xml %%DATADIR%%/addons/resource.images.weathericons.default/icon.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/0.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/1.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/10.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/11.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/12.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/13.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/14.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/15.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/16.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/17.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/18.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/19.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/2.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/20.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/21.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/22.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/23.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/24.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/25.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/26.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/27.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/28.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/29.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/3.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/30.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/31.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/32.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/33.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/34.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/35.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/36.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/37.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/38.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/39.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/4.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/40.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/41.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/42.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/43.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/44.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/45.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/46.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/47.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/5.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/6.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/7.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/8.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/9.png %%DATADIR%%/addons/resource.images.weathericons.default/resources/License.txt %%DATADIR%%/addons/resource.images.weathericons.default/resources/na.png %%DATADIR%%/addons/resource.language.en_gb/addon.xml %%DATADIR%%/addons/resource.language.en_gb/icon.png %%DATADIR%%/addons/resource.language.en_gb/resources/langinfo.xml %%DATADIR%%/addons/resource.language.en_gb/resources/strings.po %%DATADIR%%/addons/resource.uisounds.kodi/addon.xml %%DATADIR%%/addons/resource.uisounds.kodi/icon.png %%DATADIR%%/addons/resource.uisounds.kodi/resources/back.wav %%DATADIR%%/addons/resource.uisounds.kodi/resources/click.wav %%DATADIR%%/addons/resource.uisounds.kodi/resources/cursor.wav %%DATADIR%%/addons/resource.uisounds.kodi/resources/notify.wav %%DATADIR%%/addons/resource.uisounds.kodi/resources/out.wav %%DATADIR%%/addons/resource.uisounds.kodi/resources/shutter.wav %%DATADIR%%/addons/resource.uisounds.kodi/resources/sounds.xml %%DATADIR%%/addons/screensaver.xbmc.builtin.black/addon.xml %%DATADIR%%/addons/screensaver.xbmc.builtin.black/icon.png %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/addon.xml %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/icon.png %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.af_za/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.am_et/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.ar_sa/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.be_by/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.bg_bg/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.ca_es/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.cs_cz/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.cy_gb/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.da_dk/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.de_de/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.el_gr/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.en_au/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.en_nz/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.en_us/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.es_ar/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.es_es/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.es_mx/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.et_ee/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.eu_es/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.fa_ir/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.fi_fi/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.fr_ca/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.fr_fr/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.gl_es/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.he_il/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.hi_in/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.hr_hr/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.hu_hu/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.id_id/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.is_is/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.it_it/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.ja_jp/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.ko_kr/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.lt_lt/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.lv_lv/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.mk_mk/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.ms_my/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.mt_mt/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.my_mm/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.nb_no/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.nl_nl/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.pl_pl/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.pt_br/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.pt_pt/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.ro_ro/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.ru_ru/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.sk_sk/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.sl_si/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.sq_al/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.sr_rs/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.sr_rs@latin/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.sv_se/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.tg_tj/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.th_th/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.tr_tr/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.uk_ua/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/settings.xml %%DATADIR%%/addons/script.module.pil/addon.xml %%DATADIR%%/addons/script.module.pil/icon.png %%DATADIR%%/addons/script.module.pycryptodome/addon.xml %%DATADIR%%/addons/script.module.pycryptodome/icon.png %%DATADIR%%/addons/service.xbmc.versioncheck/LICENSES/Apache-2.0.txt %%DATADIR%%/addons/service.xbmc.versioncheck/LICENSES/GPL-2.0-or-later.txt %%DATADIR%%/addons/service.xbmc.versioncheck/LICENSES/GPL-3.0-or-later.txt %%DATADIR%%/addons/service.xbmc.versioncheck/addon.xml +%%DATADIR%%/addons/service.xbmc.versioncheck/changelog.txt %%DATADIR%%/addons/service.xbmc.versioncheck/icon.png %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.af_za/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.am_et/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.ar_sa/strings.po -%%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.ar_ye/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.ast_es/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.az_az/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.be_by/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.bg_bg/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.bs_ba/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.ca_es/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.cs_cz/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.cy_gb/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.da_dk/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.de_de/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.el_gr/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.en_au/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.en_nz/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.en_us/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.eo/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.es_ar/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.es_es/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.es_mx/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.et_ee/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.eu_es/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.fa_af/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.fa_ir/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.fi_fi/strings.po +%%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.fil/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.fo_fo/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.fr_ca/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.fr_fr/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.gl_es/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.he_il/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.hi_in/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.hr_hr/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.hu_hu/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.hy_am/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.id_id/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.is_is/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.it_it/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.ja_jp/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.kn_in/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.ko_kr/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.lt_lt/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.lv_lv/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.mi/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.mk_mk/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.ml_in/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.mn_mn/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.ms_my/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.mt_mt/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.my_mm/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.nb_no/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.nl_nl/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.oc_fr/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.os_os/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.pl_pl/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.pt_br/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.pt_pt/strings.po -%%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.ro_md/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.ro_ro/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.ru_ru/strings.po -%%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.scn/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.si_lk/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.sk_sk/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.sl_si/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.sq_al/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.sr_rs/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.sr_rs@latin/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.sv_se/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.szl/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.ta_in/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.te_in/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.tg_tj/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.th_th/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.tr_tr/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.uk_ua/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.uz_uz/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/__init__.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/runner.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/version_check/__init__.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/version_check/apt_daemon_handler.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/version_check/common.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/version_check/distro/__init__.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/version_check/distro/distro.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/version_check/handler.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/version_check/json_interface.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/version_check/service.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/version_check/shell_handler_apt.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/version_check/versions.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/lib/version_check/viewer.py %%DATADIR%%/addons/service.xbmc.versioncheck/resources/polkit/10-allow-update.pkla %%DATADIR%%/addons/service.xbmc.versioncheck/resources/polkit/README %%DATADIR%%/addons/service.xbmc.versioncheck/resources/settings.xml %%DATADIR%%/addons/service.xbmc.versioncheck/resources/versions.schema.txt %%DATADIR%%/addons/service.xbmc.versioncheck/resources/versions.txt -%%DATADIR%%/addons/skin.estouchy/LICENSE.txt -%%DATADIR%%/addons/skin.estouchy/addon.xml -%%DATADIR%%/addons/skin.estouchy/background/primary.jpg -%%DATADIR%%/addons/skin.estouchy/background/secondary1.png -%%DATADIR%%/addons/skin.estouchy/background/tv.jpg -%%DATADIR%%/addons/skin.estouchy/changelog.txt -%%DATADIR%%/addons/skin.estouchy/colors/defaults.xml -%%DATADIR%%/addons/skin.estouchy/fonts/NotoSans-Regular.ttf -%%DATADIR%%/addons/skin.estouchy/fonts/noto_license.txt -%%DATADIR%%/addons/skin.estouchy/language/resource.language.af_za/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.am_et/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.ar_sa/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.ast_es/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.az_az/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.be_by/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.bg_bg/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.bs_ba/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.ca_es/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.cs_cz/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.cy_gb/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.da_dk/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.de_de/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.el_gr/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.en_au/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.en_gb/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.en_nz/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.en_us/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.eo/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.es_ar/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.es_es/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.es_mx/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.et_ee/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.eu_es/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.fa_af/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.fa_ir/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.fi_fi/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.fil/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.fo_fo/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.fr_ca/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.fr_fr/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.gl_es/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.he_il/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.hi_in/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.hr_hr/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.hu_hu/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.hy_am/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.id_id/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.is_is/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.it_it/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.ja_jp/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.kn_in/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.ko_kr/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.lt_lt/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.lv_lv/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.mi/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.mk_mk/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.ml_in/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.mn_mn/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.ms_my/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.mt_mt/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.my_mm/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.nb_no/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.nl_nl/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.pl_pl/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.pt_br/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.pt_pt/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.ro_ro/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.ru_ru/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.si_lk/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.sk_sk/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.sl_si/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.sq_al/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.sr_rs/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.sr_rs@latin/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.sv_se/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.szl/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.ta_in/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.te_in/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.tg_tj/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.th_th/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.tr_tr/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.uk_ua/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.uz_uz/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.vi_vn/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.zh_cn/strings.po -%%DATADIR%%/addons/skin.estouchy/language/resource.language.zh_tw/strings.po -%%DATADIR%%/addons/skin.estouchy/media/Textures.xbt -%%DATADIR%%/addons/skin.estouchy/resources/fanart.jpg -%%DATADIR%%/addons/skin.estouchy/resources/icon.png -%%DATADIR%%/addons/skin.estouchy/resources/screenshot-01.jpg -%%DATADIR%%/addons/skin.estouchy/resources/screenshot-02.jpg -%%DATADIR%%/addons/skin.estouchy/resources/screenshot-03.jpg -%%DATADIR%%/addons/skin.estouchy/resources/screenshot-04.jpg -%%DATADIR%%/addons/skin.estouchy/resources/screenshot-05.jpg -%%DATADIR%%/addons/skin.estouchy/resources/screenshot-06.jpg -%%DATADIR%%/addons/skin.estouchy/resources/screenshot-07.jpg -%%DATADIR%%/addons/skin.estouchy/resources/screenshot-08.jpg -%%DATADIR%%/addons/skin.estouchy/resources/screenshot-09.jpg -%%DATADIR%%/addons/skin.estouchy/resources/screenshot-10.jpg -%%DATADIR%%/addons/skin.estouchy/resources/screenshot-11.jpg -%%DATADIR%%/addons/skin.estouchy/resources/screenshot-12.jpg -%%DATADIR%%/addons/skin.estouchy/xml/AddonBrowser.xml -%%DATADIR%%/addons/skin.estouchy/xml/CustomFirstRun.xml -%%DATADIR%%/addons/skin.estouchy/xml/CustomVolume.xml -%%DATADIR%%/addons/skin.estouchy/xml/Defaults.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogAddonInfo.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogAddonSettings.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogBusy.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogButtonMenu.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogColorPicker.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogConfirm.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogContextMenu.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogExtendedProgressBar.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogFavourites.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogGameControllers.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogKeyboard.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogMediaSource.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogMusicInfo.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogNotification.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogNumeric.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRChannelGuide.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRChannelManager.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRChannelsOSD.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRGroupManager.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRGuideSearch.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRInfo.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRRadioRDSInfo.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogPictureInfo.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogPlayerProcessInfo.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogSeekBar.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogSelect.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogSettings.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogSlider.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogSubtitles.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogTextViewer.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogVideoInfo.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogVolumeBar.xml -%%DATADIR%%/addons/skin.estouchy/xml/EventLog.xml -%%DATADIR%%/addons/skin.estouchy/xml/FileBrowser.xml -%%DATADIR%%/addons/skin.estouchy/xml/FileManager.xml -%%DATADIR%%/addons/skin.estouchy/xml/Font.xml -%%DATADIR%%/addons/skin.estouchy/xml/GameOSD.xml -%%DATADIR%%/addons/skin.estouchy/xml/Home.xml -%%DATADIR%%/addons/skin.estouchy/xml/Includes.xml -%%DATADIR%%/addons/skin.estouchy/xml/IncludesCodecFlagging.xml -%%DATADIR%%/addons/skin.estouchy/xml/IncludesHomeRecentlyAdded.xml -%%DATADIR%%/addons/skin.estouchy/xml/IncludesPlayerControls.xml -%%DATADIR%%/addons/skin.estouchy/xml/LoginScreen.xml -%%DATADIR%%/addons/skin.estouchy/xml/MusicOSD.xml -%%DATADIR%%/addons/skin.estouchy/xml/MusicVisualisation.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyGames.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyMusicNav.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyMusicPlaylistEditor.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyPVRChannels.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyPVRGuide.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyPVRRecordings.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyPVRSearch.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyPVRTimers.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyPics.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyPlaylist.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyPrograms.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyVideoNav.xml -%%DATADIR%%/addons/skin.estouchy/xml/MyWeather.xml -%%DATADIR%%/addons/skin.estouchy/xml/PlayerControls.xml -%%DATADIR%%/addons/skin.estouchy/xml/Pointer.xml -%%DATADIR%%/addons/skin.estouchy/xml/Settings.xml -%%DATADIR%%/addons/skin.estouchy/xml/SettingsCategory.xml -%%DATADIR%%/addons/skin.estouchy/xml/SettingsProfile.xml -%%DATADIR%%/addons/skin.estouchy/xml/SettingsScreenCalibration.xml -%%DATADIR%%/addons/skin.estouchy/xml/SettingsSystemInfo.xml -%%DATADIR%%/addons/skin.estouchy/xml/SkinSettings.xml -%%DATADIR%%/addons/skin.estouchy/xml/SlideShow.xml -%%DATADIR%%/addons/skin.estouchy/xml/SmartPlaylistEditor.xml -%%DATADIR%%/addons/skin.estouchy/xml/SmartPlaylistRule.xml -%%DATADIR%%/addons/skin.estouchy/xml/Startup.xml -%%DATADIR%%/addons/skin.estouchy/xml/VideoFullScreen.xml -%%DATADIR%%/addons/skin.estouchy/xml/VideoOSD.xml -%%DATADIR%%/addons/skin.estouchy/xml/VideoOSDBookmarks.xml -%%DATADIR%%/addons/skin.estouchy/xml/ViewsList.xml -%%DATADIR%%/addons/skin.estouchy/xml/ViewsPVR.xml -%%DATADIR%%/addons/skin.estouchy/xml/ViewsThumbnail.xml -%%DATADIR%%/addons/skin.estouchy/xml/ViewsWide.xml %%DATADIR%%/addons/skin.estuary/LICENSE.txt %%DATADIR%%/addons/skin.estuary/addon.xml %%DATADIR%%/addons/skin.estuary/changelog.txt %%DATADIR%%/addons/skin.estuary/colors/brown.xml %%DATADIR%%/addons/skin.estuary/colors/charcoal.xml %%DATADIR%%/addons/skin.estuary/colors/chartreuse.xml %%DATADIR%%/addons/skin.estuary/colors/concrete.xml %%DATADIR%%/addons/skin.estuary/colors/defaults.xml %%DATADIR%%/addons/skin.estuary/colors/gold.xml %%DATADIR%%/addons/skin.estuary/colors/green.xml %%DATADIR%%/addons/skin.estuary/colors/maroon.xml %%DATADIR%%/addons/skin.estuary/colors/midnight.xml %%DATADIR%%/addons/skin.estuary/colors/orange.xml %%DATADIR%%/addons/skin.estuary/colors/pink.xml %%DATADIR%%/addons/skin.estuary/colors/rose.xml %%DATADIR%%/addons/skin.estuary/colors/teal.xml %%DATADIR%%/addons/skin.estuary/colors/violet.xml %%DATADIR%%/addons/skin.estuary/extras/backgrounds/pattern0.jpg %%DATADIR%%/addons/skin.estuary/extras/backgrounds/pattern1.jpg %%DATADIR%%/addons/skin.estuary/extras/backgrounds/pattern2.jpg %%DATADIR%%/addons/skin.estuary/extras/backgrounds/pattern3.jpg %%DATADIR%%/addons/skin.estuary/extras/backgrounds/pattern4.jpg %%DATADIR%%/addons/skin.estuary/extras/backgrounds/pattern5.jpg %%DATADIR%%/addons/skin.estuary/extras/backgrounds/pattern6.jpg %%DATADIR%%/addons/skin.estuary/extras/backgrounds/pattern7.jpg %%DATADIR%%/addons/skin.estuary/extras/backgrounds/primary.jpg %%DATADIR%%/addons/skin.estuary/extras/home-images/LICENSE %%DATADIR%%/addons/skin.estuary/extras/home-images/movie.jpg %%DATADIR%%/addons/skin.estuary/extras/home-images/music.jpg %%DATADIR%%/addons/skin.estuary/fonts/NotoMono-Regular.ttf %%DATADIR%%/addons/skin.estuary/fonts/NotoSans-Regular.ttf %%DATADIR%%/addons/skin.estuary/fonts/Roboto-Thin.ttf %%DATADIR%%/addons/skin.estuary/fonts/heebo_licence.txt %%DATADIR%%/addons/skin.estuary/fonts/mardoto_license.txt %%DATADIR%%/addons/skin.estuary/fonts/noto_license.txt %%DATADIR%%/addons/skin.estuary/fonts/roboto_license.txt %%DATADIR%%/addons/skin.estuary/language/resource.language.af_za/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.am_et/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.ar_sa/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.ast_es/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.az_az/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.be_by/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.bg_bg/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.bs_ba/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.ca_es/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.cs_cz/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.cy_gb/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.da_dk/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.de_de/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.el_gr/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.en_au/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.en_nz/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.en_us/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.eo/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.es_ar/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.es_es/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.es_mx/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.et_ee/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.eu_es/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.fa_af/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.fa_ir/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.fi_fi/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.fil/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.fo_fo/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.fr_ca/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.fr_fr/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.gl_es/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.he_il/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.hi_in/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.hr_hr/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.hu_hu/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.hy_am/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.id_id/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.is_is/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.it_it/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.ja_jp/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.kn_in/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.ko_kr/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.lt_lt/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.lv_lv/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.mi/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.mk_mk/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.ml_in/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.mn_mn/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.ms_my/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.mt_mt/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.my_mm/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.nb_no/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.nl_nl/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.pl_pl/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.pt_br/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.pt_pt/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.ro_ro/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.ru_ru/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.si_lk/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.sk_sk/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.sl_si/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.sq_al/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.sr_rs/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.sr_rs@latin/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.sv_se/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.szl/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.ta_in/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.te_in/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.tg_tj/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.th_th/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.tr_tr/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.uk_ua/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.uz_uz/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/skin.estuary/media/Textures.xbt %%DATADIR%%/addons/skin.estuary/media/curial.xbt %%DATADIR%%/addons/skin.estuary/media/flat.xbt %%DATADIR%%/addons/skin.estuary/playlists/inprogress_movies.xsp %%DATADIR%%/addons/skin.estuary/playlists/mostplayed_albums.xsp %%DATADIR%%/addons/skin.estuary/playlists/random_albums.xsp %%DATADIR%%/addons/skin.estuary/playlists/random_artists.xsp %%DATADIR%%/addons/skin.estuary/playlists/random_movies.xsp %%DATADIR%%/addons/skin.estuary/playlists/random_musicvideo_artists.xsp %%DATADIR%%/addons/skin.estuary/playlists/random_musicvideos.xsp %%DATADIR%%/addons/skin.estuary/playlists/recent_unwatched_episodes.xsp %%DATADIR%%/addons/skin.estuary/playlists/recent_unwatched_movies.xsp %%DATADIR%%/addons/skin.estuary/playlists/unplayed_albums.xsp %%DATADIR%%/addons/skin.estuary/playlists/unwatched_movies.xsp %%DATADIR%%/addons/skin.estuary/playlists/unwatched_musicvideos.xsp %%DATADIR%%/addons/skin.estuary/playlists/unwatched_tvshows.xsp %%DATADIR%%/addons/skin.estuary/resources/fanart.jpg %%DATADIR%%/addons/skin.estuary/resources/icon.png %%DATADIR%%/addons/skin.estuary/resources/screenshot-01.jpg %%DATADIR%%/addons/skin.estuary/resources/screenshot-02.jpg %%DATADIR%%/addons/skin.estuary/resources/screenshot-03.jpg %%DATADIR%%/addons/skin.estuary/resources/screenshot-04.jpg %%DATADIR%%/addons/skin.estuary/resources/screenshot-05.jpg %%DATADIR%%/addons/skin.estuary/resources/screenshot-06.jpg %%DATADIR%%/addons/skin.estuary/resources/screenshot-07.jpg %%DATADIR%%/addons/skin.estuary/resources/screenshot-08.jpg %%DATADIR%%/addons/skin.estuary/themes/curial/buttons/button-nofo.png %%DATADIR%%/addons/skin.estuary/themes/curial/dialogs/dialog-bg-nobo.png %%DATADIR%%/addons/skin.estuary/themes/curial/dialogs/dialog-bg.png %%DATADIR%%/addons/skin.estuary/themes/curial/lists/panel-mediamenu.png %%DATADIR%%/addons/skin.estuary/themes/curial/lists/panel.png %%DATADIR%%/addons/skin.estuary/themes/curial/overlays/shadow.png %%DATADIR%%/addons/skin.estuary/themes/flat/buttons/button-nofo.png %%DATADIR%%/addons/skin.estuary/themes/flat/dialogs/dialog-bg.png %%DATADIR%%/addons/skin.estuary/themes/flat/overlays/shadow.png %%DATADIR%%/addons/skin.estuary/xml/AddonBrowser.xml %%DATADIR%%/addons/skin.estuary/xml/Custom_1100_AddonLauncher.xml %%DATADIR%%/addons/skin.estuary/xml/Custom_1101_SettingsList.xml %%DATADIR%%/addons/skin.estuary/xml/Custom_1102_TextViewer.xml %%DATADIR%%/addons/skin.estuary/xml/Custom_1103_VolumeSlider.xml %%DATADIR%%/addons/skin.estuary/xml/Custom_1104_Fanart.xml %%DATADIR%%/addons/skin.estuary/xml/Custom_1105_MusicOSDSettings.xml %%DATADIR%%/addons/skin.estuary/xml/Custom_1107_SearchDialog.xml %%DATADIR%%/addons/skin.estuary/xml/Custom_1109_TopBarOverlay.xml %%DATADIR%%/addons/skin.estuary/xml/Custom_1110_TempoControl.xml %%DATADIR%%/addons/skin.estuary/xml/Defaults.xml %%DATADIR%%/addons/skin.estuary/xml/DialogAddonInfo.xml %%DATADIR%%/addons/skin.estuary/xml/DialogAddonSettings.xml %%DATADIR%%/addons/skin.estuary/xml/DialogBusy.xml %%DATADIR%%/addons/skin.estuary/xml/DialogButtonMenu.xml %%DATADIR%%/addons/skin.estuary/xml/DialogColorPicker.xml %%DATADIR%%/addons/skin.estuary/xml/DialogConfirm.xml %%DATADIR%%/addons/skin.estuary/xml/DialogContextMenu.xml %%DATADIR%%/addons/skin.estuary/xml/DialogExtendedProgressBar.xml -%%DATADIR%%/addons/skin.estuary/xml/DialogFavourites.xml %%DATADIR%%/addons/skin.estuary/xml/DialogFullScreenInfo.xml %%DATADIR%%/addons/skin.estuary/xml/DialogGameControllers.xml %%DATADIR%%/addons/skin.estuary/xml/DialogKeyboard.xml %%DATADIR%%/addons/skin.estuary/xml/DialogMediaSource.xml %%DATADIR%%/addons/skin.estuary/xml/DialogMusicInfo.xml %%DATADIR%%/addons/skin.estuary/xml/DialogNotification.xml %%DATADIR%%/addons/skin.estuary/xml/DialogNumeric.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRChannelGuide.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRChannelManager.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRChannelsOSD.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRGroupManager.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRGuideControls.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRGuideSearch.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRInfo.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRRadioRDSInfo.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPictureInfo.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPlayerProcessInfo.xml %%DATADIR%%/addons/skin.estuary/xml/DialogSeekBar.xml %%DATADIR%%/addons/skin.estuary/xml/DialogSelect.xml %%DATADIR%%/addons/skin.estuary/xml/DialogSettings.xml %%DATADIR%%/addons/skin.estuary/xml/DialogSlider.xml %%DATADIR%%/addons/skin.estuary/xml/DialogSubtitles.xml %%DATADIR%%/addons/skin.estuary/xml/DialogTextViewer.xml %%DATADIR%%/addons/skin.estuary/xml/DialogVideoInfo.xml +%%DATADIR%%/addons/skin.estuary/xml/DialogVideoManager.xml %%DATADIR%%/addons/skin.estuary/xml/DialogVolumeBar.xml %%DATADIR%%/addons/skin.estuary/xml/EventLog.xml %%DATADIR%%/addons/skin.estuary/xml/FileBrowser.xml %%DATADIR%%/addons/skin.estuary/xml/FileManager.xml %%DATADIR%%/addons/skin.estuary/xml/Font.xml %%DATADIR%%/addons/skin.estuary/xml/GameOSD.xml %%DATADIR%%/addons/skin.estuary/xml/Home.xml %%DATADIR%%/addons/skin.estuary/xml/Includes.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_Animations.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_Buttons.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_DialogSelect.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_Games.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_Home.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_MediaMenu.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_MusicInfo.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_PVR.xml %%DATADIR%%/addons/skin.estuary/xml/LoginScreen.xml %%DATADIR%%/addons/skin.estuary/xml/MusicOSD.xml %%DATADIR%%/addons/skin.estuary/xml/MusicVisualisation.xml %%DATADIR%%/addons/skin.estuary/xml/MyFavourites.xml %%DATADIR%%/addons/skin.estuary/xml/MyGames.xml %%DATADIR%%/addons/skin.estuary/xml/MyMusicNav.xml %%DATADIR%%/addons/skin.estuary/xml/MyMusicPlaylistEditor.xml %%DATADIR%%/addons/skin.estuary/xml/MyPVRChannels.xml %%DATADIR%%/addons/skin.estuary/xml/MyPVRGuide.xml %%DATADIR%%/addons/skin.estuary/xml/MyPVRRecordings.xml %%DATADIR%%/addons/skin.estuary/xml/MyPVRSearch.xml %%DATADIR%%/addons/skin.estuary/xml/MyPVRTimers.xml %%DATADIR%%/addons/skin.estuary/xml/MyPics.xml %%DATADIR%%/addons/skin.estuary/xml/MyPlaylist.xml %%DATADIR%%/addons/skin.estuary/xml/MyPrograms.xml %%DATADIR%%/addons/skin.estuary/xml/MyVideoNav.xml %%DATADIR%%/addons/skin.estuary/xml/MyWeather.xml %%DATADIR%%/addons/skin.estuary/xml/PlayerControls.xml %%DATADIR%%/addons/skin.estuary/xml/Pointer.xml %%DATADIR%%/addons/skin.estuary/xml/Settings.xml %%DATADIR%%/addons/skin.estuary/xml/SettingsCategory.xml %%DATADIR%%/addons/skin.estuary/xml/SettingsProfile.xml %%DATADIR%%/addons/skin.estuary/xml/SettingsScreenCalibration.xml %%DATADIR%%/addons/skin.estuary/xml/SettingsSystemInfo.xml %%DATADIR%%/addons/skin.estuary/xml/SkinSettings.xml %%DATADIR%%/addons/skin.estuary/xml/SlideShow.xml %%DATADIR%%/addons/skin.estuary/xml/SmartPlaylistEditor.xml %%DATADIR%%/addons/skin.estuary/xml/SmartPlaylistRule.xml %%DATADIR%%/addons/skin.estuary/xml/Startup.xml %%DATADIR%%/addons/skin.estuary/xml/Timers.xml %%DATADIR%%/addons/skin.estuary/xml/Variables.xml %%DATADIR%%/addons/skin.estuary/xml/VideoFullScreen.xml %%DATADIR%%/addons/skin.estuary/xml/VideoOSD.xml %%DATADIR%%/addons/skin.estuary/xml/VideoOSDBookmarks.xml %%DATADIR%%/addons/skin.estuary/xml/View_500_Wall.xml %%DATADIR%%/addons/skin.estuary/xml/View_501_Banner.xml %%DATADIR%%/addons/skin.estuary/xml/View_502_FanArt.xml %%DATADIR%%/addons/skin.estuary/xml/View_503_NowPlaying.xml %%DATADIR%%/addons/skin.estuary/xml/View_50_List.xml %%DATADIR%%/addons/skin.estuary/xml/View_51_Poster.xml %%DATADIR%%/addons/skin.estuary/xml/View_52_IconWall.xml %%DATADIR%%/addons/skin.estuary/xml/View_53_Shift.xml %%DATADIR%%/addons/skin.estuary/xml/View_54_InfoWall.xml %%DATADIR%%/addons/skin.estuary/xml/View_55_WideList.xml %%DATADIR%%/addons/webinterface.default/addon.xml %%DATADIR%%/addons/webinterface.default/favicon.png %%DATADIR%%/addons/webinterface.default/icon-128.png %%DATADIR%%/addons/webinterface.default/icon-144.png %%DATADIR%%/addons/webinterface.default/icon-152.png %%DATADIR%%/addons/webinterface.default/icon-192.png %%DATADIR%%/addons/webinterface.default/icon.png %%DATADIR%%/addons/webinterface.default/images/fanart_default/amp.jpg %%DATADIR%%/addons/webinterface.default/images/fanart_default/cans.jpg %%DATADIR%%/addons/webinterface.default/images/fanart_default/concert.jpg %%DATADIR%%/addons/webinterface.default/images/fanart_default/guitar.jpg %%DATADIR%%/addons/webinterface.default/images/fanart_default/speaker.jpg %%DATADIR%%/addons/webinterface.default/images/fanart_default/turntable.jpg %%DATADIR%%/addons/webinterface.default/images/fanart_default/tweeter.jpg %%DATADIR%%/addons/webinterface.default/images/splash_hi.png %%DATADIR%%/addons/webinterface.default/images/thumbnail_default.png %%DATADIR%%/addons/webinterface.default/index.html %%DATADIR%%/addons/webinterface.default/js/kodi-webinterface.js %%DATADIR%%/addons/webinterface.default/lang/_strings/cs.json %%DATADIR%%/addons/webinterface.default/lang/_strings/de.json %%DATADIR%%/addons/webinterface.default/lang/_strings/en.json %%DATADIR%%/addons/webinterface.default/lang/_strings/es.json %%DATADIR%%/addons/webinterface.default/lang/_strings/fr.json %%DATADIR%%/addons/webinterface.default/lang/_strings/gr.json %%DATADIR%%/addons/webinterface.default/lang/_strings/hu.json %%DATADIR%%/addons/webinterface.default/lang/_strings/lt.json %%DATADIR%%/addons/webinterface.default/lang/_strings/nl.json %%DATADIR%%/addons/webinterface.default/lang/_strings/pl.json %%DATADIR%%/addons/webinterface.default/lang/_strings/pt.json %%DATADIR%%/addons/webinterface.default/lang/_strings/sk.json %%DATADIR%%/addons/webinterface.default/lang/_strings/zh_hans.json %%DATADIR%%/addons/webinterface.default/lang/_strings/zh_hant.json %%DATADIR%%/addons/webinterface.default/lang/de/app-readme.html %%DATADIR%%/addons/webinterface.default/lang/de/keybind-readme.html %%DATADIR%%/addons/webinterface.default/lang/de/lang-readme.html %%DATADIR%%/addons/webinterface.default/lang/en/_en-important-readme.html %%DATADIR%%/addons/webinterface.default/lang/en/addons.html %%DATADIR%%/addons/webinterface.default/lang/en/app-changelog.html %%DATADIR%%/addons/webinterface.default/lang/en/app-readme.html %%DATADIR%%/addons/webinterface.default/lang/en/developers.html %%DATADIR%%/addons/webinterface.default/lang/en/help-overview.html %%DATADIR%%/addons/webinterface.default/lang/en/keybind-readme.html %%DATADIR%%/addons/webinterface.default/lang/en/lang-readme.html %%DATADIR%%/addons/webinterface.default/lang/en/license.html %%DATADIR%%/addons/webinterface.default/lang/fr/help-overview.html %%DATADIR%%/addons/webinterface.default/lang/fr/keybind-readme.html %%DATADIR%%/addons/webinterface.default/lang/fr/lang-readme.html %%DATADIR%%/addons/webinterface.default/lang/nl/keybind-readme.html %%DATADIR%%/addons/webinterface.default/lang/pl/addons.html %%DATADIR%%/addons/webinterface.default/lang/pl/app-changelog.html %%DATADIR%%/addons/webinterface.default/lang/pl/app-readme.html %%DATADIR%%/addons/webinterface.default/lang/pl/help-overview.html %%DATADIR%%/addons/webinterface.default/lang/pl/keybind-readme.html %%DATADIR%%/addons/webinterface.default/lang/pl/lang-readme.html %%DATADIR%%/addons/webinterface.default/lang/pl/license.html %%DATADIR%%/addons/webinterface.default/lib/icons/icomoon.json %%DATADIR%%/addons/webinterface.default/lib/icons/mdi.json %%DATADIR%%/addons/webinterface.default/lib/jquery/jquery-3.5.1.min.js %%DATADIR%%/addons/webinterface.default/lib/soundmanager/swf/soundmanager2.swf %%DATADIR%%/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_debug.swf %%DATADIR%%/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash9.swf %%DATADIR%%/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash9_debug.swf %%DATADIR%%/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash_xdomain.zip %%DATADIR%%/addons/webinterface.default/lib/video-js/font/VideoJS.eot %%DATADIR%%/addons/webinterface.default/lib/video-js/font/VideoJS.svg %%DATADIR%%/addons/webinterface.default/lib/video-js/font/VideoJS.ttf %%DATADIR%%/addons/webinterface.default/lib/video-js/font/VideoJS.woff %%DATADIR%%/addons/webinterface.default/lib/video-js/plugins/videojs-chromecast/cast_sender.js %%DATADIR%%/addons/webinterface.default/lib/video-js/plugins/videojs-chromecast/fonts/chromecast.eot %%DATADIR%%/addons/webinterface.default/lib/video-js/plugins/videojs-chromecast/fonts/chromecast.svg %%DATADIR%%/addons/webinterface.default/lib/video-js/plugins/videojs-chromecast/fonts/chromecast.ttf %%DATADIR%%/addons/webinterface.default/lib/video-js/plugins/videojs-chromecast/fonts/chromecast.woff %%DATADIR%%/addons/webinterface.default/lib/video-js/plugins/videojs-chromecast/fonts/chromecast.woff2 %%DATADIR%%/addons/webinterface.default/lib/video-js/plugins/videojs-chromecast/videojs-chromecast.css %%DATADIR%%/addons/webinterface.default/lib/video-js/plugins/videojs-chromecast/videojs-chromecast.js %%DATADIR%%/addons/webinterface.default/lib/video-js/plugins/videojs-chromecast/videojs-chromecast.min.js %%DATADIR%%/addons/webinterface.default/lib/video-js/video-js.css %%DATADIR%%/addons/webinterface.default/lib/video-js/video-js.min.css %%DATADIR%%/addons/webinterface.default/lib/video-js/video-js.swf %%DATADIR%%/addons/webinterface.default/lib/video-js/video.js %%DATADIR%%/addons/webinterface.default/lib/video-js/video.min.js %%DATADIR%%/addons/webinterface.default/manifest.json %%DATADIR%%/addons/webinterface.default/screenshots/addons.jpg %%DATADIR%%/addons/webinterface.default/screenshots/artist.jpg %%DATADIR%%/addons/webinterface.default/screenshots/artists.jpg %%DATADIR%%/addons/webinterface.default/screenshots/edit-media.jpg %%DATADIR%%/addons/webinterface.default/screenshots/movie.jpg %%DATADIR%%/addons/webinterface.default/screenshots/now-playing.jpg %%DATADIR%%/addons/webinterface.default/screenshots/search.jpg %%DATADIR%%/addons/webinterface.default/screenshots/settings.jpg %%DATADIR%%/addons/webinterface.default/screenshots/tv.jpg %%DATADIR%%/addons/webinterface.default/themes/base/css/base.css %%DATADIR%%/addons/webinterface.default/themes/base/fonts/bootstrap/glyphicons-halflings-regular.eot %%DATADIR%%/addons/webinterface.default/themes/base/fonts/bootstrap/glyphicons-halflings-regular.svg %%DATADIR%%/addons/webinterface.default/themes/base/fonts/bootstrap/glyphicons-halflings-regular.ttf %%DATADIR%%/addons/webinterface.default/themes/base/fonts/bootstrap/glyphicons-halflings-regular.woff %%DATADIR%%/addons/webinterface.default/themes/base/fonts/icomoon/Read Me.txt %%DATADIR%%/addons/webinterface.default/themes/base/fonts/icomoon/demo-files/demo.css %%DATADIR%%/addons/webinterface.default/themes/base/fonts/icomoon/demo-files/demo.js %%DATADIR%%/addons/webinterface.default/themes/base/fonts/icomoon/demo.html %%DATADIR%%/addons/webinterface.default/themes/base/fonts/icomoon/fonts/icomoon.eot %%DATADIR%%/addons/webinterface.default/themes/base/fonts/icomoon/fonts/icomoon.svg %%DATADIR%%/addons/webinterface.default/themes/base/fonts/icomoon/fonts/icomoon.ttf %%DATADIR%%/addons/webinterface.default/themes/base/fonts/icomoon/fonts/icomoon.woff %%DATADIR%%/addons/webinterface.default/themes/base/fonts/icomoon/selection.json %%DATADIR%%/addons/webinterface.default/themes/base/fonts/icomoon/style.css %%DATADIR%%/addons/webinterface.default/themes/base/fonts/material/LICENSE.txt %%DATADIR%%/addons/webinterface.default/themes/base/fonts/material/Material-Design-Icons.eot %%DATADIR%%/addons/webinterface.default/themes/base/fonts/material/Material-Design-Icons.svg %%DATADIR%%/addons/webinterface.default/themes/base/fonts/material/Material-Design-Icons.ttf %%DATADIR%%/addons/webinterface.default/themes/base/fonts/material/Material-Design-Icons.woff %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-light-webfont.eot %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-light-webfont.svg %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-light-webfont.ttf %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-light-webfont.woff %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-light-webfont.woff2 %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-regular-webfont.eot %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-regular-webfont.svg %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-regular-webfont.ttf %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-regular-webfont.woff %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-regular-webfont.woff2 %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-semibold-webfont.eot %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-semibold-webfont.svg %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-semibold-webfont.ttf %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-semibold-webfont.woff %%DATADIR%%/addons/webinterface.default/themes/base/fonts/opensans/opensans-semibold-webfont.woff2 %%DATADIR%%/addons/webinterface.default/themes/base/images/ledlevel-1.gif %%DATADIR%%/addons/webinterface.default/themes/base/images/ledlevel-2.gif %%DATADIR%%/addons/webinterface.default/themes/base/images/loader.gif %%DATADIR%%/addons/webinterface.default/themes/base/images/loading-box-bg.jpg %%DATADIR%%/addons/webinterface.default/themes/base/images/logo.png %%DATADIR%%/addons/webinterface.default/themes/base/images/row-pause-blue.png %%DATADIR%%/addons/webinterface.default/themes/base/images/row-pause-pink.png %%DATADIR%%/addons/webinterface.default/themes/base/images/row-pause-white.png %%DATADIR%%/addons/webinterface.default/themes/base/images/row-pause.png %%DATADIR%%/addons/webinterface.default/themes/base/images/row-playing-blue.gif %%DATADIR%%/addons/webinterface.default/themes/base/images/row-playing-pink.gif %%DATADIR%%/addons/webinterface.default/themes/base/images/row-playing-white.gif %%DATADIR%%/addons/webinterface.default/themes/base/images/row-playing.gif %%DATADIR%%/addons/webinterface.default/themes/base/images/thumbnail_default.png %%DATADIR%%/addons/webinterface.default/videoPlayer.html %%DATADIR%%/addons/xbmc.addon/addon.xml %%DATADIR%%/addons/xbmc.addon/metadata.xsd %%DATADIR%%/addons/xbmc.addon/repository.xsd %%DATADIR%%/addons/xbmc.core/addon.xml %%DATADIR%%/addons/xbmc.gui/addon.xml %%DATADIR%%/addons/xbmc.gui/skin.xsd %%DATADIR%%/addons/xbmc.json/addon.xml %%DATADIR%%/addons/xbmc.metadata/addon.xml %%DATADIR%%/addons/xbmc.metadata/scraper.xsd %%DATADIR%%/addons/xbmc.python/addon.xml %%DATADIR%%/addons/xbmc.python/contextitem.xsd %%DATADIR%%/addons/xbmc.python/icon.png %%DATADIR%%/addons/xbmc.python/pluginsource.xsd %%DATADIR%%/addons/xbmc.python/script.xsd %%DATADIR%%/addons/xbmc.python/service.xsd %%DATADIR%%/addons/xbmc.webinterface/addon.xml %%DATADIR%%/addons/xbmc.webinterface/webinterface.xsd %%DATADIR%%/cmake/AddOptions.cmake %%DATADIR%%/cmake/AddonHelpers.cmake %%DATADIR%%/cmake/ArchSetup.cmake %%DATADIR%%/cmake/CheckCommits.cmake %%DATADIR%%/cmake/CheckTargetPlatform.cmake -%%DATADIR%%/cmake/GenerateVersionedFiles.cmake +%%DATADIR%%/cmake/GenerateCompileInfo.cmake %%DATADIR%%/cmake/GeneratorSetup.cmake %%DATADIR%%/cmake/HandleDepends.cmake %%DATADIR%%/cmake/Macros.cmake %%DATADIR%%/cmake/PathSetup.cmake %%DATADIR%%/cmake/PrepareEnv.cmake %%DATADIR%%/cmake/ProjectMacros.cmake %%DATADIR%%/media/Fonts/arial.ttf %%DATADIR%%/media/Fonts/teletext.ttf +%%DATADIR%%/media/applaunch_screen.png %%DATADIR%%/media/banner.png %%DATADIR%%/media/icon120x120.png %%DATADIR%%/media/icon16x16.png %%DATADIR%%/media/icon256x256.png %%DATADIR%%/media/icon32x32.png %%DATADIR%%/media/icon48x48.png %%DATADIR%%/media/icon80x80.png %%DATADIR%%/media/splash.jpg %%DATADIR%%/media/vendor_icon.png %%DATADIR%%/media/vendor_logo.png %%DATADIR%%/privacy-policy.txt %%DATADIR%%/system/addon-manifest.xml %%DATADIR%%/system/certs/cacert.pem %%DATADIR%%/system/colors.xml %%DATADIR%%/system/dialogcolors.xml %%DATADIR%%/system/keyboardlayouts/arabic.xml %%DATADIR%%/system/keyboardlayouts/bulgarian.xml %%DATADIR%%/system/keyboardlayouts/chinese.xml %%DATADIR%%/system/keyboardlayouts/croatian.xml %%DATADIR%%/system/keyboardlayouts/czech.xml %%DATADIR%%/system/keyboardlayouts/danish.xml %%DATADIR%%/system/keyboardlayouts/english.xml %%DATADIR%%/system/keyboardlayouts/estonian.xml %%DATADIR%%/system/keyboardlayouts/french.xml %%DATADIR%%/system/keyboardlayouts/german.xml %%DATADIR%%/system/keyboardlayouts/greek.xml %%DATADIR%%/system/keyboardlayouts/hebrew.xml %%DATADIR%%/system/keyboardlayouts/hungarian.xml %%DATADIR%%/system/keyboardlayouts/icelandic.xml %%DATADIR%%/system/keyboardlayouts/italian.xml %%DATADIR%%/system/keyboardlayouts/korean.xml %%DATADIR%%/system/keyboardlayouts/lithuanian.xml %%DATADIR%%/system/keyboardlayouts/norwegian.xml %%DATADIR%%/system/keyboardlayouts/persian.xml %%DATADIR%%/system/keyboardlayouts/polish.xml %%DATADIR%%/system/keyboardlayouts/portuguese.xml %%DATADIR%%/system/keyboardlayouts/romanian.xml %%DATADIR%%/system/keyboardlayouts/russian.xml %%DATADIR%%/system/keyboardlayouts/silesian.xml %%DATADIR%%/system/keyboardlayouts/slovak.xml %%DATADIR%%/system/keyboardlayouts/slovenian.xml %%DATADIR%%/system/keyboardlayouts/spanish.xml %%DATADIR%%/system/keyboardlayouts/swedish.xml %%DATADIR%%/system/keyboardlayouts/thai.xml %%DATADIR%%/system/keyboardlayouts/turkish.xml %%DATADIR%%/system/keyboardlayouts/ukrainian.xml %%DATADIR%%/system/keymaps/appcommand.xml %%DATADIR%%/system/keymaps/customcontroller.AppleRemote.xml %%DATADIR%%/system/keymaps/customcontroller.Harmony.xml %%DATADIR%%/system/keymaps/customcontroller.SiriRemote.xml %%DATADIR%%/system/keymaps/gamepad.xml %%DATADIR%%/system/keymaps/joystick.xml %%DATADIR%%/system/keymaps/keyboard.xml %%DATADIR%%/system/keymaps/mouse.xml %%DATADIR%%/system/keymaps/nyxboard/keyboard.xml %%DATADIR%%/system/keymaps/osmc/osmc_remote.xml %%DATADIR%%/system/keymaps/remote.xml %%DATADIR%%/system/keymaps/touchscreen.xml %%DATADIR%%/system/keymaps/wetek-play/keyboard.xml %%DATADIR%%/system/library/music/addons.xml %%DATADIR%%/system/library/music/albums.xml %%DATADIR%%/system/library/music/artists.xml %%DATADIR%%/system/library/music/boxsets.xml %%DATADIR%%/system/library/music/compilations.xml %%DATADIR%%/system/library/music/files.xml %%DATADIR%%/system/library/music/genres.xml %%DATADIR%%/system/library/music/musicroles/albumartists.xml %%DATADIR%%/system/library/music/musicroles/allartists.xml %%DATADIR%%/system/library/music/musicroles/allcontributors.xml %%DATADIR%%/system/library/music/musicroles/allroles.xml %%DATADIR%%/system/library/music/musicroles/arrangers.xml %%DATADIR%%/system/library/music/musicroles/composers.xml %%DATADIR%%/system/library/music/musicroles/conductors.xml %%DATADIR%%/system/library/music/musicroles/djmixers.xml %%DATADIR%%/system/library/music/musicroles/index.xml %%DATADIR%%/system/library/music/musicroles/lyricists.xml %%DATADIR%%/system/library/music/musicroles/orchestras.xml %%DATADIR%%/system/library/music/musicroles/remixers.xml %%DATADIR%%/system/library/music/musicvideos/albums.xml %%DATADIR%%/system/library/music/musicvideos/artists.xml %%DATADIR%%/system/library/music/musicvideos/directors.xml %%DATADIR%%/system/library/music/musicvideos/genres.xml %%DATADIR%%/system/library/music/musicvideos/index.xml %%DATADIR%%/system/library/music/musicvideos/studios.xml %%DATADIR%%/system/library/music/musicvideos/tags.xml %%DATADIR%%/system/library/music/musicvideos/titles.xml %%DATADIR%%/system/library/music/musicvideos/years.xml %%DATADIR%%/system/library/music/playlists.xml %%DATADIR%%/system/library/music/recentlyaddedalbums.xml %%DATADIR%%/system/library/music/recentlyplayedalbums.xml %%DATADIR%%/system/library/music/singles.xml %%DATADIR%%/system/library/music/songs.xml %%DATADIR%%/system/library/music/sources.xml %%DATADIR%%/system/library/music/top100/index.xml %%DATADIR%%/system/library/music/top100/top100albums.xml %%DATADIR%%/system/library/music/top100/top100songs.xml %%DATADIR%%/system/library/music/years.xml %%DATADIR%%/system/library/video/addons.xml %%DATADIR%%/system/library/video/files.xml %%DATADIR%%/system/library/video/movies/actors.xml %%DATADIR%%/system/library/video/movies/country.xml %%DATADIR%%/system/library/video/movies/directors.xml %%DATADIR%%/system/library/video/movies/genres.xml %%DATADIR%%/system/library/video/movies/index.xml %%DATADIR%%/system/library/video/movies/recentlyaddedmovies.xml %%DATADIR%%/system/library/video/movies/sets.xml %%DATADIR%%/system/library/video/movies/studios.xml %%DATADIR%%/system/library/video/movies/tags.xml %%DATADIR%%/system/library/video/movies/titles.xml +%%DATADIR%%/system/library/video/movies/versions.xml %%DATADIR%%/system/library/video/movies/years.xml %%DATADIR%%/system/library/video/musicvideos/albums.xml %%DATADIR%%/system/library/video/musicvideos/artists.xml %%DATADIR%%/system/library/video/musicvideos/directors.xml %%DATADIR%%/system/library/video/musicvideos/genres.xml %%DATADIR%%/system/library/video/musicvideos/index.xml %%DATADIR%%/system/library/video/musicvideos/recentlyaddedmusicvideos.xml %%DATADIR%%/system/library/video/musicvideos/studios.xml %%DATADIR%%/system/library/video/musicvideos/tags.xml %%DATADIR%%/system/library/video/musicvideos/titles.xml %%DATADIR%%/system/library/video/musicvideos/years.xml %%DATADIR%%/system/library/video/playlists.xml %%DATADIR%%/system/library/video/tvshows/actors.xml %%DATADIR%%/system/library/video/tvshows/genres.xml %%DATADIR%%/system/library/video/tvshows/index.xml %%DATADIR%%/system/library/video/tvshows/inprogressshows.xml %%DATADIR%%/system/library/video/tvshows/recentlyaddedepisodes.xml %%DATADIR%%/system/library/video/tvshows/studios.xml %%DATADIR%%/system/library/video/tvshows/tags.xml %%DATADIR%%/system/library/video/tvshows/titles.xml %%DATADIR%%/system/library/video/tvshows/years.xml %%DATADIR%%/system/library/video_flat/addons.xml %%DATADIR%%/system/library/video_flat/files.xml %%DATADIR%%/system/library/video_flat/inprogressshows.xml %%DATADIR%%/system/library/video_flat/movies.xml %%DATADIR%%/system/library/video_flat/musicvideos.xml %%DATADIR%%/system/library/video_flat/playlists.xml %%DATADIR%%/system/library/video_flat/recentlyaddedepisodes.xml %%DATADIR%%/system/library/video_flat/recentlyaddedmovies.xml %%DATADIR%%/system/library/video_flat/recentlyaddedmusicvideos.xml %%DATADIR%%/system/library/video_flat/tvshows.xml %%DATADIR%%/system/peripherals.xml %%DATADIR%%/system/playercorefactory.xml %%DATADIR%%/system/settings/android.xml %%DATADIR%%/system/settings/darwin.xml %%DATADIR%%/system/settings/darwin_ios.xml %%DATADIR%%/system/settings/darwin_osx.xml %%DATADIR%%/system/settings/darwin_tvos.xml %%DATADIR%%/system/settings/freebsd.xml %%DATADIR%%/system/settings/linux.xml %%DATADIR%%/system/settings/settings.xml %%DATADIR%%/system/settings/win10.xml %%DATADIR%%/system/settings/win32.xml %%DATADIR%%/system/settings/windows.xml %%DATADIR%%/system/shaders/GL/1.2/gl_convolution-4x4.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_convolution-6x6.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_output.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_default.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_fonts.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_multi.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_multi_blendcolor.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_texture.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_texture_noblend.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_shader_vert.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_shader_vert_default.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_stretch.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_videofilter_frag.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_videofilter_vertex.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_yuv2rgb_basic.glsl %%DATADIR%%/system/shaders/GL/1.2/gl_yuv2rgb_vertex.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_convolution-4x4.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_convolution-6x6.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_output.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_default.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_fonts.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_multi.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_multi_blendcolor.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_texture.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_texture_lim.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_texture_noblend.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_shader_vert.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_shader_vert_default.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_stretch.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_tonemap.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_videofilter_frag.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_videofilter_vertex.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_yuv2rgb_basic.glsl %%DATADIR%%/system/shaders/GL/1.5/gl_yuv2rgb_vertex.glsl %%DATADIR%%/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl %%DATADIR%%/system/shaders/GLES/2.0/gles_convolution-4x4.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_convolution-6x6.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_shader.vert %%DATADIR%%/system/shaders/GLES/2.0/gles_shader_default.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_shader_fonts.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_shader_multi.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_shader_multi_blendcolor.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba_blendcolor.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba_bob.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba_bob_oes.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba_oes.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_shader_texture.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_shader_texture_noalpha.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_shader_texture_noblend.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_tonemap.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_videofilter.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_videofilter.vert %%DATADIR%%/system/shaders/GLES/2.0/gles_yuv2rgb.vert %%DATADIR%%/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag %%DATADIR%%/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag %%DATADIR%%/system/shaders/convolution-4x4_d3d.fx %%DATADIR%%/system/shaders/convolution-6x6_d3d.fx %%DATADIR%%/system/shaders/convolution_d3d.fx %%DATADIR%%/system/shaders/convolutionsep-4x4_d3d.fx %%DATADIR%%/system/shaders/convolutionsep-6x6_d3d.fx %%DATADIR%%/system/shaders/guishader_checkerboard_left.hlsl %%DATADIR%%/system/shaders/guishader_checkerboard_right.hlsl %%DATADIR%%/system/shaders/guishader_common.hlsl %%DATADIR%%/system/shaders/guishader_default.hlsl %%DATADIR%%/system/shaders/guishader_fonts.hlsl %%DATADIR%%/system/shaders/guishader_interlaced_left.hlsl %%DATADIR%%/system/shaders/guishader_interlaced_right.hlsl %%DATADIR%%/system/shaders/guishader_multi_texture_blend.hlsl %%DATADIR%%/system/shaders/guishader_texture.hlsl %%DATADIR%%/system/shaders/guishader_texture_noblend.hlsl %%DATADIR%%/system/shaders/guishader_vert.hlsl %%DATADIR%%/system/shaders/output_d3d.fx %%DATADIR%%/system/shaders/rp_output_d3d.fx %%DATADIR%%/system/shaders/yuv2rgb_d3d.fx %%DATADIR%%/userdata/ModeLines_template.xml %%DATADIR%%/userdata/RssFeeds.xml %%DATADIR%%/userdata/iOS/sources.xml share/man/man1/kodi.1.gz share/man/man1/kodi.bin.1.gz share/metainfo/org.xbmc.kodi.metainfo.xml +share/wayland-sessions/kodi-gbm.desktop share/xsessions/kodi.desktop