Skip to content

Conversation

@joeyparrish
Copy link
Member

When we filter HLS variants by decoding info, those not yet loaded will have no DRM info (yet). Because of this, we should consider all variants without DRM info as compatible with any known-DRM variants. When we have the right info later, we should re-check the decoding info.

This code path is specific to the preferredKeySystems config, so applications that don't use that config would not experience this bug. Applications or content not using DRM would also not run into this bug.

Due to the way CAF processes Shaka's tracks further, Shaka's missing variants can lead to CAF missing entire languages for apps using preferredKeySystems.

When we filter HLS variants by decoding info, those not yet loaded will have no DRM info (yet).  Because of this, we should consider all variants without DRM info as compatible with any known-DRM variants.  When we have the right info later, we should re-check the decoding info.

This code path is specific to the preferredKeySystems config, so applications that don't use that config would not experience this bug.  Applications or content not using DRM would also not run into this bug.

Due to the way CAF processes Shaka's tracks further, Shaka's missing variants can lead to CAF missing entire languages for apps using preferredKeySystems.
@joeyparrish joeyparrish requested a review from a team December 1, 2025 22:59
@shaka-bot
Copy link
Collaborator

shaka-bot commented Dec 1, 2025

Incremental code coverage: 100.00%

@joeyparrish joeyparrish marked this pull request as ready for review December 1, 2025 23:54
@avelad avelad added type: bug Something isn't working correctly component: HLS The issue involves Apple's HLS manifest format priority: P2 Smaller impact or easy workaround labels Dec 2, 2025
@avelad avelad added this to the v5.0 milestone Dec 2, 2025
@avelad
Copy link
Member

avelad commented Dec 2, 2025

@shaka-bot test

@shaka-bot
Copy link
Collaborator

@avelad: Lab tests started with arguments:

  • pr=9452

Comment on lines +2846 to +2853
const variants = this.streamToVariants_.get(stream) || new Set();
for (const variant of variants) {
variant.decodingInfos = [];
}

if (this.manifest_) {
await this.playerInterface_.filter(this.manifest_);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code block is causing load hangs on android-based Cast devices, which can be repro'd by using a fresh top-of-tree build of v4.16.11, and patching this entire PR.

But the load hangs stop if I specifically comment out this block of code.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it truly hangs, that means the Promise isn't resolved. I'll need to dig through the individual awaits within this call to find the one that's hanging.

@joeyparrish
Copy link
Member Author

I'm going to simplify this as much as possible and avoid making the filtering situation more complex than it already is.

@avelad
Copy link
Member

avelad commented Dec 12, 2025

@joeyparrish do you have any update?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component: HLS The issue involves Apple's HLS manifest format priority: P2 Smaller impact or easy workaround type: bug Something isn't working correctly

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants