B.3 IDL for Media Streaming Service API

26.3473GPPApplication Programming Interface and URLMultimedia Broadcast/Multicast Service (MBMS)Release 17TS

#include "EmbmsCommonTypes.idl"

module StreamingService

{

//Forward Declaration

interface ILTEStreamingServiceCallback;

/**

* @name StreamingErrorCode

* @brief List of the errors for streaming service

*/

enum StreamingErrorCode

{

STREAMING_INVALID_SERVICE, /**< Invalid service ID */

STREAMING_UNKNOWN_ERROR /**< Unknown error */

};

/**

* @name StalledReasonCode

* @brief List of the reasons for streaming service stalled notification

*/

enum StalledReasonCode

{

RADIO_CONFLICT, /**< Radio frequency conflict */

END_OF_SESSION, /**< End of session schedule */

OUT_OF_COVERAGE, /**< Out of EMBMS coverage */

OUT_OF_SERVICE, /**< Out of service */

BEARER_UNAVAILABLE, /**< Bearer not available */

STALLED_UNKNOWN_REASON /**< Unknown reason */

};

/**

* @name RegisterStreamingAppData

* @brief Streaming app registration information

*/

struct RegisterStreamingAppData

{

string appId; /**< The application ID used during the registration */

any platformSpecificAppContext; /**< The platformSpecificAppContext provides

a platform-specific app context

object to enable the API implementation to get extra information

about the application. */

sequence<string> serviceClassList; /**< List of service classes */

};

/**

* @name StreamingServiceClassList

* @brief ServiceClass information which the app is interested in. It is for setStreamingServiceClassFilter API.

*/

typedef sequence<string> StreamingServiceClassList;

/**

* @name ServiceNameLang

* @brief Name and language information

*/

struct ServiceNameLang

{

string name; /**< Name */

string lang; /**< Language */

};

/**

* @ ServiceMimeType mimetype of the Manifest

* @ ManifestURI Manifest URI used by VIDEO player n

*/

struct ServiceFormat

{

string ServiceMimeType; /**< mimetype of the Manifest */

string ManifestURI; /**< Manifest URI used by VIDEO player */

};

/**

* @name StreamingServiceInfo

* @brief Streaming service information

*/

struct StreamingServiceInfo

{

sequence<ServiceNameLang> serviceNameList; /**< List of Service name and language */

string serviceClass; /**< Service class */

string serviceId; /**< Service ID */

string serviceLanguage; /**< Service language */

EmbmsCommonTypes::ServiceAvailabilityType serviceBroadcastAvailability; /**< Service availability */

sequence<ServiceFormat> ServiceFormatList; /**< A list of possible format for the service */ EmbmsCommonTypes::Date activeServicePeriodStartTime; /**< The current/next active file download service start time, when files

start being broadcast over the air */

EmbmsCommonTypes::Date activeServicePeriodEndTime; /**< The current/next active file download service end time, when files

stop being broadcast over the air */

sequence<long> SAIList; /**< Servcie Area IDs based on current location of the device*/

};

/**

* @name StreamingServices

* @brief List of streaming service info objects

*/

typedef sequence<StreamingServiceInfo> StreamingServices;

/**

* @name StartStreamingServiceData

* @brief Start streaming service information. It is used by StartStreamingService API.

*/

struct StartStreamingServiceData

{

string serviceId; /**< Streaming service Id from StreamingServiceInfo */

};

/**

* @name StopStreamingServiceData

* @brief Stop streaming service information.

* It is used by the StopStreamingService API.

*/

struct StopStreamingServiceData

{

string serviceId; /**< Streaming service ID from StreamingServiceInfo */

};

/**

* @name ServiceStartedNotification

* @brief Streaming service started information. It is used by the ServiceStartedNotification API.

*/

struct ServiceStartedNotification

{

string serviceId; /**< Streaming service Id from StreamingServiceInfo */

};

/**

* @name ServiceStoppedNotification

* @brief Streaming service stopped information. It is used by the ServiceStoppedNotification API.

*/

struct ServiceStoppedNotification

{

string serviceId; /**< Streaming service Id from StreamingServiceInfo */

};

/**

* @name StreamingServiceErrorNotification

* @brief Streaming service error information. It is used by the StreamingServiceErrorNotification API.

*/

struct StreamingServiceErrorNotification

{

string serviceId; /**< Streaming service Id from StreamingServiceInfo */

StreamingErrorCode errorCode; /**< Streaming service error Id */

string errorMsg; /**< error message */

};

/**

* @name ServiceStalledNotification

* @brief Streaming service stalled information. It is used by the ServiceStalledNotification API.

*/

struct ServiceStalledNotification

{

string serviceId; /**< Streaming service ID from StreamingServiceInfo */

StalledReasonCode reason; /**< Streaming service stalled reason ID */

};

/**

* @name RegisterStreamingResponseNotification

* @brief Streaming app registeration response information

*/

struct RegisterStreamingResponseNotification

{

EmbmsCommonTypes::RegResponseCode value; /**< Result of registeration value as defined in RegResponseCode */

string message; /**< message described the result */

};

interface ILTEStreamingService

{

/**

@name getVersion

@brief Retrieves the version of the current Streaming service interface implementation

@return Interface version

**/

string getVersion();

/**

@name registerStreamingApp

@brief Application registers a callback listener with the EMBMS client

@param[in] regInfo information required for application registration.

@param[in] cb callback listener

@see RegisterStreamingAppData

@see registerStreamingResponse()

@return ResultCode

**/

EmbmsCommonTypes::ResultCode registerStreamingApp(in RegisterStreamingAppData regInfo, in ILTEStreamingServiceCallback callBack);

/**

@name deregisterStreamingApp

@brief Application deregisters with the EMBMS client

@pre Application calls register

@return ResultCode

**/

EmbmsCommonTypes::ResultCode deregisterStreamingApp();

/**

@name startStreamingService

@brief Start download of segments of streaming service over broadcast

@param[in] StartStreamingService Parameters for starting the streaming services API

@pre Application is registered for streaming service

@see StartStreamingServiceData

@see serviceStarted()

@see streamingServiceError()

@return ResultCode

**/

EmbmsCommonTypes::ResultCode startStreamingService(in StartStreamingServiceData serviceInfo);

/**

@name stopStreamingService

@brief Stop download of segments of Streaming service over broadcast

@param[in] StopMedia Service Parameters for starting the streaming services API

@pre Application is registered for Media service

@see serviceStopped()

@see StopStreamingServiceData

@return ResultCode

**/

EmbmsCommonTypes::ResultCode stopStreamingService(in StopStreamingServiceData serviceInfo);

/**

@name setStreamingServiceClassFilter

@brief Application sets a filter on streaming services in which it is interested

@param[in] serviceClassInfo List of service class filters requested by the application

@pre Application is registered successfully with streaming service

@see serviceUpdate()

@see getStreamingServices()

@return ResultCode

**/

EmbmsCommonTypes::ResultCode setStreamingServiceClassFilter(in StreamingServiceClassList serviceClassList);

/**

@name getStreamingServices

@brief Retrieves the list of streaming services defined in the USD.

List of services is filtered by the service class filter,

if a filter has been set by the application.

@param[out] StreamingServices List of filtered streaming services

@pre Application is registered for streaming service and received streamingServiceListUpdate notification

@see StreamingServices

@see streamingServiceListUpdate()

@return ResultCode

**/

EmbmsCommonTypes::ResultCode getStreamingServices(out StreamingServices services);

};

interface ILTEStreamingServiceCallback

{

/**

@name registerStreamingResponse

@brief The response to the application streaming service register API.

@param Notification Parameters for registering a streaming response

@pre Application called registerStreamingApp

@see RegisterStreamingResponseNotification

@see registerStreamingApp()

**/

void registerStreamingResponse(in RegisterStreamingResponseNotification info);

/**

@name serviceStarted

@brief Notification to application that streaming service is started and

media player may be initialized for playback

@param Notification Parameters for service started notification.

ServiceStartedNotification previously defined.

@pre Application is registered for streaming service and called startStreamingService

@see ServiceStartedNotification

**/

void serviceStarted(in ServiceStartedNotification notification);

/**

@name serviceStopped

@brief Notification to application that streaming service is stopped and

media player may be stopped for playback

@param Notification Parameters for service started notification

@pre Application is registered for streaming service and called stopStreamingService

@see ServiceStoppedNotification

**/

void serviceStopped(in ServiceStoppedNotification notification);

/**

@name streamingServiceError

@brief Notification to application when there is an error with broadcast download of service

@param Notification Parameters for service error notification

@pre Application is registered for streaming service and called startStreamingService

@see StreamingServiceErrorNotification

**/

void streamingServiceError(in StreamingServiceErrorNotification notification);

/**

@name serviceStalled

@brief Notification to application when there is a temporary disruption of

the broadcast download of service

@param Notification Parameters for streaming service stalled notification

@pre Application is registered for streaming service and called startStreamingService

@see ServiceStalledNotification

**/

void serviceStalled(in ServiceStalledNotification notification);

/**

@name streamingServiceListUpdate

@brief Notification to application on an update that is available for streaming services.

Update may be due to the received USD or the network configuration.

@pre Application is registered for streaming service.

@post call getStreamingServices()

**/

void streamingServiceListUpdate();

};

};