You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.8 KiB
58 lines
1.8 KiB
4 years ago
|
@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
|