Resolve discontinuities when seeking into fragmented AC-4 audio #254
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.
Related to google/ExoPlayer#11000
Proof of concept for resolving discontinuities in FMP4 AC-4 playback.
The underlying cause on our end appears to come from the fact that we can't anticipate sync frames when committing them to our sample queue. Once we reach the end of our first fragment, we begin committing samples to our sample queue, even if suitable sync frames are available in later fragments.
For this PR, we would have some sort of intermediate structure to retain samples before committing them, in the event that our format does not guarantee that every frame is a key frame. When we encounter a key frame, we empty the contents of this structure, as we can begin playback from that key frame instead. When we pass our start time, we commit any samples in the intermediate structure to our sample queue, allowing us to play from the nearest key frame.