Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

PlantUML Macro
formatSVG
titleCobalt pushing media frames
@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

...