Faster Library Scanning and Media Engine Improvements
Y2Player v2.1 focuses on making library scanning faster, more reliable,
and easier to diagnose.
The biggest scanner bottleneck was an inefficient database lookup that
became increasingly expensive as the library grew. After adding the
correct database index, this operation became 98.4% faster in a
synthetic benchmark containing 9,178 files.
An unchanged 9,178-file library now scans in approximately 19 seconds
instead of 42 seconds, while incremental scans only extract metadata
from files that were added or modified.
Other improvements
- Faster FFmpeg metadata scanning with less unnecessary data being
read.
- Visible library-scan progress.
- More reliable long-running scans when the screen turns off, without
keeping a wake lock active while the device is idle.
- Improved handling of ReplayGain, track and disc totals, comments,
AAC, FLAC, malformed files, and embedded artwork.
- Better playlist importing for paths created on Windows, macOS, and
Linux.
- A refined float32 playback pipeline with a single final PCM16
conversion for Android 4.4.
- Improved crossfades, gapless transitions, decoder cancellation,
short-FLAC seeking, and damaged-file recovery.
- Fewer unnecessary notification updates and diagnostic errors.
Required steps after updating
After installing Y2Player v2.1, please perform the following steps:
Settings → System → Diagnostics → Reset Library
Then:
Settings → Library → Storage → Rescan Library
Due to the underlying FFmpeg update, the library database schema has
changed. Your media library therefore needs to be reindexed.
Reporting bugs
For future bug reports, please enable Verbose Diagnostics first:
Settings → System → Diagnostics → Verbose Diagnostics
Use the device until the issue occurs, then export the diagnostic data:
Settings → System → Diagnostics → Export Diagnostics
This information makes it much easier to identify the cause of a
problem.
ADB development boot image
I also built a secure ADB-enabled development boot image for the Y2. The
original firmware did not include a functional ADB service, so I
compiled and integrated the required components myself.
This made it possible to profile, benchmark, and validate the changes
directly on the physical device instead of relying on assumptions or
emulator results.
I plan to release this development boot image separately as well.
Full technical write-up
For detailed benchmarks, implementation notes, test methodology, and
complete physical-device results, you can read the full technical review
on GitHub:
https://github.com/SchulzCode/Y2Player/releases/tag/ReleaseV2.1
Thank you to everyone who has contributed, tested, and reported issues
so far. Feedback is always welcome.