This Technical Specification (TS) has been produced by the Open IPTV Forum.
This specification provides multiple options for some features. The Open IPTV Forum Profiles specification complements the Release 2 specifications by defining the Open IPTV Forum implementation and deployment profiles.
The present document, the Declarative Application Environment Specification (Volume 5), specifies the DAE functionality of the Open IPTV Forum Release 2 Solution.
The Open IPTV Forum has developed an end-to-end solution to allow any consumer end-device, compliant to the Open IPTV Forum specifications, to access enriched and personalized IPTV services either in a managed or a non-managed network.
Its functional architecture specification [[.OIPF_ARCH2]] defines a block called OITF which resides inside the residential network. The OITF includes the functionality required to access IPTV services for both the unmanaged and the managed network.
Part of these functionalities is the Declarative Application Environment (DAE): a declarative language based environment (browser) based on CEA-2014 [[!CEA-2014-A]] for presentation of user interfaces and including scripting support for interaction with network server-side applications and access to the APIs of the other OITF functions.
The DAE is the focus of this specification.
The requirements for specifying this functionality are derived from the following sources:
All sections and appendixes, except “Scope” and “Introduction”, are normative, unless they are explicitly indicated to be informative.
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [[RFC2119]].
In sections of the present document whose presence is indicated by one of the capabilities defined in section , use of the [[RFC2119]] terms “MUST”, “SHALL” or “REQUIRED” applies only when the capability is made available to DAE applications. They do not have the effect of making that section mandatory.
In this document, “application” means “declarative application” (browser based application) throughout the DAE platform specification, as opposed to the “procedural applications” (Java based applications) defined in the PAE platform specification.
In the documented APIs JavaScript attributes are read-write unless otherwise specified.
The type “Integer
” is not a valid JavaScript type as is. It is used as a short hand notation for a subset of type “Number
” which includes only the numbers that can be written without a fractional or decimal component.
Term | Definition |
---|---|
Audio from memory | Audible notifications and audio clips intended to be played from memory. |
Broadcast related application | Interactive application associated with a television or radio channel, with part of a television channel (e.g. a particular program or show) or other television content. Often referred to as “red button” applications in the industry, regardless of how they are actually started by the end user. |
Broadcast independent application | Interactive application not related to any TV channel or TV content or to the currently selected service provider. |
Control UI | The Remote UI that controls DAE applications in the OITF, sent from an IPTV Applications server via the OITF or pre-stored in the OITF, and rendered in the DLNA RUIC on the Remote Control Device. |
DLNA RUIC | A DLNA device with the role of finding and loading remote UI content exposed by a DLNA RUIS capability and rendering and interacting with the UI content. Note: This terminology references the DLNA RUI specification. |
DLNA RUIS | A DLNA Function in the OITF with the role of exposing and sourcing UI content. Note: This terminology references the DLNA RUI specification. |
Embedded object | A software module that extends the capabilities of the OITF browser. Features provided by an embedded object are made available to DAE applications through the methods and properties of a specific JavaScript object. |
HTML document | An XHTML document and associated style and script files conforming to the restrictions and extensions defined in the present document. |
Key Event | Event sent to a DAE application in response to input from the end-user. This input is typically generated in response to the end-user pressing a button on a conventional remote control. It may also be generated by some other mechanism on alternative input devices such as game controllers, touch screens, wands or drastically reduced remote controls. |
Mandatory | The feature is an absolute requirement of the specification (a “MUST” as defined by [[RFC2119]]). |
MB or megabyte | 220 bytes |
Non-visual embedded object | A non-visual embedded object is an embedded object that has no visible representation and cannot get input focus |
Optional | The feature is truly optional (a “MAY” as defined by [[RFC2119]]) |
Remote Control Device | A mobile or portable device which has the functionality of the DLNA RUIC. |
Remote UI | The display of a UI from one device on a second (remote) device across a network. |
Service provider related application | Interactive application related to the service provider selected through the service provider selection process. |
Trick Mode | Facility to allow the User to control the playback of Content, such as pause, fast and slow playback, reverse playback, instant access, replay, forward and reverse skipping. |
In addition to the Abbreviations provided in Volume 1, the following abbreviations are used in this Volume.
Acronym | Explanation |
---|---|
AJAX | Asynchronous JavaScript and XML |
CRID | Content Reference Identifier |
CSS | Cascading style sheets |
DOM | Document object model |
GIF | Graphics Interchange Format |
HAS | HTTP Adaptive Streaming |
HE-AAC | High Efficiency AAC |
IR | Infra Red |
JPEG | Joint Photographic Experts Group |
MPD | Media Presentation Description |
PNG | Portable Network Graphics |
PSI | Public Service Identifier |
RDF | Remote Control Function |
SVG | Scalable Vector Graphics |
TLS | Transport Layer Security |
WAVE | Waveform audio format |
This specification builds on a selection of W3C specifications defined in [[.OIPF_WSTVP2]] with additions defined in this document in order to expose to an IPTV service provider the capabilities of any particular OITF.
Section of this document defines how to interpret [[RFC2119]] terms like "SHALL" in sections of this document included in a capability. In sections of this document which are not covered by capabilities, terms like "SHALL" apply as used in each section.
The following diagram provides an overview of the OITF architecture in relation to this specification.
The various system services are described below:
Application Manager (Widgets): This service handles the starting and stopping of applications and the downloading, starting, stopping and removal of widgets. See sections , , , and of this specification.
Capabilities: This service handles terminal capabilities and exposing them to applications. See sections and of this specification.
CoD metadata: This service handles the downloading, storage and retrieval of CoD metadata. See section of this specification.
Configurations: This service handles reporting and changing device configuration and power management. See section of this specification.
Content Download: This service handles initiating downloading of content by applications, downloading the content and managing content once downloaded. See sections and of this specification.
Content Service Protection: This service handles content and service protection. See section of this specification.
DLNA RUI: This service enables a DAE application on an OITF to export a user interface to another device in the home as defined by the DLNA remote UI specification. See sections , and of this specification.
Gateway Discovery/Control: This service handles gateways, including discovery and managing information about them. See sections and of this specification.
IMS — Messaging, Presence, Chat, Telephony: This service handles IMS including messaging, presence, chat and telephony. See section of this specification.
Media Playback: This service handles playback of media including streaming on-demand, downloaded content and scheduled content which has been recorded. Live scheduled content is part of a different service. See sections and of this specification.
Notification: This service handles notifications from the network to the OITF. See section of this specification.
Parental Rating and Control: This service handles parental rating and control including reporting of changing of parental rating status and providing parental rating PIN codes. See sections , , and of this specification.
Remote Management: This service handles remote management when supported as a DAE application. See section of this specification.
Scheduled Content and hybrid tuner — playback, favourite lists, channel scan, metadata: This service handles scheduled content services whether these are delivered by IP or by a classical cable, satellite or terrestrial tuner in a hybrid device. See sections , , and of this specification.
Scheduled Recording: This service handles recording of scheduled content. See section of this specification.
NOTE: Native Applications are out of scope of the DAE specification.
This section describes how DAE applications discover the information of the gateway and subsequently interacts with the gateway. The discovery of the IG and AG by the OITF are defined in section 10.1 of [[.OIPF_PROT2]]. The discovery takes place prior to the DAE application being initialized. The information about the discovered gateways is made available to DAE applications through the application/oipfGatewayInfo embedded object. DAE applications can use this gateway information to interact with the discovered gateways (e.g. IG, AG, CSP gateway and so on). The application/oipfGatewayInfo embedded object SHALL be made accessible through the DOM with the interface as defined in section .
Access to the functionality of the application/oipfGatewayInfo embedded object is privileged and SHALL adhere to the security requirements defined in section .
This section defines what is meant by the concept of a 'DAE application'; which files and assets are considered to be part of a DAE application and how this relates to DAE application security and lifecycle.
A DAE application is either:
While the application is loaded within the browser, an additional browser object (the oipfApplicationManager object), defined in section is present and accessible by the DAE application. The oipfApplicationManager object provides access to the Application class defined in section .
The difference between a DAE application and a traditional web page is that web pages are stand-alone with no formal concept of a group of pages or a context within which a group of pages are loaded and execute. For this reason, the definition and details of a DAE application focuses on the application execution environment and the additional capabilities provided to DAE applications. The next subsections describe some of the differences. Additional details about the DAE application lifecycle can be found in section .
DAE applications are comprised of pages which are conceptually no different from traditional web pages. Both pages in a DAE application and traditional web pages can include the contents of other documents. These included documents can have a variety of types, including Cascading Style Sheets (CSS), JavaScript, SVG, JPEG, PNG and GIF.
A dynamic DOM, combined with XMLHttpRequest, permits AJAX-style changes to the current page in a DAE application or web page without necessarily replacing the entire document.
A DAE application provides shared context and state common to a number of pages — a concept which doesn't formally exist in the web. Loading and unloading pages within the context of a DAE application is the same as loading and unloading web pages.
The application context includes information about the state of an application from the platform's perspective — permissions, priority (for example, which to terminate first in the event of insufficient resources) and similar information that spans all documents within an application during the lifetime of that application.
An OITF MAY support the execution of more than one application simultaneously. Applications MAY share the same screen estate in a defined and controlled fashion. This differs from multiple web pages, which are typically handled through different browser “windows” or “tabs” and may not share the same screen estate concurrently (although the details of this behaviour are often browser-dependent). This also differs from the use of frames, which, apart from iframes, do not support overlapping screen estate. Where simultaneous execution of more than one application is supported, both foreground and background applications SHALL be supported simultaneously.
Where simultaneous execution of more than one application is supported, applications SHALL be recorded within a hierarchy of applications. Each object representing an application possesses an interface that provides access to methods and attributes that are uniquely available to applications. For example, facilities to create and destroy applications can be accessed through such methods.
Where simultaneous execution of more than one application is supported, applications are organised into a tree structure. Using the createApplication() method as defined in section , applications can either be started as child nodes of the application or as a sibling of the application (i.e. added as an additional child of this application's parent). The root node of an application tree is created upon loading an initial application URI or by creating a sibling of an application tree's root node. An OITF MAY keep track of multiple application trees. Each of these individual application trees are connected to a hidden system root node maintained by the OITF that is not accessible by other applications.
Applications created while the DAE environment is running (e.g. as a result of an external notification) that are not created through createApplication() SHALL be created as children of the hidden system root node.
Applications SHALL be displayed on the OITF in one of the application visualization modes as defined in section .
The mode used SHALL be determined prior to initialisation of the DAE execution environment and shall persist until termination or re-initialization of the DAE execution environment. The means by which this mode is chosen is outside the scope of this specification.
Each application has an associated DOM Window
object and a DOM Document
object that represents the document that is currently loaded for that application. Even “windowless” applications that are never made visible have an associated DOM Window object.
Standard DOM Window
methods are used to resize, scroll, position and access the application document (see section ). Many browsers restrict the size or location of windows; these restrictions SHALL NOT be enforced for windows associated with applications within the browser area. Any area of the display available to DAE applications may be used by any application. Thus, 'widget'-style applications can create a small window that contains only the application without needing to be concerned with any minimum size restrictions enforced by browsers.
Each application has a set of permissions to perform various privileged operations within the OITF. The permissions that are granted to an application are defined by the intersection of three permission sets:
Applications created by other applications (e.g. using the methods described in sections or ) SHALL NOT inherit the permissions issued to the parent application. The permissions granted to the new application will be defined by the mechanism specified in section .
When an application uses cross-document messaging (see the window.postMessage()
method defined in HTML5 Web Messaging as referenced in [[.OIPF_WSTVP2]]) to communicate with another application, any action carried out in response to the message SHALL take place in the security context of the application to which the message was sent. Applications SHOULD take care to ensure that privileged actions are only taken in response to messages from an appropriate source.
The privilege model implemented with applications is based upon requiring access to the Application object representing an application in order to access the privileged functionality related to application lifecycle management and inter-application communication.
Since applications have access to Application objects, it is possible for applications to compromise the security of the framework by passing these objects to untrusted code. For example, an application could raise an event on an untrusted document and pass a reference to its Application object in the message. Where simultaneous execution of more than one application is supported, any calls to methods on an Application object from pages not running as part of an application from the same provider SHALL throw an error as defined in section .
Where simultaneous execution of more than one application is supported, the OITF SHALL maintain a list of application nodes ordered in a “most recently activated” order — the active applications list. This list is used by the cross-application event dispatch algorithm as defined in section and is not directly visible to applications.
An application is activated through calling the activateInput() method of the application node. This marks an application as active and SHALL insert the application at the start of the active application list (removing it from the list first if it is already present).
An application is deactivated through the deactivateInput() method of the application node. This marks an application inactive and SHALL remove it from the active application list.
The currently active application is the application at the start of the active application list.
This specification does not define any behaviour if more than one copy of the browser is executing.
DAE Widgets are a specialization of DAE applications and share aspects with W3C Widgets.
W3C Widgets are standardized by the “Widgets 1.0 family of specifications” as described in section 1.4 of [[!Widgets-Packaging]]. Section of this document specifies which parts of W3C Widgets specifications are in supported by DAE Widgets. From here on, when using the word “Widget” we will refer to DAE Widgets as defined in this specification.
Widgets can be primarily seen as packaged DAE applications. Since they are packaged, it is possible to have a single download and installation on an OITF. Widgets may also be installed on an OITF via non-HTTP distribution channels and even over off-network channels (e.g. a USB thumb drive). Packaging also provides an easy way to deploy and/or update applications on the OITF when it is installed in the home. The packaging and configuration of a DAE Widget is described in section .
Since DAE Widgets are DAE Applications everything that is defined for a DAE Application is also applicable to a Widget unless specified. Furthermore Widgets have several specific features as defined in section .
For documents that are delivered by an object carousel in a broadcast channel (as defined in section 4.1 of [[.OIPF_MEDIA2]], the following SHALL apply;
Specifically this origin SHALL be used with the Web Storage API as referenced in [[.OIPF_WSTVP2]].
This section describes how resources (including non-granular resources such as memory and display area) are shared between multiple applications that may be running simultaneously. Applications SHOULD be able to tolerate the loss of scarce resources if they are needed by another application, and SHOULD follow current industry best practises in order to minimize the resources they consume.
This specification is silent about the mechanism for sharing resources between DAE applications and other applications running on the OITF. In the remainder of this section and this document, the term application refers solely to DAE applications.
Where simultaneous execution of more than one application is supported, if an application attempts to start and not enough resources are available, the application with the lowest priority MAY be terminated until sufficient resources are available for the new application to execute or until no applications with a lower priority are running. Applications without a priority associated with them (e.g. applications started by the DRM agent, see section ) SHALL be assumed to have a priority of 0x7F.
Applications may register a listener for ApplicationUnloaded
events (see section ) to receive notification of the termination of a child application, where simultaneous execution of more than one application is supported.
Failure to load an asset (e.g. an image file) or CSS file due to a lack of memory SHALL have no effect on the lifecycle of an application, but may result in visual artefacts (e.g. images not being displayed). Failure to load an HTML file due to a lack of memory MAY cause the application to be terminated.
Application files MAY be cached on the receiver in order to improve performance; this specification is silent about the use of any particular caching strategy.
Applications SHOULD use current industry best practises to avoid memory leaks and to free memory when it is no longer required. In particular, applications SHALL unregister all event listeners before termination, and SHOULD unregister them as soon as they are no longer required.
Where available, applications SHALL use explicit destructor functions to indicate to the platform that resources may be re-used by other applications.
Applications MAY use the gc() method on the application/oipfApplicationManager embedded object to provide hints to the OITF that a garbage collection cycle should be carried out. The OITF is not required to act on these hints.
The LowMemory
event described in section SHALL be generated when the receiver is running low on memory. The amount of free memory that causes this event to be generated is implementation dependent. Applications may register a listener for these events in order to handle low-memory situations as they choose best.
The objects defined in section of this specification are embedded objects. These are typically instantiated through the standard DOM 2 methods for creating HTML objects or the oipfObjectFactory
as defined in section .
All embedded objects as defined in section SHALL NOT claim scarce system resources (such as a hybrid tuner) at the time of instantiation. Hence, instantiation SHALL NOT fail if the object type is supported (and sufficient memory is available).
For each embedded object for which scarce resource conflicts may be a problem, the state diagram and the accompanying text define how to deal with claiming (and releasing) scarce system resources.
Once an OIPF embedded object has been instantiated, dynamic change of its MIME type which could cause the properties and methods associated with the object to change SHALL be ignored.
For instance, it is possible to change the MIME type of an A/V Control embedded object from video/mpeg
to video/mp4
but it is not possible to change the MIME type of an OIPF embedded object from “application/oipfApplicationManager” to “application/oipfConfiguration”.
If insufficient resources are available to present the media, the attempt to play the media SHALL fail. For the video/broadcast object, this shall be indicated by a ChannelChangeError
event with a value of 11 for the error state. For an A/V Control object, the error
property shall take the value 3.
When the video/broadcast or A/V Control object either is instantiated in the DYNAMIC_ALLOCATION
model or transitions to the DYNAMIC_ALLOCATION
model, scarce resources such as a media decoder SHALL only be claimed following a call to the bindToCurrentChannel(), setChannel(), nextChannel() or prevChannel() methods on a video/broadcast object or the play()
method on an A/V Control object. By implication, instantiating a video/broadcast or A/V Control object does not cause the media referred to by the object's data attribute to start playing immediately. See section for details of when scarce resources are released by a video/broadcast object and section when scarce resources are released by an A/V Control object.
Scarce resources can be claimed by the video/broadcast or A/V Control object at instantiation time by specifying the requiredCapabilities
parameter. In this case the STATIC_ALLOCATION
method is used and the scarce resources are held by the object until it is either destroyed or the release()
method is called.
This specification is intentionally silent about handling of resource use by embedded applications including scheduled recordings.
A compliant OITF SHALL support at least one of the following application visualization modes for managing the display of applications:
<overlay*>
elements defined in section for the capability profiles)In this mode, applications from the same service provider that are intended to run simultaneously SHOULD take care to co-ordinate their use of the display in order to ensure that important UI elements are not obscured.
Applications SHALL be created with an associated DOM Window
object, that covers the display area made available by the OITF to a DAE application. The size of the DOM Window
can be retrieved through properties innerWidth
and innerHeight
of the DOM Window
object.
Any areas of the browser area outside the DOM Window that become visible when it is resized SHALL be transparent — any video (if the hardware supports overlay as per the <overlay*>
elements defined in section for the capability profiles) or applications (if multiple applications can be visible simultaneously) with a lower Z-index will be visible except where the application has drawn UI elements.
Broadcast-related and service provider related applications SHALL initially be created as invisible to avoid screen flicker during application start-up. Once loaded (as SHALL be indicated through an onload
event handler), the application then typically calls the show() method of its parent Application object. Broadcast-independent applications SHALL initially be created as visible and need not call these methods.
If the application does not ever need to be visible, then its DOM Window
object will never be shown. In that case, the application should take steps to avoid being formatted to reduce computation and memory overheads. This is typically accomplished by setting the default CSS style of the document's BODY
element to visibility:hidden
.
Because all applications have associated DOM Window
objects, it is possible to make any application visible even if it is not normally intended to be visible. This is of particular benefit during debugging of hidden service type applications.
Application developers SHOULD explicitly set the background color of the application <body>
and <html>
elements.
Setting the background color to 'transparent' (e.g. using the CSS construct html, body { background-color: transparent; }
) will allow the underlying video to be shown for those areas of the screen that are not obscured by overlapping non-transparent (i.e. opaque) children of the <body>
element.
Changing the visibility of an application by calling method show() or hide() on the Application object SHALL NOT affect its use of resources. The application still keeps running and listens to events unless the application gets deactivated (see section ) or destroyed (see section ).
As defined in the DOM Level 3 Events specification as referenced in [[!OIPF_WSTVP2]], standard DOM events are raised on a specific node within a single document. This specification extends the event capability of the OITF through cross-application events handling, but does not change the DOM2 event model for dispatching events within documents. Where simultaneous execution of more than one application is supported, an OITF SHALL implement the cross-application events and cross-application event handling model described in this section.
Event listeners for cross-application events are registered and unregistered using the same mechanism as for DOM2 events. Listeners for cross-application events may be registered on the Application object as well as on nodes in the DOM tree.
The following events are valid instances of cross-application events and are applicable for cross application event handling:
System event | Description |
---|---|
KeyPress | Generated when a key has been pressed by the user. May also be generated when a key is held down during a key-repeat. |
KeyUp | Generated when a key pressed by the user has been released. |
KeyDown | Generated when a key has been pressed by the user. |
The KeyPress
, KeyUp
and KeyDown
events are all targeted cross-application events. The events are targeted at the node that has the input focus.
All events dispatched using the standard dispatchEvent()
method are normal DOM events, not cross-application events. As defined in HTML5 Web Messaging as referenced in [[.OIPF_WSTVP2]], the OITF SHALL support the window.postMessage()
method for cross-document messaging. The method takes two arguments; a message (of type String) to be dispatched and the targetOrigin, which defines the expected origin (i.e. domain) of the target window, or “*
” if the message can be sent to the target regardless of its origin. The target of the event is the “window” of a specific application. Applications can use this method to send events to other applications. The receiving application MAY receive those events and interpret them, or MAY dispatch them in its DOM using standard DOM dispatchEvent() methods.
The visibility of an application SHALL NOT affect the cross-application event handling algorithm as defined above — an active application SHALL receive cross-application events even when it is not visible.
Incoming key events are dispatched using the cross-application event handling algorithm as defined above.
NOTE: This event dispatch model enables key events to be dispatched to multiple applications. Applications wishing to become the primary receiver for key events SHOULD call Application.activateInput(). Even though Application.activateInput()
is called, another application may subsequently be activated. In order to ensure that sensitive key input (e.g. PINs or credit card details) is limited only to the application it is intended for, applications SHOULD check that they are the primary receiver of the key events (using the Application.isPrimaryReceiver property and/or the ApplicationPrimaryReceiver
and ApplicationNotPrimaryReceiver
events defined in section ) and SHOULD 'absorb' key events by calling the stopPropagation()
method on the DOM2 key
event.
OIPF applications may use the methods on the History
object to navigate the history list. The history list SHALL NOT go back beyond the initial page of an OIPF application.
If a remote features a “back” or “back up” key, or one offering similar functionality, the OITF SHALL handle this key as described below:
Tuners can be used for recording, scanning or watching broadcast channels (e.g. DVB-T). The priority relating to resource management is as follows. Recording have the highest priority, viewing a channel has the lowest priority. A record request SHALL not be automatically interrupted by a viewing a channel or a scan request. Note to free the tuner for viewing requires interrupting the recording first.
The present document permits a number of different approaches to parental access control.
An IPTV service provider MAY manage parental access control completely in the network. Applications running on application servers back in the network MAY decide to block access to content or arrange a DAE application to ask for a PIN code as necessary. This approach can apply to any kind of content - streaming on-demand content, IP broadcast content and to downloaded content.
No specific support is needed for this approach in the specification.
IPTV service providers MAY use the content protection mechanism for protected content to enforce access control to protected content. If used, this enforcement will happen in the OITF and in some cases in the CSP Gateway as well. In this approach, the content protection mechanism in the OITF would ask for PIN codes as needed.
The OITF CSP/CSPG-based enforcement of this approach and link to DAE API and events are defined in:
An OITF MAY enforce parental access controls itself. Examples include embedded applications offering access to;
In approaches b) and c), PIN dialogs would be generated by code forming part of the OITF implementation. The APIs in section provide some control over these dialogs. The PIN would typically be configured by an embedded application but MAY also be configured by a DAE application using the optional APIs defined in section “” of the present document.
These approaches b) and c) are reflected in a number of failure modes as defined in the following sections of the specification;
errorState
3 is defined as "parental lock on channel"
NOTE: Due to the variation in regulatory requirements and deployment scenarios, the present document is intentionally silent about which of these approaches or combination of approaches is used.
The requirements in this section apply if the <download>
element has been given value “true
” in the OITF's capability profile as specified in section .
An OITF SHALL support a native download manager (i.e. “Content Download” component) to perform the actual download and storage of the content, and which allows the user to manage (e.g. suspend/resume, cancel) and monitor the download, in a consistent manner across different service providers. The download manager SHALL continue downloading as a background process even if the browser does not have an active session with the server that originated the download request anymore (e.g. has switched to another DAE application), even after a device power-down or network failure, until it succeeds or the user has given permission to terminate the download. (see section on HTTP Range support to resume HTTP downloads after a power/network failure).
The native download manager SHALL be able to offer a visualization of its status through the application/oipfStatusView embedded object as defined in section .
If the attribute manageDownloads
of the <download>
element in the client capability description is unequal to “none
”, the native download manager SHALL offer control over the active downloads through the JavaScript API defined by the application/oipfDownloadManager embedded object in section .
NOTE 1: Once sufficient data of the content has been downloaded, the content MAY be played back using a native application, and MAY be played back using an A/V Control object. In the latter case, see method setSource()
in section for more information.
NOTE 2: Annex clarifies the content download usage scenario in more detail.
An OITF SHALL support parsing and interpretation of the Content Access Download Descriptor document format with the specified semantics, syntax and MIME type as specified in Annex .
An OITF SHALL support a non-visual embedded object of type “application/oipfDownloadTrigger”, with the JavaScript API as defined in sections and to trigger a download.
The following subsections define some details about the different ways of triggering a download.
The registerDownload() method takes a Content Access Download Descriptor as one of its arguments and passes it to the underlying native download manager in order to trigger a download. The following requirements apply:
XMLHttpRequest
. To this end the OITF SHALL pass the data inside the content access download descriptor into the XMLHttpRequest.responseXML
property in JavaScript for further processing, if the OITF encounters an HTTP response message with the Content-Type of “application/vnd.oipf.ContentAccessDownload+xml
”, as the result of an XMLHttpRequest.
NOTE: The behaviour in other cases when the OITF encounters an HTTP response message with the Content-Type “application/vnd.oipf.ContentAccessDownload+xml
”, for example whilst following a link as specified by an anchor element (<a>
), is not specified in this document.
DRMSystemID
as per section , the OITF SHALL pass included DRM-information as part of the <DRMControlInformation>
elements of a content-access download descriptor to the DRM agent.
ContentID
may be used for differentiation). The order by which the items are downloaded is defined by the OITF.
The registerDownloadURL() method takes a URL as one of the arguments and passes it to the underlying native download manager in order to trigger a download. The URL MAY point to any type of content. The URL MAY also point to a Content Access Download Descriptor (i.e. with argument contentType
having value “application/vnd.oipf.ContentAccessDownload+xml
”). In that case, the method returns a download identifier. The OITF will then fetch the Content Access Download Descriptor, after which the same must happen as if method registerDownload() as defined in section with the given Content Access Download Descriptor as argument was called.
The registerDownloadFromCRID() method is an optional method as defined in section and takes a CRID as one of its arguments that is passed to the underlying native download manager in order to trigger a download.
The following are general behavioural requirements apply to triggering downloads:
The OITF SHALL support the HTTP protocol for download as specified in section 5.3.4 of [[!OIPF_PROT2]]. In addition, the OITF SHALL support the following requirements:
<ContentURL>
does not match the hash of the downloaded content, the OITF SHOULD remove the downloaded content item.
Integration with download protocols other than HTTP are not specified in this document.
This section defines the content-on-demand streaming interfaces for both DRM-protected and non-DRM protected content.
This specification defines 3 mechanisms by which a reference to content can be passed from a DAE application to the OITF.
data
property of a A/V Control object as defined in section to the reference. The application SHALL set the type
attribute to the MIME type of the content referred to by the value of the data attribute to provide a hint about the expected content type, in order for the browser to instantiate the proper object to play the content.
src
attribute of a <video>
element to the reference
<ContentURL>
element of a Content Access Streaming descriptor as defined in section and then setting the data
property of an A/V Control object as defined in section to be a reference to that Content Access Streaming Descriptor. In this case the application SHALL set the type
attribute to “application/vnd.oipf.ContentAccessStreaming+xml
”.
Example:
<object id="d1" data=http://www.openiptv.org/fetch?contentID=25
type="application/vnd.oipf.ContentAccessStreaming+xml" width="200" height="100"/>
This specification defines five different possible formats for a reference to unicast streaming content;
All of the mechanisms that an OITF supports SHALL be supported with all formats of a reference that an OITF supports.
If the OITF supports HAS content then it SHALL support the MIME type as specified for the Media Presentation Descriptor (MPD) in [[!TS26234]], i.e. “video/vnd.3gpp.mpd”, and in the HAS specification [[.OIPF_HAS2]]. If the OITF supports MPEG DASH content then it SHALL support the MIME type as specified for the Media Presentation Descriptor (MPD) in Annex C of [[!DASH]], i.e. “application/dash+xml
”.
The MPD SHALL be retrieved by specifying a URL. To this end, the OITF SHALL fetch the MPD from the URL, after which the MPD SHALL be interpreted and an initial (set of partial) Representation(s) selected.
When the URL is passed to the OITF in the data
property of a A/V Control object as defined in section , and either a HAS MPD is not valid according to the XML Schema and semantics as defined in Annex A of [[.OIPF_HAS2]] or an MPEG DASH MPD is not valid according to the XML Schema and semantics as defined in [[!DASH]] or [[.OIPF_HAS2]], then the A/V Control object SHALL go to play state 6 ('error'), with error value 4 ('content corrupt or invalid').
If the OITF supports HAS content then HAS SHALL also be supported through the video/broadcast object for live content. If the OITF supports MPEG DASH content then MPEG DASH SHALL also be supported through the video/broadcast object for live content. This SHALL be done using Channel objects returned from calls to the createChannelObject( Integer idType, Integer onid, Integer tsid, Integer sid, Integer sourceID, String ipBroadcastID )
method where the idType
argument is ID_IPTV_URI
and the ipBroadcastID
argument is a URL which points to an MPD for Scheduled Content (live streaming) over HTTP.
If an OITF has indicated support for IPTV channels through a <video_broadcast>
element with type ID_IPTV_* (as defined in section ) the OITF SHALL support passing a content-access descriptor through the 'contentAccessDescriptorURL
' argument of the 'setChannel'-method of the video/broadcast object (as defined in section ). If the content-access descriptor includes DRM information, the OITF SHALL pass this information to the DRM agent.
If an OITF has indicated support for playback and control of scheduled content through the <video_broadcast>
element, then it SHALL support the “video/broadcast” embedded object defined in section . In addition, it SHALL adhere to the requirements for conveyance of the channel list as specified in section . To protect against unauthorized access to the tuner functionality and people's personal favourite lists, the OITF SHALL adhere to the security model requirements as specified in section , in particular the tuner related security requirements in section .
NOTE: This section and section are focused on control and display of scheduled content received over local tuner functionality available to an OITF. The term “tuner” is used here to identify a piece of functionality to enable switching between different types of scheduled content services that are identified through logical channels. This includes IP broadcast channels (using the mechanisms for Scheduled Content defined in [[.OIPF_PROT2]]), as well as traditional broadcast channels received over a hybrid tuner.
NOTE 2: The APIs in this section allow for deployments whereby the channel line-up and favourite lists for broadcasted content are managed by the client, the server, or a mixture thereof.
To enable a service to control the tuner functionality on an OITF, the OITF needs to convey the channel list information that is managed by native code on the OITF device to the service (either the channel list information is provided locally on the OITF via JavaScript, or the channel list is communicated directly to a server). This information includes the list of uniquely identifiable channels that can be received by the physical tuner of a hybrid device, including information about how the channels are ordered and whether or not these channels are part of zero or more favourite lists. It also includes the channel line-up and the favourite lists that MAY be managed by an OITF for IP broadcast channels.
The API supports two methods of conveying the channel list information to a service:
An OITF SHALL support method 1, and SHOULD support method 2.
If an OITF conveys the channel list information using the HTTP POST message defined in method 2, then the server SHALL, if it supports method 2, receive the conveyed channel list information and SHOULD rely on this information for the purpose of exerting tuner control. If a service supports using the channel list information sent through the HTTP POST method to exert tuner control , the server SHALL indicate this compatibility with method 2 using the postList
attribute specified in section (i.e., <video_broadcast postList="true">true</video_broadcast>
), in the server capability description.
If the server does not support method 2, the service SHALL rely on the getChannelConfig() method defined in section to access the channel list information. If an OITF does not support method 2, the HTTP message of the first connection to the service that requires tuner control SHALL be an HTTP GET message with an empty payload and the service SHALL instead rely on the getChannelConfig() method defined in section to access the channel list information. If support for method 2 is indicated by both the OITF and the server (through respective capability exchanges), the OITF SHALL convey the channel list information using method 2.
If an OITF does not manage/maintain the channel line-up (i.e. does not have a locally stored channel line up), the getChannelConfig() method described in section SHALL return null
, and the HTTP message described in section SHALL be an HTTP GET message with an empty payload. In that case, the application MAY use the createChannelObject() method as defined in section to create channel objects that can be used on subsequent setChannel() requests, and in this way can manage/maintain its own channel list.
NOTE: conveyance of the channel list SHALL adhere to the security model requirements as specified in sections and .
The OITF SHALL support method “getChannelConfig()” as defined in section for the video/broadcast embedded object. This method returns a ChannelConfig object as defined in section .
If an OITF supports sending the channel list through HTTP POST and a server has indicated that it uses the posted channel list information to exert control of the tuner functionality of an OITF (i.e. using attribute postList="true"
in the server capability description) for a particular service, then the OITF SHALL issue an HTTP POST over TLS if it decides to connect to that service. The body of the HTTP POST over TLS request SHALL contain the Client Channel Listing, which SHALL adhere to the semantics, syntax and XML Schema that are defined for the Client Channel Listing in Annex . The server SHALL silently ignore unknown elements and attributes that are part of the Client Channel Listing.
The server SHALL return a HTML document.
If the favourite lists are not (partially) managed by the OITF, the Client Channel Listing SHALL neither contain the “FavouriteLists
” nor the “CurrentFavouriteList
” element.
This section and the following sections SHALL apply to OITFs that have indicated <recording>true</recording>
as defined in section in their capability profile.
To enable a service to schedule recordings of content that is to be broadcasted on specific channels, the OITF needs to convey the channel list information that is managed by the native code on the OITF. This information typically includes the channel line-up of the tuner of a hybrid device. The conveyance of channel list information and scheduled recordings is based on the same two methods of conveying the channel list information to a service as defined in section :
postList
attribute specified in section (i.e., <recording postList="true">true</recording>
), in the server capability description for a particular service.
An OITF SHALL support method 1, and SHOULD support method 2. If support for method 2 is indicated by both the OITF and the server (through respective capability exchanges), the OITF SHALL convey the channel list information using method 2. Otherwise, the HTTP message of the first connection to the service that requires tuner control SHALL be an HTTP GET message with an empty payload.
If a server has indicated that it requires control of both the tuner functionality and the recording functionality available to an OITF (i.e. by including both <video_broadcast> and <recording> with value true
in the OITF's capability description), the body of the HTTP POST message SHALL contain a single instance of the Client Channel Listing whereby the <Recordable> element defined in Annex SHALL be used to indicate whether channels that can be received by the tuner of the OITF can be recorded or not.
If an OITF does not manage the channel line-up, the getChannelConfig() method described in section SHALL return null, and the HTTP message described in section SHALL be an HTTP GET message with an empty payload.
In addition, the OITF SHALL also support method getScheduledRecordings() as defined in . This method returns a ScheduledRecordingCollection object, which is defined in section .
Note that the conveyance of the channel listing and the scheduled recordings is subject to the security model requirements specified in section , and in particular the recording related security requirements in section .
This section describes the DLNA RUI RCF (Remote Control Function) and the interactions between the different entities involved. It builds on the RUI feature defined by the DLNA Networked Device Interoperability Guidelines (August 2009) [[!DLNA]] and shows how the DLNA RUI can be integrated into an OITF and used by DAE applications.
The DLNA RUI RCF is the feature that enables a Remote Control Device to be able to control the OITF or a DAE application running on it, from that Remote Control Device. To support this feature, a Remote Control Device SHALL support the DLNA RUIC function and an OITF SHALL support the DLNA RUIS function (as defined in section ).
The DLNA RUI RCF provides two main features:
The following sections will introduce the interfaces between the entities that support the DLNA RUI RCF.
This section describes interfaces related to the DLNA RUI RCF. There are three entities (Remote Control Device, OITF and IPTV Applications server) that communicate with each other through the interfaces described in Figure .
Figure shows the entities in the OIPF Architecture involved in the DLNA RCF and the interfaces between them.
The dotted line “d)” between the RCF embedded object and the DLNA RUIS indicates that it is a local interface and hence not defined by this specification. The detailed behaviour of each interface is defined as follows:
The power states described in this section relate to states exposed to the DAE application. There may be other states supported by the OITF which are not described here.
The OITF will be in one of a number of power states. Its default state is “off” which consumes no power. The OITF SHALL support an “on” state where it is running in normal operation. The OITF SHALL support at least one standby state where nothing is being output to the display but power is consumed. An OITF may support two different standby states, “active standby” and “passive standby”. An OITF in the “passive standby” state has the smallest possible power consumption (for example, average under 1W) which may be in line with European Commission Code of Conduct, US Energy Star or other regional requirements. In this state the IR listener and wakeup clock MAY be active but no DAE application is active. The IR listener allows the user to turn on the OITF using a remote control. A DAE application MAY use the wakeup clock to schedule the OITF enter the “active standby” state, for example to perform a recording.
Note there may be different levels of “active standby” state but the assumption is that, at least, nothing is being output to the display and one or more DAE applications may execute in the background.
The following explanation describes the behaviour of the OITF when transitioning between the mentioned states and how a DAE application is affected.
A DAE application SHALL be able to execute in the “on” and “active standby” states but SHALL NOT be able to execute in the “off” or “passive standby” states.
When an OITF is turned “on” from an “off” state a DAE application has to be explicitly selected by the user to be executed or the OITF has identified a DAE application to be auto-started. A DAE application has no direct control if it shall auto-start or not and this is left for the OITF to manage. A DAE application MAY auto-start if the Service Discovery and Selection has taken place and the user has selected a service provider.
When an OITF changes to an “off” or “passive standby” state from an “on” or “active standby” state, the DAE application SHALL get an ApplicationDestroyRequest
event. The DAE application has an opportunity to take a final action and gracefully quit or it shall be killed forcibly.
The OITF MAY support wake-up requests from a “passive standby” state. There are two types of wake-up requests, one on an individual DAE application and one on the OITF. The supported wakeup is indicated in the power consumption capability information.
The OITF MAY support wake-up requests for individual DAE applications when in “passive standby”. Similar to a scheduled recording, a DAE application may need to execute at a predetermined time. At the wake-up point the DAE application executes and when it completes its task returns to a “passive standby” state by exiting.
There SHALL only be one wake-up request per DAE application. There MAY be multiple wake-up requests from different DAE applications which SHALL execute independently. The OITF SHALL silently ignore all wake-up requests whose timers expire when it is not in the “passive standby” state.
When the DAE application terminates and the OITF changes to an “active standby” or “on” state for other reasons than a wake-up request the OITF SHALL NOT change power states.
Through capability information it is possible to determine if wake-up and standby modes are supported by OITF.
This is an example of how a DAE application may setup a wake-up request in OITF.
Precondition: The DAE application is actively running and the OITF is either in “on” or “active standby” states.
ApplicationDestroyRequest
event is generated
If the OITF is turned “on” while in this mode the OITF SHALL NOT enter “passive standby” state.
The OITF MAY support wake-up requests for the OITF when in “passive standby”. The application when receiving an event onApplicationRequest may request to wake-up the OITF at a set time using method prepareWakeupOITF().
OITF SHALL silently ignore all wake-up requests whose timers expire when it is not in the “passive standby” state.
The OITF MAY support a hibernate mode which allows DAE applications and their state to be stored in memory when in a “passive standby” state. The support of a hibernate mode greatly reduces the start-up time for DAE applications (for example, start-up times of 3 seconds may be reached).
When the OITF resumes from the hibernate mode, it SHALL restore all of the previous DAE applications with their previous state and SHOULD assign the same resources to the DAE applications as they had prior to the hibernate mode. If this is not possible, the regular callback functions SHALL be used to inform the affected DAE application.
If hibernate mode is supported the event ApplicationHibernateRequest
is generated instead of ApplicationDestroyRequest
when the OITF enters a “passive standby” state.
If the OITF supports hibernate mode only the OITF wake-up request is supported. The single DAE application wake-up SHALL NOT be supported. The reason for this limitation is due to the difficulty to support both options.
A wake-up support SHALL NOT make the OITF resume from the hibernate mode. The wake-up support SHALL be supported independently.
The OITF SHALL indicate support for hibernate mode through the <hibernateMode>
capability defined in section .
The following state machine provides an overview of the power state changes that may occur relating to power consumption. The transitions in the state machine due to setPowerState() may be also be triggered by user generated events handled natively by the OITF.
NOTE 1: The transition from the OFF state to the PASSIVE_STANDBY
or ON
states is manufacturer dependent
Annex describes the logical display model of an OITF and the relationship between DAE application graphics and video.
This section describes the lifecycle of a DAE application, including when an application is launched, when it is terminated and the behaviour when a DAE leaves the boundary of one application and enters another.
APIs related to DAE applications are described in section “.
The present document defines a number of different application lifecycle models. These include;
Broadcast-independent applications are started by fetching the first page of the application from a URL.
These SHALL be presented as broadcast-independent applications.
Creating a new application is accomplished by creating a new Application object via the Application.createApplication() method. Calling this method will create a new application and add it to the application tree in the appropriate location.
// Assumes that the application/oipfApplicationManager object has the ID // “applicationmanager” var appMgr = document.getElementById("applicationmanager"); var self = appMgr.getOwnerApplication(Window.document); // create the application as a child of the current application var child = self.createApplication( url_of_application, true );
The URL passed to the createApplication() method SHALL be one of the following;
The lifecycle of these is defined by [[!CEA-2014-A]] and summarised in section of the present document.
These are described in section , “”. All applications started by SD&S signalling are treated as siblings and are children of the hidden system root node (see section ).
These SHALL be considered as broadcast-independent applications.
OITFs MAY include the capability to start these applications from an embedded application. OITFs SHALL include the ability for applications to discover these as defined by the “application/oipfGatewayInfo” embedded object in section .
The destroyApplication() method (as specified in section ) SHALL terminate the application. An application may register a listener on the ApplicationDestroyRequest
event in order to perform any clean-up before being destroyed completely. After the destroyApplication() method returns, further execution of the specified application SHALL NOT occur.
When an application is terminated, all associated resources SHALL be freed (or marked available for garbage collection). Any active network-related sessions will be terminated. Any media content being presented by the application is stopped, although recordings or content downloads initiated by the application will not be affected.
Note that terminating an application does not imply any effect on the state of the DAE environment.
Additional requirements are defined for stopping selected service provider applications and applications part of scheduled content services in sections and respectively.
All of the pages that make up an application are contained within its application boundary. This is the “fully qualified domain name” (FQDN) of the initial page of the application in the absence of an application_boundary_descriptor.
If an applicationBoundary
element is present in the SD&S signalling for an application as defined in [[!TS102809]], the application boundary SHALL also include the FQDNs listed in the applicationBoundary
element. If this element is not present, then the application boundary SHALL consist of the FQDN of the initial page of the application.
For files requested with XMLHttpRequest, the same origin policy SHALL be extended using the application domain; i.e. any domain in the application domain SHALL be considered of same origin.
The OITF SHALL remove any IP address in the application boundary which is within the private address space as defined in [[!RFC1918]], before launching the application.
Extending the origin of XMLHttpRequest is potentially dangerous, and may lead to undesired leaking of private information. To make sure that the integrity of the user is not compromised, the OITF SHOULD include a mechanism which allows the user to exclude domains from application boundaries of applications.
This specification defines 3 basic types of application;
Each of these types is described in more detail below.
Section of this specification describes how one application may start another application either as a sibling or as a child. All applications started via SD&S signalling as described in this section SHALL be started as children of the hidden system root node, as described in section .
Any application may be signalled as AUTOSTART or PRESENT (see “Table : ” below and section 5.2.4.3 of [[!TS102809]]). Applications signalled as AUTOSTART are intended to be automatically started by the OITF. Applications signalled as PRESENT are intended to be started only by other applications. Broadcast related applications may alternatively be signalled as KILL (see below) or PREFETCH.
It is up to the OITF manufacturer to ensure a good quality of experience concerning;
It is outside the scope of this specification whether there are dedicated keys on a remote control (e.g. the "menu", "home" or "guide" key), there is an entry in an on-screen menu or there are some other mechanism.
It is OPTIONAL for the OITF to support an exit mechanism directly accessible by the end-user. If one is supported, it is outside the scope of this specification whether this mechanism is a button on a remote control, an item in an on-screen menu or something else. If such a mechanism is supported then it SHALL only stop the application the end-user is currently interacting with and any child applications of that application. The parent application and any siblings SHALL NOT be stopped.
Additionally any application MAY be stopped under the following circumstances;
In all these above cases except the first (when an application itself exits) when an application is stopped by the OITF, an ApplicationDestroyRequest event (as defined in section ) SHALL be raised on the application. In the following error conditions, an application being stopped SHOULD have an ApplicationDestroyRequest event raised if this is possible.
Two cases of switching between applications are relevant in this specification;
NOTE: Switching between a visible application and an invisible one is conceptually a little like changing between tabs in a PC browser however without any implication of a particular user interface.
A number of possible mechanisms exist for switching between visible applications and invisible ones. Some examples include the following;
The following table defines how the signalling defined in [[!TS102809]] SHALL be interpreted when used to signal DAE applications.
Descriptor or Element | Summary | Status in this specification |
---|---|---|
5.4.4.1 ApplicationList | List of applications | Required |
5.4.4.2 Application | Name, identifier, type specific descriptor | Required |
5.4.4.3 ApplicationIdentifier | 2 numbers | Required |
5.4.4.4 ApplicationDescriptor | Numerous application attributes | Required The serviceBound element is only applicable to broadcast related applications and SHALL be ignored for other applications. |
5.4.4.5 VisibilityDescriptor | Attribute — indicate if application can be visible to users and/or other applications | Optional. If this element is not present, OITFs SHALL use a default value of VISIBLE_ALL . |
5.4.4.6 IconDescriptor | Icon for application | The filename in the IconDescriptor SHALL be an HTTP URL. Use of the icon signalled here by the OITF is OPTIONAL. |
5.4.4.7 AspectRatio | Preferred aspect ratio for icons | Only relevant if the OITF uses the IconDescriptor. |
5.4.4.8 MhpVersion | Specification version | As defined in section section 3.2.3.3.2 of [[.OIPF_META2]]. |
5.4.4.9 StorageCapabilities | Can the application be stored or cached | Ignored |
5.4.4.10 StorageType | Enumeration used in section 5.4.4.9 of [[!TS102809]] | Ignored |
5.4.4.11 ApplicationType | Application type | For DAE and PAE applications, the appropriate value from the ApplicationTypeCS scheme from [[.OIPF_META2]] SHALL be used. This classification scheme is only present in the following versions of the OIPF specifications (2.0, 2.1-void), its removal may have been in error |
5.4.4.12 DvbApplicationType | Enumeration for section 5.4.4.11 of [[!TS102809]] | Ignored |
5.4.4.13 ApplicationControlCode | Enumeration for 5.4.4.4 of [[!TS102809]] | See below |
5.4.4.14 ApplicationSpecificDescriptor | Container | Ignored |
5.4.4.15 AbstractIPService | Supports grouping of unbound applications | Only one group SHALL be signalled |
5.4.4.16 ApplicationOfferingType | Used as part of application discovery record | Required |
5.4.4.17 ServiceDiscovery | Used as part of application discovery record | Required |
5.4.4.18 ApplicationUsageDescriptor | Indicates that an application provides a specific service | Required |
5.4.4.19 TransportProtocolDescriptorType | Abstract base type | Required |
5.4.4.20 HTTPTransportType | Type for applications accessed by HTTP | Required |
5.4.4.21 OCTransportType | Type for applications accessed by DSM-CC object carousel | Required |
5.4.4.22 ComponentTagType | Encodes a DVB component tag | Ignored |
5.4.4.23 SimpleApplicationLocationDescriptorType | Encodes the location of the start page of an application relative to one of the transport types | Required |
5.4.4.24 SimpleApplicationBoundaryDescriptorType | Encodes an application boundary | Required |
FLUTESessionDescriptor as defined by Annex B.6 of [[.OIPF_META2]] | Support for distributing applications through multicast | SHALL be supported if OITFs support FLUTE. |
Elements and descriptors marked as 'Ignored' SHALL NOT be processed for DAE applications. Servers MAY include these in application signalling.
The application control code SHALL be interpreted as follows for DAE applications:
The other control codes from [[!TS102809]] are not defined for DAE applications. Other control codes are not required to be supported but MAY be supported if required by another specification. The OITF SHALL discard any AIT entry containing an unsupported control code.
In a hybrid device where the broadcast channel is based on DVB network technologies and uses DVB-SI as specified in [[!EN300468]], the OITF SHALL support the MPEG-2 encoding of the AIT from [[!TS102809]] as defined in the following table. This encoding MAY be supported in other devices.
Section | Status | Notes | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
5.2.2 Application types | M | The application type shall be 0x0011. | ||||||||
5.2.3 Application identification | M | Applications which only need the default permissions SHALL be signalled using application_ids from the range for unsigned applications. Applications which need more permissions than the default SHALL be signalled using application_ids from the range for signed applications. The range of application_ids for privileged applications SHALL NOT be used. | ||||||||
5.2.4 Application control codes | M |
The following control codes shall be supported:
| ||||||||
5.2.5 Platform profiles | M | The encoding of the application_profile is not defined in this specification.The version fields shall be set as follows: version.major = 2 version.minor = 3 version.macro = 0 | ||||||||
5.2.6 Application visibility | M | |||||||||
5.2.7 Application priority | M | |||||||||
5.2.8 Application icons | O | The icon locator information shall be relative to the base part (constructed from the URL_base_bytes) of the URL as signalled in the transport_protocol_descriptor. | ||||||||
5.2.9 Graphics constraints | - | |||||||||
5.2.10 Application usage | M | Usage type 0x01 shall be supported as described in section 5.2.10.2 of [[!TS102809]] | ||||||||
5.2.11 Stored applications | - | |||||||||
5.2.12 Application Description File | - | |||||||||
5.3.2 Program specific information | M | |||||||||
5.3.4 Application Information Table | M | See [[.OIPF_MEDIA2]] for MPEG-2 system related requirements and constraints. | ||||||||
5.3.5.1 Application signalling descriptor | M | |||||||||
5.3.5.2 Data broadcast id descriptor | O | The value to be used for the data_broadcast_id field of the data_broadcast_id_descriptor for OIPF carousels shall be 0x0150. By supporting this optional feature, terminals can reduce the time needed to mount a carousel. | ||||||||
5.3.5.3 Application descriptor | M | |||||||||
5.3.5.4 Application recording descriptor | - | |||||||||
5.3.5.5 Application usage descriptor | M | Usage type 0x01 shall be supported as described in section 5.2.10.2 of [[!TS102809]]. | ||||||||
5.3.5.6 User information descriptors | M | |||||||||
5.3.5.7 External application authorization descriptor | M | |||||||||
5.3.5.8 Graphics constraints descriptor | - | |||||||||
5.3.6 Transport protocol descriptors | M | The following protocol_ids shall be supported:
| ||||||||
5.3.7 Simple application location descriptor | M | |||||||||
5.3.8 Simple application boundary descriptor | M | Only strict prefixes starting with "dvb://", "http://" or "https://" shall be supported. Only prefixes forming at least a second-level domain shall be supported. Path elements shall be ignored. | ||||||||
5.3.9 Service information | - | |||||||||
5.3.10 Stored applications | - |
Status | Description |
---|---|
M | MANDATORY The signalling may be restricted to a subset specified in the "Notes" column. In that case all additional signalling is optional. |
O | OPTIONAL |
- | NOT INCLUDED The referenced signalling is not included in this specification. |
As Widgets are packaged as ZIP archives, they only require a single download and installation on an OITF before being executed. Widgets can also be downloaded over non-HTTP distribution channels and even over off-network channels (USB drives, CD/DVD, etc.).
The Widget lifecycle has 3 main steps:
Step 1, installation, is only needed before the first execution of the Widget or if its version is obsolete and the user or the OITF want to update it (see section ).
Step 2, execution, may be performed at any time after the Widget has been installed. It can be triggered by an action from the user, or it may be done automatically by the OITF either through a DAE application or a native application in the OITF. Note that it is not possible to have two running instances of a single Widget simultaneously.
Step 3, removal, is performed if the user wants to uninstall the Widget from the OITF. An uninstalled Widget needs to be reinstalled by a user to be executed again.
Detail descriptions of each step above are provided in the following sections.
In order to be able to execute a Widget, the Widget package first needs to be acquired and installed on the OITF. Steps for acquiring and processing a Widget package and associated processing rules are described in section 9 of [[!Widgets-Packaging]]. In this specification the expression “Widget installation succeed” means that the afore-mentioned procedure is completed successfully.
Although [[!Widgets-Packaging]] does not limit or mandate any specific data transfer protocol or distribution channel through which Widgets are delivered, an OITF SHALL support the use of HTTP and HTTPS as the transfer protocols. Support for other transfer protocols is OPTIONAL. Widget installation is done through the ApplicationManager.installWidget() API call. After a call to this function, if the installation succeeds, the installed Widget SHALL be available in the list of installed Widgets that can be retrieved using ApplicationManager.widgets. The application installing the Widget is notified about the installation success/failure through the WidgetInstallation event as specified in section and .
When installing a Widget, the OITF SHOULD notify the user if there is already an installed Widget with the same “id” value (where “id” is defined in section 7.6.1 of [[!Widgets-Packaging]] along with the extension defined in section of this specification). In this case the OITF SHALL proceed as specified in the description of installWidget() method in section .
In order to be executed, a Widget needs to be installed as described in the previous section. After the installation, a Widget can be started either using the Application.createApplication() API call or through the Application.startWidget() API call. The behaviour of these two methods is equivalent. startWidget() is the preferred method; createApplication() is kept for consistency with other DAE applications. A list of installed Widgets can be retrieved using ApplicationManager.widgets. Note that only one running instance per Widget at time is allowed. A Widget can be stopped using Application.stopWidget() or Application.destroyApplication().stopWidget()
is the preferred method; destroyApplication() is kept for consistency with other DAE applications.
If the installed Widget has been run on the OITF before, any “storage areas” associated with the Widget, as defined in [[!Widgets-APIs]], SHALL be restored. Saved data is accessible through the preferences attribute of the Widget object as defined in section of this specification.
See related sections in section for more details about the above mentioned API calls.
An installed Widget can be uninstalled from an OITF through the ApplicationManager.uninstallWidget() API call. Calling this method on a running Widget will cause the Widget to be stopped before the Widget is uninstalled. The application uninstalling the Widget is notified about the uninstallation success/failure through the “WidgetUninstallation” event as specified in sections and . Any storage areas associated with the uninstalled Widget SHALL be deleted.
This section describes 4 different notification frameworks (In-session notification based on the home network domain, In-session notification based on the Internet domain, 3rd Party notification based on home network domain, and 3rd Party notification based on the Internet domain) defined by [[!CEA-2014-A]]. Moreover, it defines a new notification framework for IMS based notifications such as CallerID, Incoming Call Message, and Chat Invite; not only when a DAE application is active but also inactive.
The event notification mechanism allows OITFs to receive important UI updates or information from IPTV service provider or home network devices such as IG, AG or DLNA RUI compatible devices. CEA 2014 mandates 4 unique notification models which are dependent on whether the server exists on the internet domain or home network domain. Each of these domain models have two unique scenarios depending on whether or not a DAE application is running. If a DAE application is active, the in-session notifications are used to support dynamic UI interaction between the server and the DAE application without the need to reload the XHTML page. Otherwise, 3rd party event notifications should be used to receive and display a notification message outside of the current user session with a DAE application on the OITF, for example an event coming from another server, e.g. to receive emergency alerts, or events regarding news, weather, stock or other information. Generally, 3rd party event notification creates a new DAE application to display notification information.
IMS event notifications for Caller ID, Messaging and Chatting have different behaviour from general event notification defined by [[!CEA-2014-A]] because IMS communication service should be accessed by authorized users and devices within the approval of IPTV service provider. Considering the issue of user's privacy, the DAE specification not only adopts the general Event Notification Frameworks from [[!CEA-2014-A]] as defined in section , but also defines a new IMS Event Notification Framework in section .
An OITF must be capable of displaying various event notifications from both Internet domain and home network domain. Event notification can be conveyed through active UI interaction's channel or out of session. As described in the diagram below, in-session notification is associated with a running DAE application, whereas a 3rd party event notification is delivered through an independent communication channel. If an OITF receives a 3rd party event after subscribing to a certain internet url or the OITF receives a multicasted event notification message, the OITF needs to perform 3rd party event notification and display its information inside a new DAE application.
The diagram below describes a general overview of Event Notification architecture.
In-Session notifications are performed to update partial or whole DAE application UI through the NotifSocket object and/or the XMLHttpRequest object as defined by [[!CEA-2014-A]]. The NotifSocket object creates a persistent TCP connection between a DAE application and Remote UI server in order to support burst event notifications. In addition, a DAE application can create an XMLHttpRequest object to make asynchronous HTTP requests to a web server on the internet domain. This establishes an independent HTTP connection channel to support XML updates between the DAE application and the Remote UI server. On the other hand, if the OITF receives an incoming notification outside of an active interaction (i.e. session) with the server, a 3rd Party Event Notification must be executed to invoke a DAE application to fetch and render the UI content using the url contained within the notification message. This allows servers to “broadcast” important messages, such as Emergency alert messages, to an OITF at any time, even when the DAE application would currently not be running. This should be done through a push-method with multicast message for the home network domain. and a pull-method for the internet case. The next two subsections describe the requirements for the event mechanisms in more detail.
In-Session notification can be defined as “Dynamic UI Update.” With this mechanism, a server should be able to send a notification message during a UI interaction to update the UI dynamically without the need to reload the XHTML-page. The OITF SHALL support the two following scripting objects for In-session event notification:
XMLHttpRequest
Scripting Object (as defined in the XMLHttpRequest specification as referenced in [[!OIPF_WSTVP2]])XMLHttpRequest
is an embedded object on the browser and enables scripts to make HTTP request to a web server without the need to reload the page. It can be used by JavaScript to transfer and manipulate XML data to and from a web server using HTTP, establishing an independent connection channel between a web server and DAE applications. Whenever a DAE application needs to update the UI, it sends a request to the UI server, IPTV service provider or 3rd Party Internet Server, to monitor the change of status or event. In case an event, the UI server sends an HTTP response to the XMLHttpRequest.NotifSocket
Scripting Object (as defined in section 5.5.1 of [[!CEA-2014-A]])XMLHttpRequest
object has become more widespread on browsers and Internet Portal servers, it has a difficulty in supporting dynamic UI update on home domain's devices because it is required to be invoked by the request of XMLHttpRequest
on DAE application side. NotifSocket
creates a persistent TCP connection between DAE application and UI server in order to support burst event notifications. Whenever the UI server needs to notify the DAE application running on the OITF of a UI update, it sends any types of update message, such as encoded binary or string, through the NotifSocket
connection. The NotifSocket
object allows an UI server to push any event information through the independent TCP/IP channel at any time.Out of session event notifications are defined as “3rd Party Notifications” in CEA-2014. Since these notifications are not part of an active remote UI interaction with a Remote UI Server, the OITF must launch a new DAE application to render the UI content using the url contained within the notification message.
The OITF SHALL support multicast notifications for 3rd party event notifications for the home network domain and the internet domain respectively as defined below. Support for polling-based notifications as defined below is OPTIONAL and support can be indicated through the OITF's capability description by using element <pollingNotifications>
as defined in section or the +POLLNOTIF
name fragment as defined in section .
<ruiEventURL>
. In order to ensure a reliable transmission of a multicast notification message, a Remote UI Server shall transmit the same notification message, with the same HTTP SEQ header value 2 or 3 times, where the time between transmissions should be a random time between 0 and 10 seconds.Note that Annex defines a subscribeToNotificationsAsync() method to provide a way of subscribing to polling-based notifications that is non-blocking.
This section covers the DAE interactions needed to drive the message exchanges on the HNI-IGI interface in the case where the Service Provider offers an IMS application.
The HNI-IGI framework defines how an OITF interacts with an IMS Gateway (IG) via the HNI-IGI interface ([[!OIPF_PROT2]] section 5.2).
Every message on the HNI-IGI interface SHALL be carried in a HTTP transaction where the OITF sends the HTTP request and the IG responds to the request. The HNI-IGI In-session framework, in the case of a DAE application, uses the XMLHttpRequest Script Object, as defined in the XMLHttpRequest specification as referenced in [[!OIPF_WSTVP2]].
There are two message directions on the HNI-IGI interface, corresponding to outgoing and incoming messages from and to the OITF.
This message direction applies to outgoing messages from the OITF on the HNI-IGI interface. The OITF sends a request and the IG responds to the request. The following figure illustrates the sequences for in-session transactions for outgoing requests from DAE application to the IG.
new XMLHttpRequest()
”.
open()
method to specify the HTTP method and Request-URI for the request. In this case, the HTTP POST method with the Request-URI of <IG_URL>/SIP SHALL be used as specified in [[.OIPF_PROT2]].
setRequestHeader()
method to specify the required HTTP headers as specified in [[.OIPF_PROT2]]. This method SHALL be invoked for each required HTTP header. For example, the X-OITF-Request-Line HTTP header specifies the SIP request line for the SIP request. The Call-ID is specified in the X-OITF-Call-ID header.
onreadystatechange
callback function SHALL be invoked on the DAE application.
getRequestHeader()
method to retrieve each HTTP header. The SIP Response Line is specified in the X-OITF-Response-Line header.
readyState
property of the XMLHttpRequest object has the value 4, the HTTP response body SHALL be retrieved via the responseXML or responseText properties of the XMLHttpRequest object. The SIP response body is specified in the HTTP response body.
This message direction applies to incoming messages to the OITF on the HNI-IGI interface which are related to an existing IMS session. An example of this is a SIP NOTIFY message received from the network in response to a previous SIP SUBSCRIBE sent from the IG. The OITF sends a HTTP request and the IG responds to the request when it receives an incoming message from the network related to an existing session. The following figure illustrates the sequences for in-session transactions for incoming requests from the IG to the DAE application.
new XMLHttpRequest()
”.
open()
method to specify the HTTP method and the Request-URI for the request. In this case, the POST method with a Request-URI of <IG_URL>/PENDING_IG SHALL be used as specified in [[.OIPF_PROT2]].
setRequestHeader()
method to specify the required HTTP headers, as specified in [[.OIPF_PROT2]]. This method is invoked for each HTTP header that is required. In this case, the X-OITF-Request-Line, which specifies the SIP request line for the SIP request, is set to the value null
. The SIP Call-ID is specified in the X-OITF-Call-ID header.
send()
method to send the HTTP request. For the HTTP request that sets up the initial long poll, no X-OITF headers are allowed for the HTTP request to the PENDING_IG Request-URI.
onreadystatechange()
callback function is invoked.
getResponseHeader()
method to retrieve each HTTP header. The SIP Request Line is specified in the X-OITF-Request-Line HTTP header.
readyState
property of the XMLHttpRequest
object has the value 4, the HTTP response body SHALL be retrieved via the responseXML
or responseText
properties of the XMLHttpRequest
object. The SIP response body is specified in the HTTP response body.
XMLHttpRequest
object using the constructor “new XMLHttpRequest()
”.
open()
method to specify the HTTP method and the Request-URI for the request. In this case, the POST method with a Request-URI of <IG_URL>/PENDING_IG SHALL be used as specified in [[.OIPF_PROT2]].
setRequestHeader()
method to populate each HTTP header as specified in [[.OIPF_PROT2]]. This method SHALL be invoked for each required HTTP header. For example, the X-OITF-Response-Line specifies the SIP response line for the SIP response. The Call-ID is specified in the X-OITF-Call-ID header.
send()
method to send the HTTP request. If there is a SIP response body, it is included as a parameter to the send()
method. The SIP response body message is carried in the HTTP body for the HTTP request to the PENDING_IG Request-URI.
In the case where the OITF does not need to receive any further incoming in-session SIP requests, the HTTP POST in step 11 SHALL be directed to the <IG_URL>/SIP Request-URI.
This message direction applies to incoming messages on the HNI-IGI interface which are not related to an existing session. An example of this is a SIP MESSAGE message received from the network, coming e.g. from an IPTV application or from another user. The following figure illustrates the sequences of out-of-session transactions for in-coming requests from the IG to OITF.
Figure describes what happens when the OITF is first turned on.
null
. The steps to send PENDING_IG are the same as steps 8-11 from section “”.
subscribeNotification()
method (as defined in section ).
Figure describes what happens when a specific user logs in using the DAE interface.
registerUser()
method to register the user.
null
. The steps to send PENDING_IG are the same as steps 8-11 from section “”
subscribeNotification(icsi)
method (as defined in section ).
Figure describes what happens when an unsolicited message arrives from the network. The precondition is that a DAE application is already running and subscribed to the IMS notifications (refer to previous sequence when user logs in).
onNotification
for the corresponding application. This includes the IMS message.
An OITF SHALL support the Web Standards TV Profile defined in [[.OIPF_WSTVP2]]. The MIME type used for DAE documents SHALL be one of the MIME types defined in the HTML5 specification as referenced by [[.OIPF_WSTVP2]] for HTML or XHTML documents, or the value 'application/cehtml+xml; charset="UTF8"
'.
<pollingNotifications>
element in the device capabilities as defined in section .
NOTE: Section 3.2.5.1.7 ("Interactive content") of the HTML5 specification as referenced by [[.OIPF_WSTVP2]] includes similar requirements however using "SHOULD" not "SHALL".
The following still image formats SHALL be supported:
This section describes the main requirements for the format and usage of codecs in media referred to by DAE applications. This section also describes memory audio.
This section describes the format and usage of the A/V media codec except for audio from memory.
This section describes the format and usage of the A/V media codec for audio from memory. Usage of corresponding A/V media object is described in section of this specification.
For the audio from memory format, HE-AAC SHALL be supported by the OITF and WAVE MAY be supported by the OITF.
The format and usage of media transports referred to by DAE applications SHALL adhere to section 4 of [[!OIPF_MEDIA2]].
Integration between SVG and HTML is defined in the HTML5 specification as referenced in [[.OIPF_WSTVP2]].
This section defines the methods to check and create an instance of the DAE defined embedded objects within JavaScript.
The OITF SHALL support a globally accessible object of type "OipfObjectFactory
" as a static property "oipfObjectFactory
" of the Window interface with the API as defined in this section. The object factory SHALL ensure that the referenced objects are correctly set up. This is an alternative to instantiating embedded objects (or plug-ins) outside of JavaScript.
The factory object can be accessed as a property of the window object (i.e. window.oipfObjectFactory
or oipfObjectFactory
).
Boolean isObjectSupported( String mimeType ) | ||||||||||||||||||||
Description | This method SHALL return true if and only if an object of the specified type is supported by the OITF. The method SHALL return false if the MIME type passed as a parameter is not supported by the client. | |||||||||||||||||||
Arguments | mimeType | The mimeType may have any of the MIME types defined in tables 1 to 4 of [[.OIPF_MEDIA2]] or any of the DAE defined mime types listed below.
|
The methods in this section all return HTMLObjectElement
objects which can be inserted in the DOM tree. All objects in section which have a visual representation on the screen can be created using methods in this section. Only for objects defined in section , that are supported by the device (i.e. as indicated through the client capability description), a corresponding method name to instantiate the object through the OipfObjectFactory
class can be assumed to be present on the oipfObjectFactory
object. For any other object, a corresponding method name cannot be assumed to be present.
HTMLObjectElement createVideoBroadcastObject( StringCollection requiredCapabilites ) HTMLObjectElement createVideoMpegObject( StringCollection requiredCapabilites ) HTMLObjectElement createStatusViewObject() | ||
Description |
If the object type is supported, each of these methods shall return an instance of the corresponding embedded object. Since objects do not claim scarce resources when they are instantiated, instantiation shall never fail if the object type is supported. If the method name to create the object is not supported, the OITF SHALL throw an error with the error.name set to the value " If the object type is supported, the method shall return an HTMLObjectElement equivalent to the specified object. The value of the type attribute of the HTMLObjectElement SHALL match the mimetype of the instantiated object, for example " |
|
Arguments | requiredCapabilites | An optional argument indicating the formats to be supported by the resulting player. Each item in the argument SHALL be one of the formats specified in [[.OIPF_MEDIA2]]. Scarce resources will be claimed by the object at the time of instantiation. The If this argument is omitted, objects do not claim scarce resources so instantiation shall never fail if the object type is supported. The allocationMethod property SHALL be set to |
The methods in this section all return JavaScript objects which implement the interfaces of their corresponding objects. They can not be inserted in the DOM tree. All objects in chapter which do not have a visual representation on the screen can be created using methods in this section. Only for objects defined in chapter , that are supported by the device (i.e. as indicated through the client capability description), a corresponding method name to instantiate the object through the OipfObjectFactory
class can be assumed to be present on the oipfObjectFactory
object. For any other object, a corresponding method name cannot be assumed to be present.
Object createApplicationManagerObject() Object createCapabilitiesObject() ChannelConfig createChannelConfig() Object createCodManagerObject() Object createConfigurationObject() Object createDownloadManagerObject() Object createDownloadTriggerObject() Object createDrmAgentObject() Object createGatewayInfoObject() Object createIMSObject() Object createMDTFObject() Object createNotifSocketObject() Object createParentalControlManagerObject() Object createRecordingSchedulerObject() Object createRemoteControlFunctionObject() Object createRemoteManagementObject() Object createSearchManagerObject() |
|
Description |
If the object type is supported, each of these methods SHALL return an instance of the corresponding embedded object. This may be a new instance or existing instance. For example, the object will likely be a global singleton object and calls to this method may return the same instance.
Since objects do not claim scarce resources when they are instantiated, instantiation SHALL never fail if the object type is supported. If the method name to create the object is not supported, the OITF SHALL throw an error with name property set to the value " If the object is supported, the method SHALL return a JavaScript |
This section provides examples of the usage of the methods.
The first example shows how to query whether an instance of the A/V Control object for a specified MIME type can be created without the application having to attempt to instantiate the object.
var videoPlayer; if (window.oipfObjectFactory.isObjectSupported("video/mpeg")) { videoPlayer = window.oipfObjectFactory.createVideoMpegObject(); // append object to document document.getElementById('playerDiv').appendChild(videoPlayer); videoPlayer.data = "rtsp://server/barker_channel"; }
If the OITF does not support the created object the OITF SHALL throw an error with the error.name set to the value "TypeError
". The example below shows how this can be used by applications:
try { configuration = window.oipfObjectFactory.createConfigurationObject(); } catch (error) { alert("application/oipfConfiguration object could not be created - error name: " + error.name + " - error message: " + error.message); }
An OITF providing DAE application capability SHALL implement the behaviour of the classes defined in this section.
An OITF SHALL support a non-visual embedded object of type "application/oipfApplicationManager
", with the following JavaScript API, to enable applications to access the privileged functionality related to application lifecycle and management that is provided by the application model defined in this section.
If one of the methods on the application/oipfApplicationManager
is called by a webpage that is not a privileged DAE application, the OITF SHALL throw an error as defined in section .
function onLowMemory( ) |
The function that is called when the OITF is running low on available memory for running DAE applications. The exact criteria when to generate such an event is implementation specific. |
function onApplicationLoaded( Application appl ) |
The function that is called immediately prior to a load event being generated in the affected application. The specified function is called with one argument appl , which provides a reference to the affected application. |
function onApplicationUnloaded( Application appl ) |
The function that is called immediately prior to an unload event being generated in the affected application. The specified function is called with one argument appl , which provides a reference to the affected application. |
function onApplicationLoadError( Application appl ) |
The function that is called when the OITF fails to load either the file containing the initial HTML document of an application or an XML AIT file (e.g. due to an HTTP 404 error, an HTTP timeout, being unable to load the file from a DSM-CC object carousel or due to the file not being either an HTML file or a XML AIT file as appropriate), All properties of the Application object referred to by appl SHALL have the value undefined and calling any methods on that object SHALL fail. |
function onWidgetInstallation( WidgetDescriptor wd, Integer state, Integer reason ) |
The callback function that is called during the installation process of a Widget. The function is called with three arguments:
|
function onWidgetUninstallation( WidgetDescriptor wd, Integer state ) |
The function that is called during the uninstallation process of a Widget. The function is called with two arguments, defined below:
|
readonly WidgetDescriptorCollection widgets |
A collection of WidgetDescriptor objects for the Widgets currently installed on the OITF. |
Application getOwnerApplication( Document document ) | ||
Description | Get the application that the specified document is part of. If the document is not part of an application, or the calling application does not have permission to access that application, this method will return null . |
|
Arguments | document | The document for which the Application object should be obtained. |
ApplicationCollection getChildApplications( Application application ) | ||
Description | Get the applications that are children of the specified application. | |
Arguments | application | The application whose children should be returned. |
void gc( ) | |
Description | Provide a hint to the execution environment that a garbage collection cycle should be initiated. The OITF is not required to act upon this hint. |
void installWidget( String uri ) | ||
Description | Attempts to install on the OITF a Widget located at the URI passed. If the Widget is stored on a remote server it SHALL first be downloaded. This specification does not specify where the OITF stores the Widget package, nor does it define what happens to the original package after the installation process has finished (regardless of whether it succeeded or failed).
When trying to install a Widget with an “id” that collides with the id of an already installed Widget (where the “id” is defined in section 7.6.1 of [[!Widgets-Packaging]] along with the extension defined in section of this specification), the OITF SHOULD ask the user for confirmation before installing the Widget. The OITF SHOULD provide information about the conflict (e.g. the version numbers, if available) to allow the user to decide whether to proceed with the installation or to cancel it. If the user confirms the installation, then the new Widget SHALL replace the one already installed; any storage area associated with the replaced Widget SHALL be retained. Note that the user can also choose to downgrade a Widget, i.e. install an old version of the Widget to replace the installed, more recent, one. |
|
Arguments | uri | The resource locator in form of a URI, which points to a Widget package to be installed. |
void uninstallWidget( WidgetDescriptor wd ) | ||
Description | Uninstalls a Widget. If this Widget is running it will be stopped. Any storage areas associated with the uninstalled Widget SHALL be deleted. | |
Arguments | wd | A WidgetDescriptor object for a Widget installed on the OITF. |
For the intrinsic events listed in the table below a corresponding DOM event SHALL be generated in the following manner:
Intrinsic Event | Corresponding DOM event | DOM Event properties |
---|---|---|
onLowMemory | LowMemory | Bubbles: No Cancellable: No Context Info: None |
onApplicationLoaded | ApplicationLoaded | Bubbles: No Cancellable: No Context Info: appl |
onApplicationUnloaded | ApplicationUnloaded | Bubbles: No Cancellable: No Context Info: appl |
onApplicationLoadError | ApplicationLoadError | Bubbles: No Cancellable: No Context Info: appl |
onWidgetInstallation | WidgetInstallation | Bubbles: No Cancellable: No Context Info: wd , state , reason |
onWidgetUninstallation | WidgetUninstallation | Bubbles: No Cancellable: No Context Info: wd , state |
NOTE: the above DOM events are directly dispatched to the event target, and will not bubble nor capture. Applications SHOULD NOT rely on receiving the events listed above during the bubbling or the capturing phase. Applications that use DOM event handlers SHALL call the addEventListener()
method on the application/oipfApplicationManager
object. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
The Application
class is used to implement the characteristics of a DAE application.
If the document of an application is modified (or even replaced entirely), the Application
object SHALL be retained. This means that the permission set granted when the application is created applies to all “edits” of the document or other pages in the application, until the application is destroyed.
readonly Boolean visible |
true if the application is visible, false otherwise. The value of this property is not affected by the application's Z-index or position relative to other applications. Only calls to the show() and hide() methods will affect its value. |
readonly Boolean active |
true if the application is in the list of currently active applications, false otherwise (as defined in section ). |
readonly StringCollection permissions |
StringCollection object containing the names of the permissions granted to this application. |
readonly Boolean isPrimaryReceiver |
true if the application receives cross application events before any other application, false otherwise. |
readonly Window window |
A strict subset of the DOM Window object representing the application. No symbols from the Window object are accessible through this property except the following:
|
readonly ApplicationPrivateData privateData |
Access the current application's private data object. If an application attempts to access the privateData property of an Application object for a different application, the OITF SHALL throw an error as defined in section . |
function onApplicationActivated function onApplicationDeactivated function onApplicationShown function onApplicationHidden function onApplicationPrimaryReceiver function onApplicationNotPrimaryReceiver function onApplicationTopmost function onApplicationNotTopmost function onApplicationDestroyRequest function onApplicationHibernateRequest function onKeyPress function onKeyUp function onKeyDown |
Each of these event handlers represents a DOM 0 event handler that corresponds to one of the events listed in sections and |
void show( ) | |
Description | If the application visualization mode as defined by method getApplicationVisualizationMode() in section , is:
This method only affects the visibility of an application. In the case where more than one application is visible, calls to this method will not affect the z-index of the application with respect to any other visible applications. |
void hide( ) | |
Description | If the application visualization mode as defined by method getApplicationVisualizationMode() in section , is:
Calling this method has no effect on the lifecycle of the application. Note: Broadcast independent applications should not call this method. Doing so may result in only the background being visible to the user. |
void activateInput( Boolean gainFocus ) | |
Description | Move the application to the front of the active applications list. If the application has been hidden using Application.hide(), this method does not cause the application to be shown.
If the application visualization mode as defined by method getApplicationVisualizationMode() in section , is:
|
void deactivateInput( ) | |
Description | Remove the application from the active applications list. This has no effect on the lifecycle of the application and MAY have no effect on the resources it uses. Applications which are not active will receive no cross-application events, unless their Application object is the target of the event (as for the events defined in section ). Applications may still be manipulated via their Application object or their DOM tree. |
Application createApplication( String uri, Boolean createChild ) | ||
Description | Create a new application and add it to the application tree. Calling this method does not automatically show the newly-created application. This call is asynchronous and may return before the new application is fully loaded. An If the application cannot be created, this method SHALL return |
|
Arguments | uri | The URI of the first page of the application to be created or the localURI of a Widget as defined in section |
createChild | Flag indicating whether the new application is a child of the current application. A value of true indicates that the new application should be a child of the current application; a value of false indicates that it should be a sibling. |
void destroyApplication( ) | |
Description | Terminate the application, detach it from the application tree, and make any resources used available to other applications. When an application is terminated, any child applications shall also be terminated. |
Application startWidget( WidgetDescriptor wd, Boolean createChild ) | ||
Description | Create a Widget installed on the OITF. The behaviour of this method is equivalent to that of Application.createApplication(). The Widget is identified by its WidgetDescriptor. To get a list of the WidgetDescriptor objects for the installed Widgets one can check ApplicationManager.widgets property. If the Widget is already running or fails to start this call will return |
|
Arguments | wd | a WidgetDescriptor object for a Widget installed on the OITF. |
createChild | Flag indicating whether the new application is a child of the current application. A value of true indicates that the new application should be a child of the current application; a value of false indicates that it should be a sibling. |
Application stopWidwet( WidgetDescriptor wd ) | ||
Description | Terminate a running Widget. The behaviour of this method is equivalent to that of Calling this method will detach the Widget from the application tree, and make any resources used available to other applications. When a Widget is terminated, any child applications shall also be terminated. |
|
Arguments | wd | a WidgetDescriptor object for a Widget installed on the OITF. |
typedef Collection<Application> ApplicationCollection
The ApplicationCollection
class represents a collection of Application objects. See Annex for the definition of the collection template.
readonly Keyset keyset |
The object representing the user input events sent to the DAE application. |
readonly Channel currentChannel |
For a broadcast-related application, the value of the property contains the channel whose AIT is currently controlling the lifecycle of this application. If no channel is being presented, or if the application is not broadcast-related, the value of this property shall be null . |
readonly Boolean wakeupApplication |
The wakeupApplication property is set if there has been a prepareWakeupApplication() request by that application. |
readonly Boolean wakeupOITF |
The wakeupOITF property is set if there has been a call to the prepareWakeupOITF() method. |
Integer getFreeMem( ) | |
Description | Let application developer query information about the current memory available to the application. This is used to help during application development to find application memory leaks and possibly allow an application to make decisions related to its caching strategy (e.g. for images). Returns the available memory to the application or -1 if the information is not available. For example: var app = appman.getOwnerApplication(window.document); debug("[APP] free mem = " + app.privateData.getFreeMem() + "\n"); |
Boolean prepareWakeupApplication( String URI, String token, Date time ) | ||
Description | The prepareWakeupApplication() method allows the DAE application to set-up the OITF to wake-up at a specified time. The wake-up is limited to the OITF being in the PASSIVE_STANDBY state at the specified time. If the timer expires while the DAE application is in a different state it is silently ignored.
Only one wake-up is to be supported for a DAE application. If a previous wake-up request had been registered it SHALL be overwritten. If the wake-up fails to be set-up this operation SHALL return |
|
Arguments | URI | The URI from which the content can be fetched. |
token | The token is a string which the application may retrieve with clearWakeupToken(). | |
time | The time when the wake-up is to occur. |
Boolean prepareWakeupOITF( Date time ) | ||
Description | The prepareWakeupOITF() method allows the DAE application to set-up the OITF to wake-up at a specified time. The wake-up is limited to the OITF being in the PASSIVE_STANDBY or PASSIVE_STANDBY_HIBERNATE state at the specified time. If the timer expires while the DAE application is in a different state it is silently ignored.
Unlike prepareWakeupApplication() this method applies to all the DAE applications and not limited to a single DAE application. If the wake-up fails to be set-up this operation SHALL return |
|
Arguments | time | The time when the wake-up is to occur. |
String clearWakeupToken( ) | |
Description | The |
The Keyset
object permits applications to define which key events they request to receive. There are two means of defining this. Common key events are represented by constants defined in this class which are combined in a bit-wise mask to identify a set of key events. Less common key events are not included in one of the defined constants and form part of an array.
The supported key events indicated through the capability mechanism in section SHALL be the same as the maximum set of key events available to the browser as indicated through this object.
The default set of key events available to broadcast-related applications shall be none. The default set of key events available to broadcast-independent or service provider related applications which do not call Keyset.setValue()
SHALL be all those indicated by the constants in this class which are supported by the OITF excluding those indicated by OTHER
.
Constant name | Numeric Value | Use |
---|---|---|
RED | 0x1 | Used to identify the VK_RED key event. |
GREEN | 0x2 | Used to identify the VK_GREEN key event. |
YELLOW | 0x4 | Used to identify the VK_YELLOW key event. |
BLUE | 0x8 | Used to identify the VK_BLUE key event. |
NAVIGATION | 0x10 | Used to identify the VK_UP , VK_DOWN , VK_LEFT , VK_RIGHT , VK_ENTER and VK_BACK key events. |
VCR | 0x20 | Used to identify the VK_PLAY , VK_PAUSE , VK_STOP , VK_NEXT , VK_PREV , VK_FAST_FWD , VK_REWIND , VK_PLAY_PAUSE key events. |
SCROLL | 0x40 | Used to identify the VK_PAGE_UP and VK_PAGE_DOWN key events. |
INFO | 0x80 | Used to identify the VK_INFO key event. |
NUMERIC | 0x100 | Used to identify the number events, 0 to 9. |
ALPHA | 0x200 | Used to identify all alphabetic events. |
OTHER | 0x400 | Used to indicate key events not included in one of the other constants in this class. |
readonly Integer value |
The value of the keyset which this DAE application will receive. |
readonly Integer otherKeys[ ] |
If the OTHER bit in the value property is set then this indicates those key events which are available to the browser which are not included in one of the constants defined in this class, If the OTHER bit in the value property is not set then this property is meaningless. |
readonly Integer maximumValue |
In combination with maximumOtherKeys, this indicates the maximum set of key events which are available to the browser. When a bit in this maximumValue has value 0, the corresponding key events are never available to the browser. |
readonly Integer maximumOtherKeys[ ] |
If the OTHER bit in the maximumValue property is set then, in combination with maximumValue, this indicates the maximum set of key events which are available to the browser. For key events which are not included in one of the constants defined in this class, if they are not listed in this array then they are never available to the browser. If the OTHER bit in the value property is not set then this property is meaningless. |
Boolean supportsPointer |
Applications that have been designed to handle Mouse Events can express it by using this property. Applications SHALL set this property to Based on the value of this property, an OITF MAY decide to enable or disable the rendering of a free moving cursor. Note: OITFs are not required to support a pointer based input device even though they are recommended to do so. If pointer based input devices are supported, this is expressed via the |
Integer setValue( Integer value, Integer otherKeys[ ] ) | ||
Description | Sets the value of the keyset which this DAE application requests to receive. Where more than one DAE application is running, the events delivered to the browser SHALL be the union of the events requested by all running DAE applications. Under these circumstances, applications may receive events which they have not requested to receive. The return value indicates which keys will be delivered to this DAE application encoded as bit-wise mask of the constants defined in this class. |
|
Arguments | value | The value is a number which is a bit-wise mask of the constants defined in this class. For example;myKeyset = myApplication.privateData.keyset; myKeyset.setValue(0x00000013); myKeyset.setValue(myKeyset.INFO | myKeyset.NUMERIC); |
otherkeys | This parameter is optional. If the value parameter has the OTHER bit set then it is used to indicate the key events that the application wishes to receive which are not represented by constants defined in this class. |
String getKeyIcon( Integer code ) | ||
Description | Return the URI of the icon representing the physical key or other mechanism that is used by the terminal to generate the key event for the given keycode passed. It SHALL return null if the key has no icon associated with it. |
|
Arguments | code | The VK_ constant for the key whose icon should be returned. |
String getKeyLabel( Integer code ) | ||
Description | Return the textual label representing the physical key or other mechanism that is used by the terminal to generate the key event for the given keycode passed. It SHALL return null if the key has no icon associated with it. |
|
Arguments | code | The VK_ constant for the key whose textual label should be returned. |
New events have been created that are raised on the Application objects in the application tree. These are normal events, not cross-application events, and are used to indicate changes in the state of an application.
Event | Description |
---|---|
ApplicationActivated | Issued when an application focus change occurs to inform the recipient of the event that the application is now focussed. |
ApplicationDeactivated | Issued when an application focus change occurs to inform the recipient of the event that the application is now no longer focussed. |
ApplicationShown | Issued when an application has become visible. |
ApplicationHidden | Issued when an application has become hidden. |
ApplicationPrimaryReceiver | This event is issued to indicate that the target is now at the front of the active application list. |
ApplicationNotPrimaryReceiver | This event is issued to indicate that the target is no longer at the front of the active application list. |
ApplicationTopmost | This event is issued to indicate that the target is now the topmost (i.e. it has the highest Z-index and is not obscured by any other visible applications, for OITFs where multiple applications are visible simultaneously. |
ApplicationNotTopmost | This event is issued to indicate that the target is no longer at the topmost application. For OITFs where only one application is visible at a time, this event indicates that the application is no longer visible to the user. |
ApplicationDestroyRequest | This event is issued to indicate that the target application is about to be terminated. It is not issued when an application calls destroyApplication() method for itself (i.e. to exit itself). Non-responsive applications SHOULD be forcibly terminated by the OITF, including the case where listeners for ApplicationDestroyRequest events do not return promptly. The determination of when an application is "non-responsive" is terminal-specific. If an application does not register a listener for this event and there is a need for the system to terminate the application, then the application SHALL be terminated immediately. |
ApplicationHibernateRequest | This event is issued to indicate that the OITF is about to enter a hibernate mode. The OITF SHALL start a short watchdog timer (e.g. 2 seconds). During this period the application may take any actions (for example to store the currently viewed channel in case of an unsuccessful start-up). |
These events do not bubble and cannot be cancelled. Each of these events has a corresponding DOM 0 event handler property on the Application object.
The examples below illustrate some aspects of the application model.
The ApplicationManager class provides the getOwnerApplication() method, which returns the document's owning application node:
// Assumes that the application/oipfApplicationManager object has the ID // “applicationmanager” var appMgr = document.getElementById( "applicationmanager" ); var self = appMgr.getOwnerApplication( Window.document );
All other application functionality is available from this object.
Creating a new application is a simple matter of creating a new Application object.
// Assumes that the application/oipfApplicationManager object has the ID // “applicationmanager” var appMgr = document.getElementById( "applicationmanager" ); var self = appMgr.getOwnerApplication( Window.document ); var child = self.createApplication( url_of_application, true );
A typical requirement on an application is to only become visible once it has fully loaded. To do this, it can take advantage of load events. Here is an example from a clock application, which wants to load an image to become the background of the clock, upon which it can write the text of the clock.
<script> function loaded() { var screen = document.defaultView.screen; var clock = document.getElementById( 'clock' ); setup_clock( clock.width, clock.height ); // Assumes that the application/oipfApplicationManager object has the ID // “applicationmanager” var appMgr = document.getElementById( "applicationmanager" ); var self = appMgr.getOwnerApplication( Window.document ); self.show(); } </script> <style> * { margin: 0cm } </style> <body onload="loaded()"> <img id="clock" src="clockbackground.png" style="position: absolute; top: 0px; left=0px"> </body>
This section defines APIs an author can use to interact with Widgets installed on the OITF. Note that the Widget lifecycle is managed through the application manager as defined in the previous sections.
The WidgetDescriptor class is used to implement the characteristics of a DAE Widget. It extends the Widget interface defined in section of this specification with the properties below.
readonly String localURI |
The URI of the installed Widget. It can be used as an argument to ApplicationManager.createApplication() to run the Widget. The value of this property SHOULD NOT represent the actual location of the Widget on the OITF's local storage. |
readonly String downloadURI |
The URI of the location from where the Widget package was downloaded. This property SHALL match the URI used as argument of createApplication() or installWidget() when installing the Widget. |
readonly StringCollection defaultIcon |
A collection of URI strings for all the available default icons. Default icons are defined in [[!Widgets-Packaging]]. This collection only contains URIs for the icons currently available in the Widget package. |
readonly StringCollection customIcons |
A collection of URI strings for all the custom icons of the current Widget. Custom icons are defined in [[!Widgets-Packaging]]. |
readonly Boolean running |
This flag indicates the running state of the Widget. |
WidgetDescriptor
class is used to identify an installed Widget regardless of whether it is running or not, and so some clarification on the attribute values defined for the Widget interfaces [[!Widgets-APIs]] is needed. The attributes height and width are defined in [[!Widgets-APIs]] on the "Widget instance's viewport". When the Widget is not running those attributes SHALL take the value defined in the Widget Manifest (if any) otherwise they SHALL be null
. When the Widget is running these attributes SHALL adhere to what is defined in [[!Widgets-APIs]].
typedef Collection<WidgetDescriptor> WidgetDescriptorCollectionThe
WidgetDescriptorCollection
class represents a collection of WidgetDescriptor objects. See Annex for the definition of the collection template.
This section defines the interface to configuration and user settings information. Hardware configuration of the OITF is managed via an instance of the LocalSystem
object. This provides access to hardware information and provides an entry point to configure the outputs and network interfaces of the OITF. Settings relating to the user interface and behaviour of the platform software are managed via an instance of the Configuration object.
This section is subject to security control, (see section ) and only applies if The OITF SHALL implement the “ For the intrinsic event “onIpAddressChange”, a corresponding DOM event SHALL be generated, in the following manner: NOTE: the above DOM event is directly dispatched to the event target, and will not bubble nor capture. Applications SHOULD not rely on receiving an The A comma-separated set of languages to be used for audio playback, in order of preference. Each language SHALL be indicated by its ISO 639-2 language code as defined in [[!ISO639-2]]. A comma-separated set of languages to be used for subtitle playback, in order of preference. The subtitle component (see section ) that matches the highest ordered language SHALL be activated (equivelant to the selectComponent method) and all other subtitle components SHALL be deactivated (equivelant to the unselectComponent method). Each language SHALL be indicated by its ISO 639-2 language code as defined in [[!ISO639-2]] or as a wildcard specifier " If the wildcard is included it SHALL be the last item in the set. If no subtitle component in the content matches a language in this property and the wildcard is included then the first (lowest) subtitle component SHALL be selected. A comma-separated set of languages to be used for the user interface of a service, in order of preference. Each language SHALL be indicated by its ISO 639-2 language code as defined in [[!ISO639-2]]. If present, the HTTP An integer indicating the time zone within a country in which the receiver is deployed. A value of 0 SHALL represent the eastern-most time zone in the country, a value of 1 SHALL represent the next time zone to the west, and so on. Valid values are in the range 0 — 60. The policy dictates what mechanism the system should use when storage space is exceeded. Valid values are shown in the table below. Text string used as the title for programmes and channels where no guide information is available. Defaults to “No information” Text string used as the synopsis for programmes where no guide information is available. Defaults to “No further information available” Text string used to identify a manual recording. Defaults to “Manual Recording” The Note: The The following values are defined for the standby state of the OITF: The following values are defined for the startup URL of the OITF: Private OITF Identifier. This property SHALL take the value undefined except when accessed by applications meeting either of the following criteria: In these two cases, it SHALL take the same value as defined for the DHCP client identifier in DHCP option 61 in section 12.1.1.1 of [[!OIPF_PROT2]]. Release version of the OIPF specification implemented by the OITF. For instance, if the OITF implements release 2 version “1.0”, this property should be set to 2. Major version of the OIPF specification implemented by the OITF. For instance, if the OITF implements release 2 version “2.0”, this property should be set to 2. Minor version of the OIPF specification implemented by the OITF.
For instance, if the OITF implements release 2 version “2.0”, this property should be set to 0. Flag indicating whether the platform has PVR capability (local PVR). Note: This property is deprecated in favour of the pvrSupport property. Get the TV standard(s) which are supported on the analogue video outputs. This property can take one or more of the following values: Values are stored as a bitfield. Get the TV standard for which the analogue video outputs are currently configured. This property can take one or more of the following values: Values are stored as a bitfield. Flag indicating the type of PVR support used by the application. This property may take zero or more of the following values: Values are stored as a bitfield. The function that is called when any property in the startup information is changed. The specified function is called with the argument startupInfo: The type of PVR support desired by the application. More than one type of PVR functionality MAY be specified, allowing the receiver to automatically select the appropriate mechanism. Valid values are: Values are stored as a bitfield. The The power state change may be restricted for some values of Set the credentials for the specified protocol to use for digest authentication negotiation for all subsequent requests to the specified domain. The credentials are persistently stored overwriting any previous set credentials. If domain is null the provided credentials SHALL apply for all domains. Returns If digest authentication is not supported for the specified protocol then return Setting of Digest Credentials on the same protocol and domain SHALL update the username and password. If the credentials, when used, are incorrect then the behaviour SHALL be the same as any other time that stored credentials are incorrect, e.g. saved values from a user prompt. The credentials SHALL be used (if necessary) in all requests made by DAE applications. The credentials MAY be used in requests made by other components such as media players, DLNA clients, etc. Clear any previously set digest credentials for the specified domain. If domain is Returns Check if digest credentials are currently defined for the specified protocol and domain. Returns For the intrinsic events listed in the table below, a corresponding DOM event SHALL be generated in the following manner: NOTE: the above DOM events are directly dispatched to the event target, and will not bubble nor capture. Applications SHOULD NOT rely on receiving the events listed above during the bubbling or the capturing phase. Applications that use DOM event handlers SHALL call the The The Read or set the video format conversion mode, for which hardware support MAY be available on the device. Valid values are: The following table provides guidance as to the relationship between The DAE application graphical layer is unaffected by the For audio-only outputs, setting this property SHALL have no effect. For video-only outputs, setting this property SHALL have no effect. For video-only outputs, setting this property SHALL have no effect. Read the video format conversion modes that may be used when displaying a 4:3 input video on a 16:9 output display or 16:9 input video on a 4:3 output display. The assumption is that the hardware supports conversion from either format and there is no distinction between the two. See the definition of the videoMode property for valid values. For audio outputs, this property will have the value Read the supported output modes for digital audio outputs. See the definition of the digitalAudioMode property for valid values. For video outputs, this property will have the value Read the supported ranges for digital audio outputs. See the definition of the audioRange property for valid values. For video outputs, this property will have the value Read the supported HD and 3D video formats. See the definition of the hdVideoFormat property for valid values. For audio outputs, this property will have the value Read the supported TV aspect ratios. See the definition of the tvAspectRatio property for valid values. For audio outputs, this property will have the value A A A NOTE: An OITF may contain a physical tuner that has its capabilities split into multiple The property enables (true) and disables (false) the tuner. Reading the property provides the current state, enabled or disabled. Attempting to disable the tuner while the resource is in use has no effect and the tuner SHALL continue to be enabled. While disabled: The set value of the property SHALL persist after OITF restarts. The property turns on (true) and off (false) the power applied to the external interface of the tuner unless the tuner is disabled. Reading the property provides the current value, on or off. Attempting to modify the property while the resource is in use has no effect. The value of the property SHALL persist after OITF restarts. For DVB-S/S2 power is supplied to the LNB(s) and if present the DiSEqC switch. For DVB-T/T2 a supply +5V is supplied to the antenna with built in amplifier. Note that applying power may have adverse effects to the external equipment if it has its own power supply. It is a strong recommendation to indicate to the end user a possible adverse effect before using this method. For DVB-C/C2 there is no effect. Reading the property provides the current value. Indicates the orbital position of the satellite in degrees, negative value for west, positive value for east. For example, Astra 19.2 East would have orbitalPosition 19.2. Thor 0.8 West would have orbitalPosition -0.8. This property, if provided, will be used to select a Tuner instance (when scanning and tuning). Setting any value which is not a valid orbital position (an absolute value greater than 180) indicates that the orbital position need not be considered when using the associated tuner. The URL used at startup of the OITF. If the urlSource property is STARTUP_URL_NONE then the value of this property SHALL be If the urlSource property is STARTUP_URL_PRECONFIGURED then the value of this property SHALL be <configurationChanges>
has value true
.
The application/oipfConfiguration embedded object
application/oipfConfiguration
” object as defined below. This object provides an interface to the configuration and user settings facilities within the OITF.Properties
readonly Configuration configuration Accesses the configuration object that sets defaults and shows system settings.
readonly LocalSystem localSystem Accesses the object representing the platform hardware.
function onIpAddressChange( NetworkInterface item, String ipAddress ) The function that is called when the IP address of a network interface has changed. The specified function is called with two arguments item
and ipAddress
. The ipAddress
may have the value undefined
if a previously assigned address has been lost.Events
Intrinsic Event Corresponding DOM event DOM Event properties onIpAddressChange IpAddressChange Bubbles: No
Cancellable: No
Context Info: item
, ipAddress
IpAddressChange
event during the bubbling or the capturing phase. Applications that use DOM event handlers SHALL call the addEventListener()
method on the application/oipfConfiguration
object. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.The Configuration class
Configuration
object allows configuration items within the system to be read and modified. This includes settings such as audio and subtitle languages, display aspect ratios and other similar settings. Unlike the LocalSystem
object, this is concerned with software- and application-related settings rather than hardware configuration and control.Properties
String preferredAudioLanguage
String preferredSubtitleLanguage ***
".
String preferredUILanguage Accept-language
header shall contain the same languages as the preferredUILanguage property with the same order of preference. NOTE: The order of preference in the Accept-language
header is indicated using the quality factor.
String countryId An ISO-3166 three character country code identifying the country in which the receiver is deployed.
Integer regionId
Integer pvrPolicy
Value Description 0 Indicates a recording management policy where no recordings are to be deleted. 1 Indicates a recording management policy where only watched recordings MAY be deleted. 2 Indicates a recording management policy where only recordings older than the specified threshold (given by the pvrSaveDays and pvrSaveEpisodes properties) MAY be deleted.
Integer pvrSaveEpisodes When the pvrPolicy property is set to the value 2, this property indicates the minimum number of episodes that SHALL be saved for series-link recordings.
Integer pvrSaveDays When the pvrPolicy property is set to the value 2, this property indicates the minimum save time (in days) for individual recordings. Only recordings older than the save time MAY be deleted.
Integer pvrStartPadding The default padding (measured in seconds) to be added at the start of a recording.
Integer pvrEndPadding The default padding (measured in seconds) to be added at the end of a recording.
Integer preferredTimeShiftMode The time shift mode indicates the preferred mode of operation for support of timeshift playback in the video/broadcast object. Valid values are defined in the timeShiftMode property in section . The default value is 0, timeshift is turned off. Methods
String getText( String key )
Description
Get the system text string that has been set for the specified key.
Arguments
key A key identifying the system text string to be retrieved.
String setText( String key, String value )
Description
Set the system text string that has been set for the specified key. System text strings are used for automatically-generated messages in certain cases, e.g. parental control messages.
Arguments
key A key identifying the system text string to be retrieved.
Key Description no_title no_synopsis manual_recording value The new value for the system text string. The LocalSystem class
LocalSystem
object allows hardware settings related to the local device to be read and modified.standbyState
property has been removed from this class.Constants
Name Value Use OFF 0 The OITF is in the off state and no power is consumed. This is the case of a power outage or if the OITF has the ability to be completely turned off. Scheduled recording is not expected to work. ON 1 The OITF is in normal working mode with user interaction. The DAE applications may render any presentation graphically. PASSIVE_STANDBY 2 The OITF is in the lowest possible power consumption state (meeting regulations and certifications). The OITF may support wake-up from a passive standby in order, for example, to perform a scheduled recording. ACTIVE_STANDBY 3 The OITF is in an intermediate power consumption state. The output to the display shall be inactive. In this state DAE applications may continue to operate. PASSIVE_STANDBY_HIBERNATE 4 The OITF is in the lowest possible power consumption state (meeting regulations and certifications). If the platform supports hibernate mode then the OITF stores all applications in volatile memory to allow for quick startup. RESTART 5 The OITF shall restart and return to a ON state. FACTORY_RESET 6 Restart the OITF and reset all settings and data to an initial/factory state. The exact settings and data to be reset are implementation dependant. The use of the this operation with the setPowerState method is subject to security control defined in section
Name Value Use STARTUP_URL_NONE 0 No startup URL is known. STARTUP_URL_DHCP 1 The startup URL is derived from DHCP procedures. STARTUP_URL_TR069 2 The startup URL is derived through TR-069 procedures. STARTUP_URL_PRECONFIGURED 3 The startup URL is that which is configured through the OITF firmware. STARTUP_URL_OTHER 9 The startup URL is obtained through other (perhaps non-standardized) procedures. Properties
readonly String deviceID
urn:oipf:cs:ApplicationUsageCS:2009:hni-igi
where the SD&S service provider discovery record was obtained by the OITF through the procedure defined in section 5.4.1.2 of [[!OIPF_PROT2]].
readonly Boolean systemReady Indicates whether the system has finished initialising. A value of true
indicates that the system is ready.
readonly String vendorName String identifying the vendor name of the device.
readonly String modelName String identifying the model name of the device.
readonly String familyName String identifying the name of the family that the device belongs to. Devices in a family differ only by details that do not impact the behaviour of the OITF aspect of the device, e.g. screen size, remote control, number of HDMI ports, size of hard disc. Family names are allocated by the vendor and the combination of vendorName and familyName
should uniquely identify a family of devices. Different vendors may use the same familyName
, although they are recommended to use conventions that avoid this.
readonly String softwareVersion String identifying the version number of the platform firmware.
readonly String hardwareVersion String identifying the version number of the platform hardware.
readonly String serialNumber String containing the serial number of the platform hardware.
readonly Integer releaseVersion
readonly Integer majorVersion
readonly Integer minorVersion
readonly String oipfProfile Profile of the OIPF specification implemented by the OITF. Values of this field are not defined in this specification.
readonly Boolean pvrEnabled
readonly Boolean ciplusEnabled Flag indicating whether the platform has CI+ capability.
readonly Integer powerState The powerState
property provides the DAE application the ability to determine the current state of the OITF. The property is limited to the ACTIVE_STANDBY
or ON
states.
readonly Integer previousPowerState The previousPowerState
property provides the DAE application the ability to retrieve the previous state.
readonly Integer timeCurrentPowerState The time that the OITF entered the current power state. The time is represented in seconds since midnight (GMT) on 1/1/1970.
function onPowerStateChange( Integer powerState ) The function that is called when the power state has changed. The specified function is called with the argument powerState:
Integer powerState
— the new power state.
Integer volume Get or set the overall system volume. Valid values for this property are in the range 0 - 100. The OITF SHALL store this setting persistently.
Boolean mute Get or set the mute status of the default audio output(s). A value of true
indicates that the default output(s) are currently muted.
readonly AVOutputCollection outputs A collection of AVOutput objects representing the audio and video outputs of the platform. Applications MAY use these objects to configure and control the available outputs.
readonly NetworkInterfaceCollection networkInterfaces A collection of NetworkInterface objects representing the available network interfaces.
readonly TunerCollection tuners A collection of Tuner objects representing the physical tuners available in the OITF.
readonly Integer tvStandardsSupported
Value Description 1 Indicates platform support for the NTSC TV standard. 2 Indicates platform support for the PAL-BGH TV standard. 4 Indicates platform support for the SECAM TV standard. 8 Indicates platform support for the PAL-M TV standard. 16 Indicates platform support for the PAL-N TV standard.
readonly Integer tvStandard
Value Description 0 Indicates there are no analogue video outputs. 1 Indicates platform support for the NTSC TV standard. 2 Indicates platform support for the PAL-BGH TV standard. 4 Indicates platform support for the SECAM TV standard. 8 Indicates platform support for the PAL-M TV standard. 16 Indicates platform support for the PAL-N TV standard.
readonly Integer pvrSupport
Value Description 0 PVR functionality is not supported. This is the default value if <recording>
as specified in section has value false
.1 PVR functionality is supported in the OITF. This is the default value if <recording>
as specified in section has value true
.
readonly StartupInformation startupInformation Indicates any information used at startup time of the OITF.
function onStartupInfoChange( StartupInformation startupInfo )
StartupInformation startupInfo
— the new startup information.Methods
Boolean setScreenSize( Integer width, Integer height )
Description
Set the resolution of the graphics plane. If the specified resolution is not supported by the OITF, this method SHALL return
false
. Otherwise, this method SHALL return true
. Arguments
width The width of the display, in pixels. height The height of the display, in pixels.
Boolean setTVStandard( Integer tvStandard )
Description
Set the TV standard to be used on the analogue video outputs. Returns
false
if the requested mode cannot be set.Arguments
tvStandard The TV standard to be set. Valid values are defined in the description of the tvStandard property in section .
Integer setPvrSupport( Integer state )
Description
Set the type of PVR support used by the application. The types of PVR supported by the receiver MAY not be supported by the application; in this case, the return value indicates the pvr support that has been set.
Arguments
state
Value Description 0 PVR functionality is not supported. This is the default value if <recording>
as specified in section has value false
.1 PVR functionality is supported in the OITF. This is the default value if <recording>
as specified in section has value true
.
Boolean setPowerState( Integer type )
Description
setPowerState()
method allows the DAE application to modify the OITF state.type
, for example OFF
, PASSIVE_STANDBY
, RESTART
and FACTORY_RESET
. A call to setPowerState()
with a restricted value of type
SHALL return false
.Arguments
type The type values that may be specified are defined in section
Boolean setDigestCredentials( String protocol, String domain, String username, String password )
Description
true
if credentials are successfully set, false
otherwise.false
. The valid values are the strings “http
” and “https
”.Arguments
protocol The protocol to apply the credentials. domain The domain to which the credentials apply. username The username to be used in the digest authentication. password The password to be used in the digest authentication.
Boolean clearDigestCredentials( String protocol, String domain )
Description
null
all set credentials are cleared.true
if the digest credentials for the given protocol
and domain
were cleared or do not exist, or false
if credentials failed to be cleared.Arguments
protocol The protocol to apply the credentials. The value should be the same as one of those specified for the setDigestCredentials() method. domain The domain to which the credentials apply.
Boolean hasDigestCredentials( String protocol, String domain )
Description
true
if credentials have been set by a previous call to setDigestCredentials(), otherwise returns false
.Arguments
protocol The protocol to apply the credentials. The value should be the same as one of those specified for the setDigestCredentials() method. domain The domain to which the credentials apply. Events
Intrinsic Event Corresponding DOM event DOM Event properties onPowerStateChange PowerStateChange Bubbles: No
Cancellable: No
Context Info: powerState
onStartupInfoChange StartupInfoChange Bubbles: No
Cancellable: No
Context Info: startupInfo
addEventListener()
method on the LocalSystem object.The NetworkInterface class
NetworkInterface
class represents a physical or logical network interface in the receiver. Properties
readonly String ipAddress The IP address of the network interface, in dotted-quad notation for IPv4 or colon-hexadecimal notation for IPv6. This property SHALL take the value undefined if no IP address has been assigned. The IP address may be link local, private or global, depending on which address block it belongs to, as reserved by IANA.
readonly String macAddress The colon-separated MAC address of the network interface.
readonly Boolean connected Flag indicating whether the network interface is currently connected.
Boolean enabled Flag indicating whether the network interface is enabled. Setting this property SHALL enable or disable the network interface. The AVOutput class
AVOutput
class represents an audio or video output on the local platform.Properties
readonly String name The name of the output. Each output SHALL have a name that is unique on the local system. At least one of the outputs SHALL have the name " all
" and SHALL represent all available outputs on the platform. The results of reading properties from the "all
" AVOutput
are implementation specific.
readonly String type The type of the output. Valid values are “ audio
”, “video
”, or “both
”.
Boolean enabled Flag indicating whether the output is enabled. Setting this property SHALL enable or disable the output.
Boolean subtitleEnabled Flag indicating whether the subtitles are enabled. The language of the displayed subtitles is determined by a combination of the value of the Configuration.preferredSubtitleLanguage property (see section ) and the subtitles available in the stream. For audio outputs, setting this property will have no effect.
String videoMode
videoMode
, aspectRatio
(output) and the aspectRatio
(input) of the AVVideoComponent class.
aspectRatio (input/output) value videoMode value Normal Stretch Zoom 16:9 input / 4:3 output Black bars at top and bottom, all video visible No black bars, picture stretched vertically No black bars, picture clipped on left and right sides 4:3 input / 16:9 output Black bars on left and right, all video visible No black bars, picture stretched horizontally No black bars, picture clipped top and bottom 4:3 input / 4:3 output No change No change No change 16:9 input / 16:9 output No change No change No change videoMode
.
String digitalAudioMode Read or set the output mode for digital audio outputs for which hardware support MAY be available on the device. Valid values are shown below.
Value Behaviour ac3
Output AC-3 audio. uncompressed
Output uncompressed PCM audio.
String audioRange Read or set the range for digital audio outputs for which hardware support MAY be available on the device. Valid values are shown below
Value Behaviour normal
Use the normal audio range. narrow
Use a narrow audio range. wide
Use a wide audio range.
String hdVideoFormat Read or set the video format for HD and 3D video outputs for which hardware support MAY be available on the device. Valid values are:
For audio-only or standard-definition outputs, setting this property SHALL have no effect.
String tvAspectRatio Indicates the output display aspect ratio of the display device connected to this output for which hardware support MAY be available on the device. Valid values are:
For audio-only, setting this property SHALL have no effect.
readonly StringCollection supportedVideoModes null
.
readonly StringCollection supportedDigitalAudioModes null
.
readonly StringCollection supportedAudioRanges null
.
readonly StringCollection supportedHdVideoFormats null
.
readonly StringCollection supportedAspectRatios null
.
readonly Integer current3DMode Read whether the display is currently in a 2D or 3D mode. Return values are:
Value Description 0 The display is in a 2D video mode 1 The display is in a 3D video mode
function on3DModeChange( Integer action ) This function is the DOM 0 event handler for events relating to actions carried out on an item in a content catalogue. The specified function is called with the following arguments:
Integer action
- The type of action that the event refers to. Valid values are:
Value Description 0 The display changed from a 3D to a 2D video mode 1 The display changed from a 2D to a 3D video mode Events
For the intrinsic events listed in the table below, a corresponding DOM event SHALL be generated, in the following manner:
NOTE: the above DOM event is directly dispatched to the event target, and will not bubble nor capture. Applications SHOULD not rely on receiving an Intrinsic event Corresponding DOM event DOM Event properties on3DModeChange 3DModeChange Bubbles: No
Cancellable: No
Context Info: action
IpAddressChange
event during the bubbling or the capturing phase. Applications that use DOM event handlers SHALL call the addEventListener()
method on the application/oipfConfiguration
object. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
The NetworkInterfaceCollection class
typedef Collection<NetworkInterface> NetworkInterfaceCollection
The NetworkInterfaceCollection
class represents a collection of NetworkInterface objects. See Annex for the definition of the collection template.
The AVOutputCollection class
typedef Collection<AVOutput> AVOutputCollection
The AVOutputCollection
class represents a collection of AVOutput objects. See Annex for the definition of the collection template.
The TunerCollection class
typedef Collection<Tuner> TunerCollection
The TunerCollection
class represents a collection of Tuner objects. See Annex for the definition of the collection template.The Tuner class
Tuner
object represents the source of broadcast content provided through a physical tuner in the OITF. Each Tuner
object is represented by a <video_broadcast>
element in the capability description as defined in section .Tuner
object that is capable of tuning at the same time to multiple transponders SHALL have the nrstreams attribute of the <video_broadcast>
element set to a value equal to the number of transponders.Tuner
object that is capable of tuning to transponders of different types SHALL include all those types in the types attribute of the <video_broadcast>
element.Tuner
objects to fit the restrictions on the <video_broadcast>
element outlined above and in section .Properties
readonly Integer id A unique identifier of the tuner.
readonly String name The name of the tuner as designated in OITF.
readonly IntegerCollection idTypes Returns a collection of the types supported by the tuner. The types are according to the ID types in section under Channel object.
Boolean enableTuner
readonly SignalInfo signalInfo The property returns a SignalInfo object with signal information for example signal strength.
readonly LNBInfo lnbInfo The property returns a LNBInfo object with information regarding the LNB associated with the tuner.
readonly Integer frontEndPosition Indicates the physical interface associated with the tuner.
Boolean powerOnExternal The SignalInfo class
The SignalInfo
object provides details on the signal strength of the tuner. If the tuner is not tuned to a transponder the all properties SHALL have the value undefined
.
Properties
readonly Number strength Signal strength measured in dBm, for example -31.5dBm.
readonly Integer quality Signal quality with range from 0 to 100. Calculation of quality is a function of ber and snr. The specification remains silent as to how the calculation is made.
readonly Integer ber Bit error rate.
readonly Number snr Signal to noise ratio (dB), for example 22.3dB.
readonly Boolean lock True
if the tuner is locked to a transponder.The LNBInfo class
The LNBInfo
object provides details on the LNB attached to a tuner. Setting any of the properties in this class results in an immediate update of the LNB configuration that is active for the associated Tuner. The LNB configuration is stored persistently.
Constants
The following constants are defined in the LNBInfo class:
Name Value Use DUAL_LO_FREQ_LNB 30 A universal LNB that has two local oscillator frequency settings available. The selection between the frequencies is done by the presence of a 22 kHz control signal. SINGLE_LO_FREQ_LNB 31 Only a single local oscillator frequency is available in the LNB. Properties
Integer lnbType The type of LNB connected to the frontend. Valid values are listed in section .
Number lnbLowFreq The low or only, if a single local oscillator frequency LNB is used, LNB local oscillator frequency in MHz.
Number lnbHighFreq If a dual local oscillator frequency LNB is used this is the high LNB local oscillator frequency in MHz. If a single local oscillator frequency LNB is used this argument shall be set to 0.
Number crossoverFrequency Indicates the frequency (in MHz) when to switch between the high- and low-band oscillator frequencies (lnbLowFreq and lnbHighFreq respectively).
Number lnbStartFrequency Indicates the lowest frequency, in MHz, that the LNB can be used for.
Number lnbStartFrequency Indicates the highest frequency, in MHz, that the LNB can be used for.
Number orbitalPosition The StartupInformation class
This class contains information pertaining to the startup characteristics and configuration of the OITF.
Properties
readonly Integer urlSource The mechanism used to obtain the url property. Any of the STARTUP_URL_* values defined in section are valid.
readonly String url NULL
.undefined
.
This section defines the content-on-demand download interfaces for both DRM-protected and non-DRM protected content.
An OITF and a DAE application which have indicated support for downloading content by providing value “true” for element <download>
in their capability profile as specified in section SHALL adhere to the following requirements.
NOTE: Annex clarifies the purpose and the use of these interfaces in more detail.
An OITF SHALL support a non-visual embedded object of type application/oipfDownloadTrigger
, with the following JavaScript API to enable passing a content-access descriptor to an underlying download manager using JavaScript.
The functionality as described in this section is subject to the security model of section .
String registerDownload( String contentAccessDownloadDescriptor, Date downloadStart, Integer priority ) | ||
Description | Send Returns a The OITF SHALL guarantee that download identifiers are unique in relation to recording identifiers and The method returns |
|
Arguments | contentAccessDownloadDescriptor | String formatted according to the Content Access Download Descriptor XML Schema as specified in Annex . |
downloadStart | Optional argument indicating the time at which the download should be started. If the argument is not included, or takes a value of null then the download should start as soon as possible. | |
priority | Optional argument indicating the relative priority of the download with respect to other downloads registered by the same organisation as the calling application. Higher values indicate a higher priority. If the argument is not included then a priority of 0 shall be assigned. |
String registerDownloadURL( String URL, String contentType, Date downloadStart, Integer priority ) | ||
Description | This method triggers the OITF to initiate a download of the content pointed to by the URL and the given content type. The If Note that if the Content Access Download Descriptor contains multiple content items to be downloaded, the associated Download objects for each of these content items SHALL have the same value for the “id” value. The associated Download objects can be retrieved through method getDownloads() as defined in section . Returns a String value representing a unique identifier to identify the download, if the given arguments are acceptable by the OITF to trigger a download. If the OITF supports the application/oipfDownloadManager as specified in section , this SHALL be the value of the “id” attribute of the associated Download object(s).
The OITF SHALL guarantee that download identifiers are unique in relation to recording identifiers and The method returns |
|
Arguments | URL | The URL from which the content can be fetched. |
contentType | The type of content referred to by the URL attribute. The contentType can be used to evaluate if the content type is part of the list of supported content types of the OITF. | |
downloadStart | Optional argument indicating the time at which the download should be started. If the argument is not included, or takes a value of null then the download should start as soon as possible. | |
priority | Optional argument indicating the relative priority of the download with respect to other downloads registered by the same organisation as the calling application. Higher values indicate a higher priority. If the argument is not included then a priority of 0 shall be assigned. |
Integer checkDownloadPossible( Integer sizeInBytes ) | ||||||||||
Description | Checks whether a download of a given Possible return values are:
| |||||||||
Arguments | sizeInBytes | Integer value with the given size of the download in bytes. |
If an OITF has indicated support for both BCG metadata (i.e. by giving element <clientMetadata>
value “true
” and a “type
” attribute with value “bcg
”), and the download management APIs defined in section (i.e. by giving attribute “manageDownloads
” of the <download>
element a value unequal to “none
”) in the client capability description, then the following additional method SHALL be supported by the application/oipfDownloadTrigger object defined in section .
The functionality as described in this section is subject to the security model of section
.String registerDownloadFromCRID( String CRID, String IMI, Date downloadStart, Integer priority ) | ||
Description | Send The OITF SHALL guarantee that download identifiers are unique in relation to recording identifiers and The method returns The values of the | |
Arguments | CRID | The TV-Anytime Content reference ID that points to the general information about the item to download that does not change regardless of how the content is published or broadcast. |
IMI | The TV-Anytime Instance Metadata ID that points to the specific information related to the item to download, such as content location, usage rules (pay-per-view, etc.) and delivery parameters (e.g. video format). | |
downloadStart | Optional argument indicating the time at which the download should be started. If the argument is not included, or takes a value of null then the download should start as soon as possible. | |
priority | Optional argument indicating the relative priority of the download with respect to other downloads registered by the same organisation as the calling application. Higher values indicate a higher priority. If the argument is not included then a priority of 0 shall be assigned. |
In a managed deployment, privileged applications may need access to the download management functionality in a CoD system. This access may be required to implement a UI to the download manager, to queue a download or to display the progress of a specific download. OITFs SHOULD support an “application/oipfDownloadManager
” object with the following interface.
Clients supporting the download management APIs as specified in this section SHALL indicate this by adding the attribute “manageDownloads
” to the <download>
element with a value unequal to “none
” in the client capability description as defined in section .
The functionality as described in this section is subject to the security model of section .
The following state machine provides an overview of the state changes that are possible in the download manager. The states reflect the changes signalled to applications via the onDownloadStateChange event handler.
Note that newly-registered downloads may pre-empt downloads which are currently in progress, if they have a higher priority than in-progress downloads. This may cause downloads to be paused or resumed without application intervention.
function onDownloadStateChange( Download item, Integer state, Integer reason ) | ||||||||||||||||||||||||||
The function that is called when the status of a download has changed. The specified function is called with three arguments item, state and reason, which are defined as follows:
|
readonly DiscInfo discInfo |
Get information about the status of the local storage device. The DiscInfo class is defined in section . |
readonly Integer hasReserved |
Returns the size (in megabytes) of any current reservation for the applications from the same organisation as the calling application otherwise -1. |
readonly Integer allocated |
Returns the size (in megabytes) of any current reservation for the applications from the same organisation as the calling application otherwise -1. |
Boolean pause( Download download ) | ||
Description | Pause an in-progress, queued or stalled download and return For completed or failed downloads, this operation SHALL return |
|
Arguments | download | The download to be paused. |
Boolean resume( Download download ) | ||
Description | Resume a paused download. If the download is not paused, this operation SHALL return false . |
|
Arguments | download | The download to be resumed. |
Boolean remove( Download download ) | ||
Description | Remove the download and any data and media content associated with it and return As a side effect of this method, all properties on download SHALL be set to undefined. Any method calls subsequently performed by an application which pass download as an argument SHALL return If an A/V Control object is referring to the indicated download for playback then the state of the A/V Control object SHALL be automatically changed to state 6 (the error state). | |
Arguments | download | The download to be deleted. |
DownloadCollection getDownloads( String id ) | ||
Description | Returns a collection of downloads, for which the value of the Download.id property corresponds to the given For downloads initiated from registerDownloadURL() with a contentType value “ If the value of | |
Arguments | id | Optional argument identifying the downloads to be retrieved. If present and not null , this is an identifier corresponding to the “id” attribute of zero or more Download objects. If the value of id is null , or the argument is not included, all downloads for the scope indicated by the manageDownloads attribute in the capability description are returned. |
DownloadCollection createFilteredList( Boolean currentDomain, Integer states ) | ||||||||||
Description | Create a filtered list of downloads. Returns a subset of downloads that are managed by the receiver. The
The | |||||||||
Arguments | currentDomain | Flag indicating whether downloads from other domains SHALL be added to the list. | ||||||||
states | Indicates that states of downloads that should be included in the returned list. |
Boolean updateRegisteredDownload( Download download, String newURL ) | ||
Description | The method If the download is already in progress or paused (indicated by a state property value of 4), it SHALL be stopped. The download SHALL continue from the last byte received during the previous download. If the state property of the If the state property of the If the state property of the | |
Arguments | download | The download object to be updated. |
newURL | The new URL from which the content can be retrieved. |
Integer reserve( Integer bytes ) | ||
Description | Requests the reservation of space for downloads to be made by applications from the same organization as the calling application. Reservation is OPTIONAL for applications to use and applications may use the Download API without reserving space in advance. If there is already a reservation for the calling application's organization, this requests adjusting the reservation to the new value. If a call to reserve shrinks an already existing reservation then the application SHOULD ensure that the new size is sufficient for all the completed, in progress and requested downloads by applications from the calling application's organization. The OITF SHALL refuse to shrink the reservation if this has not been done. This specification intentionally does not define the criteria that are used in deciding whether or not to make or adjust a reservation. Either the OITF or the end-user MAY cancel a reservation completely, shrink one to recover some or all of the free space in the reservation or expand it. This specification intentionally does not define circumstances when this may happen. If a request to reserve space is granted to an organisation then applications from that organisation SHALL have the reserved space available to them for downloads. Attempts to use more than the reserved space SHALL fail. A reservation is cancelled by calling this method with size zero. Returns one of the RESERVE_ constants defined in section below. | |
Arguments | bytes | The number of bytes to reserve. |
For the intrinsic event “onDownloadStateChange”, a corresponding DOM event SHALL be generated, in the following manner:
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onDownloadStateChange | DownloadStateChange | Bubbles: No Cancellable: No Context Info: item , state , reason
|
NOTE: the above DOM event is directly dispatched to the event target, and will not bubble nor capture. Applications SHOULD NOT rely on receiving a DownloadStateChange
event during the bubbling or the capturing phase. Applications that use DOM event handlers SHALL call the addEventListener()
method on the application/oipfDownloadManager object. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
Name | Use |
---|---|
RESERVE_OK | Reservation succeeded. |
RESERVE_NEVER | Reservations by the calling application will never succeed. |
RESERVE_USER_INTERVENTION_REQD | Reservation failed and user intervention is required. This result SHALL only be returned by OITFs that include a platform provided UI enabling end-users to manage storage. RESERVE_TOO_LARGE SHALL be returned in preference to this if both apply. |
RESERVE_USER_DECLINED | Reservation failed as the user was asked to approve this request and declined. |
RESERVE_TOO_LARGE | Reservation failed as the size requested was larger than what is permitted by the OITF. |
RESERVE_SMALLER_THAN_USED | Request to shrink an already existing reservation failed as the requested size is smaller than the space currently used from the reservation. |
RESERVE_UNKNOWN | Reservation failed for another reason. |
A Download
object being made available by the application/oipfDownloadManager embedded object represents a content item that has either been downloaded from a remote server or is in the process of being downloaded.
If the ID of a download is a TV-Anytime CRID, then the values of the name, description and parentalRatings properties SHALL be set by the OITF based on the metadata provided for the item matching that CRID.
In order to preserve backwards compatibility with already existing DAE content the JavaScript toString() method SHALL return the Download.id for Download objects.
readonly Integer totalSize |
The total size (in bytes) of the download. |
readonly Integer state | ||||||||||||||
The current state of the download. When this changes, a DownloadStateChange event SHALL be generated. Valid values are:
Note: these values are used as a bitfield in the DownloadManager.createFilteredList() method. |
readonly Integer reason | ||||||||||||
The reason property is only valid if the value of the state property is 8 (download failed).
If no error has occurred, this argument SHALL take the value |
readonly Integer amountDownloaded |
The amount of data that has been downloaded returned in bytes, or zero if no data has been downloaded. |
readonly Integer currentBitRate |
The bitrate (in bits per second) at which the download is currently transferred. This value is non-zero only when the Download object is in state 2 (in progress). If this is unknown the value of this property SHALL be undefined . |
String name |
The name of the download or If the Content Access Download Descriptor is not specified then the property may be set by the origin site. Note that the property may only be set by the site that initiated the download. The DAE application may store data related to the Download. The OITF SHALL support a minimum of 200 bytes for the property. If DAE application attempts to store a string larger than the available size the OITF SHALL set the property to NULL. The maximum length of the property value is implementation dependent. |
readonly String id |
The ID of the download as determined by the OITF. |
readonly String uri |
A uri identifying the content item in local storage according to [[!RFC3986]]. The format of the URI is outside the scope of this specification except that:
|
readonly String contentURL |
The URL the content is being fetched from, or undefined if this information is not available. |
readonly String contentURL |
A description of the download or undefined if this information is not present. In case the download is triggered through a Content Access Download Descriptor, this corresponds to the value for the If the Content Access Download Descriptor is not specified the property may be set by the origin site. Note that the property may only be set by the site that initiated the download. The DAE application may store data related to the Download. The OITF SHALL support a minimum of 2000 bytes for the property. If DAE application attempts to store a string larger than the available size the OITF SHALL set the property to NULL. The maximum length of the property value is implementation dependent. |
readonly ParentalRatingCollection parentalRatings |
The parental rating collection related to the downloaded content item, or undefined if this information is not present. In case the download is triggered through a Content Access Download Descriptor, this corresponds to the value for the <ParentalRating> element in the Content Access Download Descriptor, or undefined if this element is not present. |
readonly DRMControlInfoCollection drmControl |
The DRMControlInformation object corresponding to the DRM Control information of the downloaded content item, or undefined if this information is not present. In case the download is triggered through a Content Access Download Descriptor, this corresponds to the value for the <DRMControlInformation> element associated with the same DRMSystemID of the selected <ContentURL> , or is undefined if this information is not present.
The related DRMControlInformation object is defined in section .
|
readonly Date startTime |
The time that the download is scheduled to start (in the case of scheduled downloads) or undefined if no start time was set. |
readonly Integer timeElapsed |
The time (in seconds) that has elapsed since the download of the item was started. The elapsed time SHALL be based on the time spent in the in-progress and stalled download states. This SHALL NOT include any time the item spent queued for download. |
readonly Integer timeRemaining |
The estimated time remaining (in seconds) for the download to complete. The estimated time SHALL be based on the time spent in the in-progress and stalled download states. The estimate SHALL NOT include any time the item spent queued for download or paused. If an estimate cannot be calculated, the value of this property SHALL be undefined . |
readonly String transferType |
In case the download was triggered through a Content Access Download Descriptor, this is the value of property TransferType of the selected <ContentURL> . In the case where the download was not triggered through a Content Access Download Descriptor, the OITF is responsible for returning either the value “playable_download ” or “full_download ”, based on criteria defined by the OITF. |
readonly String originsite |
In the case where the download was triggered through a Content Access Download Descriptor, this is the value of element <OriginSite> . In case the download was not triggered through a Content Access Download Descriptor, this is the FQDN of the site that initiated the download. |
readonly String originSiteName |
In case the download is triggered through a Content Access Download Descriptor, this is the value of element <OriginSiteName> , or undefined if this information is not present. In case the download is not triggered through a Content Access Download Descriptor, this property is undefined . |
String contentID |
A unique identification of the content item relative to originSite. In case the download is triggered through a Content Access Download Descriptor, and a If the Content Access Download Descriptor is not specified the property may be set by the originSite. Note that the property may only be set by the site that initiated the download. The DAE application may store data related to the Download. The OITF SHALL support a minimum of 2000 bytes for the property. If DAE application attempts to store a string larger than the available size the OITF SHALL set the property to NULL. The maximum length of the property value is implementation dependent. |
String iconURL |
The URL of an image that provides a visual representation of the item that is being downloaded. In the case where the download was triggered a Content Access Download Descriptor, this is the value of element <IconURL> , or undefined if this element is not present. In the case where the download was not triggered through a content access descriptor document, this property is undefined . |
readonly Document metadata |
For downloads registered through a Content Access Download Descriptor, this function SHALL return the contents of the Content Access Download Descriptor as an XML Document object using the syntax as defined in section without using any namespace definitions. For downloads registered using a URL, the value of this property SHALL be null. |
readonly Integer priority |
The relative priority of the download with respect to other downloads registered by that application. Higher values indicate a higher priority. |
readonly Integer suspendedByTerminal |
Flag indicating whether the download has been paused automatically by the OITF, either because the download has been pre-empted by higher priority downloads or because the number of simultaneous downloads supported by the OITF has been exceeded. |
typedef Collection<Download> DownloadCollectionThe
DownloadCollection
class represents a collection of Download objects. See Annex for the definition of the collection template.
DRMControlInformation
object represents the DRM Control information structure defined in section 3.3.2 of [[.OIPF_META2]].
readonly String drmType |
URN containing the decimal number format of the DVB CASystemID, prefixed with the string "urn:dvb:casystemid: ". For example, the hexadecimal value 0x4AF4 is assigned as the CASystemID for Marlin by DVB, and so for Marlin the value of this property would be “urn:dvb:casystemid:19188 ”. |
readonly String rightsIssuerURL |
A URL used by OITF to obtain rights for this content item. |
readonly String silentRightsURL |
A URL used by OITF to obtain rights silently, e.g. a Marlin Action Token. |
readonly String drmContentID |
DRM Content ID for CoD or scheduled content item, e.g. the Marlin Content ID. |
readonly String previewRightsURL |
A URL used by OITF to obtain rights silently for preview of this content item, e.g. a Marlin Action Token. |
readonly String drmPrivateData |
Private data for the DRM scheme indicated in drmType to be applied for this content item. Private DRM Data is actually structured as an XML document whose schema is specific to the considered DRM system. One example is Marlin DRM private data schema defined in [[.OIPF_CSP2]]. |
readonly Boolean doNotRecord |
A flag indicating whether this content item is recordable or not. |
readonly Boolean doNotTimeShift |
A flag indicating if this content item is allowed for time shift play back. |
typedef Collection<DRMControlInformation> DRMControlInfoCollectionThe
DRMControlInfoCollection
class represents a collection of DRMControlInformation objects. See Annex for the definition of the collection template.
<clientMetadata>
with value “true
” and a “type
” attribute with value “bcg
” in the capability description and MAY apply for OITFs that have indicated <clientMetadata>
with value “true
” and a “type
” attribute with value “dvb-si
”
OITFs that have indicated <clientMetadata>
with value “true
” and a “type
” attribute with value “bcg
” SHALL implement an “application/oipfCodManager
” embedded object with the following interface.
Content is organised into catalogues, where each catalogue contains a hierarchy of folders that are used to organise individual content items. The structure of the catalogue SHALL be determined by the server managing that catalogue and SHALL be reflected in the structure of the metadata passed to the OITF.
The three types of content in a CoD catalogue are:
The CODAsset, CODFolder and CODService classes define a type property that allows these classes to be distinguished by applications. For each class, this property SHALL take the value defined below:
Class | Value |
---|---|
CODFolder | 0 |
CODAsset | 1 |
CODService | 2 |
This specification defines the mapping between the CoD API and BCG metadata. Mappings between the CoD API and other CoD metadata sources are not specified in this document.
readonly ContentCatalogueCollection catalogues |
A collection of all available CoD catalogues, as listed in an SD&S BCG Discovery record. |
function onContentCatalogueEvent( Integer action ) |
This function is the DOM 0 event handler for events relating to changes in a content catalogue collection. The specified function is called with the argument action :
|
function onContentAction( Integer action, Integer result, Object item, ContentCatalogue catalogue ) | ||||||||||||||||
This function is the DOM 0 event handler for events relating to actions carried out on an item in a content catalogue. The specified function is called with the following arguments:
|
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onContentCatalogueEvent | ContentCatalogueEvent | Bubbles: No Cancellable: No Context Info: action |
onContentAction | ContentAction | Bubbles: No Cancellable: No Context Info: action , result , item , catalogue |
NOTE: the above DOM events are directly dispatched to the event target, and will not bubble nor capture. Applications SHOULD NOT rely on receiving the events listed above during the bubbling or the capturing phase. Applications that use DOM event handlers SHALL call the addEventListener()
method on the LocalSystem
object. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
typedef Collection<ContentCatalogue> ContentCatalogueCollectionThe
ContentCatalogueCollection
class represents a collection of ContentCatalogue objects. See Annex for the definition of the collection template.
A ContentCatalogue
represents a content catalogue for a content on demand service.
To receive events relating to operations on items in a catalogue, applications MAY add listeners for “ContentAction
” events to the application/oipfCodManager object.
readonly String name |
The name of the content catalogue that should be displayed to the user. The value of this property is given by the Name element in the catalogue's BCG discovery record. |
readonly CODFolder rootFolder |
The root folder of the content catalogue. |
CODFolder getPurchaseHistory() | |
Description | Get the list of items that have been purchased from the catalogue by the current user, including currently active rentals. Items in this list will be derived from children of the BCG |
CODFolder
represents a folder in a CoD catalogue. Folders may contain other folders, and an asset may be present in more than one folder.
Because a content list may contain a large number of items, the contents of the list are made available on demand using a paging model. Applications MAY request the contents of the list in 'pages' of an arbitrary size. The data SHALL be fetched from the appropriate source, and application SHALL be notified when the data is available.
Each folder is described by a GroupInformation
element in the BCG Group Information Table.
readonly Integer type |
The type of the item, used to distinguish between the types of objects that may be contained in a folder in a CoD catalogue. This SHALL always have the value 0 for folders. |
readonly String uri |
The URI used to refer to the folder. The value of this property is given by the GroupId attribute of the GroupInformation element representing this folder. |
readonly String name |
The name of the folder. The value of this property is given by the Title element that is a descendant of the GroupInformation element representing this folder. |
readonly String description |
A description of the folder, for display to an end user. The value of this property is given by the Synopsis element that is a descendant of the GroupInformation element representing this folder. |
readonly String thumbnailUri |
The URI of an image associated with this folder.
For assets whose BCG description contains a |
readonly Integer length |
The number of items in the current page. If getPage() has not yet been called, the value of this property SHALL be undefined . |
readonly Integer currentPage |
The page number of the currently-available results, as specified in the last call to getPage(). If getPage() has not yet been called, the value of this property SHALL be undefined . |
readonly Integer pageSize |
The number of items that were requested from the content catalogue in a call to getPage(). This MAY be different form the number of items that are available (e.g. the last page in the collection). If getPage() has not yet been called, the value of this property SHALL be |
readonly Integer totalSize |
The total number of items in the folder. This MAY be The value of this property may be given by the |
Object item( Integer index ) | ||
Description | Return the item at position index in the current page, or Applications SHALL be able to access items in the collection using array notation instead of calling this method directly. | |
Arguments | index | The index into the collection. |
void getPage( Integer page, Integer pageSize ) | ||
Description | Retrieve one page of the folder's contents. The application SHALL be notified by an event targeted at the folder's parent content catalogue when the data is available. Calls to this method SHALL cancel any outstanding requests. | |
Arguments | page | The number of the page for which data should be retrieved, indexed from zero. |
pageSize | The size of the page. |
void abort( ) | |
Description | Abort the current request for a new page of folder contents. Any results for this folder SHALL be removed (i.e. the value of the length property will be 0 and any calls to the item() method SHALL return |
The CODAsset
represents a piece of CoD content that can be purchased and played. A CODAsset
object MAY refer to a bundle of content items that are purchased together but which can only be played individually.
Some fields of a CODAsset
object MAY not be populated until an application requests them; in this case the data MAY be fetched asynchronously from a server. Fields where the data has not been fetched from the server SHALL have a value of undefined
. Fields for which data is not available on the server SHALL have a value of null
.
Note: The lookupMetadata()
method has been removed from this class.
readonly Integer type |
The type of the item, used to distinguish between the types of objects that may be contained in a folder in a CoD catalogue. This property SHALL always have the value 1 for CoD assets. |
readonly String uri |
The CRID of the asset. The value of this property is given by the programId attribute of the BCG ProgramInformation element that describes the asset. |
readonly String name |
The title of the asset that will be displayed to the user. The value of this property is given by the BCG Title element that is a child of the asset's BasicDescription element. |
readonly String description |
A description of the asset, for display to an end user. The value of this property is given by the BCG Synopsis element that is a child of the asset's BasicDescription element. |
readonly StringCollection genres |
A collection of genres that describe this asset. Genres are represented by the values of any Name elements that are children of Genre elements in the asset's description. |
readonly ParentalRatingCollection parentalratings |
A collection of genres that describe this asset. Genres are represented by the values of any Name elements that are children of Genre elements in the asset's description. |
readonly Boolean blocked |
Flag indicating whether the asset is blocked due to parental control settings (i.e. whether its parental rating value exceeds the current system threshold). |
readonly Boolean locked |
Flag indicating whether the current state of the parental control system prevents the asset from being viewed (e.g. a correct parental control PIN has not been entered to allow the item to be viewed). |
readonly String thumbnailUri |
The URI of an image associated with this asset. For assets whose BCG description contains a For assets without an appropriate |
readonly String price |
The price of the asset, in a form that can be displayed to the user. The value of this property is the concatenation of the value of the For example, a Price element of <Price currency="JPY">500</Price>would give the value 500 JPY for this field. Implementations MAY replace the currency code with the appropriate currency symbol (e.g. ¥ ). |
readonly Integer rentalPeriod |
The period for which the asset can be rented, in hours. For assets descriptions containing a |
readonly Integer playCount |
The number of plays allowed for this asset when it is purchased. For assets descriptions containing a |
readonly Integer duration |
The duration of the asset, in seconds. The value of this property is given by the BCG Duration element that is a child of the asset's BasicDescription element. |
readonly String previewUri |
The URI used to refer to a preview of the asset. For assets whose BCG description contains a For assets without an appropriate |
readonly BookmarkCollection bookmarks |
A collection of the bookmarks set in a recording. If no bookmarks are set, the collection SHALL be empty. |
Boolean isReady( ) | |
Description | Check whether sufficient information is available to make a purchase or play the asset. Due to the asynchronous nature of CoD catalogues, not all of the information required to play or purchase a CoD asset may have been received by the OITF at any given time. If all of the required information is available, this method SHALL return |
The CODService class is a subclass of CODFolder that represents a subscription CoD service. A subscription CoD service is similar to a folder, except that:
A CODService MAY contain a number of assets, folders and services.
Note: The lookupMetadata()
method and uid
property has been removed from this class.
readonly Integer length |
The number of items in the current page of the service. |
readonly Integer currentPage |
The page number of the currently-available results, as specified in the last call to getPage(). If getPage() has not yet been called, the value of this property SHALL be undefined . |
readonly Integer pageSize |
The number of items that were requested from the content catalogue in a call to getPage(). This MAY be different from the number of items that are available (e.g. the last page in the collection). If getPage() has not yet been called, the value of this property SHALL be |
readonly Integer totalSize |
The total number of items in the service. This MAY be undefined until getPage() has been called. The value of this property may be given by the |
readonly Integer type |
The type of the item, used to distinguish between the types of objects that may be contained in a folder in a CoD catalogue. This property SHALL always have the value 2 for a CoD service. |
readonly String uri |
The URI used to refer to the service. The value of this property is given by the BCG ServiceURL element that is a child of the ServiceInformation element that describes the service. |
readonly String name |
The name of the service that will be displayed to the user. The value of this property is given by the BCG Name element that is a child of the ServiceInformation element that describes the service. |
readonly String description |
A description of the service, for display to an end user. The value of this property is given by the BCG ServiceDescritpion element that is a child of the ServiceInformation element that describes the service. |
readonly String thumbnailUri |
The URI of an image associated with this service. The value of this property is derived from the value of the first Logo element that is a child of the BCG Alternatively, for services whose BCG description contains a For assets without an appropriate |
readonly String previewUri |
The URI used to refer to a preview of the content. For services whose BCG description contains a For assets without an appropriate |
Boolean isReady( ) | |
Description | Check whether sufficient information is available to make a purchase. Due to the asynchronous nature of CoD catalogues, not all of the information required to play or purchase a CoD service may have been received by the OITF at any given time. If all of the required information is available, this method SHALL return |
Object item( Integer index ) | ||
Description | Return the item at position index in the current page, or Applications SHALL be able to access items in the collection using array notation instead of calling this method directly. | |
Arguments | index | The index into the collection. |
void getPage( Integer page, Integer pageSize ) | ||
Description | Retrieve one page of the services contents. The application SHALL be notified by an event targeted at the services parent content catalogue when the data is available. Calls to this method SHALL cancel any outstanding requests. | |
Arguments | page | The number of the page for which data should be retrieved, indexed from zero. |
pageSize | The size of the page. |
void abort( ) | |
Description | Abort the current request for a new page of folder contents. Any results for this folder SHALL be removed (i.e. the value of the length property will be 0 and any calls to the item() method SHALL return |
The following requirements SHALL apply to OITF and/or server devices which have indicated support for DRM protection by providing one or more <drm>
elements as specified in section :
An OITF SHALL support a non-visual embedded object of type “application/oipfDrmAgent
”, with the following JavaScript API, to enable in-session message exchange from the web page with an underlying DRM agent.
Access to the functionality of the application/oipfDrmAgent
embedded object SHALL adhere to the security requirements as defined in section .
Note: Annex provides a clarification to the browser interaction model when dealing with protected content.
function onDRMMessageResult( String msgID, String resultMsg, Integer resultCode ) | ||||||||||||||||||||||||
The function that is called when the underlying DRM agent has a result message to report to the current HTML document as a consequence of a call to sendDRMMessage. The specified function is called with three arguments
|
function onDRMSystemStatusChange( String DRMSystemID ) |
The function that is called when the status of a DRM system changes. The specified function is called with one argument
|
function onDRMSystemMessage( String msg, String DRMSystemID ) |
The function that is called when the underlying DRM system has a message to report to the current HTML document. The specified function is called with two arguments,
|
String sendDRMMessage( String msgType, String msg, String DRMSystemID ) | ||
Description | Send message to the DRM agent, using a message type as defined by the DRM system. Returns a unique ID to identify the message, to be passed as the 'msgID' argument for the callback function registered through onDRMMessageResult. This is an asynchronous method. Applications will be notified of the results of the operation via events dispatched to onDRMMessageResult and corresponding DOM events. | |
Arguments | msgType | A globally unique message type as defined by the DRM system, for example: application/vnd.marlin.drm.actiontoken+xml (i.e. MIME type of Marlin Action Token). Valid values for the msgType parameter include the MIME types described in Annex C of [[.OIPF_CSP2]]. |
msg | The message to be provided to the underlying DRM agent formatted according to the message type as indicated by attribute
Valid format for the | |
DRMSystemID | DRMSystemID as defined by element DRMSystemID in table 9 of section 3.3.2 of [[.OIPF_META2]]. For example, for Marlin, the DRMSystemID value is “ In the case that parameter |
Integer DRMSystemStatus( String DRMSystemID ) | |||||||||||||||||
Description | Returns the status of the indicated DRM system, as defined below:
| ||||||||||||||||
Arguments | DRMSystemID | The DRM System ID of the DRM system that is being queried as defined by the element DRMSystemID in table 9 of section 3.3.2 of [[.OIPF_META2]]. For example, for Marlin, the DRMSystemID value is “urn:dvb:casystemid:19188 ”. |
Boolean canPlayContent( String DRMPrivateData, String DRMSystemID ) | ||
Description | Checks the local availability of a valid license for playing a protected content item. The function returns true if there is a valid license available locally that may allow playing the content. For example the actual playing may be blocked due to other constraints (e.g. video/audio output restrictions on selected output). The DRMPrivateData may be retrieved by the application via a means out of scope of this specification (e.g. retrieved from Service Platform, or from a manifest file). For already downloaded content, the private data may be retrieved via the getDRMPrivateData() method of the Download class. In case the download is triggered through a Content Access Download Descriptor, the private data may be retrieved from the drmControl property. | |
Arguments | DRMPrivateData | DRM proprietary private data. |
DRMSystemID | DRMSystemID as defined by the element DRMSystemID in table 9 of section 3.3.2 of [[.OIPF_META2]]. For example, for Marlin, the DRMSystemID value is “urn:dvb:casystemid:19188 ”. |
Boolean canRecordContent( String DRMPrivateData, String DRMSystemID ) | ||
Description | Checks the local availability of a valid license for recording a protected content item. The function returns true if there is a valid license available locally that may allow recording the content. The DRMPrivateData may be retrieved by the application via a means out of scope of this specification (e.g. retrieved from Service Platform, or from a manifest file). | |
Arguments | DRMPrivateData | DRM proprietary private data. |
DRMSystemID | DRMSystemID as defined by the element DRMSystemID in table9 of section 3.3.2 of [[.OIPF_META2]]. For example, for Marlin, the DRMSystemID value is “urn:dvb:casystemid:19188 ”. |
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onDRMMessageResult | DRMMessageResult | Bubbles: No Cancellable: No Context Info: msgID , resultMsg , resultCode
|
onDRMSystemStatusChange | DRMSystemStatusChange | Bubbles: No Cancellable: No Context Info: DRMSystemID
|
onDRMSystemMessage | DRMSystemMessage | Bubbles: No Cancellable: No Context Info: msg , DRMSystemID
|
addEventListener()
method SHOULD be called on the application/oipfDrmAgent object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
The application/oipfGatewayInfo
object SHALL provide the information of the gateway and subsequently interact with the gateway (e.g. IMS Gateway, Application Gateway, CSPG-CI+ Gateway and CSPG-DTCP Gateway) as defined in section . The OITF SHALL support the gateway discovery and control though the use of the following non-visual embedded object:
<object id="gatewayinfo" type="application/oipfGatewayInfo">
Access to the functionality of the application/oipfGatewayInfo
embedded object is privileged and SHALL adhere to the security requirements defined in section .
readonly Boolean isIGDiscovered |
Readonly property that indicates whether an IMS Gateway is discovered or not. NOTE: This property was formerly referred to as |
readonly Boolean isAGDiscovered |
Readonly property that indicates whether an Application Gateway is discovered or not. NOTE: This property was formerly referred to as |
readonly Boolean isCSPGCIPlusDiscovered |
Readonly property that indicates whether a CSPG-CI+ Gateway is discovered or not. NOTE: This property was formerly referred to as |
readonly Boolean isCSPGDTCPDiscovered |
Readonly property that indicates whether a CSPG-DRCP Gateway is discovered or not. NOTE: This property was formerly referred to as |
readonly String igURL |
Readonly property that indicates the base Gateway's URL for interacting between an OITF and an IMS Gateway. |
readonly String agURL |
Readonly property that indicates the base Gateway's URL for interacting between an OITF and an Application Gateway. |
readonly String cspgDTCPURL |
Readonly property that indicates the base Gateway's URL for interacting between an OITF and an CSPG-DTCP Gateway. NOTE: This property was formerly referred to as |
Integer interval |
Read-write property that specifies the periodic interval time(seconds) to discover the gateways. When the interval property is set, an UPnP Discovery mechanism is executed. |
function onDiscoverIG( ) |
The function that SHALL be called when an IMS Gateway is discovered or lost by the OITF which uses a UPnP Discovery mechanism described in [[.OIPF_PROT2]] section 10.1.1.1. The actual status of the gateway (discovered or not) can be determined by reading the isIGDiscovered property. The specified function is called with no arguments. |
function onDiscoverAG( ) |
The function that SHALL be called when an Application Gateway is discovered or lost by the OITF which uses a UPnP Discovery mechanism described in [[.OIPF_PROT2]] section 10.1.1.2. The actual status of the gateway (discovered or not) can be determined by reading the isIGDiscovered property. The specified function is called with no arguments. |
function onDiscoverCSPGDTCP( ) |
The function that SHALL be called when an CSPG-DTCP Gateway is discovered or lost by the OITF. The CSPG-DTCP gateway SHALL be discovered using a UPnP Discovery mechanism described in [[.OIPF_PROT2]] section 10.1.1.3. The actual status of the gateway (discovered or not) can be determined by reading the isCSPGDTCPDiscovered property. The specified function is called with no arguments. NOTE: This property was formerly referred to as |
readonly Boolean isIGSupported |
Readonly property that indicates whether an IMS Gateway is supported or not. |
readonly Boolean isAGSupported |
Readonly property that indicates whether an Application Gateway is supported or not. |
readonly Boolean isCSPGCIPlusSupported |
Readonly property that indicates whether a CSPG-CI+ Gateway is supported or not. |
readonly Boolean isCSPGDTCPSupported |
Readonly property that indicates whether a CSPG-DTCP Gateway is supported or not. |
function onDiscoverCSPGCIPlus( ) |
The function that SHALL be called when a CSPG-CI+ Gateway is discovered or lost by the OITF (including any change to the DRM systems supported by that gateway). The CSPG-CI+ Gateway SHALL be discovered as defined in [[.OIPF_CSP2]]. The actual status of the gateway (discovered or not) can be determined by reading the isCSPGCIPlusDiscovered property. The specified function is called with no arguments. NOTE: This property was formerly referred to as |
readonly StringCollection CSPGCIPlusDRMType |
Readonly property that indicates the list of CA Systems supported by the CSPG-CI+ Gateway under the form of URN with the DVB CASystemID (16 bit number) in there. Each element of CSPGCIPlusDRMType shall be signalled by prefixing the decimal number format of CA_System_ID with "urn:dvb:casystemid: ". |
Boolean isIGSupportedMethod( String methodName ) | ||
Description | Shall return | |
Arguments | methodName | The name of the method to be checked for support. |
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onDiscoverIG | DiscoverIG | Bubbles: No Cancellable: No |
onDiscoverAG | DiscoverAG | Bubbles: No Cancellable: No |
onDiscoverCSPGDTCP | DiscoverCSPGDTCP | Bubbles: No Cancellable: No |
onDiscoverCSPGCIPlus | DiscoverCSPGCIPlus | Bubbles: No Cancellable: No |
addEventListener()
method on the application/oipfGatewayInfo
object. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
If an OITF has indicated support for the control of its Communication Services functionality by a server by stating <communicationServices>true</communicationServices>
as defined in section in its capability description, the OITF SHALL support communication services through the use of the following non-visual object:
<object type="application/oipfCommunicationServices"/>
The Communication Services API provides the necessary JavaScript methods to register new users. It also provides methods to register users (registerUser), along with the supported feature tags. A method getRegisteredUsers is also defined to view all the registered users. A method getAllUsers retrieves all users provisioned in the IG. Once registered it is possible to switch users for using communication services by using method setUser.
A property is defined to view the current user to be used for a service (currentUser).
In order to handle the out-of-session communication services notifications, namely, the new dialogues, there is a method for subscribing to these events (subscribeNotification). All new dialogues are communicated through a callback function (onNotification) to the application instance performing the subscription.
The Communication Services APIs apply only to privileged applications and SHALL adhere to the security model as defined in section .
Name | Value | Use |
---|---|---|
STATE_REGISTERED | 0 | Specifies that the user has been successfully registered (not subscribed to registration event). This also represents the state when the registration event subscription has been terminated for some reason by network. |
STATE_REGISTERED_SUBSCRIPTION_PENDING | 1 | Indicates that user is registered successfully but the subscription-state for the registration event indicates a status of "pending". |
STATE_REGISTERED_SUBSCRIPTION_ACTIVE | 2 | Specifies that the user has been successfully registered and subscribed to registration event (i.e. subscription-state for registration event indicates a status of "active"). |
STATE_DEREGISTERED | 3 | Specifies that the user has been successfully deregistered. This can be result of network initiated/locally initiated deregistration request. |
STATE_FAILURE | 4 | Represents a failure condition. |
function onNotification( String responseHeaders, String msgText, Document msgXML ) |
This function is called on the application which called subscribeNotification when an unsolicited notification arrives. The application will be notified of all notifications corresponding to any of the subscribed-to feature tags regardless of which application subscribed to it. The specified function is called with 3 arguments.
|
function onNotificationResult( Integer resultMsg ) | |||||||||||||||
This function is called with return result from the subscribeNotification method. This function is not invoked in the case when there is no re-registration as part of subscribeNotification. The specified function is called with a single argument —
|
function onRegistrationContextUpdate( String user, Integer state, Integer errorCode ) | ||||||||||||
This function is called with return result from the methods registerUser and deRegisterUser. In addition, the function is also called whenever there is an update to the registration status of specified user. The specified function is called with 3 arguments —
|
readonly UserData currentUser |
The current user property represents the public user identity which is being used or shall be used for HNI-IGI communication. If not set then the default user shall be used or indicated. It shall be set to the default user if a user has not been explicitly set using the setUser() method. |
UserDataCollection getRegisteredUsers( ) | |
Description | Return all the users that are currently registered with the IG. |
void registerUser( String userId, String pin ) | ||
Description | This method performs user registration to the network. Results from this method is sent to the callback method onRegistrationContextUpdate. | |
Arguments | userId | The user identifier represents the public user identity or IMPU. |
pin | The pin is optional and carries the password to be used towards the IG in case of HTTP Digest over HNI-IGI interface or SIP Digest if there is no HNI-IGI. If pin is not specified then the default user password shall be used. The pin used for digest authentication is limited to the HNI-IGI interface with the IG and SHALL NOT impact the HTTP Digest requests from within the DAE application. Support for this parameter is not applicable for non-native HNI-IGI. |
void deRegisterUser( String userId ) | ||
Description | The indicated user is de-registered. Any sessions that may be open are closed. De-registration of default user has no effect nor de-registration of any users registered from a native application in the OITF. Results from this method is sent to the callback method onRegistrationContextUpdate. | |
Arguments | userId | The user identifier represents the public user identity or IMPU. |
UserDataCollection getAllUsers( ) | |
Description | Return all the users that are currently provisioned in the IG. The first entry in the collection is the default user. The users are retrieved according to [[.OIPF_PROT2]] section 5.4.6.4 |
void setUser( String userId ) | ||
Description | When invoked, any ongoing sessions for the current user shall be closed. If setUser is unsuccessful due to user not being registered, it is necessary to first register the user and wait for a successful response to the onRegistrationContextUpdate callback function. If the user gets deregistered (either by the local application or by the network), any ongoing sessions for the user shall be closed. The default user shall be automatically assumed for all services until overridden again by the setUser method. | |
Arguments | userId | The user identifier represents the public user identity or IMPU. |
void subscribeNotification( FeatureTagCollection featureTagCollection, Boolean performUserRegistration ) | ||
Description | This method subscribes for new IMS out-of-session dialogues for the indicated application for the currently active user. The notification shall be notified using onNotification callback method. If the application that made the subscription closes then there is an automatic un-subscription to new notifications. Otherwise it is possible to perform unsubscribeNotification. Any new dialogues shall be notified over the callback method onNotification. | |
Arguments | featureTagCollection | The featureTagCollection object of the DAE application. If the value of this argument is NULL then all dialogs SHALL be reported. |
performUserRegistration | If this is This parameter is ignored in the case when the filtering of notifications is done locally. In this case, the initial registration for active user will include all feature tags. |
void unsubscribeNotification( ) | |
Description | The DAE application calling this method will be de-registered for notifications. Associated feature tag(s) for the DAE application are removed from the featureTagCollection object for the user. A re-registration will be performed for the corresponding user if notifications are not locally filtered. Results from this method is sent to the callback method onNotificationResult. |
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onNotificationResult | NotificationResult | Bubbles: No Cancellable: No Context Info: resultMsg |
onNotification | Notification | Bubbles: No Cancellable: No Context Info: callId , contact , from , to |
onRegistrationContextUpdate | RegistrationContextUpdate | Bubbles: No Cancellable: No Context Info: user , state , errorCode |
addEventListener()
method on the application/oipfCommunicationServices object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
If a client has indicated support for the control of its presence and messaging functionality by a server by stating <presenceMessaging>true</presenceMessaging>
as defined in section in its capability description, the client SHALL support Communication Services through the use of the following non-visual embedded object:
<object type="application/oipfCommunicationServices"/>
The presence and messaging API provides for instant messaging, presence and contact list services. The messages can either be in a chat session using MSRP (see [[.OIPF_PROT2]]) or page mode messages sent without a session. The support of presence and messaging SHALL follow the OMA specification [[!PRES]], [[!IM]].
The Communication Services API SHALL be supported in combined OITF and IG deployment cases. It MAY be supported in other deployment cases. The use of the HNI-IGI interface is OPTIONAL between the OITF and IG when these are co-deployed.
function onIncomingMessage( String fromURI, String msg, Integer cid ) |
The function that is called when an incoming chat message is received for the active user. The specified function is called with 3 arguments:
|
function onContactStatusChange( String remoteURI, Integer state ) |
This function is called when status has changed for a contact in the contact list or a user used with the method subscribeToStatus(). The specified function is called with 2 arguments:
|
function onNewWatcher( String remoteURI ) |
This function is called when a remote URI is requesting watcher authorization of the local user's presentity. The specified function is called with one argument:
|
Integer openChatSession( String toURI ) | ||
Description | Opens a chat session with a remote user. Returns an integer identifier for the chat session to be used when a message is sent in the chat session or to match when incoming message is received. | |
Arguments | toURI | The address of the remote chat user. |
void sendMessageInSession( Integer cid, String msg ) | ||
Description | Sends a new text message in a chat session. The chat can either be started by the user by calling the method openChatSession() or can be a session received in the onIncomingMessage callback function. | |
Arguments | cid | The chat session identifier. |
msg | Text message to send. |
void closeChatSession( Integer cid ) | ||
Description | Closes a chat session. | |
Arguments | cid | The chat session identifier. |
void sendMessage( String toURI, String msg ) | ||
Description | Sends a new text message to a remote peer without starting a session. | |
Arguments | toURI | The address of the remote chat user. |
msg | Text message to send. |
void setStatus( Integer state ) | ||
Description | Sets the presence state of the local user. | |
Arguments | state | Set to 1 if the user is present, and 0 if not. Other values may be defined in the future. |
void subscribeToStatus( String remoteURI ) | ||
Description | Subscribe to status for a remote user. | |
Arguments | remoteURI | The address of the remote user. |
ContactCollection getContacts( ) | |
Description | Get the users contact list. |
void allowContact( String remoteURI ) | ||
Description | Allows the watcher authorization to subscribe to the local user's presentity. | |
Arguments | remoteURI | The address of the remote user. |
void blockContact( String remoteURI ) | ||
Description | Blocks the watcher authorization to subscribe to the local user's presentity. | |
Arguments | remoteURI | The address of the remote user. |
void createContactList( String contactListUri, ContactCollection contacts ) | ||
Description | Creates a contact list. | |
Arguments | contactListUri | The public user identity or IMPU of the contact list. |
contacts | The collection of contact objects representing the members of the list. |
ContactCollection getContacts( String contactListUri ) | ||
Description | Get the users in the specified contact list. | |
Arguments | contactListUri | The public user identity or IMPU of the contact list. |
Boolean addToContactList( String contactListUri, Contact member ) | ||
Description | Updates the specified contact list by adding a new member to that list. | |
Arguments | contactListUri | The public user identity or IMPU of the contact list to be updated. |
member | The new contact to be added to the list. |
Boolean removeFromoContactList( String contactListUri, Contact member ) | ||
Description | Updates the specified contact list by removing specified member from that list. | |
Arguments | contactListUri | The public user identity or IMPU of the contact list to be updated. |
member | The new contact to be removed from the list. |
Boolean deleteContactList( String contactListUri ) | ||
Description | Deletes the specified contact list. | |
Arguments | contactListUri | The public user identity or IMPU of the contact list to be deleted. |
void allowAllContacts( String domain ) | ||
Description | Allows all watchers belonging to specified domain authorization to subscribe to local user's presentity. If null , then all contacts will be allowed. | |
Arguments | domain | Watchers belonging to this domain are authorized to subscribe. If null , then all watchers are authorized to subscribe irrespective of domain. |
void blockAllContacts( String domain ) | ||
Description | Blocks all watchers belonging to specified domain authorization to subscribe to local user's presentity. If null , then all contacts will be blocked. | |
Arguments | domain | Watchers belonging to this domain are denied authorization to subscribe. If null , then all watchers are blocked from subscribing irrespective of domain. |
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onIncomingMessage | IncomingMessage | Bubbles: No Cancellable: No Context Info: fromURI , msg , cid |
onContactStatusChange | ContactStatusChange | Bubbles: No Cancellable: No Context Info: remoteURI , present |
onNewWatcher | NewWatcher | Bubbles: No Cancellable: No Context Info: remoteURI |
Note: these DOM events are directly dispatched to the event target, and will not bubble nor capture. Applications SHOULD NOT rely on receiving these events during the bubbling or the capturing phase. Applications that use DOM event handlers SHALL call the addEventListener()
method on the application/oipfCommunicationServices object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
readonly String userId |
The user identifier represents the public user identity or IMPU. |
readonly FeatureTagCollection featureTags |
The feature tag data is optional. It carries a collection of feature tag objects associated with an application. For example the feature tag may be an ICSI or IARI or a feature tag identifying the service for. an incoming instant messages. The object includes feature tags related to both DAE and native applications in OITF. |
readonly String friendlyName |
The friendly name for the user. Used as display name in outgoing messages. |
typedef Collection<UserData> UserDataCollectionThe
UserDataCollection
class represents a collection of UserData objects. See Annex for the definition of the collection template.
readonly String featureTag |
A string containing a featureTag value associated to an application. The featureTag value may have a value of null when used with the subscribeNotification() method on the application/oipfCommunicationServices object. This indicates that all dialogues are reported. The feature tag SHALL populate the X-OITF- headers as specified in [[!TISPAN]] section 5.6.2, [[!IM]], [[!3GPPTS24.229]], [[!RFC3840]] and [[!RFC3841]]. |
typedef Collection<FeatureTag> FeatureTagCollectionThe
FeatureTagCollection
class represents a collection of FeatureTag objects. See Annex for the definition of the collection template.
String contactId |
The contact identifier represents the public user identity or IMPU used in communication with the contact. |
String friendlyName |
The friendly name for the user. Used as display name in outgoing messages. |
typedef Collection<Contact> ContactCollection
The ContactCollection class represents a collection of Contact objects. See Annex for the definition of the collection template.
In addition to the methods and properties defined for generic collections, the ContactCollection class supports the additional methods defined below.
Boolean remove( String contactId ) | ||
Description | Removes the contact represented by Returns | |
Arguments | contactId | Contact identifier of the user in the contact list. |
Boolean add( Contact contact ) | ||
Description | Adds the contact represented by the Contact object to the users contact list. Returns | |
Arguments | contact | Contact object to be added from users contact list. |
If an OITF has indicated support for full-duplex Voice Telephony Services functionality by a server by stating <telephony_services>true</telephony_services>
, or
<telephony_services video=“false”>true</telephony_services>
, or
<telephony_services video=“true”>true</telephony_services>
as defined in section in its capability description, the OITF SHALL support IMS through the use of the following non-visual embedded object:
<object type="application/oipfCommunicationServices"/>
The full-duplex Voice Telephony Services API provides support for managing the setup and life-cycle of a telephony call session. It also provides the methods to manage the capture devices and the list of preferred codecs to be used.
The full-duplex Voice Telephony Services API MAY be supported in the combined OITF and IG deployment cases as well as the separated OITF and IG case. It MAY be supported in other deployment cases. The use of the HNI-IGI interface is OPTIONAL between the OITF and IG when these are co-deployed.
function onCallEvent( Integer eventType, Integer cid, Integer status, String info ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The function that is called when an event related to the identified call is notified.
The specified function is called with four arguments:
The values of the cid, status and info parameters are defined according to the type of event. Any parameters which are unused for an event SHALL have the value undefined. EVENT_INCOMING_CALL
EVENT_CALL_PROGRESS
EVENT_CALL_RESULT
EVENT_HANGUP
EVENT_SESSION_START
EVENT_SESSION_END
EVENT_SESSION_INCOMING
EVENT_UPDATE_RESULT
EVENT_SESSION_UPDATE
EVENT_ERROR
|
readonly StringCollection callParameters |
The list of call parameters supported. |
Integer call( String toURI, Integer callType ) | |||||||||
Description | Opens a telephony session with a remote user. Returns a unique, locally generated, positive integer identifier for the call session (call session ID). Returns | ||||||||
Arguments | toURI | The address of the remote user. | |||||||
callType | Valid Call Type values are shown in the table below.
|
Integer answer( Integer cid, Integer response ) | |||||||||||
Description | Answers an incoming call. Returns | ||||||||||
Arguments | cid | Call session identifier for the application (Call ID). | |||||||||
response | Valid response values are shown in the table below.
|
Integer hangup( Integer cid ) | ||
Description | Closes a telephony session. Returns | |
Arguments | cid | Call session identifier for the application (Call ID). |
DeviceInfoCollection getDeviceList( Integer deviceType ) | ||||||||
Description | Returns the list of devices installed on the terminal (or connected) for a specific device type. The device in the first position of the returned list is the default device to be used by the terminal. The position of each device is consistent between method invocations as long as no new devices are connected to the OITF or removed. If an error occurs, the method returns | |||||||
Arguments | deviceType | Valid types of device are shown in the table below.
|
Boolean setCaptureDevice( Integer deviceType, Integer deviceID ) | ||||||||
Description | Sets the capture device (for a specific device type) that will be used during the call. This method does not affect currently ongoing call sessions. Returns If the application does not set capture devices (i.e. it does not invoke | |||||||
Arguments | deviceType | Valid types of device are shown in the table below.
| ||||||
deviceID | The specific DeviceInfo object id property (in a DeviceInfoCollection) identifying the capture device that will be used for the call |
CodecInfoCollection getCodecList( Integer streamType ) | ||||||||
Description | Returns the list of codec available on the terminal for a specific stream type. If an error occurs or no codecs are available for the specified stream type, the method returns | |||||||
Arguments | streamType | Valid stream type values are shown in the table below.
|
Boolean setPreferredCodecList( Integer streamType, CodecInfoCollection preferredCodecList ) | ||||||||
Description | Sets a list of preferred codec to be used in the call setup for a specific stream type. Returns | |||||||
Arguments | streamType | Valid stream type values are shown in the table below.
| ||||||
preferredCodecList | List of codecs to be used during the call setup negotiation (ordered by preference) |
String getCallParameter( Integer cid, String parameter ) | |||||||||||||
Description | Returns a parameter value for the call session identified by the | ||||||||||||
Arguments | cid | Call session identifier for the application (Call ID). | |||||||||||
parameter | Mandatory values are shown in the table below. Parameter names are not case sensitive.
|
Boolean setCallParameter( Integer cid, String parameter, String value ) | |||||||||||||
Description | Sets parameter value for the call session identified by the | ||||||||||||
Arguments | cid | Call session identifier for the application (Call ID). | |||||||||||
parameter | Mandatory values are shown in the table below. Parameter names are not case sensitive.
| ||||||||||||
value | The value for the parameter |
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onCallEvent | CallEvent | Bubbles: No Cancellable: No Context Info: eventType , cid , status , info |
Note: these DOM events are directly dispatched to the event target, and will not bubble nor capture. Applications SHOULD NOT rely on receiving these events during the bubbling or the capturing phase. Applications that use DOM event handlers SHALL call the addEventListener()
method on the application/oipfCommunicationServices object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
If an OITF has indicated support for full-duplex Video Telephony Services functionality by a server by stating <telephony_services video="true">true</telephony_services>
as defined in section 9.3.9 in its capability description, the OITF SHALL support communication services through the use of the following non-visual embedded object:
<object type="application/oipfCommunicationServices"/>
The extensions for telephony services provide support for:
When a remote or local video is activated on a target CEA-2014 A/V Control or HTML5 video element, any currently displayed video content on that object is stopped and released. The activated stream is automatically played.
The full-duplex Video Telephony Services API MAY be supported in the combined OITF and IG deployment cases as well as the separated OITF and IG case. It MAY be supported in other deployment cases. The use of the HNI-IGI interface is OPTIONAL between the OITF and IG when these are co-deployed.
Boolean showRemoteVideo( Integer cid, Integer mode, String idVideoCallObject ) | |||||||
Description | Activates or deactivates remote peer video rendering. Returns | ||||||
Arguments | cid | Call session identifier for the application (Call ID). | |||||
mode | Valid values are shown in the table below.
| ||||||
idVideoCallObject | ID attribute associated with the HTML tag of the A/V Control object as defined in section 7.14 or HTML5 video element in which the video frames will be rendered |
Boolean showLocalVideoPreview( Integer cid, Integer mode, String idVideoCallObject ) | |||||||
Description | Activates or deactivates local video preview. This method can be invoked before a call session creation or during an ongoing call session. If | ||||||
Arguments | cid | Call session identifier for the application (Call ID). | |||||
mode | Valid values are shown in the table below.
| ||||||
idVideoCallObject | ID attribute associated with the HTML tag of the A/V Control object as defined in section 7.14 or HTML5 video element in which the video frames will be rendered |
Boolean callUpdate( Integer cid, Integer callType ) | |||||||||
Description | Requests an update for the call session identified by the cid parameter. Returns | ||||||||
Arguments | cid | Call session identifier for the application (Call ID). | |||||||
callType | Valid values are shown in the table below.
|
Boolean callAnswerUpdate( Integer cid, Integer responseUpdate ) | |||||||||
Description | Answers an incoming call. Returns | ||||||||
Arguments | cid | Call session identifier for the application (Call ID). | |||||||
responseUpdate | Valid values are shown in the table below.
|
readonly Integer id |
A unique, implementation dependent identifier for the capture device defined by the local system. The system SHALL guarantee that the id assigned to a device will not change during the life of the application |
readonly Integer deviceType | ||||||
The type of device, valid values are:
|
readonly String deviceName |
The friendly name for the capture device. May be used in user messages. |
readonly String deviceProductName |
The complete name, model number etc. for the capture device. |
typedef Collection<DeviceInfo> DeviceInfoCollection
The DeviceInfoCollection
class represents a collection of DeviceInfo objects. See Annex for the definition of the collection template.
readonly String codecName |
The codec name. |
readonly String mimeType |
The codec mime-type. A list of possible codec mime-types for multimedia telephony supported by the OIPF Solution are listed in Table 6 of [[.OIPF_MEDIA2]]. |
readonly String profile |
The codec profile. Normative definition of a subset of standard codec functionalities. The codec profiles for multimedia telephony supported by the OIPF Solution are listed in section 5.1.3 of [[.OIPF_MEDIA2]]. |
typedef Collection<CodecInfo> CodecInfoCollection
The CodecInfoCollection
class represents a collection of CodecInfo objects. See Annex for the definition of the collection template.
In addition to the methods and properties defined for generic collections, the CodecInfoCollection
class supports the additional properties and methods defined below.
Boolean moveAt( Integer targetIndex, Integer index ) | ||
Description | Moves a CodecInfo item from the specified | |
Arguments | targetIndex | The index in the list to which the item should be moved. |
index | The index in the list of the item that will be moved. |
Boolean remove( Integer index ) | ||
Description | Removes the item at the specified index from the | |
Arguments | index | The index of the item to be removed. |
This section defines APIs related to parental ratings and parental control.
Sections through define a new JavaScript embedded object “application/oipfParentalControlManager
” and the related ParentalRatingScheme and ParentalRatingSchemeCollection objects, which allows applications to construct a new parental rating scheme (and a parental rating value using that scheme), and to temporarily enable or disable viewing of a content item. These APIs SHALL be supported if an OITF supports parental controls as indicated by value “true
” for element <parentalcontrol>
(as defined by section ) in its capability profile.
Sections and define the ParentalRating and ParentalRatingCollection objects. These objects are used/referenced by various other objects, such as the Programme object as defined in section to indicate a particular parental rating. The support for these objects depends on the support for the sections in which these are used.
If an OITF supports parental controls as indicated by value “true
” for element <parentalcontrol>
(as defined by section ) in its capability profile, the OITF SHALL support the application/oipfParentalControlManager
object with the following interface.
The following example shows a possible usage scenario for the application/oipfParentalControlManager
, i.e. to add a new parental rating scheme to the parentalRatingSchemes collection:
//get a reference to the parental control manager object var pcManager = document.getElementById("pcmanager"); // add a new rating scheme — in this case, the MPAA rating scheme pcManager.parentalRatingSchemes.addParentalRatingScheme( "urn:mpeg:mpeg7:cs:MPAAParentalRatingCS:2001", "G,PG,PG-13,R,NC-17,NR" );
The following example shows a possible usage scenario for the application/oipfParentalControlManager
, i.e. to temporarily unblock a blocked content item (e.g. after asking the user to enter the parental control pin):
// If a content item is blocked, the event “onParentalRatingChange” can be captured, and // the setParentalControlStatus() method can be used to temporarily unblock the content // (e.g. after asking the user to enter the parental control pin) function askForPin() { ... } ... //get a reference to the A/V player object var avPlayer = document.getElementById("avPlayer"); avPlayer.onParentalRatingChange = function() { var pin=askForPin();pcManager.setParentalControlStatus(pin, false)};
readonly ParentalRatingSchemeCollection parentalRatingSchemes |
A reference to the collection of rating schemes known by the OITF. |
readonly Boolean isPINEntryLocked |
The lockout status of the parental control PIN. If the incorrect PIN has been entered too many times in the configured timeout period, parental control PIN entry SHALL be locked out for a period of time determined by the OITF. |
Integer setParentalControlStatus( String pcPIN, Boolean enable ) | ||||||||||
Description | As defined in [[.OIPF_CSP2]], the OITF shall prevent the consumption of a programme when its parental rating doesn't meet the parental rating criterion currently defined in the OITF. Calling this method with Setting the parental control status using this method SHALL set the status until the consumption of any of all the blocked programmes terminates (e.g. until the content item being played is changed), or another call to the Setting the parental control status using this method has the following effect; for the Programme and Channel objects as defined in sections and , the This operation to temporarily disable parental rating control SHALL be protected by the parental control PIN (i.e. through the pcPIN argument). The return value indicates the success of the operation, and SHALL take one of the following values:
| |||||||||
Arguments | pcPIN | The parental control PIN. | ||||||||
enable | Flag indicating whether parental control should be enabled. |
Boolean getParentalControlStatus( ) | |
Description | Returns a flag indicating the temporary parental control status set by setParentalControlStatus(). Note that the returned status covers parental control functionality related to all rating schemes, not only the rating scheme upon which the method is called. |
Boolean getBlockUnrated( ) | |
Description | Returns a flag indicating whether or not the OITF has been configured by the user to block content for which a parental rating is absent. |
Integer setParentalControlPIN( String oldPcPIN, String newPcPIN ) | ||||||||||
Description | Set the parental control PIN. This operation SHALL be protected by the parental control PIN (if PIN entry is enabled). The return value indicates the success of the operation, and SHALL take one of the following values:
| |||||||||
Arguments | oldPcPIN | The current parental control PIN. | ||||||||
newPcPIN | The new value for the parental control PIN. |
Integer unlockWithParentalControlPIN( String pcPIN, Object target ) | ||||||||||||
Description | Unlock the object specified by target for viewing if The object type of target can be one of the following:
Otherwise an Invalid object error code SHALL be returned. The return value indicates the success of the operation, and SHALL take the following values:
| |||||||||||
Arguments | pcPIN | The parental control PIN. | ||||||||||
target | The object to be unlocked. |
Integer verifyParentalControlPIN( String pcPIN ) | ||||||||||
Description | Verify that the PIN specified by This method will return one of the following values:
| |||||||||
Arguments | pcPIN | The parental control PIN to be verified. |
Integer setBlockUnrated( String pcPIN, Boolean block ) | ||||||||||
Description | Set whether programmes for which no parental rating has been retrieved from the metadata client nor defined by the service provider should be blocked automatically by the terminal. This operation SHALL be protected by the parental control PIN (if PIN entry is enabled). The return value indicates the success of the operation, and SHALL take one of the following values:
| |||||||||
Arguments | pcPIN | The parental control PIN. | ||||||||
block | Flag indicating whether programmes SHALL be blocked. |
typedef Collection<String> ParentalRatingScheme
A ParentalRatingScheme
describes a single parental rating scheme that may be in use for rating content, e.g. the MPAA or BBFC rating schemes. It is a collection of strings representing rating values, which next to the properties and methods defined below SHALL support the array notation to access the rating values in this collection. For the natively OITF supported parental rating systems the values SHALL be ordered by the OITF to allow the rating values to be compared in the manner as defined for property threshold for the respective parental rating system. Using a threshold as defined in this API may not necessarily be the proper way in which parental rating filtering is applied on the OITF, e.g. the US FCC requirements take precedence for device to be imported to the US.
The parental rating schemes supported by a receiver MAY vary between deployments.
See Annex for the definition of the collection template. In addition to the methods and properties defined for generic collections, the The unique name that identifies the parental rating scheme. Valid strings include: NOTE: If the broadcaster defined range from 0x10 to 0xff is used then that would be a different parental rating scheme and not " If the value of “ The parental rating threshold that is currently in use by the OITF's parental control system for this rating scheme, which is encoded as a ParentalRating object in the following manner: If the value of the “ If the value of the “ Note that the ParentalRatingScheme
class supports the additional properties and methods defined below.
Properties
readonly String name
uri
” attribute of one of the parental rating <ClassificationScheme>
elements in [[!MPEG-7]].
urn:oipf:GermanyFSKCS
” to represent the GermanyFSK rating scheme as defined in [[.OIPF_META2]].dvb-si
”: this means that the scheme of a minimum recommended age encoded as per ratings 0x01 to 0x0f in the parental rating descriptor from [[!EN300468]], is used to represent the parental rating values.
dvb-si
".name
” is “dvb-si
”, the ParentalRatingScheme
remains empty (i.e. ParentalRatingScheme.length == 0
).
readonly String threshold name
” property of the ParentalRatingScheme
object is unequal to “dvb-si
”, then:
value
” property of the threshold object represents the value for which items with a ParentalRating.value greater or equal to the “value
” property of the threshold object have been configured by the OITF's parental control subsystem to be blocked.
labels
” property of the threshold object represents the bit map of zero or more flags for which items with a ParentalRating.labels property with any of the same flags set have been configured by the OITF's parental control subsystem to be blocked.
name
” property of the ParentalRatingScheme
object is “dvb-si
”, the threshold indicates a minimum recommended age encoded as per [[!EN300468]] at which or above which the content is being blocked by the OITF's parental control subsystemvalue
property as an index into the ParentalRating object that defines the threshold can be 1 larger than the value of ParentalRatingScheme.length
to convey that no content is being blocked by the parental control subsystem.Methods
Integer indexOf( String ratingValue )
Description
Return the index of the rating represented by attribute ratingValue
inside the parental rating scheme string collection, or -1
if the rating value cannot be found in the collection.Arguments
ratingValue The string representation of a parental rating value. See property name in section for more information about possible values. Values are not case sensitive.
String iconUri( Integer index )
Description
Return the URI of the icon representing the rating at index
in the rating scheme, or undefined if no item is present at that position. If no icon is available, this method SHALL return null
.Arguments
index The index of the parental rating scheme.
typedef Collection<ParentalRatingScheme> ParentalRatingSchemeCollection
A ParentalRatingSchemeCollection
represents a collection of parental rating schemes, e.g. as returned by property parentalRatingSchemes of the “application/oipfParentalControlManager” object as defined in section . Next to the properties and methods defined below a ParentalRatingSchemeCollection
object SHALL support the array notation to access the parental rating scheme objects in this collection.
See Annex for the definition of the collection template. In addition to the methods and properties defined for generic collections, the ParentalRatingSchemeCollection
class supports the additional properties and methods defined below.
ParentalRatingScheme addParentalRatingScheme( String name, String values ) | ||
Description |
Create a new ParentalRatingScheme object and adds it to the The application SHALL make sure that the values are ordered in such a way to allow the rating values to be compared in the manner as defined for the This method returns a reference to the ParentalRatingScheme object representing the added scheme. If the value of the If the OITF has successfully stored (persistently or not persistently) the additional parental rating scheme, the method SHALL return a non- | |
Arguments | name | A unique string identifying the parental rating scheme to which this value refers. See property name in section for more information about possible values. |
values | A comma-separated list of the possible values in the rating scheme, in ascending order of severity. In case the rating scheme is one of the [[!MPEG-7]] rating classification schemes, this means that the list of parental rating values contains the values as specified by the <Name> elements of the <Term> elements in the order of appearance as they are defined for the classification scheme, with the exception of the Internet Content Rating Association (ICRA) based ratings, for which the reverse order has to be applied. The values must be ordered in such a way to allow the rating values to be compared in the manner as defined for property threshold for the respective parental rating system. |
ParentalRatingScheme getParentalRatingScheme( String name ) | ||
Description | This method returns a reference to the ParentalRatingScheme object that is associated with the given scheme as specified through parameter “name ”. If the value of name does not correspond to the name property of any of the ParentalRatingScheme objects in the ParentalRatingSchemeCollection, the method SHALL return undefined . | |
Arguments | name | The unique name identifying a parental rating scheme. |
A ParentalRating
object describes a parental rating value for a programme or channel. The ParentalRating
object identifies both the rating scheme in use, and the parental rating value within that scheme.
In case of a BCG the values of the properties in this object will be read from the ParentalGuidance
element that is the child of a programme's BCG description.
Example usage:
<!-- This example shows a possible usage scenario for the ParentalRating data structure, i.e. to create a new programme to record and set parental rating to MPAA parental rating to PG-13. --> ... <script type="text/javascript" language="Javascript1.5"> // get a reference to the recorder object var recorder = document.getElementById("recorder"); // create new programme to record var myProgramme = recorder.createProgrammeObject(); // add a new parental rating value to myProgramme, in this case the // programme is rated PG-13 for the US using the MPAA Parental rating scheme. myProgramme.parentalRatings.addParentalRating( "urn:mpeg:mpeg7:cs:MPAAParentalRatingCS:2001", "PG-13", 2, 0, "US" ); </script> ... <object id="recorder" type="application/oipfRecordingScheduler"/>
readonly String name |
The string representation of the parental rating value for the respective rating scheme denoted by property Valid strings include:
An example of a valid parental rating value is “PG-13”. |
readonly String scheme |
Unique name identifying the parental rating guidance scheme to which this parental rating value refers. Valid strings include:
|
readonly String value |
The parental rating value represented as an index into the set of values defined as part of the ParentalRatingScheme identified through property “scheme”. If an associated ParentalRatingScheme object can be found by calling method getParentalRatingScheme() on property parentalRatingSchemes of the application/oipfParentalControlManager object and the value of property scheme is not equal to “ If no associated ParentalRatingScheme object can be found by calling method getParentalRatingScheme on property parentalRatingSchemes of the application/oipfParentalControlManager object, then the |
readonly Integer labels | ||||||||||||||||||||
The labels property represents a set of parental advisory flags that may provide additional information about the rating. The value of this field is a 32 bit integer value that represents a binary mask corresponding to the sum of zero or more label values defined in the table below. If no labels have been explicitly set, the value for the “ Valid labels include:
|
readonly String region |
The region to which the parental rating value applies as an alpha-2 region code as defined in ISO 3166-1. Returns undefined if no specific region has been defined. |
typedef Collection<ParentalRating> ParentalRatingCollection
A ParentalRatingCollection
represents a collection of parental rating values. See Annex for the definition of the collection template.
In addition to the methods and properties defined for generic collections, the ParentalRatingCollection
class supports the additional properties and methods defined below.
void addParentalRating( String scheme, String name, Integer value, Integer labels, String region ) | ||
Description | Creates a ParentalRating object instance for a given parental rating scheme and parental rating value, and adds it to the ParentalRatingCollection for a programme or channel. | |
Arguments | scheme | A unique string identifying the parental rating scheme to which this value refers. See property scheme in section for more information about possible values. |
name | A string representation of the parental rating value. See property name in section for more information about possible values. Values are not case sensitive. | |
value | The parental rating value represented as an Integer. See property value in section for more information about possible values. | |
labels | A set of content rating labels that may provide additional information about the rating. See property labels in section for more information about possible values. | |
region | The region to which the parental rating value applies as an alpha-2 region code as defined in ISO 3166-1. The value of this argument must be null or undefined if no specific region has been identified. Values are not case sensitive. |
This section describes the APIs needed to support control by a DAE application of the recording (PVR) functionality available to an OITF, including time-shift support, scheduled recording and storage of basic metadata about recorded items. Changes made by a DAE application to properties that can also be set by the OITF may be overwritten by the OITF from metadata without warning.
This section SHALL apply for OITFs that have indicated The OITF SHALL support the scheduling of recordings of broadcasts through the use of the following non-visual embedded object: Note that the functionality in this section SHALL adhere to the security model as specified in section . Which channels can be recorded SHALL be indicated by the Requests the scheduler to schedule the recording of the programme identified by the programmeID property of the programme. If the programmeIDType of the programme has the value ID_TVA_GROUP_CRID then the ScheduledRecording object returned by this method SHALL be a “parent” scheduled recording object that conceptually represents the recording. Each individual programme in the SHALL be represented by a separate ScheduledRecording object. Note that ScheduledRecording objects for individual programmes may not be created until the CRID has been partially or completely resolved. The start time, duration and other properties of the programme SHALL NOT be used for scheduling any recording. Individual programmes SHALL be recorded if any entries in a programme's associated groupCRIDs collection matches the group CRID specified in the programmeID property of any “parent” recording. The other data contained in the programme object is used solely for annotation of the (scheduled) recording. If such programme metadata is provided, it SHALL be retained in the ScheduledRecording object that is returned if the recording of the programme was scheduled successfully, reflecting the possibility that not all relevant metadata might be available to the scheduler. When the programme is recorded, the metadata in the associated Recording object SHALL be updated with the metadata from the broadcast stream if such metadata is available. If the recording could not be scheduled due to a scheduling conflict or lack of resources the value Note that the actual implementation of this method should enable the scheduler to identify the domain of the service that issues the scheduling request in order to support future retrieval of the scheduled recording through the getScheduledRecordings method. Requests the scheduler to schedule the recording of the broadcast to be received over the channel identified by The OITF SHOULD associate metadata with recordings scheduled using this method. This metadata MAY be obtained from the broadcast being recorded (for example DVB-SI in an MPEG-2 transport stream) or from other sources of metadata. If an application anticipates that the OITF may not be able to obtain any metadata, it SHOULD instead of using this method; Note that the actual implementation of this method should enable the scheduler to identify the domain of the service that issues the scheduling request in order to support future retrieval of the scheduled recording through the getScheduledRecordings() method. Bitfield indicating which days of the week the recording SHOULD be repeated. Values are as follows: These bitfield values can be 'OR'-ed together to repeat a recording on more than one day of a week (e.g. weekdays) A value of 0x00 indicates that the recording will not be repeated. Returns a subset of all the recordings that are scheduled but which have not yet started. The subset SHALL include only scheduled recordings that were scheduled using a service from the same FQDN as the domain of the service that calls the method. Returns the channel line-up of the OITF in the form of a ChannelConfig object as defined in section . The ChannelConfig object returned from this function SHALL be identical to the ChannelConfig object returned from the getChannelConfig() method on the video/broadcast object as defined in section Remove a recording (either scheduled, in-progress or completed). For non-privileged applications, recordings SHALL only be removed when they are scheduled but not yet started and the recording was scheduled by the current service. As with the record() method, only the programmeID property of the scheduled recording SHALL be used to identify the scheduled recording to remove where this property is available. The other data contained in the scheduled recording SHALL NOT be used when removing a recording scheduled using methods other than recordAt(). For recordings scheduled using recordAt(), the data used to identify the recording to remove is implementation dependent. If the programmeIDType property has the value ID_TVA_GROUP_CRID then the OITF SHALL cancel the recording of the specified group. If an A/V Control object is presenting the indicated recording then the state of the A/V Control object SHALL be automatically changed to 6 (the error state). Factory method to create an instance of Programme. The The following table lists the constants for recording states. The recording has only partially completed due to insufficient storage space, a clash or hardware failure. There are three possible conditions for this: This specification does not define values for these constants. Implementations may use any values as long as the value of each constant is unique. The following table lists the constants for detailed error codes when a recording failed to complete. This specification does not define values for these constants. Implementations may use any values as long as the value of each constant is unique. The following table lists the constants for programme ID types. The amount of padding to add at the start of a scheduled recording, in seconds. If the value of this property is Positive values of this property SHALL cause the recording to start earlier than the specified start time (i.e. the actual duration of the recording shall be increased); negative values SHALL cause the recording to start later than the specified start time (i.e. the actual duration of the recording shall be decreased). The amount of padding to add at the end of a scheduled recording, in seconds. If the value of this property is Positive values of this property SHALL cause the recording to end later than the specified end time (i.e. the actual duration of the recording shall be increased); negative values SHALL cause the recording to end earlier than the specified end time (i.e. the actual duration of the recording shall be decreased). Bitfield indicating which days of the week the recording SHOULD be repeated. Values are as follows: These bitfield values can be arithmetically summed to repeat a recording on more than one day of a week (e.g. weekdays) A value of 0x00 indicates that the recording will not be repeated. If A collection of parental rating values for the programme for zero or more parental rating schemes supported by the OITF. The value of this property is typically provided by a corresponding “Programme” object that is used to schedule the recording and can not be changed for this scheduled recording object. If no parental rating information is available for this scheduled recording, this property is a ParentalRatingCollection object (as defined in section ) with length 0. Note that if the Note that this property was formerly called “parentalRating” (singular not plural). Application-specific information for this recording. This value is information that the DAE application can set in order to retain additional information on this scheduled recording. It is not changed by the OITF. The OITF SHALL support values up to and including 16 K Bytes in size. Strings longer than this MAY get truncated. The The OITF SHALL support the following extensions to the application/oipfRecordingScheduler object defined in section .
This subsection SHALL apply for OITFs that have indicated support for the extended PVR management functionality by adding the attribute ' The functionality as described in this section is subject to the security model of section .
Requests the scheduler to update a scheduled or ongoing recording. For scheduled recordings the properties startTime, duration and repeatDays can be modified. For ongoing recordings only the duration property may be modified. This method SHALL return true if the operation succeeded, or false if for any reason it rescheduling is not possible (e.g. the updated recording overlaps with another scheduled recording and there are insufficient system resources to do both). If the method returns false then no changes SHALL be made to the recording. For the intrinsic events listed in the table below, a corresponding DOM event SHALL be generated in the following manner: Note: the DOM events are directly dispatched to the event target, and will not bubble nor capture. Remote UIs SHOULD NOT rely on receiving these events during the bubbling or the capturing phase. Remote UIs that use DOM event handlers SHALL call the The This class implements the ScheduledRecording interface (see section ) to provide access to the information relating to the scheduling of the recording. The difference between scheduled recordings, in-progress recordings and completed recordings is primarily what properties are populated with values. In addition, for recorded and in-progress recordings the following is true: Recordings MAY be “manual” in that they simply record a channel at a certain time, for a period - analogous to a traditional VCR - or alternatively recordings can be programme based. If an in-progress recording is interrupted and automatically resumed, e.g. due to a temporary power failure, all sections of the recording SHALL be represented by a single Values of properties in the NOTE: The property NOTE: The properties Flag indicating whether the programme is blocked due to parental control settings or conditional access restrictions. The Flag indicating the type of show. This field SHALL take one of the following values: This section is intentionally left empty. This section is intentionally left empty. The A NOTE: In principle bookmarks MAY be stored on in the network however the protocol for communicating bookmarks between the OITF and the network is not defined in the present document.<recording>
with value “true
” as defined in section in its capability description.
The application/oipfRecordingScheduler embedded object
<object type="application/oipfRecordingScheduler"/>
ipBroadcast
, DASH
and HAS
attributes in the PVR capability indication (see section ). Within the channels indicated by these attributes, recording of both channels stored in the channel list and locally defined channels SHALL be supported.Methods
ScheduledRecording record( Programme programme )
Description
null
is returned.Arguments
programme The programme to be recorded, as defined in section .
ScheduledRecording recordAt( Integer startTime, Integer duration, Integer repeatDays, String channelID )
Description
channelID
, starting at startTime
and stopping at startTime + duration
. If the recording was scheduled successfully, the resulting ScheduledRecording object is returned. If the recording could not be scheduled due to a scheduling conflict or lack of resources the value null
is returned.
channelID
, startTime
and duration
Arguments
startTime The start of the time period of the recording measured in seconds since midnight (GMT) on 1/1/1970. If the start time occurs in the past and the current time is within the specified duration of the recording, the OITF SHALL start recording immediately and MAY record any earlier content from the current programme that is available (e.g. stored in a time-shift buffer). duration The duration of the recording in seconds. repeatDays
Day Bitfield Value Sunday 0x01 (i.e. 00000001) Monday 0x02 (i.e. 00000010) Tuesday 0x04 (i.e. 00000100) Wednesday 0x08 (i.e. 00001000) Thursday 0x10 (i.e. 00010000) Friday 0x20 (i.e. 00100000) Saturday 0x40 (i.e. 01000000) channelID The identifier of the channel from which the broadcasted content is to be recorded. Specifies either a ccid or ipBroadcastID (as defined by the Channel object in section )
ScheduledRecordingCollection getScheduledRecordings( )
Description
ChannelConfig getChannelConfig( )
Description
void remove( ScheduledRecording recording )
Description
Arguments
recording The scheduled recording to be removed.
Programme createProgrammeObject( )
Description
The ScheduledRecording class
ScheduledRecording
object represents a scheduled programme in the system, i.e. a recording that is scheduled but which has not yet started. For group recordings (e.g. recording an entire series), a ScheduledRecording
object is also used to represent a “parent” recording that enables management of the group recording without representing any of the actual recordings in the group. The values of the properties of a ScheduledRecording
(except for startPadding and endPadding) are provided when the object is created using one of the record() methods in section , for example by using a corresponding Programme object as argument for the record() method, and can not be changed for this scheduled recording object (except for startPadding and endPadding).Constants
Name Use RECORDING_SCHEDULED Recording has been newly scheduled. RECORDING_REC_STARTED Recording has started. RECORDING_REC_COMPLETED Recording has successfully completed. RECORDING_REC_PARTIALLY_COMPLETED
RECORDING_ERROR An error has been encountered. Refer to detailed error codes for details on the error.
Name Use ERROR_REC_RESOURCE_LIMITATION The recording sub-system is unable to record due to resource limitations. ERROR_INSUFFICIENT_STORAGE There is insufficient storage space available. (Some of the recording may be available). ERROR_REC_UNKNOWN Recording has stopped before completion due to unknown (probably hardware) failure.
Name Value Use ID_TVA_CRID 0 Used in the programmeIDType property to indicate that the programme is identified by its TV-Anytime CRID (Content Reference Identifier). ID_DVB_EVENT 1 Used in the programmeIDType property to indicate that the programme is identified by a DVB URL referencing a DVB-SI event as enabled by section 4.1.3 of [[.OIPF_META2]]. Support for this constant is OPTIONAL. ID_TVA_GROUP_CRID 2 Used in the programmeIDType property to indicate that the Programme object represents a group of programmes identified by a TV-Anytime group CRID. Properties
readonly Integer state The state of the recording. Valid values are:
readonly Integer error If the state of the recording has changed due to an error, this field contains an error code detailing the type of error. This is only valid if the value of the state argument is RECORDING_ERROR or RECORDING_REC_PARTIALLY_COMPLETED otherwise this property SHALL be null
. Valid values are:
readonly String scheduleID An identifier for this scheduled recording. This value SHALL be unique to this scheduled recording. For a recording object this identifier can be used to associate which scheduled recording object this recording was created from.
readonly String customID An identifier for this scheduled recording. This value is an identifier that the DAE application can set in order to keep track of scheduled recordings. It is not changed by the OITF.
Integer startPadding undefined
, an OITF defined start padding will be used. The default OITF defined start padding MAY be changed through property pvrStartPadding of the Configuration class as defined in section . When a recording is due to start, the OITF MAY use a smaller amount of padding in order to avoid conflicts with other recordings.
Integer endPadding undefined
, an OITF defined end padding will be used. The default OITF defined end padding MAY be changed through property pvrEndPadding of the Configuration class as defined in section . When a recording is in progress, the OITF MAY use a smaller amount of padding in order to avoid conflicts with other recordings.
readonly Integer repeatDays
Day Bitfield Value Sunday 0x01 (i.e. 00000001) Monday 0x02 (i.e. 00000010) Tuesday 0x04 (i.e. 00000100) Wednesday 0x08 (i.e. 00001000) Thursday 0x10 (i.e. 00010000) Friday 0x20 (i.e. 00100000) Saturday 0x40 (i.e. 01000000)
String name The short name of the scheduled recording, e.g. 'Star Trek: DS9'.
String longName The long name of the scheduled recording, e.g. 'Star Trek: Deep Space Nine'. If the long name is not available, this property will be undefined
.
String description The description of the scheduled recording, e.g. an episode synopsis. If no description is available, this property will be undefined
.
String longDescription The long description of the programme. If no description is available, this property will be undefined
.
readonly Integer startTime The start time of the scheduled recording, measured in seconds since midnight (GMT) on 1/1/1970. The value for the startPadding property can be used to indicate if the recording has to be started before the startTime (as defined by the Programme class).
readonly Integer duration The duration of the scheduled recording (in seconds). The value for the endPadding property can be used to indicate how long the recording has to be continued after the specified duration of the recording.
readonly Channel channel Reference to the broadcast channel where the scheduled programme is available.
readonly Boolean isManual true
if the recording was scheduled using oipfRecordingScheduler.recordAt() or using a terminal-specific approach that does not use guide data to determine what to record, false
otherwise.false
, then any fields whose name matches a field in the Programme object contains details from the programme guide on the programme that has been recorded. If true
, only the channel, startTime and duration properties are required to be valid.
readonly String programmeID The unique identifier of the scheduled programme or series, e.g. a TV-Anytime CRID (Content Reference Identifier). For recordings scheduled using the oipfRecordingScheduler.recordAt() method, the value of this property MAY be undefined
.
readonly Integer programmeIDType The type of identification used to reference the programme, as indicated by one of the ID_* constants defined in section . For recordings scheduled using the oipfRecordingScheduler.recordAt() method, the value of this property MAY be undefined
.
readonly Integer episode The episode number for the programme if it is part of a series. This property is undefined
when the programme is not part of a series or the information is not available.
readonly Integer totalEpisodes If the programme is part of a series, the total number of episodes in the series. This property is undefined
when the programme is not part of a series or the information is not available.
readonly ParentalRatingCollection parentalRatings parentalRatings
property contains a certain parental rating (e.g. PG-13) and the broadcast channel associated with this scheduled recording has metadata that says that the content is rated PG-16, then the conflict resolution is implementation dependent.
String customMetadata The ScheduledRecordingCollection class
typedef Collection<ScheduledRecording> ScheduledRecordingCollection
ScheduledRecordingCollection
class represents a collection of ScheduledRecording> objects. See Annex for the definition of the collection template.Extension to application/oipfRecordingScheduler for control of recordings
manageRecordings = true
' to the <recording>
element in the client capability description as defined in section .Properties
readonly ScheduledRecordingCollection recordings Provides a list of scheduled and recorded programmes in the system. This property may only provide access to a subset of the full list of recordings, as determined by the value of the manageRecordings
attribute of the <recording>
element in the client capability description (see section ).
readonly DiscInfo discInfo Get information about the status of the local storage device. The DiscInfo class is defined in section .
function onPVREvent( Integer state, ScheduledRecording recording ) This function is the DOM 0 event handler for notification of changes in the state of recordings. The specified function is called with the following arguments:
Integer state
— The current state of the recording. One of:
Value Description 1 The recording has started. 2 The recording has stopped, having completed. 3 The recording sub-system is unable to record due to resource limitations. 4 There is insufficient storage space available. (Some of the recording may be available). 6 The recording has stopped before completion due to unknown (probably hardware) failure. 7 The recording has been newly scheduled. 8 The recording has been deleted (for complete or in-progress recordings) or removed from the schedule (for scheduled recordings). 9 The recording is due to start in a short time. 10 The recording has been updated. For performance reasons, OITFs SHOULD NOT dispatch events with the state when only the duration of an in-progress recording has changed. ScheduledRecording recording
— The recording to which this event refers.
Methods
Recording getRecording( String id )
Description
Returns the Recording object for which the value of the Recording.id property corresponds to the given id
parameter. If such a Recording does not exist, the method returns null
.Arguments
id Identifier corresponding to the id property of a Recording object.
void stop( Recording )
Description
Stop an in-progress recording. The recording SHALL NOT be deleted. Arguments
recording The recording to be stopped.
void refresh( )
Description
Update the recordings property to show the current status of all recordings.
Boolean update( String id, Integer startTime, Integer duration, Integer repeatDays )
Description
Arguments
id The id of the recording to update. startTime The new start time of the recording, or undefined
if the start time is not to be updated.duration The new duration of the recording, or undefined
if the duration is not to be updated.repeatDays The new set of days on which the recording is to be repeated, or undefined
if this is not to be updated.Events
Intrinsic event Corresponding DOM event DOM Event properties onPVREvent PVREvent Bubbles: No
Cancellable: No
Context Info: state
, recording
addEventListener()
method on the application/oipfRecordingScheduler object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.The Recording class
Recording
class represents an in-progress or completed recording being made available through the extended PVR management functionality as defined in section . Recordings for which no data has yet been recorded are represented by the ScheduledRecording class.
Recording
object.Recording
object SHALL be obtained from metadata about the recorded programme and are typically copied from the Programme used for scheduling a recording by the record(Programme programme) method of the application/oipfRecordingScheduler object. See section for more information about the mapping between the properties of a Programme and the BCG metadata. In the event of a conflict between the metadata in the Programme and that in the broadcast channel, the conflict resolution is implementation dependent.parentalRatings
formerly defined as part of this class is now redundant following the renaming of the parentalRating
property in the ScheduledRecording class to parentalRatings.
Properties
state
and isManual
formerly defined in this class are now defined in the ScheduledRecording class, and since the Recording
class inherits from the ScheduledRecording class they are still part of the Recording
class.
readonly String uri A uri identifying the content item in local storage according to [[!RFC3986]]. The format of the URI is outside the scope of this specification except that;
readonly String id An identifier for this recording. This value SHALL be unique to this recording and so can be used to compare two recording objects to see if they refer to the same recording. The OITF SHALL guarantee that recording identifiers are unique in relation to download identifiers and CODAsset identifiers.
Boolean doNotDelete If true
, then this recording should not be automatically deleted by the system.
Integer saveDays The number of days for which an individual or manual recording SHOULD be saved. Recordings older than this value MAY be deleted. If the value of this property is undefined
, the default save duration SHALL be used.
Integer saveEpisodes TThe number of episodes of a series-link that SHOULD be saved. Older episodes MAY be deleted. This is only valid when set on the latest scheduled recording in the series. If the value of this property is undefined
, the default value SHALL be used.
readonly Boolean blocked blocked
and locked properties work together to provide a tri-state flag describing the status of a programme. This can best be described by the following table:
Description blocked locked No parental control applies. false
false
Item is above the parental rating threshold (or manually blocked); no PIN has been entered to view it and so the item cannot currently be viewed. true
true
Item is above the parental rating threshold (or manually blocked); the PIN has been entered and so the item can be viewed. true
false
Invalid combination — OITFs SHALL NOT support this combination false
true
readonly Integer showType
Value Description 0 The show is live. 1 The show is a first-run show. 2 The show is a rerun.
readonly Boolean subtitles Flag indicating whether subtitles or closed-caption information is available.
readonly StringCollection subtitleLanguages Supported subtitle languages, indicated by their ISO 639-2 language codes as defined in [[!ISO639-2]].
readonly Boolean isHD Flag indicating whether the programme has high-definition video.
readonly Boolean is3D Flag indicating whether the programme has 3D video.
readonly Integer audioType Bitfield indicating the type of audio that is available for the programme. Since more than one type of audio may be available for a given programme, the value of this field SHALL consist of one or more of the following values ORed together:
Value Desccription 1 Mono audio 2 Stereo audio 4 Multi-channel audio
readonly Boolean isMultilingual Flag indicating whether more than one audio language is available for this recording.
readonly StringCollection audioLanguages Supported audio languages, indicated by their ISO 639-2 language codes as defined in [[!ISO639-2]].
readonly StringCollection genres A collection of genres that describe this programme.
readonly Integer recordingStartTime The actual start time of the recording, including any padding, measured in seconds since midnight (GMT) on 1/1/1970. This MAY not be the same as the scheduled start time of the recorded programme (e.g. due to a recording starting late, or due to start/end padding). For recordings that have not yet started, the value of this field SHALL be undefined
.
readonly Integer recordingDuration The actual duration of the recording, including any padding, measured in seconds. This MAY not be the same as the scheduled duration of the recording (e.g. due to a recording finishing early, or due to start/end padding). For recordings that have not yet started, the value of this field SHALL be undefined
.
readonly Bookmarks bookmarks A collection of the bookmarks set in a recording. If no bookmarks are set, the collection SHALL be empty.
readonly Boolean locked Flag indicating whether the current state of the parental control system prevents the recording from being viewed (e.g. a correct parental control PIN has not been entered to allow the recording to be viewed). The RecordingCollection class
The PVREvent class
The Bookmark class
Bookmark
class represents a bookmark or chapter mark in a recording or CoD asset. This is not a web bookmark — instead, it is a point from which the viewer may want to resume playback of a piece of content. These MAY be set implicitly without user intervention (e.g. at the point where a user stops watching a recording, in order to allow them to resume from that point later) or explicitly by the user (e.g. at the start of a favourite scene). Properties
readonly Integer time The time at which the bookmark is set, in seconds from the start of the content item.
readonly Name name The name of the bookmark. The BookmarkCollection class
typedef Collection<Bookmark> BookmarkCollection
BookmarkCollection
is a collection of bookmarks, ordered by time. See Annex for the definition of the collection template. In addition to the methods and properties defined for generic collections, the BookmarkCollection
class supports the additional properties and methods defined below.Methods
Bookmark addBookmark( Integer time, String name )
Description
Add a new bookmark to the collection. If the bookmark cannot be added (e.g. because the value given for time lies outside the length of the recording), this method SHALL return null
.Arguments
time The time at which the bookmark is set, in seconds since the start of the recording. name The name of the bookmark.
void removeBookmark( Bookmark bookmark )
Description
Remove a bookmark from the collection. Arguments
bookmark The bookmark to be removed.
This section defines interfaces to perform remote diagnostics and management of the device.
Browser based remote management SHALL be supported by OITFs that have indicated <remote_diagnostics>true</remote_diagnostics>
in their capability profile (as defined in section ).
The application/oipfRemoteManagement embedded object has the following properties and methods.
Access to the functionality of the application/oipfRemoteManagement embedded object SHALL adhere to the security requirements as defined in section .
readonly String vendorName |
The value of this property SHALL be the same as the value of the LocalSystem.vendorName property (see section ) |
readonly String modelName |
The value of this property SHALL be the same as the value of the LocalSystem.modelName property (see section ) |
readonly String softwareVersion |
The value of this property SHALL be the same as the value of the LocalSystem.softwareVersion property (see section ) |
readonly String hardwareVersion |
The value of this property SHALL be the same as the value of the LocalSystem.hardwareVersion property (see section ) |
readonly String familyName |
The value of this property SHALL be the same as the value of the LocalSystem.familyName property (see section ) |
function onSoftwareUpdate( String updateEvent, Integer seconds, String message, String version ) | ||||||||||||
The function that is called when the OITF's software update state is changed. The specified function is called with the following arguments:
|
String getParameter( String parameterName ) | ||
Description | Returns the requested parameter. | |
Arguments | parameterName |
“ “ “ “ Values are not case sensitive. Optionally, further vendor specific parameters may be supported. In the case that a parameter is requested that a device does not support, it SHALL return an empty string. |
Integer triggerSoftwareUpdate( String token ) | |||||||||||||||||
Description | Triggers an OITF to start its software update process. The process itself and any user involvement (e.g. to confirm agreement for a software update) is not defined. The method is blocking. The process of updating the software MAY generate SoftwareUpdate events to indicate progress. The returned integer is a result code that can take the following values:
| ||||||||||||||||
Arguments | token | An optional token string used to assist in the software update process. The token may be used to transfer credentials information to control the software update. |
Integer softwareUpdateStatus( ) | |||||||||||||
Description | Returns the current status of any ongoing software update activity. The value returned by this function shall be:
|
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onSoftwareUpdate | SoftwareUpdate | Bubbles: No Cancellable: No Context Info: updateEvent , seconds |
addEventListener()
method on the application/oipfRemoteManagement object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
This section defines the JavaScript APIs used by DAE applications for reading and searching metadata about programmes. This API does not specify whether these query operations are carried out on the OITF or whether they require communication with a server.
The metadata API provides DAE applications with high-level access to metadata about programmes and channels. This document describes the mapping between this API and CoD and programme guide metadata. Mappings between this API and other metadata sources are not specified in this document.
This section SHALL apply for OITFs that have indicated <clientMetadata>
with value “true
” and a “type
” attribute with value “bcg
” or “dvb-si
” as defined in section in their capability.
Note that in order to access the metadata of programmes and channels several extensions to the Programme and Channel classes have been defined when the OITF has indicated support for <clientMetadata>
. See sections “” and “” for more information).
The functionality as described in this section is subject to the security model of section (in particular section ).
OITFs SHALL implement the “application/oipfSearchManager
” embedded object. This object provides a mechanism for applications to create and manage metadata searches.
readonly Integer guideDaysAvailable |
The number of days for which guide data is available. A value of -1 means that the amount of guide data available is unknown. |
function onMetadataUpdate( Integer action, Integer info, Object object ) | ||||||||||||||||||||||
This function is the DOM 0 event handler for events indicating changes in metadata. This SHALL be raised under the following circumstances:
The specified function is called with the arguments
|
function onMetadataSearch( MetadataSearch search, Integer state ) | ||||||||||||
This function is the DOM 0 event handler for events relating to metadata searches. The specified function is called with the arguments
|
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onMetadataSearch | MetadataSearch | Bubbles: No Cancellable: No Context Info: search , state |
onMetadataUpdate | MetadataUpdate | Bubbles: No Cancellable: No Context Info: action , info , object |
addEventListener()
method on the application/oipfSearchManager
object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
MetadataSearch createSearch( Integer searchTarget ) | ||||||||
Description | Create a MetadataSearch object that can be used to search the metadata. | |||||||
Arguments | searchTarget |
The metadata that should be searched. Valid values of the
These values are treated as a bitfield, allowing searches to be carried out across multiple search targets. |
ChannelConfig getChannelConfig( ) | |
Description | Returns the channel line-up of the tuner in the form of a ChannelConfig object as defined in section . This includes the favourite lists. The ChannelConfig object returned from this function SHALL be identical to the ChannelConfig object returned from the getChannelConfig() method on the video/broadcast object as defined in section . |
A MetadataSearch
object represents a query of the metadata about available programmes. Applications can create MetadataSearch
objects using the createSearch() method on the application/oipfSearchManager object. When metadata queries are performed on a remote server, the protocol used is defined in section 4.1.2.2 of [[.OIPF_META2]].
Each search consists of three steps:
MetadataSearch
object, and either creates its associated Query object, or sets a query using the findProgrammesFromStream() method, and sets any applicable constraints and result ordering.
The MetadataSearch
and SearchResults classes work together to manage an individual search. For every search, the MetadataSearch
object and its corresponding SearchResults object SHALL be in one of three states as described in Table . Figure below shows the transitions between these states:
State | Description |
---|---|
Idle | The search is idle; no results are available. This is the initial state of the search. In this state, the application can set or modify the query, constraints or ordering rules that are applied to the search. No search results are available in this state — any calls to SearchResults.item() SHALL return Calling the SearchResults.getResults() method SHALL cause a state transition to the Searching state. |
Searching | Results are being retrieved and are not yet available to applications. If the terminal has not previously cached the full set of search results, the terminal performs the search to gather the requested results. If a new version of the metadata is detected (e.g. due to an EIT update) while the search is in this state, results SHALL be retrieved from either the new or original version of the metadata but SHALL NOT be retrieved from a combination of the two versions. Calls to SearchResults.item() SHALL return Any modification of the search parameters (e.g. changing the query or adding/removing constraints, or calling findProgrammesFromStream()) by the application SHALL stop the current search and cause a transition to the Idle state. The terminal SHALL dispatch a When all requested results have been found, the terminal SHALL dispatch a If the search cannot be completed due to a lack of resources or any other reason, the terminal SHALL dispatch a Calls to the SearchResults.getResults() method SHALL abort the retrieval of search results and attempt to retrieve the newly-requested set of results instead. NOTE: Calling getResults() when in the searching state may be used to fetch a group of items starting at a different offset or with a different count. |
Found | Search results are available and can be retrieved by applications. The data exposed via the SearchResults.item() method is static and never changes as a result of any updates to the underlying metadata database until SearchResults.getResults() is next called. If a new version of the metadata is detected (e.g. due to an EIT update), a Calls to SearchResults.getResults() SHALL cause a state transition to the Searching state. Any modification of the search parameters (e.g. changing the query or adding/removing constraints, or calling findProgrammesFromStream()) by the application SHALL cause the current set of results to be discarded and SHALL cause a transition to the Idle state. The terminal SHALL dispatch a |
The findProgrammesFromStream() method acts as a shortcut for setting a query and a set of constraints on the MetadataSearch object. Regardless of whether the query and constraints are set explicitly by the application or via findProgrammesFromStream(), results are retrieved using the getResults() method.
Changes to the search parameters (e.g. changing the query or adding/removing constraints or modifying the search target, or calling findProgrammesFromStream()) SHALL be applied when the getResults() method on the corresponding SearchResults object is called. Due to the nature of metadata queries, searches are asynchronous and events are used to notify the application that results are available. MetadataSearch
events SHALL be targeted at the application/oipfSearchManager object.
The present document is intentionally silent about the implementation of the search mechanism and the algorithm for retrieving and caching search results except where described in Table above. When performing a search, the receiver MAY gather all search results and cache them (or cache a set of pointers into the full database), or gather only the subset of search results determined by the getResults() parameters, or take an alternative approach not described here.
readonly Integer searchTarget | ||||||
The target(s) of the search. Valid values are:
|
readonly SearchResults result |
The subset of search results that has been requested by the application. |
void setQuery( Query query ) | ||
Description | Set the query terms to be used for this search, discarding any previously-set query terms. Setting the search parameters using this method will implicitly remove any existing constraints, ordering or queries created by prior calls to methods on this object. | |
Arguments | query | The query terms to be used |
void addRatingConstraint( ParentalRatingScheme scheme, Integer threshold ) | ||
Description | Constrain the search to only include results whose parental rating value is below the specified threshold. | |
Arguments | scheme | The parental rating scheme upon which the constraint SHALL be based. If the value of this argument is null , any existing parental rating constraints SHALL be cleared. |
threshold | The threshold above which results SHALL NOT be returned. If the value of this argument is null , any existing constraint for the specified parental rating scheme SHALL be cleared. |
void addCurrentRatingConstraint( ) | |
Description | Constrain the search to only include results whose parental rating value is below the threshold currently set by the user. |
void addChannelConstraint( ChannelList channels ) | ||
Description | Constrain the search to only include results from the specified channels. If a channel constraint has already been set, subsequent calls to For CoD searches, adding a channel constraint SHALL have no effect. | |
Arguments | channels | The channels from which results SHALL be returned. If the value of this argument is null , any existing channel constraint SHALL be removed. |
void addChannelConstraint( Channel channel ) | ||
Description | Constrain the search to only include results from the specified channel. If a channel constraint has already been set, subsequent calls to For CoD searches, adding a channel constraint SHALL have no effect. | |
Arguments | channel | The channel from which results SHALL be returned. If the value of this argument is null , any existing channel constraint SHALL be removed. |
void orderBy( String field, Boolean ascending ) | ||
Description | Set the order in which results SHOULD be returned in future. Any existing search results SHALL not be re-ordered. Subsequent calls to orderBy() will apply further levels of ordering within the order defined by previous calls. For example:orderBy("ServiceName", true); orderBy("PublishedStart", true);will cause results to be ordered by service name and then by start time for results with the same channel number. | |
Arguments | field | The name of the field by which results SHOULD be sorted. A value of null indicates that any currently-set order SHALL be cleared and the default sort order should be used. |
ascending | Flag indicating whether the results SHOULD be returned in ascending or descending order. |
Query createQuery( String field, Integer comparison, String value ) | |||||||||||||||||
Description | Create a metadata query for a specific value in a specific field within the metadata. Simple queries MAY be combined to create more complex queries. Applications SHALL follow the JavaScript type conversion rules to convert non-string values into their string representation, if necessary. | ||||||||||||||||
Arguments | field | The name of the field to compare. Fields are identified using the format <classname>.<propertyname> where classname SHALL be one of “Programme”, “CODAsset”, “CODService” or “CODFolder” and <propertyname> SHALL be a valid property name on the corresponding class. | |||||||||||||||
comparison | The type of comparison. One of:
| ||||||||||||||||
value | The value to check. Applications SHALL follow the JavaScript type conversion rules to convert non-string values into their string representation, if necessary. |
void findProgrammesFromStream( Channel channel, Integer startTime, Integer count ) | ||
Description | Set a query and constraints for retrieving metadata for programmes from a given channel and given start time from metadata contained in the stream as defined in section 4.1.3 of [[.OIPF_META2]]. Setting the search parameters using this method will implicitly remove any existing constraints, ordering or queries created by prior calls to methods on this object. This method does not cause the search to be performed; applications must call getResults() to retrieve the results. Applications SHALL be notified of the progress of the search via MetadataSearch events as described in section . | |
Arguments | channel | The channel for which programme information should be found. |
startTime | The start of the time period for which results should be returned measured in seconds since midnight (GMT) on 1/1/1970. The start time is inclusive; any programmes starting at the start time, or which are showing at the start time, will be included in the search results. If null , the search will start from the current time.
| |
count | Optional argument giving the maximum number of programmes for which information should be fetched. This places an upper bound on the number of results that will be present in the result set — for instance, specifying a value of 2 for this argument will result in at most two results being returned by calls to getResults() even if a call to getResults() requests more results. If this argument is not specified, no restrictions are imposed on the number of results which may be returned by calls to getResults(). |
The Query
class represents a metadata query that the user wants to carry out. This may be a simple search, or a complex search involving Boolean logic. Queries are immutable; an operation on a query SHALL return a new Query
object, allowing applications to continue referring to the original query.
The examples below show how more complex queries can be constructed:
Query qa = mySearch.createQuery("Title", 6, "Terminator"); Query qb = mySearch.createQuery("SpokenLanguage", 0, "fr-CA"); Query qc = qb.and(qa.not());
Query and( Query query ) | ||
Description | Create a query based on the logical AND of the predicates represented by the query currently being operated on and the argument query . | |
Arguments | query | The second predicate for the AND operation. |
Query or( Query query ) | ||
Description | Create a query based on the logical OR of the predicates represented by the query currently being operated on and the argument query . | |
Arguments | query | The second predicate for the OR operation. |
Query not( ) | |
Description | Create a query that is the logical negation of the predicates represented by the query currently being operated on. |
The SearchResults
class represents the results of a metadata search. Since the result set may contain a large number of items, applications request a 'window' on to the result set, similar to the functionality provided by the OFFSET and LIMIT clauses in SQL.
Applications MAY request the contents of the result in groups of an arbitrary size, based on an offset from the beginning of the result set. The data SHALL be fetched from the appropriate source, and the application SHALL be notified when the data is available.
The set of results SHALL only be valid if a call to getResults() has been made and a MetadataSearch
event notifying the application that results are available has been dispatched. If this event has not been dispatched, the set of results SHALL be empty (i.e. the value of the totalSize property SHALL be 0 and calls to item() SHALL return undefined
).
In addition to the properties and methods defined below a SearchResults
object SHALL support the array notation to access the results in this collection.
readonly Integer length |
The number of items in the current window within the overall result set. The value of this property SHALL be zero until getResults() has been called and a MetadataSearch event notifying the application that results are available has been dispatched. If the current window onto the result set is in fact the whole result set then length will be the same as totalSize. Otherwise length will be less than totalSize. |
readonly Integer offset |
The current offset into the total result set. |
readonly Integer totalSize |
The total number of items in the result set. The value of this property SHALL be zero until getResults() has been called and a MetadataSearch event notifying the application that results are available has been dispatched. |
Object item( Integer index ) | ||
Description | Return the item at position index in the collection of currently available results, or undefined if no item is present at that position. This function SHALL only return objects that are instances of Programme, CODAsset, CODFolder, or CODService. | |
Arguments | index | The index into the result set. |
Boolean getResults( Integer offset, Integer count ) | ||
Description | Perform the search and retrieve the specified subset of the items that match the query. Results SHALL be returned asynchronously. A This method SHALL always return | |
Arguments | offset | The number of items at the start of the result set to be skipped before data is retrieved. |
count | The number of results to retrieve. |
void abort( ) | |
Description | Abort any outstanding request for results and remove any query, constraints or ordering rules set on the MetadataSearch object that is associated with this SearchResults object. Regardless of whether or not there is an outstanding request for results, items currently in the collection SHALL be removed (i.e. the value of the length property SHALL be 0 and any calls to item() SHALL return undefined ). All cached search results SHALL be discarded.
|
This section SHALL apply to OITFs that have indicated support for tuner control (i.e. <video_broadcast>true</video_broadcast>
as defined in section ) in their capability. It describes the video/broadcast
embedded object needed to support display and control by a DAE application of scheduled content received over local tuner functionality available to an OITF, including the conveyance of the channel list to the server. The term “tuner” is used here to identify a piece of functionality to enable switching between different types of scheduled content services that are identified through logical channels. This includes IP broadcast channels, as well as traditional broadcast channels received over a hybrid tuner.
The OITF SHALL support the video/broadcast
embedded object with the following properties and methods, which SHALL adhere to the tuner related security requirements in section . The MIME type of this object SHALL be “video/broadcast
”.
The state diagram below shows the states that a video/broadcast object may be in. Dashed lines indicate automatic transitions between states. The video/broadcast
object SHALL be in the unrealized
state when it is instantiated.
Transient errors are defined as ones that that the OITF will automatically recover from without intervention by an application. Transient errors persist until either the condition which caused them is corrected or it is determined that it cannot be connected and the error becomes permanent. Permanent errors are defined as ones that the OITF will not automatically attempt to recover from.
Terminals SHALL perform the state changes in Table under the conditions described and generate the listed event(s). Terminals SHALL not change state in circumstances other than defined in this section.
Old State | Trigger | New State | State Transition Events | Description |
---|---|---|---|---|
All states | setChannel(channel) where channel != null and the channel type is supported and the combination of channel properties is valid and a suitable tuner is available | Connecting | PlayStateChange | The terminal attempts to connect to the requested channel. The currentChannel object reflects the channel being changed to. |
All states | setChannel(channel) where channel != null but either the channel type is not supported or the combination of channel properties is invalid or a suitable tuner is not available | No change | ChannelChangeError | The terminal remains in the same state. |
Connecting or Presenting or Stopped | nextChannel(), prevChannel() where the video/broadcast object currentChannel is in the channel list and a suitable tuner is available | Connecting | PlayStateChange | The terminal attempts to connect to the requested channel. The currentChannel object reflects the channel being changed to. |
Connecting | nextChannel(), prevChannel() where the video/broadcast object currentChannel is not in the channel list | Unrealized | ChannelChangeError PlayStateChange | |
Presenting or Stopped | nextChannel(), prevChannel() where the video/broadcast object currentChannel is not in the channel list | No change | ChannelChangeError | The terminal remains in the same state. |
Connecting or Presenting or Stopped | nextChannel(), prevChannel() where the video/broadcast object currentChannel is in the channel list but no suitable tuner is available | No change | ChannelChangeError | The terminal remains in the same state. |
Unrealized | bindToCurrentChannel() when at least one channel is currently being presented by the OITF and binding to the necessary resources does not fail | Presenting | PlayStateChange | The terminal binds the video/broadcast object to the current channel being natively presented. The currentChannel object reflects the channel being presented. |
Unrealized | bindToCurrentChannel() when there is no channel currently being presented or binding to the necessary resources to play the channel through the video/broadcast object fails | Unrealized | PlayStateChange | The terminal continues to present the current channel, if any. |
Connecting | The terminal successfully connected to the broadcast or IP multicast stream and presented its contents. | Presenting | ChannelChangeSucceeded PlayStateChange | This transition occurs automatically when media presentation starts. |
Connecting | The terminal successfully connected to the broadcast or IP multicast stream but presentation of content is blocked, e.g. by a parental rating mechanism or content protection mechanism | Connecting | ChannelChangeSucceeded PlayStateChange | This is conceptually equivalent to a successful channel change where a transient error immediately pre-empts media presentation without the video/broadcast object entering the presenting state. |
Connecting | Recovery from a transient error, including
| Presenting | PlayStateChange | If a video/broadcast object was forced from the presenting state to the connecting state due to a transient error and that error condition clears while the video/broadcast object remains in the connecting state then the video/broadcast object SHALL automatically transition back to the presenting state. |
Connecting or Presenting or Stopped | release() or setChannel(null) | Unrealized | PlayStateChange | The control is returned to the terminal. The currentChannel object is set to If an application has modified the set of components being presented (e.g. changing the audio or subtitle stream being presented) then the same set of components will continue to be presented. |
Connecting | Permanent error including
| Unrealized | ChannelChangeSucceeded PlayStateChange | The terminal encountered a permanent error |
Connecting or Presenting | stop() | Stopped | PlayStateChange | |
Presenting | Transient error including
| Connecting | PlayStateChange | The terminal encountered a transient error. During media presentation, transient errors (e.g. transient errors in the bitstream, temporary loss of signal or temporary halting of media decoding due to parental control issues) MAY cause the object to transition from the presenting state to the connecting state. Temporary loss of resources due to presentation being interrupted by playback of audio from memory MAY cause the object to transition from the presenting state to the connecting state. |
Presenting or Stopped | Permanent error including;
| Unrealized | PlayStateChange | The terminal encountered a permanent error. |
Stopped | bindToCurrentChannel() | Connecting | PlayStateChange | Video and audio presentation is enabled. |
All states | Destroy video/broadcast | N/A | When a video/broadcast object is destroyed (e.g. by the video/broadcast object being garbage collected) control of broadcast video SHALL be returned to the terminal. If an application has modified the set of components being presented (e.g. changing the audio or subtitle stream being presented) then the same set of components will continue to be presented. When a video/broadcast object is destroyed due to a page transition within an application, terminals MAY delay this operation until the new page is fully loaded in order to avoid display glitches if a video/broadcast object is also present in the new page. Presentation of broadcast video or audio SHALL not be interrupted in either case. |
If the channel currently being presented is requested to be changed due to an action outside the application (for example, the user pressing the CH+ key on the remote) then any video/broadcast object presenting that channel (e.g. as the result of a call to bindToCurrentChannel()) SHALL perform the same state transitions and dispatch the same events as if the channel change operation was initiated by the application using the setChannel() method.
If the value of the allocationMethod property is DYNAMIC_ALLOCATION
, the following apply:
connecting
state.
video/broadcast
object transitions to the unrealized
state.
video/broadcast
object transitions to the stopped
state.
presenting
to the connecting
state SHOULD not cause scarce resources to be released.Applications can use the playState property of the video/broadcast
object to read its current state.
When a video/broadcast
object stops being rendered as defined in section 10.1 of the HTML5 specification as referenced by [[.OIPF_WSTVP2]] an OITF MAY release scarce resources allocated for that object. Vice versa, a video/broadcast
object which is not visible but it's still being rendered SHALL still be decoding video if it is in the presenting state and any audio associated with the currently presented channel will still be audible. State transitions caused by calls to methods on the video/broadcast object, or due to permanent or transient errors, will occur as shown above regardless of the visibility of the object.
NOTE: as implied by the text above, rendering state and visibility are not equivalent. This implies, just to give two examples, that display:none
will affect the object state while visibility:hidden
will not.
Integer width |
The width of the area used for rendering the video object. This property is only writable if property fullScreen has value false . Changing the width property corresponds to changing the width property through the HTMLObjectElement interface, and must have the same effect as changing the width through the DOM Level 2 Style interfaces (i.e. CSS2Properties interface style.width ), at least for values specified in pixels. |
Integer height |
The height of the area used for rendering the video object. This property is only writable if property fullScreen has value false . Changing the height property corresponds to changing the height property through the HTMLObjectElement interface, and must have the same effect as changing the height through the DOM Level 2 Style interfaces (i.e. CSS2Properties interface style.height ), at least for values specified in pixels. |
readonly Boolean fullScreen |
Returns true if this video object is in full-screen mode, false otherwise. The default value is false . |
readonly String data |
Setting the value of the data property SHALL have no effect on the video/broadcast object. If this property is read, the value returned SHALL always be the empty string. |
function onChannelChangeError( Channel channel, Number errorState ) | ||||||||||||||||||||||||||||||
The function that is called when a request to switch a tuner to another channel resulted in an error preventing the broadcasted content from being rendered. The specified function is called with the arguments
|
readonly Integer playState | ||||||||||
The current play state of the video/broadcast object. Valid values are:
See section for a description of the state model for a NOTE: Implementations where the content of the |
function onPlayStateChange( Number state, Number error ) |
The function that is called when the play state of the The specified function is called with the arguments
|
function onChannelChangeSucceeded( Channel channel ) |
The function that is called when a request to switch a tuner to another channel has successfully completed. This function may be called either in response to a channel change initiated by the application, or a channel change initiated by the OITF (see section ). The specified function is called with argument
|
function onFullScreenChange( ) |
The function that is called when the value of fullScreen changes. |
function onfocus( ) |
The function that is called when the video object gains focus. |
function onblur( ) |
The function that is called when the video object loses focus. |
readonly StringCollection playerCapabilities |
The list of media formats that are supported by the object. Each item SHALL contain a format label according to [[.OIPF_MEDIA2]]. If scarce resources are not claimed by the object, the value of this property SHALL be |
readonly Integer allocationMethod |
Returns the resource allocation method currently in use by the object. Valid values as defined in section are:
|
ChannelConfig getChannelConfig( ) | |
Description | Returns the channel line-up of the tuner in the form of a ChannelConfig object as defined in section . The method SHALL return the value null if the channel list is not (partially) managed by the OITF (i.e., if the channel list information is managed entirely in the network).
|
Channel bindToCurrentChannel( ) | |
Description | If the If the If there is no channel currently being presented, or binding to the necessary resources to play the channel through the Calling this method from any other states than the unrealized or stopped states SHALL have no effect. See section for more information of its usage. NOTE: Returning a Channel object from this method does not guarantee that video or audio from that channel is being presented. Applications should listen for the |
Channel createChannelObject( Integer idType, String dsd, Integer sid ) | ||
Description | Creates a Channel object of the specified Valid value for idType include: If the channel of the given type cannot be created or the delivery system descriptor is not valid, the method SHALL return If the channel of the given type can be created and the delivery system descriptor is valid, the method SHALL return a Channel object whereby at a minimum the properties with the same names (i.e. idType, dsd and sid) are given the same value as argument | |
Arguments | idType | The type of channel, as indicated by one of the ID_* constants defined in section . Valid values for idType include: ID_DVB_SI_DIRECT . For other values this behaviour is not specified. |
dsd | The delivery system descriptor (tuning parameters) represented as a string whose characters shall be restricted to the ISO Latin-1 character set. Each character in the dsd represents a byte of a delivery system descriptor as defined by DVB-SI [[!EN300468]] section 6.2.13, such that a byte at position "i" in the delivery system descriptor is equal the Latin-1 character code of the character at position "i" in the dsd. | |
sid | The service ID, which must be within the range of 1 to 65535. |
Channel createChannelObject( Integer idType, Integer onid, Integer tsid, Integer sid, Integer sourceID, String ipBroadcastID ) | ||
Description | Creates a Channel object of the specified If the channel of the given If the channel of the given type can be created and arguments are considered valid and complete, then either:
| |
Arguments | idType | The type of channel, as indicated by one of the ID_* constants defined in section . |
onid | The original network ID. Optional argument that SHALL be specified when the idType specifies a channel of type ID_DVB_* , ID_IPTV_URI , or ID_ISDB_* and SHALL otherwise be ignored by the OITF. | |
tsid | The transport stream ID. Optional argument that MAY be specified when the idType specifies a channel of type ID_DVB_* , ID_IPTV_URI , or ID_ISDB_* and SHALL otherwise be ignored by the OITF. | |
sid | The service ID. Optional argument that SHALL be specified when the idType specifies a channel of type ID_DVB_* , ID_IPTV_URI , or ID_ISDB_* and SHALL otherwise be ignored by the OITF. | |
sourceID | The source_ID. Optional argument that SHALL be specified when the idType specifies a channel of type ID_ATSC_T and SHALL otherwise be ignored by the OITF. | |
ipBroadcastID | The DVB textual service identifier of the IP broadcast service, specified in the format “ServiceName.DomainName ” when idType specifies a channel of type ID_IPTV_SDS , or the URI of the IP broadcast service when idType specifies a channel of type ID_IPTV_URI . Optional argument that SHALL be specified when the idType specifies a channel of type ID_IPTV_SDS or ID_IPTV_URI and SHALL otherwise be ignored by the OITF. |
void setChannel( Channel channel, Boolean trickplay, String contentAccessDescriptorURL ) | ||
Description | Requests the OITF to switch a (logical or physical) tuner to the channel specified by channel and render the received broadcast content in the area of the browser allocated for the If the channel specifies an idType attribute value which is not supported by the OITF or a combination of properties that does not identify a valid channel, the request to switch channel SHALL fail and the OITF SHALL trigger the function specified by the onChannelChangeError property, specifying the value 0 (“Channel not supported by tuner”) for the If the channel specifies an idType attribute value supported by the OITF, and the combination of properties defines a valid channel, the OITF SHALL relay the channel switch request to a local physical tuner that is currently not in use by another If the channel specifies an IP broadcast channel, and the OITF supports idType The optional attribute If the Transport Stream cannot be found, either via the DSD or the (ONID,TSID) pair, then a call to onChannelChangeError with If the OITF succeeds in tuning to a valid transport stream but this transport stream does not contain the requested service in the PAT, the OITF SHALL remain tuned to that location and SHALL trigger a call to onChannelChangeError with If, following this procedure, the OITF selects a tuner that was not already being used to display video inside the If all of the following are true:
then the result of this operation SHALL be the same as calling
Otherwise, if any of the above conditions is not true, then:
the resulting current channel after any subsequent call to nextChannel() or prevChannel() is implementation dependent, however all appropriate functions SHALL be called and DOM events dispatched. The OITF SHALL visualize the video content received over the tuner in the area of the browser allocated for the | |
Arguments | channel | The channel to which a switched is requested. If the If |
trickplay | Optional flag indicating whether resources SHOULD be allocated to support trick play. This argument provides a hint to the receiver in order that it may allocate appropriate resources. Failure to allocate appropriate resources, due to a resource conflict, a lack of trickplay support, or due to the OITF ignoring this hint, SHALL have no effect on the success or failure of this method. If trickplay is not supported, this SHALL be indicated through the failure of later calls to methods invoking trickplay functionality. The timeShiftMode property defined in section shall provide information as to type of trickplay resources that should be allocated. If argument | |
contentAccessDescriptorURL | Optional argument containing a Content Access Streaming descriptor (the format of which is defined in Annex ) that can be included to provide additional information for dealing with IPTV broadcasts that are (partially) DRM-protected. The argument SHALL be undefined or null if it is not applicable. |
void prevChannel( ) | |
Description | Requests the OITF to switch the tuner that is currently in use by the If the current channel is not part of the channel list, it is implementation dependent whether the method call succeeds or fails and, if it succeeds, which channel is selected. In both cases, all appropriate functions SHALL be called and DOM events dispatched. If the previous channel is a channel that cannot be received over the tuner currently used by the If an error occurs during switching to the previous channel, the OITF SHALL trigger the function specified by the onChannelChangeError property with the appropriate If the OITF does not maintain the channel list and favourite list by itself, the request SHALL fail and the OITF SHALL trigger the onChannelChangeError function with the If successful, the OITF SHALL trigger the function specified by the onChannelChangeSucceeded property with the appropriate channel value, and also dispatch the corresponding DOM event. Calls to this method are valid in the Connecting, Presenting and Stopped states. They are not valid in the Unrealized state and SHALL fail. |
void nextChannel( ) | |
Description | Requests the OITF to switch the tuner that is currently in use by the If the current channel is not part of the channel list, it is implementation dependent whether the method call succeeds or fails and, if it succeeds, which channel is selected. In both cases, all appropriate functions SHALL be called and DOM events dispatched. If the next channel is channel that cannot be received over the tuner currently used by the If an error occurs during switching to the next channel, the OITF SHALL trigger the function specified by the onChannelChangeError property with the appropriate If the OITF does not maintain the channel list and favourite list by itself, the request SHALL fail and the OITF SHALL trigger the onChannelChangeError function with the If successful, the OITF SHALL trigger the function specified by the onChannelChangeSucceeded property with the appropriate Calls to this method are valid in the Connecting, Presenting and Stopped states. They are not valid in the Unrealized state and SHALL fail. |
void setFullScreen( Boolean fullscreen ) | ||
Description | Sets the rendering of the video content to full-screen (fullscreen = true ) or windowed (fullscreen = false ) mode (as per [Req. 5.7.1.c] of [[!CEA-2014-A]]). If this indicates a change in mode, this SHALL result in a change of the value of property fullScreen. Changing the mode SHALL NOT affect the z-index of the video object. | |
Arguments | fullScreen | Boolean to indicate whether video content should be rendered full-screen or not. |
Boolean setVolume( Integer volume ) | ||
Description | Adjusts the volume of the currently playing media to the volume as indicated by The method returns | |
Arguments | volume | Integer value between 0 up to and including 100 to indicate volume level. |
Integer getVolume( ) | |
Description | Returns the actual volume level set; for systems that do not support individual volume control of players, this method will have no effect and will always return 100. |
Integer release( ) | |
Description | Releases the decoder/tuner used for displaying the video broadcast inside the If the object was created with an allocationMethod of STATIC_ALLOCATION, the releasing of resources shall change this to DYNAMIC_ALLOCATION. |
void stop( ) | |
Description | Stop presenting broadcast video. If the Calling this method from the unrealized state SHALL have no effect. |
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onfocus | focus (as defined in section 5.2.1.2 of the DOM Level 3 Events specification as referenced in [[.OIPF_WSTVP2]]) | Bubbles: No Cancellable: No Context Info: None |
onblur | blur (as defined in section 5.2.1.2 of the DOM Level 3 Events specification as referenced in [[.OIPF_WSTVP2]]) | Bubbles: No Cancellable: No Context Info: None |
onFullScreenChange | FullScreenChange | Bubbles: No Cancellable: No Context Info: None |
onChannelChangeError | ChannelChangeError | Bubbles: No Cancellable: No Context Info: channel , errorState |
onChannelChangeSucceeded | ChannelChangeSucceeded | Bubbles: No Cancellable: No Context Info: channel |
onPlayStateChange | PlayStateChange | Bubbles: No Cancellable: No Context Info: state , error |
Note: these DOM events are directly dispatched to the event target, and will not bubble nor capture. Applications SHOULD NOT rely on receiving these events during the bubbling or the capturing phase. Applications that use DOM event handlers SHALL call the addEventListener()
method on the video/broadcast
object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
video/broadcast
objects SHALL support CSS-property z-index
, in both full-screen and windowed mode.
If an OITF has indicated support for recording functionality (i.e. by giving value true
to element <recording>
as specified in section in its capability description), the OITF SHALL support the following additional constants, properties and methods on the video/broadcast
object, in order to start a recording and/or time-shift of a current broadcast.
Note that this functionality is subject to the security model as specified in section .
This functionality is subject to the state transitions represented in the following state diagram:
Note that when the user switches to another channel whilst the current channel is being recorded using recordNow or the video/broadcast
object gets destroyed, the conflict resolution and the release of resources is implementation dependent. The OITF MAY report a recording error using a RecordingEvent>
with value 0 (“Unrealized”) for argument state
and with value 2 (“Tuner conflict”) for argument error
in that case.
Name | Value | Use |
---|---|---|
POSITION_START | 0 | Indicates a playback position relative to the start of the buffered content. |
POSITION_CURRENT | 1 | Indicates a playback position relative to the current playback position. |
POSITION_END | 2 | Indicates a playback position relative to the end of the buffered content. |
function onPlaySpeedChanged( Number speed ) |
The function that is called when the playback speed of a channel changes. The specified function is called with one argument,
If the playback reaches the beginning of the time-shift buffer at rewind playback speed, then the play state is changed to 2 ('paused') and a |
function onPlayPositionChanged( Integer position ) |
The function that is called when change occurs in the play position of a channel due to the use of trick play functions. The specified function is called with one argument,
|
readonly Integer playbackOffset |
Returns the playback position, specified as the positive offset of the live broadcast in seconds, in the currently rendered (timeshifted) broadcast. When the currentTimeShiftMode property has the value 1, the value of this property is |
readonly Integer maxOffset |
Returns the maximum playback offset, in seconds of the live broadcast, which is supported for the currently rendered (timeshifted) broadcast. If the maximum offset is unknown, the value of this property SHALL be When the currentTimeShiftMode property has the value 1, the value of this property is |
readonly Integer recordingState | ||||||||||||||||||||
Returns the state of the OITF's timeshift and recordNow functionality for the channel shown in the video/broadcast object. One of:
|
function onRecordingEvent( Integer state, Integer error, String recordingId ) | ||||||||||||||||||||||||||||||||||||||
This function is the DOM 0 event handler for notification of state changes of the recording functionality. The specified function is called with the following arguments:
|
readonly Integer playPosition |
If the value of the currentTimeShiftMode property is 1, the current playback position of the media, measured in milliseconds from the start of the timeshift buffer. If the value of the currentTimeShiftMode property is 2, the current playback position of the media, measured in milliseconds from the start of the media item. |
readonly Number playSpeed |
The current play speed of the media. |
readonly Number playSpeeds[ ] |
Returns the ordered list of playback speeds, expressed as values relative to the normal playback speed (1.0), at which the currently specified A/V content can be played (as a time-shifted broadcast in the video/broadcast object), or If the |
function onPlaySpeedsArrayChanged( ) |
The function that is called when the playSpeeds array values have changed. An application that makes use of the playSpeeds array needs to read the values of the playSpeeds property again. |
Integer timeShiftMode | ||||||||||
The time shift mode indicates the mode of operation for support of timeshift playback in the video/broadcast object. Valid values are:
|
readonly Integer currentTimeShiftMode | ||||||||
When timeshift is in operation the property indicates which resources are currently being used. Valid values are:
|
String recordNow( Integer duration ) | ||
Description | Starts recording the broadcast currently rendered in the Calling In other cases, this method returns a The OITF SHALL guarantee that recording identifiers are unique in relation to download identifiers and CODAsset identifiers. The method returns If the OITF supports metadata processing in the terminal, the fields of the resulting Recording object MAY be populated using metadata retrieved by the terminal. Otherwise, the values of these fields SHALL be implementation-dependent. | |
Arguments | duration | The minimum duration of the recording in seconds. A value of -1 indicates that the recording SHOULD continue until stopRecording() is called, storage space is exhausted, or an error occurs. In this case it is essential that stopRecording() is called later. |
void stopRecording( ) | |
Description | Stops the current recording started by recordNow(). |
Boolean pause( ) | |
Description | Pause playback of the broadcast. The action taken depends on the value of the timeShiftMode property. If the value of the timeShiftMode property is 0, if trick play is not supported for the channel currently being rendered, or if the current time shift mode is not supported for the type of channel being presented (e.g. attempting to use network resource to time shift a DVB or analogue channel) this method shall return false. If the timeshift mode is set to 1 or 3 (local resources) and if recording has not yet been started, this method will start recording the broadcast that is currently being rendered live (i.e., not time-shifted) in the If the timeshift mode is set to 2 (network resources) then the OITF shall follow the procedures defined in section and returns true. Since this operation is asynchronous when the procedure are executed successful the rendering of the broadcasted content is paused, i.e. a still-image video frame is shown, and If the specified timeshift mode is not supported, this method shall return false. Otherwise, this method shall return true. Acquiring the necessary resources to enable the specified timeshift mode may be an asynchronous operation; applications may receive updates of this process by registering a listener for If trick play is not supported for the channel currently being rendered, this method shall return This operation may be asynchronous, and presentation of the video may not pause until after this method returns. For this reason, a |
Boolean resume( ) | |
Description | Resumes playback of the time-shifted broadcast channel that is currently being rendered in the This operation may be asynchronous, and presentation of the video may not resume until after this method returns. For this reason, a The action taken depends on the value of the timeShiftMode property. If the value of the timeShiftMode property is 1 or 3 (local resources) then the OITF shall resume playback of the broadcast channel as specified above and return If the value of the timeShiftMode property is 2 (network resources) then the OITF shall follow the procedures defined in section and return After initial operation of If during fast forward the end of stream is reached the playback SHALL resume at normal speed and a If during rewinding the playback reaches the point that it cannot be rewound further, playback will automatically be paused (i.e. the play speed will be changed to 0) and a If for any of these events timeShiftMode is set to 3 and local resources are not available anymore then network sources SHALL be used according to the procedures defined in section . The OITF SHALL perform a smooth transition of the stream between local and network resources. |
Boolean setSpeed( Number speed ) | ||
Description | Sets the playback speed of the time-shifted broadcast to the value When playback is paused (i.e. by setting the play speed to 0), the last decoded frame of video is displayed. If the time-shifted broadcast cannot be played at the desired speed, specified as a value relative to the normal playback speed, the playback speed will be set to the best approximation of speed. Applications are not required to pause playback of the broadcast or take any other action before calling If the This operation may be asynchronous, and presentation of the video may not be affected until after this method returns. For this reason, a The action taken depends on the value of the timeShiftMode property. If the value of the timeShiftMode property is 1 or 3 (local resources) then the If the timeShiftMode is set to 2 (network resources) the OITF shall follow the procedures defined in section and return After initial operation of If during fast forward the end of stream is reached the playback SHALL resume at normal speed and a If during rewinding the playback has reaches the point that it cannot be rewound further, playback SHALL resume at normal speed and a If for any of these events if timeShiftMode is set to 3 and local resources are not available anymore then network sources SHALL be used according to the procedures defined in section . The OITF SHALL perform a smooth transition of the stream between local and network resources. | |
Arguments | speed | The desired relative playback speed, specified as a float value relative to the normal playback speed of 1.0. A negative value indicates reverse playback. If the time-shifted broadcast cannot be played at the desired speed, the playback speed will be set to the best approximation. |
Boolean seek( Integer offset, Integer reference ) | ||
Description | Sets the playback position of the time-shifted broadcast that is being rendered in the Applications are not required to pause playback of the broadcast or take any other action before calling This operation may be asynchronous, and presentation of the video may not be affected until after this method returns. For this reason, a The action taken depends on the value of the timeShiftMode property. If the timeShiftMode is set to 1 (local resources) the If the timeShiftMode is set to 2 (network resources) the OITF shall follow the procedures defined in section and return Note that if timeShiftMode is set to 3 then local resources are used over network resources. After initial operation of If during fastforward the end of stream is reached the playback SHALL resume at normal speed and a If for any of these events if timeShiftMode is set to 3 and local resources are not available anymore then network sources SHALL be used according to the procedures defined in section . The OITF SHALL perform a smooth transition of the stream between local and network resources. | |
Arguments | offset | The offset from the reference position, in seconds. This can be either a positive value to indicate a time later than the reference position or a negative value to indicate a time earlier than the reference position. |
reference | The reference point from which the offset SHALL be measured. The reference point can be either POSITION_CURRENT , POSITION_START , or POSITION_END . |
Boolean stopTimeshift( ) | |
Description | Stops rendering in time-shifted mode of the broadcast channel in the Returns |
In addition to these methods, the OITF SHALL support an additional optional attribute “offSet
” on the setChannel(Channel channel, Boolean trickplay, String contentAccessDescriptorURL) method of the video/broadcast
object as defined in section , if the OITF has indicated support for scheduled content over IP by defining one or more ID_IPTV_*
values as part of the transport attribute of the <video_broadcast>
element in the capability description.
void setChannel( Channel channel, Boolean trickplay, String contentAccessDescriptorURL, Integer offset ) | ||
Description | Requests the OITF to switch a (logical or physical) tuner to the specified channel and render the received broadcast content in the area of the browser allocated for the The additional | |
Arguments | channel | As defined for method setChannel() in section . |
trickplay | Optional flag as defined for method setChannel() in section . | |
contentAccessDescriptorURL | Optional flag as defined for method setChannel() in section . | |
offset | The optional offset attribute MAY be used to specify the desired offset with respect to the live broadcast in number of seconds from which the OITF SHOULD start playback immediately after the channel switch (whereby offset is given as a negative value for seeking to a time in the past). |
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onRecordingEvent | RecordingEvent | Bubbles: No Cancellable: No Context Info: state , error , recordingId |
onPlaySpeedChanged | PlaySpeedChanged | Bubbles: No Cancellable: No Context Info: speed |
onPlayPositionChanged | PlayPositionChanged | Bubbles: No Cancellable: No Context Info: position |
onPlaySpeedsArrayChanged | PlaySpeedsArrayChanged | Bubbles: No Cancellable: No Context Info: None |
addEventListener()
method on the video/broadcast
object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
The following properties and events SHALL be added to the video/broadcast
embedded object, if the OITF has indicated support for accessing DVB-SI EIT p/f information, by giving the value “true
” to element <clientMetadata>
and the value “eit-pf
” or “dvb-si
” to the type
attribute of that element as defined in section in their capability profile.
Access to these properties SHALL adhere to the security model in section . The associated permission name is “permission_metadata”.
readonly ProgrammeCollection programmes |
The collection of programmes available on the currently tuned channel. This list is a ProgrammeCollection as defined in section and is ordered by start time, so index 0 will always refer to the present programme (if this information is available). If the type attribute of the If the If the type attribute of the The programmes.length property SHALL indicate the number of items that are currently known and up to date (i.e. whereby the “startTime + duration” is not smaller than the current time). This may be 0 if no programme information is currently known for the currently tuned channel. In order to prevent misuse of this information, access to this property SHALL adhere to the security model in section . The associated permission name is “permission_metadata”. |
function onProgrammesChanged( ) |
The function that is called when the programmes property has been updated with new programme information, e.g. when the current broadcast programme is finished and a new one has started. The specified function is called with no arguments. |
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onProgrammesChanged | ProgrammesChanged | Bubbles: No Cancellable: No Context Info: None |
addEventListener()
method on the video/broadcast
object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
video/broadcast
object.
video/broadcast
object an OITF SHALL support the following intrinsic event properties and corresponding DOM events for the video/broadcast
object:
function onParentalRatingChange( String contentID, ParentalRatingCollection ratings, String DRMSystemID, Boolean blocked ) |
The function that is called whenever the parental rating of the content being played inside the embedded object changes. These events may occur at the start of a new content item, or during playback of a content item (e.g. during playback of linear TV content). The specified function is called with four arguments
|
function onParentalRatingError( String contentID, ParentalRatingCollection ratings, String DRMSystemID ) |
The function that is called when a parental rating error occurs during playback of A/V content inside the embedded object, and is triggered whenever one or more parental ratings are discovered and none of them are valid. A valid parental rating is defined as one which uses a parental rating scheme that is supported by the OITF and which has a parental rating value that is supported by the OITF. The specified function is called with three arguments
|
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onParentalRatingChange | ParentalRatingChange | Bubbles: No Cancellable: No Context Info: contentID , ratings , DRMSystemID , blocked
|
onParentalRatingError | ParentalRatingError | Bubbles: No Cancellable: No Context Info: contentID , ratings , DRMSystemID
|
addEventListener()
method on the video/broadcast
object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
This section SHALL apply to OITF and/or server devices which have indicated support for DRM protection by providing one or more <drm>
elements as specified in section :
For notifying JavaScript about DRM licensing errors during playback of DRM protected A/V content through the “video/broadcast
” object, an OITF SHALL support the following intrinsic event property and corresponding DOM event for the “video/broadcast
” object:
function onDRMRightsError( Integer errorState, String contentID, String DRMSystemID, String rightsIssuerURL ) |
The function that is called:
This may occur during playback, recording or timeshifting of DRM protected AV content. The specified function is called with four arguments
|
For the intrinsic events listed in the table below, a corresponding DOM event SHALL be generated, in the following manner:
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onDRMRightsError | DRMRightsError | Bubbles: No Cancellable: No Context Info: errorState , contentID , DRMSystemID , rightsIssuerURL |
Note: the above DOM event is directly dispatched to the event target, and will not bubble nor capture. Applications SHOULD NOT rely on receiving a DRMRightsError event during the bubbling or the capturing phase. Applications that use DOM event handlers SHALL call the addEventListener()
method on the video/broadcast
object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
If an OITF has indicated support for extended tuner control (i.e. by giving value true to element <extendedAVControl>
as specified in section in its capability description), the OITF SHALL support the following additional properties and methods on the video/broadcast object.
The functionality as described in this section is subject to the security model of section .
Note the property onChannelScan and methods startScan and stopScan have been moved to section .
readonly Channel currentChannel |
The channel currently being presented by this embedded object if the user has given permission to share this information, possibly through a mechanism outside the scope of this specification. If no channel is being presented, or if this information is not visible to the caller, the value of this property SHALL be null. The value of this property is not affected during timeshift operations and SHALL reflect the value prior to the start of a timeshift operation, for both local and network timeshift resources. |
The ChannelConfig
class provides the entry point for applications to get information about the list of channels available. It can be obtained in two ways:
video/broadcast
embedded object as defined in section .
The availability of the properties and methods are dependent on the capabilities description as specified in section . The following table provides a list of the capabilities and the associated properties and methods. If the capability is false the properties and methods SHALL NOT be available to the application. Properties and methods not listed in the following table SHALL be available to all applications as long as the OITF has indicated support for tuner control (i.e. <video_broadcast>true</video_broadcast>
as defined in section ) in their capability.
Capability | Properties | Methods |
---|---|---|
Element <extendedAVControl> is set to “true ” as defined in section . | onChannelScan | startScan() stopScan() |
Element <video_broadcast type="ID_IPTV_SDS"> is set as defined in section . | createChannelList() |
The functionality as described in this section is subject to the security model of section (for obtaining a ChannelConfig
object) and section (for properties and methods covered by the <extendedAVControl>
capability as defined below).
readonly ChannelList channelList |
The list of channels. If an OITF includes a platform-specific application that enables the end-user to choose a channel to be presented from a list then all the channels in the list offered to the user by that application SHALL be included in this ChannelList. The list of channels will be a subset of all those available to the OITF. The precise algorithm by which this subset is selected will be market and/or implementation dependent. For example;
The order of the channels in the list corresponds to the channel ordering as managed by the OITF. SHALL return the value The properties of channels making up the channel list SHALL be set by the OITF to the appropriate values as determined by the tables in section . The OITF SHALL store all these values as part of the channel list. Some values are set according to the data carried in the broadcast stream. In this case, the OITF MAY set these values to Note: There is no requirement for the OITF to pro-actively tune to every channel to gather such data. |
readonly FavouriteListCollection favouriteLists |
A list of favourite lists. SHALL return the value null if the favourite lists are not (partially) managed by the OITF (i.e., if the favourite lists information is managed entirely in the network). |
readonly FavouriteList currentFavouriteList |
Currently active Favourite channel list object. If The OITF SHALL return the value |
function onChannelScan( Integer scanEvent, Integer progress, Integer frequency, Integer signalStrength, Integer channelNumber, Integer channelType, Integer channelCount, Integer transponderCount, Channel newChannel ) | ||||||||||||||
This function is the DOM 0 event handler for events relating to channel scanning. On IP-only receivers, setting this property SHALL have no effect. The specified function is called with the following arguments:
|
function onChannelListUpdate( ) |
This function is the DOM 0 event handler for events relating to channel list updates. Upon receiving a ChannelListUpdate event, if an application has references to any Channel objects then it SHOULD dispose of them and rebuild its references. Where possible Channel objects are updated rather than removed, but their order in the ChannelConfig.all collection MAY have changed. Any lists created with ChannelConfig.createFilteredList() SHOULD be recreated in case channels have been removed. |
readonly Channel currentChannel |
The current channel of the OITF if the user has given permission to share this information, possibly through a mechanism outside the scope of this specification. If no channel is being presented, or if this information is not visible to the caller, the value of this property SHALL be In an OITF where exactly one In an OITF which is presenting more than one broadcast channel at the same time, the current channel of the OITF is the channel whose audio is being presented (as defined in the bindToCurrentChannel() method). If that current channel is under the control of a DAE application via a |
ChannelList createFilteredList( Boolean blocked, Boolean favourite, Boolean hidden, String favouriteListID ) | ||||||||||
Description | Create a filtered list of channels. Returns a subset of ChannelConfig.channelList. The blocked, favourite and hidden flags indicate whether a channel is included in the returned list. These flags correspond to the properties on Channel with the same names. Each flag MAY be set to one of three values:
A channel will only be added to the list if the values of all three flags allow it to be added. The | |||||||||
Arguments | blocked | Flag indicating whether manually blocked channels SHALL be added to the list. | ||||||||
favourite | Flag indicating whether favourite channels SHALL be added to the list. | |||||||||
hidden | Flag indicating whether hidden channels SHALL be added to the list. | |||||||||
favouriteListID | If the value of the favourite flag is |
void startScan( ChannelScanOptions options, ChannelScanParameters scanParameters ) | ||
Description | Start a scan for new channels on all available sources. When each source finishes scanning, an On IP-only receivers, this method SHALL have no effect. | |
Arguments | options | The options to the channel scan operation. |
scanParameters | The tuning parameters to be scanned. The value of this argument SHALL be one of the classes that implement the ChannelScanParameters interface and SHALL NOT be an instance of the ChannelScanParameters class. |
void stopScan( ) | |
Description | Stop a channel scan, if one is in progress. Any sources that have not finished scanning SHALL have their scans aborted and channel line-ups for SHALL NOT be changed. On IP-only receivers, this method SHALL have no effect. |
ChannelList createChannelList( String bdr ) | ||
Description | Creates a ChannelList object from the specified SD&S Broadcast Discovery Record. Channels in the returned channel list will not be included in the channel list that can be retrieved via calls to getChannelConfig(). | |
Arguments | bdr | An XML-encoded string containing an SD&S Broadcast Discovery Record as specified in [[.OIPF_META2]]. If the string is not a valid Broadcast Discovery Record, this method SHALL return null . |
Channel createChannelObject( Integer idType, Integer onid, Integer tsid, Integer sid, Integer sourceID, String ipBroadcastID ) | ||
Description | Creates a Channel object of the specified idType . The Channel object can subsequently be used by the setChannel method to switch a tuner to a channel that is not part of the channel list which was conveyed by the OITF to the server. The scope of the resulting Channel object is limited to the JavaScript environment (incl. video/broadcast object) to which the Channel object is returned, i.e. it does not get added to the channellist available through method getChannelConfig.
If the channel of the given If the channel of the given type can be created and arguments are considered valid and complete, the method SHALL return a Channel object whereby at a minimum the properties with the same names are given the same value as the given arguments of the | |
Arguments | idType | The type of channel, as indicated by one of the ID_* constants defined in section . |
onid | The original network ID. Optional argument that SHALL be specified when the idType specifies a channel of type ID_DVB_* or ID_ISDB_* . | |
tsid | The transport stream ID. Optional argument that MAY be specified when the idType specifies a channel of type ID_DVB_* or ID_ISDB_* . | |
sid | The service ID. Optional argument that SHALL be specified when the idType specifies a channel of type ID_DVB_* or ID_ISDB_* . | |
sourceID | The source_ID. Optional argument that SHALL be specified when the idType specifies a channel of type ID_ATSC_T . | |
ipBroadcastID | The DVB textual service identifier of the IP broadcast service, specified in the format “ServiceName.DomainName ”, or the URI of the IP broadcast service. Optional argument that SHALL be specified when the idType specifies a channel of type ID_IPTV_SDS or ID_IPTV_URI . |
ChannelScanParameters createChannelScanParametersObject( Integer idType ) | ||
Description | Create an instance of one of the subclasses of the ChannelScanParameters class (or one of its subclasses). The exact subclass that will be returned SHALL be determined by the value of the Initial values of all properties on the returned object SHALL be | |
Arguments | idType | The type of object to be created. Valid values are given by the following constants on the Channel class (see section ):
|
ChannelScanOptions createChannelScanOptionsObject( ) | |
Description | Create an instance of the ChannelScanOptions class. Initial values of all properties on the returned object SHALL be undefined . |
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onChannelScan | ChannelScan | Bubbles: No Cancellable: No Context Info: scanEvent , progress , frequency , signalStrength , channelNumber , channelType , channelCount , transponderCount , newChannel
|
onChannelListUpdate | ChannelListUpdate | Bubbles: No Cancellable: No Context Info: None |
addEventListener()
method on the ChannelConfig
object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
typedef Collection<Channel> ChannelList
A ChannelList
represents a collection of Channel objects. See Annex for the definition of the collection template.
In addition to the methods and properties defined for generic collections, the ChannelList
class supports the additional properties and methods defined below
Channel getChannel( String channelID ) | ||
Description | Return the first channel in the list with the specified channel identifier. Returns null if no corresponding channel can be found. | |
Arguments | channelID | The channel identifier of the channel to be retrieved, which is a value as defined for the ccid and ipBroadcastID properties of the Channel object as defined in section . |
Channel getChannelByTriplet( Integer onid, Integer tsid, Integer sid, Integer nid ) | ||
Description | Return the first (IPTV or non-IPTV) channel in the list that matches the specified DVB or ISDB triplet (original network ID, transport stream ID, service ID). Where no channels of type ID_ISDB_* or ID_DVB_* are available, or no channel identified by this triplet are found, this method SHALL return | |
Arguments | onid | The original network ID of the channel to be retrieved. |
tsid | The transport stream ID of the channel to be retrieved. If set to null the client SHALL retrieve the channel defined by the combination of onid and sid. This makes it possible to retrieve the correct channel also in case a remultiplexing took place which led to a changed tsid. | |
sid | The service ID of the channel to be retrieved. | |
nid | An optional argument, indicating the network id to be used select the channel when the channel list contains more than one entry with the same onid , tsid and sid . |
Channel getChannelBySourceID( Integer sourceID ) | ||
Description | Return the first (IPTV or non-IPTV) channel in the list with the specified ATSC source ID. Where no channels of type ID_ATSC_* are available, or no channel with the specified source ID is found in the channel list, this method SHALL return | |
Arguments | sourceID | The ATSC source_ID of the channel to be returned. |
The Channel
object represents a broadcast stream or service.
Channel
objects typically represent channels stored in the channel list (see section ). Channel
objects may also represent locally defined channels created by an application using the createChannelObject() methods on the video/broadcast embedded object or the ChannelConfig class or the createChannelList() method on the ChannelConfig class. Accessing the channel property of a ScheduledRecording object or Recording object which is scheduled on a locally defined channel SHALL return a Channel
object representing that locally defined channel.
Except for the hidden property, writing to the writable properties on a Channel
object SHALL have no effect for Channel
objects representing channels stored in the channel list. Applications SHOULD only change these writable properties of a locally defined channel before the Channel
object is referenced by another object or passed to an API call as an input parameter. The effects of writing to these properties at any other time is implementation dependent.
The Channel
class is defined as follows:
Name | Value | Use |
---|---|---|
TYPE_TV | 0 | Used in the channelType property to indicate a TV channel. |
TYPE_RADIO | 1 | Used in the channelType property to indicate a radio channel. |
TYPE_OTHER | 2 | Used in the channelType property to indicate that the type of the channel is unknown, or known but not of type TV or radio. |
TYPE_ALL | 128 | Used during channel scanning to indicate that all TV, radio and other channel types should scanned. |
TYPE_HBB_DATA | 256 | Reserved for data services defined by [[TS102796]]. |
ID_ANALOG | 0 | Used in the idType property to indicate an analogue channel identified by the property 'freq' and optionally 'cni' or 'name'. |
ID_DVB_C | 10 | Used in the idType property to indicate a DVB-C channel identified by the three properties: 'onid', 'tsid', 'sid'. |
ID_DVB_S | 11 | Used in the idType property to indicate a DVB-S channel identified by the three properties: 'onid', 'tsid', 'sid'. |
ID_DVB_T | 12 | Used in the idType property to indicate a DVB-T channel identified by the three properties: 'onid', 'tsid', 'sid'. |
ID_DVB_SI_DIRECT | 13 | Used in the idType property to indicate a channel that is identified through its delivery system descriptor as defined by DVB-SI [[!EN300468]] section 6.2.13. |
ID_DVB_C2 | 14 | Used in the idType property to indicate a DVB-C or DVB-C2 channel identified by the three properties: 'onid', 'tsid', 'sid'. |
ID_DVB_S2 | 15 | Used in the idType property to indicate a DVB-S or DVB-S2 channel identified by the three properties: 'onid', 'tsid', 'sid'. |
ID_DVB_T2 | 16 | Used in the idType property to indicate a DVB-T or DVB-T2 channel identified by the three properties: 'onid', 'tsid', 'sid'. |
ID_ISDB_C | 20 | Used in the idType property to indicate a ISDB-C channel identified by the three properties: 'onid', 'tsid', 'sid'. |
ID_ISDB_S | 21 | Used in the idType property to indicate a ISDB-S channel identified by the three properties: 'onid', 'tsid', 'sid'. |
ID_ISDB_T | 22 | Used in the idType property to indicate a ISDB-T channel identified by the three properties: 'onid', 'tsid', 'sid'. |
ID_ATSC_T | 30 | Used in the idType property to indicate a ATSC-T channel identified by the property 'sourceid'. |
ID_IPTV_SDS | 40 | Used in the idType property to indicate an IP broadcast channel identified through SD&S by a DVB textual service identifier specified in the format “ServiceName.DomainName” as value for property 'ipBroadcastID', with ServiceName and DomainName as defined in [[!DVB-IPTV]]. This idType SHALL be used to indicate Scheduled content service defined by [[.OIPF_PROT2]]. |
ID_IPTV_URI | 41 | Used in the idType property to indicate an IP broadcast channel identified by a DVB MCAST URI (i.e. dvb-mcast:// ) or by a URI referencing a HAS or MPEG DASH MPD (i.e. http:// or https:// ), as value for property ipBroadcastID. |
This section defines the properties of the Channel
object.
Properties that do not apply in a specific circumstance (e.g. onid
does not apply unless the channel is of type ID_DVB_*
or ID_ISDB_*
) SHALL be undefined
. The mapping to these properties is defined in section .
readonly Integer channelType |
The type of channel. The value MAY be indicated by one of the TYPE_* constants defined above. If the type of the channel is unknown then the value SHALL be “ NOTE: Values of this type between 256 and 511 are reserved for use by related specifications on request by liaison. |
readonly Integer idType |
The type of identification for the channel, as indicated by one of the ID_* constants defined in section |
readonly String ccid |
Unique identifier of a channel within the scope of the OITF. The ccid is defined by the OITF and SHALL have prefix ' Note: the format of this string is platform-dependent. |
readonly String tunerid |
Optional unique identifier of the tuner within the scope of the OITF that is able to receive the given channel. |
readonly Integer onid |
DVB or ISDB original network ID. |
readonly Integer nid |
The DVB or ISDB network ID. |
readonly Integer tsid |
DVB or ISDB transport stream ID. |
readonly Integer sid |
DVB or ISDB service ID. |
readonly Integer sourceID |
ATSC source_ID value. |
readonly Integer freq |
For analogue channels, the frequency of the video carrier in kHz. |
readonly Integer cni |
For analogue channels, the VPS/PDC confirmed network identifier. |
String name |
The name of the channel. Can be used for linking analog channels without CNI. Typically, it will contain the call sign of the station (e.g. 'HBO'). |
readonly Integer majorChannel |
The major channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_* or for channels of type ID_DVB_* or ID_IPTV_SDS in markets where logical channel numbers are used. |
readonly Integer minorChannel |
The minor channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_* . |
readonly String dsd |
For channels of type The Described in the syntax of JavaScript: let |
readonly Boolean favourite |
Flag indicating whether the channel is marked as a favourite channel or not in one of the favourite lists as defined by the property favIDs. |
readonly StringCollection favIDs |
The names of the favourite lists to which this channel belongs (see the favouriteLists property on the ChannelConfig class). |
readonly Boolean locked |
Flag indicating whether the current state of the parental control system prevents the channel from being viewed (e.g. a correct parental control pin has not been entered). Note that this property supports the option of client-based management of parental control without excluding server-side implementation of parental control. |
readonly Boolean manualBlock |
Flag indicating whether the user has manually blocked viewing of this channel. Manual blocking of a channel will treat the channel as if its parental rating value always exceeded the system threshold. Note that this property supports the option of client-based management of manual blocking without excluding server-side management of blocked channels. |
readonly String ipBroadcastID |
If the channel has an idType of If the channel has an idType of |
readonly Integer channelMaxBitRate |
If the channel has an idType of ID_IPTV_SDS , this property denotes the maximum bitrate associated to the channel. |
readonly Integer channelTTR |
If the channel has an idType of ID_IPTV_SDS , this property denotes the TimeToRenegotiate associated to the channel. |
readonly Boolean recordable |
Flag indicating whether the channel is available to the recording functionality of the OITF. If the value of the pvrSupport property on the application/oipfConfiguration object as defined in section is 0, this property SHALL be false for all Channel objects. |
This subsection SHALL apply for OITFs that have indicated <clientMetadata>
with value “true
” and a type
attribute with values “bcg
”, “sd-s
”, “eit-pf
” or “dvb-si
” as defined in section in their capability profile.
The OITF SHALL extend the Channel
class with the properties and methods described below.
The values of many of these properties may be derived from elements in the BCG metadata. For optional elements that are not present in the metadata, the default value of any property that derives its value from one of those elements SHALL be undefined
.
String longName |
The long name of the channel. If both short and long names are being transmitted, this property SHALL contain the long name of the station (e.g. 'Home Box Office'). If the long name is not available, this property SHALL be The value of this property may be derived from the Name element that is a child of the BCG |
String description |
The description of the channel. If no description is available, this property SHALL be The value of this field may be taken from the |
readonly Boolean authorised |
Flag indicating whether the receiver is currently authorised to view the channel. This describes the conditional access restrictions that may be imposed on the channel, rather than parental control restrictions. |
StringCollection genre |
A collection of genres that describe the channel. The value of this field may be taken from the |
readonly Boolean is3D |
Flag indicating whether the channel is a 3D channel. |
readonly Boolean isHD |
Flag indicating whether the channel is an HD channel. |
String logoURL |
The URL for the default logo image for this channel. The value of this field may be derived from the value of the first |
String getField( String fieldId ) | ||
Description | Get the value of the field referred to by fieldId that is contained in the BCG metadata for this channel. If the field does not exist, this method SHALL return undefined . | |
Arguments | fieldId | The name of the field whose value SHALL be retrieved. |
String getLogo( Integer width, Integer height ) | ||
Description | Get the URI for the logo image for this channel. The width and height parameters specify the desired width and height of the image; if an image of that size is not available, the URI of the logo with the closest available size not exceeding the specified dimensions SHALL be returned. If no image matches these criteria, this method SHALL return The URI returned SHALL be suitable for use as the The URIs returned by this method will be derived from the values of the | |
Arguments | width | The desired width of the image |
height | The desired height of the image |
typedef Collection<FavouriteList> FavouriteListCollection
The FavouriteListCollection
class represents a collection of FavouriteList objects. See Annex for the definition of the collection template. In addition to the methods and properties defined for generic collections, the FavouriteListCollection
class supports the additional methods defined below.
FavouriteList getFavouriteList( String favID ) | ||
Description | Return the first favourite list in the collection with the given favID . | |
Arguments | favID | The ID of a favourite list. |
If an OITF has indicated support for extended tuner control (i.e. by giving value true to element <extendedAVControl>
as specified in section in its capability description), the OITF SHALL support the following additional constants and methods on the FavouriteListCollection
object.
The functionality as described in this section is subject to the security model of section .
FavouriteList createFavouriteList( String name ) | ||
Description | Create a new favourite list and add it to the collection. The new favourite list SHALL be returned. | |
Arguments | name | The name to be associated to the new favourite list. |
Boolean remove( Integer index ) | ||
Description | Remove the list at the specified index from the collection. This method SHALL return true of the operation succeeded, or false if an invalid index was specified. | |
Arguments | index | The index of the list to be removed. |
Boolean commit( ) | |
Description | Commit any changes to the collection to persistent storage. This method SHALL return If a server has indicated that it requires control of the tuner functionality of an OITF in the server capability description for a particular service, then the OITF SHOULD send an updated Client Channel Listing to the server using HTTP POST over TLS as described in section . |
Boolean activateFavouriteList( String favID ) | ||
Description | Active the favourite list from the collection. This method SHALL return true if the operation succeeded, or false if an invalid index was specified. A newly created favourite list has to be committed before it can be activated. | |
Arguments | favID | The ID of a favourite list. |
typedef Collection<Channel> FavouriteList
The FavouriteList
class represents a list of favourite channels. See Annex for the definition of the collection template. In addition to the methods and properties defined for generic collections, the FavouriteList
class supports the additional properties and methods defined below.
In order to preserve backwards compatibility with already existing DAE content the JavaScript toString()
method SHALL return the FavouriteList.id
for FavouriteList
objects.
readonly String favID |
A unique identifier by which the favourite list can be identified. |
String name |
A descriptive name given to the favourite list. |
Channel getChannel( String channelID ) | ||
Description | Return the first channel in the favourite list with the specified channel identifier. Returns null if no corresponding channel can be found. | |
Arguments | channelID | The channel identifier of the channel to be retrieved, which is a value as defined for property ccid of the Channel object or a value as defined for property ipBroadcastID of the Channel object as defined in section . |
Channel getChannelByTriplet( Integer onid, Integer tsid, Integer sid ) | ||
Description | Return the first (IPTV or non-IPTV) channel in the list that matches the specified DVB or ISDB triplet (original network ID, transport stream ID, service ID). Where no channels of type ID_ISDB_* or ID_DVB_* are available, or no channel identified by this triplet are found, this method SHALL return | |
Arguments | onid | The original network ID of the channel to be retrieved. |
tsid | The transport stream ID of the channel to be retrieved. If set to null the client SHALL retrieve the channel defined by the combination of onid and sid . This makes it possible to retrieve the correct channel also in case a remultiplexing took place which led to a changed tsid . | |
sid | The service ID of the channel to be retrieved. |
Channel getChannelBySourceID( Integer sourceID ) | ||
Description | Return the first (IPTV or non-IPTV) channel in the list with the specified ATSC source ID. Where no channels of type ID_ATSC_* are available, or no channel with the specified source ID is found in the channel list, this method SHALL return | |
Arguments | sourceID | The ATSC source_ID of the channel to be returned. |
If an OITF has indicated support for extended tuner control (i.e. by giving value true to element <extendedAVControl>
as specified in section in its capability description), the OITF SHALL support the following additional constants and methods on the FavouriteList
object.
When the FavouriteList
object is updated with new or removed channels it does not take effect until the object is committed. Only after commit() will the updates of a FavouriteList
object become available to other DAE applications.
The name property of the FavouriteList
object SHALL be read/write for OITFs which are controlled by a service provider. The following methods SHALL also be supported:
Boolean insertBefore( Integer index, String ccid ) | ||
Description | Insert a new favourite into the favourites list at the specified index. In order to add a ccid at the end of the favourite list the index shall be equal to length . This method SHALL return true of the operation succeeded, or false if an invalid index was specified (e.g. index > (length ) ). | |
Arguments | index | The index in the list before which the favourite should be inserted. |
ccid | The ccid of the channel to be added. |
Boolean remove( Integer index ) | ||
Description | Remove the item at the specified index from the favourites list. Returns true of the operation succeeded, or false if an invalid index was specified. | |
Arguments | index | The index of the item to be removed. |
Boolean commit( ) | |
Description | Commit any changes to the favourites list to persistent storage. This method SHALL return If a server has indicated that it requires control of the tuner functionality of an OITF in the server capability description for a particular service, then the OITF SHOULD send an updated Client Channel Listing to the server using HTTP POST over TLS as described in section . |
ChannelScanOptions
class defines the options that should be applied during a channel scan operation. This class does not define parameters for the channel scan itself.
Integer channelType |
The types of channel that should be discovered during the scan. Valid values are TYPE_RADIO , TYPE_TV , or TYPE_OTHER or TYPE_ALL as defined in section . |
Boolean replaceExisting |
If true , any existing channels in the channel list managed by the OITF SHALL be removed and the new channel list SHALL consist only of channels found during the channel scan operation. If false , any channels discovered during the channel scan SHALL be added to the existing channel list. |
The DVBTChannelScanParameters
class represents the parameters needed to perform a channel scan on a DVB-T or DVB-T2 network. This class implements the interface defined by ChannelScanParameters, with the following additions.
The properties that are undefined when performing startScan() are considered to be auto detected.
Integer startFrequency |
The start frequency of the scan, in kHz. |
Integer endFrequency |
The end frequency of the scan, in kHz. |
Integer raster |
The raster size represented in kHz (typically 7000 or 8000). |
String ofdm | ||||||||||||||
The Orthogonal Frequency Division Multiplexing (OFDM) for the indicating frequency. Valid values are:
|
Integer modulationModes | ||||||||||||||
The modulation modes to be scanned. Valid values are:
|
String bandwidth | ||||||||||||||
The expected bandwidth. Valid values are:
|
Integer startFrequency |
The start frequency of the scan, in kHz. |
Integer endFrequency |
The end frequency of the scan, in kHz. |
Integer modulationModes | ||||||||
The modulation modes to be scanned. Valid values are:
|
String symbolRate |
A comma-separated list of the symbol rates to be scanned, in symbols/sec. |
Integer polarisation | ||||||||||
The polarisation to be scanned. Valid values are:
|
String codeRate |
The code rate, e.g. “3/4” or “5/6”. |
Number orbitalPosition |
The orbitalPosition property is used to resolve DiSEqC switch/motor. The value is the orbital position of the satellite, negative value for west, positive value for east. For example, Astra 19.2 East would have orbitalPosition 19.2. Thor 0.8 West would have orbitalPosition -0.8. |
Integer networkId |
The network ID of the network to be scanned, or undefined if all networks should be scanned. |
The DVBCChannelScanParameters
class represents the parameters needed to perform a channel scan on a DVB-C or DVB-C2 network. This class implements the interface defined by ChannelScanParameters, with the following additions.
The properties that are undefined when performing startScan() are considered to be auto detected.
Integer startFrequency |
The start frequency of the scan, in kHz. |
Integer endFrequency |
The end frequency of the scan, in kHz. |
Integer raster |
The raster size represented in kHz (typically 7000 or 8000). |
Boolean startNetworkScanOnNIT |
The scan mode for scanning. A false value indicates to scan complete range, a true value indicates scan terminates when a valid NIT is found. The frequency scan is replaced by a scan based on NIT. If networkId is set and the value of this property is set to true the scan continues until there is a match on both. |
Integer modulationModes | ||||||||||||||||
The modulation modes to be scanned. Valid values are:
|
String symbolRate |
A comma-separated list of the symbol rates to be scanned, in symbols/sec. |
Integer networkId |
The network ID of the network to be scanned, or undefined if all networks should be scanned. |
The OITF SHALL support the following additional methods on the video/broadcast object, in order to enable synchronization to broadcast events.
void addStreamEventListener( String targetURL, String eventName, EventListener listener ) | ||
Description | Add a listener for the specified DSM-CC stream event. Event triggers are carried in the stream as MPEG private data sections. For robustness, the section describing a particular trigger may be repeated several times. Each section has a version number which is used to disambiguate a new trigger for the same event (which will have a different version number) from a repeated instance of a previous trigger (which will have the same version number). When OITF detects a trigger corresponding to an event for which a listener has been registered, a DOM An event shall also be dispatched in case of error. An OITF SHALL dispatch only one DOM | |
Arguments | targetURL | The URL of the DSM-CC StreamEvent object or the event description file describing the event as defined in section 8.2 of [[!TS102809]] |
eventName | The name of the event (in the DSM-CC StreamEvent object) that should be subscribed to. | |
listener | The listener for the event. |
void removeStreamEventListener( String targetURL, String eventName, EventListener listener ) | ||
Description | Remove a stream event listener for the specified stream event name. | |
Arguments | targetURL | The URL of the DSM-CC StreamEvent object or the event description file describing the event as defined in section 8.2 of [[!TS102809]] |
eventName | The name of the event (in the DSM-CC StreamEvent object) that should be subscribed to. | |
listener | The listener for the event. |
The StreamEvent
class is a subclass of the DOM Event
class which notifies an application that a synchronisation trigger in a broadcast stream has been detected. This event also notifies an application when the event is no longer being monitored.
Instances of this event are directly dispatched to the event target, and will not bubble nor capture.
readonly String eventName |
The name of the stream event. |
readonly String data |
Data of the DSM-CC StreamEvent's event encoded in hexadecimal. For example: “0A10B81033” (for a message 5 bytes long). |
readonly String text |
Text data of the DSM-CC StreamEvent's event as a string, assuming UTF-8 as the encoding for the DSM-CC StreamEvent's event. Characters that cannot be transcoded SHALL be skipped. |
readonly String status |
The status of the event. Equal to “ An event SHALL be dispatched with an error status if:
|
The ATSCTChannelScanParameters
class represents the parameters needed to perform a channel scan on an ATSC-T network. This class implements the interface defined by ChannelScanParameters, with the following additions.
The properties that are undefined
when performing startScan() are considered to be auto detected.
Integer startFrequency |
The start frequency of the scan, in kHz. |
Integer endFrequency |
The end frequency of the scan, in kHz. |
Integer raster |
The raster size represented in kHz (typically 7000 or 8000). |
Integer modulationModes | ||||||||||
The modulation modes to be scanned. Valid values are:
|
This section specifies several extensions to the audio object and the video object defined in section 5.7.1 of [[!CEA-2014-A]]. It also contains a subsection (i.e. section ) that defines the audio playback from memory API.
NOTE: Most of the text in this section was found in Annex B of previous versions of this specification. It has been moved here and re-structured for readability. No additional text has been included from CEA-2014-A.
The HTML object element (defined in section 4.8.4 of the HTML5 specification as referenced in [[.OIPF_WSTVP2]]) SHALL support presentation of video and audio or just audio. This presentation SHALL be indicated by setting the type attribute to one of the “video/” or “audio/” MIME types that is listed in section 3 of [[.OIPF_MEDIA2]] and corresponds to a combination of system layer format, video format and audio format that is supported by the OITF.
When an HTML object is presenting video or audio as defined in this section, the following requirements shall apply:
HTMLObjectElement
as defined in the HTML5 specification as referenced in [[!OIPF_WSTVP2]].
Property type and name | Property Definition |
---|---|
String data | String data [RW] — media URL. If the value of data is changed while media is playing playback is stopped (resulting in a play state change). The default value is the empty string. If the value of this attribute is changed, the related data-attribute inside the DOM tree SHOULD be changed accordingly. If the value of this attribute is set to an empty string or is changed, the resources (files, server connections, etc…) currently owned by the object SHALL be released. The value set in this property MAY include a temporal fragment interval according to section 4.2.1 of [[!Media-Fragments-URI]] in which case the derived begin time and end time SHALL serve as bounds for playback. The Normal Play Time format SHALL be used. The begin time SHALL behave as start-of-media and the end time SHALL behave as end-of-media. If the value of temporal fragment interval is changed then there will be no change in the play state unless the interval is changed to period outside of the current play position. |
readonly Number playPosition | The play position in number of milliseconds since the beginning as denoted by the server (i.e. in relation to NPT 0.0 as described in section 3.6 of [[!RTSP]]) of the media referenced by attribute data when data refers to a single media item. If the play position cannot be determined, the playPosition SHALL be undefined. |
readonly Number playTime | The estimated total duration in milliseconds of the media referenced by data when data refers to a single media item. If the duration of the media cannot be determined, the playTime SHALL be undefined. |
readonly Number playState | Indication of the current play state as follows:
|
readonly Number error | Error details; only significant if the value of playState equals 6:
|
readonly Number speed | Play speed relative to real-time as defined by 5.7.1.f.6 of [[!CEA-2014-A]]. |
Object onPlayStateChange | DOM-0 event handler called when the value of the playState property changes as defined by 5.7.1.f.9 of [[!CEA-2014-A]]. |
Property type and name | Property Definition |
---|---|
String width | The width of the area used for rendering the video object. This property is only writable if property fullScreen has value false . The effect of changes to width SHALL be in accordance with requirement 5.7.1.c of [[!CEA-2014-A]]. |
String height | The height of the area used for rendering the video object. This property is only writable if property fullScreen has value false . The effect of changes to width SHALL be in accordance with requirement 5.7.1.c of [[!CEA-2014-A]]. |
readonly Boolean fullScreen | Indicates whether an object presenting video is in full screen mode or not - as defined in by 5.7.1.g.3 of [[!CEA-2014-A]]. |
Object onFullScreenChange | DOM-0 event handler called when the value of fullScreen changes as defined in by 5.7.1.g.4 of [[!CEA-2014-A]]. |
Object onfocus | DOM-0 event handler called when the object gains focus as defined by 5.7.1.g.7 of [[!CEA-2014-A]]. |
Object onblur | DOM-0 event handler called when the object loses focus as defined by 5.7.1.g.8 of [[!CEA-2014-A]]. |
Method signature | Method Definition |
---|---|
Boolean play(Number speed) | Plays the media referenced by data, starting at the current play position denoted by playPosition , at the supported speed closest to the value of attribute speed. Negative speeds reverse playback. If no speed is specified, it defaults to 1. A speed of 0 will pause playback. This method SHALL always return true . If the playback reached the beginning of the media at rewind playback speed, then the play state SHALL be changed to 2 ('paused'). A play speed event (see section of this specification) SHALL be generated when the operation has completed, regardless of the new play speed. If the play speed is not changed, the argument of the event SHALL be set to the previous play speed. |
Boolean stop() | Stops playback and resets the playPosition to 0 as defined by 5.7.1.f.12 of [[!CEA-2014-A]]. |
Boolean seek(Number pos) | If If the player is in state 2 ('paused'), then the If the player is in states 0 (“stopped”), 5 (“finished”) or 6 (“error”), then the new play position SHALL be retained and SHALL be used (if possible) as the starting position for playing back the content item indicated by the data property when the If the player is in states 3 (“connecting”) or 4 (“buffering”) then the If the new playback position is valid, the value of the Returns |
Boolean setVolume(Number volume) | Sets the audio volume as defined by 5.7.1.f.14 of [[!CEA-2014-A]] |
Method signature | Method Definition |
---|---|
setFullScreen(Boolean fullscreen) | Sets the object to full screen mode or windowed mode as defined by 5.7.1.g.5 of [[!CEA-2014-A]]. |
focus() | Sets the input focus to this object as defined by 5.7.1.g.6 of [[!CEA-2014-A]]. |
CEA-2014 Requirement | Summary |
---|---|
5.7.1.a.3 | Indication of the initial aspect ratio of the video content. |
5.7.1.b.3 | Access to both video and audio objects by name/id through the HTMLDocument interface. |
5.7.1.c | Full-screen or windowed mode for video objects. |
5.7.1.d | CSS properties that apply to video objects. |
5.7.1.e | CSS z-index, opacity and RGBA colour values. NOTE: In this specification, the value of the “ |
The following state transition diagram SHOULD be used for an A/V Control object:
The following clarifications apply:
playState
property.
allocationMethod
property is DYNAMIC_ALLOCATION
the following SHALL apply:connecting
'), state 4 ('buffering
') or during state transitions from state 3 ('connecting
') to state 4 ('buffering
'), from state 4 ('buffering
') to state 1 ('playing
') or from state 0 ('stopped
') or from state 3 ('connecting
') to state 2 ('paused
').
error
') with a detailed error code of 3 ('insufficient resources
').
error
') or 0 ('stopped
') or 5 ('finished
') are reached. persist
property of A/V Control objects.
data
attribute and/or the type attribute of the HTMLObjectElement
representing the A/V Control object is given a different value, the object SHALL go to state 0 ('stopped
').
connecting
').
finished
') in addition to generating a playback speed change of zero.
play()
with a speed in the positive direction (forward or > 0) and there is no content available then the request fails.
paused
') in addition to generating a playback speed change of zero.
play()
with a speed in the negative direction (rewind or < 0) and there is no content available then the request fails.
seek()
is performed beyond the available content the request is rejected and the current playout is maintained.
display:none
will affect the object state while visibility:hidden
will not. When an A/V Control object is destroyed (e.g. by the A/V Control object being garbage collected, or because of a page transition within the application), presentation of streamed audio or video shall be terminated.
If an A/V Control object is used to play streamed content using either RTSP or HTTP the OITF then the following holds:
play(0)
is called in state 0 ('stopped
'), the A/V Control object SHALL automatically go to play state 2 ('paused
'). The necessary resources are secured and no external signalling is performed.
play(0)
is called in the connecting or buffering state, the A/V Control object SHALL automatically go to play state 2 ('paused
')
play()
is called in the paused state with an argument other than 0, the A/V Control object SHALL transition to one of the following states as follows:If an A/V Control object is used to play content that has been downloaded and stored on the OITF (by using method setSource() as defined in section ) then the following holds:
play()
method is called before sufficient data has been download to initiate playback, then the play state of the A/V Control object SHALL be set to 6 ('error') with a detailed error code of 5 (“content not available”).play()
method is called whilst the content is still downloading and has not yet successfully completed, then the play state of the A/V Control object SHALL be set to 6 ('error') with a detailed error code of 5 (“content not available”).
If an A/V Control object is used to play content that has been recorded or is being recorded on the OITF (by using method setSource() as defined in section ) then the following holds:
play()
method is called before sufficient data has been recorded to initiate playback, then the play state of the A/V Control object SHALL be set to 6 ('error') with a detailed error code of 5 (“content not available”).
If the OITF indicates support through the <temporalClipping>
capability indicator (see section ) for playing content fragments then it SHALL support the Media Fragment URI [[!Media-Fragments-URI]] according to section .
If an A/V Control object has input focus:
VK_OK
, VK_PLAY
, VK_PAUSE
, VK_PLAY_PAUSE
, VK_STOP
, VK_FAST_FWD
, VK_REWIND
, VK_NEXT
or VK_PREV
keys.
As specified in section , an OITF SHALL support setting up the A/V stream using the information provided by a valid Content Access Streaming Descriptor referred to by the 'data
' attribute. To this end, the OITF SHALL fetch the Content Access Streaming Descriptor from the URL provided by the data
attribute, after which the descriptor SHALL be interpreted, resulting in an appropriate <ContentURL>
to be selected (e.g. based on which DRM system the OITF supports). The OITF SHALL then initiate a streaming CoD session to the selected <ContentURL>
, after which playback can be started when the play()
method is invoked.
The OITF SHALL pass included DRM-information of the selected content and DRM system ID as part of the <DRMControlInformation>
elements of a Content Access Streaming Descriptor to the DRM agent, if it supports a DRM agent with a matching DRMSystemID
as per section .
If the Content Access Streaming Descriptor is not valid according to the XML Schema and semantics as defined in Annex , the A/V Control object SHALL go to playState 6 (i.e. error), with error value 4, which is defined as follows in addition to the error states identified by bullet 5 of [Req. 5.7.1.f] of CEA-2014-A:
For more information about setting up the A/V stream based on a Content Access Streaming descriptor, see section , section and Annex .
The following additional properties SHALL be supported on the audio object and video object defined in section 5.7.1 of [[!CEA-2014-A]].
function onPlaySpeedChanged( Number speed ) |
The function that is called when the playback speed of the media changes. The specified function is called with one argument,
The behaviour of the A/V Control object when the end of media (or the end of the currently-available media) is reached is defined in section . |
function onPlayPositionChanged( Integer position ) |
The function that is called when change occurs in the play position of the media due to the use of trick play functions. The specified function is called with one argument,
The behaviour of the A/V Control object when the end of media (or the end of the currently-available media) is reached is defined in section . |
readonly Number playSpeeds[ ] |
Returns an ordered list of playback speeds, expressed as values relative to the normal playback speed (1.0), at which the currently specified A/V content can be played (either through an CEA-2014 audio or video object), or undefined if the supported playback speeds are not (yet) known. |
function onPlaySpeedsArrayChanged( ) |
The function that is called when the playSpeeds array values have changed. An application that makes use of the playSpeeds array needs to read the values of the playSpeeds property again. |
readonly String oitfSourceIPAddress |
The OITF source IP address for RTSP or HTTP signalling, as well as, the address where the RTSP stream is expected to arrive. The information shall be available in “buffering ”, “paused ” or “playing ” states. |
readonly String oitfSourcePortAddress |
The OITF Port Address where the RTSP stream is expected to arrive. The information shall be available in “buffering ”, “paused ” or “playing ” states. |
Boolean oitfNoRTSPSessionControl |
When the oitfNoRTSPSessionControl is set to true then the OITF SHALL NOT signal the RTSP messages DESCRIBE, SETUP or TEARDOWN. |
String oitfRTSPSessionId |
The sessionId to be used by the A/V Control object when signalling RTSP. This property is only applicable when property oitfNoRTSPSessionControl is set to true . |
For the intrinsic events listed in the table below, a corresponding DOM event SHALL be generated in the following manner:
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onPlaySpeedChanged | PlaySpeedChanged | Bubbles: No Cancellable: No Context Info: speed |
onPlayPositionChanged | PlayPositionChanged | Bubbles: No Cancellable: No Context Info: position |
onPlaySpeedsArrayChanged | PlaySpeedsArrayChanged | Bubbles: No Cancellable: No Context Info: None |
addEventListener()
method on the A/V Control object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
To support the selection of specific A/V components for playback (e.g. a specific subtitle language, audio language, or camera angle), the classes defined in sections — SHALL be supported and the constants, properties and methods defined in section SHALL be supported on the A/V Control object.
For parental rating errors during playback of A/V content through the CEA-2014 A/V Control object (as defined in section 5.7.1 of [[!CEA-2014-A]]) an OITF SHALL support the following intrinsic event properties and corresponding DOM events for the CEA-2014 A/V Control object.
function onParentalRatingChange( String contentID, ParentalRatingCollection ratings, String DRMSystemID, Boolean blocked ) |
The function that is called whenever the parental rating of the content being played inside the A/V Control object changes. These events may occur at the start of a new content item, or during playback of a content item (e.g. during playback of A/V streaming content). The specified function is called with four arguments
|
function onParentalRatingError( String contentID, ParentalRatingCollection ratings, String DRMSystemID ) |
The function that is called when a parental rating error occurs during playback of A/V content inside the A/V Control object, and is triggered whenever one or more parental ratings are discovered and none of them are valid. A valid parental rating is defined as one which uses a parental rating scheme that is supported by the OITF and which has a parental rating value that is supported by the OITF. The specified function is called with three arguments
|
For the intrinsic events listed in the table below, a corresponding DOM event SHALL be generated in the following manner:
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onParentalRatingChange | ParentalRatingChange | Bubbles: No Cancellable: No Context Info: contentID , ratings , DRMSystemID , blocked |
onParentalRatingError | ParentalRatingError | Bubbles: No Cancellable: No Context Info: contentID , ratings , DRMSystemID |
Note: the above DOM events are directly dispatched to the event target, and will not bubble nor capture. Applications SHOULD NOT rely on receiving these events during the bubbling or the capturing phase. The applications that use DOM event handlers SHALL call the addEventListener()
method on the CEA-2014 A/V embedded object. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
This section SHALL apply to OITF and/or server devices which have indicated support for DRM protection by providing one or more <drm>
elements as specified in section :
For notifying JavaScript about DRM licensing errors during playback of DRM protected A/V content through the CEA-2014 A/V Control object (as defined by as defined in section 5.7.1 of CEA-2014-A) an OITF SHALL support the following intrinsic event property and corresponding DOM event, for the CEA-2014 A/V Control object.
function onDRMRightsError( Integer errorState, String contentID, String DRMSystemID, String rightsIssuerURL ) |
The function that is called:
This may occur during playback, recording or timeshifting of DRM protected AV content. The specified function is called with four arguments
|
For the intrinsic events listed in the table below, a corresponding DOM event SHALL be generated in the following manner:
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onDRMRightsError | DRMRightsError | Bubbles: No Cancellable: No Context Info: errorState , contentID , DRMSystemID , rightsIssuerURL
|
addEventListener()
method on the CEA-2014 A/V Control object. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
OITFs that support the API defined in sections , and SHALL support playback of downloaded and / or recorded content as follows:
uri
property of the Download or Recording object to be played back.
src
attribute of a <video>
element to that returned from the uri
property of the Download or Recording object to be played back.
Boolean setSource( String id ) | ||
Description | Change the content item to be played by the A/V Control object to the content item represented by id. Valid IDs include:
Support for each of these identifier types depends on the support for the individual sections in which they are defined. Depending on the type of content for id, the following semantics apply:
If If If This property is present only in the following DAE versions (1.0, 1.1)
If the content item represented by | |
Arguments | id | The ID of the item to be played. |
If an OITF has indicated support for playback control as defined in section in its capability description, the A/V Control object defined in section 5.7.1 of [[!CEA-2014-A]] SHALL support the properties and methods defined in this section as follows;
type
attribute of the <playbackControl>
element includes “buffering
” then onReadyToPlay, readyToPlay, supportedStrategies, getAvailablePlayTime and setBufferingStrategy SHALL be supported.
type
attribute of the <playbackControl>
element includes “has
” then onRepresentationChange, onPeriodChange, availableRepresentationsBandwidth, currentRepresentation, maxRepresentation, minRepresentation and setRepresentationStrategy SHALL be supported.
type
attribute of the <playbackControl>
element includes “dash
” then onRepresentationChange, onPeriodChange, availableRepresentationsBandwidth, currentRepresentation, maxRepresentation, minRepresentation, setRepresentationStrategy, availableRepresentationIds and currentRepresentationId SHALL be supported
Boolean readyToPlay |
Property that can be used to inspect whether or not enough (as determined by the OITF) of the media after the current play position has been buffered to start playback. Returns |
function onReadyToPlay |
The function that gets called when enough (as determined by the OITF) of the media after the current play position has been buffered to start/continue playback. This event SHALL be generated whenever there is a state transition between state 4 (“ |
function onRepresentationChange( Integer bandwidth, Integer position, String id ) |
When a HAS stream is being presented the function that SHALL be called when the stream changes Representation and the bandwidth is modified. The bandwidth relates to the bandwidth attribute in the Representation element of HTTP Adaptive Streaming manifest. The stream change relates to presentation changes and not necessarily how the stream is buffered. Note that multiple streams representing different qualities may be buffered and therefore is unreliable to indicate bandwidth change. The specified function SHALL be called with three arguments
|
function onPeriodChange( IntegerCollection bandwidths, Integer position, StringCollection ids ) |
When a HAS stream or a DASH stream is being presented the function that SHALL be called immediately when a new manifest for a new Period is loaded AND the Representations and associated bandwidth are different to the current manifest. The bandwidth relates to the bandwidth attribute in the Representation element of the manifest. Note this should allow for an application to influence the buffering strategy before the position is reached but it not guaranteed. In which case the buffering strategy may take effect after presentation of the new Period has been initiated. When the function is called it should be possible to modify the selected max and min Representation. The specified function SHALL be called with three arguments
|
readonly IntegerCollection availableRepresentationsBandwidth |
When a HAS stream or a DASH stream is being presented, return an ordered list of the available Representations. Each Representation SHALL be identified by its respective bandwidth. Each Representation is identified by the bandwidth attribute in the Representation element of the MPD (as defined in [[!OIPF_HAS2]] or [[!DASH]]). |
readonly StringCollection availableRepresentationIds |
If a stream is being presented that is described by an MPD and the MPD includes an id attribute on the representation then return an ordered list of the available Representations identified by the id . If the MPD does not include this attribute or if the player is a state other than play state 1 (playing ) then the value SHALL be undefined. |
readonly Integer currentRepresentation |
When a HAS stream or DASH stream is being presented return Representation that is being presented. The Representation is identified by the bandwidth attribute in the Representation element of the MPD (as defined in [[!OIPF_HAS2]] or [[!DASH]]). The bandwidth is only available in play state 1 ('playing '), in other states the value is undefined. |
readonly String currentRepresentationId |
If a stream is being presented that is described by an MPD and the MPD includes an id attribute on the representation then return the id of the Representation that is being presented. If any other type of stream is being presented or if the player is in a state other than play state 1 ('playing ') then the value is undefined. |
readonly Integer maxRepresentation |
Returns the maximum supported bandwidth from the availableRepresentationsBandwidth property. Note that calling the setRepresentationStrategy() method may modify the maximum bandwidth. |
readonly Integer minRepresentation |
Returns the minumum supported bandwidth from the availableRepresentationsBandwidth property. Note that calling the setRepresentationStrategy() method may modify the minimum bandwidth. |
readonly StringCollection supportedStrategies |
The list of the supported buffering strategies. The supported strategy names are listed below. Note that other strategies may be supported.
|
Integer getAvailablePlayTime( Boolean fromPlayPosition ) | ||
Description | Returns how much content is available for playback. If argument If argument | |
Arguments | fromPlayPosition | Indicates whether the available play time should be calculated from the current play position onwards, or from the start of the buffer. |
Boolean setBufferingStrategy( String name ) | ||
Description | Request to change the buffering strategy to that given by name. This method can be called during any play state, including play state 1 (' This method returns If the OITF does not distinguish between the two modes, the method returns | |
Arguments | name | The name of the requested buffering strategy. Valid values include: “ “ These values are not case sensitive. The default strategy if the method is not called is “ |
Boolean setRepresentationStrategyStrategy( Integer maxBandwidth, Integer minBandwidth, Integer position ) | ||
Description | Request to change the strategy for selecting which Representation to use from the specified position for HTTP Adaptive Streaming or MPEG DASH. The indicated bandwidth represents the maximum and minimum bandwidth to be allowed. Representations outside of the upper and lower limits SHALL NOT be selected. If data has already been fetched outside these limits then there is no requirement to discard that data. This method can be called during any play state, including play state 1 (' The value of If the Period changes and no Representations remain that are within the set Representation strategy then the | |
Arguments | maxBandwidth | The maximum bandwidth allowed for the presentation of adaptive content. If value set to undefined the limit is set by the OITF. |
minBandwidth | The minimum bandwidth allowed for the presentation of adaptive content. If value set to undefined the limit is set by the OITF. | |
position | This argument is optional. If present it indicates the position at which the new Representation strategy shall be applied. The position should be the same as the position returned in onPeriodChange() to make for a smooth transition to a new strategy. |
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onReadyToPlay | ReadyToPlay | Bubbles: No Cancellable: No Context Info: None |
onRepresentationChange | RepresentationChange | Bubbles: No Cancellable: No Context Info: bandwidth , position |
onPeriodChange | PeriodChange | Bubbles: No Cancellable: No Context Info: bandwidths , position |
addEventListener()
method on the CEA-2014 A/V Control object. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onfocus | focus (as defined in section 5.2.1.2 of the DOM Level 3 Events specification as referenced in [[.OIPF_WSTVP2]]) | Bubbles: No Cancellable: No Context Info: None |
onblur | blur (as defined in section 5.2.1.2 of the DOM Level 3 Events specification as referenced in [[.OIPF_WSTVP2]]) | Bubbles: No Cancellable: No Context Info: None |
onPlayStateChange | PlayStateChange | Bubbles: No Cancellable: No Context Info: None |
onFullScreenChange | FullScreenChange | Bubbles: No Cancellable: No Context Info: None |
Note: these DOM events are directly dispatched to the event target, and will not bubble nor capture. Applications SHOULD NOT rely on receiving these events during the bubbling or the capturing phase. Applications that use DOM event handlers SHALL call the addEventListener()
method on the CEA-2014 A/V Control object. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
When handling PlayStateChange
events, since the property "playState
" of the A/V Control object always returns the current play state, there are a number of considerations:
playState
property inside a PlayStateChange
event handler, its value will be the current state of the related media object that may be different from the state transition that caused the handler to be called.
playState
property may change value during the execution of the PlayStateChange
event handler.
This section describes how an A/V Control object can be used for the playback of audio from memory.
The A/V Control object SHALL be used to play audio clips from memory. The value of the A/V Control object's type attribute SHALL be set to one of the values defined in section 8.2.1 of [[.OIPF_MEDIA2]]. The <object>
element representing the A/V Control object MAY contain <param
elements to set the value of parameters affecting the playback of the clip, For audio from memory, valid parameters are:
cache
— a value of “true
” indicates that the audio clip should be played from memory. This parameter SHALL be included for all clips to be played from memory. For formats which can not be played from memory, or for values of the parameter other than “true”, this parameter SHALL have no effect. The default value of this parameter SHALL be “false
”.
loop
— indicates the number of times the audio clip SHALL be played when play()
is called. The value SHALL be positive integers or the string “infinite
”, which SHALL play the audio clip continuously until stop()
is called or the data property is set to null
. The default value of this parameter SHALL be “1”.
Simultaneous playback of multiple audio clips from memory, or simultaneous playback of audio clips from memory and streaming audio or video presentation SHALL follow the behaviour described in section .
For A/V Control objects used to play audio from memory, the following properties and methods SHALL be supported:
data
, playState
, error
and onPlayStateChange
, as defined in Req. 5.7.1.f of [[!CEA-2014-A]].
play()
and stop()
, as defined in Req. 5.7.1.f of [[!CEA-2014-A]].
When the play()
method is called, if a <param>
element as described above is present where the cache
parameter is set to the value “true
”, the OITF SHALL:
If the A/V Control object's data property refers to a file in a format other than those listed in section 8.2.1 of [[.OIPF_MEDIA2]], the A/V Control object SHALL NOT attempt to play the file from memory.
The <param>
element as defined in section of this document SHALL be made accessible through a DOM HTMLParamElement
object.
The following HTML document shows an example of a script to start the playback of memory audio:
<head> : <script type="text/javascript"> function startBGM() { document.getElementById("aid1").play(1); } : </script> </head> <body> <object type="audio/mp4" id="aid1" data="http://www.avsource.com/audio/bgm.aac"> <param name="cache" value="true"/> <param name="loop" value="infinite"/> </object> : <div id="btn1" onclick="startBGM()"><img src="start1.gif"/></div> : </body>
The following HTML document shows an example of a script to stop the playback of memory audio:
<head> : <script type="text/javascript"> function stopBGM() { document.getElementById("aid1").stop(); } : </script> </head> <body> <object type="audio/mp4" id="aid1" data="http://www.avsource.com/audio/bgm.aac"> <param name="cache" value="true"/> <param name="loop" value="infinite"/> </object> : <div id="btn2" onclick="stopBGM()"><img src="stop1.gif"/></div> : </body>
The following additional method SHALL be supported on the audio object and video object defined in section 5.7.1 of [[!CEA-2014-A]].
Boolean queue( String uri ) | ||
Description | Queue the media referred to by If If an A/V Control object is an audio object as defined by section 5.7.1.b.1 of [[!CEA-2014-A]] then queued media items shall only contain audio. If an A/V Control object is a video object as defined by section 5.7.1.b.2 of [[!CEA-2014-A]] then queued media items shall always contain video and may also contain audio and other media components. Applications SHOULD ensure the value of When the current media item has finished playing, the A/V Control object shall transition to the finished state, update the value of the If the queued media item can be played without transitioning to the connecting or buffering states, then the A/V Control object SHALL generate a If playback of the current media item is stopped using the Play speed is not affected by transitioning between the current and queued media item. To avoid race conditions when queuing multiple items for playback, applications should wait for the currently queued item to begin playback before queuing subsequent items, e.g. by queuing the subsequent item when the A/V Control object transitions to the | |
Arguments | uri | The media item to be queued, or null to remove the currently-queued item. |
All URIs that are supported by the OITF as the data
property of the object
element SHALL be supported as the uri
argument to the queue method. Further;
uri
argument to the queue()
method SHALL be supported in the <contentURL>
element.
For example, an OITF supporting HTTP streaming and downloaded content but none of local PVR, HTTP adaptive streaming or RTSP streaming will support the following as the uri element;
<contentURL>
element is an HTTP URL referencing the complete media item (i.e. without a fragment)
<contentURL>
element is an HTTP URL referencing part of the media item (i.e. with a media time fragment)
Further, the OITF SHALL support all combinations of all URIs that can be used as the uri argument with all URIs that can be used as the data property of the object element.
When the queue method is used, once the last required data of the current content item has been read, the OITF SHALL start reading from the queued content item without waiting for the last required data of the current content item to be decoded and presented. If the current content item was identified by a URL without a fragment or with a fragment not including an end time then the last required data is the last data of the content item. If the current content item was identified by a URL with a fragment including an end time then the last required data is the last data needed to decode and present the frame corresponding to that end time.
The following additional method SHALL be supported on the audio object and video object defined in section 5.7.1 of [[!CEA-2014-A]].
Integer getVolume( ) | |
Description | Returns the actual volume level set; for systems that do not support individual volume control of players, this method will have no effect and will always return 100. |
This section defines APIs related to resource capabilities allocated to the A/V Control object.
Name | Value | Description |
---|---|---|
STATIC_ALLOCATION | 1 | Scarce resources are allocated at instantiation time |
DYNAMIC_ALLOCATION | 2 | Scarce resources are allocated to the object as required |
readonly StringCollection playerCapabilities |
The list of media formats that are supported by the object. Each item SHALL contain a format label according to [[.OIPF_MEDIA2]]. If scarce resources are not claimed by the object, the value of this property SHALL be |
readonly Integer allocationMethod |
Returns the resource allocation method currently in use by the object. Valid values as defined in section are:
|
If an OITF has indicated support for the multicast delivery terminating function (MDTF) (i.e., <mdtf>true</mdtf>
) as defined in section in its capability description, the OITF SHALL support MDTF through the use of the following non-visual object:
<object type="application/oipfMDTF"/>
The MDTF API provides the necessary JavaScript methods to indicate to the MDTF what FLUTE multicast channel it should join, and what tags it should listen for on those channels.
function onFLUTEListenerResult( String multicastAddress, Integer resultMsg ) | ||||||||||||||||||
This function is called with return result from the methods addFLUTEListener and removeFLUTEListener. The specified script function is called with two arguments —
|
void addFLUTEListener( String multicastAddress ) | ||
Description | This method adds a FLUTE channel listener in the OITF. The result from this method is sent to the callback method onFLUTEListenerResult. | |
Arguments | multicastAddress | The multicast address that the OITF should join in order to listen. |
void addFLUTEListenerTags( String multicastAddress, String tags, function downloadCallBack ) | ||
Description | This method adds tags that the FLUTE listener should listen for. The result from this method is sent to the callback method onFLUTEListenerResult. | |
Arguments | multicastAddress | The multicast address that the OITF should join in order to listen. |
tags | A comma separated list of tags that the OITF should listen for on the FLUTE channel. | |
downloadCallback | Optional. This callback function is called when an object has been downloaded. The arguments to this function are the Content Location URI of the downloaded object and the Content-Type. |
StringCollection getFLUTEListeners( ) | |
Description | Returns a collection of multicast addresses for the FLUTE channels that the OITF listens to. |
String getTags( String multicastAddress ) | ||
Description | Returns a comma-separated list of the tags associated with a particular multicast address. | |
Arguments | multicastAddress | The multicast address that the OITF should return tags for. |
String removeFLUTEListener( String multicastAddress ) | ||
Description | Removes the associated listener. The result from this method is sent to the callback method onFLUTEListenerResult. | |
Arguments | multicastAddress | The multicast address that the OITF should leave. |
Intrinsic event | Corresponding DOM event | DOM Event properties |
---|---|---|
onFLUTEListenerResult | FLUTEListenerResult | Bubbles: No Cancellable: No Context Info: multicastAddress , resultMsg |
FLUTEListenerResult
event during the bubbling or the capturing phase. Applications that use DOM event handlers SHALL call the addEventListener()
method on the application/oipfMDTF
object. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
The following embedded objects allow a visualization of the native download manager to be included as part of the UI coming from a (third party) server, without the need for any security model, and without compromising security and privacy.
An OITF SHALL support the application/oipfStatusView
embedded object. This is a visual object that can be included in a HTML document, and is subject to the following CSS properties: width
, height
, position
, float
, top
, left
, right
, bottom
, vertical-align
, padding
, and padding-*
properties, margin
, and margin-*
properties, border
, and border-*
properties, visibility
, and display
. This embedded object SHALL provide an overall consistent graphical view of the status of the current downloads, the content that has been downloaded, and/or the content that has been recorded, as denoted by the states:
<param>
element with the name “nritems
”.
<param>
element with the name “nritems
”.
The object SHALL support a <param>
element with the name “state
”, which indicates the state that SHALL be visualized inside the object. An OITF that has indicated support for downloading content in its capability description (i.e. <download>true</download>
) SHALL at least support the monitor states “list_of_recent_downloads” and “list_of_downloaded_content”. An OITF MAY support the visualization of additional states. An OITF SHALL silently ignore a request to visualize a state that it does not support; if this results in no state information being visualized at all (because the each <param>
element with name state referred to a non-supported state), the application/oipfStatusView
object SHALL NOT be visualized and the object will have CSS width and height values of 0.
The object SHALL support a <param>
element with the name “nritems
”, which indicates the number of items that should be shown for the given state.
The object SHALL also support the inclusion of style hints through <param>
elements. At least the “background-color
” and “font-size
” style hints SHALL be supported using the syntax defined by CSS 2.1. An OITF MAY support additional style hints in addition to “background-color
” and “font-size
”. Additional style hints SHALL also follow the CSS 2.1 syntax. An OITF SHALL silently ignore any style hints that it does not support.
Next to these parameters, the object SHALL support methods “getMinimumItemWidth()” and “getMinimumItemHeight()” as defined in section .
Example usage:<object id="d1" type="application/oipfStatusView" width="200" height="100"> <param name="state" value="list_of_recent_downloads"/> <param name="nritems" value="2"/> <param name="background-color" value="black"/> <param name="font-size" value="16px"/> </object>
NOTE: this object is intended to allow services to link in to the privileged functionality of accessing privacy sensitive download information, without the need for certificates and privileged access requests. In certain managed deployments this may not be sufficient. The application/oipfDownloadManager API described in section provides more extensive APIs which provide JavaScript control for a service platform provider over such highly privileged functionality.
Integer getMinimumItemWidth( String state ) | ||
Description | Returns the minimum width needed for rendering the name, status and other data of the downloaded items for the given state (e.g. “list_of_recent_downloads”). | |
Arguments | state | The state for which the visualization is requested. This is one of the strings that are defined for <param> element with the name “state ” (e.g. “list_of_recent_downloads ”). |
Integer getMinimumItemHeight( String state ) | ||
Description | Returns the minimum height needed for rendering the name, status and other data of the downloaded items for the given state (e.g. “list_of_recent_downloads”). | |
Arguments | state | The state for which the visualization is requested. This is one of the strings that are defined for <param> element with the name “state ” (e.g. “list_of_recent_downloads ”). |
An OITF that has indicated support for control of its recording functionality by a server (i.e., <record>true</record>
) SHALL support the application/oipfStatusView
embedded object defined in section , for which it SHALL at least support the following additional monitor state:
<param>
element with the name “nritems
”.
NOTE: this object is intended to allow services to link in to highly privileged functionality, without the need for certificates and privileged access requests. In certain managed deployments this may not be sufficient. Therefore, section defines more extensive APIs which provide JavaScript control for a service platform provider over such highly privileged functionality.
The OITF SHALL support following non-visual embedded object with the mime type “application/oipfCapabilities
”.
readonly Document xmlCapabilities |
Returns the OITF's capability description as an XML Document object using the syntax as defined in Annex without using any namespace definitions. |
readonly Number extraSDVideoDecodes |
This property holds the number of possible additional decodes for SD video. Depending on the current usage of system resources this value may vary. The value of this property is likely to change if an HD video is started. Adding an A/V Control object or |
readonly Number extraHDVideoDecodes |
This property holds the number of possible additional decodes for HD video. Depending on the current usage of system resources this value may vary. The value of this property is likely to change if an SD video is started. Adding an A/V Control object or |
Boolean hasCapability( String profileName ) | ||
Description | Check if the OITF supports the passed capability. Returns true if the OITF supports the passed capability, false otherwise. | |
Arguments | profileName | An OIPF base UI profile string or a UI Profile name fragment string as defined in section . Examples of valid profileName: “ |
The following method is available on the script's global object as defined in the HTML5 specification as referenced by [[.OIPF_WSTVP2]].
void debug( DOMString arg ) | ||
Description | Let the application developer print debug information on the debug output (for example, a console, a serial link or a file). The means to access this debug output is outside the scope of this specification and implementation-dependent. A line feed character SHALL NOT be inserted automatically at the end of the string by the implementation. Example: debug("[APP] value = " + value + "\n"); | |
Arguments | arg | String to print on the debug output. |
In addition to what is required by section 5.3 of [[!CEA-2014-A]] an OITF SHALL apply the following requirements.
All DAE application HTTP requests SHALL include a User-Agent
header using the syntax described in this section. Embedded objects HTTP requests MAY include a User-Agent
header using this syntax.
The User-Agent
header SHALL include:
OIPF-<oipfProfile>/<releaseVersion>.<majorVersion>.<minorVersion> (<capabilities>; [<vendorName>]; [<modelName>]; [<softwareVersion>]; [<hardwareVersion>]; [<familyName>]; <reserved>) [<appName>[/<appVersion>]]
Where
<capabilities>
field consists of a description of the OITFs capabilities. Valid values include:<oipfProfile>
field identifies the profile implemented by the OITF as defined in the specification of the oipfProfile
property of the LocalSystem
class (in section “”).
<releaseVersion>
, <majorVersion>
and <minorVersion>
fields identify the version of the specification implemented by the OITF as defined in section “” with properties of the same name.<vendorName>
, <modelName>
, <familyName>
, <softwareVersion>
and <hardwareVersion>
fields are the same as the one defined in section “” and are optional.
<reserved>
field is reserved for future extensions
<appName>
and <appVersion>
fields are defined in the window.navigator
object and are optional.
This User-Agent
header MAY be extended with other implementation-specific information.
Valid examples of such syntax are:
User-Agent: OIPF-OIP/2.3.0 (OITF_HD_UIPROF+PVR+DL; Sonic; TV44; 1.32.455; 2.002; com.acme.2012;) Bee/3.5 User-Agent: OIPF-BMP/2.3.0 (OITF_HD_UIPROF+PVR+DL;;;;;;)
When the DAE application or embedded object (“application/oipfRemoteControlFunction
”) makes a HTTP request for the Control UI to the IPTV Applications server, the value of the X-OITF-RCF-User-Agent
header SHALL be filled with the value of the User-Agent
header provided by the DAE application (and which came from the DLNA RUIC on the Remote Control Device).
This section describes mapping of DAE APIs to the specific protocol entities as defined in the protocol specification [[!OIPF_PROT2]].
Section describes mappings that apply to CoD download over HTTP.
Section describes mappings that apply to CoD unicast streaming with SIP session management.
Section describes mappings that apply to Multicast Streaming of Scheduled Content with SIP session management.
Section describes mappings that apply to Communication Services with SIP session management.
Section describes mappings that apply to CoD unicast streaming over RTP and HTTP.
Section describes mappings that apply to Scheduled Content Multicast Streaming.
This section provides details of mapping of the DAE APIs to the descriptions provided in the Protocol specification for APIs between the OITF and the Network over reference points UNIT-17.
This section provides details of mapping of the DAE APIs to the descriptions provided in the Protocol specification for APIs between the OITF and the Network over reference points UNIT-17 for download over HTTP.
Method | Procedures |
---|---|
registerDownload( String contentAccessDownloadDescriptor, Date downloadStart, Integer priority ) |
API described in section to download content described in the contentAccessDownloadDescriptor. Data structure of the contentAccessDownloadDescriptor as described in Annex “” If the OITF includes the Content Download functional entity ,the information in the contentAccessDescriptor is passed to the Content Download functional entity to download content over UNIT-17 using HTTP as described in section 5.3.4.1 of [[.OIPF_PROT2]] and section “”. |
registerDownload( String URL, String contentType, Date downloadStart, Integer priority ) |
API described in section to download the content identified by the given URL. If the OITF includes the Content Download functional entity, the URL is passed to the Content Download functional entity to download content over UNIT-17 using HTTP as described in section 5.3.4.1 of [[.OIPF_PROT2]] As specified in section , the contentType attribute can be used to evaluate if the content type is part of the list of accepted content types of the OITF. If contentType has value “ application/vnd.oipf.ContentAccessDownload+xml ”, the method SHALL return a download identifier, after which the OITF SHALL immediately fetch the Content Access Download Descriptor, after which the same SHALL happen as if registerDownload() had been called.
|
registerDownloadFromCRID( String CRID, String IMI, Date downloadStart, Integer priority ) |
API described in section to download content described in a BCG record. If the OITF includes the Content Download functional entity, <CRID,IMI> BCG tuple is resolved to an URL as described in section 4.3 of [[.OIPF_META2]] and passed to the Content Download functional entity to download content over UNIT-17 using HTTP as described in section 5.3.4.1 of [[.OIPF_PROT2]]. |
This section provides details of mapping of the DAE APIs to the descriptions provided in the Protocol specification [[.OIPF_PROT2]] for APIs between the OITF and the Network over reference points HNI-IGI, UNIS-11 and UNIT-17U for CoD Unicast Streaming with SIP session management.
Methods | Procedures | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
play( Number speed ) |
Selection of a content item results in session initiation and access to content stream. Parameters needed to build the offer SDP may be pre defined locally in the OITF or the OITF SHALL request the IG to retrieve missing SDP parameters as described in [[.OIPF_PROT2]] section 5.3.2.2. If the OITF does not have all transport parameters (RTP or UDP transport for MPEG2TS encapsulation or direct RTP, FEC layers addresses and ports), code information or bandwidth information to populate the SDP the OITF SHALL prompt the IG to send OPTIONS request in order to retrieve the missing parameters. The OITF SHALL provide the following information for the OPTIONS request. Not all required headers are listed. Refer to the Protocol specification [[.OIPF_PROT2]] for a complete list.
The OITF prepares an SDP offer and requests the IG to initiate a session, in addition to the SDP the following parameters are forwarded from the OITF to the IG. Not all required headers are listed. Refer to the Protocol specification [[.OIPF_PROT2]] for a complete list.
The OITF SHALL send an RTSP PLAY over UNIS-11 using attribute values received in the SDP from the session initiation procedure. The RTSP PLAY is as described in the [[.OIPF_PROT2]] section 7.1.1.2. The RTSP fields in the RTSP PLAY message SHALL be filled as follows:
The actual playback speed SHALL be available through the speed property of the A/V Control object. After a successful response to the RTSP PLAY message has been received, the OITF SHALL generate a PlaySpeedChanged event indicating the actual playback speed. |
||||||||||||
stop() |
The method enables the OITF to terminate and ongoing CoD session. The OITF SHALL request the IG to terminate the session as described in [[.OIPF_PROT2]] section 5.3.2.2. The OITF SHALL include the following information from the request. Not all required headers are listed. Refer to the Protocol specification [[.OIPF_PROT2]] for a complete list.
|
||||||||||||
seek( Integer pos ) |
If the seek() method is called while the player is in the “playing” state, it sets current play position to “pos”, by using the “Range” parameter in the RTSP PLAY as described in [[.OIPF_PROT2]] section 7.1.1.2. After a successful response to the RTSP PLAY message has been received, the OITF SHALL generate a PlayPositionChanged event indicating a new playback position of “pos”. If the seek() method is called while the player is in the “paused” state, the value of playPosition is changed to reflect the new play position. This is the new play position that SHALL be used for the “Range” parameter of the RTSP PLAY message when playback is resumed.
|
||||||||||||
play(0) |
This method causes the OITF to send an RTSP PAUSE message (refer to [[.OIPF_PROT2]] section 7.1.1.2). The RTSP PAUSE message SHALL include:
|
||||||||||||
next() |
Not Supported. NOTE: Track information is not supported in the protocol specification and therefore out of scope. |
||||||||||||
previous() |
Not Supported. NOTE: Track information is not supported in the protocol specification and therefore out of scope. |
||||||||||||
read/write String data |
This property holds the URL that identifies the content, as defined in section . See [[!OIPF_PROT2]] section 6.1.2.2.1.1 for details on CoD URI. It is used by the OITF compose the following headers for requests towards the IG X-OITF-Request-Line X-OITF-To If the “ data ” property of the A/V Control object refers to a Content-Access Streaming Descriptor (i.e. the object has type “application/vnd.oipf.ContentAccessStreaming+xml ” as defined in section ), the OITF must perform the following steps prior to performing the procedures defined in [[.OIPF_PROT2]] as described for method play() :
|
||||||||||||
readonly Number playPosition |
The property holds the current play position in milliseconds of the media referenced by the data property. The property value SHALL be based on the value retrieved using the RTSP GET_PARAMETERS method and parameter “position” (refer to [[.OIPF_PROT2]] section 7.1.1.2) adjusted for played duration and used scale. If information is not available the value SHALL be undefined. Note this may happen at the beginning of playing a video and GET_PARAMETER has not returned a value. |
||||||||||||
readonly Number playSpeeds[ ] |
The property holds the available speeds, or referred in RTSP as Scale, to be used to change the playback speed. The property value SHALL be based on the value retrieved using RTSP GET_PARAMETERS method and parameter “scales” (refer to [[.OIPF_PROT2]] section 7.1.1.2). If information is not available the value SHALL be undefined. Note this may happen at the beginning of playing a video and GET_PARAMETER has not returned a value. |
||||||||||||
readonly Number playTime |
The property holds the total duration in milliseconds of the media referenced by the data property. The property value SHALL be based on the value retrieved using RTSP GET_PARAMETER method and parameter “duration” (refer to [[.OIPF_PROT2]] section 7.1.1.2). If information is not available the value SHALL be undefined. Note this may happen at the beginning of playing a video and GET_PARAMETER has not returned a value. |
||||||||||||
readonly Number playState |
No procedures defined since it is not related to protocol specification. | ||||||||||||
readonly Number error |
No procedures defined since it is not related to protocol specification. | ||||||||||||
readonly Number speed |
Float value indicating the actual playback speed for the content referenced by the data property. The normal default playback speed is represented by value 1. |
Intrinsic Event | Procedure |
---|---|
onPlaySpeedChanged | When RTSP ANNOUNCE with either beginning-of-stream or end-of-stream codes arrives the OITF SHALL generate onPlaySpeedChanged event with a speed value of 0. |
onPlayPositionChanged | When the response to the RTSP PLAY with Range header request (Range is included when performing seek() with a position) the OITF SHALL generate onPlayPositionChanged event with the accepted position. |
This section provides details of mapping of the DAE APIs to the descriptions provided in the Protocol specification [[.OIPF_PROT2]] for APIs between the OITF and the Network over reference points HNI-IGI, UNIS-11, UNIS-13 and UNIT-17 for Scheduled Content multicast streaming with SIP session management.
Methods | Procedures | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
setChannel(Channel channel, Boolean trickplay, String contentAccessDescriptorURL) |
The setChannel() method of the video/broadcast object SHALL be used to initiate a broadcast session or switch channels. The procedures that are performed over the HNI-IGI reference point depend on the current state of broadcast session, either it is active or not. Note that an inactive broadcast session means no service is being viewed. If the channel is an IMS based IPTV service (i.e., if it is of type ID_IPTV_SDS and if the corresponding service has a “sip-igmp-rtp-udp” or “sip-igmp-udp” file format specified in its SD&S BDR record), the following steps are taken: Session Initiation The OITF SHALL generate a session initiation request over the HNI-IGI including and SDP offer as described in [[!OIPF_PROT2]] section 5.3.1. The bandwidth is set according to the explanation under heading “Selection of Bandwidth” below. If a “contentAccessDescriptorURL” has been specified for the setChannel() method, the OITF must perform the following steps prior to performing the procedures defined in [[!OIPF_PROT2]] for performing setChannel() as described below:
The OITF SHALL provide the following information as part of the scheduled session initiation request as described in [[!OIPF_PROT2]] section 6.2.2.1. Not all required headers are listed. Refer to the Protocol specification [[!OIPF_PROT2]] for a complete list.
The Offer SDP included in the OITF be SHALL have attributes as described in [[!OIPF_PROT2]] Annex D.2. On positive response to the INVITE request the OITF SHALL send an IGMP Join request on the UNIS-13 as described in [[!OIPF_PROT2]] section 8.1.1.1. Session Modification If the bandwidth conditions change as described under heading “Selection of Bandwidth” further down then the OITF SHALL generates a session modification request over the HNI-IGI including the new SDP offer. The OITF SHALL provide the following information as part of the scheduled session modification request as described in [[!OIPF_PROT2]] section 6.2.2.1. Not all required headers are listed. Refer to the Protocol specification [[!OIPF_PROT2]] for a complete list.
The Offer SDP included by the OITF SHALL have attributes as relevant to the new channel as described in [[!OIPF_PROT2]] Annex D.2. On receiving a successful response to the INVITE request the OITF SHALL send and IGMP Leave and IGMP Join request on the UNIS-13 as described in [[!OIPF_PROT2]] section 8.1.1.1. No Session Modification If the bandwidth conditions as described under heading “Selection of Bandwidth” further down have not changed then the OITF SHALL send a membership report to leave the previously viewed channel, if applicable, and with the same membership report join to the multicast group associated with the selected channel. The multicast group information is retrieved from the Broadcast Discovery Record. Selection of Bandwidth The bandwidth to be used for the broadcast session depends on the information provided in the Broadcast Discovery Record (refer to section 3.2.2.1 of [[!OIPF_META2]] The Broadcast Discovery Record uses the term “service” to indicate a channel. If the TimeToRenegotiate (TTR) element is not provided within the IPService of the Broadcast Discovery Record then the bandwidth SHALL be based on the maximum bandwidth for all the services in the Broadcast Discovery Record. In this case only one session initiation is performed at initial activation of broadcast service, and no session modification is required. If the TTR element is provided then the MaxBitrate from the new service and current service are compared. If broadcast service is not active and there is no active current service, session initiation is performed with the new service MaxBitrate. For already active broadcast service there are three conditions.
Note that at every channel change if there is a pending timeout for session modification due to a previous service change then the timer is restarted. When the timer expires the bandwidth for the currently viewed service is used in a session modification. The session initiation, session modification and no session modification are further described above. |
Methods | Procedures | ||||||
---|---|---|---|---|---|---|---|
release() |
The release method of the video/broadcast object causes the OITF to perform an IGMP Leave on the active broadcast session as described in [[!OIPF_PROT2]] section 8.1.1.1. If the channel has an idType of ID_IPTV_SDS, the OITF SHALL then execute a session termination procedure by sending a BYE request over the HNI-IGI interface as described in section [[!OIPF_PROT2]] section 5.3.1.1. The request SHALL include the following information. Not all required headers are listed. Refer to the Protocol specification [[!OIPF_PROT2]] for a complete list.
|
Methods | Procedures | ||||||
---|---|---|---|---|---|---|---|
pause() |
The method has different behaviour if the pause() method has previously been invoked. While the first pause() request sets up the session over HNI-IGI the subsequent pause() requests simply issue an RTSP PAUSE request. First pause() request The OITF SHALL generates a session modification request over the HNI-IGI including the modified SDP offer. The SDP offer included by the OITF SHALL have attributes as relevant to the unicast stream to be setup. The OITF SHALL provide the following information as part of the scheduled session modification request as described in [[!OIPF_PROT2]] section 6.2.2.1. Not all required headers are listed. Refer to the Protocol specification [[!OIPF_PROT2]] for a complete list.
On receiving a successful response to the INVITE request and if the channel has an idType of ID_IPTV_URI, the OITF SHALL send and IGMP Leave and request on the UNIS-13 as described in [[!OIPF_PROT2]] section 8.1.1.1. Subsequent pause() requests This request causes the OITF to send an RTSP PAUSE message (refer to [[!OIPF_PROT2]] section 7.1.1.2). The RTSP PAUSE message SHALL include:
After a successful response to the RTSP PAUSE message has been received, the OITF SHALL generate a PlaySpeedChanged event indicating a playback speed of 0. | ||||||
resume() |
The OITF SHALL send an RTSP PLAY over UNIS-11 using attribute values received in the SDP from the session modification procedure. The RTSP PLAY is as described in [[!OIPF_PROT2]] section 7.1.1.2.
The RTSP fields in the RTSP PLAY message SHALL be filled as follows:
After a successful response to the RTSP PLAY message has been received, the OITF SHALL generate a PlaySpeedChanged event indicating the actual playback speed. | ||||||
setSpeed(Number speed) |
Sets current speed by using the “Scale” header in the RTSP PLAY as described in [[!OIPF_PROT2]] section 7.1.1.2. After a successful response to the RTSP PLAY message has been received, the OITF SHALL generate a PlaySpeedChanged event indicating a new playback speed. | ||||||
seek( Integer offset, Integer reference ) |
Sets current play position based on the specified offset from the given reference point, by using the “Range” parameter in the RTSP PLAY as described in [[!OIPF_PROT2]] section 7.1.1.2. After a successful response to the RTSP PLAY message has been received, the OITF SHALL generate a PlayPositionChanged event indicating the new playback position. | ||||||
stopTimeShift() |
The OITF SHALL generate a session modification request over the HNI-IGI including the modified SDP offer. The SDP offer included by the OITF SHALL have attributes as relevant to the channel as described in [[!OIPF_PROT2]] Annex D.2. The OITF SHALL provide the following information as part of the scheduled session modification request as described in [[!OIPF_PROT2]] section 6.2.2.1. Not all required headers are listed. Refer to the Protocol specification [[!OIPF_PROT2]] for a complete list.
On receiving a successful response to the INVITE request and if the channel has an idType of ID_IPTV_URI, the OITF SHALL send and IGMP Join and request on the UNIS-13 as described in [[!OIPF_PROT2]] section 8.1.1.1. | ||||||
setChannel(Channel channel, Boolean trickplay, String contentAccessDescriptorURL) |
The following procedure is only applicable if Network Timeshift of broadcast service is in progress. The OITF SHALL generates a session modification request over the HNI-IGI including the modified SDP offer. The SDP offer included by the OITF SHALL have attributes as relevant to the new channel as described in [[!OIPF_PROT2]] Annex D.2. The OITF SHALL provide the following information as part of the scheduled session modification request as described in [[!OIPF_PROT2]] section 6.2.2.1. Not all required headers are listed. Refer to the Protocol specification [[!OIPF_PROT2]] for a complete list.
On receiving a successful response to the INVITE request and if the channel has an idType of ID_IPTV_URI, the OITF SHALL send and IGMP Join and request on the UNIS-13 as described in [[!OIPF_PROT2]] section 8.1.1.1. | ||||||
String data |
This property holds the RTSP URI from the SDP h-uri attribute. Prior to a successful SIP INVITE the value is undefined. |
Note that all the remaining properties listed under section , , SHALL be supported as described.
Methods | Procedures |
---|---|
registerUser(String userId, String pin) |
Performs registration with the specified user ID as described in [[!OIPF_PROT2]] section 5.4.6.1. |
deRegisterUser(String userId) |
Performs de-registration with the specified user ID as described in [[!OIPF_PROT2]] section 5.4.6.1. |
subscribeNotification(FeatureTagCollection featureTagCollection, Boolean performUserRegistration) |
OITF maintains applications that have subscribed to notifications. If applicable it will send a re-registration to the IG. When new messages arrive at the IG it shall notify the OITF (as defined in [[!OIPF_PROT2]] section 5.5.1.2). |
unsubscribeNotification() |
This is a local call within OITF to notify that the DAE application SHALL NOT receive unsolicited notification. The OITF shall use native code to handle new dialogues. Any feature tag values that were added by the DAE application are removed for the indicated userId since no native code is setup to process the new dialogues for the feature tag values. |
This section provides details of mapping of the DAE APIs to the descriptions provided in the Protocol specification [[!OIPF_PROT2]] for APIs between the OITF and the Network over reference points UNIS-11 and UNIT-17 for CoD unicast streaming over RTP and HTTP.
Methods | Procedures |
---|---|
play(Number speed) |
The “ A “ RTSP-RTP The RTSP URL signalled by the “data” attribute SHALL be used to initiate the process defined in [[!OIPF_PROT2]] section 7.1.1.1.1. The “data” attribute SHALL furthermore be updated with the new URI after redirection requests (moved). The RTSP PLAY request SHALL include a “ If property After a successful response to the RTSP PLAY message has been received, the OITF SHALL generate a HTTP The HTTP URL signalling by the “data” attribute SHALL be used to initiate the process defined in [[!OIPF_PROT2]] section 5.3.2.2. The “data” attribute SHALL furthermore be updated with the new URI after redirection requests (moved). The “ If the media player successfully begins to play back the content, the OITF SHALL generate a |
stop() |
RTSP-RTP The OITF SHALL initiate the process defined in [[!OIPF_PROT2]] section 7.1.1.1.2 except if the property HTTP The OITF SHALL stop playback. The OITF MAY close the connection to the server and MAY clear any buffered content. |
seek(Integer pos) |
RTSP-RTP If the After a successful response to the RTSP PLAY message has been received, the OITF SHALL generate a If the HTTP If the If the media player successfully begins to play back the content from the specified position, the OITF SHALL generate a If the |
play(0) |
RTSP-RTP This method causes the OITF to send an RTSP PAUSE message (refer to [[!OIPF_PROT2]] section 7.1.1.2). The RTSP PAUSE message SHALL include: After a successful response to the RTSP PAUSE message has been received, the OITF SHALL generate a PlaySpeedChanged event indicating a play speed of 0. HTTP The OITF SHALL pause playback. If the media player successfully pauses playback, the OITF SHALL generate a play speed event indicating a PlaySpeedChanged of 0. |
next() |
Not Supported. Note: Track information is not supported in the protocol specification and therefore out of scope. |
previous() |
Not Supported. Note: Track information is not supported in the protocol specification and therefore out of scope. |
Property | Procedures |
---|---|
read/write String data |
RTSP-RTP This property holds the RTSP URI for the content item. HTTP The property holds the HTTP URI for the content item. If the “data” property of the A/V Control object refers to a Content-Access Streaming Descriptor (i.e. the object has type “application/vnd.oipf.ContentAccessStreaming+xml” as defined in section ), the OITF must perform the following steps prior to performing the procedures defined in [[!OIPF_PROT2]] as described for method play():
|
readonly Number playPosition |
The property holds the current play position in milliseconds of the media referenced by the For RTSP-RTP, The property value SHALL be based on the value retrieved using the RTSP GET PARAMETERS method and parameter “ If information is not available the value SHALL be |
readonly Number playSpeeds[ ] |
For RTSP-RTP, the property holds the available speeds, or referred in RTSP as Scale, to be used to change the playback speed. The property value SHALL be based on the value retrieved using RTSP GET PARAMETERS method and parameter “ For HTTP, the possible playback speeds are determined by the OITF internal capabilities and buffering model, and the speed at which content is delivered. The OITF MAY make this information available via this property. If information is not available the value SHALL be |
readonly Number playTime |
The property holds the total duration in milliseconds of the media referenced by the data property. For RTSP-RTP, the property value SHALL be based on the value retrieved using RTSP GET_PARAMETER method and parameter “ For HTTP, if the data property references a content-access streaming descriptor that includes the optional “Duration” attribute then the property value SHALL be derived from the value encoded in that attribute. Otherwise, if the data property references an MPEG DASH MPD and the Otherwise, if the data property references a file in the MP4 file format (as defined in section 4.2 of [[.OIPF_MEDIA2]]) then
If information is not available the value SHALL be |
readonly Number playState |
No procedures defined since it is not related to protocol specification. |
readonly Number error |
No procedures defined since it is not related to protocol specification. |
readonly Number speed |
Float value indicating the actual playback speed of the player for the content referenced by the data property. The normal default playback speed is represented by value 1. |
Intrinsic event | Procedures |
---|---|
onPlaySpeedChanged |
For RTSP-RTP, when RTSP ANNOUNCE with either beginning-of-stream or end-of-stream codes arrives the OITF SHALL generate onPlaySpeedChanged event with a speed value of 0. |
onPlayPositionChanged |
For RTSP-RTP, when the response to the RTSP PLAY with Range header request (Range is included when performing seek() with a position) the OITF SHALL generate onPlayPositionChanged event with the accepted position. |
This section extends the mapping defined above to address behaviour when media queuing is in effect.
Method | Procedures |
---|---|
queue(String uri) |
Queued media items available via HTTP or stored on the terminal MAY be pre-buffered by the OITF in order to reduce transition delays. When pre-buffering media items, the specified buffering policy SHALL NOT be affected. For queued media items available via RTSP, session setup MAY be carried out prior to the end of the currently playing media item. |
play(Number speed) |
When the start of a media item is reached due to a negative play speed, the playback SHOULD resume at normal play speed without playing any previous media items. When the end of a media item is reached, playback of any queued media items SHALL be initiated automatically at the specified play speed. The OITF SHALL map this on to the underlying protocol (HTTP or RTSP) as the following sequence of DAE method calls: data = <URI of the queued media item>; play(<current play speed>); |
seek(Integer pos) |
If the value of pos is outside the current media item, the play position SHALL NOT be changed.
|
read/write String data |
Modification of this property SHALL cause any queued media items to be discarded. |
This section provides details of mapping of the DAE APIs to the descriptions provided in the Protocol specification [[!OIPF_PROT2]] for APIs between the OITF and the Network over reference points UNIS-11, UNIS-13 and UNIT-17 for Scheduled Content multicast streaming.
Service discovery description procedure as described in [[!OIPF_PROT2]] section 6.1.3.1 enables the OITF to obtain the URL to access the broadcast channel information. The OITF SHALL utilise UNIS-7 using this URL to obtain the Broadcast Discovery Record.
Method | Procedures |
---|---|
setChannel( Channel channel, Boolean trickplay, String contentAccessDescriptorURL ) |
The setChannel method of the video/broadcast object SHALL be used to initiate a broadcast session or switch channels. If the channel has an idType of ID_IPTV_URI , the OITF SHALL send and IGMP Leave and an IGMP Join request on the UNIS-13 as described in [[!OIPF_PROT2]] section 8.1.1.1.
|
Method | Procedures |
---|---|
release() |
The release method of the video/broadcast object causes the OITF to perform an IGMP Leave on the active broadcast session as described in [[!OIPF_PROT2]] section 8.1.1.1.
|
Method | Procedures |
---|---|
pause() |
The pause method of the video/broadcast object causes the OITF to perform an IGMP Leave on the active broadcast session as described in [[!OIPF_PROT2]] section 8.1.1.1.
|
resume() |
The RTSP URL signalled by the data attribute SHALL be used to initiate the process defined in [[!OIPF_PROT2]] section 7.1.1.1.1. The “data” attribute SHALL furthermore be updated with the new URI after redirection requests (moved). The value of the “scale” header in the RTSP PLAY message SHALL be the value set by the most recent call to If property After a successful response to the RTSP PLAY message has been received, the OITF SHALL generate a |
setSpeed( Number speed ) |
Sets current speed by using the “Scale” header in the RTSP PLAY as described in [[!OIPF_PROT2]] section 7.1.1.1. After a successful response to the RTSP PLAY message has been received, the OITF SHALL generate a If playback is previously paused (either by a call to |
seek( Integer offset, Integer reference ) |
Sets current play position based on the specified offset from the given reference point, by using the “Range” parameter in the RTSP PLAY as described in [[!OIPF_PROT2]] section 7.1.1.1. After a successful response to the RTSP PLAY message has been received, the OITF SHALL generate a |
stopTimeShift() |
The |
Property | Procedures |
---|---|
read/write String data |
This property holds the RTSP URI for the content item. |
Note that all the remaining properties listed under section SHALL be supported as described.
The following table lists possible URL schemas and their usages within DAE documents (XHTML, JavaScript, images, and references to A/V content). If a certain URL scheme is supported, the corresponding protocols to an URL scheme SHALL be supported as defined by the reference(s)
URI Scheme | Usage | Reference | Comments |
---|---|---|---|
dvb-mcast | Scheduled content delivery | DVB-MCAST URI scheme as defined by Annex A1 of [[!TS102539]] | A URL to refer to a scheduled content channel supported by the OITF and delivered via multicast. |
dvb | Application launching | Locator for applications in SD&S as defined by section 6.3.3 of [[!TS102851]] | The orgid and appid encoded in the DVB URI are compared with the applications signalled in SD&S to identify one with the same orgid and appid. |
Non-realtime downloaded content | Section 6 of [[!TS102851]] | Non-realtime downloaded content | |
igmp | Scheduled content | "Annex F of [[!OIPF_PROT2]] | The transport IP Multicast Address to access the service as defined in [[!DVB-IPTV]]. |
http and https | Transport of DAE documents | Section 5.3.3.1 of [[!OIPF_PROT2]] Section 5.3 of [[!CEA-2014-A]] Section 5 of [[.OIPF_CSP2]] | A URL to refer documents supported by DAE. |
Unicast streaming or download over HTTP | HAS specification [[.OIPF_HAS2]] | A URL to refer to the MPD. | |
Annex F of [[!OIPF_PROT2]] | A Content URL specified in the data attribute of A/V Control object as defined in section . A Content URL specified in a Content Access Descriptor described in Annex . | ||
crid | COD streaming | Section 4.3 of [[!OIPF_META2]] | |
Programme identification via BCG | |||
sip | Unicast streaming over RTP (“sip-rtsp-rtp-udp”) | Annex F of [[!OIPF_PROT2]] | |
Unicast streaming over UDP (“sip-rtsp-udp”) | |||
rtsp | Unicast streaming control | ||
URI scheme for recordings | Recordings | Section of this specification. |
The format of the URI is outside the scope of this specification except that:
|
URI scheme for downloaded content | Downloaded content | Section of this specification. |
The format of the URI is outside the scope of this specification except that:
|
Section 8.1 of [[.OIPF_WSTVP2]] requires support for temporal clipping based on Normal Play Time as defined in section 4.2.1 of the Media Fragments URI specification [[!Media-Fragments-URI]]. URLs including these temporal clipping fragments SHALL be supported as follows;
The begin time SHALL behave as start-of-media and the end time SHALL behave as end-of-media. If the value of temporal fragment interval is changed then there will be no change in the play state unless the interval is changed so that the current play position is outside the interval.
Except for the getSIDescriptors() method (see section ), the OITF SHALL translate all characters extracted from DVB SI tables and descriptors into their UTF-16 equivalent when exposing the character in a JavaScript character or string object. In addition, the following rules SHALL apply:
AVComponent objects represent the components in a stream. For an MPEG-2 transport stream not delivered via adaptive streaming, the set of components SHALL be the audio, video and subtitle components listed in the PMT of the service. For content in the MP4 file format not delivered via adaptive streaming, the set of components SHALL be the audio, video and subtitle tracks listed in the “moov” box. For content delivered via adaptive streaming, A/V Component objects SHALL correspond to adaptation sets in the MPD.
The following table shows the mapping from the properties of the AVComponent class to the data carried inside the MPEG-2 TS and MP4 file format.
Property Name and Type |
MPEG-2 TS With DVB-SI component_descriptor in SDT and/or EIT |
MPEG-2 TS Without DVB-SI SDT and EIT |
MP4 FF | MPEG DASH |
---|---|---|---|---|
Name: componentTag Type: Integer | The contents of the component_tag field in the stream_identifier_descriptor in PMT | Not defined | The value of the id attribute in the AdaptationSet (if provided) | |
Name: pid Type: Integer | The PID of the stream in the PMT | trackID | Not defined | |
Name: type Type: One of the following constants COMPONENT_TYPE_VIDEO / COMPONENT_TYPE_AUDIO / COMPONENT_TYPE_SUBTITLE |
May be derived as follows:
|
Track has a VisualSampleEntry (handler_type =”vide”) → COMPONENT_TYPE_VIDEO Track has an AudioSampleEntry (handler_type = “soun”) → COMPONENT_TYPE_AUDIO |
Defined by the value of the '@contentType' attribute | |
Name: encoding Type: A string identifying the video or audio format as defined in section 3 of [[.OIPF_MEDIA2]] or the subtitle format as defined in section |
Property type is COMPONENT_TYPE_VIDEO | Defined by the '@codecs' attribute | ||
→ “video/mpeg” or “video/mp2t”. | Track has a sample description type “avc1” → “video/mp4”. | |||
Property type is COMPONENT_TYPE_AUDIO | ||||
A value of 0x03 in the stream_type field in the PMT → “audio/mpeg”. A value of 0x11 in the stream_type field in the PMT and the profile_and_level field in that descriptor indicates MPEG-4 AAC or MPEG-4 HE AAC → “audio/mp4”. A value of 0x11 in the stream_type field in the PMT and the profile_and_level field in that descriptor indicates MPEG-4 HE AAC v2 → “audio/aacp”. A value of 0x06 in the stream_type field in the PMT and the presence of a DTS_audio_stream_descriptor in the ES loop in the PMT → “audio/vnd.dts”. A value of 0x06 in the stream_type field in the PMT and the presence of an AC3_descriptor in the ES loop in the PMT → “audio/ac3”. |
Track has a sample description type “mp4a” → “audio/mp4” | |||
Property type is COMPONENT_TYPE_SUBTITLE | ||||
A value of 0x01 in subtitling_type field of the subtitling_descriptor in the ES loop of the PMT → “EBU-SUBT”. A value of 0x10 or 0x11 or 0x12 or 0x14 in the subtitling_type field of the subtitling_descriptor in the ES loop of the PMT → “DVB-SUBT”. A value of 0x20 or 0x21 or 0x22 or 0x24 in the subtitling_type field of the subtitling_descriptor in the ES loop of the PMT → “DVB_SUBT” (the hearingImpaired property in the derived AVSubtitleComponent would be set to true). The PMT contains a caption_service_descriptor with a digital_cc flag having the value of 1 for at least one of the represented caption services → “CEA-SUBT”. |
Track has a handler-type “text” → “3GPP-TT”. | |||
Name: encrypted Type: Boolean |
May be derived from any of the following:
|
Not defined | ||
Name: aspectRatio Type: Number containing width divided by height as a decimal Only defined for video components. |
Derived from the stream_content and component_type fields in the component_descriptor. | Undefined | Not defined | Defined by the value of the '@par' attribute |
Name: language Type: String containing an ISO 639-2 language code as defined in [[!ISO639-2]] Only defined for audio and subtitle components. |
Property type is COMPONENT_TYPE_AUDIO | Defined by the value of the '@lang' attribute in the MPD, whether set explicitly or inherited. The contents of the language field in the 'mdhd” of the track SHALL be ignored. | ||
For audio components, the contents of the ISO_639_language_code field in the ISO_639_language_descriptor In the ES loop of the PMT unless overridden by the ISO_639_language_code field in the supplementary_audio_descriptor. | The contents of the language field in the media header “mdhd” of the track. | |||
Property type is COMPONENT_TYPE_SUBTITLE | ||||
For subtitles, the contents of the ISO_639_language_code field in the subtitling_descriptor or teletext_descriptor, as appropriate. | The contents of the language field in the media header “mdhd” of the track. | |||
Name: audioDescription Type: Boolean - True if is component is an audio description Only defined for audio components. |
True if any of the following is true:
|
Not defined | ||
Name: audioChannels Type: Number indicating 5 for 5.1, 7 for 7.1, 2 for stereo Only defined for audio components. | Not defined | Derived from the contents of the Audio Channel Configuration element | ||
Name: hearingImpaired Type: Boolean - Has value true if the stream is intended for the hearing-impaired (e.g. contains a written description of the sound effects), false otherwise. Only defined for subtitle components |
True if one of the following is true:
|
Not defined | Not defined |
NOTE: This specification intentionally does not define a mapping from the properties of the AVComponent class to the HAS MPD.
Channel objects represent data streams carrying content that the OITF can tune to. In some cases the channel object may have been explicitly created by an application but usually they will have been created when the OITF discovers the channel when performing a scan or reading an SD&S file. The following tables show the mapping from the properties of the Channel class to the source of the data for that property.
All references in the tables to the SDT are for the SDT Actual table (i.e. the SDT carried in the MPEG2-TS with a PID value of 0x0011 and a table_id value of 0x42, as defined in EN 300 468 [[!EN300468]]), and references to the BroadcastDiscovery and PackageDiscovery are to the elements of those names in SD&S.
For channels of type ID_DVB_*
:
Property name | Source | Comment |
---|---|---|
channelType | Assigned by the terminal. | Assigned by the terminal to TYPE_TV or TYPE_RADIO based on the service type signalled in SDT/service descriptor/service type or undefined otherwise. |
idType | Assigned by the terminal or by the application. | Assigned by the terminal based on the type of channel, if the channel was discovered by a channel scan, or by the application using the value passed in the createChannelObject() method. |
ccid | Assigned by the terminal. | Unique identifier for the channel |
tunerID | Assigned by the terminal. | Unique identifier for the tuner |
onid | Assigned by the terminal or by the application. | Assigned by the terminal from SDT.onid or by the application using the value passed in to the createChannelObject() method. |
nid | Assigned by the terminal. |
Assigned by the terminal as follows:
|
tsid | Assigned by the terminal or by the application. | Assigned by the terminal from SDT.tsid or PAT.tsid or by the application using the value passed in to the createChannelObject() method. |
sid | Assigned by the terminal or by the application. | Assigned by the terminal from SDT.sid or by the application using the value passed in to the createChannelObject() method. |
sourceID | Assigned by the terminal. | Takes the value undefined |
freq | Assigned by the terminal. | Takes the value undefined |
cni | Assigned by the terminal. | Takes the value undefined |
name | Assigned by the terminal. | |
majorChannel | Assigned by the terminal. | |
minorChannel | Assigned by the terminal. | |
dsd | Assigned by the terminal or by the application. | Assigned by the application using the delivery system descriptor passed in to the createChannelObject() method, or implementation dependent in all other cases. |
favourite | Assigned by the terminal. | |
favIDs | Assigned by the terminal. | |
locked | Assigned by the terminal. | |
manualBlock | Assigned by the terminal. | |
ipBroadcastID | Assigned by the terminal. | Takes the value undefined |
channelMaxBitRate | Assigned by the terminal. | Takes the value undefined |
channelTTR | Assigned by the terminal. | Takes the value undefined |
recordable | Assigned by the terminal. | Implementation dependent |
longName | Assigned by the terminal. | Implementation dependent |
description | Assigned by the terminal. | Implementation dependent |
authorised | Assigned by the terminal. | Implementation dependent |
genre | Assigned by the terminal. | Implementation dependent |
hidden | Assigned by the terminal or by the application. | If the DVB broadcast system supports a logical channel number mechanism that can identify channels that are not expected to be offered to the user in a channel list then the value of this property should be derived from that signalling. Otherwise the value of this property is implementation dependent. NOTE This specification does not itself include a logical channel number mechanism for channels of type ID_ DVB_*. |
logoURL | Assigned by the terminal. | Implementation dependent |
isHD | Assigned by the terminal. | Assigned by the terminal to true or false based on the service type signalled in SDT/service descriptor/service type or undefined otherwise. |
is3D | Assigned by the terminal. | Assigned by the terminal to true or false based on the service type signalled in SDT/service descriptor/service type or undefined otherwise. |
For channels of type ID_IPTV_SDS
:
Property name | Source | Comment |
---|---|---|
channelType | Assigned by the terminal. | Assigned by the OITF based on the value signalled in SDT/service descriptor/service type in the stream if BroadcastDiscovery/ServiceList/SingleService/SI@PrimarySISource is “Stream”, otherwise assigned based on the value of BroadcastDiscovery/ServiceList/SingleService/SI@ServiceType (if present). Otherwise, or if not known, set to undefined . |
idType | Assigned by the terminal or by the application. | Assigned by the OITF to ID_IPTV_SDS if the channel was discovered using SD&S metadata, or assigned by the application using the value passed in the createChannelObject() method. |
ccid | Assigned by the terminal. | Unique identifier for the channel |
tunerID | Assigned by the terminal. | Unique identifier for the tuner if relevant or set to undefined |
onid | Assigned by the terminal. | Assigned by the OITF to the value signalled in BroadcastDiscovery/ServiceList/SingleService/DVBTriplet@OrigNetId |
nid | Assigned by the terminal. | Implementation dependent. |
tsid | Assigned by the terminal. | Assigned by the OITF to the value signalled in BroadcastDiscovery/ServiceList/SingleService/DVBTriplet@TSId |
sid | Assigned by the terminal. | Assigned by the OITF to the value signalled in BroadcastDiscovery/ServiceList/SingleService/DVBTriplet@ServiceId |
sourceID | Assigned by the terminal. | Takes the value undefined |
freq | Assigned by the terminal. | Takes the value undefined |
cni | Assigned by the terminal. | Takes the value undefined |
name | Assigned by the terminal. | Assigned by the OITF from SDT/service descriptor/service name in the stream if BroadcastDiscovery/ServiceList/SingleService/SI@PrimarySISource is “Stream”, otherwise set to BroadcastDiscovery/ServiceList/SingleService/SI/Name (if present), otherwise set to BroadcastDiscovery/ServiceList/SingleService/TextualIdentifier@ServiceName |
majorChannel | Assigned by the terminal. | Assigned by the OITF from PackageDiscovery/Package/Service/LogicalChannelNumber (if present), otherwise takes the value undefined |
minorChannel | Assigned by the terminal. | Takes the value undefined |
dsd | Assigned by the terminal. | Takes the value undefined |
favourite | Assigned by the terminal. | |
favIDs | Assigned by the terminal. | |
locked | Assigned by the terminal. | |
manualBlock | Assigned by the terminal. | |
ipBroadcastID | Assigned by the terminal or by the application. | Assigned by the OITF to the DVB textual service identifier of the IP broadcast service, specified in the format “ServiceName.DomainName” with the ServiceName and DomainName taken from the attributes of BroadcastDiscovery/ServiceList/SingleService/TextualIdentifier, or assigned by the application using the value passed in to the createChannelObject() method |
channelMaxBitRate | Assigned by the terminal. | Assigned by the OITF to the value provided in BroadcastDiscovery/ServiceList/SingleService/MaxBitrate (if present), otherwise undefined |
channelTTR | Assigned by the terminal. | Assigned by the OITF to the value provided in BroadcastDiscovery/ServiceList/SingleService/TimeToRenegotiate (if present), otherwise undefined |
recordable | Assigned by the terminal. | Implementation dependent |
longName | Assigned by the terminal. | Set by the OITF to the Name element that is a child of the BCG ServiceInformation element describing the channel, where the length attribute of the Name element has the value 'long' |
description | Assigned by the terminal. | Set by the OITF to BroadcastDiscovery/ServiceList/SingleService/SI/Description (if present), otherwise set to the ServiceDescription element that is a child of the BCG ServiceInformation element describing this channel. |
authorised | Assigned by the terminal. | Implementation dependent |
genre | Assigned by the terminal. | Set by the OITF to BroadcastDiscovery/ServiceList/SingleService/SI/ContentGenre (if present), otherwise set to the values of any ServiceGenre elements that are children of the BCG ServiceInformation element describing the channel. |
hidden | Assigned by the terminal or by the application. | Implementation dependent |
logoURL | Assigned by the terminal. | Set by the OITF to the value of the first Logo element that is a child of the BCG ServiceInformation element describing the channel, when this element specifies the URL of an image. |
isHD | Assigned by the terminal. | Assigned by the terminal to true or false based on the service type signalled in SDT/service descriptor/service type if BroadcastDiscovery/ServiceList/SingleService/SI@PrimarySISource is “Stream”, otherwise assigned based on the value of BroadcastDiscovery/ServiceList/SingleService/SI@ServiceType (if present). Otherwise, or if not known, set to undefined .
|
is3D | Assigned by the terminal. | Assigned by the terminal to true or false based on the service type signalled in SDT/service descriptor/service type if BroadcastDiscovery/ServiceList/SingleService/SI@PrimarySISource is “Stream”, otherwise assigned based on the value of BroadcastDiscovery/ServiceList/SingleService/SI@ServiceType (if present). Otherwise, or if not known, set to undefined. |
For channels of type ID_IPTV_URI
:
Property name | Source | Comment |
---|---|---|
channelType | Assigned by the terminal. | Takes the value undefined . |
idType | Assigned by the application. | Assigned by the application using the value passed in the createChannelObject() method. |
ccid | Assigned by the terminal. | Unique identifier for the channel |
tunerID | Assigned by the terminal. | Unique identifier for the tuner if relevant or set to undefined |
onid | Assigned by the terminal or by the application. | Assigned by the application using the value passed in to the createChannelObject() method. |
nid | Assigned by the terminal. | Implementation dependent |
tsid | Assigned by the terminal or by the application. | Assigned by the application using the value passed in to the createChannelObject() method. |
sid | Assigned by the terminal or by the application. | Assigned by the application using the value passed in to the createChannelObject() method. |
sourceID | Assigned by the terminal. | Takes the value undefined . |
freq | Assigned by the terminal. | Takes the value undefined . |
cni | Assigned by the terminal. | Takes the value undefined . |
name | Assigned by the terminal. | Takes the value undefined . |
majorChannel | Assigned by the terminal. | Takes the value undefined . |
minorChannel | Assigned by the terminal. | Takes the value undefined . |
dsd | Assigned by the terminal. | Takes the value undefined . |
favourite | Assigned by the terminal. | |
favIDs | Assigned by the terminal. | |
locked | Assigned by the terminal. | |
manualBlock | Assigned by the terminal. | |
ipBroadcastID | Assigned by the terminal. | Assigned by the application using the value passed in to the createChannelObject() method. |
channelMaxBitRate | Assigned by the terminal. | Takes the value undefined . |
channelTTR | Assigned by the terminal. | Takes the value undefined . |
recordable | Assigned by the terminal. | Implementation dependent |
longName | Assigned by the terminal. | Takes the value undefined . |
description | Assigned by the terminal. | Takes the value undefined . |
authorised | Assigned by the terminal. | Implementation dependent |
genre | Assigned by the terminal. | Takes the value undefined . |
hidden | Assigned by the terminal or by the application. | Implementation dependent |
logoURL | Assigned by the terminal. | Takes the value undefined . |
isHD | Assigned by the terminal. | If the channel is being received by the OITF, assigned by the terminal to true or false based on:
undefined .
|
is3D | Assigned by the terminal. | If the channel is being received by the OITF, assigned by the terminal to true or false based on:
undefined .
|
The following table defines the mapping between the properties of the Programme
, ScheduledRecording
, Recording
and Download
classes.
Property name | Source | Programme Class Property | ScheduledRecording Class Property | Recording Class Property | Download Class Property |
---|---|---|---|---|---|
state |
Assigned by the terminal. | N/A | N/A | Assigned and updated by the terminal as recording is carried out. | Assigned by the terminal, section of the present document. |
id |
Assigned by the terminal. | N/A | N/A | Unique internal identifier for recordings. | Unique internal identifier for downloaded content. |
startPadding |
Assigned by the terminal or the application. | N/A | Default value assigned by the terminal; may be overridden by the application. | Derived by the terminal from the corresponding property on the ScheduledRecording object. | N/A |
endPadding |
Assigned by the terminal or the application. | N/A | Default value assigned by the terminal; may be overridden by the application. | Derived by the terminal from the corresponding property on the ScheduledRecording object. | N/A |
repeatDays |
Set by the application. | N/A | The days on which the recording will be repeated as assigned by the application | Derived by the terminal from the corresponding property on the ScheduledRecording object. | N/A |
name |
Assigned by the terminal. | Assigned by the terminal from EIT/short_event_descriptor/event name | Derived from Programme object when recording is scheduled. For manual recordings, assigned by the terminal (see note). | Derived by the terminal from the corresponding property on the ScheduledRecording object. | Assigned by the terminal from CADD.Title. |
description |
Assigned by the terminal. | Assigned by the terminal from EIT/short_event_descriptor/description | Derived from Programme object when recording is scheduled | Derived by the terminal from the corresponding property on the ScheduledRecording object. | Assigned by the terminal from CADD.Synopsis if present. |
longDescription |
Assigned by the terminal. | Assigned by the terminal from EIT/extended_event_descriptor/text | Derived from Programme object when recording is scheduled | Derived by the terminal from the corresponding property on the ScheduledRecording object. | N/A |
startTime |
Assigned by the terminal or the application. | Assigned by the terminal from EIT/event/start_time. | Derived from Programme object when recording is scheduled. Assigned by the application for recordings scheduled using the recordAt() method. For manual recordings initiated via a native UI, assigned by the terminal (see note). | Derived by the terminal from the corresponding property on the ScheduledRecording object. | Assigned by the terminal based on the startTime argument of RegisterDownload(). |
recordingStartTime |
Assigned by the terminal. | N/A | N/A | The actual start time of the recording. | N/A |
timeElapsed |
Assigned by the terminal. | N/A | N/A | N/A | Assigned by the terminal. |
timeRemaining |
Assigned by the terminal. | N/A | N/A | N/A | Assigned by the terminal. |
duration |
Assigned by the terminal or the application. | Assigned by the terminal from EIT/event/duration. | Derived by the terminal from the duration property of the Programme object when the recording is scheduled. Assigned by the application for recordings scheduled using the recordAt() method. For manual recordings initiated via a native UI, assigned by the terminal (see note). | Derived by the terminal from the corresponding property on the ScheduledRecording object. | N/A |
recordingDuration |
Assigned by the terminal. | N/A | N/A | The actual duration of the recording. | N/A |
channel |
Assigned by the terminal. | Reference to broadcast channel where content is available. Set to broadcast content location. | Derived by the terminal from the ccid property of the Programme object when the recording is scheduled. Derived by the terminal from the value passed by the application for recordings scheduled using the recordAt() method. For manual recordings initiated via a native UI, assigned by the terminal (see note). | Derived by the terminal from the corresponding property on the ScheduledRecording object. | N/A |
channelID |
Assigned by the terminal. | Populated from ccid of the channel carrying this programme. | N/A | N/A | N/A |
programmeID |
Assigned by the terminal. | If a programme CRID is not provided in the EIT for the programme then this shall be assigned by the terminal from EIT/event_id and it shall be encoded as a DVB URL referencing a DVB-SI event as enabled by section 4.1.3 of [[.OIPF_META2]]. Otherwise this is outside the scope of the present document. | Derived from Programme object when recording is scheduled | Derived by the terminal from the corresponding property on the ScheduledRecording object. | N/A |
programmeIDType |
Assigned by the terminal. | Assigned by the terminal. | Derived from Programme object when recording is scheduled | Derived by the terminal from the corresponding property on the ScheduledRecording object. | N/A |
parentalRatings |
Assigned by the terminal. | Populated from EIT/parental_rating_descriptor/rating, where present. | Derived from Programme object when recording is scheduled. For manual recordings initiated via a native UI, assigned by the terminal (see note). | Derived by the terminal from the parentalRating property on the ScheduledRecording object. | Assigned by the terminal from CADD.parentalRating if present. |
contentID |
Assigned by the terminal. | N/A | N/A | N/A | Assigned by the terminal from CADD.contentID if present. |
totalSize |
Assigned by the terminal. | N/A | N/A | N/A | Assigned by the terminal from CADD.contentURL@size, then updated to actual size on disk at end of download. |
contentURL |
Assigned by the terminal. | N/A | N/A | N/A | Assigned by the terminal from CADD.contentURL. |
drmControl |
Assigned by the terminal. | N/A | N/A | N/A | Assigned by the terminal from CADD.DRMControlInformation if present. |
transferType |
Assigned by the terminal. | N/A | N/A | N/A | Assigned by the terminal from CADD.contentURL.transferType. |
originSite |
Assigned by the terminal. | N/A | N/A | N/A | Assigned by the terminal from CADD.originSite |
originSiteName |
Assigned by the terminal. | N/A | N/A | N/A | Assigned by the terminal from CADD.originSiteName if present. |
iconURL |
Assigned by the terminal. | N/A | N/A | N/A | Assigned by the terminal from CADD.iconURL if present. |
longName |
Assigned by the application. | For Programme objects created using the createProgrammeObject() method, this may be set by the application. No standardised mapping in DVB-SI | Derived from Programme object when recording is scheduled. | Derived by the terminal from the longName property on the ScheduledRecording object. | N/A |
episode |
Assigned by the application. | For Programme objects created using the createProgrammeObject() method, this may be set by the application. No standardised mapping in DVB-SI | Derived from Programme object when recording is scheduled. | Derived by the terminal from the episode property on the ScheduledRecording object. | N/A |
totalEpisodes |
Assigned by the application. | For Programme objects created using the createProgrammeObject() method, this may be set by the application. No standardised mapping in DVB-SI | Derived from Programme object when recording is scheduled. | Derived by the terminal from the totalEpisodes property on the ScheduledRecording object. | N/A |
blocked |
Assigned by the terminal. | Set based on parental control settings for broadcast | N/A | Set based on parental control settings | N/A |
showType |
No standardised mapping in DVB-SI. | N/A | No standardised mapping in DVB-SI. | N/A | |
subtitles |
Assigned by the terminal. | Set in the presence of EIT/subtitle component descriptor for broadcast content for content within schedule. | N/A | Set in the presence of EIT/subtitle component descriptor for broadcast content within scope of schedule when the recording starts. | N/A |
isHD |
Assigned by the terminal. | Set in the presence of an EIT/component descriptor with stream_content value 0x01 or 0x05 and a component_type value indicating “high definition video” as defined in table 26 of [[!EN300468]], for broadcast content within scope of schedule. | N/A | Set in the presence of an EIT/component descriptor with stream_content value 0x01 or 0x05 and a component_type indicating “high definition video” as defined in table 26 of [[!EN300468]], for broadcast content within scope of schedule when the recording starts. | N/A |
audioType |
Assigned by the terminal. | Derived from EIT/component descriptors with stream_content value 0x02, 0x04 or 0x06 for broadcast content within scope of schedule. | N/A | Derived from EIT/component descriptors with stream_content value 0x02, 0x04 or 0x06 for broadcast content within scope of schedule when the recording starts. | N/A |
isMultilingual |
Assigned by the terminal. | Set when the set of language codes for EIT/component descriptors with stream_content value 0x02, 0x04 or 0x06 contains more than one language code for broadcast content within scope of schedule. | N/A | Set when the set of language codes for EIT/component descriptors with stream_content value 0x02, 0x04 or 0x06 contains more than one language code for broadcast content within scope of schedule when the recording starts. | N/A |
genre |
Assigned by the terminal. | Populated from EIT/content_descriptor/content_nibble_level_1 for broadcast content. | N/A | For broadcast content, populated from EIT/content_descriptor/content_nibble_level_1 when the recording starts. | N/A |
hasRecording |
Assigned by the terminal. | Set if the content item is already recorded on Terminal based storage. | N/A | N/A | N/A |
audioLanguages |
Assigned by the terminal. | Derived from language code(s) present in EIT/component descriptors with stream_content value 0x02, 0x04 or 0x06 for broadcast content within scope of schedule. | N/A | Derived from language code(s) present in EIT/component descriptors with stream_content value 0x02, 0x04 or 0x06 for broadcast content within scope of schedule when the programme is recorded. | N/A |
subtitleLanguages |
Assigned by the terminal. | Derived from language code(s) present in EIT/component descriptors with stream_content value 0x03 for broadcast content within scope of schedule. | N/A | Derived from language code(s) present in EIT/component descriptors with stream_content value 0x03 for broadcast content within scope of schedule when the programme is recorded. | N/A |
locked |
Assigned by the terminal. | Set based on parental control information | N/A | Set based on parental control information | N/A |
isManual |
Assigned by the terminal. | N/A | N/A | Set based on how the recording was scheduled — see the descriptions of the record() and recordAt() methods in section . | N/A |
doNotDelete |
Assigned by the terminal or the application. | N/A | N/A | May be set by the terminal from a native UI, or by an application. | N/A |
saveDays |
Assigned by the terminal or the application. | N/A | N/A | May be set by the terminal from a native UI, or by an application. | N/A |
saveEpisodes |
Assigned by the terminal or the application. | N/A | N/A | May be set by the terminal from a native UI, or by an application. | N/A |
is3D |
Assigned by the terminal. | For MPEG-2 TS content with DVB-SI component_descriptor in SDT and/or EIT: True if the component_descriptor in EIT, or if not available, in SDT indicates a 3D video format, including values 0x80, 0x81, 0x82 or 0x83. | For MPEG-2 TS content with DVB-SI component_descriptor in SDT and/or EIT: True if the component_descriptor in EIT, or if not available, in SDT indicates a 3D video format, including values 0x80, 0x81, 0x82 or 0x83. | ||
isEncrypted |
Assigned by the terminal. | N/A | N/A | Assigned and updated by the terminal as recording is carried out. | Derived from DRM specific data in content |
DRMSystemIds |
Assigned by the terminal. | N/A | N/A | Assigned and updated by the terminal as recording is carried out. | Derived from DRM specific data in content |
getDRMPrivateData |
Assigned by the terminal. | N/A | N/A | Assigned and updated by the terminal as recording is carried out. | Derived from DRM specific data in content |
Where there are multiple language versions of a text field derived from DVB-SI tables, the terminal should select one in accordance with pre-defined user preferences.
The following table shows the mapping from the properties of Download and Recording class to the data carried inside the MPEG-2 TS and MP4 file format.
Property Name | MPEG-2 TS With DVB-SI component_descriptor in SDT and/or EIT | MPEG-2 TS Without DVB-SI SDT and EIT | MP4 FF CENC |
---|---|---|---|
isEncrypted | True if a CA_descriptor is present in the PMT:
| True, if the scheme type set to 'cenc' and scheme version set to 0x00010000 and default_isEncrypted set to 0x1 in the Track Encryption Box (see note 1) | |
DRMSystemIds | CA_system_ID in CA_descriptors in the PMT | UUID in SystemID in the Protection System Specific Header box (see note 2 and note 3) | |
getDRMPrivateData | Private data bytes in CA_descriptors in the PMT | Data in the Protection System Specific Header box |
NOTE 1: This specification does not handle the case where track common encryption information is overridden at sample level.
NOTE 2: the DRMSystemId retrieved from an 'cenc' protected file is by default an UID and returned as an UUID URN as defined in [[!RFC4122]]. For example "urn:uuid:706D6953-656C-5244-4D48-656164657221
".
NOTE 3: When the UUID is referring to a DRM managed by the OITF, the DRMSystemId
and getDRMPrivateData()
mapping may be overridden. For example Marlin uses the UUID “urn:uid:69F908AF-238 4816-46EA-910C-CD5DCCCB0A3A
” in 'cenc' protected files. This UUID should be mapped to the OIPF DRMSystemID for Marlin, i.e. “urn:dvb:casystemid:19188
”
Section defines the AVComponent class and the AVAudioComponent
class, which defines various properties to describe the audio stream, and section provides information on how these properties are populated. This includes an audioDescription
boolean property which is set to true for audio streams that contain an audio commentary for the people with a visual impairment. Audio description (AD) streams which contain such commentary may be delivered to the terminal as either broadcast mix or receiver mix (see TS 101 154 [[!TS101154]] Annex E for more information on how this is done for MPEG2-TS streams).
Audio streams without audio description and audio streams with broadcast mix audio description SHALL be exposed to the application using one AVAudioComponent
object per audio stream. Broadcast mix audio description streams SHALL have the audioDescription
property set to true.
Receiver mix audio description streams have to be mixed in the terminal with a main audio stream. There may be multiple main audio streams and multiple receiver mix audio descriptions streams. The supported combinations of main audio stream and receiver mix audio description stream SHALL be determined by the OITF . Each combination SHALL be exposed to the application as a separate AVAudioComponent
object. The properties of this object SHALL be set as follows:
audioDescription
SHALL be set to true
.
language
SHALL be set to the language of the audio description stream.
audioChannels
SHALL be set to the number of audio channels in the combined stream.
encrypted
SHALL be set to true
if either constituent stream is encrypted.
componentTag
and pid
SHALL be set according to the main audio stream.
type
SHALL be set to COMPONENT_TYPE_AUDIO
.
encoding
SHALL be set accordingly otherwise it SHALL be undefined
.
Receiver mix audio description streams SHALL NOT be exposed to applications as separate AVAudioComponent
objects.
The following table defines the mapping that SHALL be used between the HTML5 AudioTrack and the MPEG-2 transport stream and ISO BMFF system layers.
Attribute | Summary | SystemLayer | ||
---|---|---|---|---|
MPEG-2 TS | ISO BMFF | MPEG DASH | ||
readonly attribute DOMString id; | Identifier of the track | The contents of the component_tag field in the stream_identifier_descriptor in PMT. | track_id | The value of the id attribute in the AdaptationSet (if provided) |
readonly attribute DOMString kind; | Category of the track | “” unless the audioDescription property of an AVComponent instance for this track would be set to true in which case “description”. | “” | As defined in the HTML5 specification as referenced by [[.OIPF_WSTVP2]] |
readonly attribute DOMString label; | Label of the track | “” | “” | “” |
readonly attribute DOMString language; | Language of the track | The primary language subtag in the BCP47 string SHALL be set as defined in section above for the language property of AVComponent. | ||
attribute boolean enabled; | Is the track enabled | No mapping is appropriate |
This section aims to give guidelines to the DAE application developer suggesting how the DAE application should be implemented to use a DLNA Remote UI Function, covering the following areas:
The sections below provide more details including example code in each case.
It is assumed that the service provider authors both the DAE application and the control UI to run on the Remote Control Device that communicates with the DAE application. It means that the DAE application and the control UI are managed by one service provider, and the DAE application could handle the HTTP request message which comes from the control UI currently being rendered in the DLNA RUIC.
There are two kinds of XML UI Listing (details are described in section 5.1.1.5 of [[!CEA-2014-A]]):
Below is a description of where each type of XML UI Listing comes from.
useServerSideXMLUIListing()
method./rcf/request_cui
”.
Examples: /rcf/request_cui?url=www.cui-server.com/avcontrol.html¶m1=value1...
The XML UI Listing is retrieved (or created dynamically) by a DAE application, which then merges the new XML UI Listing with a current XML UI Listing in the DLNA RUIS using the useServerSideXMLUIListing()
method. The merged XML UI Listing will be located in the DLNA RUIS.
The OITF SHALL associate all entries in the XML UI Listing added by a DAE application with that application, such that any HTTP requests from a Remote Control Device for the control UI specified by the XML UI Listing entry SHALL be passed to the corresponding application.
All URIs provided in the XML UI Listing SHALL start with the pre-defined URI “/rcf/request_cui
”, which can then be followed by some application-specific parameters. These parameters can be used by the DAE application to identify the Control UI being requested by the Remote Control Device.
The format of the parameters in the URI is out of scope of the DAE specification.
The following example shows the format of the Server Side XML UI Listing. The <uri> element in the Server Side XML UI Listing SHALL start with the value “/rcf/request_cui
”.
<?xml version="1.0" encoding="UTF-8"?> <uilist xmlns="urn:schemas-upnp-org:remoteui:uilist-1-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:schemas-upnp-org:remoteui:uilist-1-0 CompatibleUIs.xsd"> <ui> <uiID>4560-9876-1265-8758</uiID> <name>CoD Control UI Type 1</name> <description>Controlling the CoD contents</description> <protocol shortName="CE-HTML-1.0"> <uri>/rcf/request_cui?url=http://21.31.24.55:5910/codcui1</uri> <protocolInfo> <relatedData xmlns="urn:schemas-ce-org:ce-html-server-caps-1-0" xsi:schemaLocation="urn:schemas-ce-org:ce-html-server-caps-1-0 ServerProfiles.xsd"> <profilelist> <ui_profile name="MD_UIPROF"/> </profilelist> </relatedData> </protocolInfo> </protocol> </ui> <ui> <uiID>2123-3679-3568-2121</uiID> <name>CoD Control UI Type 2</name> <protocol shortName="CE-HTML-1.0"> <uri>/rcf/request_cui?url=http://21.31.24.55:5910/codcui2</uri> <protocolInfo> <relatedData xmlns="urn:schemas-ce-org:ce-html-server-caps-1-0"> <profilelist> <ui_profile name="MD_UIPROF"/> </profilelist> </relatedData> </protocolInfo> </protocol> </ui> </uilist>
Below is example source code showing how an application can merge a Server Side XML UI Listing that it has retrieved with the OITF's built-in XML UI Listing.
var rcMgr; var xmlhttp; function init() { ... rcMgr = document.getElementById("rcfmanager"); retrieveXMLUIListingFromServer("/iptv_app/xml_location/request_xml?xml=31", mergeXMLUIListing); ... } function retrieveXMLUIListingFromServer(url, callbackFunc) { xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if(xmlhttp.status == 200){ callbackFunc(xmlhttp.responseText); } } } xmlhttp.open("GET", url, true); xmlhttp.send(null); } function mergeXMLUIListing(xmluilisting) { rcMgr.useServerSideXMLUIListing(xmluilisting, false); } <body onload="init();"> <object id="rcfmanager" type="application/oipfRemoteControlFunction"/> ...
The process of retrieving a Control UI based on an OITF's built in XML UI Listing is described below:
The process of retrieving a Control UI based on a Server Side XML UI Listing is as below:
/rcf/request_cui
”) to the OITF DLNA RUIS. The OITF matches the URI with the correct DAE application and passes the request to that DAE application as a ReceiveRemoteMessage event.
sendRemoteMessage()
.
More details can be found in Annex .
When the control UI (CE-HTML document) is being rendered in the Remote Control Device, it can retrieve resources (For example, image, css or JavaScript files) directly from the IPTV Applications server over a secure connection. For deployments where the IPTV Applications server is outside the consumer network, the consumer network's WAN gateway SHALL allow the DLNA RUIC to access the IPTV Applications server to retrieve resources directly. The Remote Control Device that connects to the IPTV Applications server SHALL implement the Secure Sockets Layer (SSL) Protocol, the Transport Layer Security (TLS) and the “https:” URI scheme, in order to support secure Internet transactions (as defined in section ).
Below is example source code to show sending the control UI to the Remote Control Device.
var rcMgr; var xmlhttp; var deviceHandle; var reqHandles = new Array(); function init() { ... rcMgr = document.getElementById("rcfmanager"); rcMgr.addEventListener("ReceiveRemoteMessage", receiveRemoteMessageFromRD, false); // check whether the DAE app is launched by the Remote Control Device or not if (rcMgr.currentRemoteDeviceHandle != undefined) { deviceHandle = rcMgr.currentRemoteDeviceHandle; retrieveCUIFromServer("/iptv_applications/cui_location/request_cui?cui=123", sendCUIToRemoteDevice); } ... } function retrieveCUIFromServer(url, callbackFunc){ xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if(xmlhttp.status == 200){ callbackFunc(xmlhttp.responseText); } } } xmlhttp.open("GET", url, true); xmlhttp.setRequestHeader("X-OITF-RCF-User-Agent", rcMgr.getRemoteDeviceUserAgent(deviceHandle)); xmlhttp.send(null); } function sendCUIToRemoteDevice(cuiCEHTML) { rcMgr.sendRemoteMessage(remoteDeviceHandle, reqHandles.shift(), cuiCEHTML); } function receiveRemoteMessageFromRD(type, remoteDeviceHandle, reqHandle, requestLine, headers, body) { if (type == 0) { deviceHandle = remoteDeviceHandle; reqHandles.push(reqHandle); // retrieve the CUI CE-HTML document from the IPTV Applications server retrieveCUIFromServer("/iptv_applications/cui_location/request_cui?cui=123", sendCUIToRemoteDevice); } } <body onload="init();"> <object id="rcfmanager" type="application/oipfRemoteControlFunction"/> ...
This example shows the usage of receiving and responding to a message between the control UI presented on the Remote Control Device and the OITF. When the control UI sends a message to the DAE application via an HTTP request, the DAE application receives the message via a ReceiveRemoteMessage event. The DAE application SHALL return the response to the control UI in the Remote Control Device by using the sendRemoteMessage() or sendInternalServerError() methods.
The OITF is not able to notify the Remote Control Device whether the DAE application has been terminated or deactivated, or whether the application/oipfRemoteControlFunction object has been removed from the application's DOM tree. For this reason, the Remote Control Device may be presenting an outdated copy of the control UI and could send a request from this outdated control UI. In this case, the OITF SHALL return a 500 response error code to the Remote Control Device.
The OITF SHALL limit the number of HTTP requests (from the control UI in the Remote Control Device) which have not been responded to by the DAE application. If there are any requests over this limit, the OITF SHALL automatically reject them and send an HTTP response (HTTP 500 - Internal Server Error) to the Remote Control Device. The OITF SHALL buffer at least 10 outstanding HTTP requests.
NOTE: Annex provides a procedure related to this example.
Below is example source code showing the handling of messages between the DAE application and the control UI that controls the DAE application.
DAE application
var rcMgr; var reqHandles = new Array(); function init() { ... rcMgr = document.getElementById("rcfmanager"); rcMgr.addEventListener("ReceiveRemoteMessage", getMessageFromRD, false); ... } function getMessageFromRD(type, remoteDeviceHandle, reqHandle, requestLine, headers, body) { if (type == 1) { // Handling the received message with parameters (requestLine, headers, body) parseAndExecute(body); // Sending the proper return message to the Remote Control Device Var contentType = "Content-Type: text/plain\n" rcMgr.sendRemoteMessage(remoteDeviceHandle, reqHandle, contentType, "ok"); } } function parseAndExecute(body) { //For example, the request from the RD contains the message related to //"play of audio" with JSON form (Ex: {'command':415}) var retVal = eval("("+body+")"); if (retVal.command == VK_PLAY) { document.getElementById("aid1").play(1); } } <body onload="init();"> <object id="rcfmanager" type="application/oipfRemoteControlFunction"/> <object type="audio/mp4" id="aid1" data="http://www.avsource.com/audio/bgm.aac"> <param name="loop" value="infinite"/> </object> ...
Control UI
var xmlhttp; function sendPlay() { var msg = {'command':415}; sendMessage("/rcf/request_msg", msg, receiveMsg); } function sendMessage(url, msg, callbackFunc){ xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if(xmlhttp.status == 200){ callbackFunc(xmlhttp.responseText); } } } xmlhttp.open("POST", url, true); request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlhttp.send(msg); } function receiveMsg(msg) { alert("Received message from the DAE application: " + msg); } <body> ... <input type="button" value="Play" onclick="javascript:sendPlay();"> ...
The application/oipfRemoteControlFunction
object supports generating 3rd party multicast notifications and dispatching them to Remote Control Devices. The DAE application can make and send a notification to the Remote Control Devices by using the sendMulticastNotif()
method.
If the DAE application wants to send a notification CE-HTML document to all of the Remote Devices, the DAE application SHALL set the remoteDeviceHandle parameter in the sendMulticastNotif
method to -1.
Otherwise, if the DAE application wants to allow only targeted Remote Device (currently being connected to the DAE application) to retrieve the notification CE-HTML document, the DAE application set the proper remoteDeviceHandle
parameter in the sendMulticastNotif
method when it calls. Then, the OITF SHALL generate the notification URI with devicehandle
and daeid
parameters.
If the DAE application wants to send a notification CE-HTML document without storing it in the OITF, the DAE application executes the sendMulticastNotif method with null value in the notifCEHTML
parameter. The OITF SHALL make the notification URI which contains a dynamic parameter with true value, otherwise false is set in the dynamic parameter.
Below is a generated notification URI based on parameter information in the sendMulticastNotif
method.
?SendToTargetedRD&devicehandle=<target device handle value>&daeid=<DAE App ID>&dynamic=<true or false>
This URL is sent to the Remote Devices through the <ruiEventURL>
element of the multicast notification event and the Remote Devices send requests to the OITF with this URL upon receiving it. When the OITF receives the requests from the Remote Devices, it SHALL return the notification CE-HTML document in case the handle of the Remote Device which sends the request is the same with the parameter value “<target device handle value>” in the HTTP request URL, otherwise the OITF SHALL return the HTTP 403 response.
Below is example source code to show that the only targeted Remote Device retrieves the notification CE-HTML document.
var rcMgr; var xmlhttp; var deviceHandle; var reqHandles = new Array(); function init() { ... rcMgr = document.getElementById("rcfmanager"); rcMgr.addEventListener("ResultMuticastNotif", resultMuticastNotifFromRD, false); ... } function sendTargetedNotif() { // A remoteDeviceHandle SHALL be set to -1 if the OITF wants to send the // notification CE-HTML UI to all of the Remote Devices // A remoteDeviceHandle SHALL be set to a specific value of the device handle if // the OITF wants to send the notification CE-HTML UI to the targeted // Remote Control Devices var remoteDeviceHandle = rcMgr.currentRemoteDeviceHandle; var eventLevel = 0; var notifCEHTML = "<html>...</html>"; var friendlyName = "Important notification"; var profilelist = "<ui_profile name='MD_UIPROF'/>"; rcMgr.sendMulticastNotif(remoteDeviceHandle , eventLevel, notifCEHTML, friendlyName, profilelist); } function resultMuticastNotifFromRD(remoteDeviceHandle, reqHandle, dynamic) { if (dynamic != true) { alert("Notification is sent to the Remote Control Device well"); } else { //Retrieve a notifcation CE-HTML UI from server ... } } <body onload="init();"> <object id="rcfmanager" type="application/oipfRemoteControlFunction"/> ...
The OITF SHALL dispatch requests from a Remote Control Device to the DAE application that it is currently controlling. Only one Remote Control Device SHALL communicate with a DAE application at any time although this could change over time as described below.
The OITF SHALL support three mechanisms to drop the connection between a Remote Control Device and a DAE application as follows:
/rcf/drop_connection
”.
dropConnection()
method.
If the OITF is unable to dispatch requests to that application (e.g. because the application has terminated or because the application/oipfRemoteControlFunction
object has been destroyed), the request SHALL fail (the OITF sends an HTTP 500 response to the Remote Control Device). If the OITF is notified that the Remote Control Device is no longer connected to the network, then the OITF SHALL allow other Remote Control Devices to connect to the application and assume control.
]Below is example showing a mapping relationship between Remote Control Devices and DAE applications.
/rcf/drop_connection
” and then makes a request to DAE application B. DAE application B responds to the Remote Control Device. The OITF updates its internal state to show that Remote Control Device 1 is now mapped to DAE application B.
This section defines minimum capabilities which OITF implementations are required to provide to the Declarative Application Environment and the applications running in that environment.
The following section defines minimum capabilities which SHALL apply to all OITFs.
OITFs MAY support multiple simultaneous applications loaded and running in the browser.
When the CEA-2014 notification framework (see section ) is supported, OITFs SHALL support at least 2 DAE applications being visible at one time, one application showing a notification in the notification window (as defined in section 5.6.3 of [[!CEA-2014-A]]) and one in the main browser area. OITFs MAY support more than one DAE application being visible at one time in the main browser area. On OITFs where only one DAE application is visible at one time in the main browser area, it is OITF implementation specific how the visible application is changed.
OITFs with an HD output SHALL support 1280x720 graphics on that output when HD video is being decoded or when no video is being decoded. OITFs MAY support 1920x1080 graphics.
The present document does not define any requirements concerning support for SD graphics.
OITFs SHALL support unrestricted scaling of IP delivered video.
The present document does not define any requirements for scaling of video not delivered via IP, e.g. in hybrid OITFs.
The present document does not define requirements for supporting decoder format conversion.
The present document does not define requirements for pixel depth in the graphics system except that OITFs SHALL support at least one bit of per-pixel alpha.
The present document does not require the capability to mix audio from memory and audio from a currently decoded stream.
OITFs SHALL support decoding one stream containing video and audio. They MAY support decoding more than one stream.
The OITF SHALL support widgets that are least of 100k bytes. Widgets of larger size are allowed but the specification remains silent as to the maximum allowed size. When installing a widget with method installWidget() an error message WIDGET_ERROR_SIZE_EXCEEDED is returned if the size is exceeded. OITFs SHALL support the “Tiresias Screenfont” font or equivalent with the “Generic Application Western European Character Set” as defined in Annex C of [[!TS102809]]. They MAY support other fonts in addition.
OITFs SHALL provide some means for text input. The present document does not specify any particular solution.
The present document recommends support for pointer based input. The present document does not define requirements for minimum memory sizes for DAE applications or OITF behaviour when available memory is low. This specification is deliberately silent about the conditions under which the LowMemory
event defined in section is generated.
OITFs SHALL follow [[!RFC6265]] when implementing cookies support.
Since section 6.1 of [[!RFC6265]] does not fix strict limits, this specification fix the following minimum capabilities that terminals SHALL support:
NOTE: as implied by [[!RFC6265]], if a cookie or a "Set-Cookie" header is bigger than the maximum size supported by the terminal, it will be discarded, not truncated.
The present document does not require control of audio volume to be exposed to the DAE.
The OITF SHALL include a mechanism for the end user to generate the following key events:
VK_0
— VK_9
VK_UP
, VK_DOWN
, VK_LEFT
, VK_RIGHT
, VK_ENTER
, VK_BACK
VK_RED
, VK_GREEN
, VK_YELLOW
, VK_BLUE
An OITF SHALL support the entry of at least a complete set of characters in the range of characters [A-Z], or [a-z] (or both), plus the characters [0-9], plus the characters: space ( ), period (.), comma (,) question-mark (?), exclamation-mark (!), at (@), colon (:), semi-colon(;), left-bracket ((), right-bracket()), slash(/), minus-sign (-), plus sign (+) and underscore (_), for the textarea
element and the input
element (taking account of the restrictions defined for the different types of that element).
An OITF may also supported a pointer-based interaction paradigm. Terminals that support a free moving cursor SHALL indicate this using the via the “+POINTER” UI Profile Name Fragment as specified in section and hence SHALL include <pointer>true</pointer> in their XML capabilities.
To provide a good user experience with the widest range of user input devices, DAE applications SHOULD make the same feature, function or link accessible via physical keys on the remote also accessible through an element in their user interface which can be navigated to i) by up, down, left and right (e.g. on a remote control with a very restricted number of buttons) and ii) by a pointer device controlling a free moving cursor on the screen.
If the OITF includes a mechanism to generate the following key events then they SHALL be available to DAE applications and SHALL be indicated as part of the capability mechanism defined in section of this specification:
VK_PLAY
, VK_PAUSE
, VK_STOP
, VK_NEXT
, VK_PREV
VK_PLAY_PAUSE
VK_FAST_FWD
VK_REWIND
NOTE: Some remote controls have separate “play” and “pause” keys; others have a single “play/pause” toggle key. For that reason, in general, it is recommended that applications are written to handle both the VK_PLAY
/VK_PAUSE
key codes and the VK_PLAY_PAUSE
key code.
The OITF MAY include mechanisms to generate the following key events and if it does, making them available to DAE applications is OPTIONAL:
VK_HOME
VK_MENU
VK_GUIDE
VK_TELETEXT
VK_SUBTITLE
VK_CHANNEL_UP
VK_CHANNEL_DOWN
VK_VOLUME_UP
VK_VOLUME_DOWN
VK_MUTE
Where OITFs make other remote control key events available to DAE applications, this SHALL be done as specified by the capability mechanism defined in section of this specification. Whenever applicable, this SHOULD be done using the complementary UI profiles defined in section .
HTTP over TLS as defined in RFC 2818 [[!RFC2818]] and RFC 5246 [[!RFC5246]] SHALL be supported for transporting application files over broadband.
TLS 1.2 ([[!RFC5246]]) SHOULD be supported for HTTP over TLS, if not then TLS 1.1 ([[!RFC4346]]) SHOULD be supported instead and if neither of those is supported then TLS 1.0 ([[!RFC2246]]) SHALL be supported instead.
NOTE: TLS 1.2 provides a much higher security level than TLS 1.0 and 1.1 so manufacturer are recommended to support it. Note also that TLS 1.0 and 1.1 are obsoleted by the TLS 1.2 specification. It is expected that future versions of the present document will require support for TLS 1.2 and omit the possibility of only supporting TLS 1.0 or 1.1.
In order to fix a known vulnerability in SSL and TLS renegotiation, an OITF SHALL support the Renegotiation Indication Extension as specified in [[!RFC5746]] for all TLS versions.
An OITF SHALL deem a TLS connection to have failed if any of the following conditions apply:
An OITF SHALL not provide the user with an option to bypass these conditions.
An OITF SHALL support the following cypher suites for all TLS versions:
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
An OITF SHALL NOT support 'anonymous' cipher suites for TLS connections.
A list of root certificates is maintained at http://www.oipf.tv/root-certificates. The policy by which this list has been derived is outlined in Annex .
An OITF SHALL trust all root certificates identified as mandatory and MAY support those certificates identified as optional on that list, subject to the conditions in this section.
An OITF SHOULD not trust any other root certificates.
Note: Including root certificates that are not on the list increases the risk of a man in the middle attack if those root certificates have not been audited to a similar or greater level than those on the list.
An OITF SHALL cease to trust any root certificates with RSA keys of less than 2048 bits after 31st December 2013.
An OITF SHALL support a means by which the device manufacturer can remove or distrust root certificates after manufacture. This MAY be handled either via a firmware upgrade mechanism or preferably via a specific root certificate update mechanism that could allow more timely updates.
A manufacturer MAY choose to remove or distrust a mandatory root certificate in the OITF in response to a security threat.
An OITF SHOULD support a means of securely adding new root certificates after manufacture in order to maintain interoperability with servers over time.
The OITF SHALL support at least one of the UI-related base profiles defined in Table .
Base UI Profile Name | Default values |
---|---|
"OITF_SDEU_UIPROF " |
<width>720</width> <height>576</height> <colors>high</colors> <hscroll>false</hscroll> <vscroll>true</vscroll> <font type="sans-serif" defaultsize="16">Tiresias</font> with support for the Unicode character range “Generic Application Western European Character set” as defined in Annex C of [[!TS102809]]. <key>VK_BACK</key> <colorkeys>true</colorkeys> <navigationkeys>true</navigationkeys> <numerickeys>true</numerickeys> <pointer>false</pointer> <security protocolNames="ssl tls">true</security> <overlay>per-pixel</overlay><!-- whereby at least one level of partial transparency between graphics and video must be supported as per the minimum requirements of section --> <overlaylocal>per-pixel</overlaylocal><!-- whereby at least one level of partial transparency between graphics and video must be supported as per the minimum requirements of section --> <overlaylocaltuner>per-pixel</overlaylocaltuner><!-- whereby at least one level of partial transparency between graphics and video must be supported as per the minimum requirements of section --> <overlayIPbroadcast>per-pixel</overlayIPbroadcast><!-- whereby at least one level of partial transparency between graphics and video must be supported as per the minimum requirements of section --> <notificationscripts>false</notificationscripts> <save-restore>false</save-restore> |
"OITF_SD60_UIPROF " |
Same as OITF_SDEU_UIPROF, with the following modifications: <width>720</width> <height>480</height> |
"OITF_SDUS_UIPROF " |
Same as OITF_SDEU_UIPROF, with the following modifications: <width>640</width> <height>480</height> |
"OITF_HD_UIPROF " |
Same as OITF_SDEU_UIPROF, with the following modifications: <width>1280</width> <height>720</height> <colors>high</colors> <font type="sans-serif" defaultsize="24">Tiresias Screenfont</font> with support for the Unicode character range “Generic Application Western European Character Set” as defined in Annex C of [[!TS102809]]. |
"OITF_FULL_HD_UIPROF " |
Same as OITF_HD_UIPROF, with the following modifications: <width>1920</width> <height>1080</height> |
In order to capture the heterogeneity of the features supported by OITF devices, this specification also defines a set of complementary UI Profile name fragments, each constituting a particular logical subset of capabilities, for which a OITF can indicate support by appending the UI Profile name fragment to the name of the supported base UI profile as defined in Table . Both the OITF and server SHALL support the concatenation of a series of UI profile name fragments in any order.
UI Profile Name Fragment | Default values |
---|---|
"+TRICKMODE " |
<key>VK_PLAY</key><key>VK_PAUSE</key> and/or <key>VK_PLAY_PAUSE</key> (*) <key>VK_STOP</key> <key>VK_REWIND</key> <key>VK_FAST_FWD</key> (*) The +TRICKMODE profile fragment identifier does not distinguish between remote controls having separate “play” and “pause” keys; and remote controls having a single “play/pause” toggle key. For that reason, in general, it is recommended that applications are written to handle both the VK_PLAY/VK_PAUSE key codes and the VK_PLAY_PAUSE key code |
"+AVCAD " | <video_profile type="application/vnd.oipf.ContentAccessStreaming+xml"/> |
"+DL " | <download protocolNames="http">true</download> |
"+IPTV_SDS " | <video_broadcast type="ID_IPTV_SDS" scaling="arbitrary">true</video_broadcast> |
"+IPTV_URI " | <video_broadcast type="ID_IPTV_URI" scaling="arbitrary">true</video_broadcast> |
"+ANA " | <video_broadcast type="ID_ANALOG" scaling="quarterscan">true</video_broadcast> |
"+DVB_C " | <video_broadcast type="ID_DVB_C ID_DVB_SI_DIRECT" scaling="quarterscan">true</video_broadcast> |
"+DVB_T " | <video_broadcast type="ID_DVB_T ID_DVB_SI_DIRECT" scaling="quarterscan">true</video_broadcast> |
"+DVB_S " | <video_broadcast type="ID_DVB_S ID_DVB_SI_DIRECT" scaling="quarterscan">true</video_broadcast> |
"+DVB_C2 " | <video_broadcast type="ID_DVB_C2 ID_DVB_SI_DIRECT" scaling="quarterscan">true</video_broadcast> |
"+DVB_T2 " | <video_broadcast type="ID_DVB_T2 ID_DVB_SI_DIRECT" scaling="quarterscan">true</video_broadcast> |
"+DVB_S2 " | <video_broadcast type="ID_DVB_S2 ID_DVB_SI_DIRECT" scaling="quarterscan">true</video_broadcast> |
"+ISDB_C " | <video_broadcast type="ID_ISDB_C" scaling="quarterscan">true</video_broadcast> |
"+ISDB_T " | <video_broadcast type="ID_ISDB_T" scaling="quarterscan">true</video_broadcast> |
"+ISDB_S " | <video_broadcast type="ID_ISDB_S" scaling="quarterscan">true</video_broadcast> |
"+META_BCG " | <clientMetadata type="bcg">true</clientMetadata> |
"+META_EIT " | <clientMetadata type="eit-pf">true</clientMetadata> |
"+META_SI " | <clientMetadata type="dvb-si">true</clientMetadata> |
"+ITV_KEYS " |
<key>VK_HOME</key> <key>VK_MENU</key> <key>VK_CANCEL</key> <key>VK_SUBTITLE</key> |
"+CONTROLLED " |
<key>VK_CHANNEL_UP</key> <key>VK_CHANNEL_DOWN</key> <key>VK_VOLUME_UP</key> <key>VK_VOLUME_DOWN</key> <key>VK_MUTE</key> <configurationChanges>true</configurationChanges> <extendedAVControl>true</extendedAVControl> When relevant (i.e. when coupled with +DL, resp +PVR):
<remote_diagnostics>true</remote_diagnostics> |
"+PVR " |
<key>VK_RECORD</key> <recording>true</recording> |
"+DRM " | <drm DRMSystemID="urn:dvb:casystemid:19188">TS_BBTS TTS_BBTS MP4_PDCF</drm> |
"+CommunicationServices " | <communicationServices>true</communicationServices> |
"+SVG " | <mime-extensions>image/svg+xml</mime-extensions> |
"+POINTER " | <pointer>true</pointer> |
"+POLLNOTIF " | <pollingNotifications>true</pollingNotifications> |
"+WIDGETS " | <widgets>true</widgets> |
"+HTML5_MEDIA " | <html5_media>true</html5_media> |
"+RCF " | <remoteControlFunction>true</remoteControlFunction>
(*) If an OITF supports the DLNA RUI RCF as defined in section , the 3rd party multicast notification mechanism as defined in section 5.6.1 of [[!CEA-2014-A]] SHALL be supported for the OITF to send the 3rd party multicast notification to the DLNA RUICs. |
"+TELEPHONY " | <telephony_services video="false">true</telephony_services> |
"+VIDEOTELEPHONY " | <telephony_services video="true">true</telephony_services> |
Whenever an OITF supports an extension to the capabilities that can be defined using a combination of a base UI Profiles and a (number of) UI Profile fragment(s), it SHALL advertise this extension using the mechanism as defined in section .
This section defines an XML format by which an OITF describes its capabilities to a DAE application. This XML format was originally based on that found in CEA-2014 [[!CEA-2014-A]] however it has been extensively extended in this document. This is used to describe the capabilities that form the basis for the profile definitions and profile fragments as defined in section , and is also the format that is used by the xmlCapabilities property of the application/oipfCapabilities object.
The schema with the extensions and modifications to the capability description as defined in this section can be found in Annex . The schema in Annex SHALL be used instead of the existing capability description schema as defined in Annex C of CEA-2014 [[!CEA-2014-A]]. Support for carrying the XML capability description through the User-agent header as defined in CEA-2014 is not included in this document.
The elements and attributes not defined in this document SHALL be inherited from CEA-2014 [[!CEA-2014-A]].
Examples of valid OITF capability profiles are (using the full XML syntax as defined in Annex ):
<profilelist> <ui_profile name="OITF_HD_UIPROF+IPTV_SDS+AVCAD+META_BCG+TRICKMODE+ITV_KEYS+CONTROLLED+DRM"> <ext> <parentalcontrol schemes="urn:mpeg:mpeg7:cs:MPAAParentalRatingCS:2001"> true </parentalcontrol> </ext> </ui_profile> <video_profile name="TS_AVC_SD_25_HEAAC" type="video/mpeg" transport="http-get rtsp-rtp-udp" DRMSystemID="urn:dvb:casystemid:19188"/> <video_profile name="TS_AVC_HD_25_HEAAC" type="video/mpeg" transport="http-get rtsp-rtp-udp" DRMSystemID="urn:dvb:casystemid:19188"/> </profilelist>
<profilelist> <ui_profile name="OITF_HD_UIPROF+AVCAD+TRICKMODE+ITV_KEYS+CONTROLLED+DRM+DVB_S+META_SI+PVR"> </ui_profile> <video_profile name="TS_AVC_SD_25_HEAAC" type="video/mpeg" transport="http-get rtsp-rtp-udp" DRMSystemID="urn:dvb:casystemid:19188"/> <video_profile name="TS_AVC_HD_25_HEAAC" type="video/mpeg" transport="http-get rtsp-rtp-udp" DRMSystemID="urn:dvb:casystemid:19188"/> </profilelist>
<profilelist> <ui_profile name="OITF_HD_UIPROF+PVR+IPTV_SDS"> <ext> <video_broadcast type="ID_ATSC_T" scaling="arbitrary">true</video_broadcast> <parentalcontrol schemes="urn:mpeg:mpeg7:cs:MPAAParentalRatingCS:2001 urn:mpeg:mpeg7:cs:MPAAParentalRatingTVCS:2001"> true </parentalcontrol> </ext> </ui_profile> </profilelist>
If an OITF supports control over its local tuner functionality by a server, an OITF SHALL indicate this through the base profile and UI profile name fragment strings as defined in section “” and the schema defined in Annex . To this end the following new elements SHALL be supported for a capability description or capability profile (see Annex for more information):
ID_ANALOG
”, “ID_DVB_C
”, etc.).
ID_IPTV_* idType
values as specified in section ). This is done by using one or more of the (transport) protocol names as defined in Annex F of [[.OIPF_PROT2]].
getChannelConfig
method defined in section to access the channel list information.
The <video_broadcast> element is defined using the following XML Schema fragment. Multiple <video_broadcast> elements may be specified to distinguish between tuners with different behaviour or capabilities, for example with respect to scaling:
<xs:element name="video_broadcast" type="videoBroadcastType" minOccurs="0" maxOccurs="unbounded"/> <xs:complexType name="videoBroadcastType"> <xs:attribute name="type" type="xs:string" use="required"/> <xs:attribute name="transport" type="xs:string"/> <xs:attribute name="nrstreams" type="xs:unsignedInt" default="1"/> <xs:attribute name="scaling" type="scalingType" default="arbitrary"/> <xs:attribute name="minSize" type="xs:unsignedInt" default="0"/> <xs:attribute name="postList" type="xs:boolean" default="false"/> <xs:attribute name="networkTimeshift" type="xs:boolean" default="false"/> <xs:attribute name="localTimeshift" type="xs:boolean" default="false"/> </xs:complexType>
If an OITF supports functionality for rendering the output of the broadcasted content received over IP inside the browser and optionally providing an IPTV related channel line-up and favourite list to the server, an OITF SHALL indicate this through the base profile and UI profile name fragment strings as defined in section “” and the schema defined in Annex . This SHALL be done using the same <video_broadcast> element as defined in section , whereby the type attribute contains one of the ID_IPTV_* idType
values as specified in section :
To indicate support for overlays over IP broadcasts the following element SHALL be used (see Annex for more information):
Support for the control of recording functionality that is available to the OITF by a server SHALL be indicated through the base profile and UI profile name fragment strings as defined in section “” and the <recording> element defined in Annex . This specification defines the following element that can be added to a capability description:
getChannelConfig()
method defined in section to access the channel list information. The Boolean attribute manageRecordings specifies whether or not the OITF supports managing recordings through the JavaScript APIs defined in section .
The <recording> element is defined using the following XML Schema fragment (see Annex for more information):
<xs:element name="recording" type="pvrType"/> <xs:complexType name="pvrType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="ipBroadcast" type="xs:boolean" default="false"/> <xs:attribute name="HAS" type="xs:boolean" default="false"/> <xs:attribute name="DASH" type="xs:boolean" default="false"/> <xs:attribute name="manageRecordings" type="manageRecordingsType" default="none"/> <xs:attribute name="postList" type="xs:boolean" default="false"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:simpleType name="manageRecordingsType"> <xs:restriction base="xs:string"> <xs:enumeration value="none"/> <xs:enumeration value="initiator"/> <xs:enumeration value="samedomain"/> <xs:enumeration value="all"/> </xs:restriction> </xs:simpleType>
If the manageRecordings
attribute is present, this attribute SHALL take one of the following values:
If not present, a value of “none” SHALL be assumed.
If a client supports downloading content to a client (with or without DRM protection), the client SHALL indicate this through the base profile and UI profile name fragment strings as defined in section “” and the schema defined in Annex . The <download>
element SHALL adhere to the definition of bullet o) of [Req. 5.2.1.a] of CEA-2014-A.
A client MAY include an informative list of MIME types it supports for playback after download through the <mime-extensions> element. Note that since content download may be separated from content playback, a server SHOULD NOT rely on this information to be present.
If a client supports managing downloads through the JavaScript content download API specified in section then the client SHALL indicate this using the attribute manageDownloads. This attribute has the following definition (see Annex for more information):
<xs:attribute name="manageDownloads" type="manageDownloadsType" default="none"/>
If present, this attribute SHALL take one of the following values:
If not present, a value of “none” SHALL be assumed.
Example:
<download protocolNames="http ftp" manageDownloads="all"> true </download>
If an OITF supports a parental control system, the OITF SHALL indicate this by using the value “true” for element <parentalcontrol> in the OITF capability profile/description, and define a space separated list of names of parental rating schemes using the “schemes” attribute.
The schema of the <parentalcontrol> element is defined as follows (see Annex for more information):
<xs:element name="parentalcontrol" type="parentalControlType"/> <xs:complexType name="parentalControlType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="schemes" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType>
For which the following semantics SHALL apply:
Example:
<parentalcontrol schemes="dvb-si urn:mpeg:mpeg7:cs:MPAAParentalRatingCS:2001"> true </parentalcontrol>
The OITF SHALL indicate support for the extended A/V control APIs defined in section through the base profile and UI profile name fragment strings as defined in section “” and the <extendedAVControl> element defined in Annex :
<xs:element name="extendedAVControl" type="xs:boolean"/>
If included, the value of this element SHALL be: (true
|false
)
NOTE: Section defines which methods and properties in that section are covered by this capability and which are not.
The OITF SHALL indicate support for client-side metadata processing and the APIs defined in section through the base profile and UI profile name fragment strings as defined in section “” and the <clientMetadata> element defined in Annex :
<xs:element name="clientMetadata" type="metadataType"/> <xs:complexType name="metadataType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="type" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType>
This element has the following semantics:
The <clientMetadata> element has the following attributes:
Below is an extensible list of metadata system/protocol names which MAY be used for this attribute. These values are not case sensitive:
The OITF SHALL indicate support for modification of OITF configuration and settings by applications (via the APIs defined in section ) through the base profile and UI profile name fragment strings as defined in section “” and the <configurationChanges> element defined in Annex :
<xs:element name="configurationChanges" type="xs:boolean"/>
If included, the value of this element SHALL be: (true
|false
).
The OITF SHALL indicate support for the Communication Services API (via the APIs defined in section ) through the base profile and UI profile name fragment strings as defined in section “” and the <communicationServices>
element defined in Annex :
<xs:element name="communicationServices" type="xs:boolean"/> <xs:element name="presenceMessaging" type="xs:boolean"/>
If included, the value of these elements SHALL be: (true
|false
).
Support for full-duplex Voice and Video Telephony APIs is indicated using:
<xs:element name="telephony_services" type="telephonyServicesType"/> <xs:complexType name="telephonyServicesType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="video" type="xs:boolean" default="false"/> </xs:extension> </xs:simpleContent> </xs:complexType>
If present, the video attribute SHALL take one of the following values (true|false).
If not present, a value of “false” SHALL be assumed.
Example:
<telephony_services video="true"> true </telephony_services>
The OITF SHALL indicate support for handling DRM-protected content through the base profile and UI profile name fragment strings as defined in section “” and the <drm> element defined in Annex :
<xs:element name="drm" type="drmType" minOccurs="0" maxOccurs="unbounded"/> <xs:complexType name="drmType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="DRMSystemID" type="xs:string" use="required"/> <xs:attribute name="protectionGateways" type="xs:string" default=""/> </xs:extension> </xs:simpleContent> </xs:complexType>
And with the following semantics:
The <drm> element has the following attributes:
DRMSystemID
in table 9 of section 3.3.2 of [[.OIPF_META2]]. For example, for Marlin, the DRMSystemID value is “urn:dvb:casystemid:19188”. In case of the Gateway centric approach defined by [[.OIPF_CSP2]], this DRMSystemID attribute indicates the DRM System(s) of UNIS-CSP-G which is supported by the combination of OITF and CSP Gateway.
DRMSystemID
”. This attribute is conditional mandatory and SHALL be specified in the case that the DRM System indicated by the “DRMSystemID
” attribute is supported by the CSP Gateway when it is not an embedded CSPG (see Annex F of [[.OIPF_CSP2]]). Valid values for the scheme for the Gateway centric approach defined by [[.OIPF_CSP2]] are “dtcp-ip
” and “ci+
”. Values are not case sensitive.
Examples:
<drm DRMSystemID="urn:dvb:casystemid:19188">TS_BBTS TTS_BBTS MP4_PDCF</drm> <drm DRMSystemID="urn:dvb:casystemid:12348" protectionGateways="ci+">TS_PF TTS_PF</drm> <drm DRMSystemID="urn:dvb:casystemid:12348" protectionGateways="dtcp-ip">TS_PF</drm> <drm DRMSystemID="urn:dvb:casystemid:6304">TS_PF</drm>
If an OITF supports streaming A/V content to the client, the client SHALL indicate this by including a non-empty list of <audio_profile> and/or <video_profile> elements in the RUI client capability description. The <audio_profile> and <video_profile> elements SHALL adhere to the following requirements in addition to what has been defined by bullet v) and w) of [Req. 5.2.1.a] of CEA-2014-A:
Examples:
<video_profile type="application/vnd.oipf.ContentAccessStreaming+xml"/> <video_profile name="TS_MPEG2_SD_25_AC3 TS_AVC_HD_25_HEAAC" type="video/mpeg" DRMSystemID="urn:dvb:casystemid:19188" transport="rtsp-rtp-udp" /> <video_profile name="MP4_MPEG2_SD_25_AC3 MP4_AVC_HD_25_HEAAC" type="video/mp4" transport="http-get" /> <video_profile name="TS_AVC_HD_25_HEAAC" type="application/x-dtcp1" DRMSystemID="urn:dvb:casystemid:12348" transport="http-get" /> <audio_profile name="MPEG1_L3" type="audio/mpeg" transport="http-get"/>
The example below is for a terminal supporting 3D video. Note that the first two values in the 'name' strings refer to 2D capabilities, and the third value refers to 3D capabilities.
<video_profile name="TS_MPEG2_SD_25_AC3 TS_AVC_HD_25_HEAAC TS_AVC_3D_25_HEAAC" type="video/mpeg" DRMSystemID="urn:dvb:casystemid:19188" transport="rtsp-rtp-udp" /> <video_profile name="MP4_MPEG2_SD_25_AC3 MP4_AVC_HD_25_HEAAC MP4_AVC_3D_25_HEAAC" type="video/mp4" transport="http-get" />
The OITF SHALL indicate support for remote diagnostics (via the APIs defined in section ) using the following element in the OITF's capability description (see Annex for more information):
<xs:element name="remote_diagnostics" type="xs:boolean"/>
If included, the value of this element SHALL be: (true
|false
).
The OITF SHALL indicate support for SVG through the base profile and UI profile name fragment strings as defined in section or as defined in section using the Remote UI Client Capability Description defined for SVG in that section - image/svg+xml
.
In order to determine support for video tag in SVG the hasFeature()
method with argument “http://www.w3.org/Graphics/SVG/feature/1.2/#Video
” shall be used. Example:
var hasvideo = document.implementation.hasFeature( "http://www.w3.org/Graphics/SVG/feature/1.2/#Video", null)
If an OITF supports the 3rd party polling mechanism as defined in section 5.6.2 of [[!CEA-2014-A]], including the extensions to section 5.6.2 as defined in Annex , through the base profile and UI profile name fragment strings as defined in section “” and the <pollingNotifications>
element defined in Annex :
<xs:element name="pollingNotifications" type="xs:boolean"/>
If included, the value of this element SHALL be: (true
|false
).
The OITF SHALL indicate support for the multicast delivery terminating function (via the APIs defined in section ) using the following element in the OITF's capability description (see Annex for more information):
<xs:element name="mdtf" type="xs:boolean"/>
If included, the value of this element SHALL be: (true
|false
).
The following extensions to the capability profile elements defined in [Req. 5.2.1.a] of CEA-2014-A SHALL be supported:
The OITF SHALL indicate support for HTML5 video through the base profile and UI profile name fragment strings as defined in section and the <html5_media> element as defined in Annex :
<xs:element name="html5_media" type="xs:boolean"/>
If included, the value of this element SHALL be: (true
|false
).
The OITF SHALL indicate support for the DLNA RUI RCF (via the APIs defined in section ) using the following element in the OITF's capability description (see Annex for more information):
<xs:element name="remoteControlFunction" type="xs:boolean"/>
If included, the value of this element SHALL be: (true
|false
).
The OITF SHALL indicate support for wake-up using the following elements in the OITF's capability description (see Annex for more information):
<xs:element name="wakeupApplication" type="xs:boolean"/> <xs:element name="wakeupOITF" type="xs:boolean"/> <xs:element name="hibernateMode" type="xs:boolean"/>
If included, the value of this element SHALL be: (true
|false
).
The OITF SHALL indicate support for Widget APIs through the base profile and UI profile name fragment strings as defined in section “” and the <widgets> element defined in Annex :
<xs:element name="widgets" type="xs:boolean"/>
If included, the value of this element SHALL be: (true
|false
).
Widget APIs are the following Widget related methods/attributes defined in sections and :
The OITF SHALL indicate support for buffer control of AV content playback through the APIs defined in section .
The schema of the <playbackControl> element is defined as follows:
<xs:element name="playbackControl" type="playbackType"/> <xs:complexType name="playbackType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="type" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType>
This element has the following semantics:
<playbackControl>
element is true
the attribute type
SHALL include a non-empty space separated list of names indicating the forms of AV content playback control which are supported.<playbackControl>
element is true.
Below is an extensible list of names which MAY be used for this attribute. These values are not case sensitive:
The OITF SHALL indicate support for temporal clipping using media fragments in URIs defined in section by including the <temporalClipping> element in the XML capabilities as follows:
<xs:element name="temporalClipping" type="hasCapability"/> <xs:complexType name="hasCapability"/>
This specification describes capability elements which reflect the currently defined functionality. Additional functionality can be supported by an OITF and in such cases, the specification of such additional functionality will be able to define additional elements to be included. The set of capability elements is extendable through the following XML schema mechanism.
<xs:any namespace="##other"/>
<pointer>
element indicates whether or not the OITF provides the user with a way to make pointer-based input (such as mouse or touch) to the browser. If the capability is true then the OITF SHALL be able to generate all mouse event types as included in the Web Standards TV Profile [[.OIPF_WSTVP2]].
This section defines the security model that applies to the privileged functionality exposed by an OITF to a server device. The main purpose of the security model is to protect local client side functionality exposed by an OITF to JavaScript from unauthorized use. For example in the case of PVR control API, untrusted servers should be prevented from scheduling recordings.
The security model is quite generic, in a sense that it is not limited to particular privileged browser extensions, but can be applied to any local client side functionality exposed to any kind of networked application.
The following requirements SHALL apply to OITFs that expose security and/or privacy sensitive (i.e. privileged) functionality in one or more of the cases described in section .
try { object.foo() } catch(e) { if (e.name == "SecurityError") { // I am not authorised to do this } }
The following requirements SHALL apply to servers that wish to access security and/or privacy sensitive (i.e. privileged) functionality exposed by an OITF, in one or more of the cases defined in section :
The recording functionality as specified in section SHALL adhere to the following security requirements:
The content download functionality as defined in section SHALL adhere to the following security requirements:
NOTE 1: The server is the server that served the HTML document or third-party notification that includes a link to a content-access description document. This is not necessarily the same server from which the content is downloaded.
NOTE 2: The URL from which a content item is downloaded (i.e. as specified by a <ContentURL> element in the content-access description document) does not have to be protected by TLS.
The DRM control functionality (i.e. the application/oipfDrmAgent
embedded object) as defined in section SHALL adhere to the following security requirements:
The IMS functionality (i.e. the application/oipfCommunicationServices
embedded object) as defined in section SHALL adhere to the following security requirements:
The metadata processing functionality (i.e. the application/oipfSearchManager
embedded object and other APIs) as defined in sections and SHALL adhere to the following security requirements:
application/oipfSearchManager
embedded object as specified in section . If the server does not have the necessary privileges, or the server cannot be properly authenticated, the OITF SHALL throw an error as defined in section when an application loaded from that server attempts to access any of the properties or methods on the SearchManager embedded object.
video/broadcast
for accessing EIT p/f information specified in section , in order to prevent misuse of the EIT p/f information If the server does not have the necessary privileges, or the server cannot be properly authenticated, the OITF SHALL throw an error as defined in section when an application loaded from that server attempts to access to the programmes property of the video/broadcast
object specified in section .
The configuration and settings functionality (i.e. the application/oipfConfiguration embedded object and other APIs) as defined in section SHALL adhere to the following security requirements:
APIs for OITFs under the control of a service provider SHALL adhere to the following security requirements:
The remote diagnostics and management API (i.e. application/oipfRemoteManagement
) as defined in section ) SHALL adhere to the following security requirements:
The parental control manager API (i.e. application/oipfParentalControlManager
) as defined in section ) SHALL adhere to the following security requirements:
application/oipfParentalControlmanager
embedded object as specified in section . If the server does not have the necessary privileges, or the server cannot be properly authenticated, the OITF SHALL throw an error as defined in section when an application loaded from that server attempts to access any of the classes, properties or methods defined in section .
This section describes a non-limited set of permission names that MAY be included as part of the “permissions” extension of a X.509v3 certificate as defined in sections and :
The contents of an <iframe>, <embed> or <object> element may be retrieved from an FQDN other than the one from which the top-level document is loaded. In this case, the OITF SHALL enforce security restrictions between the contents of the element and the parent document. These restrictions may be based on the nested browsing context as defined in section 5.1.1 (“Nested Browsing Contexts” of the HTML5 specification as referenced by [[!OIPF_WSTVP2]] and the security restrictions formalised in section 5.2.1 (“Security”) of the HTML5 specification as referenced by [[!OIPF_WSTVP2]], excluding the features not included in this specification.
Documents SHALL be assigned the permissions associated with the FQDN from which they were loaded, as defined in section , rather than the permissions associated with the initial document of the application. For example documents loaded in an <iframe> element may be granted a different set of permissions from the top-level document that contains the <iframe> element. Similarly, following a link to a document from a different FQDN may result in the newly-loaded document having a different set of permissions than those granted to the previous document even though they are within the same application boundary.
As described in section , for files requested with XMLHttpRequest, the Same-Origin Policy SHALL be extended using the application domain as defined in section .
<security>
element in a DLNA RUIC Capability Description indicates that the Remote UI Client supports setting up a secure connection with the Remote UI Server (see section 5.2.1 of [[!CEA-2014-A]] for more information). It is the responsibility of the DAE application to require the DLNA RUIC to verify the user behind the remote control is actually the intended user. For example, this may be established by requiring a PIN number to be entered. It is outside the scope of this specification what measures are taken by the DAE application to ensure correct identification of the user.
DAE Widgets are a specialization of standard DAE applications. DAE Widgets are a profile of W3C Widgets. A mandatory requirement in the referenced W3C Widgets 1.0 specifications remains mandatory also for DAE Widgets and recommended and optional requirements in W3C Widgets 1.0 remain recommended and optional for the DAE Widgets, unless explicitly specified differently inside this document.
A Widget SHALL be packaged in order to allow a single download and installation on an OITF. The packaging format for the files of a Widget is defined in section 5 of [[!Widgets-Packaging]]. Content inside the Widget package has to be organized according to section 6 of [[!Widgets-Packaging]].
Each Widget package SHALL contain a configuration document as defined in section 7 of [[!Widgets-Packaging]]. All the attributes of the <widget>
element are supported with the following exceptions and clarifications:
Widgets also support Internationalization and Localization as defined in section 8 of [[!Widgets-Packaging]].
The steps for processing a Widget package and associated processing rules are described in section 9 of [[!Widgets-Packaging]].
A Widget running on a OITF can request access to potentially sensitive APIs or resources. In order to avoid data leaking a security model for Widgets is imposed. DAE Widgets SHALL run in a “Widget execution scope”, defined in section 2 of [[!Widgets-Access]] as “the scope (or set of scopes, seen as a single one for simplicity's sake) being the execution context for code running from documents that are part of the Widget package”. Note that section 3 of the same specification states that “A user agent must prevent the Widget execution scope from retrieving network resources, using any method (API, linking, etc.) and for any operation, unless the user agent has granted access to an explicitly declared access request.”
DAE Widgets SHALL also support mechanisms to define network permissions as defined in sections 3 and 4 of [[!Widgets-Access]].
Note that according to [[!Widgets-Access]] an OITF “may grant access to certain URI schemes without the need of an access request if its security policy considers those schemes benign”. Furthermore a OITF “may deny access requests made via the access element (e.g. based on a security policy, user prompting, etc.)”.
A set of application programming interfaces (APIs) and events are defined for Widgets that enable baseline functionality such as exposing Widget metadata and runtime information.
The Widget interface primarily provides access to metadata derived from processing the Widget's configuration document. DAE Widgets SHALL support the Widgets interface as defined in section 5 of [[!Widgets-APIs]]. This specification doesn't define any scheme handlers for the openURL() method.
The Widget interface makes use of the Storage interface defined in section 4.1 of [[!Web-Storage]]. As an extension of that specification, Protected Keys in a Storage Area as defined in section 6.1 of [[!Widgets-APIs]] are also allowed.
Note that as defined in section 6 of [[!Widgets-APIs]] an OITF SHOULD limit the total amount of space allowed for storage areas per Widget. Furthermore an OITF SHALL support key and values at least 4kB long.
Widget authors and distributors SHALL digitally sign Widgets as a mechanism to ensure continuity of authorship and distributorship. Prior to instantiation, an OITF SHOULD use the digital signature to verify the integrity of the Widget package and to confirm the signing key(s).
The process of digitally signing a W3C Widget is defined in [[!Widgets-DigSig]].
Note that as defined in section 9 of [[!Widgets-DigSig]] in case of signature validation failure the user SHALL be notified; means or format of a failure notification are left up to implementers. The OITF MAY ask the user if the Widget should be installed even if the validation failed or if the signature is missing. If the user accept launching the Widget, it SHALL be run without access to privileged API.
The performance metrics here have been derived from a set of graphics benchmarks programs — the can be run from http://orange-opensource.github.com/orangemark/. Use of these benchmark programs is OPTIONAL in the present document. It is up to a testing or certification regime where graphics performance is relevant to decide whether to use them as-is, to use a derivative or to do something completely different.
Performance is expressed in a power of 2 logarithmic scale of the complexity of a page which can be updated at 25Hz. For example, when moving a frame around;
Although the benchmark programs measure performance up to 10, typical TV use-cases are unlikely to benefit from values higher than 5. Values of 1 or 2 are unlikely to offer a good user experience, hence this section focuses on features that can be supported with values 3, 4 or 5.
Graphics performance is defined in terms of a number of performance levels. This version of the specification defines two levels, “1” and “2'”. An OITF that advertises level “1” graphics performance in its device capabilities SHALL comply with the minimum performance defined for that level. An OITF that advertises level “2” graphics performance in its device capabilities SHALL comply with the minimum performance defined for that level. An OITF MAY not comply with the minimum performance for even level “1” in which case it SHALL NOT advertise either levels “1” or “2” in its device capabilities.
To be clear, in the present document, it is OPTIONAL for an OITF to support even graphics performance level “1”.
The following table defines the minimum performance that SHALL be supported for animations using CSS transitions of the properties listed in order for an OITF to advertise support for levels 1 and 2 respectively. Values in this table indicate the number of elements of the specified target being animated simultaneously. The number is expressed as a power of 2, i.e. a value of 3 SHALL mean 4 simultaneous animations, a value of 5 SHALL mean 16 simultaneous animations.
Target for the CSS Property | CSS Property being animated | Test | Level 1 | Level 2 |
---|---|---|---|---|
Frame | background-color | 2d/frame-color | 3 | 5 |
background-color, opacity | 2d/frame-color-alpha | 3 | 5 | |
left, top | 2d/frame-left-top | 3 | 5 | |
left, top, opacity | 2d/frame-opacity | 3 | 5 | |
transform: rotate | 2d/frame-rotate | No requirement | 5 | |
transform: scale | 2d/frame-scale | 3 | 5 | |
transform: skew | 2d/frame-skew | No requirement | 5 | |
transform: matrix | 2d/frame-matrix | 3 | 5 | |
border-radius | 2d/frame-border-radius | 3 | 5 | |
width, height | 2d/frame-width-height | 3 | 5 | |
linear-gradient | 2d/frame-linear-gradient | 3 | 5 | |
Image | left, top | 2d/image-top-left | 3 | 5 |
left, top, opacity | 2d/image-opacity | 3 | 5 | |
transform: rotate | 2d/image-rotate | No requirement | 5 | |
transform: scale | 2d/image-scale | 3 | 5 | |
transform: skew | 2d/image-skew | No requirement | 5 | |
transform: matrix | 2d/image-matrix | 3 | 5 | |
Text | left, top | 2d/text-left-top | 3 | 5 |
left, top, opacity | 2d/text-opacity | 3 | 5 | |
transform: rotate | 2d/text-rotate | No requirement | 5 | |
transform: scale | 2d/text-scale | 3 | 5 | |
transform: skew | 2d/text-skew | No requirement | 5 | |
text-shadow | 2d/text-emboss | 3 | 5 |
No minimum performance is defined for 3D transforms.
No minimum performance is defined for graphics using the Canvas element.
No minimum performance is defined for WebGL graphics.
The source for the benchmark suite can be found at https://github.com/Orange-OpenSource/orangemark, version “V1.0.1”.
In order to address variation between successive runs of the tests, it is RECOMMENDED that any testing or certification regime that references these graphics benchmarks programs, or a derivative of them, require them to be run several times and the highest and lowest runs discarded.
The graphics benchmark programs measure frame rate using the mozPaintCount
property (if supported), otherwise the requestAnimationFrame()
method (if supported — see [[TIMING-CONTROL]]) or a polyfill based on setTimeout()
. OITFs MAY support other private or native mechanisms for measuring the frame rate. This specification is silent about the acceptability of these private or native mechanisms, this is a matter for any testing or certification regime that references these graphics benchmark programs.
This Annex is intentionally left blank.
As specified in section , applications are recorded within a hierarchy of applications. This hierarchy has a number of benefits for an environment where multiple applications may be executing simultaneously, including:
Each object representing an application possesses an interface that provides access to methods and attributes that are uniquely available to applications. For example, the facilities to create and destroy applications are accessed through such methods.
Development and maintenance efficiencies are gained through distinct application boundaries. Code reuse is offered through the application tree, permitting applications to export facilities as desired (for example, channel change logic may be embedded in the “zapper” application and exported to an EPG application). The paired advantages of compartmentalisation and code re-use are of increasing value as the number of authoring entities and applications grows — what is of marginal additional value for one authoring entity and three applications is of significant value for 10 authoring entities and 50 applications.
There are many different usage models and scenarios that one can think of when dealing with protected content and the interactions the user or the device may have with a service provider. This includes usage models regarding user registration, domain management, license acquisition, downloading content, etc. This informative annex aims to clarify the usage of the interfaces as specified in sections , , and . in the context of these interactions. However, this annex will only show some of the generic mechanisms as offered by these interfaces, not only the browser interfaces, but also including some of the local interfaces on the device (that actually do not need to be standardized) In the figure below these are indicated by dotted lines.
The main scenario that we envision is the following:
This can be done inside the browser using a standard CE-HTML interface. In the figure above, this is identified by interface a. In those deployments where the OITF supports the metadata CG client, an embedded application or a DAE application can make use of metadata provided through a metadata CG client. This is identified by interface g*.
application/vnd.oipf.ContentAccessDownload+xml
” in case of download, and “application/vnd.oipf.ContentAccessStreaming+xml
” in case of streaming. This is indicated by interfaces d0, d1, d2, e0, e1, and e2.
For certain steps in these interactions, the CoD store may need to interact with the DRM agent. This can be done by talking directly to the DRM agent during a browser session using interfaces b0) and b1). Alternatively, the <DRMControlInformation> element of the content access descriptor can be used to convey DRM specific messages to the DRM agent. This is indicated by interface d3.
Note that both the DRM agent and Download manager are autonomous components that will be actively performing their duties, irrespective whether there is an active browser session or not. They will have their own interaction with e.g. the license server and download server, and possibly with the user. These interactions are identified by interfaces c1, c2, d4, d5.
Interface a: browse, select and purchase content from CoD store
This interface is used to interact with the CoD store for operations such as user registration, browsing the content offered by the CoD store, and purchase a license. This is a standard CE-HTML/HTTP interface.
Interface b*: In-session interaction from web page with underlying DRM agent
Interface b0 (and the related interface b1) is the application/oipfDrmAgent JavaScript embedded object interface as defined in section . This interface will allow messages to be exchanged between pages from the CoD store and the underlying DRM agent, whilst the user is having a user interface session with the CoD store. Examples of these messages are Marlin Action tokens. This is useful to enable scenarios, such as subscription license acquisition, registration, domain management, etc.
The interface basically consists of one method: sendDRMMessage(String msgType, String msg), which is very generic in the sense that any kind of message can be exchanged. The exact payload and types of messages that could be exchanged is defined in the [[.OIPF_CSP2]]. An example of such message could be:
pluginElement = document.getElementByID("drmplugin"); pluginElement.sendDRMMessage("application/vnd.marlin.drm.actiontoken+xml", "<marlin>...</marlin>", "urn:dvb:casystemid:19188"); ... <object id="drmplugin" type="application/oipfDrmAgent"/>
Note that this API is designed to be asynchronous in nature, because certain interactions may take a indeterminate amount of time. Therefore, it is not wise to make the method synchronous, since that could block the JavaScript engine. To this end we have defined an event handler: onDRMMessageResult, to register a callback function that will be called when the DRM agent completed handling of the message. For example:
function callbackF(String msgID, String resultMsg, Integer resultCode) { ... } document.getElementByID("drmplugin").onDRMMessageResult = callbackF;
An equivalent DOM2 event is also generated.
Content authors SHOULD be aware of the asynchronous nature of the API. Only after having received the callback message, the web page can assume that the DRM agent has handled the DRM message. The service author may need to define some visual cues to the user if he would like the user to wait for certain actions to finish.
Interface c*: Autonomous out-of-session interaction between DRM agent and CoD store
Interface c1 is the collection of interfaces between the DRM agent, the CoD store, the license server, etc. as defined in the [[.OIPF_CSP2]]. The interaction is typically done outside the scope of the browser, and also without the user being involved. In the few cases where the user would be involved, the device will typically have its own “local” user interface to handle the interaction with the user. In some of these the DRM agent would need to open a web page to the originating CoD store, so that the user could resolve the issue directly with the store (e.g. using the rightsURL extracted from the MPEG2_TS). Since the user could be doing other things at that moment, it may not be appropriate to popup/replace the current browser session without the user consent. Therefore, the DRM agent could issue a notification event that will get listed along similar lines to a third-party notification event. The user would be notified that his attention is required with respect to the DRM agent, and can then decide to take action and launch the browser.
In the figure above, these UI interactions are identified by interface c2 and c3. These interfaces however are typically local inside the OITF, and are not specified in more detail.
Interface d*: Downloading content
These interfaces are used for downloading content. In order to trigger the download, a special content-access descriptor (the content access download descriptor) with an easily identifiable MIME type “application/vnd.oipf.ContentAccessDownload+xml
” is used. This descriptor contains all the relevant data related to fetch the content. This content-access descriptor is typically provided by the CoD store. A browser application can fetch this descriptor in various different ways, e.g. by following a link or through an XMLHttpRequest. This is identified by interface d0. The content access download descriptor and MIME type are defined in Annex . It contains elements, such as <ContentURL> which indicates where the content item can be fetched, and <MetadataURL> to indicate where additional metadata, such as genre, subtitles, artwork, etc. can be retrieved from.
Interface d1) (and related interface d2 are used to trigger/register the download with the download manager. This is done by handing over the content access download descriptor to the download manager by calling method registerDownload() on the application/oipfDownloadTrigger embedded object after retrieving the content-access descriptor e.g. through XMLHttpRequest. Once the download is registered, the download manager will take care that the content is downloaded. Since this may be a lengthy task, the download manager is an independent process from the browser, that will perform its duty in the background even if the browser is closed. By making the download manager an independent process of the browser, the user can in the meantime do other things.
Interface d3 is a local interface that is used to pass optional DRM messages carried in the content-access descriptor from the Download manager to the DRM agent. These messages are included as part of one or more <DRMControlInformation>
element inside the content access download descriptor (as defined by Annex ). These may include messages (such as a Marlin preview license) in cases where license information and the content to be downloaded can be packaged together.
Interface d4 is the actual interface for downloading the content. The protocols that can be used for downloading content are defined in the Open ITPV Forum Protocols specification document. The default protocol is HTTP, with support for HTTP Range requests. The HTTP Range requests are used in order for downloads to be able to resume after e.g. network failure or device power-down, because as mentioned above, the download manager is an autonomous component that must continue downloading the requested content items as a background process, even after a device power-down or network failure, until it succeeds or the user has given permission to terminate the download.
Interface d5 defines an interface to enable error recovery for the download mechanism. It could be used to recover from errors or other situations that lead to the corruption or deletion of the content/licenses or a current download to fail. An example usage is as follows: to be able to refetch the content, and its licenses from the CoD store the OITF may synchronize with the CoD store by issuing a secure HTTP GET request to the URL of element <OriginSite>
concatenated with “/synchronize
” as defined by the content-access descriptor, after which the IPTV application offering the content-download replies with an XML document describing the list of zero or more content IDs that had previously been downloaded by the given user (i.e. it is assumed that the IPTV application offering the content download still remembers which content a user has bought and downloaded before), using for example the following format:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="synchronizelist" type="SynchronizeType"/> <xs:complexType name="SynchronizeType"> <xs:sequence> <xs:element name="content" type="ContentType"/> </xs:sequence> </xs:complexType> <xs:complexType name="ContentType"> <xs:sequence> <xs:element name="content_ID" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:schema>
Example:
<synchronizelist> <content> <content_ID>item 1</content_ID> <content_ID>item 2</content_ID> ... </content> </synchronizelist>
NOTE: To authenticate the user, cookies or single sign on may be used.
The OITF MAY use this information to decide which content and which licenses to refetch. Refetching the content is done by issuing a secure HTTP GET request to the following URL:
<OriginSite> + "/synchronize" + "?" + a <content_ID> value
after which the application offering the content download replies with the appropriate information to retrigger the download by providing the appropriate content access download descriptor in order to trigger the download manager and DRM agent to redownload the content and related licenses.
Interface d6: Although the download manager is an autonomous process, the user may sometimes want to view or control the state of the download manager. To this end, the download manager will typically offer its own user interface, which allows the user to manage the ongoing downloads (e.g. suspend/resume, cancel) and monitor the progress of the items that are being downloaded.
In retail deployments this is typically a local user interface, for which no protocol needs to be defined. However, since it may be useful for the user to have a quick overview of the current downloads, in section of this document a visualization embedded object called application/oipfStatusView has been defined by which a (third-party) server provider could include an overview of the status of the download manager as part of its UI. This is interface d6 in the figure above.
NOTE: for managed deployments JavaScript interfaces may be needed to have more control over the UI of the download manager. This is covered by the download manager APIs in section .
Interface e*: Unicast Streaming and playback of downloaded content using A/V Control object
The A/V Control object as defined in section may be used to render unicast streaming content triggered by a content-access streaming descriptor (as specified in section ) and may be used to play back (partially) downloaded content by using the method setSource as specified in section .
Interface e0 can be used to pass for a content access streaming descriptor to set up a protected stream, by passing through interface e1 the necessary information for the A/V player to set up the stream through interface e2, and for passing included <DRMControlInformation> messages to the DRM agent for DRM protection of the streamed content using interface f.
Interface e0 can also be used to get feedback from the A/V player (such as DRM related playback errors as defined in section ) in case of playing streaming content or partially downloaded content (through method setSource()
).
Interface f: Request license
The A/V Player will render the content. When the content is protected, the A/V embedded object will have to get the necessary keys from the DRM agent using interface f in order to decrypt the content.
If the content is played inside the browser, interface e1 defines a callback event “onDRMRightsError
” to allow the page to handle DRM-related errors (in addition to c1).
Interface g*: Local metadata based applications
These interfaces are for use with local OITF embedded and DAE applications that may wish to use a metadata CG client for browsing and selecting the content.
For a detailed specification of how devices and users are authenticated, we refer to [[.OIPF_CSP2]]. For the security model related to accessing the DRM agent and Download manager from an external source, such as a web page (i.e. to open up the browser's sandbox), we refer to section .
An OITF that supports Content Download (i.e. if the <download>
element has been given value “true
” in the OITF's capability profile as specified in section ) SHALL support parsing and interpretation of a Content Access Download Descriptor with MIME type “application/vnd.oipf.ContentAccessDownload+xml
”.
A valid Content Access Download Descriptor SHALL adhere to the following XML Schema:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:oipf:iptv:ContentAccessDownloadDescriptor:2008-1" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="urn:oipf:iptv:ContentAccessDownloadDescriptor:2008-1" elementFormDefault="qualified" attributeFormDefault="unqualified"> <!-- schema filename is iptv-ContentAccessDownloadDescriptor.xsd --> <!-- this schema redefines the generic Content Access Descriptor Schema iptv- AbstractContentAccessDescriptor.xsd as defined in Annex E.3 by limiting the allowable values for attribute "TransferType" to "playable_download" and "full_download" --> <xs:redefine schemaLocation="iptv-AbstractContentAccessDescriptor.xsd"> <xs:simpleType name="TransferTypeEnum"> <xs:restriction base="tns:TransferTypeEnum"> <xs:enumeration value="full_download"/> <xs:enumeration value="playable_download"/> </xs:restriction> </xs:simpleType> <xs:complexType name="ContItemType"> <xs:complexContent> <xs:extension base="tns:ContItemType"> <xs:sequence> <xs:element name="availabilityWindow" type="tns:timeRangeType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:redefine> <xs:complexType name="timeRangeType"> <xs:attribute name="start" type="xs:dateTime" use="required"/> <xs:attribute name="lastJoinTime" type="xs:dateTime"/> <xs:attribute name="end" type="xs:dateTime" use="required"/> </xs:complexType> </xs:schema>
The semantics of the allowable values for attribute TransferType as defined by simple string type TransferTypeEnum is as follows:
The <availabilityWindow>
element has the following semantics:
<availabilityWindow> - indicates a time range for which the content is available for download.
]The syntax and semantics of the imported elements from the generic Content Access Descriptor Schema SHALL be as defined in annex .
NOTE: An OITF SHALL silently ignore unknown elements and attributes that are part of a Content Access Download Descriptor.
An OITF SHALL support parsing and interpretation of a Content Access Streaming Descriptor with MIME type “application/vnd.oipf.ContentAccessStreaming+xml”.
A valid Content Access Streaming Descriptor SHALL adhere to the following XML Schema:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:oipf:iptv:ContentAccessStreamingDescriptor:2008-1" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="urn:oipf:iptv:ContentAccessStreamingDescriptor:2008-1" elementFormDefault="qualified" attributeFormDefault="unqualified"> <!-- schema filename is iptv-ContentAccessStreamingDescriptor.xsd --> <!-- this schema redefines the generic Content Access Descriptor Schema iptv- AbstractContentAccessDescriptor.xsd as defined in Annex E.3 by limiting the allowable values for attribute "TransferType" to "streaming" --> <xs:redefine schemaLocation="iptv-AbstractContentAccessDescriptor.xsd"> <xs:simpleType name="TransferTypeEnum"> <xs:restriction base="tns:TransferTypeEnum"> <xs:enumeration value="streaming"/> </xs:restriction> </xs:simpleType> </xs:redefine> </xs:schema>
The semantics of the allowable values for attribute TransferType as defined by simple string type TransferTypeEnum is as follows:
The syntax and semantics of the imported elements from the generic Content Access Descriptor Schema SHALL be as defined in annex .
The <notifyURL> element has no meaning in this context, SHOULD NOT be encoded and SHOULD be ignored by OITFs if present.
NOTE: An OITF SHALL silently ignore unknown elements and attributes that are part of a Content Access Streaming descriptor.
This section specifies the generic (i.e. "abstract") content access descriptor XML Schema that forms the basis for the XML Schemas of document types: application/vnd.oipf.ContentAccessDownload+xml
and application/vnd.oipf.ContentAccessStreaming+xml
.
An Abstract Content Access Descriptor SHALL adhere to the semantics as defined in the bulleted list below. In this bulleted list, optional means optional for server, but mandatory to be supported on OITFs that have indicated support for MIME type “application/vnd.oipf.ContentAccessDownload+xml
”. Mandatory means mandatory for the server to include this element in the content access descriptor.
DRMSystemID
”, which indicates the DRM system for which this URL applies, using a value as defined by element DRMSystemID
in table 9 of section 3.3.2 of [[.OIPF_META2]]. For example, for Marlin, the DRMSystemID value is “urn:dvb:casystemid:19188”. This attribute is used for linking a <ContentURL> to a corresponding <DRMControlInformation> element with the same DRMSystemID value. If the “DRMSystemID” attribute is not specified or has value empty string, then this indicates that the content is not DRM protected.
TransferType
”, which indicates the type of transfer used for the content. The concrete values that are allowed for this attribute are defined in annexes and for document types application/vnd.oipf.ContentAccessDownload+xml
and application/vnd.oipf.ContentAccessStreaming+xml
.
Size
”, which indicates the size of the content item in bytes. If the size is unknown (e.g. in case of streaming), the value of this element is -1. If the value is greater or equal to 0, the value given here SHALL correspond to the value given to the Content-Size HTTP header if the content is fetched through an HTTP ContentURL. If after downloading the content item the size of the downloaded content item does not match the indicated size parameter, the OITF SHALL report failed download (if the application/oipfDownloadManager
object is used an event is dispatched to the onDownloadStateChange listener(s) with reason code 3, “The item is invalid due to bad checksum or length”). The OITF SHOULD remove the downloaded content item
MD5Hash
”, which indicates the MD5 hash value [[!RFC1321]] of the content item. This value is used to check the correctness of the downloaded file. If after downloading the content item the MD5 hash value of the downloaded content item does not match the indicated MD5 hash value, it is recommended for the OITF to remove the downloaded content item.
Duration
”, which indicates the media playback duration of the media item in the following form "hh:mm:ss".
MIMEType
”, which indicates the MIME type of the content item. It is recommended for an OITF to inform the user if the content-type of a content item being retrieved cannot be interpreted by the OITF.
MediaFormat
”, which describes the media format of the content item. The value of this element should be one of the terms defined by the AVMediaFormatCS classification scheme specified in [[.OIPF_META2]].
VideoCoding
”, which describes the coding format of the video. The value of this element should be one of the terms defined by the VisualCodingFormatCS classification scheme defined in [[.OIPF_META2]].
AudioCoding
”, which describes the coding format of the audio. The value of this element should be one of the terms defined by the AudioCodingFormatCS classification scheme defined in [[.OIPF_META2]].
PictureFormat
”, which describes the picture format of the video. The value of this element should be one of the terms defined by the PictureFormatCS classification scheme defined in [[!TS102822-3-1]], with the URN "urn:tva:metadata:cs:PictureFormatCS:2011
". Only the following termIDs defined in TVA PictureFormatCS may be used:Multiple <ContentURL> elements may be included for a single <ContentItem>, as long as each <ContentURL> element has a different value for the “DRMSystemID” attribute.
Multiple <ParentalRating> elements may exist, as long as each <ParentalRating> element has a different value for the “Scheme” or the “Region” attribute.
An Abstract Content Access Descriptor SHALL adhere to the following XML Schema:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <!-- schema filename is iptv-AbstractContentAccessDescriptor.xsd --> <!-- this is the generic (i.e. "abstract") content access descriptor XML Schema that forms the basis for the XML Schemas of document types: application/vnd.oipf.ContentAccessDownload+xml and application/vnd.oipf.ContentAccessStreaming+xml. This schema includes the definition for abstract type "DRMPrivateDataType" (as defined in Open IPTV Forum Solution Specification Volume 3 Metadata Release 2) and its specific instance type "MarlinPrivateDataType" or "HexBinaryPrivateDataType" (as defined in Open IPTV Forum Solution Specification Volume 7 Authentication, Content Protection and Service Protection Release 2) --> <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> <xs:include schemaLocation="csp-MarlinPrivateDataType.xsd"/> <xs:include schemaLocation="csp-DRMPrivateDataType.xsd"/> <xs:include schemaLocation="csp-HexBinaryPrivateDataType.xsd"/> <xs:element name="Contents" type="ContentsType"/> <xs:complexType name="ContentsType"> <xs:sequence> <xs:element name="ContentItem" type="ContItemType" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="ContItemType"> <xs:sequence> <xs:element name="Title" type="TitleType" minOccurs="1" maxOccurs="unbounded"/> <xs:element name="Synopsis" type="SynopsisType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="OriginSite" type="xs:anyURI" minOccurs="1"/> <xs:element name="OriginSiteName" type="xs:string" minOccurs="0"/> <xs:element name="ContentID" type="xs:string" minOccurs="0"/> <xs:element name="ContentURL" type="ContentURLType" maxOccurs="unbounded"/> <xs:element name="MetadataURL" type="xs:anyURI" minOccurs="0"/> <xs:element name="NotifyURL" type="xs:anyURI" minOccurs="0"/> <xs:element name="IconURL" type="xs:anyURI" minOccurs="0"/> <xs:element name="ParentalRating" type="ParentalRatingType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="DRMControlInformation" type="DRMControlInformationType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="TitleType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute ref="xml:lang"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="SynopsisType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute ref="xml:lang"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="ContentURLType"> <xs:simpleContent> <xs:extension base="xs:anyURI"> <xs:attribute name="DRMSystemID" type="xs:string" use="optional"/> <xs:attribute name="TransferType" type="TransferTypeEnum" use="required"/> <xs:attribute name="MD5Hash" type="xs:string" use="optional"/> <xs:attribute name="Duration" type="xs:duration" use="optional"/> <xs:attribute name="Size" type="xs:integer" use="required"/> <xs:attribute name="MIMEType" type="xs:string" use="required"/> <xs:attribute name="MediaFormat" type="xs:string" use="optional"/> <xs:attribute name="VideoCoding" type="xs:string" use="optional"/> <xs:attribute name="AudioCoding" type="xs:string" use="optional"/> <xs:attribute name="PictureFormat" type="xs:string" use="optional"/> </xs:extension> </xs:simpleContent> </xs:complexType> <!-- The TransferType is a string in this generic content access descriptor. The values of the TransferTypeEnum are restricted in the document instance types "application/vnd.oipf.ContentAccessDownloadDescriptor" and "application/vnd.oipf.ContentAccessStreamingDescriptor" as defined in Annexes E.1 and E.2.-> <xs:simpleType name="TransferTypeEnum"> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:complexType name="ParentalRatingType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Scheme" type="xs:string" use="optional"/> <xs:attribute name="Region" type="xs:string" use="optional"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="DRMControlInformationType"> <xs:sequence> <xs:element name="DRMSystemID" type="xs:string"/> <xs:element name="DRMContentID" type="xs:string"/> <xs:element name="RightsIssuerURL" type="xs:anyURI" minOccurs="0"/> <xs:element name="SilentRightsURL" type="xs:anyURI" minOccurs="0"/> <xs:element name="PreviewRightsURL" type="xs:anyURI" minOccurs="0"/> <xs:element name="DoNotRecord" type="xs:boolean" minOccurs="0"/> <xs:element name="DoNotTimeShift" type="xs:boolean" minOccurs="0"/> <xs:element ref="DRMGenericData" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="DRMPrivateData" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:element name="DRMGenericData" type="DRMGenericDataType"/> <xs:element name="DRMPrivateData" type="DRMPrivateDataType"/> <xs:complexType name="DRMGenericDataType"> <xs:sequence> <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:element name="MarlinPrivateData" type="MarlinPrivateDataType" substitutionGroup="DRMPrivateData"/> <xs:element name="HexBinaryPrivateData" type="HexBinaryPrivateDataType" substitutionGroup="DRMPrivateData"/> </xs:schema>
An OITF SHALL silently ignore unknown elements and attributes that are part of a content-access descriptor.
This annex contains the schema that includes the extensions and modifications to the capability negotiation mechanism as defined in section . This schema redefines and adds the necessary extensions to the existing capability description schema as defined in annex C of CEA-2014 [[!CEA-2014-A]]. The schema in this annex SHALL be used instead of the existing capability description as defined in annex C of CEA-2014 [[!CEA-2014-A]]. Note that for the additional “0.33x0.33” value for “scalingType” as defined in section , a special construction has been defined. See the last two paragraphs of this annex for more information.
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns="urn:oipf:config:oitf:oitfCapabilities: 2011-1" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:oipf:config:oitf:oitfCapabilities: 2011-1" elementFormDefault="qualified" attributeFormDefault="unqualified"> <!-- schema filename is config-oitf-oitfCapabilities.xsd --> <!-- Redefined uiExtensionsType of the original schema as defined in Annex C of CEA-2014 (i.e. imports/ce-html-profiles-1-0.xsd) to add the new elements defined in Section 9.3 of Open IPTV forum Volume 5 Declarative Application Environment Release 2 specification. --> <xs:redefine schemaLocation="imports/ce-html-profiles-1-0.xsd"> <xs:complexType name="uiExtensionType"> <xs:complexContent> <xs:extension base="uiExtensionType"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="video_broadcast" type="videoBroadcastType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="overlaylocaltuner" type="overlayType"/> <xs:element name="overlayIPbroadcast" type="overlayType"/> <xs:element name="recording" type="pvrType"/> <xs:element name="parentalcontrol" type="parentalControlType"/> <xs:element name="extendedAVControl" type="xs:boolean"/> <xs:element name="clientMetadata" type="metadataType"/> <xs:element name="configurationChanges" type="xs:boolean"/> <xs:element name="communicationServices" type="xs:boolean"/> <xs:element name="presenceMessaging" type="xs:boolean"/> <xs:element name="drm" type="drmType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="remote_diagnostics" type="xs:boolean"/> <xs:element name="pollingNotifications" type="xs:boolean"/> <xs:element name="mdtf" type="xs:boolean"/> <xs:element name="widgets" type="xs:boolean"/> <xs:element name="html5_media" type="xs:boolean"/> <xs:element name="remoteControlFunction" type="xs:boolean"/> <xs:element name="wakeupApplication" type="xs:boolean"/> <xs:element name="wakeupOITF" type="xs:boolean"/> <xs:element name="hibernateMode" type="xs:boolean"/> <xs:element name="telephony_services" type="telephonyServicesType"/> <xs:element name="playbackControl" type="playbackType"/> <xs:element name="temporalClipping" type="hasCapability"/> <xs:any namespace="##other"/> </xs:choice> </xs:extension> </xs:complexContent> </xs:complexType> <!-- Redefined downloadType to add attribute manageDownloads --> <xs:complexType name="downloadType"> <xs:simpleContent> <xs:extension base="downloadType"> <xs:attribute name="manageDownloads" type="manageDownloadsType" default="none"/> </xs:extension> </xs:simpleContent> </xs:complexType> <!-- Redefined audioProfileType to add attribute DRMSystemID --> <xs:complexType name="audioProfileType"> <xs:complexContent> <xs:extension base="audioProfileType"> <xs:attribute name="DRMSystemID" type="xs:string"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- Redefined videoProfileType to add attribute DRMSystemID --> <xs:complexType name="videoProfileType"> <xs:complexContent> <xs:extension base="videoProfileType"> <xs:attribute name="DRMSystemID" type="xs:string"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:redefine> <!-- ADDED: type definitions for the new elements defined in Section 9.3 of the Open IPTV forum Volume 5 Declarative Application Environment Release 2 specification --> <xs:simpleType name="manageDownloadsType"> <xs:restriction base="xs:string"> <xs:enumeration value="none"/> <xs:enumeration value="initiator"/> <xs:enumeration value="samedomain"/> <xs:enumeration value="all"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="manageRecordingsType"> <xs:restriction base="xs:string"> <xs:enumeration value="none"/> <xs:enumeration value="initiator"/> <xs:enumeration value="samedomain"/> <xs:enumeration value="all"/> </xs:restriction> </xs:simpleType> <xs:complexType name="videoBroadcastType"> <xs:attribute name="type" type="xs:string" use="required"/> <xs:attribute name="transport" type="xs:string"/> <xs:attribute name="nrstreams" type="xs:unsignedInt" default="1"/> <xs:attribute name="scaling" type="scalingType" default="arbitrary"/> <xs:attribute name="minSize" type="xs:unsignedInt" default="0"/> <xs:attribute name="postList" type="xs:boolean" default="false"/> <xs:attribute name="networkTimeshift" type="xs:boolean" default="false"/> <xs:attribute name="localTimeshift" type="xs:boolean" default="false"/> </xs:complexType> <xs:complexType name="pvrType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="ipBroadcast" type="xs:boolean" default="false"/> <xs:attribute name="HAS" type="xs:boolean" default="false"/> <xs:attribute name="DASH" type="xs:boolean" default="false"/> <xs:attribute name="manageRecordings" type="manageRecordingsType" default="none"/> <xs:attribute name="postList" type="xs:boolean" default="false"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="parentalControlType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="schemes" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="metadataType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="type" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="drmType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="DRMSystemID" type="xs:string" use="required"/> <xs:attribute name="protectionGateways" type="xs:string" default=""/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="telephonyServicesType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="video" type="xs:boolean" default="false"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="playbackType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="type" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="hasCapability"/> </xs:schema>
Due to limitations of XML Schema it is not possible to redefine/extend the enumeration of type “scalingType” to add the additional value “0.33x0.33” as defined in section . Therefore, this value must be directly added to the original schema as defined in annex C of [[!CEA-2014-A]] (i.e. imports/ce-html-profiles-1-0.xsd), as follows:
[...] <xs:simpleType name="scalingType"> <xs:restriction base="xs:string"> <xs:enumeration value="arbitrary"/> <xs:enumeration value="quartersize"/> <xs:enumeration value="none"/> <xs:enumeration value="0.33x0.33"/> </xs:restriction> </xs:simpleType> [...]
An OITF that supports sending the Client Channel Listing through the HTTP POST method defined in section SHALL adhere to the XML Schema of the Client Channel Listing defined in this annex for which the following semantics apply:
ccid
” which specifies a unique identifier of the channel within the scope of the OITF. The format of ccid
SHALL have a prefix 'ccid:', e.g., 'ccid:{tuner.}majorChannel{.minorChannel}'. The ccid
is defined and managed by the OITF.
channelType
” which indicates the type of media content carried over the channel. Valid values are specified in section . If not included, the default value is “TYPE_OTHER
”.
idType
” which specifies the type of identification that is used for the channel. Valid values are specified in section .
FavIDS
” indicating in which favourite lists, if any, this channel is selected.FavID
” which specifies the unique identifier of the favourite list.A valid Client Channel Listing SHALL adhere to the following XML Schema:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="ChannelConfig"> <xs:complexType> <xs:sequence> <xs:element ref="ChannelList"/> <xs:sequence minOccurs="0"> <xs:element ref="FavouriteLists"/> <xs:element ref="CurrentFavouriteList" minOccurs="0"/> </xs:sequence> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="ChannelList"> <xs:complexType> <xs:sequence> <xs:element ref="Channel" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Channel"> <xs:annotation> <xs:documentation> For a DVB digital channel use ONID+TSID+SID, for an ISDB (ARIB) digital channel use ONID+TSID+SID, for a ATSC terrestrial channel use SourceID, for analog channel use Freq and CNI (if available). The IPBroadcastID element is relevant for IPTV broadcasts, as defined in Section 7.5. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:choice> <xs:sequence> <xs:element ref="ONID"/> <xs:element ref="TSID"/> <xs:element ref="SID"/> </xs:sequence> <xs:element ref="SourceID"/> <xs:sequence> <xs:element ref="Freq"/> <xs:element ref="CNI" minOccurs="0"/> </xs:sequence> <xs:element ref="IPBroadcastID"/> </xs:choice> <xs:element ref="Name"/> <xs:element ref="Favourite" minOccurs="0"/> <xs:element ref="Recordable" minOccurs="0"/> <xs:element ref="Locked" minOccurs="0"/> <xs:element ref="ManualBlock" minOccurs="0"/> </xs:sequence> <xs:attribute name="CCID" type="xs:IDREF" use="required"/> <xs:attribute name="channelType" type="xs:string" default="TYPE_OTHER"/> <xs:attribute name="idType" type="xs:string" use="required"/> <xs:attribute name="TunerID" type="xs:IDREF" use="optional"/> </xs:complexType> </xs:element> <xs:element name="ONID" type="xs:integer"/> <xs:element name="TSID" type="xs:integer"/> <xs:element name="SID" type="xs:integer"/> <xs:element name="SourceID" type="xs:integer"/> <xs:element name="Freq" type="xs:integer"/> <xs:element name="CNI" type="xs:integer"/> <xs:element name="IPBroadcastID" type="xs:string"/> <xs:element name="MajorChannel" type="xs:integer"/> <xs:element name="MinorChannel" type="xs:integer"/> <xs:element name="Name" type="xs:string"/> <xs:element name="Favourite"> <xs:complexType> <xs:attribute name="FavIDS" type="xs:IDREFS"/> </xs:complexType> </xs:element> <xs:element name="FavouriteLists"> <xs:complexType> <xs:sequence> <xs:element ref="FavouriteList" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="FavouriteList"> <xs:complexType> <xs:complexContent> <xs:extension base="FavName"> <xs:attribute name="FavID" type="xs:ID" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:complexType name="FavName"> <xs:sequence> <xs:element ref="FavName"/> </xs:sequence> </xs:complexType> <xs:element name="FavName" type="xs:string"/> <xs:element name="CurrentFavouriteList"> <xs:complexType> <xs:attribute name="FavID" type="xs:IDREF" use="required"/> </xs:complexType> </xs:element> <xs:element name="Recordable" type="xs:boolean"/> <xs:element name="Locked" type="xs:boolean"/> <xs:element name="ManualBlock" type="xs:boolean"/> </xs:schema>
Digital TV terminals typically have multiple planes for displaying graphics, subtitles, video and background color. This section defines a logical plane model for OITFs. Figure shows the ordering of these logical planes.
This logical plane model does not imply any particular physical implementation. For instance, the presence of two graphic planes and a subtitle plane does not imply a requirement for three hardware graphic planes.
The logical planes are defined as follows:
<width>
and <height>
elements of the capability description. The default background color of the browser rendering canvas (as defined in section 2.3.1 of CSS2.1) is terminal specific. Applications should explicitly set the background of their <body>
element to transparent using (for example) the background-color CSS rule or any equivalent construct.For subtitles, the following rules apply:
NOTE: In consequence, display of subtitles with broadband delivered video is only possible on such terminals by including the subtitles as part of the video.
The behaviour of the video/broadcast object is defined in section . When no video/broadcast object is instantiated, or when all video/broadcast objects are in the Unrealized state, broadcast video presentation SHALL be under the control of the OITF. When video is under the control of the OITF:
For broadcast related applications as defined in section , broadcast video presentation SHALL initially be under the control of the OITF. Applications wanting to control video presentation SHALL create a video/broadcast object.
When a video/broadcast object is in any state other than the Unrealized state, broadcast video presentation SHALL be under the control of the application. When video is under the control of the application:
Application.hide()
method SHALL cause video (and any subtitles) being presented under the control of that application to be hidden, and any audio being presented by the video/broadcast or A/V Control object under the control of that application to be muted. Calling Application.show()
SHALL cause video and audio presentation to be restored.
If the release() method is called on a video/broadcast object, or if the object is garbage collected, control of broadcast video presentation SHALL be returned to the OITF and video SHALL be re-scaled and re-positioned (if necessary).
Figure shows the recommended safe area for content authoring for the OITF_HD_UIPROF default profile:
There are 3 different “current channel” concepts in this specification;
In simple situations, all of these may refer to the same channel. In complex situations they may not. Here are some examples;
Scenario | Current Channel of OITF | Current Channel of video /broadcast object(s) | Current channel of broadcast-related application(s) |
---|---|---|---|
The OITF is presenting exactly one broadcast video channel, this video is being presented by a video/broadcast object (in the Presenting state) which is part of a broadcast-related application which is controlled by signalling information from that broadcast video channel | All 3 current channels reference the same broadcast channel. | ||
The OITF is presenting exactly one broadcast video channel, this video is under the control of the OITF (as defined in section ) and one or more broadcast-related applications are running which are controlled by signalling information from that broadcast video channel none of which have a video/broadcast object outside the Unrealized state. | The channel being presented by the OITF | Not relevant | The channel being presented by the OITF |
The OITF is presenting exactly one broadcast video channel, this video is under the control of the OITF (as defined in section ) and no broadcast-related applications are running. | The channel being presented by the OITF | Not relevant | Not relevant |
The OITF is presenting two broadcast video channels, one main channel (responding to channel up and channel down) and a PiP channel. | The main channel (the one responding to channel up / channel down) | Not relevant | Not relevant |
The OITF is presenting two broadcast video channels, one main channel (responding to channel up and channel down) and a PiP channel. A broadcast-related application is running associated with the main channel. The user swaps the main channel to PiP and vice-versa. | The channel which was previously PiP. | Not relevant | This specification does not address what happens to broadcast-related applications under these circumstances. |
A broadcast-independent or service provider related DAE application has two video/broadcast objects, one presenting the channel resulting from a call to bindToCurrentChannel() and the second presenting another channel set by setChannel(). | The same as the current channel of the video/broadcast object presenting the channel resulting from a call to bindToCurrentChannel() | The two video/broadcast objects have different current channels. | Not relevant |
This annex lists the media related elements and types from the HTML5 specification as referenced by [[.OIPF_WSTVP2]] (sections 4.8.6 through to 4.8.10) and defines a set of attributes, methods and constants which are common between the 2009-08-25 version of the HTML5 specification and the candidate recommendation. Attributes, methods, constants and elements which are included in one specification but not the other are recorded in informative notes. Attributes, methods, constants and elements which were included in the 2009-08-25 version and are not included in the candidate recommendation are not REQUIRED by this annex but MAY be included unless they conflict with something in the candidate recommendation.
NOTE: The track element was not included in the 2009-08-25 version and is not included here.
Content attributes included from this interface: src
, poster
, preload
, autoplay
, loop
, controls
, width
, height
NOTE: The autobuffer
content attribute from the 2009-08-25 version is not included in the candidate recommendation and hence is not required here.
NOTE: The crossorigin
, mediagroup
and muted
content attributes in the candidate recommendation were not included in the 2009-08-25 version and are not included here.
DOM attributes included from this interface: width
, height
, poster
, videoWidth
, videoHeight
DOM methods included from this interface: none
DOM constructors included from this interface: none
DOM constants included from this interface: none
In addition, DOM attributes, methods and constants are inherited from the media
element.
Content attributes included from this interface: src
, preload
, autoplay
, loop
, controls
NOTE: The autobuffer
content attribute from the 2009-08-25 version is not included in the candidate recommendation and hence is not required here.
NOTE: The crossorigin
, mediagroup
and muted
content attributes in the candidate recommendation were not included in the 2009-08-25 version and are not included here.
DOM attributes included from this interface: none
DOM methods included from this interface: none
DOM constructors included from this interface: Audio()
NOTE: The constructor Audio(in DOMString src)
is not included as it is not widely implemented.
DOM constants include from this interface: none
In addition, DOM attributes, methods and constants are inherited from the media
element.
Content attributes included from this interface: src
, type
, media
DOM attributes included from this interface: src
, type
, media
DOM methods included from this interface: none
DOM constructors included from this interface: none
DOM constants included from this interface: none
Content attributes included from this interface: none
DOM attributes included from this interface: error
, src
, currentSrc
, networkState
, autobuffer
, buffered
, readyState
, seeking
, currentTime
, startTime
, duration
, paused
, defaultPlaybackRate
, playbackRate
, played
, seekable
, ended
, autoplay
, loop
, controls
, volume
, muted
and preload
.
NOTE: The crossOrigin
, startDate
, mediaGroup
, controller
, audioTracks
, videoTracks
and textTracks
attributes were not included in the 2009-08-25 version and are not included here.
NOTE: The autobuffer
and startTime
attributes from the 2009-08-25 version are not included in the candidate recommendation and hence are not required here.
DOM methods included from this interface: load()
, canPlayType(in DOMString type)
, play()
, pause()
NOTE: The addTextTrack
method was not included in the 2009-08-25 version and is not included here.
DOM constructors included from this interface: none
DOM constants included from this interface: NETWORK_EMPTY
, NETWORK_IDLE
, NETWORK_LOADING
, NETWORK_NO_SOURCE
, HAVE_NOTHING
, HAVE_METADATA
, HAVE_CURRENT_DATA
, HAVE_FUTURE_DATA
, HAVE_ENOUGH_DATA
NOTE: The NETWORK_LOADED
constant is not included in the candidate recommendation and hence is not included here. The numeric value assigned for NETWORK_LOADED
in the 2009-08-25 version has been re-used for NETWORK_NO_SOURCE
in the candidate recommendation — a conflict that prevents NETWORK_LOADED
from being OPTIONAL in this annex.
Events included from this interface: loadstart
, progress
, suspend
, abort
, error
, emptied
, loadedmetadata
, loadeddata
, canplay
, canplaythrough
, playing
, waiting
, seeking
, seeked
, ended
, timeupdate
, durationchange
, ratechange
, volumechange
, play
and pause
.
NOTE: The load
and loadend
events are not included in the candidate recommendation and hence are not included here.
NOTE: The stalled
event is not included due to not being widely implemented.
Types included as specified: MediaError
, TimeRanges
NOTE: The AudioTrack
, AudioTrackList
, VideoTrack
, VideoTrackList
, MediaController
, TextTrack
, TextTrackList
, TextTrackCue
, TextTrackCueList
interfaces were not included in the 2009-08-25 version and are not included here.
Where methods, attributes, constants and behaviour included from the HTML5 specification refers to other W3C specifications, (e.g. DOM4), that reference is OPTIONAL. Implementations MAY use that reference or any equivalent reference which works and is technically coherent.
The architecture overview from section 4.1 of [[!CEA-2014-A]] defines various box models. Next to the i-Box model for accessing IPTV service providers or 3rd party internet services, it defines a 2-Box and 3-box model for in-home remote UI. Box Models are divided by not only where the server resides but also where the UI control point reside to perform discovery and setup of a remote UI connection. In case of the 2-Box and 3-box model the UI control point is a UPnP control point that discovers in-home servers. In case of the 2-box model, there is a UPnP Remote UI control point inside the OITF. If the UPnP remote UI control point resides in an external device (e.g. web pad, remote controller), whereby the external device lists the Remote UI servers and sets up a UI connection between the OITF and Remote UI Server this is called the 3-box model. An OITF that supports the 3-box model must be discoverable through UPnP itself, and expose the profile information of a Remote UI client to the home network.
For the OITF, only the CEA-2014-A i-Box model is mandatory. The 2-box and 3-box models are optional. The default interaction with the Application Gateway (AG), the IMS Gateway (IG) and the CSP gateway (CSPG) deviate in the following manner. However, it is not precluded for an AG, IG, CSPG or other devices in the home network to expose themselves as a regular UPnP Remote UI server that is compliant with CEA-2014, for example to serve a Remote UI of its configuration screen to the OITF.
Irrespective of the box models, and the discovery mechanism used, the OITF performs the following general steps to set up a connection to any internet or in-home service:
The i-Box Model supports the remote presentation and control of UIs that reside on a server on the Internet (WAN). The client (OITF) resides within the home domain, and is either non-discoverable and has a built-in “Connection setup and control” to perform connection management related operations, or is discoverable by an external so called UI Control Point within the home domain that allow the connection management related operations to be controlled by another device. This configuration is depicted in the diagram below.
The 2-Box Model describes a configuration in which the server is discoverable in the home network. Since the client is not discoverable, it must have a UI Control Point in order to be functional in the network to be able to discover an AG device description (as defined in section 10 of [[.OIPF_PROT2]]), or a Remote UI server description as described in section 5.1 of [[!CEA-2014-A]].
When both the Remote UI Server and the Remote UI Client are discoverable, the configuration can be described by the 3-Box UI Model. This configuration has no restriction on the location of the UI Control Point for the discovery and connection management, as illustrated in the diagram below.
There are two cases to send the control UI to the Remote Control Device:
The DAE application is launched in response to an HTTP request from an OITF control UI being rendered in the Remote Control Device. The DAE application checks the currentRemoteDeviceHandle
property when it has completed loading. If this property returns undefined, it means that the current DAE application wasn't launched by a Remote Control Device (but by some other means), whereas if this property returns a value (the Remote Control Device handle), the DAE application knows that it must send its Control UI to the Remote Control Device.
This scenario is made based on section 10.6 of [[.OIPF_ARCH2]].
The DAE application is currently being executed in the OITF and during this time the Remote Control Device requests the control UI from it. In this case, the OITF generates the ReceiveRemoteMessage
event to the DAE application with type set to 0. Then the DAE application retrieves the control UI from the IPTV Applications server and returns it to the Remote Control Device.
Annex shows the message flow for sending and receiving messages between control UI in the Remote Control Device and the DAE application.
NOTE: Dotted lines in the diagrams below indicate internal operations.
The following is a brief description of the steps in the flow:
NOTE: The dotted line is an internal operation.
ReceiveRemoteMessage
event with type CREATE_APP
to the application/oipfRemoteControlFunction
object in the DAE application.
application/oipfRemoteControlFunction
object by using the sendRemoteMessage()
method.
The following is a brief description of the steps in the flow:
NOTE: The dotted line is an internal operation.
useServerSideXMLUIListing()
method.
/rcf/request_cui
) with the RUIC capability information in the User-Agent to DLNA RUIS to get the CUI.
application/oipfRemoteControlFunction
object dispatches a ReceiveRemoteMessage
event with type REQUEST_CUI
to the DAE application.
application/oipfRemoteControlFunction
object by using the sendRemoteMessage()
method.
The following is a brief description of the steps in the flow:
/rcf/request_msg
).
application/oipfRemoteControlFunction
object dispatches a ReceiveRemoteMessage
event with type REQUEST_MSG
to the DAE application.
application/oipfRemoteControlFunction
object by using a sendRemoteMessage()
method.
This document defines a number of JavaScript collections, used by APIs to return lists of objects from the OITF to applications (e.g. lists of channels or EPG search results). Many of these collections have identical semantics, and so for the sake of brevity, the following notation is used to define these collections.
Each collection is an instance of the Collection<T> parameterized class (see Annex ), and is defined in the following way:
typedef Collection<Foo> FooCollection typedef Collection<Bar> BarCollection
where Foo or Bar is the name of the class that may be stored in the collection. For example:
typedef Collection<String> StringCollection typedef Collection<Channel> ChannelList
Collections defined in this way SHALL follow the semantics defined in Annex , and may be extended with additional properties and methods as necessary.
Collections defined in this way always represent snapshots of the state of the OITF at a given time. They are not updated automatically if the state of the OITF changes. This means that different instances of a specific type of collection may contain different values.
The Collection<T>
class is a parameterized class whose instances are (possibly zero-length) collections of values of type T. The properties and methods defined below SHALL be present on any instance of a Collection<T>
class. Instances of a Collection<T>
class SHALL support the use of array notation to access objects in the collection.
Instances of a Collection<T>
class SHALL be considered to be immutable, except by APIs defined on the collection. Attempts to insert items into instances of a Collection<T>
class using array notation SHALL fail.
readonly Integer length |
The number of items in the collection |
<T> item( Integer index ) | ||
Description | Return the item at position index in the collection, or undefined if no item is present at that position. | |
Arguments | index | The index of the item that SHALL be returned |
This section provides a comparison between SVG <video> and the visual objects defined in this specification. When not supported by SVG it is indicated with NS (Not Supported). When not in the scope of SVG it is indicated with NA (Not Applicable). If there are differences in values or behaviour additional information is provided under the Comments column.
A/V Control object | Broadcast object | SVG IDL attributes | Comments | |
---|---|---|---|---|
General | Number width | Integer width | Video element: width attribute | |
Number height | Integer height | Video element: height attribute | ||
readonly Boolean fullScreen | readonly Boolean fullScreen | Video element: viewbox attribute | ||
setFullScreen( Boolean fullscreen) | void setFullScreen( Boolean fullscreen ) | Video element: viewbox attribute | ||
focus() | NS | |||
Object onfocus | function onfocus | DOM2 Event Model: DOMFocusIn | ||
Object onblur | function onblur | DOM2 Event Model: DOMFocusOut | ||
Object onFullScreenChange | function onFullScreenChange | NS | ||
Volume | Boolean setVolume( Number volume ) | Boolean setVolume( Integer volume ) | Audio element: audio-level attribute | The range specified in SVG is 0 to 1.0 with 0 silencing the audio. |
Integer getVolume() | ||||
Components (e.g. subtitles, languages) | AVComponentCollection getComponents( Integer componentType ) | AVComponentCollection getComponents( Integer componentType ) | audioLanguage = 'auto' | <list-of-language-ids> subtitleLanguage = 'auto' | <list-of-language-ids> audioType = 'auto' | 'normal' | 'descriptive' subtitleType = 'auto' | 'normal' | 'hearingImpaired' | 'none' teletextType = 'auto' | 'normal' | 'none' |
|
AVComponentCollection getCurrentActiveComponents( Integer componentType ) | AVComponentCollection getCurrentActiveComponents( Integer componentType ) | |||
void selectComponent( AVComponent component ) | void selectComponent( AVComponent component ) | |||
void unselectComponent( AVComponent component ) | void unselectComponent( AVComponent component ) | |||
Broadcast specific | function onChannelChangeError( Channel channel, Number errorState ) | NA | ||
Integer playState | NA | |||
function onPlayStateChange( Number state, Number error ) | NA | |||
Channel bindToCurrentChannel() | NA | |||
void setChannel( Channel channel, Boolean trickplay, String contentAccessDescriptorURL ) | NA | |||
void prevChannel() | NA | |||
void nextChannel() | NA | |||
void release() | NA | |||
void setChannel( Channel channel, Boolean trickplay, String contentAccessDescriptorURL, Integer offset ) | NA | |||
readonly Channel currentChannel | NA | |||
Playback control | String data | Video element: xlink:href attribute | ||
readonly Number playPosition | readonly Integer playPosition | NS | ||
readonly Number playTime | NS | |||
readonly Number playState | NS | |||
readonly Number error | ||||
readonly Number speed | readonly Number playSpeed | NS | ||
Boolean play( Number speed ) | Boolean resume() Boolean pause() |
Media element: pause/resume attributes SMIL: speed attribute |
||
Boolean setSpeed( Number speed ) | NA | |||
Boolean stop () | void stopRecording() | Media element: end attribute stopRecording is NA |
||
Boolean stopTimeshift() | NA | |||
Boolean seek( Number pos) | Boolean seek( Integer offset, Integer reference ) | Media element: begin attribute | ||
Boolean next () | NS | |||
Boolean previous () | NS | |||
function onPlaySpeedChanged( Number speed ) | function onPlaySpeedChanged( Number speed ) | NS | ||
onPlayPositionChanged( Integer position ) | function onPlayPositionChanged( Integer position ) | NS | ||
readonly Number playSpeeds[ ] | readonly Number playSpeeds[ ] | NS | ||
readonly String oitfSourceIPAddress | NA | |||
readonly String oitfSourcePortAddress | NA | |||
Boolean oitfNoRTSPSessionControl | NA | |||
String oitfRTSPSessionId | NA | |||
Recording specific | String recordNow( Integer duration ) | NA | ||
readonly Integer playbackOffset | NA | |||
readonly Integer maxOffset | NA | |||
readonly Integer recordingState | NA | |||
function onRecordingEvent | NA | |||
readonly Integer state | NA | |||
readonly Integer error | NA | |||
readonly String recordingId | NA |
After a registration procedure, performed through the registerUser method of the application/oipfCommunicationServices object, a peer can generate an outgoing call or receive an incoming call:
When a call session becomes active (i.e.: the media data are available) the function onCallEvent will be invoked with appropriate parameters. An active call can be closed by one of the peers at any time invoking the hangUp method. The other peer will receive a notification of this operation through the function onCallEvent with an hang-up specific parameter. When the call session is closed the function onCallEvent will be invoked again with a session end specific parameter.
The following is a brief description of the steps in the flow:
NOTE: This is just an example of a possible call flow.
EVENT_INCOMING_CALL
.
EVENT_CALL_PROGRESS
.
ANSWER_ACCEPT
response parameter.
EVENT_CALL_RESULT
and status equal to ACCEPT
.
EVENT_SESSION_START
.
EVENT_SESSION_START
.
EVENT_HANGUP
.
EVENT_SESSION_END
.
EVENT_SESSION_END
.
A Video telephony call flow is basically derived from a Voice telephony call flow with few additions:
The following is a brief description of the steps in the flow:
NOTE: This is just an example of a possible call flow.
EVENT_INCOMING_CALL
.
EVENT_CALL_PROGRESS
.
answer
method with ANSWER_ACCEPT
response parameter.
EVENT_CALL_RESULT
and status equal to ACCEPT
.
EVENT_SESSION_START
.
EVENT_SESSION_START
.
EVENT_HANGUP
.
EVENT_SESSION_END
.
EVENT_SESSION_END
.
The Multimedia Telephony API provides methods for enumerating the capture devices installed or connected to the OITF, for selecting the devices that will be used during the call and to retrieve and set transmission parameter for the call. The methods provide also support for muting or unmuting outgoing video or audio streams.
The following is a brief description of the relevant steps in the flow:
NOTE: This is just an example of a possible call flow. The descriptions of steps already described in previous sections are omitted.
setCaptureDevice
method.
VIDEO_SIZE
parameter.
VIDEO_FPS
parameter.
The description of the other steps is provided in the previous section.
VIDEO_PAUSE
parameter.
The Multimedia Telephony API provides also support for updating a call adding or removing audio or video streams from an ongoing session.
During a call one of the peers can decide to request the addition for example of video to the current audio-only session through the callUpdate method. The other peer will receive a notification of this request through the onCallEvent event with a request specific parameter. The peer can then answer to this request invoking the callAnswerUpdate method. The peer that originated the update request will be notified of the response through a onCallEvent event with a response specific parameter. When the updated call session becomes active (i.e. the media data are available) the function onCallEvent will be invoked with a session update specific parameter.
The following is a brief description of the steps in the flow:
NOTE: This is just an example of a possible call flow. The descriptions of steps already described in previous sections are omitted.
callType
parameter equal to AUDIO_VIDEO
.
EVENT_INCOMING_UPDATE
.
UPDATE_ACCEPT
response parameter.
EVENT_SESSION_UPDATE
and status equal to ACCEPT
.
EVENT_SESSION_UPDATE
.
EVENT_SESSION_UPDATE
.
This informative annex describes the policy that is adopted for the selection of root certificates for inclusion in terminals compliant with this specification. A list of such certificates is published at http://www.oipf.tv/root-certificates.
There are over 150 root certificates in web browsers at the time of publication.
The security of TLS against man-in-the-middle attacks is dependent on the weakest root certificate trusted by a terminal.
The security of various key lengths changes with time as computing power increases. Specifically 1024 bit RSA keys are no longer recommended for use.
Service providers need to know which root certificates are trusted by terminals to achieve interoperability. Service providers are often not in control of the servers delivering their content (e.g. delivery via a CDN).
Service providers may also wish to make use of third party web services that are not under their control.
Maintaining an independent list of root certificates that are validated requires significant resources.
This policy is subject to change.
<pollingNotifications>
as defined in section .
Boolean subscribeToNotifications(String url, String name, Number period, String type)
where
On executing the subscribeToNotifications method to subscribe to a new notification, the Remote UI Client SHALL alert the user to the impending new notification subscription (including information about the highest priority notification type that will be sent by the Remote UI Server), and provide the user with at least two options:
This does not exclude an option that allows a user to always accept notifications from the same URL.
If the Remote UI Client does not subscribe because the user declined, the subscribeToNotifications method SHALL return false.
Number subscribeToNotificationsAsync(String url, String name, Number period, String type)
where
On executing the subscribeToNotificationsAsync method to subscribe to a new notification, the Remote UI Client SHALL asynchronously alert the user to the impending new notification subscription (including information about the highest priority notification type that will be sent by the Remote UI Server), and provide the user with at least two options:
This does not exclude an option that allows a user to always accept notifications from the same URL.
Calls to subscribeToNotificationsAsync return immediately. The application will be notified via the onNotificationSubscriptionResponse function (or corresponding DOM-2 event) user has chosen to subscribe or to not subscribe to the notification.
If two calls to subscribeToNotificationsAsync with the same value for url overlap (i.e. the notification event of the first call has not yet been dispatched), the Remote UI Client SHALL interrupt the first call and generate a response event as if the request had been declined.
script onNotificationSubscriptionResponse
where the specified function is called with arguments id and response, which are defined as follows:
void unsubscribe(string url, string name)
where
On executing the unsubscribe method, the Remote UI Client SHALL unsubscribe from the specified notification service. If the application is not subscribed to the specified notification service or if the page currently loaded in the CE-HTML browser window is not from the same origin as url, this method SHALL have no effect. When this method returns, the application shall no longer be subscribed to the notification service.
StringCollection listNotificationSubscriptions()
where the return value of this method SHALL be a collection of URLs of notification services to which HTML documents from the same origin are currently subscribed.
Boolean isSubscribed(string url, string name)
where