| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- @startuml
 
- participant SegmentLoader order 1
 
- participant "media-segment-request" order 2
 
- participant "videojs-contrib-media-sources" order 3
 
- participant mux.js order 4
 
- participant "Native Source Buffer" order 5
 
- SegmentLoader -> "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(...)
 
-   end
 
- end
 
- SegmentLoader -> SegmentLoader : handleUpdateEnd_()
 
- note left
 
-   Saves segment timing info
 
-   and starts next request.
 
- end note
 
- @enduml
 
 
  |