Don't wanna be here? Send us removal request.
Text
INTELLECTUAL KODI
Kodi is a cross-platform software application whose core is mainly programmed in C++. Kodi uses OpenGL (or OpenGL ES) graphics rendering under Kodi for both Linux and macOS, while Kodi for Windows uses Microsoft DirectX multimedia framework and Direct3D rendering, as the Xbox version of XBMC did. Some of Kodi's own libraries, as well as many third-party libraries that Kodi depends on, are written in the C programming-language, instead of C++ as Kodi's core, but they are then mostly used with a C++ wrapper and, through Kodi's core monolithic nature, are loaded via a dynamic linker loader for on-demand loading and unloading at run time. Kodi also still partially uses the SDL (Simple DirectMedia Layer) multimedia framework for input on Linux, but its developers are working on completely removing that small remaining dependency on SDL.
Because of Kodi/XBMC's origin with the resource constraints on the hardware and environment of the first-generation Xbox game-console platform, all software development of Kodi/XBMC has always been focused on reserving the limited resources that existed on embedded system hardware, like the original Xbox (which was only a 733 MHz Intel Pentium III and 64 MB of RAM in total as shared memory), as well as the still relatively low resources of embedded system devices today, of which the main hindrance has always been the amount of available system RAM and graphics memory at any one time. Due to this it means that Kodi/XBMC is purposely programmed to be very resource and power efficient and can therefore run on very low-end and relatively non-expensive hardware, especially when compared to other media center software design for HTPC use.
But because of its origins from the Xbox game-console, Kodi/XBMC's legacy graphics renderer still runs in a more game-loop rendering environment rather than using a fully event-driven and on-demand rendering, meaning that it is almost constantly re-drawing the GUI and refreshing the frames as fast as it can, even when nothing is changing on the screen. This results in very high CPU and high GPU usage, which can be observed on embedded systems and low-end machines, and hence cause high temperatures, high fan activity, and high power consumption unless capped at a maximum frame per second configuration for that specific platform build. Work is however constantly ongoing by the developers to make Kodi/XBMC run using much fewer resources on low-power and embedded systems, which will indirectly benefit all non-embedded systems as well. Efficiency improvements in this area are however being worked on in order to move away from that old style game-loop environment in order to reduce high CPU/GPU usage by the GUI, especially as XBMC usage on embedded platforms with limited CPU/GPU resources keeps growing in popularity. XBMC 11.0 (Eden) introduced Dirty-Regions rendering option for texture support to the XBMC skinning engine as an option, and XBMC 12.0 (Frodo) enabled Dirty Regions rendering to redraw the whole screen on a single dirty region by default on all platforms. Work is also in progress for XBMC 14.0 to introduce an abstracted scene-graph deferred rendering for GUI renderer abstraction.
Portability Kodi has a portable code base, with its trunk (mainline source code tree) officially available for IA-32/x86, x86-64, PowerPC, and ARM-based platforms. The Kodi GUI does require 3D hardware accelerated graphics (GPU) that support OpenGL ES, OpenGL, or EGL, or Direct3D with device drivers that support OpenGL ES 2.0, or OpenGL 1.3 or later with GLSL, or DirectX in order to render the GUI at an acceptable frame rate.
Kodi is thus officially not yet available for MIPS upstream in mainline source code repository from Team-Kodi, nor does it as yet support DirectFB or DRI (Direct Rendering Infrastructure) rendering without OpenGL/GLES hardware accelerated graphics support. The combination of MIPS, DirectFB, and DRI is a popular architecture used today by simpler set-top boxes like digital broadcasting (cable/satellite) boxes and low-end digital media players, such as those based on MIPS architecture chipsets from Sigma Designs or Realtek.[130] Kodi ports to MIPS is, however, currently being actively worked on by several independent development teams.
Kodi for Linux supports toolchain building systems for embedded development such as Yocto, Buildroot (uClibc), and the Linaro set of Makefiles and patches for easing the generation of cross-compilation toolchains as well as the creation of a file system on embedded Linux systems across a wide range of hardware, kernel platforms, and CPU architectures (x86, x86-64, ARM, MIPS, PowerPC, etc.).
Python scripts as plugins and addons (widgets/gadgets)[edit] Kodi allows developers to create addons using a built-in Python interpreter (version 2.6 or higher depending on system) and its own WindowXML application framework, which together form an XML-based widget toolkit for which they can extend the capability of Kodi by creating a GUI for widgets. Python widget scripts allow non-developers to themselves create new add-ons for Kodi, using Python.
Application programming interface (API) Other than the application programming interfaces (APIs) available to third-party Python scripts and addon plugins, Kodi features several other APIs for controlling Kodi remotely or from an external application. These APIs includes a JSON-RPC server, D-Bus Server, Web server, UPnP AV media server (with UPnP MediaServer ControlPoint, UPnP MediaRenderer DCP, UPnP RenderingControl DCP, and UPnP Remote User Interface server), and a custom multi-protocol Event Server[53] for remote controls.
GUI-engine and skinning (themes) Kodi/XBMC is noted as having a very flexible GUI toolkit and robust framework for its GUI. With its underlying complex graphical design and layout library (named libGUI in Kodi/XBMC), it provides a simple abstraction layer between the application code and the interface, while allowing extremely flexible dynamic layouts and animations that are easy to work with and makes it possible to create completely unique skins for XBMC.The skin files are written in XAML, using a standard XML base, making theme-skinning and personal customization very accessible.
0 notes