...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber box "Container" #LightGreen participant Cobalt participant Starboard participant GStreamer_client_appsrc participant decrypter_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 --> decrypter_element: data flows through client pipeline decrypter_element -> decrypter_element: gst_buffer_get_protection_meta(buffer) opt Implementation before CBCS support added decrypter_element -> ocdmProxy: opencdm_gstreamer_session_decrypt_ex(key_session, buffer, sub_samples, iv, kid, init_with_last_15, caps) elseocdmProxy Implementation after CBCS support added decrypter_element -> ocdmProxy: opencdm_gstreamer_session_decrypt_buffer(key_session, buffer, caps) end ocdmProxy Create gst struct containing encryption data decrytion_params else Implementation after CBCS support added decrypter_element -> ocdmProxy: Create gst struct containing encryption data decrytion_paramsopencdm_gstreamer_session_decrypt_buffer(key_session, buffer, caps) end ocdmProxy -> 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 |
...