Every
...
API
...
maps
...
one
...
on
...
one
...
to
...
a
...
public
...
method
...
on
...
the
...
PlayerInstanceAAMP
...
class
...
declared
...
in
...
main_aamp.h
...
in
...
Aamp
...
source
...
code.
| Inline Table Editing |
|---|
| JSON-RPC method | Aamp Player Instance Method | Parameter | Result | Summary | Jsonrpc Request example | Jsonrpc response example |
|---|
| org.rdk.player.openSession |
| sessionIdinstanceId : stringappName : stringtraceUUIDstring ,
displayId : string | sessionId : stringsuccess : boolean | Open a new player session{ | "jsonrpc": "2.0", "id": 1, "123454","method": "org.rdk.player.openSession", "params": { "sessionIdinstanceId": "sess123-1232-abc321312-0013123", "appName": "MyStreamingApp", "traceUUID": "550e8400-e29b-41d4-a716-446655440000" } "displayId":"wst-mywindow"}} | {"id":"123454","jsonrpc":"2.0","result":{"sessionId":"session_1783267426","status":true}}
| | org.rdk.player.configureSession |
| sessionId : stringconfig string config : object | sessionId : stringsuccess : boolean | Apply configuration to an open session | {
"jsonrpc": "2.0",
"id": 2,
"method": "org.rdk.player.configureSession",
"params": {
"sessionId": "sess-abc-001",
"config": {
"networkTimeout": 10,
"downloadBuffer": 30,
"preferredDRM": "widevine",
"initialBitrate": 2000000
} }
}
} | { "jsonrpc": "2.0", "id": 2, "result": { "sessionId": "sess-abc-001", "success": true } } | | org.dk.player.closeSession |
| sessionId : string | success : : stringsuccess : booleansessionId: Stringsuccess : boolean | Close and release a player session | { "jsonrpc": "2.0", "id": 3, "123454","method": "org.rdk.player.closeSession", "params": { "sessionId": "sess-abc-001" } "session_1783267426"}} | {"id":"123454","jsonrpc":"2.0","result":{"message":"Session closed successfully.","status":true}} | | org.rdk.player.tuneplay | Tune | url : StringautoPlay : booleancontentType : StringtraceUUID : String autoPlay : boolean , sessionId : string | success : Stringsuccess : boolean | Instructs the AAMP to tune to the given URL. | {"jsonrpc":"2.0", "id":1,"123454","method":"org.rdk.player.tuneplay", "params":{"url":"httpshttp://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps/dash264/TestCases/1a/qualcomm/1/MultiRate.mpd","autoPlay":true,"contentType":"VOD"sessionId":"session_1783267426"}} | {"id":"123454","jsonrpc":"2.0","result":{"message":"Content playback started.","status":true}} | | org.rdk.player.stop | StopNone | sessionId : string | success :boolean | Stops the current playback and releases decoder resources. The player returns to the idle state. | {"jsonrpc":"2.0", "id":1"123454","method":"org.rdk.player.stop", "params":{"sessionId":"session_1783267426"}} | {"jsonrpc":"2.0","id":5,"result":{"success":true}} | | org.rdk.player.seek | Seek | position : numberkeepPaused : boolean , sessionId : string | success : boolean | Seeks to an absolute position in the stream | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.seek","params":{"sessionId":"sess-abc-001","position":120.0,"keepPaused":false}} | {"jsonrpc":"2.0","id":5,"result":{"success":true}} | | org.rdk.player.seekToLive | SeekToLive | keepPaused : boolean , sessionId : string | success | org.rdk.player.seekToLive | SeekToLive | keepPaused : boolean | success : boolean | Seek to the live edge | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.seekToLive","params":{"keepPaused":false,"sessionId":"session_1783267426"}} | {"jsonrpc":"2.0","id":1,"result":{"success":true}} | | org.rdk.player.setRate | SetRate | rate : number overshootCorrection : integer , sessionId : string | success: boolean | Set playback rate / trick-play speed | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setRate","params":{"rate":2,"overshootCorrection":0,"sessionId":"session_1783267426"}} | {"jsonrpc":"2.0","id":1,"result":{"success":true}} | | org.rdk.player.setPlaybackSpeed | SetPlaybackSpeed | speed : number , sessionId : string | success: boolean | Sets the playback speed directly | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setPlaybackSpeed","params":{"speed":0.5,"sessionId":"session_1783267426"}} | {"jsonrpc":"2.0","id":1,"result":{"success":true}} | | org.rdk.player.pauseAt | PauseAt | position : number , sessionId : string | success : boolean | Schedule a pause at a future position | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.pauseAt","params":{"position":300.0}},"sessionId":"session_1783267426"}} | {"jsonrpc":"2.0","id":1,"result":{"success":true}} | | org.rdk.player.setRateAndSeek | SetRateAndSeek | rate : integer position : number , sessionId : string | success:boolean | Atomically set rate and seek | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setRateAndSeek","params":{"rate":1,"position":60.0,"sessionId":"session_1783267426"}} | {"jsonrpc":"2.0","id":1,"result":{"success":true}} | | org.rdk.player.getState | GetStateNone | sessionId : string | state : PlayerState | Get current player state | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.getState"," } | org.rdk.player.getPlaybackPosition | GetPlaybackPosition | None | position : Number | Get current playback position | params":{"sessionId":"sess-abc-001"}} | {"jsonrpc":"2.0","id":1,"method"result":{"state":"org.rdk.player.getPlaybackPosition"playing"}} | | org.rdk.player.getPlaybackDurationgetPlaybackPosition | GetPlaybackDurationGetPlaybackPosition | None | sessionId : string | position duration : Number | Get total stream durationcurrent playback position | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. getPlaybackDuration"} | org.rdk.player.getPlaybackRate | GetPlaybackRate | None | rate : Number | Get current playback rate | getPlaybackPosition","params":{"sessionId":"sess-abc-001"}} | {"jsonrpc":"2.0","id":1,"methodresult":{"position"org.rdk.player.getPlaybackRate":120.5}} | | org.rdk.player.isLivegetPlaybackDuration | IsLiveGetPlaybackDuration | None | isLive :Boolean | sessionId : string | duration : Number | Get total stream durationCheck if stream is live | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. isLive"} | org.rdk.player.setVideoMute | SetVideoMute | muted : boolean | success : BooleangetPlaybackDuration","params":{"sessionId":"sess-abc-001"}} | Mute or unmute the video plane | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setVideoMute","paramsresult":{"mutedduration":true3600.0}} | | org.rdk.player.getVideoMutegetPlaybackRate | GetVideoMuteGetPlaybackRate | None | sessionId : string | rate : Number | Get current playback ratemuted : BooleanGet video mute state | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. getVideoMute"} | org.rdk.player.setAudioVolume | SetAudioVolume | volume : integer | success : BooleangetPlaybackRate","params":{"sessionId":"sess-abc-001"}} | {"jsonrpc": | Set audio volume | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setAudioVolume","paramsresult":{"volumerate":801.0}} | | org.rdk.player.getAudioVolumeisLive | GetAudioVolumeIsLive | None | volume : IntegersessionId : string | isLive :Boolean | Check if stream is live | Get audio volume | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. getAudioVolume"} | org.rdk.player.getAudioLanguage | GetAudioLanguage | None | language : string | org.rdk.player.getAvailableAudioTracks | GetAvailableAudioTracks | allTracks boolean | tracks :AudioTrack[] | List available audio tracks isLive","params":{"sessionId":"sess-abc-001"}} | {"jsonrpc":"2.0","id":1,"methodresult":"org.rdk.player.getAvailableAudioTracks","params":{"allTracksisLive":false}} | | org.rdk.player.setAudioTracksetVideoMute | SetAudioTrack | SetVideoMute | muted : boolean , sessionId : stringtrackId : integer | success :
BooleanSelect an audio track by index | Mute or unmute the video plane | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. setAudioTracksetVideoMute","params":{ "trackId"sessionId":"sess-abc-001","muted": 1true}} org.rdk.player.getAudioTrack | GetAudioTrack | None | trackId:integer | Get index of active audio track | {"jsonrpc":"2.0","id":1,"methodresult":"org.rdk.player.getAudioTrack"{"success":true}} | | org.rdk.player.getAudioTrackInfogetVideoMute | GetAudioTrackInfoGetVideoMuteNone | sessionId : stringtrackInfo | muted :AudioTrack
Boolean | Get video mute stateGet details of active audio track | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. getAudioTrackInfo"} | org.rdk.player.setSubtitleMute | SetSubtitleMute | muted: boolean | success: boolean | Mute or unmute subtitles getVideoMute","params":{"sessionId":"sess-abc-001"}} | {"jsonrpc":"2.0","id":1,"methodresult":"org.rdk.player.setSubtitleMute","params":{"muted":truefalse}} | | org.rdk.player.getAvailableTextTrackssetAudioVolume | GetAvailableTextTracks | SetAudioVolume | volume : integer , sessionId : string | success allTracks : boolean tracks : TextTrack[]List available text/subtitle tracks Boolean | Set audio volume | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. getAvailableTextTrackssetAudioVolume","params":{" allTracks":false}} | org.rdk.player.setTextTrack | SetTextTrack | trackId : integer | success : boolean | Select a text track by index sessionId":"sess-abc-001","volume":80}} | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setTextTrack","params"result":{"trackIdsuccess":0true}} | | org.rdk.player.getTextTrackgetAudioVolume | GetTextTrackGetAudioVolume | None | trackId : integer | sessionId : string | volume :
Integer | Get audio volumeGet index of active text track | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. getTextTrack"} | org.rdk.player.getVideoBitrate | GetVideoBitrate | None | bitrate : integer | Get current video bitrate | getAudioVolume","params":{"sessionId":"sess-abc-001"}} | {"jsonrpc":"2.0","id":1,"methodresult":"org.rdk.player.getVideoBitrate"}{"volume":80}} | | org.rdk.player.setVideoBitrategetAudioLanguage | SetVideoBitrateGetAudioLanguage | bitrate sessionId : integerstring | success : boolean | Lock the video bitratelanguage : string |
| {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setVideoBitrategetAudioLanguage","params":{"bitratesessionId":2000000"sess-abc-001"}} | org.rdk.player.getVideoBitrates | GetVideoBitrates | None | bitrates : integer[] | | List all available video bitrates | {"jsonrpc":"2.0","id":1,"result":{"methodlanguage":"org.rdk.player.getVideoBitrates"en"}} | org.rdk.player.setInitialBitrategetAvailableAudioTracks | SetInitialBitrateGetAvailableAudioTracks | bitrateallTracks : integersuccess boolean , sessionId : booleanstring | tracks :AudioTrack[] | List available audio tracksSet the startup bitrate hint | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setInitialBitrategetAvailableAudioTracks","params":{"bitrate"sessionId":"sess-abc-001","allTracks":2000000false}} | org.rdk.player.getInitialBitrate | getInitialBitrat | None | bitrate : integer | Set the startup bitrate hint | {"jsonrpc":"2.0","id":1,"methodresult":"org.rdk.player.getInitialBitrate"} | org.rdk.player.setMinimumBitrate | SetMinimumBitrate | bitrate : integer | success : boolean | Set the ABR minimum bitrate floor | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setMinimumBitrate","params":{"bitrate":800000}} | org.rdk.player.getMinimumBitrate | GetMinimumBitrate | None | bitrate : integer | Get the ABR minimum bitrate floor | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.getMinimumBitrate"} | org.rdk.player.setMaximumBitrate | SetMaximumBitrate | bitrate : integer | success : boolean | Set the ABR maximum bitrate ceiling | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setMaximumBitrate","params":{"bitrate":8000000{"tracks":[{"index":0,"language":"en","rendition":"main","label":"English","codec":"mp4a.40.2","type":"AUDIO_STEREO","channels":2,"bitrate":128000},{"index":1,"language":"fra","rendition":"main","label":"French","codec":"mp4a.40.2","type":"AUDIO_STEREO","channels":2,"bitrate":128000}]}} | org.rdk.player.getMaximumBitratesetAudioTrack | getMaximumBitrate | SetAudioTrack | trackId : integer , sessionId : string | success :
Boolean | Select an audio track by indexNone bitrate : integer Get the ABR maximum bitrate ceiling | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.getMaximumBitrate"} setAudioTrack","params":{"sessionId":"sess-abc-001","trackId":1}} | {"jsonrpc":"2.0","id":1,"result":{"success":true}} | orgrg.rdk.player.setLicenseServerURLgetAudioTrack | SetLicenseServerURLGetAudioTrack | urlsessionId : stringsuccess | trackId: boolean integer | SetGet theindex DRMof licenseactive serveraudio URLtrack | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setLicenseServerURLgetAudioTrack","params":{"urlsessionId":"https://license.example.com/widevinesess-abc-001"}}org.rdk.player.getDRM
| GetDRM | None drm : string Get active DRM system {"jsonrpc":"2.0","id":1,"methodresult":"org.rdk.player.getDRM"{"trackId":0}} | org.rdk.player.setPreferredDRMgetAudioTrackInfo | SetPreferredDRMGetAudioTrackInfo | drmTypesessionId : string | trackInfo:AudioTracksuccess | Get :details boolean Setof theactive preferredaudio DRM systemtrack | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setPreferredDRMgetAudioTrackInfo","params":{"drmTypesessionId":"widevinesess-abc-001"}}org.rdk.player.initAAMPConfig
| InitAAMPConfig | {"jsonrpc":"2config : object success : boolean Apply AAMP configuration {"jsonrpc":"2.0","id":1,"result":{"methodtrackInfo":"org.rdk.player.initAAMPConfig","params":{"config":{"networkTimeout":10,"downloadBuffer":30}}} rg.rdk.player.getAAMPConfig
| GetAAMPConfig | None config : object Get current AAMP configuration {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.getAAMPConfig"{"index":0,"language":"en","rendition":"main","label":"English","codec":"mp4a.40.2","type":"AUDIO_STEREO","channels":2,"bitrate":128000}}} | org.rdk.player.setAppNamesetSubtitleMute | SetAppName | SetSubtitleMute | muted: boolean , sessionIdname : string | success : boolean | SetMute theor applicationunmute namesubtitles | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setAppNamesetSubtitleMute","params":{"namesessionId":"MyStreamingApp"}} org.rdk.player.setPreferredLanguages
| SetPreferredLanguages | "sess-abc-001","muted":true}} | {"jsonrpc":"2.0","id":1,"result":{"success":true}} | org.rdk.player.getAvailableTextTracks | GetAvailableTextTracks | allTracks : boolean , sessionId : string
| tracks :
TextTrack[] | List available text/subtitle trackslanguageList : string rendition : string codecList : string labelList : string success : boolean Set preferred audio/text language preferences | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setPreferredLanguagesgetAvailableTextTracks","params":{"languageList"sessionId":"sess-abc-001","allTracks":false}} | {"jsonrpc":"2.0","id":1,"result":{"tracks":[{"index":0,"language":"en,fra,","rendition":"main","label":"English","type":"SUBTITLES"},{"index":1,"language":"spa","rendition":"main","typelabel":"AUDIO_STEREOSpanish","codecListtype":"mp4a.40.2"SUBTITLES"}]}} | org.rdk.player.getPreferredLanguagessetTextTrack | GetPreferredLanguages | SetTextTrack | trackIdNone languageList : sting Get the preferred language list {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.getPreferredLanguages"}
|
|
Events and Notifications
...
integer , sessionId : string | success : boolean | Select a text track by index | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. |
|
...
setTextTrack","params":{" |
|
...
...
"sess-abc-001","trackId":0}} |
|
...
{"jsonrpc":"2.0","id":1,"result":{"success":true}} |
|
...
| org.rdk.player.getTextTrack | GetTextTrack | sessionId : string | trackId : integer | Get index of active text track | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. |
|
...
getTextTrack","params":{" |
|
...
...
...
{"jsonrpc":"2.0","id":1,"result":{" |
|
...
...
...
...
...
getVideoBitrate | GetVideoBitrate | sessionId : string | bitrate : integer | Get current video bitrate | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. |
|
...
getVideoBitrate","params":{"sessionId":"sess-abc-001"}} |
|
...
org.rdk.player.onTuneFailed
...
Tune failed and playback is not ready
...
...
...
...
...
...
setVideoBitrate | SetVideoBitrate | bitrate : integer , sessionId : string | success : boolean | Lock the video bitrate | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. |
|
...
setVideoBitrate","params":{" |
|
...
...
"sess-abc-001","bitrate":2000000}} |
|
...
org.rdk.player.onProgress
...
...
...
...
success":true}} | org.rdk.player. |
|
...
getVideoBitrates | GetVideoBitrates | sessionId : string | bitrates :
integer[] | List all available video bitrates | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. |
|
...
getVideoBitrates","params":{" |
|
...
...
"sess-abc-001"}} | {"jsonrpc":"2.0","id":1,"result":{"bitrates":[800000,2000000,4000000,8000000]}} | org.rdk.player. |
|
...
setInitialBitrate | SetInitialBitrate | bitrate : integer , sessionId : string | success : boolean | Set the startup bitrate hint | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. |
|
...
setInitialBitrate","params":{" |
|
...
...
...
...
...
...
...
...
...
...
...
{"success":true}} | org.rdk.player. |
|
...
getInitialBitrate | getInitialBitrat |
sessionId : string | bitrate : integer | Set the startup bitrate hint | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. |
|
...
getInitialBitrate","params":{" |
|
...
...
...
org.rdk.player.onBufferingChanged
...
...
...
...
...
...
...
setMinimumBitrate | SetMinimumBitrate | bitrate : integer , sessionId : string | success : boolean | Set the ABR minimum bitrate floor | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. |
|
...
setMinimumBitrate","params":{" |
|
...
sessionId":"sess-abc-001","bitrate": |
|
...
...
org.rdk.player.onDrmMetadata
...
...
...
...
...
...
...
getMinimumBitrate | GetMinimumBitrate | sessionId : string | bitrate : integer | Get the ABR minimum bitrate floor | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player. |
|
...
getMinimumBitrate","params":{"sessionId":"sess-abc-001"}} | { |
|
...
...
...
{"bitrate":800000}} | org.rdk.player.setMaximumBitrate | SetMaximumBitrate | sessionId : string | success : boolean | Set the ABR maximum bitrate ceiling | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setMaximumBitrate","params":{"sessionId":"sess-abc-001","bitrate":8000000}} | {"jsonrpc":"2.0","id":1,"result":{"success":true}} | org.rdk.player.getMaximumBitrate | getMaximumBitrate | sessionId : string | bitrate : integer | Get the ABR maximum bitrate ceiling | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.getMaximumBitrate","params":{"sessionId":"sess-abc-001"}} |
{"jsonrpc":"2.0","id":1,"result":{"bitrate":8000000}} | rg.rdk.player.setLicenseServerURL | SetLicenseServerURL | url : string , sessionId : string | success : boolean | Set the DRM license server URL | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setLicenseServerURL","params":{"sessionId":"sess-abc-001","url":"https://license.example.com/widevine"}} | {"jsonrpc":"2.0","id":1,"result":{"success":true}} | org.rdk.player.getDRM | GetDRM | sessionId : string | drm : string | Get active DRM system | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.getDRM","params":{"sessionId":"sess-abc-001"}} | {"jsonrpc":"2.0","id":1,"result":{"drm":"widevine"}} | org.rdk.player.setPreferredDRM | SetPreferredDRM | drmType : string , sessionId : string
| success : boolean | Set the preferred DRM system | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setPreferredDRM","params":{"sessionId":"sess-abc-001","drmType":"widevine"}} | {"jsonrpc":"2.0","id":1,"result":{"success":true}} | rg.rdk.player.getAAMPConfig | GetAAMPConfig | sessionId : string | config : object | Get current AAMP configuration | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.getAAMPConfig","params":{"sessionId":"sess-abc-001"}} | {"jsonrpc":"2.0","id":1,"result":{"config":{"networkTimeout":10,"downloadBuffer":30}}} | org.rdk.player.setAppName | SetAppName | name : string, sessionId : string | success : boolean | Set the application name | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setAppName","params":{"sessionId":"sess-abc-001","name":"MyStreamingApp"}} | {"jsonrpc":"2.0","id":1,"result":{"success":true}} | org.rdk.player.setPreferredLanguages | SetPreferredLanguages | languageList : string
rendition : string
codecList : string
labelList : string sessionId : string | success : boolean |
| {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.setPreferredLanguages","params":{"sessionId":"sess-abc-001","languageList":"en,fra,spa","rendition":"main","type":"AUDIO_STEREO","codecList":"mp4a.40.2"}} | {"jsonrpc":"2.0","id":1,"result":{"success":true}} | org.rdk.player.getPreferredLanguages | GetPreferredLanguages | sessionId : string
| languageList : sting
| Get the preferred language list | {"jsonrpc":"2.0","id":1,"method":"org.rdk.player.getPreferredLanguages","params":{"sessionId":"sess-abc-001"}} | {"jsonrpc":"2.0","id":1,"result":{"languageList":"en,fra"}} |
|
Events and Notifications
Subscription
All `org.rdk.player.on*` notifications are opt-in. Subscribe per client; each connection has its own independent subscription set.
After subscribing, the server pushes matching events as JSON-RPC notifications.
eg:
Request
{"jsonrpc":"2.0","id":1,"method":"org.rdk.player.subscribe","params":{"sessionId":"sess-abc-001","event":"org.rdk.player.onProgress"}}
Response
{"jsonrpc":"2.0","id":1,"result":{"success":true}}
Unsubscribe
eg:
Request
{"jsonrpc":"2.0","id":1,"method":"org.rdk.player.unsubscribe","params":{"sessionId":"sess-abc-001","event":"org.rdk.player.onProgress"}}
Response
{"jsonrpc":"2.0","id":1,"result":{"success":true}}
Event | Description | Response |
|---|
org.rdk.player.onTuned | Tune succeeded and playback is ready | {"jsonrpc":"2.0","method":"org.rdk.player.onTuned","params":{"sessionId":"sess-abc-001"}} |
org.rdk.player.onTuneFailed | Tune failed and playback is not ready | {"jsonrpc":"2.0","method":"org.rdk.player.onTuneFailed","params":{"sessionId":"sess-abc-001","description":"Manifest download failed","code":10,"shouldRetry":true}} |
org.rdk.player.onStateChanged | New player lifecycle state | {"jsonrpc":"2.0","method":"org.rdk.player.onStateChanged","params":{"sessionId":"sess-abc-001","state":"playing"}} |
org.rdk.player.onProgress | Periodic playback progress | {"jsonrpc":"2.0","method":"org.rdk.player.onProgress","params":{"sessionId":"sess-abc-001","positionMs":12500,"durationMs":3600000,"speed":1,"startMs":0,"endMs":3600000,"videoBufferedMs":8000,"audioBufferedMs":8000,"liveLatencyMs":0,"profileBitrate":4000000,"networkBitrate":6000000}} |
org.rdk.player.onBitrateChanged | ABR switches to a different video profile | {"jsonrpc":"2.0","method":"org.rdk.player.onBitrateChanged","params":{"sessionId":"sess-abc-001","bitrate":2000000,"width":1280,"height":720,"description":"NetworkCongestion"}} |
org.rdk.player.onMediaMetadata | Stream metadata is parsed after a tune completes | {"jsonrpc":"2.0","method":"org.rdk.player.onMediaMetadata","params":{"sessionId":"sess-abc-001","durationMs":3600000,"width":1920,"height":1080,"hasDrm":true,"isLive":false,"drmType":"widevine","languages":["en","fra"],"bitrates":[800000,2000000,4000000,8000000],"speeds":[-64,-32,-16,-8,-4,-2,1,2,4,8,16,32,64]}} |
org.rdk.player.onSpeedChanged | Effective playback speed changes (e.g. trick-play, pause, resume) | {"jsonrpc":"2.0","method":"org.rdk.player.onSpeedChanged","params":{"sessionId":"sess-abc-001","speed":2}} |
org.rdk.player.onBufferingChanged | Player enters or exits a buffering stall | {"jsonrpc":"2.0","method":"org.rdk.player.onBufferingChanged","params":{"sessionId":"sess-abc-001","buffering":true}} |
org.rdk.player.onSeeked | A seek operation completes and playback resumes at the new position | {"jsonrpc":"2.0","method":"org.rdk.player.onSeeked","params":{"sessionId":"sess-abc-001","positionMs":120000}} |
org.rdk.player.onDrmMetadata | DRM system reports an access status update | {"jsonrpc":"2.0","method":"org.rdk.player.onDrmMetadata","params":{"sessionId":"sess-abc-001","accessStatus":"Authorized"}} |
org.rdk.player.onAnomaly | Fired when AAMP raises an internal diagnostic report | {"jsonrpc":"2.0","method":"org.rdk.player.onAnomaly","params":{"sessionId":"sess-abc-001","severity":1,"message":"Segment download stalled; retrying"}} |
org.rdk.player.onAdReservationStart | Ad reservation start event | {"jsonrpc":"2.0","method":"org.rdk.player.onAdReservationStart","params":{"sessionId":"sess-abc-001","adBreakId":"break-001","position":120000}} |
org.rdk.player.onTimedMetadata
| Fired when a timed metadata tag | {"jsonrpc":"2.0","method":"org.rdk.player.onTimedMetadata","params":{"sessionId":"sess-abc-001","name":"#EXT-X-CUE","id":"cue-001","timeMilliseconds":5000,"durationMilliSeconds":30000,"content":"/DAlAAAAAA=="}} |
org.rdk.player.onBulkTimedMetadata
| Fired when a bulk set of timed metadata entries is available | {"jsonrpc":"2.0","method":"org.rdk.player.onBulkTimedMetadata","params":{"sessionId":"sess-abc-001","metadata":"[{\"name\":\"#EXT-X-CUE\",\"time\":5000}]"}} |
org.rdk.player.onSupportedSpeedsChanged
| Fired when the list of supported trick-play speed values for the current stream changes. | {"jsonrpc":"2.0","method":"org.rdk.player.onSupportedSpeedsChanged","params":{"sessionId":"sess-abc-001","supportedSpeedCount":13,"supportedSpeeds":[-64,-32,-16,-8,-4,-2,1,2,4,8,16,32,64]}} |
org.rdk.player.onAdResolved
| Fired when an ad resolve attempt completes, reporting whether the ad was successfully resolved or encountered an error. | {"jsonrpc":"2.0","method":"org.rdk.player.onAdResolved","params":{"sessionId":"sess-abc-001","resolveStatus":true,"adId":"ad-001","startMS":60000,"durationMs":30000,"errorCode":"","errorDescription":""}} |
org.rdk.player.onAdPlacementStart
| Ad placement started | {"jsonrpc":"2.0","method":"org.rdk.player.onAdPlacementStart","params":{"sessionId":"sess-abc-001","adId":"ad-001","position":60000,"offset":0,"duration":30000,"errorCode":0}} |
org.rdk.player.onAdPlacementEnd
| Ad placement ended | {"jsonrpc":"2.0","method":"org.rdk.player.onAdPlacementEnd","params":{"sessionId":"sess-abc-001","adId":"ad-001","position":60000,"offset":30000,"duration":30000,"errorCode":0}} |
org.rdk.player.onAdPlacementError
| Ad placement error | {"jsonrpc":"2.0","method":"org.rdk.player.onAdPlacementError","params":{"sessionId":"sess-abc-001","adId":"ad-001","position":60000,"offset":5000,"duration":30000,"errorCode":2}} |
org.rdk.player.onAdPlacementProgress
| Ad placement progress update | {"jsonrpc":"2.0","method":"org.rdk.player.onAdPlacementProgress","params":{"sessionId":"sess-abc-001","adId":"ad-001","position":60000,"offset":15000,"duration":30000,"errorCode":0}} |
org.rdk.player.onID3Metadata
| ID3 tag metadata extracted from stream | {"jsonrpc":"2.0","method":"org.rdk.player.onID3Metadata","params":{"sessionId":"sess-abc-001","data":"SUQzBAAAAAAAI1RTUFQ=","length":20}} |
org.rdk.player.onDrmMessage
| DRM system message received | {"jsonrpc":"2.0","method":"org.rdk.player.onDrmMessage","params":{"sessionId":"sess-abc-001","data":"license renewal required"}} |
org.rdk.player.onContentGap
| Content gap detected in stream | {"jsonrpc":"2.0","method":"org.rdk.player.onContentGap","params":{"sessionId":"sess-abc-001","timeMilliseconds":120000,"durationMilliSeconds":5000}} |
org.rdk.player.onHTTPResponseHeader
| Matched HTTP response header received | {"jsonrpc":"2.0","method":"org.rdk.player.onHTTPResponseHeader","params":{"sessionId":"sess-abc-001","header":"X-CDN-Provider","response":"Akamai"}} |
org.rdk.player.onContentProtectionDataUpdate
| Content protection key data updated | {"jsonrpc":"2.0","method":"org.rdk.player.onContentProtectionDataUpdate","params":{"sessionId":"sess-abc-001","keyID":"AAECBA==","streamType":"video"}} |
org.rdk.player.onTuneTimeMetrics
| Fired after a successful tune with detailed metrics. | {"jsonrpc":"2.0","method":"org.rdk.player.onTuneTimeMetrics","params":{"sessionId":"sess-abc-001","tuneMetricData":"{\"latency\":1500,\"fragmentDownloadTime\":200}"}}
|
org.rdk.player.onMonitorAVStatus
| Fired periodically by the AV health monitor with audio/video decoder positions. | {"jsonrpc":"2.0","method":"org.rdk.player.onMonitorAVStatus","params":{"sessionId":"sess-abc-001","monitorAVStatus":"playing","videoPositionMS":12500,"audioPositionMS":12490,"timeInStateMS":5000,"droppedFrames":0}} |
org.rdk.player.onMetricsData
| Fired when an internal AAMP metrics report
| {"jsonrpc":"2.0","method":"org.rdk.player.onMetricsData","params":{"sessionId":"sess-abc-001","type":1,"metricUUID":"550e8400-e29b-41d4-a716-446655440000","data":"{\"latency\":1200}"}} |
org.rdk.player.onCCHandleReceived | Fired when the closed-caption decoder handle is allocated | {"jsonrpc":"2.0","method":"org.rdk.player.onCCHandleReceived","params":{"sessionId":"sess-abc-001","handle":12345}}
|
Aamp openrpc.json
{
"openrpc": "1.3.2",
"info": {
"title": "AAMP Player JSON-RPC API",
"version": "1.0.0",
"description": "WebSocket-based JSON-RPC 2.0 API for controlling an AAMP media player instance.\n\nEndpoint: ws://<host>:9999\n\nSession lifecycle: openSession -> configureSession (optional) -> playback methods -> closeSession"
},
"servers": [
{
"name": "AAMPIPALauncher",
"url": "ws://localhost:10101"
}
],
"components": {
"schemas": {
"PlayerState": {
"title": "PlayerState",
"type": "string",
"description": "AAMP player lifecycle state",
"enum": [
"idle",
"initializing",
"initialized",
"preparing",
"prepared",
"buffering",
"paused",
"seeking",
"playing",
"stopping",
"stopped",
"complete",
"error",
"released",
"blocked"
]
},
"AudioTrack": {
"title": "AudioTrack",
"type": "object",
"required": [
"index",
"language"
],
"properties": {
"index": {
"type": "integer",
"description": "Zero-based track index"
},
"language": {
"type": "string",
"description": "ISO 639 language code"
},
"rendition": {
"type": "string",
"description": "Rendition label (e.g. main, alternate, commentary)"
},
"label": {
"type": "string",
"description": "Human-readable track label"
},
"codec": {
"type": "string",
"description": "Audio codec identifier (e.g. mp4a.40.2, ec-3)"
},
"type": {
"type": "string",
"description": "Audio type (e.g. AUDIO_STEREO, AUDIO_DOLBY_ATMOS)"
},
"channels": {
"type": "integer",
"description": "Number of audio channels"
},
"bitrate": {
"type": "integer",
"description": "Track bitrate in bps"
}
}
},
"TextTrack": {
"title": "TextTrack",
"type": "object",
"required": [
"index",
"language"
],
"properties": {
"index": {
"type": "integer",
"description": "Zero-based track index"
},
"language": {
"type": "string",
"description": "ISO 639 language code"
},
"rendition": {
"type": "string",
"description": "Rendition label"
},
"label": {
"type": "string",
"description": "Human-readable track label"
},
"type": {
"type": "string",
"description": "Subtitle format (e.g. CLOSED_CAPTIONS, SUBTITLES, WEBVTT, TTML)"
}
}
},
"SuccessResult": {
"title": "SuccessResult",
"type": "object",
"required": [
"success"
],
"properties": {
"success": {
"type": "boolean",
"enum": [
true
]
}
}
}
}
},
"methods": [
{
"name": "org.rdk.player.openSession",
"summary": "Open a new player session",
"description": "Allocates a player instance and associates it with the calling WebSocket connection. Must be called before any playback or configuration method. Returns a sessionId that is echoed back in all subsequent responses for correlation.",
"tags": [
{
"name": "Session Management"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "instanceId",
"required": true,
"description": "Client-supplied player instance identifier.",
"schema": {
"type": "string"
}
},
{
"name": "displayId",
"required": true,
"description": "Display/window identifier to associate with this player instance.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "openSessionResult",
"schema": {
"type": "object",
"required": [
"sessionId",
"status"
],
"properties": {
"sessionId": {
"type": "string",
"description": "Session identifier to use in subsequent calls"
},
"status": {
"type": "boolean"
}
}
}
},
"examples": [
{
"name": "openSessionExample",
"params": [
{
"name": "instanceId",
"value": "123-1232-321312-3123"
},
{
"name": "displayId",
"value": "wst-mywindow"
}
],
"result": {
"name": "openSessionResult",
"value": {
"sessionId": "session_1783267426",
"status": true
}
}
}
]
},
{
"name": "org.rdk.player.configureSession",
"summary": "Apply configuration to an open session",
"description": "Applies AAMP configuration key-value pairs to the session. Must be called after openSession and before tune.",
"tags": [
{
"name": "Session Management"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "config",
"required": true,
"description": "AAMP configuration block as a JSON object or JSON-encoded string.",
"schema": {
"oneOf": [
{
"type": "object"
},
{
"type": "string"
}
]
}
}
],
"result": {
"name": "configureSessionResult",
"schema": {
"type": "object",
"required": [
"sessionId",
"success"
],
"properties": {
"sessionId": {
"type": "string"
},
"success": {
"type": "boolean"
}
}
}
},
"examples": [
{
"name": "configureSessionExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "config",
"value": {
"networkTimeout": 10,
"downloadBuffer": 30,
"preferredDRM": "widevine",
"initialBitrate": 2000000
}
}
],
"result": {
"name": "configureSessionResult",
"value": {
"sessionId": "sess-abc-001",
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.closeSession",
"summary": "Close and release a player session",
"description": "Stops any active playback, releases decoder and DRM resources, and destroys the session. After this call the sessionId is invalid. The WebSocket connection itself is not closed.",
"tags": [
{
"name": "Session Management"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "closeSessionResult",
"schema": {
"type": "object",
"required": [
"status"
],
"properties": {
"message": {
"type": "string",
"description": "Human-readable status message"
},
"status": {
"type": "boolean"
}
}
}
},
"examples": [
{
"name": "closeSessionExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "closeSessionResult",
"value": {
"message": "Session closed successfully.",
"status": true
}
}
}
]
},
{
"name": "org.rdk.player.play",
"summary": "Start playback of a media stream",
"description": "Instructs the AAMP player to tune to the given URL. Optionally auto-starts playback and accepts a content type hint and trace UUID for diagnostics.",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "url",
"required": true,
"description": "Media manifest URL (HLS, DASH, progressive MP4, etc.)",
"schema": {
"type": "string",
"format": "uri"
}
},
{
"name": "autoPlay",
"required": false,
"description": "Start playback immediately after buffering.",
"schema": {
"type": "boolean",
"default": true
}
},
{
"name": "contentType",
"required": false,
"description": "Stream type hint.",
"schema": {
"type": "string",
"enum": [
"VOD",
"LIVE",
"LINEAR_TV",
"IVOD",
"EAS",
"DVR",
"CDVR",
"IPVideo",
"OTT",
"SLE"
]
}
},
{
"name": "traceUUID",
"required": false,
"description": "Correlation UUID forwarded to AAMP diagnostics and telemetry.",
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"result": {
"name": "playResult",
"schema": {
"type": "object",
"required": [
"status"
],
"properties": {
"message": {
"type": "string",
"description": "Human-readable status message"
},
"status": {
"type": "boolean"
}
}
}
},
"examples": [
{
"name": "playExample",
"params": [
{
"name": "url",
"value": "http://dash.akamaized.net/dash264/TestCases/1a/qualcomm/1/MultiRate.mpd"
},
{
"name": "sessionId",
"value": "session_1783267426"
}
],
"result": {
"name": "playResult",
"value": {
"message": "Content playback started.",
"status": true
}
}
}
]
},
{
"name": "org.rdk.player.stop",
"summary": "Stop playback",
"description": "Stops the current playback and releases decoder resources. The player returns to the idle state.",
"tags": [
{
"name": "Playback Control"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "stopResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "stopExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "stopResult",
"value": {
"success": true
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.seek",
"summary": "Seek to a position",
"description": "Seeks to an absolute position in the stream (in seconds from the start). For live streams, position is relative to the live edge.",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "position",
"required": true,
"description": "Target seek position in seconds (>= 0).",
"schema": {
"type": "number",
"minimum": 0
}
},
{
"name": "keepPaused",
"required": false,
"description": "If true, the player remains paused after seeking.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"result": {
"name": "seekResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "seekExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "position",
"value": 120.0
},
{
"name": "keepPaused",
"value": false
}
],
"result": {
"name": "seekResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.seekToLive",
"summary": "Seek to the live edge",
"description": "Moves playback to the current live edge of a live or time-shifted stream.",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "keepPaused",
"required": false,
"description": "If true, the player remains paused after seeking to live.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"result": {
"name": "seekToLiveResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "seekToLiveExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "keepPaused",
"value": false
}
],
"result": {
"name": "seekToLiveResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.setRate",
"summary": "Set playback rate / trick-play speed",
"description": "Sets the playback rate for trick-play. Rate 1=normal, 0=pause, 2=2x fast-forward, -2=2x rewind.",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "rate",
"required": true,
"description": "Playback rate multiplier.",
"schema": {
"type": "number"
}
},
{
"name": "overshootCorrection",
"required": false,
"description": "Overshoot correction offset in milliseconds applied during trick play.",
"schema": {
"type": "integer",
"default": 0
}
}
],
"result": {
"name": "setRateResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setRateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "rate",
"value": 2
},
{
"name": "overshootCorrection",
"value": 0
}
],
"result": {
"name": "setRateResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.setPlaybackSpeed",
"summary": "Set playback speed",
"description": "Sets the playback speed directly (equivalent to setRate without the overshoot correction option).",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "speed",
"required": true,
"description": "Playback speed multiplier (e.g. 1.0, 0.5, 2.0).",
"schema": {
"type": "number"
}
}
],
"result": {
"name": "setPlaybackSpeedResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setPlaybackSpeedExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "speed",
"value": 0.5
}
],
"result": {
"name": "setPlaybackSpeedResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.pauseAt",
"summary": "Schedule a pause at a future position",
"description": "Requests the player to automatically pause when playback reaches the specified position. Pass a negative value to cancel a previously scheduled pause.",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "position",
"required": true,
"description": "Position in seconds at which to pause. Pass a negative value to cancel.",
"schema": {
"type": "number"
}
}
],
"result": {
"name": "pauseAtResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "pauseAtExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "position",
"value": 300.0
}
],
"result": {
"name": "pauseAtResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.setRateAndSeek",
"summary": "Atomically set rate and seek",
"description": "Combines a rate change and a seek into a single atomic operation, avoiding the visual glitch that can occur when calling them separately.",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "rate",
"required": true,
"description": "Target playback rate (e.g. 1, -2, 4).",
"schema": {
"type": "integer"
}
},
{
"name": "position",
"required": true,
"description": "Target position in seconds (>= 0).",
"schema": {
"type": "number",
"minimum": 0
}
}
],
"result": {
"name": "setRateAndSeekResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setRateAndSeekExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "rate",
"value": 1
},
{
"name": "position",
"value": 60.0
}
],
"result": {
"name": "setRateAndSeekResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getState",
"summary": "Get current player state",
"description": "Returns the current lifecycle state of the AAMP player instance.",
"tags": [
{
"name": "Playback State"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getStateResult",
"schema": {
"type": "object",
"required": [
"state"
],
"properties": {
"state": {
"$ref": "#/components/schemas/PlayerState"
}
}
}
},
"examples": [
{
"name": "getStateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getStateResult",
"value": {
"state": "playing"
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getPlaybackPosition",
"summary": "Get current playback position",
"tags": [
{
"name": "Playback State"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getPlaybackPositionResult",
"schema": {
"type": "object",
"required": [
"position"
],
"properties": {
"position": {
"type": "number",
"description": "Current playback position in seconds"
}
}
}
},
"examples": [
{
"name": "getPlaybackPositionExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getPlaybackPositionResult",
"value": {
"position": 120.5
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getPlaybackDuration",
"summary": "Get total stream duration",
"description": "Returns -1 for live streams without a known duration.",
"tags": [
{
"name": "Playback State"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getPlaybackDurationResult",
"schema": {
"type": "object",
"required": [
"duration"
],
"properties": {
"duration": {
"type": "number",
"description": "Total stream duration in seconds; -1 for unbounded live streams"
}
}
}
},
"examples": [
{
"name": "getPlaybackDurationExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getPlaybackDurationResult",
"value": {
"duration": 3600.0
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getPlaybackRate",
"summary": "Get current playback rate",
"tags": [
{
"name": "Playback State"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getPlaybackRateResult",
"schema": {
"type": "object",
"required": [
"rate"
],
"properties": {
"rate": {
"type": "number",
"description": "Current playback rate multiplier (1.0 = normal, 0 = paused)"
}
}
}
},
"examples": [
{
"name": "getPlaybackRateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getPlaybackRateResult",
"value": {
"rate": 1.0
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.isLive",
"summary": "Check if stream is live",
"tags": [
{
"name": "Playback State"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "isLiveResult",
"schema": {
"type": "object",
"required": [
"isLive"
],
"properties": {
"isLive": {
"type": "boolean",
"description": "true if the current stream is a live broadcast"
}
}
}
},
"examples": [
{
"name": "isLiveExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "isLiveResult",
"value": {
"isLive": false
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setVideoMute",
"summary": "Mute or unmute the video plane",
"description": "Blanks (mutes) or restores the video plane without affecting audio.",
"tags": [
{
"name": "Video"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "muted",
"required": true,
"description": "true to blank the video plane; false to restore it.",
"schema": {
"type": "boolean"
}
}
],
"result": {
"name": "setVideoMuteResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setVideoMuteExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "muted",
"value": true
}
],
"result": {
"name": "setVideoMuteResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getVideoMute",
"summary": "Get video mute state",
"tags": [
{
"name": "Video"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getVideoMuteResult",
"schema": {
"type": "object",
"required": [
"muted"
],
"properties": {
"muted": {
"type": "boolean",
"description": "true if the video plane is currently muted (blanked)"
}
}
}
},
"examples": [
{
"name": "getVideoMuteExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getVideoMuteResult",
"value": {
"muted": false
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setAudioVolume",
"summary": "Set audio volume",
"tags": [
{
"name": "Audio"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "volume",
"required": true,
"description": "Volume level from 0 (muted) to 100 (maximum).",
"schema": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
}
],
"result": {
"name": "setAudioVolumeResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setAudioVolumeExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "volume",
"value": 80
}
],
"result": {
"name": "setAudioVolumeResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getAudioVolume",
"summary": "Get audio volume",
"tags": [
{
"name": "Audio"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getAudioVolumeResult",
"schema": {
"type": "object",
"required": [
"volume"
],
"properties": {
"volume": {
"type": "integer",
"description": "Current volume level (0-100)"
}
}
}
},
"examples": [
{
"name": "getAudioVolumeExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getAudioVolumeResult",
"value": {
"volume": 80
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getAudioLanguage",
"summary": "Get currently active audio language",
"tags": [
{
"name": "Audio"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getAudioLanguageResult",
"schema": {
"type": "object",
"required": [
"language"
],
"properties": {
"language": {
"type": "string",
"description": "ISO 639 language code of the active audio track (e.g. en)"
}
}
}
},
"examples": [
{
"name": "getAudioLanguageExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getAudioLanguageResult",
"value": {
"language": "en"
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getAvailableAudioTracks",
"summary": "List available audio tracks",
"description": "Returns all audio tracks present in the current manifest.",
"tags": [
{
"name": "Audio"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "allTracks",
"required": false,
"description": "true to include tracks from all DASH periods, not just the current one.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"result": {
"name": "getAvailableAudioTracksResult",
"schema": {
"type": "object",
"required": [
"tracks"
],
"properties": {
"tracks": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AudioTrack"
},
"description": "Array of available audio track descriptors"
}
}
}
},
"examples": [
{
"name": "getAvailableAudioTracksExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "allTracks",
"value": false
}
],
"result": {
"name": "getAvailableAudioTracksResult",
"value": {
"tracks": [
{
"index": 0,
"language": "en",
"rendition": "main",
"label": "English",
"codec": "mp4a.40.2",
"type": "AUDIO_STEREO",
"channels": 2,
"bitrate": 128000
},
{
"index": 1,
"language": "fra",
"rendition": "main",
"label": "French",
"codec": "mp4a.40.2",
"type": "AUDIO_STEREO",
"channels": 2,
"bitrate": 128000
}
]
}
}
}
]
},
{
"name": "org.rdk.player.setAudioTrack",
"summary": "Select an audio track by index",
"description": "Switches to the audio track at the specified index from getAvailableAudioTracks.",
"tags": [
{
"name": "Audio"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "trackId",
"required": true,
"description": "Zero-based index of the target audio track (>= 0).",
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"result": {
"name": "setAudioTrackResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setAudioTrackExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "trackId",
"value": 1
}
],
"result": {
"name": "setAudioTrackResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getAudioTrack",
"summary": "Get index of active audio track",
"tags": [
{
"name": "Audio"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getAudioTrackResult",
"schema": {
"type": "object",
"required": [
"trackId"
],
"properties": {
"trackId": {
"type": "integer",
"description": "Zero-based index of the currently active audio track"
}
}
}
},
"examples": [
{
"name": "getAudioTrackExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getAudioTrackResult",
"value": {
"trackId": 0
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getAudioTrackInfo",
"summary": "Get details of active audio track",
"tags": [
{
"name": "Audio"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getAudioTrackInfoResult",
"schema": {
"type": "object",
"required": [
"trackInfo"
],
"properties": {
"trackInfo": {
"$ref": "#/components/schemas/AudioTrack"
}
}
}
},
"examples": [
{
"name": "getAudioTrackInfoExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getAudioTrackInfoResult",
"value": {
"trackInfo": {
"index": 0,
"language": "en",
"rendition": "main",
"label": "English",
"codec": "mp4a.40.2",
"type": "AUDIO_STEREO",
"channels": 2,
"bitrate": 128000
}
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setSubtitleMute",
"summary": "Mute or unmute subtitles",
"description": "Enables or suppresses subtitle rendering without changing the active text track selection.",
"tags": [
{
"name": "Subtitles"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "muted",
"required": true,
"description": "true to hide subtitles; false to show them.",
"schema": {
"type": "boolean"
}
}
],
"result": {
"name": "setSubtitleMuteResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setSubtitleMuteExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "muted",
"value": true
}
],
"result": {
"name": "setSubtitleMuteResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getAvailableTextTracks",
"summary": "List available text/subtitle tracks",
"tags": [
{
"name": "Subtitles"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "allTracks",
"required": false,
"description": "true to include tracks from all DASH periods.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"result": {
"name": "getAvailableTextTracksResult",
"schema": {
"type": "object",
"required": [
"tracks"
],
"properties": {
"tracks": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TextTrack"
}
}
}
}
},
"examples": [
{
"name": "getAvailableTextTracksExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "allTracks",
"value": false
}
],
"result": {
"name": "getAvailableTextTracksResult",
"value": {
"tracks": [
{
"index": 0,
"language": "en",
"rendition": "main",
"label": "English",
"type": "SUBTITLES"
},
{
"index": 1,
"language": "spa",
"rendition": "main",
"label": "Spanish",
"type": "SUBTITLES"
}
]
}
}
}
]
},
{
"name": "org.rdk.player.setTextTrack",
"summary": "Select a text track by index",
"tags": [
{
"name": "Subtitles"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "trackId",
"required": true,
"description": "Zero-based index of the target text track (>= 0).",
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"result": {
"name": "setTextTrackResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setTextTrackExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "trackId",
"value": 0
}
],
"result": {
"name": "setTextTrackResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getTextTrack",
"summary": "Get index of active text track",
"tags": [
{
"name": "Subtitles"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getTextTrackResult",
"schema": {
"type": "object",
"required": [
"trackId"
],
"properties": {
"trackId": {
"type": "integer",
"description": "Zero-based index of the currently active text track"
}
}
}
},
"examples": [
{
"name": "getTextTrackExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getTextTrackResult",
"value": {
"trackId": 0
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getVideoBitrate",
"summary": "Get current video bitrate",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getVideoBitrateResult",
"schema": {
"type": "object",
"required": [
"bitrate"
],
"properties": {
"bitrate": {
"type": "integer",
"description": "Current video bitrate in bits per second"
}
}
}
},
"examples": [
{
"name": "getVideoBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getVideoBitrateResult",
"value": {
"bitrate": 4000000
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setVideoBitrate",
"summary": "Lock the video bitrate",
"description": "Pins ABR to the profile closest to the specified bitrate. Pass 0 to re-enable automatic ABR.",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "bitrate",
"required": true,
"description": "Target bitrate in bps; 0 restores automatic ABR.",
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"result": {
"name": "setVideoBitrateResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setVideoBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "bitrate",
"value": 2000000
}
],
"result": {
"name": "setVideoBitrateResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getVideoBitrates",
"summary": "List all available video bitrates",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getVideoBitratesResult",
"schema": {
"type": "object",
"required": [
"bitrates"
],
"properties": {
"bitrates": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Available video bitrates in bps, ascending order"
}
}
}
},
"examples": [
{
"name": "getVideoBitratesExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getVideoBitratesResult",
"value": {
"bitrates": [
800000,
2000000,
4000000,
8000000
]
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setInitialBitrate",
"summary": "Set the startup bitrate hint",
"description": "Hints to AAMP which bitrate profile to select at the start of the next tune. ABR may switch away after the initial segments are downloaded.",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "bitrate",
"required": true,
"description": "Desired startup bitrate in bps.",
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"result": {
"name": "setInitialBitrateResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setInitialBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "bitrate",
"value": 2000000
}
],
"result": {
"name": "setInitialBitrateResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getInitialBitrate",
"summary": "Get the startup bitrate hint",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getInitialBitrateResult",
"schema": {
"type": "object",
"required": [
"bitrate"
],
"properties": {
"bitrate": {
"type": "integer",
"description": "Configured startup bitrate in bps"
}
}
}
},
"examples": [
{
"name": "getInitialBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getInitialBitrateResult",
"value": {
"bitrate": 2000000
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setMinimumBitrate",
"summary": "Set the ABR minimum bitrate floor",
"description": "Prevents AAMP from selecting any video profile below this bitrate during adaptive bitrate switching.",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "bitrate",
"required": true,
"description": "Minimum allowed bitrate in bps.",
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"result": {
"name": "setMinimumBitrateResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setMinimumBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "bitrate",
"value": 800000
}
],
"result": {
"name": "setMinimumBitrateResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getMinimumBitrate",
"summary": "Get the ABR minimum bitrate floor",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getMinimumBitrateResult",
"schema": {
"type": "object",
"required": [
"bitrate"
],
"properties": {
"bitrate": {
"type": "integer",
"description": "Configured minimum ABR bitrate in bps"
}
}
}
},
"examples": [
{
"name": "getMinimumBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getMinimumBitrateResult",
"value": {
"bitrate": 800000
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setMaximumBitrate",
"summary": "Set the ABR maximum bitrate ceiling",
"description": "Prevents AAMP from selecting any video profile above this bitrate during adaptive bitrate switching.",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "bitrate",
"required": true,
"description": "Maximum allowed bitrate in bps.",
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"result": {
"name": "setMaximumBitrateResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setMaximumBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "bitrate",
"value": 8000000
}
],
"result": {
"name": "setMaximumBitrateResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getMaximumBitrate",
"summary": "Get the ABR maximum bitrate ceiling",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getMaximumBitrateResult",
"schema": {
"type": "object",
"required": [
"bitrate"
],
"properties": {
"bitrate": {
"type": "integer",
"description": "Configured maximum ABR bitrate in bps"
}
}
}
},
"examples": [
{
"name": "getMaximumBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getMaximumBitrateResult",
"value": {
"bitrate": 8000000
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setLicenseServerURL",
"summary": "Set the DRM license server URL",
"description": "Overrides the license server URL for the active DRM system. Can be used to redirect license requests to a proxy.",
"tags": [
{
"name": "DRM"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "url",
"required": true,
"description": "License server URL (e.g. https://license.example.com/widevine).",
"schema": {
"type": "string",
"format": "uri"
}
}
],
"result": {
"name": "setLicenseServerURLResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setLicenseServerURLExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "url",
"value": "https://license.example.com/widevine"
}
],
"result": {
"name": "setLicenseServerURLResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getDRM",
"summary": "Get active DRM system",
"tags": [
{
"name": "DRM"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getDRMResult",
"schema": {
"type": "object",
"required": [
"drm"
],
"properties": {
"drm": {
"type": "string",
"description": "Name of the active DRM system",
"enum": [
"widevine",
"playready",
"clearkey",
"none"
]
}
}
}
},
"examples": [
{
"name": "getDRMExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getDRMResult",
"value": {
"drm": "widevine"
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setPreferredDRM",
"summary": "Set the preferred DRM system",
"description": "Tells AAMP which DRM system to prefer when multiple are available in the manifest.",
"tags": [
{
"name": "DRM"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "drmType",
"required": true,
"description": "DRM identifier.",
"schema": {
"type": "string",
"enum": [
"widevine",
"playready",
"clearkey"
]
}
}
],
"result": {
"name": "setPreferredDRMResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setPreferredDRMExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "drmType",
"value": "widevine"
}
],
"result": {
"name": "setPreferredDRMResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getAAMPConfig",
"summary": "Get current AAMP configuration",
"tags": [
{
"name": "Configuration"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getAAMPConfigResult",
"schema": {
"type": "object",
"required": [
"config"
],
"properties": {
"config": {
"type": "object",
"description": "Complete current AAMP configuration as a JSON object"
}
}
}
},
"examples": [
{
"name": "getAAMPConfigExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getAAMPConfigResult",
"value": {
"config": {
"networkTimeout": 10,
"downloadBuffer": 30
}
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setAppName",
"summary": "Set the application name",
"description": "Sets a human-readable application name included in AAMP diagnostic logs and telemetry.",
"tags": [
{
"name": "Configuration"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "name",
"required": true,
"description": "Application name (e.g. MyStreamingApp).",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "setAppNameResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setAppNameExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "name",
"value": "MyStreamingApp"
}
],
"result": {
"name": "setAppNameResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.setPreferredLanguages",
"summary": "Set preferred audio/text language preferences",
"description": "Configures fine-grained language selection. All parameters are optional; omit to leave that dimension unchanged.",
"tags": [
{
"name": "Configuration"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "languageList",
"required": false,
"description": "Comma-separated ISO 639 language codes in priority order (e.g. en,fra,spa).",
"schema": {
"type": "string"
}
},
{
"name": "rendition",
"required": false,
"description": "Preferred rendition label (e.g. main, alternate).",
"schema": {
"type": "string"
}
},
{
"name": "type",
"required": false,
"description": "Preferred audio type (e.g. AUDIO_DOLBY_ATMOS, AUDIO_STEREO).",
"schema": {
"type": "string"
}
},
{
"name": "codecList",
"required": false,
"description": "Comma-separated preferred audio codecs (e.g. ec-3,mp4a).",
"schema": {
"type": "string"
}
},
{
"name": "labelList",
"required": false,
"description": "Comma-separated preferred HLS GROUP-ID or DASH label values.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "setPreferredLanguagesResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setPreferredLanguagesExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "languageList",
"value": "en,fra,spa"
},
{
"name": "rendition",
"value": "main"
},
{
"name": "type",
"value": "AUDIO_STEREO"
},
{
"name": "codecList",
"value": "mp4a.40.2"
}
],
"result": {
"name": "setPreferredLanguagesResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getPreferredLanguages",
"summary": "Get the preferred language list",
"tags": [
{
"name": "Configuration"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getPreferredLanguagesResult",
"schema": {
"type": "object",
"required": [
"languageList"
],
"properties": {
"languageList": {
"type": "string",
"description": "Comma-separated ISO 639 language codes in preference order"
}
}
}
},
"examples": [
{
"name": "getPreferredLanguagesExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getPreferredLanguagesResult",
"value": {
"languageList": "en,fra"
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.subscribe",
"summary": "Subscribe to server-pushed event notifications",
"description": "After subscribing, the server pushes matching events as JSON-RPC notifications (no id field). Use * to subscribe to all events.",
"tags": [
{
"name": "Event Subscription"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "event",
"required": true,
"description": "Event name (e.g. org.rdk.player.onProgress) or * for all events.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "subscribeResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "subscribeExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "event",
"value": "org.rdk.player.onProgress"
}
],
"result": {
"name": "subscribeResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.unsubscribe",
"summary": "Unsubscribe from event notifications",
"tags": [
{
"name": "Event Subscription"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "event",
"required": true,
"description": "Event name to unsubscribe from.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "unsubscribeResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "unsubscribeExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "event",
"value": "org.rdk.player.onProgress"
}
],
"result": {
"name": "unsubscribeResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getSubscriptions",
"summary": "List active event subscriptions",
"tags": [
{
"name": "Event Subscription"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getSubscriptionsResult",
"schema": {
"type": "object",
"required": [
"subscriptions"
],
"properties": {
"subscriptions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Event names currently active for this client"
}
}
}
},
"examples": [
{
"name": "getSubscriptionsExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getSubscriptionsResult",
"value": {
"subscriptions": [
"org.rdk.player.onProgress",
"org.rdk.player.onStateChanged"
]
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.onTuned",
"summary": "Tune succeeded and playback is ready",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "onTunedParams",
"schema": {
"type": "object"
}
},
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.onTuneFailed",
"summary": "Tune failed",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "description",
"schema": {
"type": "string",
"description": "Human-readable error description"
}
},
{
"name": "code",
"schema": {
"type": "integer",
"description": "AAMP internal error code"
}
},
{
"name": "shouldRetry",
"schema": {
"type": "boolean",
"description": "true if the application should retry the tune"
}
}
],
"result": {
"name": "onTuneFailedParams",
"schema": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"code": {
"type": "integer"
},
"shouldRetry": {
"type": "boolean"
}
}
}
}
},
{
"name": "org.rdk.player.onStateChanged",
"summary": "Player lifecycle state transition",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "state",
"schema": {
"$ref": "#/components/schemas/PlayerState"
}
}
],
"result": {
"name": "onStateChangedParams",
"schema": {
"type": "object",
"properties": {
"state": {
"$ref": "#/components/schemas/PlayerState"
}
}
}
}
},
{
"name": "org.rdk.player.onProgress",
"summary": "Periodic playback heartbeat (~1 s interval)",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "positionMs",
"schema": {
"type": "number",
"description": "Current playback position in milliseconds"
}
},
{
"name": "durationMs",
"schema": {
"type": "number",
"description": "Total stream duration in ms; -1 for unbounded live"
}
},
{
"name": "speed",
"schema": {
"type": "number",
"description": "Current playback speed multiplier"
}
},
{
"name": "startMs",
"schema": {
"type": "number",
"description": "Start of the seekable window in milliseconds"
}
},
{
"name": "endMs",
"schema": {
"type": "number",
"description": "End of the seekable window in milliseconds"
}
},
{
"name": "videoBufferedMs",
"schema": {
"type": "number",
"description": "Video data buffered ahead of current position in ms"
}
},
{
"name": "audioBufferedMs",
"schema": {
"type": "number",
"description": "Audio data buffered ahead of current position in ms"
}
},
{
"name": "liveLatencyMs",
"schema": {
"type": "number",
"description": "Distance from the live edge in ms; 0 for VOD"
}
},
{
"name": "profileBitrate",
"schema": {
"type": "integer",
"description": "Bitrate of the selected video profile in bps"
}
},
{
"name": "networkBitrate",
"schema": {
"type": "integer",
"description": "Estimated download throughput in bps"
}
}
],
"result": {
"name": "onProgressParams",
"schema": {
"type": "object",
"properties": {
"positionMs": {
"type": "number"
},
"durationMs": {
"type": "number"
},
"speed": {
"type": "number"
},
"startMs": {
"type": "number"
},
"endMs": {
"type": "number"
},
"videoBufferedMs": {
"type": "number"
},
"audioBufferedMs": {
"type": "number"
},
"liveLatencyMs": {
"type": "number"
},
"profileBitrate": {
"type": "integer"
},
"networkBitrate": {
"type": "integer"
}
}
}
}
},
{
"name": "org.rdk.player.onEOS",
"summary": "End of stream reached",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "onEOSParams",
"schema": {
"type": "object"
}
},
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.onSpeedChanged",
"summary": "Effective playback speed changed",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "speed",
"schema": {
"type": "number",
"description": "New playback speed multiplier"
}
}
],
"result": {
"name": "onSpeedChangedParams",
"schema": {
"type": "object",
"properties": {
"speed": {
"type": "number"
}
}
}
}
},
{
"name": "org.rdk.player.onBufferingChanged",
"summary": "Player entered or exited a buffering state",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "buffering",
"schema": {
"type": "boolean",
"description": "true when actively buffering; false when buffering is complete"
}
}
],
"result": {
"name": "onBufferingChangedParams",
"schema": {
"type": "object",
"properties": {
"buffering": {
"type": "boolean"
}
}
}
}
},
{
"name": "org.rdk.player.onSeeked",
"summary": "Seek operation completed",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "positionMs",
"schema": {
"type": "number",
"description": "New playback position in milliseconds after the seek"
}
}
],
"result": {
"name": "onSeekedParams",
"schema": {
"type": "object",
"properties": {
"positionMs": {
"type": "number"
}
}
}
}
},
{
"name": "org.rdk.player.onBitrateChanged",
"summary": "ABR switched to a different video profile",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "bitrate",
"schema": {
"type": "integer",
"description": "New video bitrate in bps"
}
},
{
"name": "width",
"schema": {
"type": "integer",
"description": "Horizontal resolution of the new profile in pixels"
}
},
{
"name": "height",
"schema": {
"type": "integer",
"description": "Vertical resolution of the new profile in pixels"
}
},
{
"name": "description",
"schema": {
"type": "string",
"description": "Reason for the bitrate change (e.g. NetworkCongestion)"
}
}
],
"result": {
"name": "onBitrateChangedParams",
"schema": {
"type": "object",
"properties": {
"bitrate": {
"type": "integer"
},
"width": {
"type": "integer"
},
"height": {
"type": "integer"
},
"description": {
"type": "string"
}
}
}
}
},
{
"name": "org.rdk.player.onMediaMetadata",
"summary": "Stream metadata parsed after tune",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "durationMs",
"schema": {
"type": "integer",
"description": "Total stream duration in milliseconds"
}
},
{
"name": "width",
"schema": {
"type": "integer",
"description": "Horizontal resolution of the highest-quality profile"
}
},
{
"name": "height",
"schema": {
"type": "integer",
"description": "Vertical resolution of the highest-quality profile"
}
},
{
"name": "hasDrm",
"schema": {
"type": "boolean",
"description": "true if the stream is DRM protected"
}
},
{
"name": "isLive",
"schema": {
"type": "boolean",
"description": "true if the stream is a live broadcast"
}
},
{
"name": "drmType",
"schema": {
"type": "string",
"description": "Active DRM system name, or empty string for clear"
}
},
{
"name": "languages",
"schema": {
"type": "array",
"items": {
"type": "string"
},
"description": "ISO 639 language codes of all available audio tracks"
}
},
{
"name": "bitrates",
"schema": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Available video bitrates in bps, ascending order"
}
},
{
"name": "speeds",
"schema": {
"type": "array",
"items": {
"type": "number"
},
"description": "Trick-play speeds supported by the stream"
}
}
],
"result": {
"name": "onMediaMetadataParams",
"schema": {
"type": "object",
"properties": {
"durationMs": {
"type": "integer"
},
"width": {
"type": "integer"
},
"height": {
"type": "integer"
},
"hasDrm": {
"type": "boolean"
},
"isLive": {
"type": "boolean"
},
"drmType": {
"type": "string"
},
"languages": {
"type": "array",
"items": {
"type": "string"
}
},
"bitrates": {
"type": "array",
"items": {
"type": "integer"
}
},
"speeds": {
"type": "array",
"items": {
"type": "number"
}
}
}
}
}
},
{
"name": "org.rdk.player.onAudioTracksChanged",
"summary": "Available audio track list changed",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "onAudioTracksChangedParams",
"schema": {
"type": "object"
}
},
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.onTextTracksChanged",
"summary": "Available text track list changed",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "onTextTracksChangedParams",
"schema": {
"type": "object"
}
},
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.onDrmMetadata",
"summary": "DRM access status update",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "accessStatus",
"schema": {
"type": "string",
"description": "DRM access status string reported by the DRM system"
}
}
],
"result": {
"name": "onDrmMetadataParams",
"schema": {
"type": "object",
"properties": {
"accessStatus": {
"type": "string"
}
}
}
}
},
{
"name": "org.rdk.player.onAdReservationStart",
"summary": "SCTE-35 ad reservation window opened",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "onAdReservationStartParams",
"schema": {
"type": "object"
}
},
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.onAdReservationEnd",
"summary": "SCTE-35 ad reservation window closed",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "onAdReservationEndParams",
"schema": {
"type": "object"
}
},
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.onAnomaly",
"summary": "Internal diagnostic / anomaly report",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "severity",
"schema": {
"type": "integer",
"minimum": 0,
"maximum": 3,
"description": "Severity level: 0=INFO, 1=WARNING, 2=ERROR, 3=TRACE"
}
},
{
"name": "message",
"schema": {
"type": "string",
"description": "Human-readable anomaly description"
}
}
],
"result": {
"name": "onAnomalyParams",
"schema": {
"type": "object",
"properties": {
"severity": {
"type": "integer"
},
"message": {
"type": "string"
}
}
}
}
}
]
}