Package org.dvb.spi.selection

This package defines an SPI for selection of services and service components.

See: Description

Package org.dvb.spi.selection Description

This package defines an SPI for selection of services and service components. The providers defined in this package allow the presentation of services whose location is not announced using standard signalling. One a SelectionProvider has been installed, the standard MHP APIs, such as the JavaTV service selection API, can be used to present those services.

Examples of API usage

Switched Digital

The following table shows the sequence of API calls involved in a service selection operation, both API calls between an application and the implementation and between the implementation and a SelectionProvider.

The table covers both the case when the service location is known and when the location is unknown. The first column indicates if the step applies when the service location is unknown. The second column indicates whether the step applies when the service location is known. Most steps either apply in both cases at the same point in the sequence or only apply when the service location is unknown. Two steps apply in both cases but at different points in the sequence.

Unknown Service Location

Known Service Location

Step

API call by application

API call to/from provider

Y Y Provider is installed ProviderRegistry.registerSystemBound Provider.providerRegistered
Y Y Provider is initialised None SelectionProvider.init
Y Y Implementation asks provider for supported services None SelectionProvider.getServiceList()
Y Y Each supported service is merged into the service list of the receiver None Methods on each ServiceReference returned from SelectionProvider.getServiceList()
N Y Extract tuning information for service None For MHP, org.dvb.locator.FrequencyLocator#getDeliverySystemDescriptor

Some time later

Y Y Application obtains service object corresponding to locator of service SIManager.getService(LocatorFactory.createLocator( "dvb://'movie-channel-1.broadcaster-b.com'") None
Y Y Application asks for service to be presented ServiceContext.select(Service) None
Y N Create session for the presentation of the requested service. None 1) new ServiceReference(..)

2) SelectionProvider.newSession

Y N Implementation asks provider to present channel. None SelectionSession.select
Y N Provider asks head-end for channel None Existing java.net APIs
Y N Head-end returns reference to channel location None Existing java.net APIs
Y N Provider passes on reference to channel location to implementation None 1a) For MHP, new FrequencyLocator(...)

1b) For OCAP, new OCAPLocator(int frequency, int programNumber,int modulationFormat, ...)

2) Return from call to SelectionSession.select()

Y N Extract tuning information for service None For MHP, org.dvb.locator.FrequencyLocator#getDeliverySystemDescriptor
Y Y Implementation tunes to appropriate frequency etc None None
N Y Create session for the presentation of the requested service. None 1) new ServiceReference(..)

2) SelectionProvider.newSession

Y N Inform provider that implementation is ready to receive content None SelectionSession.selectionReady
Y N Provider tells server to send content Provider sends message to switched digital server Existing java.net APIs
Y Y Content arrives 1) new NormalContentEvent

2) ServiceContextListener.receiveServiceContextEvent(..)

None

Some time later

Y Y Content stops being presented (change to new channel, ...) Either none or ServiceContext.select() with a different service. SelectionSession.destroy
Y Y Content may stop being delivered Provider may tell head-end that this content is no longer needed if the head-end is counting the number of users of the content Existing java.net APIs

Copyright © 2012 CableLabs. All Rights Reserved.