All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax.tv.service.package.html Maven / Gradle / Ivy

There is a newer version: 1.3.1
Show newest version




  



Provides mechanisms for accessing the service information (SI) database
and APIs representing the SI elements it contains. The javax.tv.service
package and its sub-packages are organized into different "views" of service
information, as follows:
  • The guide package provides APIs useful for electronic program guides (EPGs), including program schedules, program events and program ratings.
  • The navigation package provides APIs to navigate through services and hierarchical service information.
  • The selection package provides a mechanism to select a service, that is, tune to a service and present its content.
  • The transport package provides information concerning the broadcast delivery mechanisms available to the receiver.
  • The top-level service package (this package) provides basic SI APIs common to the service sub-packages.
The Java TV APIs for accessing service information are intended to be used in multiple environments where various standards for service information delivery already exist. Therefore, these APIs provide a high level of abstraction from the details of over-wire protocols. Some attributes of SI elements are unique to specific SI standards or are difficult to map to a common API. In order to provide access to such attributes, the service packages define optionally implemented interfaces.

The SIManager provides the primary access point to the underlying SI database. It may be used to acquire the meta-data of an individual service and its associated SI elements. The Service interface provides the minimal information (such as a Locator, name and optionally a ServiceNumber) required to identify and select the content of a service. Such information is typically cached and readily available on a television receiver at all times. Additional information about a service can be obtained through the ServiceDetails object.

The Service interface represents DVB services, ATSC virtual channels (both PSIP and A56) or SCTE virtual channels. It provides the minimal information (such as a Locator, name, and optionally a ServiceNumber) required to identify and select the content of a service. Such information is typically cached and readily available on a television receiver at all times. Additional information about a service can be obtained through the ServiceDetails object. In contrast to the Service interface, ServiceDetails represents service meta-data that exists in the broadcast.

Cache Limitations and Asynchronous SI Retrieval

Since TV receivers are designed with varying capabilities, it is not expected that very receiver will cache all the SI data in memory. The most basic information for accessing services is likely to be cached; however, the receiver must parse the broadcast stream to acquire data that is not cached. Doing so may take a significant amount of time. Therefore the SI APIs provide means for asynchronous access to data that is likely to not be in memory at all times. All APIs prefixed with 'retrieve' return the requested data via an asynchronous callback. This functionality is provided by the SIRequestor, SIRequest and SIRetrievable interfaces. A caller of an asynchronous method registers as an SIRequestor in order to receive SIRetrievable data when it is available. The asynchronous method provides an SIRequest object to cancel the request if it is no longer needed by the caller.

Note that asynchronous SI data retrieval is only a request for information. The latencies involved in reading SI data from the broadcast stream may make retrieval of a requested SI element impractical. Failed SI retrieval is signaled through a call to SIRequestor.notifyFailure(SIRequestFailureType).

Scalability

The Java TV API defines several interfaces in the javax.tv.service.* packages to represent various forms of service information, or "SI elements", that may be encountered. Not every type of SI element may be supported in a given broadcast environment, however. In such a case, asynchronous 'retrieve' operations for unsupported SI elements will result in the failure code {@link javax.tv.service.SIRequestFailureType#DATA_UNAVAILABLE DATA_UNAVAILABLE}. Likewise, synchronous query operations will fail in a manner indicating that the requested data is unavailable.

Time Synchronization

The service information usually contains system time-related information in the form of the PSIP STT message or DVB TDT and TOT messages. It is assumed that the local TV receiver time will be synchronized with the system time of the service currently tuned and that this value can be obtained using the java.util.Date class. This is straightforward if all transport multiplexes use a reliable and synchronized data source (such as GPS). If a certain multiplex provides erroneous time information, it is up to the receiver implementation to resolve the conflict.

SI Change Notification

The SI APIs permit applications to be notified of changes to elements in the SI database. There are multiple sources of SI change notification:
  • Transport objects report changes concerning services.
  • TransportStreamCollection objects report changes concerning TransportStream information on a Transport.
  • NetworkCollection objects report changes concerning Network information on a Transport.
  • BouquetCollection objects report changes concerning Bouquet information on a Transport.
  • ServiceDetails objects report chanes conerning ServiceComponent information for individual services.
  • ProgramSchedule objects report changes detected in the program events in the schedule, including the current ProgramEvent.
An application can register as an SIChangeListener with the above listed objects to be notified with an SIChangeEvent subtype when a change occurs. The resulting SIChangeEvent will indicate the SIElement that changed in the database. Note that it may be quite difficult for the receiver to provide detailed information concerning the data that changed without a field-by-field comparison of old and new SI tables from the broadcast. The receiver may therefore choose to deliver an SIChangeEvent indicating a change at a high level in the SI hierarchy and require the application to determine the specific nature of the change.




© 2015 - 2024 Weber Informatics LLC | Privacy Policy