...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber box "Container" #LightGreen participant Client participant rialtoClient end box box "Platform" #LightBlue participant rialtoServer participant GStreamer_server end box == Create Web Audio Player session == Client -> rialtoClient: createWebAudioPlayer(client, pcm_params) note right This should only be called in when app is in ACTIVE state. If client porting layer requires a persistent web audio player it will need to manage creation & destruction of the rialto object on state change. end note rialtoClient -> rialtoServer: createWebAudioPlayer(client, pcm_params) rialtoServer -> rialtoServer: Check resource permissions that were granted to app and currently\nallocated pipelines permit this object to be created note left: This check is (resources.supportsnum_current_web_audio_sessions == true) && (num_current< resources.max_supported_web_audio_sessions == 0) rialtoServer -> rialtoServer: Check pcm_params valid note left: sampleSize is valid given channels & isFloat params &&\n(isSigned || !isFloat) opt Permission & pcm_params checks passed rialtoServer -> rialtoServer: Store offset & size of media transfer buffer in shm note left: This data comes from the getSharedMemory() API called when Rialto server entered ACTIVE state rialtoServer -> GStreamer_server: Create rialto server PCM audio pipeline GStreamer_server --> rialtoServer: rialtoServer --> rialtoClient: web_audio_session rialtoClient --> Client: web_audio_session rialtoServer --/ rialtoClient: notifyState(web_audio_session, IDLE) rialtoClient --/ Client: notifyState(web_audio_session, IDLE) else Checks failed rialtoServer --> rialtoClient: nullptr rialtoClient --> Client: nullptr end == Initialisation == Client -> rialtoClient: getDeviceInfo() rialtoClient -> rialtoServer: getDeviceInfo() rialtoServer --> rialtoClient: preferred_frames, max_frames, support_deferred_play note right: preferred_frames=640\nmax_frames=shm_region_size/pcm_params.sample_size\nsupport_deferred_play=true rialtoClient --> Client: preferred_frames, max_frames, support_deferred_play == Destroy Web Audio Player session == Client -> rialtoClient: ~IWebAudioPlayer() note right This should be called in when app leaves ACTIVE state or destroys it's web audio player. end note rialtoClient -> rialtoServer: ~IWebAudioPlayer(client, pcm_params) rialtoServer -> GStreamer_server: Destroy PCM audio pipeline GStreamer_server --> rialtoServer: rialtoServer --> rialtoClient: rialtoClient --> Client: @enduml |
...