oipf logo

Open IPTV Forum
Release 2 Specification

Volume 6 - Procedural 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.


Abstract

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. This document is Volume 3 in the 10 Volume set of specifications that define the Open IPTV Forum Release 2 Solution.

The other Volumes in the set are:

This volume defines the Procedural Application Environment (PAE) available for Release 2 Open IPTV compliant services and devices. Like other specifications such as OCAP, ACAP and BluRay, which are GEM terminal specifications, this volume follows the structure of the [GEM] specification.

The Annexes contain API definitions at class and method level and clarifications of referenced specifications.

Contents

Figures

Tables

1. Scope

This volume defines the UNI Reference Point UNIS-12 of the Open IPTV Forum Functional Architecture [OIPF_ARCH2]

2. References

2.1 Normative references

[BCG]ETSI, TS 102 539 V.1.1.1, "Digital Video Broadcasting (DVB); Carriage of Broadband Content Guide (BCG) information over Internet Protocol (IP)"
[CDC1.1]Java Community Process, Java Specification Request JSR-218, "Connected Device Configuration (CDC) 1.1" or later.
NOTE: The latest release of JSR 218 is available at http://www.jcp.org/en/jsr/detail?id=218
[CEA-2014-A]Consumer Electronics Association, CEA-2014-A, "Web-based Protocol Framework for Remote User Interface on UPnP Networks and the Internet (Web4CE)", (including the August 2008 Errata)
[DVR]ETSI, TS 102 817 V1.1.1, "Digital Video Broadcasting (DVB);Digital Recording Extension to Globally Executable Multimedia Home Platform (GEM)"
[FP1.1]Java Community Process, Java Specification Request JSR-219, "Foundation Profile (FP) 1.1" or later.
NOTE: The latest release of JSR 219 is available at http://www.jcp.org/en/jsr/detail?id=219
[GEM]ETSI, TS 102 728 V1.2.1 (2011-09), "Digital Video Broadcasting (DVB); Globally Executable MHP (GEM) Specification 1.3 (including OTT and hybrid broadcast/broadband)"
[GEMS3D]ETSI, TS 101 600 V1.1.1 (2012-05), "Digital Video Broadcasting (DVB); GEM Profile for Plano-Stereoscopic 3DTV"
[HEADLESS]DVB, Blue Book A127, "Application Gateway and Media Server Fragment".
NOTE: http://www.mhp.org/specs/a127.application_gateway_and_media_server_fragment.pdf
[JAR]Java Community Process, "JAR File Specification, part of Java SDK 1.4.2 specification", 1999
http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html
[JAVATV]Java Community Process, Java Specification Request JSR-927, "Java TV, Version 1.1.1" or later.
NOTE: The latest release of JSR 927 is available at http://www.jcp.org/en/jsr/detail?id=927
[MHP]ETSI, TS 102 727 V1.1.1 (2010-01), "Digital Video Broadcasting (DVB); Multimedia Home Platform (MHP) Specification 1.2.2"
[MHP-PVR]ETSI, TS 102 816 V1.1.1, "Digital Video Broadcasting (DVB); Personal Video Recorder (PVR)/Personal Data Recorder (PDR) Extension to the Multimedia Home Platform"
[OCSP]IETF, RFC 2560 "X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP" URL: http://tools.ietf.org/html/rfc2560
[PBP1.1]Java Community Process, Java Specification Request JSR-217, "Personal Basis Profile (PBP) 1.1" or later.
NOTE: The latest release of JSR 217 is available at http://www.jcp.org/en/jsr/detail?id=217
[TS26234]3GPP, TS 26.234 V9.3.0 (2010-06), Transparent end-to-end Packet-switched Streaming Service (PSS) Protocols and codecs (Release 9)

2.2 OIPF references

[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_DAE2]Open IPTV Forum, "Release 2 Specification, Volume 5 - Declarative Application Environment", 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_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_WSTVP2]Open IPTV Forum, "Release 2 Specification, Volume 5a - Web Standards TV Profile", V2.3, January 2014.

2.3 Informative references

[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

3. Conventions and Terminology

3.1 Conventions

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].

All sections and annexes, except "Scope" and "Introduction", are normative, unless they are explicitly indicated to be informative.

3.2 Terminology

3.2.1 Abbreviations

In addition to the Abbreviations provided in Volume 1, the following abbreviations are used in this Volume.

AcronymExplanation
DSMCCDigital Storage Media Command and Control
FPFoundation Profile
GEMGlobally Extensable MHP
HASHTTP Adaptive Streaming
JSSEJava Secure Sockets Extension
MHPMultimedia Home Platform
MPDMedia Presentation Description
PBPPersonal Basis Profile

4. General considerations and conventions

4.1 Relation between DVB-GEM and PAE Definitions

The GEM/MHP notion of “Broadcast Application” should be interpreted as meaning applications that are bound to a specific scheduled content service or a content on demand item.

Unbound applications are persistent applications that are not tied to any service.

The GEM term “interaction channel” is the network connection channel of the OIPF architecture [OIPF_ARCH2].

4.1.1 DVB-GEM Compliance

All mandatory requirements for the GEM IPTV target shall be supported by this document.

The following optional parts of the GEM IPTV target shall be supported by this document;

  • OpenType
  • Internet Access applications
  • Stored applications, stored services and corresponding APIs
  • Unbound applications and corresponding APIs
  • Content referencing for IPTV
  • Service discover and selection for IPTV

The following optional parts of the GEM IPTV target shall be supported by this document under specific circumstances.

  • TV-Anytime content referencing and metadata

The following optional parts of the GEM IPTV target may be supported by this document;

  • File storage API
  • Smart Card API (JSR177)
  • Providers
  • Privileged applications

Where a service provider is specifying a device including the PAE, the service provider may choose to require these optional features.

The following optional parts of the GEM IPTV target should not be supported by this document;

  • DVB-HTML
  • The MHP functional equivalent called application authentication.
  • Section filtering API (org.davic.mpeg.sections), Tuning API, Basic MPEG concepts and common error reporting
  • MPEG 2 video drips and corresponding APIs
  • MPEG 2 I-frames and corresponding APIs
  • Credentials
  • Certificate revocation mechanism of [MHP]
  • Root certificate management mechanism defined in [MHP]
  • Externally authorized applications

4.1.2 Functional Equivalents

The functional equivalents to GEM-IPTV are listed in table “Table: Functional equivalents”.

The main concepts are as follows;

  • DVB Service Discovery and Selection and Broadband Content Guide are used for SI.
  • Applications are distributed in JAR files, using HTTP for unicast and FLUTE for multicast.
    NOTE: FLUTE is conceptually different from DSMCC object carousel and cannot be considered a functional equivalent.
  • Application authentication is based on the signing capabilities for JAR files.

5. Architecture and Deployment Options

5.1 Architecture

FIGURE 1
Figure 1: Architecture Block Diagram

The above figure shows a number of the key components of the architecture and indicates their origin, GEM, JavaTV, PBP or components of PBP (JSSE, CDC or FP). Below is a short summary of each component ordered from left to right in the figure.

5.2 Deployment Options

The following deployment options were taken from chapters 5.3.4.2 of [OIPF_ARCH2] for reference purposes.

5.2.1 Combined IG-AG-OITF STB and OITF TV (“headed configuration”)

PAE-Combined-IG-AG-OITF.png

This deployment supports both managed and unmanaged services, with DAE and PAE applications, presented on an OITF TV and a legacy TV. The following devices are deployed:

  • A WAN Gateway.
  • Combined IG, AG and OITF STB: A set top box including IG, AG and OITF functionality, that exposes HNI INI AG to other OITFs in the residential network. It connects to the legacy TV using some non-OIPF specified mechanism, such as HDMI or SCART.
  • OITF TV: This is a TV containing an OITF.

Optionally, the IG-AG-OITF STB or the OITF TV may act as a DLNA DMS to make OIPF services available to DLNA devices. They may also act as a DLNA DMP to access content from other DLNA devices on the home network.

5.2.2 Combined AG-IG with multiple OITFs (“headless configuration”)

PAE-Combined-AG-IG.png

This deployment supports both managed and unmanaged services, with DAE and PAE applications, presented on an OITF TV and a legacy TV. The following devices are deployed:

  • A WAN Gateway.
  • Combined AG-IG device: A device including both IG and AG functionality, that exposes HNI INI AG to OITFs in the residential network.
  • OITF STB: A set top box containing an OITF. It connects to the legacy TV using some non-OIPF specified mechanism, such as HDMI or SCART.
  • OITF TV: A TV containing an OITF.

Optionally, the OITF STB or the OITF TV may act as a DLNA DMS to make OIPF services available to DLNA devices. They may also act as a DLNA DMP to access content from other DLNA devices on the home network.

5.2.3 AG-IG, OITF-IG, Multiple OITFs

PAE-MixedDeployment.png

This deployment supports managed and unmanaged services, and DAE and PAE applications. The following devices are deployed:

  • A WAN Gateway.
  • Combined AG-IG device: A device including both IG and AG functionality, that exposes HNI INI AG to OITFs in the residential network.
  • OITF STB: A set top box containing an OITF. It connects to the legacy TV using some non-OIF specified mechanism, such as HDMI or SCART.
  • IG-OITF STB: A set top box containing both an IG and an OITF.
  • OITF TV: A TV containing an OITF.

In this deployment, there are multiple IGs. Only one IG can be active in the residential network at any point in time. The ISIM application must always be in the AG-IG in this case.

5.2.4 Combined OITF-AG TV and IG-WAN Gateway (“headed configuration”)

PAE-Combined-AG-TV.png

This deployment supports managed and unmanaged services, and DAE and PAE applications. The following devices are deployed:

  • Combined IG-WAN Gateway: A single physical device including an IG and WAN Gateway functionality.
  • Combined AG-OITF TV: A TV including both an OITF and an AG.

Optionally, the OITF-AG TV may act as a DLNA DMS to make OIPF services available to DLNA devices. It may also act as a DLNA DMP to access content from other DLNA devices on the home network.

5.3 Remote UI Server (informative)

PAE applications may offer a CE-HTML remote UI to other devices. The org.oipf.uiserver package allows applications to register as providing a remote UI. When an application registers, it provides information about itself in the XML format defined by the [CEA-2014-A] remote UI. The PAE implementation listens for UPnP search requests for the schema “urn:oipf-org:device:ag:1” as defined in [OIPF_PROT2] section 10.1.1.2. When such a request is received, the implementation combines the remote UI information provided by all currently registered applications and returns it.

6. Protocols

6.1 Broadcast Channel Protocols

The broadcast channel protocols defined by clause 6.2 of [GEM] are NOT included in the present document.

6.2 Interaction Channel Protocols

The following protocols shall be supported with the definition in [OIPF_PROT2] superseding that in [GEM].

6.3 Transport protocols for application loading over the interaction channel

The [GEM] “File system implemented only via the interaction channel” should not be supported.

Applications loading over the interaction channel shall be implemented using signed JAR-files as defined in [JAR].

The FLUTE protocol shall be supported as defined in [OIPF_PROT2].

When the application signalling for an application includes one or more FLUTE transport protocol descriptors, (see clause “Extensions to XML AIT”), the following shall apply;

6.4 IPTV Protocols

6.4.1 Streaming Protocols

The following protocols shall be supported as defined in [OIPF_PROT2].

  • RTP
  • IGMP
  • RTSP

6.4.2 Metadata Protocols

The following protocol shall be supported;

6.4.3 Content Download Protocols

The following protocols shall be supported as defined in [OIPF_PROT2].

  • HTTP

6.5 Home Network Protocols

This is the procedure for AG discovery defined in [OIPF_PROT2].

7. Content formats

7.1 Static formats

Requirements on still image support are defined in referenced specifications. The following is a summary;

7.2 Streaming formats

The following shall be supported for streaming content as defined by [OIPF_MEDIA2].

The following shall be supported as monomedia formats for audio clips as defined by [OIPF_MEDIA2].

MPEG-1 layer 3 may be supported for streaming content and for audio-clips as defined by [OIPF_MEDIA2].

Subtitles shall be supported as defined by [OIPF_MEDIA2].

OIPF HTTP Adaptive Streaming may be supported as defined by [OIPF_HAS2].

7.3 Fonts

7.3.1 Resident Fonts

The RNIB/DTG “Tiresias” font or equivalent shall be supported with the “Basic Euro Latin” character set defined in [MHP].

Other resident fonts may be supported as required.

7.3.2 Downloadable Fonts

The OpenType format as defined by [GEM] shall be supported. The PFR font format as required by [GEM] is NOT required to be supported.

8. Void

9. Application Model

9.1 Introduction (informative)

The model for procedural applications is that defined by [GEM]. Individual applications are grouped into services. Services may include streaming video and audio but this is not required. Services which contain only applications are permitted and indeed may be more common in this context. The organisation that packages a set of applications into a service is responsibility for ensuring that those applications behave reasonably when deployed together. Applications within a service carry a control code, one of which is AUTOSTART. Applications with this control code will be started automatically when the service is selected.

An application gateway becomes aware of services either from the IPTV service discovery process (see [OIPF_ARCH2]) or as a result of an API call made by an application. This signalling supports applications that run all the time (called “unbound applications” in [GEM]), and applications which are bound to a scheduled content service. Practically this signalling does not support applications which are bound to a particular item of content in a scheduled content service. Applications are signalled by information placed in an ApplicationList which may be placed in the following 3 places;

Additionally an application offering a user interface to on-demand content may associate one or more applications with individual items of content using an API which associates the application signalling information with the locator for the on-demand content.

There are a number of different API calls which an application can use to add or update the services known to an application gateway.

In addition to the mechanisms specified above, applications and services containing them may be included as part of the basic software of the application gateway and start automatically when power is applied. Such applications would be updated by software download. Such applications would likely be unbound applications running all the time. For networks where SD&S is not deployed, one possibility would be for an application to load an initial set of applications by some other means, e.g. from a service provider specific URL, either unicast or multicast.

In the present document, all procedural applications are distributed in JAR files, one JAR file per application. Due to the file format, it is necessary to download the end of the JAR file before any of the individual files inside can be accessed, practically therefore the entire JAR file is downloaded before an application starts. This is in contrast to the broadcast object carousel based systems where individual class files can be downloaded as required. These JAR files may be distributed by unicast (HTTP) or multicast (FLUTE).

Applications and their associated metadata may be stored in persistent, non-volatile storage in the terminal or downloaded from the network into volatile memory when required. The following 3 possibilities are defined;

9.2 Broadcast Applications

In the present document, what [GEM] calls “broadcast applications” are applications which are associated with one or more scheduled content services. These shall be supported using the “XML Encoding for AIT” found in Annex AR of [MHP] as follows;

These shall also be supported where an application offering a user interface to on-demand content associates one or more applications with individual items of content manually.

Applications may also be associated with scheduled content using the MPEG-2 table based encoding of the AIT defined in [MHP]. Support for this is optional in both networks and application gateways.

9.3 DVB-J Model

Application gateways are NOT required to monitor for changes in SD&S frequently enough to change applications at boundaries between individual content items in a scheduled content service. Effectively dynamic update of a service's application signalling is not supported. The language in [GEM], section 9.2 about the packaged media target also applies to application gateways.

Note: SD&S information changes only if a new service is added. This is not happening too frequently and a check once a day is considered to be sufficient.

9.4 Stored and Cached Applications

Stored applications shall be supported.

Cached applications may be supported.

9.5 Unbound Applications

Unbound applications shall be supported.

10. Application Signalling / Metadata

10.1 XML AIT

The application description shall be the XML encoding of the AIT as defined in [MHP] annex AR “XML encoding for AIT” and modified by [OIPF_META2] with the following modifications;

Table 1: Status of XML AIT Descriptors and Elements
Descriptor or Element in MHPSummaryStatus or comments in present document
AR.3.1 ApplicationListList of applicationsRequired
AR.3.2 ApplicationName, identifier, type specific descriptor, provider descriptorsRequired
AR.3.3 ApplicationIdentifier2 numbersRequired
AR.3.4 ExternalApplicationIdentifierAlready running applications not signalled in this serviceThis should not be used.
AR.3.5 ApplicationDescriptorNumerous application attributesRequired
AR.3.6 VisibilityDescriptorAttribute – indicate if application can be visible to users and/or other applicationsRequired
AR.3.7 IconDescriptorIcon for applicationThe filename in the IconDescriptor shall either be a relative filename within the jar file carrying the application or shall be an HTTP URL.
AR.3.8 AspectRatioPreferred aspect ratio for applicationsRequired
AR.3.9 MhpVersionSpecification versionAs defined by GEM for the application version fields in clause 10.4.3 “Content of the application description”
AR.3.10 StorageCapabilitiesCan the application be stored or cachedSupport for stored applications required.
AR.3.11 StorageTypeEnumeration used in AR.3.10As AR.3.10
AR.3.12 ApplicationTypeApplication typeThe “DVB-J” application type shall be used for GEM-IPTV applications. The “OIPTV-headless” type shall be used for headless applications.
AR.3.13 DvbApplicationTypeEnumeration for AR.3.12Application type DVB-J shall be used for GEM-IPTV applications.
AR.3.14 ApplicationControlCodeEnumeration for AR.3.5Required except for REMOTE (see external application identifier)
AR.3.15 ApplicationSpecificDescriptorContainerRequired
AR.3.16 DVBJDescriptorApplication locationThe first location element shall point to a JAR file containing the first class of the application. No other JAR files shall be referenced.
AR.3.17 ApplicationStructureClasspath and initial class for use with AR.3.16This shall not be used. (The information is found in the jar file manifest).
AR.3.18 AbstractIPServiceSupports grouping of unbound applicationsRequired
AR.3.19 UnboundApplicationDescriptorUnbound application supportRequired

Where FLUTE is supported as defined in [OIPF_PROT2], the FLUTESessionDescriptor defined in annex B.6 of [OIPF_META2] shall be supported. Where FLUTE is not supported, this descriptor shall be silently ignored.

10.2 Stored and cached applications

For stored and cached applications, the application description file shall be ignored. The JAR file or its entire contents shall be stored.

11. The Java Platform

11.1 Fundamentals

The PAE Java Platform is based on the IPTV target of the DVB-GEM specification [GEM] which is based on the Personal Basis Profile 1.1 [PBP1.1] and Java TV 1.1 [JAVATV] as described below.

In the case of a conflict, the following precedence rules apply:

  1. The normative guarantees of “Personal Basis Profile 1.1” shall always take precedence.
  2. The normative guarantees of “Java TV 1.1.” shall always take precedence, except when in conflict with rule 1.
  3. The normative guarantees of GEM-IPTV take precedence except when in conflict with rules 1 and 2 above.

The PAE Java Platform is based on the “Personal Basis Profile 1.1”. PAE implementations shall fully comply with the “Personal Basis Profile 1.1”.

All PAE Implementations shall be fully compliant with:

The PAE Java Platform is based on “Java TV 1.1”. PAE implementations shall fully comply with “Java TV 1.1”.

The namespaces of the specifications above shall be protected, it is NOT permitted to implement any additional method, which is not defined in these specifications. Subsetting of any class or package is also NOT permitted.

GEM 1.3

The PAE Java Platform is based on IPTV target of the DVB-GEM 1.3 specification [GEM] and the “Application Gateway and Media Server Fragment” specification [HEADLESS].

PAE implementations in devices with a display shall be fully compliant with the mandatory requirements of the IPTV target of the DVB-GEM 1.3 specification with the clarifications, definitions and extensions contained in this document.

When 3D is supported, PAE implementationsin devices with a display shall also be fully compliant with the mandatory requirements of the Plano-stereoscopic 3DTV GEM Profile [GEMS3D]

PAE implementations in devices without a display shall be fully compliant with the requirements of the “Application Gateway and Media Server Fragment” specification.

PAE applications shall not define classes in the namespace of any package specified by the PAE specification. The fully qualified class name of any class defined by an application shall not start with “java.”, “javax.microedition.”, “javax.crypto.”, “javax.net.”, “javax.security.”, “javax.media.”, “javax.tv.”, “org.davic.”, “org.dvb.”, or “org.havi.” or “org.oipf.”.

11.2 Extensions and mappings to GEM APIs

11.2.1 Broadcast Transport Protocol Access API (org.dvb.dsmcc)

Instances of DSMCCObject corresponding to files in a JAR file shall be supported as defined by clause P.3 of [GEM].

Instances of ServiceDomain shall correspond to JAR files. Use of the attach(Locator) method with a Locator referencing a JAR file delivered using HTTP shall be supported.

The present document does not define support for instances of DSMCCStream and DSMCCStreamEvent corresponding to files in a JAR file.

11.2.2 Application Listing and Launching API (org.dvb.application)

This API shall be mapped onto the XML encoding of the AIT.

11.2.3 Streaming Media APIs

If the Locator, MediaLocator or URL passed to the methods listed below references a content access streaming descriptor (as defined in annex E.2 of [OIPF_DAE2]) which contains one or more content items then the client shall use the first such content item as the source of the media to be presented by each of the APIs listed. This applies to the following methods;

  • javax.tv.service.SIManager.getService( ... )
  • javax.media.Manager.createDataSource( ... )
  • javax.media.Manager.createPlayer( ... )

11.2.4 GEM 3D API

The org.dvb.stereoscopicpackages shall be supported as defined in [GEMS3D].

11.3 APIs defined by this Volume

11.3.1 Content and Service Protection API

This is the org.oipf.drm package defined in Annex G.

When the permission request file requests the permission to communicate with a CA system for any CA system ID and this is granted, a DRMPermission shall be created with name “*”.

11.3.2 User Authentication API

This is the org.oipf.auth package defined in Annex E.

When an application is started, it shall be given an instance of org.oipf.auth.UserAuthenticationPermission where the domain is the domain from which the application was delivered.

11.3.3 UI Server API

This is the org.oipf.uiserver package defined in Annex F.

11.3.4 Content download API

This is the org.oipf.download package defined in Annex C.

If the locator references a content access download descriptor (as defined in annex E.1 of [OIPF_DAE2]) which contains one or more content items then the client shall use the data inside the abstract content access descriptor to initiate the download of those content items. Where multiple content items are to be downloaded, all items shall be downloaded in an order as defined by the client.

11.3.5 Service API

This is the org.oipf.service package defined in Annex D.

11.4 PVR APIs

NOTE: The basic APIs for PVR are included as a result of the reference to [DVR] in clause 16 – “PVR”.

This is the following packages;

11.5 Content referencing

The following table lists the types of locators defined in clause 14 (“System integration aspects”) and their mapping to the APIs required by [GEM].

Table 2: Mapping of GEM Clauses Relating to Content Referencing
GEM clauseMapping
11.11.1 Transport streamNot required for GEM-IPTV target
11.11.2 NetworkNot required for GEM-IPTV target
11.11.3 BouquetNot included in GEM
11.11.4 ServiceAs specified by GEM.
11.11.5 DVB eventNot required for GEM-IPTV target
11.11.6 MPEG elementary streamAs specified by GEM.
11.11.7 FileImplementations shall support the use of URLs to reference files in JAR files. The details of this may be implementation specific.
11.11.8 DirectoryImplementations shall support the use of URLs to reference directories in JAR files. The details of this may be implementation specific.
11.11.9 Drip feed decoderNot required for GEM-IPTV target
11.11.10 IrrelevantNot relevant.
11.11.11 Methods working on many locator typesAs specified by GEM.
11.11.12 Support for the HTTP Protocol in DVB-JAs specified by GEM.
11.11.13 MHP ApplicationsAs specified by GEM.

12. Security

12.1 Authentication of Applications

Application authentication shall be done using the signing mechanisms defined for JAR files in [JAR]. The MHP application authentication mechanism should not be supported by the current specification.

12.2 Permission request file

NOTE: The semantics of the “capermission” element are modified as defined by clause 11.3.5Service API”.

12.3 Security Policy for Applications

The permission request file defined in [GEM] shall be supported except as follows;

12.4 Certificate Management

The certificate revocation mechanism defined in [MHP] should not be supported. Certificate revocation may optionally be checked using [OCSP].

The root certificate management mechanism defined in [MHP] should not be supported. No replacement is defined by the present document. Updating of root certificates may be performed by software update.

13. Graphics reference model

The following apply in addition to the requirements defined in [GEM].

Graphics resolutions for standard definition (as required by [GEM] clause G.1.1) shall be as defined in [OIPF_DAE2].

14. System integration aspects

The following table lists the types of entity that it shall be possible to address by locators in the present document and any corresponding text representation.

Table 3: Locators and Corresponding Text Representations
EntityText RepresentationComment

Service

For services delivered via unicast, "rtsp:" URL defined in [BCG].

For services delivered via multicast, “rtp:” and “udp” URLs defined in [BCG].

Relevant for devices with a display and for devices without a display but with media handling capabilities.
Service Domain“http:” or “https:” URLUsed to reference a JAR file
MPEG elementary streamNo standardized text representationRelevant for devices with a display and for devices without a display but with media handling capabilities.
File"file:", "http:" and "https:" URLs as referred to in [GEM].
Directory"file:", "http:" and "https:" URLs as referred to in [GEM].

NOTE: FLUTE carousels do not appear as a file system. Hence they do not have a unique URL.

NOTE: “rtp:”, “udp:” and “rtsp:” are considered as transport dependent locators. The present document does not define support for transport independent locators.

15. Detailed Profile Definitions

The following table lists which clauses of the present document are required or optional for the 3 different device types addressed by this volume.

Table 4: Platform Profile Definitions in this Volume
AreaClauseDevices With DisplayDevices Without Display
Without Media HandlingWith Media Handling
4.1.1 DVB-GEM Compliance M--
Protocols6.1 Broadcast Channel Protocols---
6.2 Interaction Channel ProtocolsMMM
6.3 Transport protocols for application loading over the interaction channelMMM
6.4.1 Streaming ProtocolsM-M
6.4.2 Metadata ProtocolsMMM
6.4.3 Content Download ProtocolsO-O
6.5 Home Network ProtocolsOMM
Content formats7.1 Static formatsM--
7.2 Streaming formatsM-O
7.3.1 Resident FontsM--
7.3.2 Downloadable FontsM--
Application Model9.2 Broadcast ApplicationsM--
9.3 DVB-J ModelMMM
9.4 Stored and Cached ApplicationsMMM
9.5 Unbound ApplicationsMMM
Application Signalling / Metadata10.1 XML AITMMM
10.2 Stored and cached applicationsMMM
The Java Platform11.1 FundamentalsMMM
11.2 Extensions and mappings to GEM APIsMMM
11.3.1 Content and Service Protection APIM-M
11.3.2 User Authentication APIMMM
11.3.3 UI Server APIMMM
11.3.4 Content download APIO-O
11.3.5 Service APIM-M
11.4 PVR APIsO-O
Security12.1 Authentication of ApplicationsMMM
12.2 Permission request fileMMM
12.4 Certificate ManagementMMM
13 Graphics reference modelMMM
14 System integration aspectsMMM
16 PVRO-O
17 Minimum Terminal Capabilities
18 HTTP Adaptive Streaming
Key
-Not applicable/Not required/ Clause does not contain normative requirements
OOptional feature
Mrequired feature in the GEM terminal
Table 5: Applicability of GEM Specification Sections
AreaGEM Specification SectionGEM IPTV TargetPAE Devices With DisplayPAE Devices Without Display
Without Media HandlingWith Media Handling
Static Formats
Bitmap pictures7.1.1.3, "PNG" and 15.1, "PNG – restrictions"MM--
7.1.1.3, "PNG" without restrictions----
7.1.1.4, "GIF"-M
Required by PBP
--
7.1.2, "MPEG-2 I-Frames"OSN--
7.1.1.2, "JPEG" + 15.3, "JPEG – restrictions"----
7.1.1.2, "JPEG" without restrictionsMM--
Audio clips7.1.4, "Monomedia format for audio clips"MM-FE-O-FE
Video drips7.1.3, "MPEG-2 Video "drips"OSN--
Text encoding7.1.5, "Monomedia format for text"MMMM
Media Streaming Formats
Video7.2.2, "Video"MM-FE--
Audio7.2.1, "Audio"MM-FE-O-FE
Subtitles7.2.3, "Subtitles"-O--
Fonts
Built inCharacter, set see annex E
Metrics see annex D
Face: UK RNIB "Tiresias"
OM--
Downloadable7.4.1, “PFR”MSN--
7.4.2, “OpenType”OM--
Broadcast channel protocols
6.2.2, "MPEG-2 sections"ONot visible to GEM applications-Not visible to GEM applications
6.2.5, "Object carousel"OM/-
Partial functional equivalent
M/-
Partial functional equivalent
M/-
Partial functional equivalent
IP Multicast stack based on:
6.2.6, "Protocol for delivery of IP multicast over the broadcast channel",
6.2.7, "Internet Protocol (IP)",
6.2.8, "User Datagram Protocol (UDP)",
6.2.10, “IP signalling”
----
Interaction channel protocols
TCP/IP6.3.3, "Transmission Control Protocol", 6.3.2, "Internet Protocol"MMMM
UDP/IP6.3.2, "Internet Protocol", 6.3.9, "User Datagram Protocol"MMMM
HTTP6.3.7.1, "HTTP 1.1"OMMM
6.3.7.2, “MHP profile of HTTP 1.0”M---
DSMCC-UU RPC6.3.4, "UNO-RPC",
6.3.5, "UNO-CDR",
6.3.6, "DSM-CC User to User"
----
DNS6.3.10, "DNS"MMMM
HTTPS6.3.7.3, “HTTPS”MMMM
Interaction Channel File System6.4.1, “File system implemented only by the interaction channel”O---
DSMCC / HTTP hybrid6.4.2, “Hybrid between broadcast stream and interaction channel”O---
IPTV5, “Basic architecture”M---
Application Model
ApplicationModelAll parts of clause 9, “Application model” except those clauses (and their subclauses) identified belowMMMM
9.3 ”DVB-HTML model”OSNSNSN
9.7, “Lifecycle of internet access applications”OM/O
Only web browser support is required
--
9.9, “Stored and Cached applications”OM/O
Stored application support required
M/O
Stored application support required
M/O
Stored application support required
9.13, “Unbound Applications”-MMM
Application Signalling
Application Signalling10, “Application signalling”MM-FE
XML encoding of AIT does not support full syntax of binary encoding.
M-FE
XML encoding of AIT does not support full syntax of binary encoding.
M-FE
XML encoding of AIT does not support full syntax of binary encoding.
DVB-J
All parts of clause 11, “DVB-J platform” except those clauses (and their subclauses) identified belowMMSubset as defined by [HEADLESS]Subset as defined by [HEADLESS]
11.4.1 “ HAVi UI Widgets”OO--
11.5.2, "Support for Multicast IP over the Broadcast Channel----
11.5.3, "Support for IP over the Return Channel"MMMM
11.5.4, "MPEG-2 Section Filter API"OSNSNSN
11.5.5, "Mid-Level Communications API" as modified by 11.5, "Data access APIs"MMMM
11.5.7 “File storage device access”OOOO
11.6.3, "Tuning API"O---
11.6.4, "Conditional access API"----
11.6.6, ”Service discovery and selection for IPTV”OMMM
11.6.7, “Integration between protocol independent SI API and TV-Anytime”OM/-
Mandatory if broadband content guide is supported otherwise not applicable
M/-
Mandatory if broadband content guide is supported otherwise not applicable
M/-
Mandatory if broadband content guide is supported otherwise not applicable
11.7.4, "Basic MPEG concepts"O---
11.7.6 “Content referencing”OMMM
11.7.7, "Common error reporting"O---
11.7.8, “Plug-in APIs”OOOO
11.7.9, “Provider API”OOOO
11.7.10, “Content referencing for IPTV”OM-M
11.7.11, “TV-Anytime content referencing and metadataOM/-
Mandatory if broadband content guide is supported otherwise not applicable
M/-
Mandatory if broadband content guide is supported otherwise not applicable
M/-
Mandatory if broadband content guide is supported otherwise not applicable
11.8.2, "APIs for return channel security"MMMM
11.8.3, "Additional permissions classes"O---
11.8.6, “DVB Extensions for Cryptography”OOOO
11.9.5.2, “JDOM”OMMM
11.9.6, “MHP terminal hardware API”OOOO
11.11.1 “Transport stream”O---
11.11.2 “Network”O---
11.11.4.3, “Content referencing for IPTV”MM-M
11.11.5 ”DVB event”O---
11.11.9 “Drip feed decoder”OSNSNSN
11.12.2, “Stored services”OMMM
11.15, “APIs defined in OCAP”OM/O
Only org.ocap.service is required
M/O
Only org.ocap.service is required
M/O
Only org.ocap.service is required
11.14, “Internet Access”OM/O
Only web browser support is required
--
17, “Internet access clients”OM/O
Only web browser support is required
--
Key
-Not applicable/Not required
OOptional feature
SNFeature should not be supported
Mrequired feature in the GEM terminal
O-FE
M-FE
Mandatory feature – functional equivalent
Optional feature – functional equivalent

The following table gives an overview of the functional equivalents that are available in the GEM-IPTV target and are defined in the PAE.

Table 6: Summary of Functional Equivalents (Informative)
NameGEM Clause(s)MHP DefinitionDetails
Arch5, "Basic architecture"MHP [1], clause 5, "Basic Architecture"See section 5.1 "Architecture"
Carousel6.2.5, "Object carousel"MHP [1], clause 6.2.5, "DSMCC User-to-user Object Carousel" as modified by clause 15.6.1.1, "Carousel"No complete functional equivalent defined. JAR files are a partial functional equivalent. See section 6.3 "Transport protocols for application loading over the interaction channel"
IP MPE6.2.6, "Protocol for delivery of IP multicast over the broadcast channel"MHP [1], clause 6.2.6, "DVB Multiprotocol Encapsulation"Not applicable
SI6.2.9, "Service information"

MHP [1], clause 6.2.9, "DVB Service Information"

DVB Service Information as defined in EN 300 468 [4] and ETR 211 [11].

DVB-SD&S and BCG.
11.6.1, "Signalling-bound service information API"

MHP [1], clause 11.6.1, "DVB Service Information API"

MHP [1], clause 11.11.3, "Bouquet"

Not defined.
Annex O, "Integration of the JavaTV SI API"MHP [1], annex O, "Integration of the JavaTV SI API"MHP Annex AP mapping between JavaTV SI API and SD&S / BCG.
Broadcast IP signalling6.2.10, "IP signalling"MHP [1], clause 6.2.10, "IP signalling"Not applicable
IPTV Protocols6.5, “IPTV protocols”MHP [1], clause 6,5, “IPTV protocols”RTP, RTSP, IGMP, DVB-STP as defined in section 6.4 "IPTV Protocols".
Audio

7.2.1, "Audio"

At least 1 audio format.

MHP [1], clause 7.2.1, "Audio"HE-AAC - see section 7.2 "Streaming formats"
Video

7.2.2, "Video"

At least 1 audio format.

MHP [1], clause 7.2.2, "Video"HE-AAC - see section 7.2 "Streaming formats"
Subtitles7.2.3, "Subtitles"MHP [1], clause 7.2.3, "Subtitles"Optional in the present document
11.4, "Presentation APIs" - classes related to subtitlesMHP [1], clause 11.4.2.5.1, classes related to subtitlesIf no subtitle format selected then APIs do nothing
Audio Clips7.1.4, "Monomedia format for audio clips"

MHP [1], clause 7.1.4:

Functional equivalent to MPEG-1 Audio (Layer 1 and 2) ISO/IEC 11172-3

HE-AAC required and MPEG-1 layer 3 optional - see section 7.2 "Streaming formats".
Resident Fonts7.3, "Resident fonts"

MHP [1], clause 7.3

At least the font Tiresias [80] shall be provided.

Tiresias or equivalent with extended latin character set.
Downloadable Fonts7.4, "Downloadable fonts"

MHP [1], clause 7.4

PFR0 as in DAVIC 1.4.1p9 [3]

OpenType® as defined in ISO/IEC 14496-18 [115] as the font format for MPEG-4

OpenType required with clarifications from GEM.
Application Signalling

10.2, "Program specific information"

10.4, "Application description"

10.5, "DVB-J specific application description"

MHP [1], clause 10XML encoding of AIT defined in MHP Annex AR.
11.7.2, "Application discovery and launching APIs" MHP [1], clause 11.7.2, "Application discovery and launching APIs"Same mapping as MHP. See clause 11.2.2 - "Application Listing and Launching API (org.dvb.application)".
Application Authentication

12.2, "Authentication of applications"

NOTE 1: See also text in clause 12.6.2.6, "Credentials" and text in clause 12.9, "Certificate management"

NOTE 2: See also text in clause 12.9.2, "Root certificate management."

MHP [1], clause 12.2, "Authentication of applications"Signed Jar files.
12.9.1, "Certificate Revocation Lists"MHP [1] clause 12.9.1, "Certificate Revocation Lists"Optional in the present document.
Conditional Access11.4, "Presentation APIs," classes related to conditional accessMHP [1], clause 11.4.2.5.1, classes related to conditional accessFailure modes due to content protection are included.
11.6.4, "Conditional access API"

MHP [1], clause 11.6.4, "Conditional Access API"

MHP [1], clause 14.10, "CA system"

Not included in the present document.
Content Referencing11.7.6, "Content referencing"

MHP [1], clause 11.7.6, "Content Referencing"

This API is formed of DAVIC 1.4.1p9 [3] Locator, DvbLocator, javax.tv.locator, org.dvb.locator.packages

Supported as defined in GEM. Classes corresponding to “dvb:” URI scheme not included.
11.11.11, "Methods working on many locator types"MHP [1], clause 11.11.11, "Methods working on many Locator types"There are no transport independent locators defined in the present document.
14.1, "Namespace mapping" MHP [1], clause 14.1, "Namespace mapping (DVB Locator)"See section 14 "System integration aspects".

14.9 Content referencing for IPTV

14.10, "Service identification"

MHP [1], clause 14.9, "Service identification"Not applicable.
Graphics ResolutionD.2, "Horizontal resolution"MHP [1], clause D.3.4.2, "Horizontal resolution"
G.1.1, "Device resolution for Standard Definition"MHP [1], clause G.1.1, "Device capabilities"See [OIPF_DAE2].
G.4, "Resident fonts and text rendering"MHP [1], clause G.4, "Resident fonts and text rendering"
Text WrappingD.3, "Text wrapping setting is true"MHP [1], clause D.3.7.2, "Text wrapping setting is true"
RCMM12.9.2, "Root certificate management"MHP [1], clause 12.9.2, "Root Certificate Management"Not defined in the present document.
Active Format DescriptorN.1, "Active Format Definition"Described in the present document, clause N.1.1, "MHP Signalling for Active Format Definition"Not defined in the present document.
References
[1]ETSI TS 102 727 v1.1.1, “Digital Video Broadcasting (DVB); Multimedia Home Platform (MHP) Specification 1.2.2”
[3]DAVIC 1.4.1 Specification part 9, “Information Representation”
[4]ETSI EN 300 468, “Digital Video Broadcasting (DVB); Specification for Service Information (SI) in DVB system”
[11]ETSI TS 101 211 v1.9.1, “Digital Video Broadcasting (DVB); Guidelines on implementation and usage of Service Information (SI)”
[80]Tiresias: "The RNIB/DTG "Tiresias" font version 8.03".
[115]ISO/IEC 14496-18, “Information Technology – Coding of audio-visual objects – Part 18: Font compression and streaming”

16. PVR

Where local PVR functionality is exposed to the PAE, this shall be done as specified by [DVR]. The details which GEM recording specifications are required to provide by that specification are defined in the following tables.

16.1 Mandatory Responsibilities

Table 7: Responsibilities of GEM Recording Specifications
ResponsibilityDefinition
Which types of stream are to be considered as “recordable streams”.All streams defined by [OIPF_MEDIA2] shall be considered recordable. To the extent that the terminal supports subtitles, subtitle streams shall be considered recordable.
Minimum capabilities for the number of steams (or number of streams of each type) that a GEM recording terminal must be able to record.For scheduled recording, the simultaneous recording of at least one video elementary stream, at least two audio elementary streams and at least two subtitle streams to the extent they are supported.
The definition of which applications are recordable in both scheduled and timeshift recording (which need not be the same).Not applicable. The present document does not require support for applications in-band in broadcast services.
The requirements on a GEM recording terminal to monitor for dynamic data and behaviour of applications during scheduled and timeshift recording (which need not be the same).Not applicable. The present document does not require support for data in-band in broadcast services.
Requirements on reconstructing the dynamic behaviour of recorded applications during playback of scheduled and timeshift recordings (which need not be the same).Not applicable. The present document does not require support for applications in-band in broadcast services.
The definitions of which streams are to be recorded in scheduled and timeshift recording If the number of streams of each type present is less than or equal to the limits in the recording capability of the device then all the streams of that type shall be recorded. Where more streams of any one type exist than the terminal can record, the decision on what to record shall be according to clause 11.4.2.3 of [MHP].
How accurately the expiration period should be enforced by implementations.There is no requirement for this to be accurately enforced, either by deleting the recording or by making it inaccessible through the API.
The definition of at least one protocol for transmitted time linesNot defined in the present document.
The conditions when a JMF player or service context has a time-shift buffer attached.The implementation shall support at least one time-shift buffer. If only one video stream is being presented, this time-shift buffer shall be associated with that video stream. If more than one video stream is being presented, the present document does not define which stream the time-shift buffer is associated with. The present document does not define mechanisms to associate timeshift buffers with other service contexts.
A mechanism to associate security attributes with individual recording requestsSee org.oipf.pvr.RecordingAccessPermissions
The mechanism for resolving parent recording requests including setting the initial state of a parent recording request.When a request is made to record a group CRID, the terminal shall resolve this into its constituent elements.
The events generated during playback when the start and end of a recording a reached.See Table 8 below.
Table 8: Events During Normal Playback and Resulting Behaviour
EventBehaviourResult on screenJava Event
Fast forward to end of stream when recording is in progressEnd of media event generated to any registered applicationsPlayback continues at rate 1.0 at the end of the streamEndOfContentEvent
Rewind to beginning of streamSwitch to pause modeFirst frame frozenorg.ocap.shared.media.BeginningOfContentEvent
Fast forward to end of stream when recording is not in progress and play to end of streamEnd of media generated to any registered applicationsLast frame frozenEndOfMediaEvent

16.2 Optional Responsibilities

The following table identifies where in the present document the optional responsibilities listed in [DVR] can be found or if they are not defined.

Table 9: Optional Responsibilities of GEM Recording Specifications
ResponsibilityDefinition
Mechanisms for controlling the extent to which one application can read or modify scheduled recordings and completed recordings made by another application.The requestedRecording and completedRecording parameters in the RecordingProperties.
Sub-classes of RecordingListFilter to filter the list of recordings in ways not supported by the present document.See org.dvb.tvanytime.pvr.navigation.
Rules governing which recordings an application can access.As defined in clause 16.3 "16.3".
Additional JMF controls to be supported for RecordedServices or the contents of a timeshift buffer. Different sets of JMF controls may be specified for these two cases.None defined in the present document.
Delays in re-starting applications after the return to normal play if this is believed to improve the end-user experience, for example when repeated cycles of fast-forward / play / fast-forward / play. When playback leaves trick-mode and returns to normal, terminals may delay re-starting applications for up to one minute. The behaviour for this minute is implementation dependent.
a mechanism to permit highly trusted applications to obtain instances of RecordingPermission whose action parameter is “*” No such mechanism defined in the present document.
that the optional behaviour defined in the class description of ServiceContextRecordingSpec, where the contents of the time-shift buffer are stored when the startTime parameter is in the past, becomes mandatory in that particular GEM recording specification.Not mandatory in the present document
Mechanisms for automatically removing requests from the list of recordings in a pending state if it appears the recording will never happen.Once the validity period of a request has expired, a terminal may discard recording requests which are still in a pending state.
Mechanisms for automatically removing requests from the list of recordings in a failed state based on some criteria they define.Once the validity period of a request has expired, a terminal may discard failed recording requests.
Any requirements to re-resolve ParentRecordingRequests after the request has first been made and to update the state accordinglyFor incompletely resolved CRIDs, the terminal shall monitor when an additional resolution information becomes available and shall act on that additional information.

16.3 Visibility of Recording Requests and Recordings between Applications and Service Providers

The [DVR] specification requires users of that specification to define a mechanism to manage visibility of recording requests between applications from different organisations – referred to as “RecordingRequest specific security attributes”. The mechanism defined in this specification is the following;

17. Minimum Terminal Capabilities

PAE devices with a display shall comply with the union of the minimum terminal capabilities of [OIPF_DAE2] and [GEM].

18. HTTP Adaptive Streaming

When the AG supports HTTP Adaptive Streaming (HAS), the Player object shall accept URL, MediaLocator and DataSource objects pointing to a Media Presentation Descriptor (MPD). The MPD shall be delivered with the MIME type as specified for the MPD in [TS26234], i.e. “video/vnd.3gpp.mpd” and in the HAS specification [OIPF_HAS2].

The Player, during the Realizing state, shall fetch the MPD from the URL, after which the MPD shall be interpreted and an initial (set of partial) Representation(s) selected. If all the operations are completed successfully the player moves to the Realized state and then to the Prefetching and Prefetched state. After this, playback can be started (e.g.: invoking the start() method of the Player).

If the MPD is not valid according to the XML Schema and semantics as defined in Annex A, the Player object shall move to the Unrealized state. In this case a javax.media.ResourceUnavailableEvent will be sent to all subscribed listeners.

If the MIME type specified for the MPD cannot be handled by the AG (i.e.: the AG does not support HAS), the creation of a Player object with URL, MediaLocator and DataSource objects pointing to a MPD will throw a NoPlayerException exception.

18.1 HAS support

HAS support shall be signaled by setting the following System Property:

Appendix A. Headless behaviour of UI-related APIs (informative)

The behaviour of certain APIs in headless mode (device without a directly connected display) requires a closer consideration. Some APIs were specifically designed for headless operation such as the PBP 1.1 specification, which defines a headless mode and provides methods to enquire the presence of a display.

A.1 PBP

The Personal Basis Profile specification /ref PBP/ introduced a headless operation mode starting in version 1.1.

The class java.awt.GraphicsEnvironment contains a method public static boolean isHeadless() which tests whether or not a display and some form of input device can be supported in this environment. If this method returns true, a HeadlessException is thrown from areas of the Toolkit and GraphicsEnvironment that are dependent on a display or input device.

A.2 Java TV

The following section discusses the behaviour of JavaTV in headless devices. The analysis shows, that there are well defined modes of operation for JavaTV on a headless device. All methods that handle display related parameters have a defined behaviour for devices without a display. The following section calls out all these methods and gives a short analysis of the behaviour.

javax.tv.graphics.AlphaColor
Summary: this just extends java.awt.Color which in PBP includes alpha.
Analysis: no additional functionality above PBP
Conclusion: No special behaviour or spec change needed for headless JavaTV.

javax.tv.graphics.TVContainer
Summary: gets the top level container for an Xlet
Analysis: Cannot fail to return a Container unlike javax.microedition.xlet.XletContext.getContainer.
"If the Xlet is the only Xlet that is currently active to invoke this method, it will return an instance of java.awt.Container that is initially invisible, with an undefined size and position."
Spec presumably would allow this to return a "new java.awt.Container" which cannot be used.
XletContext.getContainer says "Calling c.setVisible(true) will make the container visible." This language is missing in TVContainer.
Conclusion: On a headless device, XletContext.getContainer will return an invisible container where the setVisible method fails silently (this is the normal failure mode for this method). No spec change needed for headless JavaTV.

javax.tv.media.AWTVideoSizeControl and MediaSelectControl
Summary: Controls video scaling and media component selection
Analysis: On a headless device, a JMF player simply fails to support these controls. Player.getControl would return null. Player.getControls would not include these controls in the returned array. I cannot see any language in the JavaTV spec requiring players to support these controls.
Conclusion: On a headless device, these controls are simply not returned by getControl/getControls. No spec change needed for headless JavaTV.

javax.tv.service.Selection
Summary: Presentation of (TV) services
Analysis: Selecting a service which a device cannot present will fail with a SelectionFailedEvent. Two reason codes are possible - MISSING_HANDLER and INSUFFICIENT_RESOURCES. The JavaTV specification does not seem to require support for decoding or presenting TV services.
Conclusion: On a headless device, there is no TV service for which ServiceContext.select(..) would succeed. No spec change needed for headless JavaTV.

javax.media
Summary: Presentation of media
Analysis: The entry point to JMF is via Manager.createPlayer and Manager.createDataSource. These throw NoPlayerException and noDataSourceException if no player or datasource can be found.
On a headless device, these exceptions would always be thrown.
(NOTE: Additionally javax.media.Player has a state model. The most relevant states for headless devices are Unrealized and Realizing. "While Realizing, the Controller performs the communication necessary to locate all of the resources it needs to function". On a headless device, all attempts to leave the Unrealized state would fail. The player would transiently enter the Realizing state and immediately fail with a ResourceUnavailableEvent being sent to any ControllerListeners.)
Conclusion: On a headless device, there is no service for which Manager.createPlayer(..) would succeed. No spec change needed for headless JavaTV.

Appendix B. VOID

Appendix C. Package org.oipf.download

Interface ApplicationDownloadRequest

package org.oipf.download;
import java.io.RandomAccessFile;
/**
 * Represents a content download to be performed by an application.
 * Requests of this type are handled totally by an application. They are
 * created in the PENDING_NO_CONFLICT_STATE. The application handling the
 * request is responsible for downloading the content and all resulting
 * state changes. 
 * Requests of this type shall always be visible to the application specified
 * when the corresponding ApplicationDownloadSpec was created regardless of
 * recording request specific security attributes.
 * The methods defined in this class shall always fail with a ApplicationDownloadException
 * if called by any application other than the one specified when
 * the corresponding ApplicationDownloadSpec was created.
 */
public interface ApplicationDownloadRequest 
   extends org.ocap.shared.dvr.LeafRecordingRequest {
	/**
	 * Return a file to which downloaded data can be written and from
	 * which downloaded data can be read.
	 * @return a File
 	 * @throws ApplicationDownloadException if the caller is not permitted
	 * to call this method as defined above
	 */
	RandomAccessFile getFile() throws ApplicationDownloadException;
	/**
	 * Set the state of the download.
	 * @param state the new state of the recording
	 * @throws ApplicationDownloadException if the caller is not permitted
	 * to call this method as defined above
	 */
	public void setState( int state );

	/**
	 * Set the reason to use for the exception returned by getFailedException.
	 * The reason must be one valid for the constructor of
	 * RecordingFailedException.
	 * @param reason the reason to use when constructing a
	 * RecordingFailedException 
	 */
	public void setFailedReason( int reason );
}

Class LocatorDownloadSpec

package org.oipf.download;

import javax.tv.service.selection.InvalidServiceComponentException;
import javax.tv.locator.Locator;
import java.util.Date;
import org.ocap.shared.dvr.RecordingProperties;
/**
 * Specifies a recording request in terms of a Locator to a file.
 * The identified file is asynchronously downloaded from the network.
 * When instances of this class are passed to RecordingManager.record(..),
 * the following additional failure mode shall apply - if the locator 
 * does not reference a file then the record method shall throw an
 * IllegalArgumentException.
 * No additional failure modes are defined for RecordingRequest.reschedule.
 * For recording requests resulting from a recording spec of this type, 
 * downloading shall start immediately. Such recording requests will never be
 * in a pending or a IN_PROGRESS_INCOMPLETE_STATE state.
 */

public class LocatorDownloadSpec extends org.ocap.shared.dvr.RecordingSpec
{
	/**
	 * Constructor
	 * @param source Source of content to be downloaded
	 * @param properties the definition of how the recording is to be done
	 */
	public LocatorDownloadSpec(Locator source, RecordingProperties properties)
		{ super(properties); }

	/**
	 * Returns the source of the content to be downloaded 
	 * @return the source passed into the constructor
	 */
	public Locator getSource()
		{ return null; }
}

Class ApplicationDownloadException

package org.oipf.download;
/**
 * Thrown when an application calls methods on ApplicationDownloadRequest
 * which it is not permitted to call. 
 **/
public class ApplicationDownloadException extends Exception {
	/**
	 * Constructs a <code>ApplicationDownloadException</code> with <code>null</code>
	 * as its error detail message.
	 */
	public ApplicationDownloadException() { super();}

	/**
	 * Constructs a <code>ApplicationDownloadException</code> with the specified detail
	 * message. The error message string <code>s</code> can later be
	 * retrieved by the <code>{@link java.lang.Throwable#getMessage}</code>
	 * method of class <code>java.lang.Throwable</code>.
	 *
	 * @param   s   the detail message.
	 */
	public ApplicationDownloadException(String s) { super(s); }
}

Class ApplicationDownloadSpec

package org.oipf.download;
import org.dvb.application.AppID;
import org.ocap.shared.dvr.RecordingProperties;
/**
 * Represents a content download to be performed by an application.
 * The application to handle the request and the source of the content
 * to download must be specified when the request is created.
 * No other application is permitted to handle the request.
 * The format of the source must be co-ordinated between the application
 * requesting the download and the application handling the download request.
 */
public class ApplicationDownloadSpec extends org.ocap.shared.dvr.RecordingSpec {
	/**
	 * Create a request for content download by application.
	 * @param app the application to perform the download
	 * @param source the source of the download
	 * @param properties the properties for the download
	 */
	public ApplicationDownloadSpec(AppID app, String source, 
				RecordingProperties properties)
		{super(properties);}
	/**
	 * Return the application ID specified.
	 * @return an application ID
	 */
	public AppID getAppID(){return null;}
	/**
	 * Return the source specified.
	 * @return a String
	 */
	public String getSource(){return null;}
}

Appendix D. Package org.oipf.service

Interface ServiceCreator

package org.oipf.service;
import javax.tv.locator.Locator;
import javax.tv.service.Service;
import javax.tv.locator.InvalidLocatorException;
/**
 * This interface extends javax.tv.service.SIManager with overloaded methods
 * for creating IPTV services.
 */
public interface ServiceCreator {
	/**
	 * Get a service from a locator for the streaming component
	 * and an XML AIT fragment for the application component.
	 * This permits service bound applications to be used without
	 * application signalling in-band in the A/V content. 
	 * @param locator A locator identifying a service
	 * @param ait An XML AIT fragment
	 * @return a Service
	 * @throws InvalidLocatorException If locator does not identify a valid
	 * Service. 
	 * java.lang.SecurityException If the caller does not have
	 * javax.tv.service.ReadPermission(locator).
	 */
	public abstract Service getService( Locator locator, String ait );

	/**
	 * Get a service from a piece of SDP information describing some A/V
	 * content.
	 * @param sdp the piece of SDP information
	 * @return a Service
	 * @throws InvalidLocatorException If locator n the SDP information 
	 * does not identify a valid Service. 
	 * @throws java.lang.SecurityException If the caller does not have
	 * javax.tv.service.ReadPermission for the locator in the SDP information
	 */
	public abstract Service getService( String sdp );

	/**
	 * Get a service from a piece of SDP information describing some A/V content and
	 * an XML AIT fragment for the application component. This permits service bound
	 * applications to be used without application signalling in-band in the A/V
	 * content.
	 * @param sdp the piece of SDP information
	 * @param ait An XML AIT fragment
	 * @return a Service
	 * @throws InvalidLocatorException If locator n the SDP information does not 
	 * identify a valid Service.
	 * @throws java.lang.SecurityException If the caller does not have
	 * javax.tv.service.ReadPermission for the locator in the SDP information
	 */
	public abstract Service getService( String sdp, String ait );
}

Appendix E. org.oipf.auth

Class HTTPDigestCredentials

package org.oipf.auth;
/**
 * Credentials to be used
 */
public class HTTPDigestCredentials extends UserCredentials
{
	/**
	 * Create an HTTPDigestCredentials.
	 * @param domain the domain
	 * @param realm	the realm
	 * @param username the username
	 * @param password the password
	 */
	public HTTPDigestCredentials( String domain, String realm, String username,
		String password ) {super(domain);}
	/**
	 *
	 */
	public String getRealm(){return null;}
	/**
	 *
	 */
	public String getUsername() {return null;}
	/**
	 *
	 */
	public String getPassword() { return null;}

}

Class UserAuthenticationPermission

package org.oipf.auth;
/**
 * This class represents a Permission to access user authentication information
 * for a particular domain.
 * The name string is a fully qualified domain name. The actions string is unused.
 */
public final class UserAuthenticationPermission extends java.security.BasicPermission {
	/**
	 * Creates a new UserAuthenticationPermission.
	 */
	public UserAuthenticationPermission() {super("toto");}

	/**
	 * Creates a new UserAuthenticationPermission. 
	 * The actions string is currently unused and should be null.
	 * The name string shall be a fully qualified domain name.
	 * @param name the name of the permission
	 * @param actions the actions string
	 */
	public UserAuthenticationPermission(String name, String actions)
		{super(name);}

	/**
	 * Returns the list of actions that had been passed to the
	 * constructor - it shall return null.
	 *
	 * @return a null String.
 	 */
	public String getActions() { return null;}

	/**
	 * Checks if this UserAuthenticationPermission object "implies" the 
	 * specified permission. 
	 * @param permission the specified permission to check.
	 * @return true if and only if the specified permission is an instanceof
	 * and the domain in this object domain-matches
	 * the domain in the specified permission as defined by RFC2965.
	 */
	public boolean implies(java.security.Permission permission) {return true;}

	/**
	 * Checks for equality against this UserAuthenticationPermission object. 
 	 * @param obj the object to test for equality with this 
	 * UserAuthenticationPermission object.
	 * @return true if and only if obj is an UserAuthenticationPermission and 
	 * the two domain names are equal.
	 */
	public boolean equals(Object obj) { return true;}

	/**
	 * Returns the hash code value for this object.
	 * @return the hash code value for this object.
	 */
	public int hashCode() { return 0 ;}
}

Class UserAuthenticationManager

package org.oipf.auth;
/**
 *
 */
public class UserAuthenticationManager {
	/*
	 */
	private UserAuthenticationManager() {}

	/**
	 * Return a UserAuthenticationManager
	 * @return a UserAuthenticationManager
	 */
	public static UserAuthenticationManager getUserAuthenticationManager()
		{return null;}
	/**
	 * Get credentials which authenticate the current user to the specified
	 * domain.
	 * @param domain the domain
	 * @return an array of credentials objects
	 * @throws SecurityException if the calling application does not have
	 * UserAuthenticationPermission for the domain
	 */
	public UserCredentials[] getCredentials( String domain ) { return null;}

	/**
	 * Set credentials
	 * @param credentials the credentials to set
	 * @throws SecurityException if the calling application is not permitted
	 * to set credentials for the domain
	 */
	public void setCredentials( UserCredentials credentials ){}
} 

Class UserCredentials

package org.oipf.auth;
/**
 * Base class for different kinds of credentials
 */
public abstract class UserCredentials
{
	/**
	 * Create a UserCredentials
	 * @param domain the domain to which the credentials apply
	 */
	public UserCredentials( String domain ){}
	/*
	 * Return the domain for which a set of credentials apply
	 * @return a domain
	 */
	public String getDomain() { return null ; }
} 

Class CookieCredentials

package org.oipf.auth;
import java.util.Date;
/**
 * Represents a HTTP Cookie.
 * This class is purely a container for the information passed in
 * through the constructor. No checking of the information is
 * performed. The accessor methods return the values passed in
 * through the constructor.
 */
public class CookieCredentials extends UserCredentials
{
	/**
	 * Construct a cookie
	 * @param domain the domain to which the cookie is sent
	 * @param path the path within the domain 
	 * @param name the name of the cookie
	 * @param value the value of the cookie
	 * @param expiry the expiry date of the cookie or null if none is set
	 */
	public CookieCredentials( String domain, String path, String name,
			String value, Date expiry )
		{super(domain); 	}
	/**
	 * return the name of the cookie
	 * @return the name as passed to the constructor
	 */
	public String getName() { return null;}
	/**
	 * return the value of the cookie
	 * @return the value as passed to the constructor
	 */
	public String getValue() { return null;}
	/**
	 * return the expiry date of the cookie
	 * @return the expiry date of the cookie or null if none is set
	 */
	public Date getExpiry() { return null;}
	/**
	 * return the path of the cookie
	 * @return the path as passed to the constructor
	 */
	public String getPath() { return null;}
} 

Appendix F. org.oipf.uiserver

Class UIServerManager

package org.oipf.uiserver;
/**
 * Enables applications to register as providing a remote UI.
 * This class is intended to be used as follows;>
 * - The application starts listening on one or more ports.
 * - For each service offered, the application constructs URLs
 *   from the IP address of the device, the port number and any 
 *   path element used by the application.
 * - For each service offered, the application constructs XML
 *   fragments as specified by CEA-2014.
 * - The remote UIs provided by all registered applications are combined
 *   into a single remote UI listing as defined by CEA-2014.
 * - The results are made available to remote UI clients as defined
 *   by CEA-2014.
 * 
 */
public class UIServerManager {
	/*
	 * Private constructor to stop javadoc generating one.
	 */
	private UIServerManager() {}
	/**
	 * Obtain a UIServerManager
	 */
	public static UIServerManager getManager(){ return null;}
	/**
	 * Register as providing a remote UI service.
	 * @param desc the entry for the service or services available on
	 * this port formatted according to CEA-2014.
	 * @throws IllegalArgumentException if there are errors in the 
	 * descriptions provided
	 */
	public void registerUIServer( String desc[]){}
	/**
	 * Unregister from providing a remote UI service
	 */
	public void unregisterUIServer(){}
}

Appendix G. org.oipf.drm

The DRM Systems names are defined as URNs with the DVB CA System ID (16 bit number) in there. A DRM System name shall be signaled by prefixing the decimal number format of CA_System_ID with "urn:dvb:casystemid:" as defined for the DRMSystemID attribute in [OIPF_META2]. Note that the decimal number format of CA_System_ID shall not have leading zeroes.

Class DRMAgentEvent

package org.oipf.drm;
/**
 * The <code>DRMAgentEvent</code> class reports events from
 * a DRM system.
 * @since   Release 1
 */
public class DRMAgentEvent extends java.util.EventObject{
	/**
	 * ID indicating the cause of the event was 
	 * success of a message sent to a DRM agent.
	 */
	static public final int SUCCESS = 0;
	/**
	 * ID indicating the cause of the event was
	 * failure of a message sent to a DRM agent
	 */
	static public final int FAILURE = 1;
	/**
	 * ID indicating the cause of the event 
	 * was something other than a message sent
	 * to a DRM Agent using this package.
	 */
	static public final int OTHER = 2;

	/**
	 * Reason for failure events - cannot process request.
	 * The request failed because the DRM agent was unable to 
	 * complete the necessary computations in the time allotted.
	 */
	static public final int TIMEOUT = 1;
	/**
	 * Reason for failure events - Unknown MIME type.
	 * The request failed because the specified Mime Type is 
	 * unknown for this DRM system.
	 */
	static public final int UNKNOWN_TYPE = 2;
	/**
	 * Reason for failure events - User Consent Needed.
	 * The request failed because user consent is needed for that action.
	 */
	static public final int USER_CONSENT = 3;
	/**
	 * Reason for failure events - other unspecified reason
	 * The request failed because an unspecified error occurred.
	 */
	static public final int UNSPECIFIED = 4;

	/**
	 * Create a new DRMAgentEvent object.
	 *   
	 * @param cause ID indicating the cause of the event being sent
	 * @param reason For FAILURE events, the reason for the failure, otherwise 0.
	 * @param source the DRM agent which is the source of the event
	 * @param msgID for SUCCESS or FAILURE events, the message id returned
	 * when the corresponding message was sent to the DRM agent otherwise
	 * null.
	 */
	public DRMAgentEvent(DRMAgent source, int msgID, int cause, int reason )
		{super((Object)source);}

	/**
	 * gets the message ID
	 * @return the message ID as passed to the class constructor
	 */
	public int getMsgID(){return 0;}

	/**
	 * gets the cause of the event
	 * @return one of the cause constants as defined in this class
	 */
	public int getCause(){return 0;}

	/**
	 * gets the reason for a failure
	 * @return one of the reason constants as defined in this class
	 */
	public int getReason(){return 0;}
}

Class DRMAgentPermission

package org.oipf.drm;

/**
 * This class represents a Permission to exchange messages with a DRM system.
 * The name string can be either a comma separated list of DRM system names
 * or "*". The actions string is unused.
 */
public final class DRMAgentPermission extends java.security.BasicPermission {
	/**
	 * Creates a new DRMAgentPermission.
	 */
	public DRMAgentPermission()
	{super("toto");}

	/**
	 * Creates a new DRMAgentPermission. 
	 * The actions string is currently unused and should be null. The name string 
	 * shall be either a comma separated list of DRM  * system names or "*".
	 * @param name the name of the permission
	 * @param actions the actions string
	 */
	public DRMAgentPermission(String name, String actions) {super(name);}

	/**
	 * Returns the list of actions that had been passed to the
	 * constructor - it shall return null.
	 *
	 * @return a null String.
 	 */
	public String getActions() { return null;}

	/**
	 * Checks if this DRMAgentPermission object "implies" the specified permission. 
	 * @param permission the specified permission to check.
	 * @return true if and only if the specified permission is an instanceof
	 * DRMAgentPermission
	 */
	public boolean implies(java.security.Permission permission) {return true;}

	/**
	 * Checks for equality against this DRMAgentPermission object. 
	 *
 	 * @param obj the object to test for equality with this DRMAgentPermission object.
	 * @return true if and only if obj is an DRMAgentPermission
	 */
	public boolean equals(Object obj) { return true;}

	/**
	 * Returns the hash code value for this object.
	 *
	 * @return the hash code value for this object.
	 */
	public int hashCode() { return 0;}
}

Interface DRMAgentListener

package org.oipf.drm; 
import java.util.*;

/**
 * The <code>DRMAgentListener</code> class allows an
 * application to be told about asynchronous events relating
 * to a DRM system. When a message is sent to a DRM agent,
 * success is always reported asynchronously and errors which
 * cannot be detected immediately are also reported asynchronously.
 *
 * @since   Release 1
 */  
public interface DRMAgentListener extends EventListener{
 	/**
	 * An operation triggered by a message sent through
	 * the DRMAgent has succeeded.
	 * @param resultMsg the DRM specific message result
	 * @param msgID the message ID provided when the message
	 * which triggered this operation was sent to the DRM agent
	 */
	public void success(String resultMsg, String msgID );

	/**
	 * An operation triggered by a message sent through the
	 * DRMAgent has failed.
	 * @param reason the reason for the failure
	 * @param msgID the message ID provided when the message
	 * which triggered this operation was sent to the DRM agent
	 */
	public void failed( String reason, String msgID );

	/**
	 * An event has happened unrelated to a message sent through
	 * the DRMAgent.
	 * @param evt the event
	 */
	public void receive( DRMAgentEvent evt );
}

Class DRMAgent

package org.oipf.drm;
import java.io.IOException;
/**
 * Represents a generic DRM Agent.
 */
public class DRMAgent {
	/*
	 * private constructor
	 */
	private DRMAgent(){}
	/**
	 * Obtain a DRM agent
	 * @param name the name of the DRM system to obtain an agent for
	 * @return a DRMAgent or null if the named DRM system is not supported
 	 * @throws SecurityException if the DRM system is supported but the
	 * calling application does not have either DRMAgentPermission with
	 * the name of the system or with "*"
	 */
	public static DRMAgent getAgent(String name){ return new DRMAgent(); }

	/**
	 * Obtain the list of supported DRM systems.
	 * @return an array of DRM system names. If no DRM systems are supported
	 * then an array of length zero shall be returned.
	 */
	public static String[] getAgents() { return null ; }
	/**
	 * Send a message to a DRM agent.
	 * @param 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)
	 * @param message The message to be provided to the underlying DRM agent
	 * formatted according to the message type as indicated by msgType
	 * @throws DRMAgentException If the message cannot be processed and this
	 * can be determined immediately without any network access. For example,
	 * a syntax error in the message.
	 * @return an ID which shall be part of all events associated with this message.
	 */
	public int sendMessage(String msgType, String message) 
		throws DRMAgentException { return 0; }

	/**
	 * Fetch a message from the network and send it to a DRM agent.
	 * Failure to process the message is reported asynchronously.
	 * @param message the URL of the message to fetch
	 * @param msgID A unique ID to identify the message, to be provided as
	 * part of all events posted as a consequence of this message
	 * @throws java.io.IOException if the message cannot be fetched
	 */
	public void fetchAndSendMessage(java.net.URL message, String msgID) 
		throws IOException {}

	/**
	 * Add a listener for DRMAgent events. 
	 * If the listener is already added then this method has no effect.
	 * @param l the listener to add
	 */
	public void addListener( DRMAgentListener l) {}

	/**
	 * Remove a listener for DRMAgent events.
	 * If the listener is not added then this method has no effect.
	 * @param l the listener to remove
	 */
	public void removeListener( DRMAgentListener l) {}
}

Class DRMAgentException

package org.oipf.drm; 
/**  
  * The <code>DRMAgent</code> exception is thrown if a   
  * message to be sent to a DRM agent contains an error and this can
  * be immediately detected. For example, a syntax error.
  * 
  * @since   Release 1
 */ 
public class DRMAgentException extends Exception { 	
    /*
     *
     * Construct a DRMAgentException with no detail message
     */
    public DRMAgentException() {} 
    /*
     *
     * Construct a DRMAgentException with a detail message
     * @param s detail message
     */
    public DRMAgentException(String s) {} 
}

Class DRMRightsErrorEvent

package org.oipf.drm;
/**
 * Represents an error event raised when a player
 * tries to play a protected content without a license
 * or with an invalid license 
 */
public class DRMRightsErrorEvent extends ControllerErrorEvent {
	/**
	 *  errorState valid values
	 */
	static public final int NOLICENSE = 0;
	static public final int LICENSEINVALID = 1;

	protected Integer errorState;

	/**
	 * The unique identifier of the protected content in the scope of the DRM
	 * system that raises the error
	 */
	protected String contentID;

	/**
	 * The DRM System name 
	 */
	protected String DRMSystemName;

	/**
	 * The rightsIssuerUrl optional element indicating the URL that
	 * can be used to non-silently obtain the rights for the content 
	 * item currently being played for which this DRM error is generated 
	 */
	protected String rightsIssuerUrl;

	/**
	 * Constructor
	 */
	public DRMRightsErrorEvent (Controller from, String message, Integer errorState,
			String contentID, String DRMSystemID, String rightsIssuerUrl) {
		super(from, message);
	}

	/**
	 * Gets the errorState value
	 * @return errorState describing the current state (NOLICENSE or LICENSEINVALID).
	 */
	public Integer getErrorState() {return errorState;}

	/**
	 * Gets the contentID value
	 * @return contentID of the content.
	 */
	public Integer getContentID () {return contentID;}

	/**
	 * Gets the DRM System name value 
	 * @return DRM System name describing the DRM System that generated
	 * the error.
	 */
	public String getDRMSystemID () {return DRMSystemID;}

	/**
	 * Gets the rightsIssuerUrl value
	 * @return rightsIssuerUrl for license retrieval.
	 */
	public String getRightsIssuerUrl () {return rightsIssuerUrl;} 
} 

Appendix H. org.oipf.pvr

Class RecordingAccessPermissions

package org.oipf.pvr;

/**
 * This class encapsulates permissions to access recordings.
 * World means all applications authorised to access persistent storage.
 * Owner means the application which created the file. Organisation is defined
 * as applications with the same organisation id as defined elsewhere in the
 * present document.
 * Additionally other organisation_ids may be permitted without providing world access.
 */

public class RecordingAccessPermissions extends org.dvb.io.persistent.FileAccessPermissions {
	
	/**
	 * This constructor encodes all the file access permissions as a set of booleans.
 	 *
	 * @param readWorldAccessRight read access for all applications
	 * @param writeWorldAccessRight write access for all applications
	 * @param readOrganisationAccessRight read access for organisation
	 * @param writeOrganisationAccessRight write access for organisation
	 * @param readApplicationAccessRight read access for the owner
	 * @param writeApplicationAccessRight write access for the owner
	 * @param readWhiteList read access for applications from these organisations
	 * @param writeWhiteList write access for applications from these organisations
	 */
	public RecordingAccessPermissions(boolean readWorldAccessRight, 
			boolean writeWorldAccessRight, 
			boolean readOrganisationAccessRight, 
			boolean writeOrganisationAccessRight,
			boolean readApplicationAccessRight, 
			boolean writeApplicationAccessRight,
			int[] readWhiteList, int[] writeWhiteList) 
		{ super(readWorldAccessRight, writeWorldAccessRight,
		readOrganisationAccessRight, writeOrganisationAccessRight,
		readApplicationAccessRight, writeApplicationAccessRight); }
	
	/**
	 * Query whether this permission includes read access for the organisation
	 * @param org_id the organisation
	 * @return true if applications in this organisation can have read access, 
	 *  otherwise false.
	 */
	public boolean hasReadOrganisationAccessRight(int org_id) {return false;}
	
	/**
	 * Query whether this permission includes write access for the organisation
	 * @param org_id the organisation
	 * @return true if applications in this organisation can have read access, 
	 *  otherwise false.
	 */
	public boolean hasWriteOrganisationAccessRight(int org_id) {return false;}
}

Class RecordingProperties

package org.oipf.pvr;

/**
 * Encapsulates the details about how a recording is to be made.
 */

public class RecordingProperties extends org.ocap.shared.dvr.RecordingProperties { 
	/**
	 * Constructor
	 * @param expirationPeriod the period in seconds after the initiation of
	 * recording when leaf recording requests with this recording
	 * property are deemed as expired.
	 * @param validityPeriod the period in seconds after the registration of the
	 * RecordingRequest before which recordings which have not been completed
	 * successfully shall not be discarded.
	 * @param requestedRecording the recording access permissions for recording
	 * requests
	 * @param completedRecording the recording access permissions for completed
	 * recordings
	 * @param priority the priority of this recording request
	 * @throws IllegalArgumentException if the expirationPeriod or the validityPeriod 
     * is negative
 	 */
	public RecordingProperties(long expirationPeriod,
		long validityPeriod, RecordingAccessPermissions requestedRecording,
		RecordingAccessPermissions completedRecording, int priority)
		throws IllegalArgumentException
	{
		super(expirationPeriod);
	}
	/**
	 * Return the period in seconds after the registration of
	 * the <code>RecordingRequest</code> after which recordings which have
	 * not been completed successfully should be discarded.
	 * Implementations may impose a upper bound on the validity period and 
	 * cap the validity period requested to that upper bound.
	 * @return the validity period that will be used for the recording
	 * after capping to any implementation defined upper bound
	 */
	public long getValidityPeriod() {return 0;}
	/**
	 * Return the recording access permissions for recording requests.
	 * @return the recording access permissions for recording requests
	 */
	public RecordingAccessPermissions getRequestedRecordingPermissions(){return null;}
	/**
	 * Return the recording access permissions for completed recordings
	 * @return the recording access permissions for completed recordings
	 */
	public RecordingAccessPermissions getCompletedRecordingPermissions() 
		{return null;}
	/**
	 * Return the priority for this recording request.
	 * @return the priority for this recording request.
	 */
	public int getPriority(){return 0;}
}