...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber box "Container" #LightGreen participant Cobalt participant Starboard participant GStreamer_client_appsrc participant GStreamer_client_rialto_sinkdecrypter_element participant ocdmProxy end box Cobalt -> Starboard: SbPlayerWriteSample2(player, sample[]) note right: Currently sample array size must be 1 Starboard -> Starboard: Create GstBuffer and add media data from sample to it opt Sample encrypted Starboard -> GStreamer_client_appsrc: gst_buffer_add_protection_meta(gst_buffer, decrytion_params) end Starboard -> GStreamer_client_appsrc: gst_app_src_push_buffer(app_src, gst_buffer) GStreamer_client_appsrc --> GStreamer_client_rialto_sink: decrypter_element: data flows through client pipeline GStreamer_client_rialto_sink decrypter_element -> GStreamer_client_rialto_sink: decrypter_element: gst_buffer_get_protection_meta(buffer) GStreamer_client_rialto_sink decrypter_element -> ocdmProxy: opencdm_gstreamer_session_decrypt(key_session, buffer, decrytion_params) ocdmProxy -> ocdmProxy: Create gst struct containing encryption data decrytion_params ocdmProxy -> GStreamer_client_rialto_sink: decrypter_element: gst_buffer_add_protection_meta(buffer, metadata) note left Decryption is deferred until the data is sent to Rialto so attach the required decryption parameters to the media frame which are then ready to be passed to Rialto when it requests more data. end note @enduml |
...