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
|