From c480276a978ecb8675c7a8b57ed5f59388a12d7d Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Tue, 11 Aug 2026 20:41:50 +0200 Subject: [PATCH] docs(spec): native video confirmed working on device MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The spike's central question — can a SurfaceView be composited behind a transparent Tauri WebView on Android — is answered yes, verified on a physical device. No upstream issue blocked it and none demonstrated it; this appears to be the first working instance. Marks DR-148 done behind the flag and records what is confirmed versus what is still open: playback and positioning are verified, but the individual native controls (seek, audio-track, subtitle), the mini-player transition, and the MediaCodec hardware-decode claim are not yet each measured. The mini-player transition is called out as the known gap, since it is the one case where the fullscreen assumption behind "no rect plumbing needed" does not hold. Co-Authored-By: Claude Opus 5 --- docs/requirements.md | 2 +- docs/specs/android-native-video-spike.md | 27 +++++++++++++++++------- docs/traceability.md | 2 +- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/docs/requirements.md b/docs/requirements.md index 6a2b7bc1..d49dd3e8 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -312,7 +312,7 @@ Internal architecture, components, and application logic. | DR-146 | The no-audio-track fallback picks a track the renderer can actually play. When ExoPlayer selected no audio track, the recovery forced group 0 / track 0 unconditionally — but the most likely reason nothing was selected is that this very track cannot be decoded on this device, so the override reinstated the silence it was meant to fix. It now scans the groups for the first `isTrackSupported` track and overrides to that, and clears `setTrackTypeDisabled(TRACK_TYPE_AUDIO)` because audio may equally have been off at the type level, which an override alone does not undo. When no group holds a supported track the condition is logged as an error — the server was expected to transcode — rather than leaving a silent video with no explanation in the log | Playback | UR-004 | Done | | DR-148 | The video direct-play profile advertises only what the **webview** can decode. The audio codec list comes from `MediaCodecList`, which describes ExoPlayer — but video does not play through ExoPlayer on either platform: Android force-renders every video in the webview `