current-transmux-and-append-flow.plantuml 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. @startuml
  2. participant SegmentLoader order 1
  3. participant "media-segment-request" order 2
  4. participant "videojs-contrib-media-sources" order 3
  5. participant mux.js order 4
  6. participant "Native Source Buffer" order 5
  7. SegmentLoader -> "media-segment-request" : mediaSegmentRequest(...)
  8. group Request
  9. "media-segment-request" -> SegmentLoader : doneFn(...)
  10. note left
  11. At end of all requests
  12. (key/segment/init segment)
  13. end note
  14. SegmentLoader -> SegmentLoader : handleSegment(...)
  15. note left
  16. "Probe" (parse) segment for
  17. timing and track information
  18. end note
  19. SegmentLoader -> "videojs-contrib-media-sources" : append to "fake" source buffer
  20. note left
  21. Source buffer here is a
  22. wrapper around native buffers
  23. end note
  24. group Transmux
  25. "videojs-contrib-media-sources" -> mux.js : postMessage(...setAudioAppendStart...)
  26. note left
  27. Used for checking for overlap when
  28. prefixing audio with silence.
  29. end note
  30. "videojs-contrib-media-sources" -> mux.js : postMessage(...alignGopsWith...)
  31. note left
  32. Used for aligning gops when overlapping
  33. content (switching renditions) to fix
  34. some browser glitching.
  35. end note
  36. "videojs-contrib-media-sources" -> mux.js : postMessage(...push...)
  37. note left
  38. Pushes bytes into the transmuxer pipeline.
  39. end note
  40. "videojs-contrib-media-sources" -> mux.js : postMessage(...flush...)
  41. "mux.js" -> "videojs-contrib-media-sources" : postMessage(...data...)
  42. "videojs-contrib-media-sources" -> "Native Source Buffer" : append
  43. "Native Source Buffer" -> "videojs-contrib-media-sources" : //updateend//
  44. "videojs-contrib-media-sources" -> SegmentLoader : handleUpdateEnd(...)
  45. end
  46. end
  47. SegmentLoader -> SegmentLoader : handleUpdateEnd_()
  48. note left
  49. Saves segment timing info
  50. and starts next request.
  51. end note
  52. @enduml