...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml
autonumber
box "Platform" #LightGreen
participant rialtoClient
end box
box "Platform" #LightBlue
participant rialtoServer
participant GStreamer_server
participant Ocdm
end box
note across
Gstreamer app source uses 2 signals, need-data and enough-data,
to notify its client whether it needs more data. Rialto server
should only push data when the appsrc indicates that it is in
the need-data state.
end note
loop While appsrc needs data && appsrc data available in shm buffer
rialtoServer -> rialtoServer: Extract frame's metadata from shm
opt Frame encrypted
rialtoServer -> Â GStreamer_server: gst_buffer_add_protection_meta(buffer, meta)
end
rialtoServer -> GStreamer_server: Set width/height caps
opt new codec_data in frame
rialtoServer -> GStreamer_server: Set codec_data caps
end
rialtoServer -> GStreamer_server: gst_app_src_push_buffer(src, gst_buffer)
rialtoServer -> rialtoServer: 'Remove' frame from shm
opt First video frame pushed at start of playback / after seek
note across: Not currently implemented
rialtoServer --/ rialtoClient: notifyFrameReady(frame_timestamp)
end
opt Appsrc data exhausted from shm
opt (status == EOS) for this appsrc
rialtoServer -> GStreamer_server: notify EOS
else Not EOS
rialtoServer --/ rialtoClient: notifyNeedMediaData(...)
end
end
end
@enduml |
...