org.dvb.spi.selection

Overview | Package | Class | Use | Tree | Deprecated | Index | Help

PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES

## Package org.dvb.spi.selection

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

See:
Description

Interface Summary
SelectionProvider | A provider of service selection.
SelectionProviderContext | Platform implementations that wish to receive notifications from a `SelectionProvider` register an instance that implements this interface with the `SelectionProvider`.
SelectionSession | A session for presentation of one or more services over a period of time by a SelectionProvider.
ServiceDescription | Represents the description of a service.

Class Summary
KnownServiceReference | A reference to a service that is reached with the mediation of a SelectionProvider.
LocatorScheme | This class is used to represent a locator scheme that is supported by a SelectionProvider.
ServiceReference | A reference to a service that is reached with the mediation of a SelectionProvider.

## 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

Overview | Package | Class | Use | Tree | Deprecated | Index | Help

PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES