Skip to content

Show decoder-observed audio source details - #1269

Open
danielcamposramos wants to merge 1 commit into
segler-alex:masterfrom
danielcamposramos:codex/audio-source-observability
Open

danielcamposramos wants to merge 1 commit into
segler-alex:masterfrom
danielcamposramos:codex/audio-source-observability

Conversation

@danielcamposramos

Copy link
Copy Markdown

Summary

  • retain useful ICY/Icecast headers even when a stream has no icy-metaint;
  • parse malformed ice-audio-info tokens defensively;
  • normalize ExoPlayer ICY bitrate units and retain the metadata interval;
  • keep metadata stripping gated by an actual positive interval;
  • merge ExoPlayer's decoder-observed MIME/codec/sample-rate/channel tuple into
    the existing stream info;
  • show one optional, compact row such as
    AAC-LC · 44.1 kHz · stereo in the full player;
  • add English and Brazilian Portuguese channel labels;
  • run the repository's declared JUnit Jupiter/Vintage tests through JUnit
    Platform instead of silently executing zero tests.

This addresses the placement concern in #349 without adding information to the
already crowded station list: the row is limited to the full player and becomes
GONE when no decoder/source details are known.

Layer boundary

The displayed values describe the compressed source format consumed by the
player. They intentionally do not claim the format or bit depth of Android's
final mixer/HAL/device output.

Tests

  • testFreeDebugUnitTest: 11 tests, 0 failures, 0 skipped
  • lintFreeDebug: pass
  • assembleFreeDebug: pass
  • git diff --check: pass

Current master references two dependency coordinates that were unavailable
during local verification. A Gradle init script substituted their resolvable
coordinates and set a local min-SDK override for the verification build only;
no dependency or min-SDK change is included in this pull request.

Provenance

The device experiment and contribution were developed collaboratively by
Daniel Campos Ramos with Codex CLI / GPT-SOL and Claude CLI / Opus 4.8.
The live experiment showed why source observability is preferable to a
misleading "24-bit" application switch: source decode and final Android output
are separate layers.

Retain useful ICY headers without requiring in-band metadata, parse Icecast audio info defensively, normalize bitrate units, and keep metadata stripping gated by a real interval. Merge ExoPlayer's observed codec/rate/channel tuple into service state and render it in a compact optional player row with English and pt-BR resources. Enable the declared JUnit 5/Vintage suite through JUnit Platform and add regression coverage.
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.

1 participant