Kodi is an award-winning free and open source software media player and entertainment hub for digital media

Kodi Logo

websitedocscommunityadd-ons

License Documentation PRs Welcome Contributions Welcome Build Commits

Welcome to Kodi Home Theater Software!

Kodi is an award-winning free and open source software media player and entertainment hub for digital media. Available as a native application for Android, Linux, BSD, macOS, iOS, tvOS and Windows operating systems, Kodi runs on most common processor architectures.

Created in 2003 by a group of like minded programmers, Kodi is a non-profit project run by the XBMC Foundation and developed by volunteers located around the world. More than 500 software developers have contributed to Kodi to date, and 100-plus translators have worked to expand its reach, making it available in more than 70 languages.

While Kodi functions very well as a standard media player application for your computer, it has been designed to be the perfect companion for your HTPC. With its beautiful interface and powerful skinning engine, Kodi feels very natural to use from the couch with a remote control and is the ideal solution for your home theater.

Give your media the love it deserves

Kodi can be used to play almost all popular audio and video formats around. It was designed for network playback, so you can stream your multimedia from anywhere in the house or directly from the internet using practically any protocol available.

Point Kodi to your media and watch it scan and automagically create a personalized library complete with box covers, descriptions, and fanart. There are playlist and slideshow functions, a weather forecast feature and many audio visualizations. Once installed, your computer or HTPC will become a fully functional multimedia jukebox.

Kodi

Getting Started

Kodi's developers work hard to make it support a large range of devices and operating systems. We provide final as well as development builds. To get started, head over to the downloads section and simply select the platform that you want to install it on. A quick start guide to help you get acquainted with Kodi is available in our wiki.

How to Contribute

Kodi is created by users for users and we welcome every contribution. There are no highly paid developers or poorly paid support personnel on the phones ready to take your call. There are only users who have seen a problem and done their best to fix it. This means Kodi will always need the contributions of users like you. How can you get involved?

  • Coding: Developers can help Kodi by fixing a bug, adding new features, making our technology smaller and faster and making development easier for others. Kodi's codebase consists mainly of C++ with small parts written in a variety of coding languages. Our add-ons mainly consist of python and XML. For more information, please have a look at our contributing guide.
  • Helping users: Our support process relies on enthusiastic contributors like you to help others get the most out of Kodi. The #1 priority is always answering questions in our support forums. Everyday new people discover Kodi, and everyday they are virtually guaranteed to have questions.
  • Localization: Translate Kodi, add-ons, skins etc. into your native language.
  • Add-ons: Add-ons are what make Kodi the most extensible and customizable entertainment hub available. Get started building an add-on.
  • Documentation: Kodi's wiki pages are the hub for information about Kodi and surrounding ecosystem. Help make our documentation better by writing new content or correcting existing material.

Not enough free time? No problem! There are other ways to help Kodi.

  • Spread the word: Share Kodi with the world! Tell your friends and family about how Kodi creates an amazing entertainment experience. Stay up to date on the latest stories about Kodi reading our news section, follow us on Twitter and Facebook, or star Kodi's repo if you want to follow development.
  • Donate: We are always happy to receive a donation. Donations are typically used for travel to attend conferences, any necessary paperwork and legal fees, and the yearly XBMC Foundation Developers Conference, where a great deal of coding and planning for the following year occurs. Donations may also be used to purchase necessary hardware and licenses for developers, along with t-shirts, stickers, and other accessories for conferences.
  • Buy Kodi merchandise: Purchasing Kodi gear helps just as much as a donation, and you get something in return! Checkout our store for Kodi branded gear. We regularly add new products so check back often.

Building

Kodi uses CMake as its building system but instructions are highly dependent on your operating system and target platform. Fortunately we've got you covered.

Acknowledgements

Kodi couldn't exist without

  • All the contributors. Big or small a change, it does make a difference.
  • All the developers that write the fantastic software and libraries that Kodi uses. We stand on the shoulders of giants.
  • Our fantastic community for the never ending support, inspiration, feedback, and for keeping us on our toes when we screw up!
  • Our sponsors. Without them, keeping a huge project like this alive would be next to impossible.

License

Kodi is GPLv2 licensed. You may use, distribute and copy it under the license terms.

Comments
  • [binary addons] move PVR addons to our binary addons buildsystem

    [binary addons] move PVR addons to our binary addons buildsystem

    These commits (and all the PVR addons in my github account) are my initial take at moving PVR addons out of the xbmc-pvr-addons repository and into our binary addons buildsystem. A few notes

    • I've only really tested compiling as I don't have any PVR setup. I only tested the pvr.demo addon which lead to the first commit.
    • I've only tested this on WIN32
    • all PVR addons in my github account (see https://github.com/Montellese?tab=repositories) are based on the repositores created by and kept in sync by @notspiff so a big thank you to him.
    • all PVR addons depend on https://github.com/Montellese/kodi-platform which in turn depends on tinyxml which are added as common dependencies to all PVR addon repositories.

    TODOs

    • [x] move kodi-platform into kodi's depends buildsystem
    • [x] test building on all platforms
    • [ ] test every PVR addon
    • [x] fix detection of OpenGL/OpenGLES2 in pvr.vdr.vnsi
    • [x] pvr.dvblink depends on libcurl
    • [ ] pvr.filmon depends on libcurl
    • [x] libjansson and cppmyth includes and libs are installed into the wrong directory
    • [x] pvr.iptvsimple depends on zlib which is downloaded from our mirrors and built using the supplied CMakeLists.txt. Unfortunately it builds shared and static libs and the builtin FindZlib.cmake provided with cmake picks up the shared lib instead of the static lib (at least on WIN32) and I haven't found a way around that yet.
    • [x] sync all PVR addons to xbmc-pvr-addons
    • [x] get the dependency handling right
    • [x] move kodi-platform to xbmc's github account
  • [binary addons] Add automatic dependency handling and move RSXS and some Visualizations to addons

    [binary addons] Add automatic dependency handling and move RSXS and some Visualizations to addons

    This adds automatic dependency handling for cmake based addons by using the depends folder in existing binary addons. Addons are first downloaded and extracted, then we check if the depends folder exists and handle addon deps dynamically. Tested on linux

    Additionally a few screensavers and visualizations are moved over to addons. @Montellese @jmarshallnz @notspiff ping for platform stuff and sanity checks

    Note about projectm: After sinking hours on end into trying to fix the mess that projectms buildsys is and trying to get it compiled static without unresolved symbols, I gave up at let it build dynamically. On linux libprojectm.so is copied to the addon install path.

  • [imx] Deinterlacing rework

    [imx] Deinterlacing rework

    This is the rework of the HW deinterlacing for IMX6 boards (see xbmc-imx6/xbmc#70). It creates a mixer threads that offloads deinterlacing to the IPU in parallel to VPU decoding and GPU rendering.

    What works:

    • Selectable deinterlacing modes: None, Auto, Force

    What does not work:

    • Double rate feature. Can be easily implemented but needs proper settings in the GUI
    • Smooth playback for HD streams which needs to be tested. The performance for my test setup increased already compared to Gotham

    This PR is for review to be integrated into the current IMX6 Codec implementation.

  • [PVR] Series recordings

    [PVR] Series recordings

    This PR adds series recording support to Kodi.

    The technical concept:

    Basic concept is that PVR addons now define an arbitrary number of timer types they support, each type defining its own combination of timer type attributes (out of a set of attributes predefined by the PVR addon API).

    Kodi PVR core picks up the different types (and their attributes) using a new PVR addon API function and strictly builds up the complete timer-related logic dynamically, according to the timer attributes. Timer type information is now available at every TimerInfoTag instance.

    Essential timer attributes: Kodi distinguishes between manual (time-based) and epg-based timers. Also, there can be one-shot and repeating timers. All combinations of these attributes are allowed, e.g. "manual + one-shot" or "epg + repeating".

    Examples for other timer attributes: "supports recording priority", "supports epg search string", "supports recording folders", ...

    UI changes:

    Timer window:

    • A "Type" column has been added
    • "Scheduled time" column now handles all combinations of weekdays, and start/stop time (incl. "any time" for timer schedules) correctly.

    screenshot001

    • The timers scheduled by timer schedules (aka repeating timers) can be displayed as "children" of the timer schedule, similar to the "group items" feature of the recording window

    screenshot004

    • This behaviour can be controlled using a new (level 4) setting available in the Confluence side blade, similar to the group items feature of the recordings window.

    screenshot010

    screenshot011

    Timer settings dialog:

    • Completely rewritten from scratch, now acts completely dynamically upon the available timer types and their attributes
    • Main idea is to start creation of a new timer by selecting the appropriate timer type. Dialog content will automatically adjust itself according to the respective timer type attributes. As before, user fills in the relevant data on kicks of the new timer
    • Dialog can (like before) also used for editing existing timers
    • Couple of new/enhanced features, among them support for epg-based repeating timers, support for all weekday combinations, pre- and post-record time, ...
    • Finally, lots of bug fixes...

    screenshot006

    screenshot007

    screenshot008

    • For weekday selection, a new dialog was implemented.

    screenshot009

    Context menu actions:

    • All relevant context menu items are now displayed only if the corresponding functionality is available according to the timer type attributes. Example: Activate/deactivate timer
    • A (from my point of view very cool) new menu item "Add advanced timer" is now available if an epg entry was selected, for example in the epg grid. This opens a timer settings dialog preset to create a an epg-based series recording based on the data of the selected epg entry.

    screenshot012

    screenshot013

    Note: All this is implemented and tested against a real PVR addon (pvr.hts), not "just" pvr.demo. I consider pvr.hts as the reference implementation of this (larger) PVR addon API change. Code is currently here (https://github.com/ksooo/pvr.hts/tree/series-recording-support), PR will follow soon.

    Feedback is much appreciated!

  • Language addons

    Language addons

    Last weekend I was thining that it would be nice if we would support addons that simply provide files that could be used by internal code and/or by other addons. There would be no logic and nothing to be executed in those addons. An example use case would be image package addons that could be used by multiple skins (e.g. an image package of all studio logos). I started working on it and added a basic "resource" addon which is exposed through our VFS under a resource://path.

    Since I don't know much about skinning I decided to try another possible resource addon and came up with language addons. Every language in Kodi basically consists of a langinfo.xml and a strings.po so there are only files and no other logic. So I came up with the xbmc.resource.language addon extension point and resource.language.<language id> addons. The files of a language are available through resource://language/<language id>/<file>.

    I have adjusted the startup code (had to move addon initialization before language loading) and added some logic to handle updates coming from old configurations. I have also added reloading of language strings if the addon providing the currently used language is updated. Furthermore I have added a dialog asking the user if he wants to switch to a newly installed language (same as for skins).

    I have converted all existing languages to addons but I'm pretty sure that I messed some of them up. Furthermore I noticed that not all of the languages with a strings.po have a langinfo.xml. How does that work? Last but not least the German language also had a keyboardmap.xml file which doesn't seem to be used/referenced anywhere in our code base so I removed it.

    I have also tried to adjust the build scripts but that's completely untested right now. On win32 it's also not possible right now to choose the installed languages in the installation wizard. Furthermore Xcode will need updating.

    I have no idea how this fits into the tools used by @alanwww1 and our transifex project. Maybe with this it could become possible for language-specific teams to create an updated addon of their language themselves and submit them to the official repository to lessen the work @alanwww1 has to do on his own right now.

    TODOs:

    • [x] we need to upload all addons to a repository and integrate it into our addon repository
    • [x] I don't like having repository.xbmc.org hardcoded
    • [x] refreshing of the main addon repository doesn't work if the login dialog is enabled due to https://github.com/xbmc/xbmc/blob/master/xbmc/addons/AddonInstaller.cpp#L385
    • [ ] the OK dialog letting the user know that we had to fall back to the English language because we couldn't find the configured language doesn't always show because Confluence's Startup.xml replaces the startup window with the home window which leads to the dialog being hidden. Whether the dialog is visible or not depends on timing. The same problem applies to the migration info dialog that @Memphiz added for the XBMC -> Kodi migration.
    • [ ] we need to figure out if the windows installer properly deletes the old language directory
    • [x] android packaging still seems to include the old language files
  • Audio dsp addon handling

    Audio dsp addon handling

    Attached a audio DSP processing system over add-ons.

    This is my first version and not complete finished. Can you have a look over it and any ideas for things which must be improved or are wrong.

    The current system in steps:

    • Data is passed from CActiveAEBufferPoolResample to the DSP processing system if DSP enabled and minimum one add-on is available.
    • All Add-ons are asked about the requested stream type to find available addons and modes, e.g. 5.1 Audio not need a stereo up mix.
    • The system makes a list of master processing modes which are selectable from user.
    • The system makes also a list of pre and post processing modes which are selectable and process point moveable inside Settings->System->Audio->Audio DSP Settings
    • On data processing it goes over following steps:
      1. Input processing - Unmodified input stream and is send to all enabled add-ons for detection and error correction
      2. Input re-sample - Re sample of the input signal for the master processing, only one add-on is allowed for it.
      3. Pre processing - Used for any steps before master processing. All enabled add-ons functions are called to make this.
      4. Master processing - The main processing like, surround up mix or sound modification processes. Only one from user over menu selectable mode is allowed. Add-ons can pass multiple selectable modes to KODI. If input channel alignment on it is higher as requested output and the master mode does not perform a down mix it becomes handled from ffmpeg re sample after return of master function.
      5. Post processing - Used for any other steps like, volume correction, equalizer and much more. All enabled add-ons functions are called to make this.
      6. Output re-sample - Re sampling of the processing signal to KODI audio output processing.

    The pre and post processing modes can be selected and moved within processing chain on audio dsp settings inside Settings->System->Audio.

    Things to do or finished:

    • The first version of dsp add-on headers and the basic system is finished.
    • Things for me which missing and are to-do:
      1. Code cleanup
      2. Faults removal
      3. Create a helper documentation about a DSP add-on programming
      4. Code re check

    Addon position audiodsp1 The DSP enable position audiodsp - addon setting6 The button position to select streaming DSP settings dialogue audiodsp - addon setting4 The basic settings dialogue, separated in sub menus audiodsp - addon setting5 A add-on master mode settings dialogue audiodsp - addon setting Process chain information dialog (with CPU usage) audiodsp - addon setting2 Add-on mode process chain selection dialogue audiodsp - addon setting3

  • Controller input

    Controller input

    Here it is... the first half of RetroPlayer!

    Relavant links:

    Controller window

    This PR contains a new system for controller and keyboard input used by RetroPlayer. Games aren't included in this PR, so you'll have to use a RetroPlayer build to test the full extent of the input system. Still, the input system offers many improvements in Kodi outside of games, and lets us start collecting button map data for when games hit.

    This PR is accompanied by a binary add-on, peripheral.joystick. It warrants review alongside the PR. This add-on was created to contain all of Kodi's platform-specific joystick code and keymap data.

    Here are the blocking issues:

    • [x] Compilation on all platforms (RPi needs an #ifdef HAS_LIBUDEV around the touchscreen fix)
    • [x] Android support (thread) (thanks montellese)
    • [x] The controller window's "get more" button fails silently (report)
    • [x] Breaks some EventServer clients (Apple IR Remotes, some Yatse buttons, etc) (report)
    • [x] Erratic button presses while mapping buttons (report)
    • [x] Empty keyboard settings breaks GUI (report) (thanks montelllese)
    • [x] Missing scroll bars in controller dialog (thanks hitcher)
    • [x] Broken volume commands (report)
    • [x] Open separate PR for [guilib] fix (done: PR 8932)
    • [x] Open separate PR for [addon] changes (thanks montellese)
    • [x] Broken controller input on RPi and some linux boxes (report)
    • [x] Erratic controller behavior in GUI (report)
    • [x] Controller dialog skips down and left for some controllers (report)
    • [x] OK dialog when peripheral.joystick is not focused on opening (report) (thanks Montellese)
    • [x] Move peripheral event processing to another thread to fix hangs (report)
    • [x] Notification for add-on updates clears the controller profiles list (thanks montellese)
    • [x] Labels disappear on first install (report) (thanks montellese)
    • [x] Canceling the prompt doesn't absorb keyboard input
    • [x] Kodi doesn't fail gracefully when peripheral.joystick isn't found (report) (thanks montellese)
    • [x] Possible deadlock on shutdown (report) (thanks montellese)

    Here are the issues that aren't blocking the merge:

    • [ ] iOS Game Controller Framework support (thread)
    • [x] Broken touchscreen on RPi (report)
    • [ ] Controller button doesn't stay focused while user is mapping buttons (report)
    • [ ] Move focusing logic to CGUIViewControl (report) (skinner advice please?)
    • [ ] Incompatible with Universal Remote server (report)
    • [ ] Incompatible with iMON receiver (report)
    • [ ] Problems with accelerometers (report and linux solution)
    • [x] Controller input not ignored when Kodi is minimized (report)
    • [ ] CPeripheralAddon requires refactoring (report)
    • [x] Add "Help" button
    • [ ] Refocus controller when user ends mapping
    • [ ] The "Reset" button resets all controllers instead of asking for a specific one
    • [ ] Anomalous trigger detector misidentifies axes that are fully pressed when controller is connected
    • [ ] Erroneous drivers with no joystick name can't be mapped
  • New feature: Added parameters to skin include directive ($PARAM[Name])

    New feature: Added parameters to skin include directive ($PARAM[Name])

    Skin includes have been enhanced to accept parameters and thus be able to generate dynamic content based on them. Basically, they can now act as "procedures" where needed. This can help clean up XMLs a bit, making skins much easier to read and maintain. It also allows for more component-based modular skin design.

    The syntax is as follows:

    include definition:

    <include name="MyControl1">
      <!-- parameter list with possible default values is specified here (optional) -->
      <param name="id"/>
      <param name="posx" default="120"/>
      <param name="posy" default="120"/>
      <param name="border" default="5"/>
      <param name="background">foo.png</param> <!-- alternative form -->
      <param name="color"/>
      <definition>
        <!-- include body goes here -->
        <control id="$PARAM[id]" ...>
          <posx>$PARAM[posx]</posx>
          <posy>$PARAM[posy]</posy>
          <control ...>
            ...
            <texture border="$PARAM[border]">$PARAM[background]</texture>
          </control>
          ...
          <!-- nested include call -->
          <include name="MyControl2">
            <param name="label">$INFO[Player.Title]</param>
            <param name="color" value="$PARAM[color]"/> <!-- parameter forwarding -->
          </include>
          ...
        </control>
        ...
      </definition>
    </include>
    

    include call:

      <include file="MyControls.xml" name="MyControl1">
        <param name="id" value="60"/>
        <param name="posx" value="225"/>
        <param name="posy" value="150"/>
        <param name="color" value="white"/>
      </include>
    

    Rules:

    • Parameter list is specified using <param> tags in both include calls and definitions.
    • Include definition body is enclosed within <definition> tag.
    • Default values for parameters can be specified within include definition and are used as replacement when parameters are not passed in the include call
    • Parameters without default values in include definitions are specified for better readability and documentation purposes only, but are otherwise not mandatory and can be omitted.
    • If there are no <param> tags in include definition, <definition> tag can be omitted too.
    • Concrete arguments are specified within include call tag
    • Actual arguments are a combination of these two, with passed arguments having a higher priority over default ones
    • Parameter references of the form $PARAM[ParamName] are replaced with actual arguments within include definition body, inside both tag values and attributes
    • There can be one or more parameter references specified within a single tag/attribute value, possibly in combination with other characters (e.g. <param name="debug" value="x:$PARAM[x]; y:$PARAM[y]"/>)
    • Parameter references are resolved before everything else ($INFO labels, $LOCALIZE, etc.), so these can be passed as arguments too
    • Parameter references that refer to missing/undefined parameters are replaced with empty strings; one exception to this rule is when forwarding a missing parameter of the form <param name="..." value="$PARAM[MissingParamName]"/> from enclosing include to the nested include, where this parameter, which would normally be expanded to "", won't be passed at all, allowing any default value from the nested include to be correctly picked up and not overriden by ""
    • Extra parameters in include call that are passed but not referenced anywhere within include definition are ignored
    • Incomplete parameter references (without closing ']') are logged as errors and left as is, rather than resolved to empty strings

    This feature was proposed and discussed in more detail here: http://forum.xbmc.org/showthread.php?tid=190135. It requires a change in Wiki documentation which I can help with if it gets accepted.

    EDIT: Originally proposed syntax is given below. Together with the discussion that follows it, it shows the full evolution of the feature for any future reference. This syntax is NOT included in Kodi.

    include definition:

    <!-- default parameter values are specified here -->
    <include name="MyControl1" p:posx="120" p:posy="120" p:border="5" p:background="foo.png">
      <control id="$PARAM[id]" ...>
        <posx>$PARAM[posx]</posx>
        <posy>$PARAM[posy]</posy>
        <control ...>
          ...
          <texture border="$PARAM[border]">$PARAM[background]</texture>
        </control>
        ...
        <!-- nested include call -->
        <include p:label="$INFO[Player.Title]" p:color="$PARAM[color]">MyControl2</include>
        ...
      </control>
      ...
    </include>
    

    include call:

      <include file="MyControls.xml" p:id="60" p:posx="225" p:posy="150" p:color="white">MyControl1</include>
    
  • [add-ons/settings] migrate add-on settings to settings library

    [add-ons/settings] migrate add-on settings to settings library

    Description

    So this is it. I've been "dreaming" of this final step ever since I worked on the original settings rework in core but it turned out to be much more complicated than expected which is also why it took so long. This PR introduces (almost) all the necessary bits to be able to use the same settings system for add-ons that we already in core. Furthermore it contains a backwards compatibility layer which reads in old settings definitions (and values) and translates those into settings from the new system. After this PR settings will always be saved in the same format as guisettings.xml but it can read the settings definition either from the old add-on settings format or from the "new" core settings system format.

    Since I'm not that much of an add-on user myself and since I've never written an add-on myself I'm pretty sure I missed a few things in the backwards compatibility layer. So it would be greatly appreciated if people with more experience in this area could give this a try. But beware once Kodi has written the setting values in the new format you can't go back to the old format without losing all your add-on settings. So best make a backup of your add-on data before giving this a try.

    There are a few parts that are known not to be backwards compatible but I've tried to add log messages in those places so that it becomes obvious. I hope that those cases are edge cases that can live without backwards compatibility but who knows.

    There are also parts that I wasn't able to test like binary add-ons defining settings through the binary add-on API since I don't know if and which add-on is using this at all.

    In the end the major benefit is that GUIDialogAddonSettings has become very simple because it can derive from the existing settings related base classes. The major part of the work is in CAddonSettings which also contains the backwards compatibility layer which we can hopefully drop someday (a few releases into the future).

    I'm not sure if we want to "mark" the old add-on settings approach as deprecated to try and get add-ons to adopt to the new approach or not.

    Some (basically the first 25) of the commits could go into a separate PR (as I've already done with a few fixes before) but since they didn't bring any real benefit to the existing code I didn't do that yet. If someone would like me to do that to make reviewing easier I'm fine with that. Just let me know.

    Part of this work also overlaps with my media importing work (CSettingsBase et al.) and should make things a bit easier there as well code-wise.

    How Has This Been Tested?

    Locally by installing some add-ons, opening their add-on settings and comparing the result to before.

    Types of change

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [x] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist:

    • [x] My code follows the Code guidelines of this project
    • [x] My change requires a change to the documentation, either Doxygen or wiki
    • [ ] I have updated the documentation accordingly
    • [x] I have read the CONTRIBUTING document
    • [ ] I have added tests to cover my change
    • [x] All new and existing tests passed
  • enable dirty regions for full screen video

    enable dirty regions for full screen video

    Moves video rendering (fullscreen) from application to GUIWindowFullScreen. By doing this dirty regions work on fullscreen mode and the platform has separate layers for video and ui.

    @popcornmix iirc you still need some options to limit fps of gui, right?

  • native resolution ( disable upscaling ) option

    native resolution ( disable upscaling ) option

    http://forum.xbmc.org/showthread.php?tid=64139&pid=1131505#pid1131505

    I spent few hours to dig into it and the results are promising. I'm pretty fresh to xbmc though, so maybe there is better way to deal with it. Anyway, what you need to run native resolution:

    • apply the provided patch
    • set in your advancedsettings.xml following variable in < video > section:
        <video>
            <upscalemode>1</upscalemode>      <!-- upscalemode: 0-default, 1-native scaling -->
        </video>
    
    • set your receiver to upscaling mode - upscale source to maximum display resolution (1080p in my case)

    How it works:

    • the GUI works with maximum resolution
    • when the player is spawned it reads the source dimension and sets the renderer to the lowest supported resolution which is the best match for the source resolution
    • the movie is played with lowest acceptable resolution and is upscaled by the receiver to 1080p
    • when the playback stops, the xbmc GUI is back to default resolution (1080p for me)

    Here are few examples, where USER = default screen resolution NATIVE = movie resolution ADJUST2 = final xbmc resolution for playback

    
        NOTICE: Display resolution USER : default: 1920x1080 @ 24.00Hz (17)
        NOTICE: Searching for NATIVE resolution: 1920x1080
        NOTICE: Display resolution ADJUST2 : default: 1920x1080 @ 24.00Hz (17)
        .
        NOTICE: Display resolution USER : default: 1920x1080 @ 24.00Hz (17)
        NOTICE: Searching for NATIVE resolution: 1280x720
        NOTICE: Display resolution ADJUST2 : default: 1280x720 @ 50.00Hz (29)
        .
        NOTICE: Display resolution USER : default: 1920x1080 @ 24.00Hz (17)
        NOTICE: Searching for NATIVE resolution: 720x304
        NOTICE: Display resolution ADJUST2 : default: 720x576 @ 50.00Hz (37)
        .
        NOTICE: Display resolution USER : default: 1920x1080 @ 24.00Hz (17)
        NOTICE: Searching for NATIVE resolution: 608x336
        NOTICE: Display resolution ADJUST2 : default: 640x480 @ 60.00Hz (41)
        .
        NOTICE: Display resolution USER : default: 1920x1080 @ 24.00Hz (17)
        NOTICE: Searching for NATIVE resolution: 640x256
        NOTICE: Display resolution ADJUST2 : default: 640x480 @ 60.00Hz (41)
        .
        NOTICE: Display resolution USER : default: 1920x1080 @ 24.00Hz (17)
        NOTICE: Searching for NATIVE resolution: 640x272
        NOTICE: Display resolution ADJUST2 : default: 640x480 @ 60.00Hz (41)
        .
        NOTICE: Display resolution USER : default: 1920x1080 @ 24.00Hz (17)
        NOTICE: Searching for NATIVE resolution: 720x392
        NOTICE: Display resolution ADJUST2 : default: 720x576 @ 50.00Hz (37)
        .
        NOTICE: Display resolution USER : default: 1920x1080 @ 24.00Hz (17)
        NOTICE: Searching for NATIVE resolution: 608x256
        NOTICE: Display resolution ADJUST2 : default: 640x480 @ 60.00Hz (41)
        .
        NOTICE: Display resolution USER : default: 1920x1080 @ 24.00Hz (17)
        NOTICE: Searching for NATIVE resolution: 640x352
        NOTICE: Display resolution ADJUST2 : default: 640x480 @ 60.00Hz (41)
        .
        NOTICE: Display resolution USER : default: 1920x1080 @ 24.00Hz (17)
        NOTICE: Searching for NATIVE resolution: 624x224
        NOTICE: Display resolution ADJUST2 : default: 640x480 @ 60.00Hz (41)
        .
        NOTICE: Display resolution USER : default: 1920x1080 @ 24.00Hz (17)
        NOTICE: Searching for NATIVE resolution: 1280x544
        NOTICE: Display resolution ADJUST2 : default: 1280x720 @ 50.00Hz (29)
        .
        NOTICE: Display resolution USER : default: 1920x1080 @ 24.00Hz (17)
        NOTICE: Searching for NATIVE resolution: 624x352
        NOTICE: Display resolution ADJUST2 : default: 640x480 @ 60.00Hz (41)
    

    I have to say that results are surprisingly good. I'm using receiver with Marvell Qdeo chip and it is doing great job, the picture is visible better than when xbmc is upscaling directly to 1080p. Well, you need to try yourself to judge.

    The function used to find the closest resolution match is very simple, perhaps it might be improved. For now it tries to find the lowest resolution which is equal or higher than source resolution and tries to keep as close as possible to original refresh rate for the display.

  • Simple FoldCase for Turkish-I issue #19883

    Simple FoldCase for Turkish-I issue #19883

    Description

    Adds FoldCase API, tests and several uses of the API.

    Keeping commit small and focused on FoldCase itself. Followup commits will change numerous uses of ToLower (and similar code, all in StringUtils) to use FoldCase.

    Motivation and context

    This change improves on patch for Turkish-I problem (19883). The Turkish-I problem caused Kodi to be non-functional due to ToLower not treating ASCII i/I and Turkish "I" characters in a "normal" manner. This caused all sorts of problems when the keys to lookup tables, etc. were normalized to lower case (or upper case).

    Most of Kodi's use of ToLower is for 'normalizing' a key to a table. The vast majority of these cases use ASCII key values. But not universally. I have seen eight instances where something like "keyboard" was translated into the current language and then used as a key value. I have also seen where keywords are looked for in arbitrary text. These frequently work okay even with an inferior single-byte C++ tolower, but it is flirting with trouble.

    This implementation uses Unicode case folding data from Unicode.org to perform "simple" casefolding. Simple case folding handles all cases where there is a 1-1 codepoint (Unicode "character") conversion between a codepoint and the folded version of the codepoint. It can't handle the few situations where a single codepoint (like German sharfes-S, which when folded becomes: 'ss' or where some context in the word or sentence makes a difference. For Kodi these situations should only exist if some quite poor programming practice is used for key values. Even if these do exist, implementing FoldCase would make the problem easier to fix since it separates general 'ToLower' (for the user to see) usage from 'FoldCase' (internal key) usage.

    How has this been tested?

    For this specific commit, the tests are only with the improved TestStringUtils.cpp. This is due to this commit being the API itself. Subsequent commits will modify existing code to use these APIs. But I have worked on this problem for months, it has gone through multiple iterations and implementations. I have run all automated tests. I have run Kodi using English, German, Russian, Ukranian, Turkish and Japanese. I have downloaded several thousand movie titles from TMDb in a combination of the above languages and created dummy movies out of them so that I can search and play them. I have a Random Trailers plugin which runs in the background and plays the fake movies and displaying the Movie Info.

    I have done the basic, easy things to do with the UI. I have navigated to numerous screens, etc. without failure. I have displayed our 25,000 (English) audio library.

    That being said, it is very difficult to test more than a tiny amount of Kodi by hand. There are many features that I am not that familiar with. The problem is particularly difficult for me using non-English.

    More testing that I have done:

    • Sorting by title, date, etc.
    • Search by actor, genre, date
    • Drill down Movie Info -> Actor -> Titles (that the actor is in)

    Testing on Ubuntu 24.04 with 6/12 CPU Intel with 32G ram. Usually running with debug builds, but also -O2 and with memory debugging from time to time.

    What is the effect on users?

    Will prevent Turkish black-screen As a side-effect the 'accuracy' of FoldCase, ToLower/ToUpper, and string comparisons should be improved for multi-byte languages since the current implementation mostly relies on C++ tolower/toupper, which ONLY works properly for single byte characters. This implementation of FoldCase is Unicode (4-bytes) ToLower/ToUpper will go at least to 2-bytes and probably 4-bytes (I'm looking at more character tables for ToLower/ToUpper from Unicode.org that have essentially the same format as for FoldCase).

    Downside: Performance. Preliminary tests show that converting from utf-8 to utf32 and back can increase FoldCase string by 3x over current. However, this says nothing about real world. When I am finished converting all of the code over I will instrument the code to capture much more realistic data. There are also some things that I am doing which will help mitigate the problem. The most import of which is likely to be using string_view instead of string to reduce copies.

    Screenshots (if appropriate):

    Types of change

    • [x ] Bug fix (non-breaking change which fixes an issue)
    • [ ] Clean up (non-breaking change which removes non-working, unmaintained functionality)
    • [x ] Improvement (non-breaking change which improves existing functionality)
    • [ x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that will cause existing functionality to change)
    • [ ] Cosmetic change (non-breaking change that doesn't touch code)
    • [ ] None of the above (please explain below)

    There are several changes that I would like to make that others may disagree with. They are NOT part of this commit and there will be time to discuss:

    • FoldCase, unlike ToLower/ToUpper will take a string_view argument and return a string. Since I will be changing most uses of ToLower to use FoldCase (as well as related changes) I would like to change ToLower/ToUpper to have the same signature (take a string_view argument and return a string). There is not that much extra work required to do this, especially since string_view is designed to be compatible.
    • CompareNoCase takes an optional length argument, which is measured in bytes. In the context of Unicode this makes no sense. It should be defined to be code-points. You don't want to use half of a character. I have implemented and tested a version which interprets the argument 'n' to be codepoints.

    Checklist:

    • [x ] My code follows the Code Guidelines of this project
    • [ ] My change requires a change to the documentation, either Doxygen or wiki
    • [ ] I have updated the documentation accordingly
    • [x ] I have read the Contributing document
    • [x ] I have added tests to cover my change
    • [ x] All new and existing tests passed

    The data file from Unicode.org requires a license statement. I think we have to add it to the License directory. For now it is included in StringUtils.cpp as part of the comments for the included data.

  • Nexus readstring buffer

    Nexus readstring buffer

    Description

    • Fix possible buffer overflow when using CFile::ReadString()
    • Add documentation of CFile::ReadString()
    • Fix CFile::ReadString() to match documentation

    Motivation and context

    Looking at #22039 I noticed the unusual buffer length parameter of CFile::ReadString(), was wondering if there are other wrong use cases and found some. First commit contains the fixes.

    Second commit add function documentation.

    Third commit is making the function behavior consistent.

    Needed fix for kodi::vfs::ReadLine() (#22039) is not included.

    How has this been tested?

    In my private Nexus and Matrix Linux test builds.

    What is the effect on users?

    Less random crashes from buffer overflow.

    Screenshots (if appropriate):

    Types of change

    • [X] Bug fix (non-breaking change which fixes an issue)
    • [ ] Clean up (non-breaking change which removes non-working, unmaintained functionality)
    • [ ] Improvement (non-breaking change which improves existing functionality)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that will cause existing functionality to change)
    • [ ] Cosmetic change (non-breaking change that doesn't touch code)
    • [ ] None of the above (please explain below)

    Checklist:

    • [X] My code follows the Code Guidelines of this project
    • [ ] My change requires a change to the documentation, either Doxygen or wiki
    • [ ] I have updated the documentation accordingly
    • [X] I have read the Contributing document
    • [ ] I have added tests to cover my change
    • [ ] All new and existing tests passed
  • Video on Show Library menu does not play if title ends by an interrogation mark and the file is storaged on a NFS

    Video on Show Library menu does not play if title ends by an interrogation mark and the file is storaged on a NFS

    Bug report

    Describe the bug

    I can not open a file from the Video Library menu, but I can reproduce from the file manager menu. It only happened on shows whose title are ended by an interrogation mark.

    Expected Behavior

    The video should be played.

    Actual Behavior

    The video can not be played. The log shows:

    2022-12-04 20:01:41.688 T:1279     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong
    [kodi.log](https://github.com/xbmc/xbmc/files/10149678/kodi.log)
     to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 20:01:41.688 T:1279    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    

    None of the videos on the same folder or siblings folders can not be reproduced in the Video Library menu. The name of the file is truncated on the log, it should be:

    nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01E01.mkv
    

    Additionaly when I mark only one episode as seen all the season is marked. Other shows in the NFS server can be played.

    Possible Fix

    I think that long names could be the problem, but I tested with this path:

    nfs://192.168.1.143/home/transmission/videos/shows/La que se avecina (2007) testtttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt/La que se avecina (2007) S13/La que se avecina (2007) S13E01.mkv
    

    And it can be played.

    I tested another show with a name terminated by an "?":

    nfs://192.168.1.143/home/transmission/videos/shows/¿Cómo se llama esta relación? (2021)/¿Cómo se llama esta relación? (2021) S01/¿Cómo se llama esta relación? (2021) S01E01.mp4
    

    And the error appears.

    I tested the same show but locally storaged:

    /storage/tvshows/¿Cómo se llama esta relación? (2021)/¿Cómo se llama esta relación? (2021) S01/¿Cómo se llama esta relación? (2021) S01E01.mp4
    

    And it works.

    So I think that the interrogation mark must be escaped to "%3F". Maybe on function NfsConnection::splitUrlIntoExportAndPath or CURL::Parse?

    To Reproduce

    Steps to reproduce the behavior:

    1. Create a source to a NFS with the video.
    2. Select a NFS folder for shows content.
    3. Go to the Show Library menu.
    4. Go to the selected episode: "Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01E01.mkv" and try to reproduce it.
    5. A window with the message "Remove episode from library This file no longer available" appears.

    Debuglog

    The debuglog can be found here:

    2022-12-04 23:58:47.995 T:999      INFO <general>: -----------------------------------------------------------------------
    2022-12-04 23:58:47.995 T:999      INFO <general>: Starting Kodi (19.4 (19.4.0) Git:286694e9df8741313a688b46940661a30f36f35c). Platform: Linux ARM 32-bit
    2022-12-04 23:58:47.995 T:999      INFO <general>: Using Release Kodi x32
    2022-12-04 23:58:47.995 T:999      INFO <general>: Kodi compiled 2022-10-15 by GCC 10.2.0 for Linux ARM 32-bit version 5.10.110 (330350)
    2022-12-04 23:58:47.995 T:999      INFO <general>: Running on BCM2835 with LibreELEC (official): 10.0.3, kernel: Linux ARM 64-bit version 5.10.110
    2022-12-04 23:58:47.995 T:999      INFO <general>: FFmpeg version/source: 4.3.2-Kodi
    2022-12-04 23:58:47.995 T:999      INFO <general>: 4 CPU cores available
    2022-12-04 23:58:47.995 T:999      INFO <general>: ARM Features: Neon enabled
    2022-12-04 23:58:47.995 T:999      INFO <general>: special://xbmc/ is mapped to: /usr/share/kodi/
    2022-12-04 23:58:47.995 T:999      INFO <general>: special://xbmcbin/ is mapped to: /usr/lib/kodi
    2022-12-04 23:58:47.995 T:999      INFO <general>: special://xbmcbinaddons/ is mapped to: /usr/lib/kodi/addons
    2022-12-04 23:58:47.995 T:999      INFO <general>: special://masterprofile/ is mapped to: /storage/.kodi/userdata
    2022-12-04 23:58:47.995 T:999      INFO <general>: special://envhome/ is mapped to: /storage
    2022-12-04 23:58:47.995 T:999      INFO <general>: special://home/ is mapped to: /storage/.kodi
    2022-12-04 23:58:47.995 T:999      INFO <general>: special://temp/ is mapped to: /storage/.kodi/temp
    2022-12-04 23:58:47.995 T:999      INFO <general>: special://logpath/ is mapped to: /storage/.kodi/temp
    2022-12-04 23:58:47.995 T:999      INFO <general>: The executable running is: /usr/lib/kodi/kodi.bin
    2022-12-04 23:58:47.995 T:999      INFO <general>: Local hostname: LibreELEC
    2022-12-04 23:58:47.995 T:999      INFO <general>: Log File is located: /storage/.kodi/temp/kodi.log
    2022-12-04 23:58:47.995 T:999      INFO <general>: -----------------------------------------------------------------------
    2022-12-04 23:58:47.996 T:999      INFO <general>: loading settings
    2022-12-04 23:58:47.997 T:999      INFO <general>: special://profile/ is mapped to: special://masterprofile/
    2022-12-04 23:58:48.019 T:999      INFO <general>: Loaded settings file from special://xbmc/system/advancedsettings.xml
    2022-12-04 23:58:48.020 T:999      INFO <general>: Contents of special://xbmc/system/advancedsettings.xml are...
                                                       <?xml version="1.0" encoding="utf-8" ?>
                                                       <advancedsettings version="1.0">
                                                         <cputempcommand>/usr/bin/cputemp</cputempcommand>
                                                         <gputempcommand>/usr/bin/gputemp</gputempcommand>
                                                         <showexitbutton>false</showexitbutton>
                                                         <remotedelay>1</remotedelay>
                                                         <samba>
                                                           <clienttimeout>30</clienttimeout>
                                                         </samba>
                                                         <fanartres>720</fanartres>
                                                         <imageres>540</imageres>
                                                       </advancedsettings>
                                                       
    2022-12-04 23:58:48.021 T:999      INFO <general>: No settings file to load (special://masterprofile/advancedsettings.xml)
    2022-12-04 23:58:48.021 T:999      INFO <general>: Default Video Player: VideoPlayer
    2022-12-04 23:58:48.021 T:999      INFO <general>: Default Audio Player: paplayer
    2022-12-04 23:58:48.021 T:999      INFO <general>: Disabled debug logging due to GUI setting. Level 0.
    2022-12-04 23:58:48.021 T:999      INFO <general>: Log level changed to "INFO"
    2022-12-04 23:58:48.022 T:999      INFO <general>: CMediaSourceSettings: loading media sources from special://masterprofile/sources.xml
    2022-12-04 23:58:48.040 T:999      INFO <general>: creating subdirectories
    2022-12-04 23:58:48.040 T:999      INFO <general>: userdata folder: special://masterprofile/
    2022-12-04 23:58:48.040 T:999      INFO <general>: recording folder: 
    2022-12-04 23:58:48.040 T:999      INFO <general>: screenshots folder: /storage/screenshots/
    2022-12-04 23:58:48.120 T:999      INFO <general>: Running database version Addons33
    2022-12-04 23:58:48.370 T:999      INFO <general>: CAddonMgr::FindAddons: audioencoder.kodi.builtin.aac v1.0.2 installed
    2022-12-04 23:58:48.370 T:999      INFO <general>: CAddonMgr::FindAddons: audioencoder.kodi.builtin.wma v1.0.2 installed
    2022-12-04 23:58:48.371 T:999      INFO <general>: CAddonMgr::FindAddons: game.controller.default v1.0.33 installed
    2022-12-04 23:58:48.371 T:999      INFO <general>: CAddonMgr::FindAddons: game.controller.snes v1.0.32 installed
    2022-12-04 23:58:48.371 T:999      INFO <general>: CAddonMgr::FindAddons: inputstream.adaptive v19.0.7.1 installed
    2022-12-04 23:58:48.371 T:999      INFO <general>: CAddonMgr::FindAddons: inputstream.ffmpegdirect v19.0.3.1 installed
    2022-12-04 23:58:48.371 T:999      INFO <general>: CAddonMgr::FindAddons: inputstream.rtmp v19.0.1.1 installed
    2022-12-04 23:58:48.371 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.global.audioengine v1.1.1 installed
    2022-12-04 23:58:48.371 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.global.filesystem v1.1.6 installed
    2022-12-04 23:58:48.372 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.global.general v1.0.5 installed
    2022-12-04 23:58:48.372 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.global.gui v5.15.0 installed
    2022-12-04 23:58:48.372 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.global.main v1.3.0 installed
    2022-12-04 23:58:48.372 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.global.network v1.0.4 installed
    2022-12-04 23:58:48.372 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.global.tools v1.0.4 installed
    2022-12-04 23:58:48.372 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.instance.audiodecoder v3.0.0 installed
    2022-12-04 23:58:48.372 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.instance.audioencoder v2.1.0 installed
    2022-12-04 23:58:48.373 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.instance.game v2.1.1 installed
    2022-12-04 23:58:48.373 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.instance.imagedecoder v2.1.1 installed
    2022-12-04 23:58:48.373 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.instance.inputstream v3.0.1 installed
    2022-12-04 23:58:48.373 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.instance.peripheral v2.0.0 installed
    2022-12-04 23:58:48.373 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.instance.pvr v7.1.0 installed
    2022-12-04 23:58:48.373 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.instance.screensaver v2.1.0 installed
    2022-12-04 23:58:48.373 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.instance.vfs v3.0.0 installed
    2022-12-04 23:58:48.373 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.instance.videocodec v2.0.2 installed
    2022-12-04 23:58:48.374 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.binary.instance.visualization v3.0.0 installed
    2022-12-04 23:58:48.374 T:999      INFO <general>: CAddonMgr::FindAddons: kodi.resource v1.0.0 installed
    2022-12-04 23:58:48.374 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.album.universal v3.1.9 installed
    2022-12-04 23:58:48.374 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.artists.universal v4.3.10 installed
    2022-12-04 23:58:48.374 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.common.allmusic.com v3.2.2 installed
    2022-12-04 23:58:48.374 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.common.fanart.tv v3.6.4 installed
    2022-12-04 23:58:48.374 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.common.imdb.com v3.2.7 installed
    2022-12-04 23:58:48.375 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.common.musicbrainz.org v2.2.4 installed
    2022-12-04 23:58:48.375 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.common.theaudiodb.com v2.0.3 installed
    2022-12-04 23:58:48.375 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.common.themoviedb.org v3.2.18 installed
    2022-12-04 23:58:48.375 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.generic.albums v1.0.14 installed
    2022-12-04 23:58:48.375 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.generic.artists v1.0.14 installed
    2022-12-04 23:58:48.375 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.local v1.0.1 installed
    2022-12-04 23:58:48.375 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.themoviedb.org v5.2.6 installed
    2022-12-04 23:58:48.376 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.themoviedb.org.python v1.6.2+matrix.1 installed
    2022-12-04 23:58:48.376 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.tvshows.themoviedb.org v3.5.14 installed
    2022-12-04 23:58:48.376 T:999      INFO <general>: CAddonMgr::FindAddons: metadata.tvshows.themoviedb.org.python v1.4.16 installed
    2022-12-04 23:58:48.376 T:999      INFO <general>: CAddonMgr::FindAddons: peripheral.joystick v19.0.3 installed
    2022-12-04 23:58:48.376 T:999      INFO <general>: CAddonMgr::FindAddons: pvr.iptvsimple v19.2.2.1 installed
    2022-12-04 23:58:48.376 T:999      INFO <general>: CAddonMgr::FindAddons: repository.kodi.game v1.0.0 installed
    2022-12-04 23:58:48.376 T:999      INFO <general>: CAddonMgr::FindAddons: repository.libreelec.tv v10.0.0 installed
    2022-12-04 23:58:48.376 T:999      INFO <general>: CAddonMgr::FindAddons: repository.xbmc.org v3.2.5 installed
    2022-12-04 23:58:48.377 T:999      INFO <general>: CAddonMgr::FindAddons: resource.images.weathericons.default v1.1.9 installed
    2022-12-04 23:58:48.377 T:999      INFO <general>: CAddonMgr::FindAddons: resource.language.en_gb v2.0.2 installed
    2022-12-04 23:58:48.377 T:999      INFO <general>: CAddonMgr::FindAddons: resource.language.es_es v9.0.44 installed
    2022-12-04 23:58:48.377 T:999      INFO <general>: CAddonMgr::FindAddons: resource.uisounds.kodi v1.0.1 installed
    2022-12-04 23:58:48.377 T:999      INFO <general>: CAddonMgr::FindAddons: screensaver.xbmc.builtin.black v1.0.34 installed
    2022-12-04 23:58:48.377 T:999      INFO <general>: CAddonMgr::FindAddons: screensaver.xbmc.builtin.dim v1.0.64 installed
    2022-12-04 23:58:48.377 T:999      INFO <general>: CAddonMgr::FindAddons: script.module.pil v5.1.0 installed
    2022-12-04 23:58:48.378 T:999      INFO <general>: CAddonMgr::FindAddons: script.module.pycryptodome v3.4.3 installed
    2022-12-04 23:58:48.378 T:999      INFO <general>: CAddonMgr::FindAddons: service.libreelec.settings v10.0 installed
    2022-12-04 23:58:48.378 T:999      INFO <general>: CAddonMgr::FindAddons: skin.estuary v3.0.5 installed
    2022-12-04 23:58:48.378 T:999      INFO <general>: CAddonMgr::FindAddons: webinterface.default v19.x-2.4.8 installed
    2022-12-04 23:58:48.378 T:999      INFO <general>: CAddonMgr::FindAddons: xbmc.addon v19.1.0 installed
    2022-12-04 23:58:48.378 T:999      INFO <general>: CAddonMgr::FindAddons: xbmc.core v0.1.0 installed
    2022-12-04 23:58:48.378 T:999      INFO <general>: CAddonMgr::FindAddons: xbmc.gui v5.15.0 installed
    2022-12-04 23:58:48.378 T:999      INFO <general>: CAddonMgr::FindAddons: xbmc.json v12.4.0 installed
    2022-12-04 23:58:48.379 T:999      INFO <general>: CAddonMgr::FindAddons: xbmc.metadata v2.1.0 installed
    2022-12-04 23:58:48.379 T:999      INFO <general>: CAddonMgr::FindAddons: xbmc.python v3.0.0 installed
    2022-12-04 23:58:48.379 T:999      INFO <general>: CAddonMgr::FindAddons: xbmc.webinterface v1.0.0 installed
    2022-12-04 23:58:48.383 T:999      INFO <general>: Selected Logind/UPower as PowerSyscall
    2022-12-04 23:58:48.384 T:999     ERROR <general>: DBus error: org.freedesktop.DBus.Error.ServiceUnknown - The name org.freedesktop.UPower was not provided by any .service files
    2022-12-04 23:58:48.384 T:999      INFO <general>: LogindUPowerSyscall - UPower not found, battery information will not be available
    2022-12-04 23:58:48.414 T:1004     INFO <general>: CAESinkALSA - Unable to open device "surround71" for playback
    2022-12-04 23:58:48.415 T:1004     INFO <general>: CAESinkALSA - Unable to open device "surround51" for playback
    2022-12-04 23:58:48.415 T:1004     INFO <general>: CAESinkALSA - Unable to open device "surround71" for playback
    2022-12-04 23:58:48.416 T:1004     INFO <general>: CAESinkALSA - Unable to open device "surround40" for playback
    2022-12-04 23:58:48.417 T:1004     INFO <general>: CAESinkALSA - Unable to open device "surround51" for playback
    2022-12-04 23:58:48.417 T:1004     INFO <general>: CAESinkALSA - Unable to open device "surround71" for playback
    2022-12-04 23:58:48.459 T:1004     INFO <general>: CAESinkALSA - Unable to open device "sysdefault:CARD=vc4hdmi1" for playback
    2022-12-04 23:58:48.460 T:1004     INFO <general>: CAESinkALSA - Unable to open device "hdmi:CARD=vc4hdmi1,DEV=0" for playback
    2022-12-04 23:58:48.496 T:1004     INFO <general>: CAESinkALSA - No playback configurations available for device "surround21:CARD=Speakers,DEV=0"
    2022-12-04 23:58:48.500 T:1004  WARNING <general>: Pulseaudio module module-allow-passthrough not loaded - opening PT devices might fail
    2022-12-04 23:58:48.501 T:1004     INFO <general>: Found 2 Lists of Devices
    2022-12-04 23:58:48.501 T:1004     INFO <general>: Enumerated ALSA devices:
    2022-12-04 23:58:48.501 T:1004     INFO <general>:     Device 1
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_deviceName      : @
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_displayName     : Default (vc4-hdmi-0 MAI PCM i2s-hifi-0) ()
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_displayNameExtra: 
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_deviceType      : AE_DEVTYPE_PCM
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_channels        : FL, FR
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_sampleRates     : 32000,44100,48000,88200,96000,176400,192000
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_dataFormats     : AE_FMT_S24NE3,AE_FMT_S24NE4,AE_FMT_S32NE,AE_FMT_S16NE,AE_FMT_S16LE,AE_FMT_S16BE
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_streamTypes     : No passthrough capabilities
    2022-12-04 23:58:48.501 T:1004     INFO <general>:     Device 2
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_deviceName      : sysdefault
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_displayName     : vc4-hdmi-0 ()
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_displayNameExtra: MAI PCM i2s-hifi-0
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_deviceType      : AE_DEVTYPE_PCM
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_channels        : FL, FR
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_sampleRates     : 32000,44100,48000,88200,96000,176400,192000
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_dataFormats     : AE_FMT_S24NE3,AE_FMT_S24NE4,AE_FMT_S32NE,AE_FMT_S16NE,AE_FMT_S16LE,AE_FMT_S16BE
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_streamTypes     : No passthrough capabilities
    2022-12-04 23:58:48.501 T:1004     INFO <general>:     Device 3
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_deviceName      : sysdefault:CARD=vc4hdmi0
    2022-12-04 23:58:48.501 T:1004     INFO <general>:         m_displayName     : vc4-hdmi-0 (vc4hdmi0)
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_displayNameExtra: MAI PCM i2s-hifi-0
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_deviceType      : AE_DEVTYPE_PCM
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_channels        : FL, FR
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_sampleRates     : 32000,44100,48000,88200,96000,176400,192000
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_dataFormats     : AE_FMT_S24NE3,AE_FMT_S24NE4,AE_FMT_S32NE,AE_FMT_S16NE,AE_FMT_S16LE,AE_FMT_S16BE
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_streamTypes     : No passthrough capabilities
    2022-12-04 23:58:48.502 T:1004     INFO <general>:     Device 4
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_deviceName      : hdmi:CARD=vc4hdmi0,DEV=0
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_displayName     : vc4-hdmi-0 (vc4hdmi0)
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_displayNameExtra: SNY SONY TV  *00 on HDMI
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_deviceType      : AE_DEVTYPE_HDMI
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_channels        : FL, FR
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_sampleRates     : 32000,44100,48000,88200,96000,176400,192000
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_dataFormats     : AE_FMT_RAW,AE_FMT_S24NE3,AE_FMT_S24NE4,AE_FMT_S32NE,AE_FMT_S16NE,AE_FMT_S16LE,AE_FMT_S16BE,AE_FMT_U8,AE_FMT_RAW
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_streamTypes     : STREAM_TYPE_AC3,STREAM_TYPE_DTSHD,STREAM_TYPE_DTSHD_MA,STREAM_TYPE_DTSHD_CORE,STREAM_TYPE_DTS_1024,STREAM_TYPE_DTS_2048,STREAM_TYPE_DTS_512,STREAM_TYPE_EAC3,STREAM_TYPE_TRUEHD
    2022-12-04 23:58:48.502 T:1004     INFO <general>:     Device 5
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_deviceName      : @:CARD=Speakers,DEV=0
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_displayName     : Logitech Z-5 Speakers
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_displayNameExtra: Analog
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_deviceType      : AE_DEVTYPE_PCM
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_channels        : UNKNOWN1, FL, FR
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_sampleRates     : 48000
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_dataFormats     : AE_FMT_S16NE,AE_FMT_S16LE
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_streamTypes     : No passthrough capabilities
    2022-12-04 23:58:48.502 T:1004     INFO <general>:     Device 6
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_deviceName      : iec958:CARD=Speakers,DEV=0
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_displayName     : Logitech Z-5 Speakers
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_displayNameExtra: S/PDIF
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_deviceType      : AE_DEVTYPE_IEC958
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_channels        : UNKNOWN1, FL, FR
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_sampleRates     : 8000,11025,16000,22050,32000,44100,48000
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_dataFormats     : AE_FMT_RAW,AE_FMT_S24NE3,AE_FMT_S16NE,AE_FMT_S16LE
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_streamTypes     : STREAM_TYPE_AC3,STREAM_TYPE_DTSHD_CORE,STREAM_TYPE_DTS_1024,STREAM_TYPE_DTS_2048,STREAM_TYPE_DTS_512
    2022-12-04 23:58:48.502 T:1004     INFO <general>: Enumerated PULSE devices:
    2022-12-04 23:58:48.502 T:1004     INFO <general>:     Device 1
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_deviceName      : Default
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_displayName     : Default
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_displayNameExtra: Bluetooth Audio (PULSEAUDIO)
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_deviceType      : AE_DEVTYPE_PCM
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_channels        : FL, FR
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_sampleRates     : 5512,8000,11025,16000,22050,32000,44100,48000,64000,88200,96000,176400,192000,384000
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_dataFormats     : AE_FMT_U8,AE_FMT_S16NE,AE_FMT_S24NE3,AE_FMT_S24NE4,AE_FMT_S32NE,AE_FMT_FLOAT
    2022-12-04 23:58:48.502 T:1004     INFO <general>:         m_streamTypes     : No passthrough capabilities
    2022-12-04 23:58:48.503 T:1005     INFO <general>: CActiveAESink::OpenSink - initialize sink
    2022-12-04 23:58:48.503 T:1005     INFO <general>: CAESinkALSA::Initialize - Attempting to open device "hdmi:CARD=vc4hdmi0,DEV=0"
    2022-12-04 23:58:48.509 T:1005     INFO <general>: CAESinkALSA::Initialize - Opened device "hdmi:CARD=vc4hdmi0,DEV=0,AES0=0x04,AES1=0x82,AES2=0x00,AES3=0x00"
    2022-12-04 23:58:48.510 T:1005     INFO <general>: CAESinkALSA::InitializeHW - Your hardware does not support AE_FMT_FLOAT, trying other formats
    2022-12-04 23:58:48.510 T:1005     INFO <general>: CAESinkALSA::InitializeHW - Using data format AE_FMT_S24NE3
    2022-12-04 23:58:48.529 T:999      INFO <general>: CKeyboardLayoutManager: loading keyboard layouts from special://xbmc/system/keyboardlayouts...
    2022-12-04 23:58:48.660 T:999      INFO <general>: RetroPlayer[PROCESS]: Registering process control for GBM
    2022-12-04 23:58:48.660 T:999      INFO <general>: RetroPlayer[RENDER]: Registering renderer factory for DMA
    2022-12-04 23:58:48.660 T:999      INFO <general>: RetroPlayer[RENDER]: Registering renderer factory for OpenGLES
    2022-12-04 23:58:48.688 T:999      INFO <general>: CDRMUtils::FindConnector - using connector: 32
    2022-12-04 23:58:48.719 T:999      INFO <general>: Skipped 1 duplicate messages..
    2022-12-04 23:58:48.719 T:999      INFO <general>: CDRMUtils::FindEncoder - using encoder: 31
    2022-12-04 23:58:48.719 T:999      INFO <general>: CDRMUtils::FindPlanes - using crtc: 82
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 3840x2160 @ 30.000000 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 4096x2160 @ 24.000000 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 4096x2160 @ 23.976025 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 3840x2160 @ 29.970032 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 3840x2160 @ 25.000000 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 3840x2160 @ 24.000000 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 3840x2160 @ 23.976025 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 1920x1080 @ 60.000000 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 1920x1080 @ 59.940063 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 1920x1080i @ 60.000000 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 1920x1080i @ 59.940063 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 1920x1080 @ 50.000000 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 1920x1080i @ 50.000000 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 1920x1080 @ 30.000000 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 1920x1080 @ 29.970032 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 1920x1080 @ 24.000000 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1920x1080 with 1920x1080 @ 23.976025 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1680x1050 with 1680x1050 @ 60.000000 Hz
    2022-12-04 23:58:48.850 T:999      INFO <general>: Found resolution 1600x900 with 1600x900 @ 60.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 1280x1024 with 1280x1024 @ 60.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 1152x864 with 1152x864 @ 75.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 1280x720 with 1280x720i @ 120.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 1280x720 with 1280x720 @ 60.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 1280x720 with 1280x720 @ 59.940063 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 1280x720 with 1280x720 @ 50.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 1280x720 with 1280x720 @ 30.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 1280x720 with 1280x720 @ 29.970032 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 1280x720 with 1280x720 @ 24.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 1280x720 with 1280x720 @ 23.976025 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 1024x768 with 1024x768 @ 60.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 800x600 with 800x600 @ 60.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 720x576 with 720x576 @ 50.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 720x576 with 720x576i @ 50.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 720x480 with 720x480 @ 59.940063 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 720x480 with 720x480 @ 60.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 720x480 with 720x480i @ 59.940063 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 720x480 with 720x480i @ 60.000000 Hz
    2022-12-04 23:58:48.851 T:999      INFO <general>: Found resolution 640x480 with 640x480 @ 60.000000 Hz
    2022-12-04 23:58:48.853 T:999      INFO <general>: Skipped 1 duplicate messages..
    2022-12-04 23:58:48.853 T:999      INFO <general>: EGL_VERSION = 1.4
    2022-12-04 23:58:48.853 T:999      INFO <general>: EGL_VENDOR = Mesa Project
    2022-12-04 23:58:48.853 T:999      INFO <general>: EGL_EXTENSIONS = EGL_ANDROID_blob_cache EGL_EXT_buffer_age EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_MESA_query_driver 
    2022-12-04 23:58:48.853 T:999      INFO <general>: EGL_CLIENT_EXTENSIONS = EGL_EXT_client_extensions EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_KHR_debug EGL_EXT_platform_device EGL_MESA_platform_gbm EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
    2022-12-04 23:58:48.877 T:999      INFO <general>: CApplication::CreateGUI - using the gbm windowing system
    2022-12-04 23:58:48.877 T:999      INFO <general>: Checking resolution 16
    2022-12-04 23:58:48.887 T:999      INFO <general>: GL_VENDOR = Broadcom
    2022-12-04 23:58:48.887 T:999      INFO <general>: GL_RENDERER = V3D 4.2
    2022-12-04 23:58:48.887 T:999      INFO <general>: GL_VERSION = OpenGL ES 3.1 Mesa 21.0.3
    2022-12-04 23:58:48.887 T:999      INFO <general>: GL_SHADING_LANGUAGE_VERSION = OpenGL ES GLSL ES 3.10
    2022-12-04 23:58:48.887 T:999      INFO <general>: GL_EXTENSIONS = GL_EXT_blend_minmax GL_EXT_multi_draw_arrays GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_EXT_draw_instanced GL_EXT_texture_sRGB_decode GL_OES_EGL_image GL_OES_depth_texture GL_OES_packed_depth_stencil GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary GL_APPLE_texture_max_level GL_EXT_discard_framebuffer GL_EXT_read_format_bgra GL_EXT_frag_depth GL_NV_fbo_color_attachments GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_array_object GL_ANGLE_pack_reverse_row_order GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_EXT_occlusion_query_boolean GL_EXT_texture_rg GL_EXT_unpack_subimage GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers GL_EXT_map_buffer_range GL_KHR_debug GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object GL_OES_depth_texture_cube_map GL_OES_required_internalformat GL_OES_surfaceless_context GL_EXT_color_buffer_float GL_EXT_sRGB_write_control GL_EXT_separate_shader_objects GL_EXT_shader_implicit_conversions GL_EXT_shader_integer_mix GL_EXT_base_instance GL_EXT_compressed_ETC1_RGB8_sub_texture GL_EXT_draw_elements_base_vertex GL_EXT_primitive_bounding_box GL_EXT_shader_io_blocks GL_EXT_texture_border_clamp GL_KHR_context_flush_control GL_NV_image_formats GL_OES_draw_elements_base_vertex GL_OES_primitive_bounding_box GL_OES_shader_io_blocks GL_OES_texture_border_clamp GL_OES_texture_stencil8 GL_OES_texture_storage_multisample_2d_array GL_EXT_buffer_storage GL_EXT_float_blend GL_EXT_geometry_point_size GL_EXT_geometry_shader GL_KHR_no_error GL_KHR_texture_compression_astc_sliced_3d GL_OES_EGL_image_external_essl3 GL_OES_geometry_point_size GL_OES_geometry_shader GL_OES_shader_image_atomic GL_EXT_texture_compression_s3tc_srgb GL_MESA_shader_integer_functions GL_KHR_parallel_shader_compile GL_EXT_EGL_image_storage GL_MESA_framebuffer_flip_y GL_EXT_texture_query_lod 
    2022-12-04 23:58:48.970 T:999      INFO <general>: GLES: Maximum texture width: 4096
    2022-12-04 23:58:48.993 T:1003     INFO <general>: Loading special://xbmc/system/Lircmap.xml
    2022-12-04 23:58:49.014 T:1003     INFO <general>: * Adding remote mapping for device 'mceusb'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'XboxDVDDongle'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'Microsoft_Xbox'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'PinnacleSysPCTVRemote'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'anysee'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'iMON-PAD'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'Antec_Veris_RM200'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'MCE_via_iMON'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'TwinHanRemote'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'linux-input-layer'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Linking remote mapping for 'linux-input-layer' to 'cx23885_remote'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'mediacenter'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'devinput'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'devinput-32'
    2022-12-04 23:58:49.015 T:1003     INFO <general>: * Adding remote mapping for device 'devinput-64'
    2022-12-04 23:58:49.549 T:999      INFO <general>: load keymapping
    2022-12-04 23:58:49.552 T:999      INFO <general>: Loading special://xbmc/system/keymaps/appcommand.xml
    2022-12-04 23:58:49.552 T:999      INFO <general>: Loading special://xbmc/system/keymaps/customcontroller.AppleRemote.xml
    2022-12-04 23:58:49.554 T:999      INFO <general>: Loading special://xbmc/system/keymaps/customcontroller.Harmony.xml
    2022-12-04 23:58:49.556 T:999      INFO <general>: Loading special://xbmc/system/keymaps/customcontroller.SiriRemote.xml
    2022-12-04 23:58:49.557 T:999      INFO <general>: Loading special://xbmc/system/keymaps/gamepad.xml
    2022-12-04 23:58:49.559 T:999      INFO <general>: Loading special://xbmc/system/keymaps/joystick.xml
    2022-12-04 23:58:49.562 T:999      INFO <general>: Loading special://xbmc/system/keymaps/keyboard.xml
    2022-12-04 23:58:49.568 T:999      INFO <general>: Loading special://xbmc/system/keymaps/mouse.xml
    2022-12-04 23:58:49.569 T:999      INFO <general>: Loading special://xbmc/system/keymaps/remote.xml
    2022-12-04 23:58:49.573 T:999      INFO <general>: Loading special://xbmc/system/keymaps/touchscreen.xml
    2022-12-04 23:58:49.577 T:999      INFO <general>: GUI format 1920x1080, Display 3840x2160 @ 30.000000 Hz
    2022-12-04 23:58:49.577 T:999      INFO <general>: CLangInfo: loading resource.language.es_es language information...
    2022-12-04 23:58:49.579 T:999      INFO <general>: global locale set to C
    2022-12-04 23:58:49.579 T:999      INFO <general>: CLangInfo: loading resource.language.es_es language strings...
    2022-12-04 23:58:49.732 T:1020     INFO <general>: Running database version Addons33
    2022-12-04 23:58:49.736 T:1020     INFO <general>: Running database version ViewModes6
    2022-12-04 23:58:49.776 T:1020     INFO <general>: Running database version Textures13
    2022-12-04 23:58:49.785 T:1020     INFO <general>: Running database version MyMusic82
    2022-12-04 23:58:49.877 T:1020     INFO <general>: Running database version MyVideos119
    2022-12-04 23:58:49.894 T:1020     INFO <general>: Running database version TV38
    2022-12-04 23:58:49.899 T:1020     INFO <general>: Running database version Epg13
    2022-12-04 23:58:49.916 T:999      INFO <general>: start dvd mediatype detection
    2022-12-04 23:58:49.950 T:999      INFO <general>: Unloaded skin
    2022-12-04 23:58:49.953 T:999      INFO <general>:   load skin from: /usr/share/kodi/addons/skin.estuary/ (version: 3.0.5)
    2022-12-04 23:58:49.953 T:999      INFO <general>:   load fonts for skin...
    2022-12-04 23:58:49.969 T:999      INFO <general>: Loading skin includes from /usr/share/kodi/addons/skin.estuary/xml/Includes.xml
    2022-12-04 23:58:50.072 T:999      INFO <general>: Loading fonts from /usr/share/kodi/addons/skin.estuary/xml/Font.xml
    2022-12-04 23:58:50.156 T:999      INFO <general>:   load new skin...
    2022-12-04 23:58:50.156 T:999      INFO <general>: Loading custom window XMLs from skin path /usr/share/kodi/addons/skin.estuary/xml
    2022-12-04 23:58:50.171 T:999      INFO <general>:   initialize new skin...
    2022-12-04 23:58:50.171 T:999      INFO <general>: Loading skin file: Custom_1109_TopBarOverlay.xml, load type: LOAD_ON_GUI_INIT
    2022-12-04 23:58:50.202 T:999      INFO <general>: Loading skin file: DialogVolumeBar.xml, load type: LOAD_ON_GUI_INIT
    2022-12-04 23:58:50.204 T:999      INFO <general>: Loading skin file: DialogBusy.xml, load type: LOAD_ON_GUI_INIT
    2022-12-04 23:58:50.206 T:999      INFO <general>: Loading skin file: Pointer.xml, load type: LOAD_ON_GUI_INIT
    2022-12-04 23:58:50.211 T:999      INFO <general>: Loading skin file: DialogExtendedProgressBar.xml, load type: LOAD_ON_GUI_INIT
    2022-12-04 23:58:50.213 T:999      INFO <general>: Loading skin file: DialogSeekBar.xml, load type: LOAD_ON_GUI_INIT
    2022-12-04 23:58:50.232 T:999      INFO <general>: Loading skin file: DialogNotification.xml, load type: LOAD_ON_GUI_INIT
    2022-12-04 23:58:50.233 T:999      INFO <general>: Loading skin file: DialogBusy.xml, load type: LOAD_ON_GUI_INIT
    2022-12-04 23:58:50.236 T:999      INFO <general>: Loading resource://resource.uisounds.kodi/sounds.xml
    2022-12-04 23:58:50.271 T:999      INFO <general>:   skin loaded...
    2022-12-04 23:58:50.272 T:999      INFO <general>: Loading skin file: Startup.xml, load type: LOAD_EVERY_TIME
    2022-12-04 23:58:50.272 T:999      INFO <general>: Loading skin file: Home.xml, load type: KEEP_IN_MEMORY
    2022-12-04 23:58:50.470 T:999   WARNING <general>: JSONRPC: Could not parse type "Setting.Details.SettingList"
    2022-12-04 23:58:50.470 T:999      INFO <general>: JSONRPC: Adding type "Setting.Details.SettingList" to list of incomplete definitions (waiting for "Setting.Details.Setting")
    2022-12-04 23:58:50.471 T:999      INFO <general>: JSONRPC: Resolving incomplete types/methods referencing Setting.Details.Setting
    2022-12-04 23:58:50.508 T:999      INFO <general>: JSONRPC v12.4.0: Successfully initialized
    2022-12-04 23:58:50.529 T:999      INFO <general>: AddOnLog: peripheral.joystick: Enabling joystick interface "linux"
    2022-12-04 23:58:50.542 T:999      INFO <general>: Register - new keyboard device registered on application->keyboard: Teclado (0000:0000)
    2022-12-04 23:58:50.543 T:999      INFO <general>: Register - new mouse device registered on application->mouse: Ratón (0000:0000)
    2022-12-04 23:58:50.547 T:999      INFO <general>: Loading player core factory settings from special://xbmc/system/playercorefactory.xml.
    2022-12-04 23:58:50.548 T:999      INFO <general>: Loaded playercorefactory configuration
    2022-12-04 23:58:50.549 T:999      INFO <general>: Loading player core factory settings from special://masterprofile/playercorefactory.xml.
    2022-12-04 23:58:50.549 T:999      INFO <general>: special://masterprofile/playercorefactory.xml does not exist. Skipping.
    2022-12-04 23:58:50.549 T:999      INFO <general>: removing tempfiles
    2022-12-04 23:58:50.550 T:999      INFO <general>: UpdateLibraries: Starting video library startup scan
    2022-12-04 23:58:50.563 T:1030     INFO <general>: initializing python engine.
    2022-12-04 23:58:50.568 T:999      INFO <general>: initialize done
    2022-12-04 23:58:50.568 T:999      INFO <general>: Running the application...
    2022-12-04 23:58:50.568 T:1031     INFO <general>: initializing python engine.
    2022-12-04 23:58:50.582 T:999      INFO <general>: starting zeroconf publishing
    2022-12-04 23:58:50.608 T:1033     INFO <general>: ES: Starting UDP Event server on port 9777
    2022-12-04 23:58:50.608 T:1033     INFO <general>: UDP: Listening on port 9777 (ipv6 : false)
    2022-12-04 23:58:50.618 T:999      INFO <general>: JSONRPC Server: Successfully initialized
    2022-12-04 23:58:50.619 T:999      INFO <CWebserver[8080]>: Started
    2022-12-04 23:58:50.622 T:1026     INFO <general>: Register - new cec device registered on cec->Linux: CEC Adapter (0000:0000)
    2022-12-04 23:58:51.056 T:1030     INFO <general>: CPythonInvoker(0, /storage/.kodi/addons/inputstream.ffmpegdirect/resources/lib/runner.py): script successfully run
    2022-12-04 23:58:51.082 T:1030     INFO <general>: Python interpreter stopped
    2022-12-04 23:58:51.397 T:1020     INFO <general>: AddOnLog: pvr.iptvsimple: pvr.iptvsimple - Create - Creating the PVR IPTV Simple add-on
    2022-12-04 23:58:51.421 T:1023     INFO <general>: VideoInfoScanner: Starting scan ..
    2022-12-04 23:58:52.396 T:1031     INFO <general>: SETTINGS: set_keyboard_layout # es
    2022-12-04 23:58:52.396 T:1031     INFO <general>: SETTINGS: set_keyboard_layout # loadkmap < `ls -1 /usr/lib/keymaps/*/es.bmap`
    2022-12-04 23:58:52.588 T:1023  WARNING <general>: Process directory 'nfs://192.168.1.143/home/transmission/videos/shows/testtttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt/La que se avecina (2007)/' does not exist - skipping scan.
    2022-12-04 23:58:52.606 T:1023     INFO <general>: VideoInfoScanner: Finished scan. Scanning for video info took 00:01
    2022-12-04 23:58:53.613 T:1031     INFO <general>: SETTINGS: __init__ # updateThread Started
    2022-12-04 23:58:53.614 T:1031     INFO <general>: SETTINGS: set_auto_update # auto
    2022-12-04 23:58:53.732 T:1105     INFO <general>: SETTINGS: run # Waiting
    2022-12-04 23:58:54.085 T:1020     INFO <general>: AddOnLog: pvr.iptvsimple: pvr.iptvsimple - LoadPlayList Playlist Loaded - 2667 (ms)
    2022-12-04 23:58:54.085 T:1020     INFO <general>: AddOnLog: pvr.iptvsimple: pvr.iptvsimple - LoadPlayList - Loaded 1506 channels.
    2022-12-04 23:58:54.085 T:1020     INFO <general>: AddOnLog: pvr.iptvsimple: Create Starting separate client update thread...
    2022-12-04 23:58:54.085 T:1020     INFO <general>: PVR Manager: Starting
    2022-12-04 23:58:54.957 T:1107     INFO <general>: PVR Manager: Started
    2022-12-04 23:58:59.421 T:999      INFO <general>: Loading skin file: MyVideoNav.xml, load type: KEEP_IN_MEMORY
    2022-12-04 23:59:02.362 T:1020     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.362 T:1020    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:02.369 T:1020     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.369 T:1020    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:02.373 T:1020     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.373 T:1020    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:02.378 T:1020     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.378 T:1020    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:02.382 T:1020     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.382 T:1020    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:02.386 T:1020     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.386 T:1020    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:02.390 T:1020     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.390 T:1020    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:02.394 T:1020     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.394 T:1020    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:02.398 T:1020     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.398 T:1020    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:02.402 T:1020     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.402 T:1020    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:02.406 T:1020     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.406 T:1020    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:02.410 T:1022     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.410 T:1022    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:02.413 T:1022     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon'  error : 'open call failed with "NFS: Lookup of /videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:02.413 T:1022    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015)/Is It Wrong to Try to Pick Up Girls in a Dungeon? (2015) S01/Is It Wrong to Try to Pick Up Girls in a Dungeon> failed to open
    2022-12-04 23:59:03.769 T:999      INFO <general>: Loading skin file: DialogConfirm.xml, load type: KEEP_IN_MEMORY
    2022-12-04 23:59:09.483 T:1022    ERROR <general>: CCurlFile::Stat - Failed: HTTP response code said error(22) for https://graph.facebook.com/FOROtv/picture?width=200&height=200
    2022-12-04 23:59:11.192 T:1022     INFO <general>: CNFSFile::Open: Unable to open file : 'home/transmission/videos/shows/¿Cómo se llama esta relación? (2021)/¿Cómo se llama esta relación? (2021) S01/¿Cómo se llama esta relación'  error : 'open call failed with "NFS: Lookup of /videos/shows/¿Cómo se llama esta relación? (2021)/¿Cómo se llama esta relación? (2021) S01/¿Cómo se llama esta relación failed with NFS3ERR_NOENT(-2)"'
    2022-12-04 23:59:11.192 T:1022    ERROR <general>: CFileCache::Open - <nfs://192.168.1.143/home/transmission/videos/shows/¿Cómo se llama esta relación? (2021)/¿Cómo se llama esta relación? (2021) S01/¿Cómo se llama esta relación> failed to open
    2022-12-04 23:59:11.192 T:1022    ERROR <general>: InputStream: Error opening, nfs://192.168.1.143/home/transmission/videos/shows/¿Cómo se llama esta relación? (2021)/¿Cómo se llama esta relación? (2021) S01/¿Cómo se llama esta relación
    2022-12-04 23:59:20.309 T:999      INFO <general>: VideoPlayer::OpenFile: nfs://192.168.1.143/home/transmission/videos/shows/La que se avecina (2007) testtttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt/La que se avecina (2007) S13/La que se avecina (2007) S13E01.mkv
    2022-12-04 23:59:20.313 T:1126     INFO <general>: Creating InputStream
    2022-12-04 23:59:20.360 T:1126     INFO <general>: Creating Demuxer
    2022-12-04 23:59:20.472 T:1126     INFO <general>: Opening stream: 0 source: 256
    2022-12-04 23:59:20.472 T:1126     INFO <general>: Creating video codec with codec id: 27
    2022-12-04 23:59:20.472 T:1126     INFO <general>: CDVDVideoCodecDRMPRIME::Open - using decoder V4L2 mem2mem H.264 decoder wrapper
    2022-12-04 23:59:20.554 T:1126     INFO <general>: Creating video thread
    2022-12-04 23:59:20.554 T:1133     INFO <general>: running thread: video_thread
    2022-12-04 23:59:20.555 T:1126     INFO <general>: Opening stream: 1 source: 256
    2022-12-04 23:59:20.555 T:1126     INFO <general>: Finding audio codec for: 86056
    2022-12-04 23:59:20.556 T:1126     INFO <general>: CDVDAudioCodecFFmpeg::Open() Successful opened audio decoder eac3
    2022-12-04 23:59:20.556 T:1126     INFO <general>: Creating audio thread
    2022-12-04 23:59:20.557 T:1134     INFO <general>: running thread: CVideoPlayerAudio::Process()
    2022-12-04 23:59:20.557 T:1126     INFO <general>: Opening stream: 2 source: 256
    2022-12-04 23:59:20.567 T:1134     INFO <general>: Creating audio stream (codec id: 86056, channels: 2, sample rate: 48000, no pass-through)
    2022-12-04 23:59:20.616 T:1005     INFO <general>: CActiveAESink::OpenSink - initialize sink
    2022-12-04 23:59:20.814 T:1005     INFO <general>: CAESinkALSA::Initialize - Attempting to open device "hdmi:CARD=vc4hdmi0,DEV=0"
    2022-12-04 23:59:20.821 T:1005     INFO <general>: CAESinkALSA::Initialize - Opened device "hdmi:CARD=vc4hdmi0,DEV=0,AES0=0x04,AES1=0x82,AES2=0x00,AES3=0x02"
    2022-12-04 23:59:20.822 T:1005     INFO <general>: CAESinkALSA::InitializeHW - Your hardware does not support AE_FMT_FLOAT, trying other formats
    2022-12-04 23:59:20.823 T:1005     INFO <general>: CAESinkALSA::InitializeHW - Using data format AE_FMT_S24NE3
    2022-12-04 23:59:20.852 T:999      INFO <general>: Loading skin file: VideoFullScreen.xml, load type: KEEP_IN_MEMORY
    2022-12-04 23:59:22.583 T:999      INFO <general>: CVideoPlayer::CloseFile()
    2022-12-04 23:59:22.584 T:999      INFO <general>: VideoPlayer: waiting for threads to exit
    2022-12-04 23:59:22.589 T:1126     INFO <general>: CVideoPlayer::OnExit()
    2022-12-04 23:59:22.589 T:1126     INFO <general>: Closing stream player 1
    2022-12-04 23:59:22.589 T:1126     INFO <general>: Waiting for audio thread to exit
    2022-12-04 23:59:22.627 T:1134     INFO <general>: thread end: CVideoPlayerAudio::OnExit()
    2022-12-04 23:59:22.627 T:1126     INFO <general>: Closing audio device
    2022-12-04 23:59:22.679 T:1126     INFO <general>: Deleting audio codec
    2022-12-04 23:59:22.679 T:1126     INFO <general>: Closing stream player 2
    2022-12-04 23:59:22.679 T:1126     INFO <general>: waiting for video thread to exit
    2022-12-04 23:59:22.680 T:1005     INFO <general>: CActiveAESink::OpenSink - initialize sink
    2022-12-04 23:59:22.702 T:1133  WARNING <general>: OutputPicture - timeout waiting for buffer
    2022-12-04 23:59:22.702 T:1133     INFO <general>: thread end: video_thread
    2022-12-04 23:59:22.707 T:1126     INFO <general>: deleting video codec
    2022-12-04 23:59:22.722 T:1126     INFO <general>: Closing stream player 3
    2022-12-04 23:59:22.733 T:999      INFO <general>: VideoPlayer: finished waiting
    2022-12-04 23:59:22.733 T:999      INFO <general>: CVideoPlayer::CloseFile()
    2022-12-04 23:59:22.733 T:999      INFO <general>: VideoPlayer: waiting for threads to exit
    2022-12-04 23:59:22.733 T:999      INFO <general>: VideoPlayer: finished waiting
    2022-12-04 23:59:22.734 T:1023     INFO <general>: Deleting settings information for files nfs://192.168.1.143/home/transmission/videos/shows/La que se avecina (2007) testtttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt/La que se avecina (2007) S13/La que se avecina (2007) S13E01.mkv
    2022-12-04 23:59:22.876 T:1005     INFO <general>: CAESinkALSA::Initialize - Attempting to open device "hdmi:CARD=vc4hdmi0,DEV=0"
    2022-12-04 23:59:22.882 T:1005     INFO <general>: CAESinkALSA::Initialize - Opened device "hdmi:CARD=vc4hdmi0,DEV=0,AES0=0x04,AES1=0x82,AES2=0x00,AES3=0x00"
    2022-12-04 23:59:22.884 T:1005     INFO <general>: CAESinkALSA::InitializeHW - Your hardware does not support AE_FMT_FLOAT, trying other formats
    2022-12-04 23:59:22.884 T:1005     INFO <general>: CAESinkALSA::InitializeHW - Using data format AE_FMT_S24NE3
    2022-12-05 00:00:54.708 T:999      INFO <general>: NFS is idle. Closing the remaining connections.
    

    Your Environment

    Used Operating system:

    • [ ] Android

    • [ ] iOS

    • [ ] tvOS

    • [x] Linux

    • [ ] OSX

    • [ ] Windows

    • [ ] Windows UWP

    • Operating system version/name:

    > uname -a
    Linux LibreELEC 5.10.110 #1 SMP Sat Oct 15 00:36:06 UTC 2022 aarch64 GNU/Linux
    
    • Kodi version: v19.4
  • PVR Event Log name change

    PVR Event Log name change

    Description

    Update the event log title for PVR entries from the generic addon name to the friendly name.

    Select a different field. Note the field named getFriendlyName is created in core. There is a lot of discrepancy in how core deals with the description values returned from the backend. GetConnectionString() is sometimes favoured over GetBackendName(). The friendly name is not that friendly but better than the addon name.

    Motivation and context

    Viewing event logs for disconnected servers, I could not identify which server had failed.

    How has this been tested?

    Viewing the log before and after the change

    What is the effect on users?

    Screenshots (if appropriate):

    Before with addon.xml name image

    After with instance name image

    Types of change

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [ ] Clean up (non-breaking change which removes non-working, unmaintained functionality)
    • [x] Improvement (non-breaking change which improves existing functionality)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that will cause existing functionality to change)
    • [ ] Cosmetic change (non-breaking change that doesn't touch code)
    • [ ] None of the above (please explain below)

    Checklist:

    • [x] My code follows the Code Guidelines of this project
    • [ ] My change requires a change to the documentation, either Doxygen or wiki
    • [ ] I have updated the documentation accordingly
    • [ x] I have read the Contributing document
    • [ ] I have added tests to cover my change
    • [ x] All new and existing tests passed
  • CRenderSystemGL: remove use of global VAO

    CRenderSystemGL: remove use of global VAO

    This updates the OpenGL render system to stop using a global Vertex Array Object (VAO) and instead use a VAO per render unit.

    The global VAO was likely added when updating from OpenGL 2 -> 3 as it was relatively effortless to add.

    The benefit of using per unit VAO's is that optimizations can be had by the simple nature of the VAO. Currently no optimizations are being done but can be added in the future. This include preallocating the VBO's and EBO's so that we can simply bind and unbind the VAO where applicable (this is done in the Retroplayer OpenGL renderer already).

    I decided to add a wrapper for the gl(Gen|Bind|Destroy)VertexArray(|s) as it seems like the most readable and useful way to implement it. As VAO's require OpenGL 3.0 or higher. https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenVertexArrays.xhtml

    I'm not really sure why we gated it for OpenGL 3.2 but I kept it that way for posterity. Maybe we can reevaluate that in the future.

  • CRenderSystemGL: allow using OpenGL debugging callbacks

    CRenderSystemGL: allow using OpenGL debugging callbacks

    This adds the ability to use the OpenGL debug callbacks like our OpenGLES renderer has. This was added for OpenGLES way back in https://github.com/xbmc/xbmc/commit/ed2efb85e17ad7c8656e967e5bf18d17fcd1354d but I never took the time to do it for OpenGL also.

    Apparently this is only available for OpenGL 4.3 or newer so we'll see https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageCallback.xhtml

🎥 mpv is a free (as in freedom) media player for the command line.
🎥 mpv is a free (as in freedom) media player for the command line.

mpv is a free (as in freedom) media player for the command line. It supports a wide variety of media file formats, audio and video codecs, and subtitle types.

Dec 5, 2022
theora-player is an embeddable theora video player C++ library based on the libtheora sample. It has no audio support at this moment.

theora-player Description theora-player is an embeddable theora video player C++ library based on the libtheora sample. It has no audio support at thi

Jun 18, 2022
TIP (translate it, please) is a plugin for VLC media player that helps you to study languages by watching videos.

vlc-tip-plugin TIP (translate it, please) is a plugin for VLC media player that helps you to study languages by watching videos. Features The plugin a

Oct 11, 2022
Jellyfin Desktop Client based on Plex Media Player
Jellyfin Desktop Client based on Plex Media Player

Desktop client using jellyfin-web with embedded MPV player. Supports Windows, Mac OS, and Linux. Media plays within the same window using the jellyfin-web interface unlike Jellyfin Desktop. Supports audio passthrough. Based on Plex Media Player.

Nov 30, 2022
A clone of Media Player Classic reimplemented in Qt.
A clone of Media Player Classic reimplemented in Qt.

Media Player Classic Qute Theater A clone of Media Player Classic reimplemented in Qt. Media Player Classic Home Cinema (mpc-hc) is considered by many

Dec 7, 2022
An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support
An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support

Vita-Media-Player An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support 1080i output supported on the PSTV natively and on the

Nov 25, 2022
Official repository of the ISO Base Media File Format Reference Software

ISO Base Media File Format (ISOBMFF) This repository is the official repository for the ISO Base Media File Format Reference Software. The ISO base me

Nov 15, 2022
OpenShot Video Library (libopenshot) is a free, open-source C++ library dedicated to delivering high quality video editing, animation, and playback solutions to the world

OpenShot Video Library (libopenshot) is a free, open-source C++ library dedicated to delivering high quality video editing, animation, and playback solutions to the world

Dec 3, 2022
Shotcut - a free, open source, cross-platform video editor
 Shotcut - a free, open source, cross-platform video editor

cross-platform (Qt), open-source (GPLv3) video editor

Dec 7, 2022
Video player for 3ds
Video player for 3ds

Video player for 3DS Patch note v1.0.1 Added allow skip frames option v1.0.0 Initial release Summary Video player for 3DS Performance 256x144(144p)@30

Nov 21, 2022
A simple but powerful multimedia player library designed for Qt Quick.

QtMediaPlayer A simple but powerful multimedia player library designed for Qt Quick. Features Full-featured multimedia player Cross-platform: support

Nov 29, 2022
GB Studio Extended Nominal Player Adaptation/Interface
GB Studio Extended Nominal Player Adaptation/Interface

gbsenpai gbsenpai - GB Studio Extended Nominal Player Adaptation/Interface - is a project to port the GB Studio player to additional, non-GB/GBC platf

Oct 24, 2022
Yakuza Arcade Machine Player - play Virtua Fighter 5: Final Showdown on PC, using Yakuza 6 files.
Yakuza Arcade Machine Player - play Virtua Fighter 5: Final Showdown on PC, using Yakuza 6 files.

Yakuza Arcade Machines Player Yakuza Arcade Machines Player is a launcher that allows you to run Virtua Fighter 5: Final Showdown, standalone and nati

Nov 26, 2022
🤟Super fast H.264/H.265 FLV player
🤟Super fast H.264/H.265 FLV player

??Super fast H.264/H.265 FLV player

Dec 7, 2022
simple mp4 player based on rockchip rv1109 platform

mp4player RV1109平台上实现一个简单的 mp4 播放器,主要是本人使用的开发板QT无法播放mp4,应该是没有编译qst所致,因而想利用rockchip平台自有的 功能实现一个简单的播放器。 base目录包含一些基础框架实现,包含信号,线程,时间等,线程和消息泵的实现非常非常简单,因而不

Jul 17, 2022
Implement a universal video player based on FFmpeg

qiaopcmusic 实现一个万能视频播放器 添加依赖方式: To get a Git project into your build: Step 1. Add the JitPack repository to your build file Add it in your root build.

Oct 15, 2021
FFmpeg powered audio player in node.js

sange FFmpeg powered audio player in node.js prerequisites node.js cmake sudo apt install cmake c++ compiler sudo apt install g++ gcc ffmpeg sudo apt

Nov 25, 2022
Poppy Music Player

Poppy Music Player poppy is a simple music player that is controlled by process signals. Build Before anything: meson setup build cd build Compiling n

Apr 26, 2022
RTSP Wasm Player
RTSP Wasm Player

RTSP Wasm Player Overview # RTSP WebSocket Proxy RTSP/Webcam/File > FFmpeg open > Packets > WebSocket # WS Wasm Player WebSocket > Packets > Wasm FFm

Nov 27, 2022