Skip to content
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

Merged

Conversation

nicosang
Copy link
Contributor

@nicosang nicosang commented Mar 2, 2017

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.

@davemevans
Copy link
Contributor

The problem is that AdaptationSet@id is optional so this approach isn't foolproof.

See related issue: #1522

@nicosang
Copy link
Contributor Author

nicosang commented Mar 2, 2017

Argh.....you're right. According to you, what is the better parameter to use in order to differentiate adaptationSet?
My first idea was to use the 'lang' parameter. The problem is that we can maybe have the same language twice : for instance, 'normal' audio track and audio description track... :-(

@nicosang
Copy link
Contributor Author

nicosang commented Mar 2, 2017

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.

specifies an identifier for this Representation. The identifier shall be unique within a Period

So, we can use only streamId and representationId to store initialization segment. @bbcrddave, do you agree?

@davemevans
Copy link
Contributor

Yes, that sounds sensible.

@dsparacio dsparacio added this to Planned in Dash v2.5.0 Mar 7, 2017
@nicosang nicosang force-pushed the AudioSwitchUpdate branch 3 times, most recently from 8b610d9 to abdafa0 Compare March 13, 2017 08:47
@dsparacio
Copy link
Contributor

@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!

@nicosang
Copy link
Contributor Author

@AkamaiDASH , it should be good now. I think there is still work to do on the cleanup... ;-)

@dsparacio
Copy link
Contributor

@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.
@nicosang
Copy link
Contributor Author

nicosang commented Apr 4, 2017

@AkamaiDASH it should be good now...

@dsparacio dsparacio merged commit c59d813 into Dash-Industry-Forum:development Apr 5, 2017
@nicosang nicosang deleted the AudioSwitchUpdate branch May 5, 2017 07:36
@dsparacio dsparacio moved this from Planned to Completed in Dash v2.5.0 May 19, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Dash v2.5.0
Completed
Development

Successfully merging this pull request may close these issues.

None yet

3 participants