...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber box "Container" #LightGreen participant Cobalt participant Starboard participant GStreamer_client participant rialtoClient end box box "Platform" #LightBlue participant rialtoServer participant GStreamer_server end box == Initialisation - register for callbacks == opt Video source attached rialtoServer -> GStreamer_server: g_signal_connect(video_decoder, getVideoUnderflowSignalName_soc(), video_underflow_cb, user_data); GStreamer_server --> rialtoServer: video_handler_id end opt Audio source attached rialtoServer -> GStreamer_server: g_signal_connect(audio_decoder, getAudioUnderflowSignalName_soc(), audio_underflow_cb, user_data); GStreamer_server --> rialtoServer: audio_handler_id end == Termination - unregister for callbacks == opt Video source removed rialtoServer -> GStreamer_server: g_signal_handler_disconnect(video_decoder, video_handler_id); GStreamer_server --> rialtoServer: end opt Audio source removed rialtoServer -> GStreamer_server: g_signal_handler_disconnect(audio_decoder, audio_handler_id); GStreamer_server --> rialtoServer: end == Underflow == opt Data starvation in server AV pipeline GStreamer_server -/ rialtoServer: video_underflow_cb() or audio_underflow_cb() opt underflow_enabled && !underflow_cancelled rialtoServer -/ rialtoClient: notifyBufferUnderflow(source_id) rialtoClient -/ GStreamer_client: notifyBufferUnderflow(source_id) GStreamer_client -/ Starboard: emit video_underflow_cb() or audio_underflow_cb() note over Starboard, GStreamer_client Starboard does not have any support for underflow so the event can be ignored for this integration. end note end note across There will be one re more pending need data requests at this point which if serviced will allow playback to resume end note end @enduml |
...