fix(playback): reset silence detector state on media item transition to prevent false silence skip across tracks#4082
Open
kairosci wants to merge 1 commit into
Conversation
…to prevent false silence skip across tracks
Contributor
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughAdds a single call in ChangesSilence Tracking Reset Fix
Estimated code review effort: 1 (Trivial) | ~2 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Problem
Playback freezes after auto-advancing to the next track when instant silence skip is enabled. The track jumps forward and then gets stuck, requiring a manual slider move to resume playback.
Cause
The SilenceDetectorAudioProcessor retains its in-silence state across track transitions when ExoPlayer does not flush the audio processor pipeline (which happens when both tracks share the same audio format, a common scenario for YouTube Music streams). When the previous track ends with a fade-out silence, the detector triggers a coroutine that seeks forward 15 seconds into the new track after a 200ms debounce delay, causing the player to enter an inconsistent state.
Solution
Reset the silence detector tracking state at every media item transition in onMediaItemTransition. This ensures the detector starts fresh for each new track regardless of whether ExoPlayer flushes the audio pipeline, eliminating false triggers that seek into the new track.
Testing
Compiled successfully with
./gradlew :app:assembleFossDebug. The change is a single-line addition ofplayerSilenceProcessors[player]?.resetTracking()in theonMediaItemTransitioncallback, which directly addresses the stale state retention at the root.Related Issues
Closes #4014
Summary by CodeRabbit