You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* perf: TV Guide streaming — ffmpeg backend, decode pipeline optimizations
Switch default desktop video backend from openh264 (Baseline-only) to
system ffmpeg (Main/High profile, SIMD-optimized). Profiling showed
openh264 caused repeated reinit cycles (~5s gaps) on archive.org
Main-profile content, yielding only 2 fps. With ffmpeg: 27-32 fps
decode, 15-30 fps display, zero audio drops.
Streaming buffer optimizations:
- Lock-free reads for cached header/moov data (skip mutex on immutable regions)
- Buffer eviction uses copy_within+truncate instead of drain
- RETAIN_BEHIND increased to 8MB for tolerant-decode seek-back coverage
Video decode pipeline:
- Two-phase H.264 decode strategy for openh264 path: reinit only for
initial sync, then tolerate errors during steady-state playback
- Move frame scaling from decode thread to main thread (unblock decode)
- Audio channel capacity 64→256 (eliminates 41-56% drop rate)
- AAC SampleBuffer reused across decode calls (avoid per-frame alloc)
YUV-to-RGBA conversion:
- Process pixel pairs sharing chroma samples (halves UV lookups)
- Unchecked indexing with row-level bounds verification
- Odd-width frame support
Measured improvement (CH5 / CH13):
- Decode: 2.3→27.7 fps / 2.1→32.5 fps
- Display: 2.0→15-19 fps / 1.6→30.1 fps
- Audio drops: 41%→0% / 56%→0%
- H.264 reinits: 4 per 16s → 0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: address AI review feedback (iteration 1)
Automated fix by Claude in response to Gemini/Codex review.
Iteration: 1/5
Co-Authored-By: AI Review Agent <noreply@anthropic.com>
* fix: revert default feature to video-decode (openh264) for CI compat
CI Docker containers don't have ffmpeg dev libraries installed.
Keep openh264 as the default (works in CI), document ffmpeg as the
recommended desktop build path in Cargo.toml feature comments.
To build with ffmpeg locally:
cargo build -p oasis-app --no-default-features \
--features video-decode-ffmpeg,javascript
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: YUV bounds checks use assert! not debug_assert! (Gemini review)
The bounds checks guarding unsafe get_unchecked calls in yuv420_to_rgba
must use assert! (not debug_assert!) to maintain soundness in release
builds. debug_assert! is stripped in release, which would allow invalid
strides from callers to cause UB in this public safe function.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: AI Agent Bot <ai-agent@localhost>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: AI Review Agent <ai-review-agent@localhost>
0 commit comments