| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | @startumlparticipant SegmentLoader order 1participant "media-segment-request" order 2participant "videojs-contrib-media-sources" order 3participant mux.js order 4participant "Native Source Buffer" order 5SegmentLoader -> "media-segment-request" : mediaSegmentRequest(...)group Request  "media-segment-request" -> SegmentLoader : doneFn(...)  note left    At end of all requests    (key/segment/init segment)  end note  SegmentLoader -> SegmentLoader : handleSegment(...)  note left    "Probe" (parse) segment for    timing and track information  end note  SegmentLoader -> "videojs-contrib-media-sources" : append to "fake" source buffer  note left    Source buffer here is a    wrapper around native buffers  end note  group Transmux    "videojs-contrib-media-sources" -> mux.js : postMessage(...setAudioAppendStart...)    note left      Used for checking for overlap when      prefixing audio with silence.    end note    "videojs-contrib-media-sources" -> mux.js : postMessage(...alignGopsWith...)    note left      Used for aligning gops when overlapping      content (switching renditions) to fix      some browser glitching.    end note    "videojs-contrib-media-sources" -> mux.js : postMessage(...push...)    note left      Pushes bytes into the transmuxer pipeline.    end note    "videojs-contrib-media-sources" -> mux.js : postMessage(...flush...)    "mux.js" -> "videojs-contrib-media-sources" : postMessage(...data...)    "videojs-contrib-media-sources" -> "Native Source Buffer" : append    "Native Source Buffer" -> "videojs-contrib-media-sources" : //updateend//    "videojs-contrib-media-sources" -> SegmentLoader : handleUpdateEnd(...)  endendSegmentLoader -> SegmentLoader : handleUpdateEnd_()note left  Saves segment timing info  and starts next request.end note@enduml
 |