fix: stop alt loaders on main mediachanging to prevent append race #895
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This is most noticeable right now on safari on the hevc fmp4 stream that we have for testing. You can reproduce it in
main
by seeking around and force changing the representation to one with another codec:Usually it will fail with an append error, because we change the codec and then try to append old codec data. This happens because we previously waited until
mediachange
tostopLoaders
foraudioLoader
but for themainLoader
we stop right away. This causes a race condition where old audio gets appended before the media has fully changed, but after codecs have. The fix here is to stop/pause all segment loaders onmediachanging
Why didn't we see it sooner
Its not an issue to append data of the same codec to a sourcebuffer even if it isn't relevant. That and we always reset when starting to load that data append never caused an issue. Now that we switch codecs such an append will throw an error.