Skip to content

feat: Fast-forward/rewind within a track - #1432

Open
qutad wants to merge 1 commit into
OxygenCobalt:devfrom
qutad:feature/hold-to-scan
Open

feat: Fast-forward/rewind within a track#1432
qutad wants to merge 1 commit into
OxygenCobalt:devfrom
qutad:feature/hold-to-scan

Conversation

@qutad

@qutad qutad commented Aug 1, 2026

Copy link
Copy Markdown

Summary

  • Preserve normal previous/next behavior for short taps.
  • Fast-forward at 2x while holding the next button.
  • Play decoded audio backward at 2x while holding the previous button.
  • Restore the original playback state when the button is released.
  • Keep scanning within the current track.
  • Preserve ReplayGain, audio focus, audio effects, and media-session progression.
  • Add tests for PCM frame reversal and amplification.

Implementation

Forward scanning uses ExoPlayer's playback-speed support.

Reverse scanning uses a bounded MediaExtractor/MediaCodec pipeline that decodes PCM windows, reverses complete interleaved frames, and streams them through AudioTrack.

Testing

  • ./gradlew spotlessCheck
  • ./gradlew :app:testDebugUnitTest
  • ./gradlew :app:assembleDebug
  • Manual testing on: Google Pixel 9a

Limitations

Reverse playback depends on Android's platform MediaCodec support. A format that Auxio can play only through its FFmpeg renderer may not support reverse scanning.

Closes #1413

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature Request: Fast-forward/rewind within a track

1 participant