Sunday, July 03, 2016

Android Apps: Kodi v17 “Krypton” Alpha 2

The Kodi Team launched a new version of Kodi v17 "Krypton" Alpha 2

The improvements so far:

The expression don’t judge the book by it’s cover is certainly something that holds to this release. Sure we have an awesome new default skin however the vast improvements are deep in the bowels of Kodi core code. Since Kodi v16 there were 1179 pull-request (code change requests) which hold 3735 commits (code chunk changes) spread over 6679 files done by 39 different developers. As you imagine we can’t possible list all changes, improvements and whatever more we have done during the past months. Instead we’ll just list the most important or at least understandable changes for non developers.  Should you which to see the full and extensive code change you can see them here and here.

Video Player:

Since the beginning of XBMC back in the days while it was running on the XBOX there was something like DVDPlayer. As the name probably implies it was used to playback DVD discs/files. During the years this DVDPlayer was improved and patched up to stay within modern day standards of video playback expectancy. However it became clear that for the future a major overhaul and rewrite was needed to keep up and be future proof. As such the developers who did the AudioEngine in v12 picked up this job and have now transformed it into VideoPlayer. Together with some platform developers they ripped out the old DVDPlayer code, chopped it in pieces, put it in the blender, picked the needed pieces and put it back in without breaking the rest of Kodi (hopefully). This certainly wasn’t an easy job as DVDPlayer was like the bottom block of Jenga tower that needed to be replaced while still being entangled throughout the whole tower. It had it’s tentacles in parts of the code where it shouldn’t have been in the first place. Probably over a year ago work started on getting this untangled and made ready to be replaced by the new implementation.

Well now you might wonder what does this all mean? Well a whole lot and it will probably not be as clear when using Kodi as a normal user. From a developers side it means a lot as the code is now more contained in it’s own section which makes maintenance a whole lot easier. As for the users here are some things they will notice already or in the future.

First wave of changes include:

• DVDplayer was very interwoven with other components, that only allowed a single instance of it. One important goal of VideoPlayer is to allow multiple instances, i.e. using VideoPlayer infrastructure for transcoding. Instead of rendering to audio device and display, it would render to an encoder which could be a file or outputted as stream to another Kodi instance. Don’t get your hopes up yet as this just makes it possible but not yet available.
•  Rework of videorendering, including many fixes and minor improvements for all platforms. OpenGL got new features like dithering (reduces banding when transforming from limited to full range colour space) and first round of 3dlut (look up tables stored in OpenGL units for fast access used for colour profile calibration) which has been added for next months.
•  Almost complete rewrite of audio/video syncing and  make it more robust and accurate
•  Hardware acceleration for DVD playback

•  VideoPlayer can switch resolution without any noticeable effect. (provided decoder support it)
•  Multi source demuxers of i.e. external audio files
•  Improve playback of live streams: PVR and streams that can be identified as live. Live streams won’t fill internal buffers after playback was started. Sooner or laters buffers will overflow or stream stalls if no special treatment is applied.

Android HD Audio and more

HD awesomeness:

As you may have read several times is that the Android part of Kodi is currently low on development. It’s the platform with the largest user base but somehow there don’t seem to be a lot of developers around that can work on Kodi for that platform. Since Kodi isn’t the standard JAVA app like the million other out there working on it is certainly a challenge. Regardless for this release we still have some big improvements lined up. The most important one is probably what most of you have been waiting for and that is HD audio passthrough capabilities. Although we had a proof of concept for v16 it wasn’t in a state where the team was comfortable adding it that late in release cycle. However for v17 we can now tell you that passthrough for DTS, DTS-HD, DTS-X, Dolby TrueHD and Dolby ATMOS should all be working if your device supports this. The NVIDIA SHIELD TV is certainly one of the best supported devices that use the standard Android audio methods.

Android 5.0 Lollipop (or later) as minimum:

Over the years the Android platform started to mature and catch up to the other platforms regarding capabilities. This also means that we can drop all the custom code we had to add in the beginning to get Kodi running at all as that’s now becoming obsolete. One of those from back in the days was libStageFright  which we dropped in a previous release and was replaced by the standard MediaCodec from Android. With v17 we have started to clean up all the old implementations which sadly also means we had to set the minimum Android version to at least 5.0 Lollipop. It’s uncertain at this time if we even hove to go higher and set minimum to Android 6.0 Marshmallow as this contains certain features we need to improve Kodi. For now you are safe if you at least have Android 5.0 Don’t worry you can keep using Kodi v16 on all previous Android versions however you just can upgrade to a newer Kodi version.

Welcome to Android MediaCodec standards and goodbye AMLogic specific code:

One other custom implementation is AMLogic code which is were it all started with Kodi on Android and we used this to acces certain hardware parts which Android couldn’t yet. As already mentioned Android improved a lot over the years and it now also means the custom AMLogic code can now be turned of and removed. Sadly AMLogic doesn’t follow the standard Android and releases firmware which is just a tiny bit different. This could mean that some devices might loose some capabilities as the firmware does things a bit different than we expect. This is all on the manufacturers side of these chipsets and they have to fix it. Sadly we can’t keep supporting this deviation from the standard API as we are low enough on developers already. We sure hope AMLogic will see this and start to follow the Android standard that has been set since Android 5.0 With dropping all these custom code we hope we can keep moving forward with Kodi on Android and make it much easier to maintain for the future. For Android 7 Nougat we even had a lot of help from a great guy at Google who implemented some features for us and we are looking forward on using that. This absolutely does not mean that Kodi will not work on AMLogic chipset devices anymore.

Mention worthy changes:

• 10bit/HEVC hardware enabled playback on INtel or NVIDIA GPU that have the capabilities (see hardware specs)
• Refactor of scrapers
• Fix possible high CPU usage with GUI rendering
• Playback improvement on all platforms
• Support for multiple external ratings and userrating from GUI and smartplaylists
• Audio and subtitle filter added to smartplaylists
• Use ffmpeg for loading certain types of images and drop external libraries
• Added PVR to eventlog feature
• Various database optimisations
• Unify behaviour of context menu
• Improvements on binary add-on handling
• Rework of rendercapture which is used by boblight or ambilight implementations
• Removes SAP streams support
• Added MVC, framepack and 3D switching support on Raspberri-Pi
• Change certain settings from spinners to a list
• Further improvements on DirectX implementation
• Further unify certain skin windows to make it easier to make new skins without duplicating same code
• Music mood scanning
• Game controller add-ons
• Improved tag reading from music files
• Improvement on Kodi rendering system which should reduce CPU load and pave the way to headless some day
• Add InProgress node for TV Shows
• Fix CPU count on Android
• Various changes to Kodi python API. Please check documentation
• Save skin settings on early exit which should fix problems with loosing settings after restart
• Improved binary add-on API
• Improvements to internal webserver
• Use number separators from the selected GUI language (example 1.000,4 / 1,000.4) and also apply this to ratings
• Update to FFmpeg 3.0 which brings improved playback, stability and security fixes
• Security and stability improvement by updating to: Python 2.7.12 / mDNSResponder to 625.41.2 / libxslt 1.1.29 / libmicrohttpd to 0.9.50 / gettext 0.19.8 / libzip 1.1.2 / libjpeg-turbo 1.4.2 / libpng 1.6.21 / lzo 2.09 / sqlite 3120200 / openssl 1.0.2h / taglib 1.11
• Enable IPv6 for CURL
• Added CMake building on all platforms. Still work in progress
• Switch to Visual Studio 2015 building
• Remove boost, CXimage, jpgIO, libsquish dependencies as they are obsolete
• Auto create code documentation with Doxygen including a to-do list (link:
• Moved old PyDocs of the Kodi API to Doxygen
• Added skinning API to Doxygen
• Removed dead and obsolete core code
• Fixed memory leaks
• Fixed possible code deadlocks
• Fixed possible security flaws
• Fixed possible crashes
• Fixed code flaws found by various analyses tools

No comments:

Post a Comment