Firebolt Native Specifications

Published: July 30, 2019
Edited: November 29, 2019

Constraints

System Memory

App Mode Memory Usage
Suspend/Background 5 MB
Lower Thirds 20 MB
Full Screen Mode 190 MB

Graphics Memory

App Mode Memory Usage
Suspend/Background 2 MB
Lower Thirds 20 MB
Full Screen Mode 75 MB

AV Playback

1 Video decoder available

1 Hardware audio decoder available

Firebolt Native SDK

Firebolt App platform provides an SDK to develop native applications.

SDK comes with the ability to install a GNU/GCC cross-compile toolchain for building C/C++ native applications for a target device.

More in depth documentation about the SDK is available here: https://wiki.rdkcentral.com/display/RDK/Firebolt

Build Tools

  • Compiler (GCC 6.4)
  • GBU Binutils 2.27

(GNU ar, ld, ranlib, nm, strip)

  • libstdc++.so.6.0.22

(In conjunction with GCC 6.4 provides full support of up to C++14 standard on all X1 devices)

Device CPU Architecture Types

  • Arm
  • Mips
  • x86

Native Application Components

Graphics

Native applications should be Open GL ES 2 based to support all device type hardware acceleration.

Native applications must use Wayland

  • Wayland calls are needed to interface with our compositor
  • Standard Open GL ES 2 applications can easily be extended to use wayland by using and linking wayland and wayland-egl library.

AV Playback

All AV Playback on X1 set-tops boxes is gstreamer based. Proprietary gstreamer plugins exist on each device to allow hardware accelerated AV decoding. Your application must leverage gstreamer for AV playback or use the provided RDK Media Player in the SDK for HLS and MPEG-DASH content.

Input

While developing for native applications in Firebolt, input is available from both the keyboard and X1 remotes. Input is retrieved using the standard wayland seat mechanism. The sample applications provided with the Firebolt SDK show how to get input.

Application Management

Native applications communicate with the X1 application manager through the wayland protocol for graphics and rtremote for generic ipc/rpc communication.

More about rt/rtRemote available here: https://github.com/pxscene/rtRemote

The application manager will use rt to communicate with the native app and to call exposed functions like resume or suspend. Sample applications that come with the Firebolt SDK show how to use rt/rtRemote.

Future IPC:

Internally application IPC is moving to using a json RPC mechanism to replace rt. But currently rt will be supported until the transition is complete.

Networking

Third Party Applications must support both IPV4 and IPV6 networking. Most X1 devices in the field are in an ipv6 only mode. Popular opensource networking libraries like curl, nghttp, and openssl are available in the SDK.

DRM

X1 platforms have support for both playready 2.5 and widevine 14.1.2. DRM is generally done using the openCDMI interface coupled with special gsteramer decyptor plugins.

Local Storage

Local storage on many X1 devices is very limited. Local storage needs are discussed on a partner to partner basis with X1 Product Partners.

Important Third-Party Components in the SDK

X1 devices are built upon a POSIX compliant embedded Linux distribution, so many popular opensource libraries are available to the developer. The following is not an exhaustive list:

Library Version Description
libpthread 2.24 Posix threading library
breakpad r1435 Crash reporting system
bzip/gzip/zlib   Compression libraries
cario 1.14.6 2D graphics library
c-ares 1.12.0 Async DNS library
cjson 1.7.1 json library
curl 7.60 Networking library
freetype 2.8.1 Font library
glib-2.0 2.48.2 object/event c library
gstreamer 1.10.4 Plugin based AV library
harfbuzz 1.7.4 Text shaping engine
icu 58.2 Unicode font library
libjpeg-turbo 1.5.0 Fast jpdeg decoding library
libogg 1.3.2 Ogg audio decoding library
libpng 1.6.31 Image library
libwepb 0.5.0 Image library
libxml2 2.9.4 Xml library
nghttp2 1.31.1 http2 c library
openssl 1.0.2o Secure networking library
sqlite3 3.14.1 Small fast c based sql library
tiff 4.0.7 Image library
wayland/wayland-egl 1.6.0 Protocol library for graphics application to communicate with a compositor