Architecture

From Official Kodi Wiki
Jump to navigation Jump to search
Home icon grey.png   ▶ Development ▶ Architecture
Cleanup.png This page or section may require cleanup, updating, spellchecking, reformatting and/or updated images. Please improve this page if you can. The discussion page may contain suggestions.


Architecture of kodi!.png

Kodi is structured with the following components

Client Layer

This layer is related to the system used by the user to run the application, whether it is on an Android device, Linux, Windows, etc.

Presentation Layer

It is the layer that includes files and packages in charge of the user information display part such as font, language packs, user input, view management, etc.

User Input Module

It encapsulates the peripheral devices in charge of capturing data input to the user.

Windows Manager Module

Since Kodi is a multimedia player, it does not handle window management by itself, so it uses the libraries provided by the operating system on which the program is running to fulfill that function.

GUI Elements

This includes visual components such as windows, buttons, dialog boxes, lists, among others, which allow designing the visual appearance of the program that will provide the necessary elements for navigation and interaction with the content available on the platform.

Translation Module

Kodi provides support for multiple languages, so this module allows the user to select the language in which the program interface will be displayed. So, in general terms, this is in charge of managing the translation of Kodi, adapting to the preference of the user who is using the program.

Audio Manager Module

This allows you to manage the audio settings of the platform, providing options such as:

  • Configuration of the available audio devices.
  • Audio output selection: Speaker, HDMI output or any other audio device.
  • Audio output mode selection: Stereo, Dolby Digital, DTS, among others.
  • Adjust volume.
  • Audio delay.

Fonts Module

This module allows the user to configure the appearance of the text, such as font and font size, use of bold style and more customized features such as font settings for certain type of system interface components such as: titles, buttons, menus, dialog boxes, among others.

Business Layer

It contains files and packages related to server access, external libraries, add-ons, plus it provides a client which will establish a connection with a streaming server, and it is in charge of reading and displaying video and audio files which use codecs such as DIVX and AC3. These codecs are necessary to convert the raw data into a clear view for the user. In short, this module takes care of everything related to the display of content to the user.

Python Module

This module is responsible for managing custom add-ons that the user can add to improve their experience, so in Kodi supports the integration of scripts to add new features and interact with external services to this, thus if the user has knowledge of Python programming and understands the inner workings of Kodi is possible to create their own add-ons to include new features within the platform.

Web Server Module

This module provides the user with the ability to manage their content remotely through their web browser or from other applications. Thus, multiple users can access the same multimedia content if they are connected to a common local network. However, the user should take care to protect the network with passwords to prevent data theft or other forms of extortion.

Player Core Module

This module manages, processes, controls and plays multimedia content. It acts as an interface between multimedia files and the hardware or software required for their playback and aims to provide a smooth and high quality playback experience to the application users. Some tasks that can be performed by the Player Core can be decoding multimedia files in formats recognizable by the system, synchronizing them correctly to ensure that the multimedia content does not contain delays in reference to the audio and video, managing the playback flow such as pausing a multimedia content and outputting audio and video to the user.

Data Layer

It contains everything in reference to files, functions and content management packages in terms of multimedia functions. Some of these are saving, placing the files on the disks used, streaming them from an external server, transforming data to FTP, RSS and HTTP files, etc.

Sources Elements

Manages and organizes the media sources within the application, its main purpose is mainly to allow users to add or access different content sources such as HDD, CD, DVD, streaming devices or network protocols like the following:

  • HDD, CD, DVD: Kodi allows users to add local storage drives, such as hard drives, compact discs or digital video drives, making use of them to play the multimedia content stored on them.
  • Network Protocols (HTTP, FTP, SMB, RSS, UPnP and DAAP): Kodi supports several network protocols that allow accessing media sources over the network to play multimedia content easily.
  • Streaming devices: Kodi has the ability to integrate with streaming devices such as DVB and OTA in order to add live streaming channels and scheduled recordings to the media library.

Views Elements

It allows managing the different ways in which multimedia content can be displayed, offering visual and organizational options for users within the application to navigate and explore the media library. These views of the media content can be similar to a traditional folder structure such as a File List or a more organized and structured option in which the media content is automatically organized into movies, TV shows, music or images such as a Library.

Metadata Elements

It manages and obtains additional information about multimedia content in order to enhance the user experience. The metadata includes certain details such as title, description, year of release, genre, language and other relevant information associated with movies, TV shows, music, images, etc. Within this section there are two main components:

  • Tag Readers: It is responsible for reading and extracting metadata directly from the media files and using this information to correctly organize and display the content in the media library.
  • Web Scrapers: It is responsible for obtaining metadata from online sources by connecting to different databases or websites dedicated to collecting certain information about movies, TV shows, music, images, etc. Web Scrapers use certain search algorithms where they extract this data and link the data to the corresponding content within the multimedia content library.

Credits

  • Lizeth Corrales.
  • Michelle Fonseca.
  • Gabriel González.
  • Jorge Loría.
  • Julián Sedó.

University of Costa Rica. 2023.

References

[1] [2] [3]