1. Application module
Handles application internal logic and User Interface (UI) look and feel. Accepts user inputs and presents data to the user.
2. Software Development Kit (SDK) module
Handles communication between Application module on one side and backend server and TV middleware software on the other side.
3. Core module
The starting point for a TV application. It represents a central point which connects UI with backend and database APIs as shown in Figure 2. This module contains a set of abstractions for all basic and advanced features as well as a set of APIs which are used as guidelines for application development. It is a highly optimized library which introduces a very small memory footprint.
A particular abstraction can be used for different projects and different clients (e.g. BackendHandler provides a set of APIs used by application module and can be embedded in different backend implementation). This way once developed UI application can be considered as backend agnostic because a different BackendHandler can be added as a plugin to the Core module if needed. This enables us to use the same application and the same logic for different projects and clients because an application always calls the same API abstraction without actually knowing what is in layer beneath it. The same approach can be applied to TV middleware or player used for decoding TV stream of VoD content.