Last active
December 16, 2015 10:19
-
-
Save svagionitis/5419247 to your computer and use it in GitHub Desktop.
Sequence Diagram For Loading a DVB stream using the http://www.websequencediagrams.com/.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<div class="wsd" wsd_style="vs2010"><pre> | |
# No errors on tslock or demux and dcr | |
title Sequence Diagram For Loading a DVB stream (No errors) | |
participant "Higher Layer (HTML page, JS)" as HigherLayer | |
participant "HTMLMediaElement" as MediaPlayer | |
participant "Video pipeline(Tuner, Demod, Demux, Decoder)" as VideoPipeline | |
note right of MediaPlayer | |
networkState: NETWORK_EMPTY | |
readyState: HAVE_NOTHING | |
end note | |
HigherLayer->MediaPlayer: load() | |
note right of MediaPlayer | |
networkState: NETWORK_NO_SOURCE | |
end note | |
note right of MediaPlayer | |
networkState: NETWORK_LOADING | |
end note | |
MediaPlayer->HigherLayer: loadstart | |
MediaPlayer->VideoPipeline: Lock to the frequency specified in the DVB url. | |
MediaPlayer-->HigherLayer: progress | |
note right of VideoPipeline | |
Tuner tslock to the given frequency. Everything it's ok with no problem. | |
end note | |
VideoPipeline->MediaPlayer: Ok tslocked to the frequency with no problem. | |
MediaPlayer->VideoPipeline: Can you use the demux and decoder to get the DVB stream? | |
MediaPlayer-->HigherLayer: progress | |
note right of VideoPipeline | |
Media Player uses demux and dcr to create the stream. | |
*ASSUMPTION*: The size of the video is predefined, so we don't care \nif the decoder will decode the data in order to get the size. | |
Set the duration to infinite. It might return the first couple of frames. No issues here. | |
PSI tables were retrieved with no problem. | |
end note | |
VideoPipeline->MediaPlayer: The size and the duration are returned. | |
note right of MediaPlayer | |
readyState: HAVE_METADATA | |
end note | |
MediaPlayer->HigherLayer: loadedmetadata | |
VideoPipeline->MediaPlayer: A couple of frames are returned. | |
MediaPlayer->VideoPipeline: Now that the stream is decoded and have the metadata, can you send me emough data for playback? | |
MediaPlayer-->HigherLayer: progress | |
note right of VideoPipeline | |
Media Player uses dcr to create enough data for playback. | |
end note | |
VideoPipeline->MediaPlayer: Enough data returned for playback. | |
note right of MediaPlayer | |
readyState: HAVE_ENOUGH_DATA | |
end note | |
MediaPlayer->HigherLayer: loadeddata | |
MediaPlayer->HigherLayer: canplay | |
MediaPlayer->HigherLayer: canplaythrough | |
HigherLayer->MediaPlayer: play() | |
</pre></div><script type="text/javascript" src="http://www.websequencediagrams.com/service.js"></script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment