ohm task (b.2): neither system ffmpeg nor Chromium's V4L2 decoder reachable
Followup to the user's "can Brave use our ffmpeg instead?" question. Both alternatives investigated, both dead ends: - System ffmpeg path: Chromium/Brave link a vendored ffmpeg. Even the use_system_ffmpeg builds use system libavcodec only as a pure SW decoder (FfmpegVideoDecoder — no hw_device_ctx / hwaccel wiring). Our ffmpeg-v4l2-request-git would be used as SW. No HW speedup. - Chromium's own V4L2VideoDecoder: class IS compiled into brave-bin (strings /opt/brave-bin/brave | grep V4L2VideoDecoder hits), but the factory is ChromeOS-gated. Feature flag strings UseChromeOSDirectVideoDecoder / V4L2FlatStatelessVideoDecoder / V4L2FlatVideoDecoder do NOT appear as strings in the binary — only AcceleratedVideoDecodeLinuxGL does, and that's the VA-API gate, not a V4L2 gate. Setting those flags on the cmdline is a no-op on this build. Conclusion: unlocking browser HW decode on ohm requires either (a) Chromium rebuilt with V4L2 decoder factory extended to Linux non-ChromeOS, (b) a multiplanar-capable libva-v4l2-request, or (c) a new chromium-on-Linux HW decode path that hasn't shipped yet. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -252,6 +252,23 @@ Non-browser HW decode (GStreamer `v4l2codecs`, FFmpeg via
|
||||
ohm is a useful starting point for anyone who wants to pick up the
|
||||
multiplanar port.
|
||||
|
||||
#### Why not "Brave via our system ffmpeg" or Chromium's own V4L2 decoder?
|
||||
|
||||
- **System ffmpeg is not a decoder source for Chromium/Brave.** Chromium
|
||||
links a vendored ffmpeg fork; even the Arch-style `use_system_ffmpeg`
|
||||
builds use system `libavcodec` only as a pure software decoder
|
||||
(`FfmpegVideoDecoder`), with no `hw_device_ctx` / hwaccel wiring.
|
||||
Installing our `ffmpeg-v4l2-request-git` would not give Brave HW decode.
|
||||
- **Chromium's own `V4L2VideoDecoder` class is compiled into `brave-bin`**
|
||||
(verified via `strings`) but gated behind ChromeOS-only runtime factory
|
||||
checks. `UseChromeOSDirectVideoDecoder` / `V4L2FlatStatelessVideoDecoder`
|
||||
feature flag names do **not** appear as strings in the brave-bin binary
|
||||
— only `AcceleratedVideoDecodeLinuxGL` does, which is a VA-API gate, not
|
||||
a V4L2 gate. Enabling those flags at the command line is a no-op on this
|
||||
build. Unlocking V4L2 on Linux Brave would require either (a) a Chromium
|
||||
rebuild with different buildflags, or (b) upstream patches to extend the
|
||||
V4L2 decoder factory to Linux non-ChromeOS targets.
|
||||
|
||||
### Acceptance criterion
|
||||
|
||||
**1080p @ 30 fps, no dropped frames.** Applies to every device and every
|
||||
|
||||
Reference in New Issue
Block a user