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

ABR adapts across variants with different roles #947

Closed
bhh1988 opened this issue Jul 26, 2017 · 1 comment
Closed

ABR adapts across variants with different roles #947

bhh1988 opened this issue Jul 26, 2017 · 1 comment
Assignees
Labels
status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Milestone

Comments

@bhh1988
Copy link
Contributor

bhh1988 commented Jul 26, 2017

If a video has multiple audio tracks, each with different roles (but with the same language), and there's no role-preference given, then the player is initialized with all of them as part of the same variant pool. The simple_abr_manager will then just adapt across them, so you could end up with different audio tracks playing in and out.

I have a fix for this, but I want to pose a more general question: was it an intentional design decision to not include the adaptation-set's ID into the variants? Technically according to the DASH spec, a player should not adapt across two different adaptation sets of the same type. But because the adaptation-set information is not currently captured in the "variants" structure, it's impossible for ABR to do the correct thing. Right now, we have to resort to using language/role combo as a signal for whether things are in the same adaptation-set or not, and this maybe tends to be fairly accurate but obviously can be not enough too.

bhh1988 pushed a commit to bhh1988/shaka-player that referenced this issue Jul 26, 2017
This fixes a bug where two audio tracks with the same language but
different roles might be switched in and out due to ABR.

Technically the DASH spec requires that the player not adapt in/out of a
single AdaptationSet, but since the "variant" concept does not track the
AdaptationSet that its component streams originate from, the closest
thing we can go by is the "role", since two streams with different roles
certainly come from different adaptation sets.

Issue shaka-project#947
bhh1988 pushed a commit to bhh1988/shaka-player that referenced this issue Jul 26, 2017
This fixes a bug where two audio tracks with the same language but
different roles might be switched in and out due to ABR.

Technically the DASH spec requires that the player not adapt in/out of a
single AdaptationSet, but since the "variant" concept does not track the
AdaptationSet that its component streams originate from, the closest
thing we can go by is the "role", since two streams with different roles
certainly come from different adaptation sets.

Issue shaka-project#947
bhh1988 pushed a commit to bhh1988/shaka-player that referenced this issue Jul 31, 2017
This fixes bugs in both filterVariantsByRoleAndLanguage and
filterTextStreamsByRoleAndLanguage which would ultimately allow ABR to
adapt across streams/variants with different languages/roles. There were
multiple ways that this could happen, detailed in shaka-project#947 and shaka-project#918. The bug
is fixed by some re-arrangment of the filtering logic and adding logic
to the END of the filter methods that do a final pass to select a
uniform set of variant/streams.

Technically the DASH spec requires that the player not adapt in/out of a
single AdaptationSet, but since the "variant" concept does not track the
AdaptationSet that its component streams originate from, the closest
thing we can go by is the "role", since two streams with different roles
certainly come from different adaptation sets.

Fixes issue shaka-project#947 and shaka-project#918
bhh1988 pushed a commit to bhh1988/shaka-player that referenced this issue Jul 31, 2017
This fixes bugs in both filterVariantsByRoleAndLanguage and
filterTextStreamsByRoleAndLanguage which would ultimately allow ABR to
adapt across streams/variants with different languages/roles. There were
multiple ways that this could happen, detailed in shaka-project#947 and shaka-project#918. The bug
is fixed by some re-arrangment of the filtering logic and adding logic
to the END of the filter methods that do a final pass to select a
uniform set of variant/streams.

Technically the DASH spec requires that the player not adapt in/out of a
single AdaptationSet, but since the "variant" concept does not track the
AdaptationSet that its component streams originate from, the closest
thing we can go by is the "role", since two streams with different roles
certainly come from different adaptation sets.

Fixes issue shaka-project#947 and shaka-project#918
@joeyparrish joeyparrish added the type: bug Something isn't working correctly label Jul 31, 2017
@joeyparrish joeyparrish added this to the v2.2.0 milestone Jul 31, 2017
@joeyparrish joeyparrish assigned joeyparrish and unassigned vaage Aug 3, 2017
joeyparrish added a commit that referenced this issue Aug 6, 2017
This adds additional logic and tests to filtering in StreamUtils.

Closes #918
Closes #947
Closes #949

Backported to v2.1.x

Change-Id: I4cce0e0dd5d247e1eaadf7401116cdafb72c7259
@joeyparrish
Copy link
Member

The fix has been backported for v2.1.6.

@shaka-project shaka-project locked and limited conversation to collaborators Mar 22, 2018
@shaka-bot shaka-bot added the status: archived Archived and locked; will not be updated label Apr 15, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Projects
None yet
Development

No branches or pull requests

4 participants