penguin/loopdeck

A simple player that support A-B looping for FiiO M11S

VALIDATION.md

raw · 11701 bytes

Validation for 0.1.0

No APK was built. Android Gradle plugin project evaluation, the Android resource linker, the NDK cross-build, packaging and actual M11S playback were not executed. This is a source delivery for the owner to build and test on the device.

Checks completed

Fixture Result
Generated 24-bit stereo WAV Decode / EOF / seeks passed at both rates
FLAC encoded from the WAV Passed
TTA encoded from the WAV Passed
WavPack encoded from the WAV Passed
WMA v2 encoded from the WAV Passed
MP3 encoded from the WAV Passed
FFmpeg sample monkeyaudio/sh3.ape Passed
FFmpeg sample A-codecs/tak/lostchord-tak_2_2_0.tak Passed

Native TAK 1.0 / codec type 0

The user-supplied 8 MiB TAK prefix declares codec type 0, which the bundled FFmpeg cannot decode. LoopDeck now selects a separate native C++ decoder for it.

The Windows DLL was executed only by a host reference test harness. It and the user's music are not included in this source archive or required by the app. The rest of the original track, other real codec-0 albums, ARM64 performance, Android integration and actual device playback remain unverified. No APK was built.

The seek test compares 1,024 output frames with sequential decoding. For resampled output it excludes the first 64 frames from the comparison to allow filter warm-up. The maximum allowed absolute sample difference is 0.003 on the float PCM scale. ASF/WMA's demuxer prints seek-probing warnings for the generated WMA fixture, but its compared output passes.

One additional legacy FFmpeg sample, A-codecs/lossless/luckynight.ape, failed decoding in both this decoder and the system FFmpeg CLI. It was not counted as a pass or silently ignored. Another APE sample passed. No audio fixtures are included in this archive, and these checks do not cover all versions of every format.

First device checks

  1. Build with ./build.sh, install, grant the actual microSD music folder.
  2. Open examples from the real collection: TTA, TAK, APE, WV and WMA.
  3. Seek well into a long album; test A/B both while playing and while paused.
  4. Confirm cached short repeats and seek-mode long repeats, pause/resume and clearing.
  5. Lock the screen, test physical buttons and headphone disconnect.
  6. Confirm the source rate / requested output rate and check FiiO's audio settings.

AudioTrack timing, final DAC format, actual gaplessness and responsiveness require the device. They are not established by host decoder tests.

Album-image track view patch

Host checks for this change:

Next-track buffering patch

These are host checks. No APK was built and no real AudioTrack/codec/storage playback was tested for this change. On the M11S, check a continuous lossless album with the screen off, seek/mark A–B close to a file boundary, pause/resume during a handoff, skip tracks, stop, and try a sample-rate change. Confirm the final samples of the last track play and no stale preloaded audio appears after a seek.

Output warmup patch

No APK was built. The silent lead-in must still be checked on the device to confirm that its output route wakes within one second. Ordinary pause/resume uses its existing queued audio without an added lead-in.

Native sample-rate output (base 3d1cfda)

No APK was built. Android/vendor processing may still change the rate downstream.

Bluetooth server/client (base 4cbe5c5)

No APK was built. On the FiiO/Pixel, verify initial Bluetooth pairing, permission prompts, folder grant, screen-off controls, media notifications, CUE browsing, A–B editing and native-rate output. Disconnect/reconnect, disable Bluetooth in Settings and switch modes while playing. Server playback should continue when the phone disconnects, and Client must never play the remote file locally. Hardware Bluetooth throughput, permissions and vendor background behavior remain unverified.

Controller refactor (base def581b)

No APK was built. Device UI, permission dialogs and real Bluetooth remain checks for the owner after applying the patch.