PPAPI/NaCl package overview

A JavaScript application can integrate with the OpenTV Player on Windows and Mac at two different levels:

  • Full player
  • Browser extension

Both integration levels use identical interfaces, but the interfaces available are slightly different from one level to another and technical limitations generate small differences between the two. The full player provides a standalone exclusive web browser that is integrated into the product, whereas the plugin runs on a user’s currently installed browser.

Architecture 

This section gives an overview of the full player JavaScript interface. All specifics pertaining to the integration at that level are covered here.

The understanding of some of the OpenTV Player internals is needed to understand its API.

Full player

The following component diagram shows the main interfaces used by the Interpreted HTML/JavaScript Application. For details of the main internal components of OpenTV Player see Browser extension below. 

Browser extension

The following component diagram shows the main interfaces usable by the Interpreted HTML/JavaScript Application, and includes the main internal components of the OpenTV Player Browser Extension and their interactions. 

Component descriptions

Name Description

HTML/JS Application

The interpreted HTML/JavaScript Application interacting not only with the OpenTV Player but also to OpenTV Platform servers.

HTML/JS Overlay

The interpreted HTML/JavaScript Overlay interacting with the overlay functionality.

Chromium*

A full chromium browser instance to expose HTML5 features

OpenTV Player  Browser Plugin

OpenTV Player Browser Plugin is the player browser plugin in charge of exposing the NMP functionality in standard web browsers and full player.

DRM Agent

The DRM Agent component is in charge of applying content usage rules and handles most of the security in the player application.

Secure Storage Agent

The Secure Storage Agent component is in charge of ciphering and persisting sensible items of the Application.

User Agent

The User Agent component is in charge of providing information about the plugin itself.

Video Element

The Video Element component is in charge of emulating an HTML5 video element, and supports a defined subset of said element. Such that it supports encrypted video play back.

CC Settings Agent

The Closed Captioning Settings Agent component offers a way to configure the look and feel of closed captioning.

Service Discovery Agent

The Service Discovery Agent component allows discovery of network services on the current network domain

Network Agent

The Network Agent component aggregates statistical information pertaining to the network.

Rendering Agent

The Rendering Agent component aggregates statistical information pertaining to the rendering of video.

Playback Agent

The Playback Agent component extends the video player functionality to include additional features and statistical information relating to content playback.

Overlay Browser

The Overlay Browser component is an embedded browser inside the Plugin. It loads code injected by the JS/HTML application, allowing some overlay in windowed mode. This is typically useful to implement a media control bar.

Overlay Control Agent

The Overlay Control Agent component inside the Native Browser enables the Browser Plugin support overlay in Windowed rendering mode.

PAK

The PAK component is in charge of applying content usage rules and handles most of the security in the OpenTV Player DLL.

HTTP Live Streaming Engine

The HLS engine component is in charge of acquiring content over the network using an adaptive bitrate streaming protocol named HTTP Live Streaming.

Playback engine

The Playback Engine component is in charge of the audio and video playback.

Rendering engine

The Rendering Engine component is in charge of composing the UI of the player, defined as web pages, and the video streams together.

Upgrade Agent*

The Upgrade Agent component is in charge of the player upgrade.

Video Agent*

The Video Agent component extends the video player functionality to include additional features in Full player.

*Only applicable to full player

Interface descriptions

Name Description

HTML5*

Standard HTML5 interface as offered by the Chromium browser component.

drmAgent

This private object is exposed by OpenTV Player in the browser environment for every HTML page it loads. This object handles DRM issues and implements a NagraVision private interface addressing NMP VOD use cases.

secureStorageAgent

This private object is exposed by OpenTV Player in the browser environment for every HTML page it loads. This object handles local storage of sensible data.

userAgent

This private object is exposed by OpenTV Player in the browser environment for every HTML page it loads. This object handles the installation of player upgrades, full screen and also media rendering aspects.

videoElement

This private object is exposed by OpenTV Player in the browser environment for every page it loads. This object emulates partially a HTML5 <video> element.

CCSettingsAgent

This private object is exposed by OpenTV Player in the browser environment for every HTML page it loads. The object handles the settings of closed captioning.

serviceDiscoveryAgent

This private object is exposed by OpenTV Player in the browser environment for every HTML page it loads. It provides simple service discovery protocol (SSDP) to allow the discovery of devices such as those advertising DLNA services.

networkAgent

This private object is exposed by OpenTV Player in the browser environment for every HTML page it loads. It provides an interface to obtain statistics about the network.

renderingAgent

This private object is exposed by OpenTV Player in the browser environment for every HTML page it loads. It provides an interface to obtain statistics about video rendering.

playbackAgent

This private object is exposed by OpenTV Player in the browser environment for every HTML page it loads. It provides an interface to obtain statistics for play back and access to tracks.

overlayControlAgent

This private object is exposed by OpenTV Player in the native browser environment for every HTML page it loads. It provides an interface to control the video playback in the overlay page.

upgradeAgent*

This private object is exposed by OpenTV Player in the full player environment for every HTML page it loads. It provides an interface to upgrade the full player

videoAgent*

This private object is exposed by OpenTV Player in the full player environment for every HTML page it loads. It provides an interface to use extend features of video playback.

*Only applicable to full player