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();
};
};