Open IPTV Forum
Release 2 Specification
Volume 5 - Declarative Application Environment
[V2.3] - [2014-01-24]
Postal Address
Open IPTV Forum support office
650 Route des Lucioles - Sophia Antipolis
Valbonne - FRANCE
Tel.: +33 4 92 94 43 83
Fax: +33 4 92 38 52 90
Internet
http://www.oipf.tv
Disclaimer
The Open IPTV Forum accepts no liability whatsoever for any use of this document.
Copyright Notification
No part may be reproduced except as authorized by written permission.
Any form of reproduction and/or distribution of these works is prohibited.
Copyright 2014 © Open IPTV Forum e.V.
All rights reserved.
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:
[3GPPTS24.229] | 3GPP, TS 24.229, "IP Multimedia Call Control Protocol based on Session Initiation Protocol (SIP) and Session Description Protocol (SDP) Stage 3 (Release 8)" |
[CEA-2014-A] | CEA, CEA-2014-A, "Web-based Protocol Framework for Remote User Interface on UPnP Networks and the Internet (Web4CE)", (including the August 2008 Errata) |
[DASH] | ISO/IEC 23009-1, Information technology — Dynamic adaptive streaming over HTTP (DASH) — Part 1: Media presentation description and segment formats |
[DLNA] | DLNA Networked Device Interoperability Guidelines, August 2009 |
[DVB-IPTV] | ETSI TS 102 034 V1.4.1, "DVB-IPTV 1.4: Transport of MPEG-2 TS Based DVB Services over IP Based Networks (and associated XML)" |
[EN300468] | ETSI EN 300 468 V1.9.1 (2008-11), "Digital Video Broadcasting (DVB); Specification for Service Information (SI) in DVB systems". Also available as DVB Bluebook A38 (09/2012) |
[GIF] | Graphics Interchange Format version 89a, © 1987, 1988, 1989, 1990, CompuServe Incorporated, Columbus, Ohio. |
[HTTP] | IETF, RFC 2616, "Hypertext Transfer Protocol -- HTTP/1.1" URL: http://tools.ietf.org/html/rfc2616 |
[IEC62455] | IEC, IEC 62455, "Internet protocol (IP) and transport stream (TS) based service access" |
[IM] | OMA, OMA-TS-SIMPLE_IM-V1_0-20080820-D, "Instant Messaging using SIMPLE" |
[ISO639-2] | ISO 639-2:1998 Codes for the representation of names of languages – Part 2: Alpha-3 code |
[JFIF] | Hamilton, Eric. JPEG File Interchange Format. Sep 1992. URL: http://www.w3.org/Graphics/JPEG/jfif3.pdf C-Cube Microsystems. Milpitas, CA, USA. |
[MEDIA_FRAGMENTS_HTTP] | W3C, "Protocol for Media Fragments 1.0 Resolution in HTTP", W3C Working Draft 1 December 2011 |
[MPEG-7] | ISO/IEC 15938-5, "Multimedia Content Description Interface - Part 5:Multimedia description schemes", May 2003 |
[Media-Fragments-URI] | W3C, "Media Fragments URI 1.0", Recommendation 25 September 2012 |
[PNG] | ISO/IEC, 15948:2004, "Information technology - Computer graphics and image processing - Portable Network Graphics (PNG): Functional specification". |
[PRES] | OMA, OMA-TS-Presence_SIMPLE_XDM-V1_1-20080627-A, "Presence XDM Specification" |
[RFC1321] | IETF, RFC 1321, "The MD5 Message-Digest Algorithm" URL: http://tools.ietf.org/html/rfc1321 |
[RFC1918] | IETF, RFC 1918, "Address Allocation for Private Internets" URL: http://tools.ietf.org/html/rfc1918 |
[RFC2246] | IETF, RFC 2246 "The Transport Layer Security (TLS) Protocol Version 1.0" URL: http://tools.ietf.org/html/rfc2246 |
[RFC2818] | IETF, RFC 2818, "HTTP over TLS" URL: http://tools.ietf.org/html/rfc2818 |
[RFC3550] | IETF, RFC 3550, "RTP: A Transport Protocol for Real-Time Applications" URL: http://tools.ietf.org/html/rfc3550 |
[RFC3840] | IETF, RFC 3840, "Indicating User Agent Capabilities in the Session Initiation Protocol (SIP)" URL: http://tools.ietf.org/html/rfc3841 |
[RFC3841] | IETF, RFC 3841, "Caller Preferences for the Session Initiation Protocol (SIP)" URL: http://tools.ietf.org/html/rfc3841 |
[RFC3986] | IETF, RFC 3986, "Uniform Resource Identifier (URI): Generic Syntax" URL: http://tools.ietf.org/html/rfc3986 |
[RFC4122] | IETF, RFC 4122, "A Universally Unique Identifier (UUID) Namespace" URL: http://tools.ietf.org/html/rfc4122 |
[RFC4346] | IETF, RFC 4346, "The Transport Layer Security (TLS) Protocol Version 1.1" URL: http://tools.ietf.org/html/rfc4346 |
[RFC5019] | IETF, RFC 5019, "The Lightweight Online Certificate Status Protocol (OCSP) Profile for High-Volume Environments" URL: http://tools.ietf.org/html/rfc5019 |
[RFC5246] | IETF, RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2" URL: http://tools.ietf.org/html/rfc5246 |
[RFC5280] | IETF, RFC 5280, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile" URL: http://tools.ietf.org/html/rfc5280 |
[RFC5746] | IETF, RFC 5746, "Transport Layer Security (TLS) Renegotiation Indication Extension" URL: http://tools.ietf.org/html/rfc5746 |
[RFC6265] | IETF, RFC 6265, "HTTP State Management Mechanism" URL: http://tools.ietf.org/html/rfc6265 |
[RFC6454] | IETF, RFC 6454, "The Web Origin Concept" URL: http://tools.ietf.org/html/rfc6454 |
[RTSP] | IETF, RFC 2326, "Real Time Streaming Protocol (RTSP)" URL: http://tools.ietf.org/html/rfc2326 |
[TISPAN] | ETSI TS 183 063, "Telecommunications and Internet converged Services and Protocols for Advanced Networking (TISPAN);IMS-based IPTV stage 3 specification" |
[TS101154] | ETSI TS 101 154, "Digital Video Broadcasting (DVB);Specification for the use of Video and Audio Coding in Broadcasting Applications based on the MPEG-2 Transport Stream" |
[TS102539] | ETSI TS 102 539, "Digital Video Broadcasting (DVB); Carriage of Broadband Content Guide (BCG) information over Internet Protocol (IP)" |
[TS102809] | ETSI, TS 102 809 V1.1.1 (2010-01), "Digital Video Broadcasting (DVB); Signalling and carriage of interactive applications and services in hybrid broadcast / broadband environments". |
[TS102822-3-1] | ETSI TS 102 822-3-1, "Broadcast and On-line Services: Search, select and rightful use of content on personal storage systems ("TV-Anytime"); Part 3: Metadata; Sub-part 1: Phase 1 - Metadata schemas" |
[TS102851] | ETSI TS 102 851, "Digital Video Broadcasting (DVB); Uniform Resource Identifiers (URI) for DVB Systems" |
[TS26234] | 3GPP, TS 26.234 V9.3.0 (2010-06), Transparent end-to-end Packet-switched Streaming Service (PSS) Protocols and codecs (Release 9) |
[Web-Storage] | W3C, "Web Storage", W3C Candidate Recommendation 08 December 2011 |
[Widgets-APIs] | W3C, "Widget Interface", W3C Candidate Recommendation 13 December 2011 |
[Widgets-Access] | W3C, "Widget Access Request Policy", W3C Recommendation 7 February 2012. |
[Widgets-DigSig] | W3C, "XML Digital Signatures for Widgets", W3C Proposed Recommendation 11 August 2011 |
[Widgets-Packaging] | W3C, "Widget Packaging and XML Configuration", W3C Recommendation 27 September 2011 |
[OIPF_ARCH2] | Open IPTV Forum, "Functional Architecture - V2.3", January 2014. |
[OIPF_CSP2] | Open IPTV Forum, "Release 2 Specification, Volume 7 - Authentication, Content Protection and Service Protection", V2.3, January 2014. |
[OIPF_HAS2] | Open IPTV Forum, "Release 2 Specification, Volume 2a - HTTP Adaptive Streaming", V2.3, January 2014. |
[OIPF_MEDIA2] | Open IPTV Forum, "Release 2 Specification, Volume 2 - Media Formats", V2.3, January 2014. |
[OIPF_META2] | Open IPTV Forum, "Release 2 Specification, Volume 3 - Content Metadata", V2.3, January 2014. |
[OIPF_OVIEW2] | Open IPTV Forum, "Release 2 Specification, Volume 1 - Overview", V2.3, January 2014. |
[OIPF_PAE2] | Open IPTV Forum, "Release 2 Specification, Volume 6 - Procedural Application Environment", V2.3, January 2014. |
[OIPF_PROT2] | Open IPTV Forum, "Release 2 Specification, Volume 4 - Protocols", V2.3, January 2014. |
[OIPF_PROT_EX2] | Open IPTV Forum, "Release 2 Specification, Volume 4a - Examples of IPTV Protocol Sequences", V2.3, January 2014. |
[OIPF_REQS2] | Open IPTV Forum, "Service and Platform Requirements", V2.0, December 2008. |
[OIPF_WSTVP2] | Open IPTV Forum, "Release 2 Specification, Volume 5a - Web Standards TV Profile", V2.3, January 2014. |
[RFC2119] | S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Internet RFC 2119. URL: http://www.ietf.org/rfc/rfc2119.txt |
[TIMING-CONTROL] | W3C, Timing control for script-based animations, W3C Working Draft 21 February 2012 |
[TS102323] | ETSI TS 102 323, "Digital Video Broadcasting (DVB);Carriage and signalling of TV-Anytime information in DVB transport streams" |
[TS102796] | ETSI TS 102 796, "Hybrid Broadcast-Broadband TV" |
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 9.3, 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 3.1 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 4.3, 5.1, 5.2.8, 7.2 and 11 of this specification.
Capabilities: This service handles terminal capabilities and exposing them to applications. See sections 7.15.3 and 9.3 of this specification.
CoD metadata: This service handles the downloading, storage and retrieval of CoD metadata. See section 7.5 of this specification.
Configurations: This service handles reporting and changing device configuration and power management. See section 7.3 of this specification.
Content Download: This service handles initiating downloading of content by applications, downloading the content and managing content once downloaded. See sections 4.6.1 and 7.4 of this specification.
Content Service Protection: This service handles content and service protection. See section 7.6 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 4.9, 7.17 and 8.5 of this specification.
Gateway Discovery/Control: This service handles gateways, including discovery and managing information about them. See sections 4.2 and 7.7 of this specification.
IMS – Messaging, Presence, Chat, Telephony: This service handles IMS including messaging, presence, chat and telephony. See section 7.8 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 4.7.1 and 7.14 of this specification.
Notification: This service handles notifications from the network to the OITF. See section 5.3 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 4.5, 7.9, 7.13.5 and 7.14.5 of this specification.
Remote Management: This service handles remote management when supported as a DAE application. See section 7.11 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 4.7.1.2, 4.8, 7.12 and 7.13 of this specification.
Scheduled Recording: This service handles recording of scheduled content. See section 7.10 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 7.7.1.
Access to the functionality of the application/oipfGatewayInfo embedded object is privileged and shall adhere to the security requirements defined in section 10.1.
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 7.2.1 is present and accessible by the DAE application. The oipfApplicationManager object provides access to the Application class defined in section 7.2.2.
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 5.1.
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 7.2.2.2, 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 4.4.6.
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 4.4.6). 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 5.1.1.2 or 5.1.1.4) 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 10.
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 7.2.2 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 7.2.2 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 7.2.2 object in the message. Where simultaneous execution of more than one application is supported, any calls to methods on an 7.2.2 object from pages not running as part of an application from the same provider shall throw an error as defined in section 10.1.1.
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 4.4.7 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 11 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 11.1.
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 11.
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 5.1.1.7) shall be assumed to have a priority of 0x7F.
Applications may register a listener for ApplicationUnloaded
events (see section 7.2.1.4)
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 7.2.1.4 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 7
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 7.1.
All embedded objects as defined in section 7 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 7.13.1.1 for details of when scarce resources are released by a video/broadcast object and section 7.14.1.1 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 9.2 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 9.2
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 4.3.8) or destroyed (see section 5.1.2).
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 7.2.6) 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:
VK_BACK
key event shall be dispatched to applications following the normal key handling process described in section 4.4.7
VK_BACK
key event is implementation-dependent but the OITF shall not load the previous page in its history list for DAE applications.
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 7.9 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 7.3.2 “The Configuration class” 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 9.3.4.
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 4.6.4 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 7.15.2.1.
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 7.4.3.
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 7.14.7 for more information.
NOTE 2: Annex D 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 E.
An OITF shall support a non-visual embedded object of type “application/oipfDownloadTrigger”, with the JavaScript API as defined in sections 7.4.1 and 7.4.2 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 9.3.10, 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 4.6.3.1 with the given Content Access Download Descriptor as argument was called.
The registerDownloadFromCRID() method is an optional method as defined in section 7.4.2 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 7.14 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 7.14.2 and then setting the data
property of an A/V Control object as defined in section 7.14 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 7.14, 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 7.13.11.1) 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 7.13.1.3). 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 7.13.1. In addition, it shall adhere to the requirements for conveyance of the channel list as specified in section 4.8.1. 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 10.1, in particular the tuner related security requirements in section 10.1.3.1.2.
NOTE: This section and section 7.13
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 9.3.1 (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 7.13.1.3 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 7.13.1.3 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 7.13.1.3 shall return null
, and the HTTP message described in section 4.8.1.2 shall be an HTTP GET message with an empty payload. In that case, the application may use the createChannelObject() method as defined in section 7.13.1.3 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 10.1.3.1 and 10.1.3.1.1.
The OITF shall support method “getChannelConfig()” as defined in section 7.13.1.3 for the video/broadcast embedded object. This method returns a ChannelConfig object as defined in section 7.13.9.
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 G. 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 9.3.3 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 4.8.1:
postList
attribute specified in section 9.3.3 (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 G 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 7.10.1.1 shall return null, and the HTTP message described in section 4.8.1.2 shall be an HTTP GET message with an empty payload.
In addition, the OITF shall also support method getScheduledRecordings() as defined in 7.10.1.1. This method returns a ScheduledRecordingCollection object, which is defined in section 7.10.3.
Note that the conveyance of the channel listing and the scheduled recordings is subject to the security model requirements specified in section 10.1, and in particular the recording related security requirements in section 10.1.3.2.
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 7.17).
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 2.
Figure 2 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 9.3.19.
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 H 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 7.2 “Applications Management APIs.
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 5.3.1 of the present document.
These are described in section 5.2, “Application announcement & signalling”. All applications started by SD&S signalling are treated as siblings and are children of the hidden system root node (see section 4.3.3).
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 7.7.1.
The destroyApplication() method (as specified in section 7.2.2.2) 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 5.2.4.3 and 5.2.3.2 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 4.3.3 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 5.1.1.6.
Any application may be signalled as AUTOSTART or PRESENT (see “Table 3: DAE application control codes” 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 7.2.6) 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:
Value | Description |
---|---|
AUTOSTART | The application is eligible to be started automatically. Sections 5.2.3.1 and 5.2.4.1 above define the order in which AUTOSTART applications are started if more than one is signalled. |
PRESENT | The OITF shall take no action. The OITF may provide a mechanism to allow the end-user to start applications signalled as PRESENT. However since there is no requirement for such a mechanism, an IPTV service provider who signals applications with this control code shall provide an application able to start them. |
KILL | The application shall be terminated (see ApplicationDestroyRequest in section 7.2.6). |
PREFETCH | The OITF may start fetching files, data or other information needed to start the application but shall not start the application. Implementations may consider this control code to be the same as PRESENT . |
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 5.2.8.4).
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 7.2.1.2 and 7.2.1.4.
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 11.1 of this specification). In this case the OITF shall proceed as specified in the description of installWidget() method in section 7.2.1.3.
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 11.3 of this specification.
See related sections in section 7 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 7.2.1.2 and 7.2.1.4. 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 5.3.1, but also defines a new IMS Event Notification Framework in section 5.3.2.
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 9.3.14 or the +POLLNOTIF
name fragment as defined in section 9.2.
<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 O 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 9 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 5.3.2.2 “HNI-IGI transaction for in-session incoming request messages”.
subscribeNotification()
method (as defined in section 7.8.1.3).
Figure 10 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 5.3.2.2 “HNI-IGI transaction for in-session incoming request messages”
subscribeNotification(icsi)
method (as defined in section 7.8.1.3).
Figure 11 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 9.3.14.
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 7.14 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 7 which do not have a visual representation on the screen can be created using methods in this section. Only for objects defined in chapter 7,
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 10.1.1.
Name | Value | Use |
---|---|---|
WIDGET_INSTALLATION_STARTED | 0 | The Widget installation has started. This state shall be used to indicate that the download of the Widget package is completed (possibly because the Widget was already stored locally) and the OITF is ready to start the Widget installation process. This state shall not be signalled if the package download fails. |
WIDGET_INSTALLATION_COMPLETED | 1 | The Widget installation has completed successfully |
WIDGET_INSTALLATION_FAILED | 2 | The Widget installation has failed either because the Widget package download failed or because, after the download, the Widget installation process failed. |
WIDGET_UNINSTALLATION_STARTED | 3 | The Widget uninstallation has started |
WIDGET_UNINSTALLATION_COMPLETED | 4 | The Widget uninstallation has completed successfully |
WIDGET_UNINSTALLATION_FAILED | 5 | The Widget uninstallation has failed |
WIDGET_ERROR_STORAGE_AREA_FULL | 10 | The local storage device is full |
WIDGET_ERROR_DOWNLOAD | 11 | The Widget cannot be downloaded |
WIDGET_ERROR_INVALID_ZIP_ARCHIVE | 12 | The Widget package is corrupted or is an Invalid Zip Archive (as defined in [Widgets-Packaging] ) |
WIDGET_ERROR_INVALID_SIGNATURE | 13 | Widget's Signature Validation failed |
WIDGET_ERROR_GENERIC | 14 | Other reason |
WIDGET_ERROR_SIZE_EXCEEDED | 15 | The Widget exceeded the maximum size for a single widget allowed by the platform, as defined in section 9.1. |
WIDGET_ERROR_PERMISSION_DENIED | 16 | The user and/or the OITF denied the installation or update of a Widget |
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. |
Integer getApplicationVisualizationMode( ) | |||||||
Description |
Returns the current mode used by the OITF to visualize applications, whereby a return value:
|
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 11.1 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 4.3.8). |
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 10.1.1. |
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 4.4.7 and 7.2.6 |
void show( ) | |
Description | If the application visualization mode as defined by method getApplicationVisualizationMode() in section 7.2.1.3, 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 7.2.1.3, 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 7.2.1.3, 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 7.2.6). 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 7.2.8.1.1 |
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 K 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 9.3 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 11.3 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 K 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 10.1.3.7) and only applies if <configurationChanges>
has value true
.
The OITF shall implement the “application/oipfConfiguration
” object as defined below. This object provides an interface to the configuration and user settings facilities within the OITF.
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. |
For the intrinsic event “onIpAddressChange”, a corresponding DOM event shall be generated, in the following manner:
Intrinsic Event | Corresponding DOM event | DOM Event properties |
---|---|---|
onIpAddressChange | IpAddressChange | Bubbles: No Cancellable: No Context Info: item , ipAddress |
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 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
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.
String preferredAudioLanguage |
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]. |
String preferredSubtitleLanguage |
A comma-separated set of languages to be used for subtitle playback, in order of preference. The subtitle component (see section 7.16.5.5) 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. |
String preferredUILanguage |
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 |
String countryId |
An ISO-3166 three character country code identifying the country in which the receiver is deployed. |
Integer regionId |
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. |
Integer pvrPolicy | ||||||||
The policy dictates what mechanism the system should use when storage space is exceeded. Valid values are shown in the table below.
|
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 7.13.2.2. The default value is 0, timeshift is turned off. |
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.
| ||||||||
value | The new value for the system text string. |
The LocalSystem
object allows hardware settings related to the local device to be read and modified.
Note: The standbyState
property has been removed from this class.
The following values are defined for the standby state of the OITF:
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 10.1.3.8 |
The following values are defined for the startup URL of the OITF:
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. |
readonly String deviceID |
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]. |
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 |
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. |
readonly Integer majorVersion |
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. |
readonly Integer minorVersion |
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. |
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 |
Flag indicating whether the platform has PVR capability (local PVR). Note: This property is deprecated in favour of the pvrSupport property. |
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 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 | ||||||||||||
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. |
readonly Integer tvStandard | ||||||||||||||
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. |
readonly Integer pvrSupport | ||||||
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. |
readonly StartupInformation startupInformation |
Indicates any information used at startup time of the OITF. |
function onStartupInfoChange( StartupInformation startupInfo ) |
The function that is called when any property in the startup information is changed. The specified function is called with the argument startupInfo:
|
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 7.3.3.2. |
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 | 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. |
Boolean setPowerState( Integer type ) | ||
Description | The The power state change may be restricted for some values of |
|
Arguments | type | The type values that may be specified are defined in section 7.3.3.1 |
Boolean setDigestCredentials( String protocol, String domain, String username, String password ) | ||
Description | 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. |
|
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 | Clear any previously set digest credentials for the specified domain. If domain is Returns |
|
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 | Check if digest credentials are currently defined for the specified protocol and domain. Returns |
|
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. |
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 |
---|---|---|
onPowerStateChange | PowerStateChange | Bubbles: No Cancellable: No Context Info: powerState |
onStartupInfoChange | StartupInfoChange | Bubbles: No Cancellable: No Context Info: startupInfo |
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 NetworkInterface
class represents a physical or logical network interface in the receiver.
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 represents an audio or video output on the local platform.
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 7.3.2) and the subtitles available in the stream. For audio outputs, setting this property will have no effect. |
String videoMode | |||||||||||||||||||||||
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. |
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.
For video-only outputs, setting this property shall have no effect. |
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
For video-only outputs, setting this property shall have no effect. |
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:
|
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:
|
readonly StringCollection supportedVideoModes |
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 |
readonly StringCollection supportedDigitalAudioModes |
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 |
readonly StringCollection supportedAudioRanges |
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 |
readonly StringCollection supportedHdVideoFormats |
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 |
readonly StringCollection supportedAspectRatios |
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 |
readonly Integer current3DMode | ||||||
Read whether the display is currently in a 2D or 3D mode. Return values are:
|
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:
|
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.
typedef Collection<NetworkInterface> NetworkInterfaceCollectionThe
NetworkInterfaceCollection
class represents a collection of NetworkInterface objects. See Annex K for the definition of the collection template.
typedef Collection<AVOutput> AVOutputCollectionThe
AVOutputCollection
class represents a collection of AVOutput objects. See Annex K for the definition of the collection template.
typedef Collection<Tuner> TunerCollectionThe
TunerCollection
class represents a collection of Tuner objects. See Annex K for the definition of the collection template.A 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 9.3.1.
A 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.
A 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.
NOTE: An OITF may contain a physical tuner that has its capabilities split into multiple Tuner
objects to fit the restrictions on the <video_broadcast>
element outlined above and in section 9.3.1.
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 7.13.11.1 under Channel object. |
Boolean enableTuner |
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. |
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 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. |
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
.
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. |
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.
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. |
Integer lnbType |
The type of LNB connected to the frontend. Valid values are listed in section 7.3.11.1. |
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 |
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. |
readonly Integer urlSource |
The mechanism used to obtain the url property. Any of the STARTUP_URL_* values defined in section 7.3.3.1 are valid. |
readonly String url |
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 |
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 9.3.4 shall adhere to the following requirements.
NOTE: Annex D 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 10.
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 E. |
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 7.4.3.3. 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 7.4.3, 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 7.4.3 (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 7.4.1.
The functionality as described in this section is subject to the security model of section 10
.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 9.3.4.
The functionality as described in this section is subject to the security model of section 10.
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 7.16.4. |
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 7.4.3.5 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 7.4.6.
|
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 E.1 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 K 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 K 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 K 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 9.3.10:
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 10.1.
Note: Annex D 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 4.2. 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 10.1.
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 9.3.9 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 10.
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 9.3.9 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 K 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 K 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 K 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 9.3.9 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 K 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 K 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 7.9.1 through 7.9.3 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 9.3.5) in its capability profile.
Sections 7.9.4 and 7.9.5 define the ParentalRating and ParentalRatingCollection objects. These objects are used/referenced by various other objects, such as the Programme object as defined in section 7.16.2 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 9.3.5) 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 7.16.2 and 7.13.11, 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 K for the definition of the collection template. In addition to the methods and properties defined for generic collections, the ParentalRatingScheme
class supports the additional properties and methods defined below.
readonly String name |
The unique name that identifies the parental rating scheme. Valid strings include:
If the value of “ |
readonly String threshold |
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 |
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 7.9.4.1 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 7.9.1. 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 K 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 7.9.2.1 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 K 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 7.9.4.1 for more information about possible values. |
name | A string representation of the parental rating value. See property name in section 7.9.4.1 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 7.9.4.1 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 7.9.4.1 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 <recording>
with value “true
” as defined in section 9.3.3 in its capability description.
The OITF shall support the scheduling of recordings of broadcasts through the use of the following non-visual embedded object:
<object type="application/oipfRecordingScheduler"/>
Note that the functionality in this section shall adhere to the security model as specified in section 10.1.
Which channels can be recorded shall be indicated by the ipBroadcast
, DASH
and HAS
attributes in the PVR capability indication (see section 9.3.3).
Within the channels indicated by these attributes, recording of both
channels stored in the channel list and locally defined channels shall be supported.
ScheduledRecording record( Programme programme ) | ||
Description |
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. | |
Arguments | programme | The programme to be recorded, as defined in section 7.16.2. |
ScheduledRecording recordAt( Integer startTime, Integer duration, Integer repeatDays, String channelID ) | |||||||||||||||||
Description |
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. | ||||||||||||||||
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 | 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. | ||||||||||||||||
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 7.13.11) |
ScheduledRecordingCollection getScheduledRecordings( ) | |
Description |
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. |
ChannelConfig getChannelConfig( ) | |
Description |
Returns the channel line-up of the OITF in the form of a ChannelConfig object as defined in section 7.13.9. 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 7.13.1.3 |
void remove( ScheduledRecording recording ) | ||
Description |
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). | |
Arguments | recording | The scheduled recording to be removed. |
Programme createProgrammeObject( ) | |
Description |
Factory method to create an instance of Programme. |
The 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 7.10.1, 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).
The following table lists the constants for recording states.
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 | The recording has only partially completed due to insufficient storage space, a clash or hardware failure. There are three possible conditions for this:
|
RECORDING_ERROR | An error has been encountered. Refer to detailed error codes for details on the error. |
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.
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. |
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.
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. |
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 |
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). |
Integer endPadding |
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). |
readonly Integer repeatDays | ||||||||||||||||
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. |
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 |
If |
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 7.10.2.1. 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 |
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 7.9.5) with length 0. Note that if the Note that this property was formerly called “parentalRating” (singular not plural). |
String customMetadata |
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. |
typedef Collection<ScheduledRecording> ScheduledRecordingCollection
The ScheduledRecordingCollection
class represents a collection of ScheduledRecording> objects. See Annex K for the definition of the collection template.
The OITF shall support the following extensions to the application/oipfRecordingScheduler object defined in section 7.10.1.
This subsection shall apply for OITFs that have indicated support for the extended PVR management functionality by adding the attribute 'manageRecordings = true
' to the <recording>
element in the client capability description as defined in section 9.3.3.
The functionality as described in this section is subject to the security model of section 10.
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 9.3.3). |
readonly DiscInfo discInfo |
Get information about the status of the local storage device. The DiscInfo class is defined in section 7.16.4. |
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:
|
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 | 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. | |
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. |
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 |
---|---|---|
onPVREvent | PVREvent | Bubbles: No Cancellable: No Context Info: state , recording |
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 addEventListener()
method on the application/oipfRecordingScheduler object itself. The third parameter of addEventListener
, i.e. “useCapture
”, will be ignored.
The Recording
class represents an in-progress or
completed recording being made available through the extended PVR
management functionality as defined in section 7.10.4. Recordings for which no data has yet been recorded are represented by the ScheduledRecording class.
This class implements the ScheduledRecording interface (see section 7.10.2) 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 Recording
object.
Values of properties in the 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 7.10.4 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.
NOTE: The property parentalRatings
formerly defined as part of this class is now redundant following the renaming of the parentalRating
property in the ScheduledRecording class to parentalRatings.
NOTE: The 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 | |||||||||||||||
Flag indicating whether the programme is blocked due to parental control settings or conditional access restrictions. The
|
readonly Integer showType | ||||||||
Flag indicating the type of show. This field shall take one of the following values:
|
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:
|
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). |
This section is intentionally left empty.
This section is intentionally left empty.
The 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).
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. |
typedef Collection<Bookmark> BookmarkCollection
A BookmarkCollection
is a collection of bookmarks, ordered by time. See Annex K 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.
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.
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 9.3.12).
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 10.
readonly String vendorName |
The value of this property shall be the same as the value of the LocalSystem.vendorName property (see section 7.3.3.2) |
readonly String modelName |
The value of this property shall be the same as the value of the LocalSystem.modelName property (see section 7.3.3.2) |
readonly String softwareVersion |
The value of this property shall be the same as the value of the LocalSystem.softwareVersion property (see section 7.3.3.2) |
readonly String hardwareVersion |
The value of this property shall be the same as the value of the LocalSystem.hardwareVersion property (see section 7.3.3.2) |
readonly String familyName |
The value of this property shall be the same as the value of the LocalSystem.familyName property (see section 7.3.3.2) |
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 9.3.7 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 7.16.2.3 “Metadata extensions to Programme” and 7.13.11.3 “Metadata extensions to Channel” for more information).
The functionality as described in this section is subject to the security model of section 10 (in particular section 10.1.3.6).
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 7.13.9. 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 7.13.1.3. |
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 7. Figure 13 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 7 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 7.12.1.2. | |
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 9.3.1) 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 10.1.3.1. 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 8 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 7.13.1.1 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 7.13.1.1). 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 7.14.13.1 are:
|
ChannelConfig getChannelConfig( ) | |
Description | Returns the channel line-up of the tuner in the form of a ChannelConfig object as defined in section 7.13.9. 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 7.13.1.1 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 7.13.11.1. 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 7.13.11.1. |
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 7.13.2.2 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 E.2)
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. See section 7.13.1.1 for more information of its usage. |
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 9.3.3 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 10.1.
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 8.2.3.4
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 7.13.2.4 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 7.13.2.4. 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 7.13.2.4 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 7.13.2.4. 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 7.13.2.4 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 7.13.2.4. 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 7.13.1.3, 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 7.13.1.3. |
trickplay | Optional flag as defined for method setChannel() in section 7.13.1.3. | |
contentAccessDescriptorURL | Optional flag as defined for method setChannel() in section 7.13.1.3. | |
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 9.3.7 in their capability profile.
Access to these properties shall adhere to the security model in section 10. 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 7.16.3 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 10. 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 9.3.10:
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 9.3.6 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 10.1.3.8.
Note the property onChannelScan and methods startScan and stopScan have been moved to section 7.13.9.
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 7.13.1.3.
The availability of the properties and methods are dependent on the capabilities description as specified in section 9.3.
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 9.3.1) in their capability.
Capability | Properties | Methods |
---|---|---|
Element <extendedAVControl> is set to “true ” as defined in section 9.3.6. | onChannelScan | startScan() stopScan() |
Element <video_broadcast type="ID_IPTV_SDS"> is set as defined in section 9.3.6. | createChannelList() |
The functionality as described in this section is subject to the security model of section 10.1.3.1.1 (for obtaining a ChannelConfig
object) and section 10.1.3.8 (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 8.4.3. 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 7.13.11.1. |
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 7.13.11.1):
|
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 K 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 7.13.11. |
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 7.13.10). 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 8.4.3.
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 7.13.11.1 |
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 ID_IPTV_SDS, this property denotes the DVB textual service identifier of the IP broadcast service, specified in the format “ServiceName.DomainName” with the ServiceName and DomainName as defined in [DVB-IPTV]. 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 7.3.3.2 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 9.3.7 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 K 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 9.3.6 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 10.1.3.8.
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 4.8.1.1. |
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 K 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 7.13.11. |
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 9.3.6 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 4.8.1.1. |
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 7.13.11.1. |
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 7.14.10) 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 7.14.3.2 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 7.14.7) 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 7.14.7) 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 9.3.22) for playing content fragments then it shall support the Media Fragment URI [Media-Fragments-URI] according to section 8.3.1.
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 4.7.1, 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 9.3.10.
If the Content Access Streaming Descriptor is not valid according to the XML Schema and semantics as defined in Annex E.2, 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 4.7.1, section 8 and Annex D.
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 7.14.1. |
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 7.14.1. |
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 7.16.5.2 – 7.16.5.5 shall be supported and the constants, properties and methods defined in section 7.16.5.1 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 9.3.10:
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
|