-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Audio switch management update #1813
Audio switch management update #1813
Conversation
The problem is that AdaptationSet@id is optional so this approach isn't foolproof. See related issue: #1522 |
Argh.....you're right. According to you, what is the better parameter to use in order to differentiate adaptationSet? |
The solution is to use the id of the representation which is a mandatory parameter. According to the DASH spec (ISO/IEC 23009-1:2014) in section 5.3.5.2, this id is unique in a specific period.
So, we can use only streamId and representationId to store initialization segment. @bbcrddave, do you agree? |
Yes, that sounds sensible. |
67cbc31
to
72146af
Compare
8b610d9
to
abdafa0
Compare
@nicosang looks like some other PR merging caused a conflict here. Can you take a look when you have some time? Thanks for all the cleanup work you have been doing. Really great stuff! |
abdafa0
to
ce9a74f
Compare
@AkamaiDASH , it should be good now. I think there is still work to do on the cleanup... ;-) |
@nicosang If you would like this in the next release please resolve conflicts. |
…quality in order to differentiate audio languages
… id of representation. This parameter is mandatory and unique in a period whatever the media type. So, in order to store downloaded init segment, we only use streamId and representationId
…tion was thrown. A reset call on the bufferController was destroying the attribute appendedBytesInfo. The new BufferController was then registered on SOURCEBUFFER_APPEND_COMPLETED event. The onAppended callback was called with an undefined value of appendedBytesInfo (the sourceBuffer is still the same).
The call to getInitRequest has to be made only after an event TIMED_TEXT_REQUESTED or INIT_REQUESTED to be sure that the specific init segment has not been alredy loaded.
…the latest executed request before the currentTime. Before this commit, sometimes a little seek command could be done. Indeed, by default the threshold is equal to half the duration of a segment. The latest executed request startTime could be greater than the currentTime. So, in the onCurrentTrackChanged callback of Stream.js, a seek command was called after the creation of the new StreamProcessor.
ce9a74f
to
12f3e00
Compare
@AkamaiDASH it should be good now... |
I used the sample http://wowzaec2demo.streamlock.net/vod/_definst_/ElephantsDream/smil:ElephantsDream.smil/manifest_mvnumber.mpd in order to test audio switch management. I found the first downloaded init audio segment was always used for each language switch.
With this specific sample, it works maybe because the two audio configurations are very similar.
What I propose in this PR is to store init segment by adding the id of adaptationSet. Indeed, two audio languages could have the same quality in two different adaptationSet.