daedalus-v4l2 + daedalus-v4l2-dkms: bump to 872eec5 — PROTO_MAX_PAYLOAD 1 MiB (#20) #89

Merged
marfrit merged 1 commits from claude-noether/marfrit-packages:noether/daedalus-bump-872eec5-1mib-payload into main 2026-05-22 18:52:53 +00:00
Owner

Picks up reauktion/daedalus-v4l2 PR #20 (closes #19): wire-protocol cap DAEDALUS_PROTO_MAX_PAYLOAD raised from 64 KiB to 1 MiB. DAEDALUS_MAX_BITSTREAM follows; daedalus_fill_output_fmt now reports OUTPUT_MPLANE sizeimage = ~1 MiB.

Bug fixed

Firefox YouTube avc1 SW-fallback observed on higgs when any H.264 slice exceeded 64 KiB (routine on 720p+ streams). libva-v4l2-request-fourier's S_FMT-driven OUTPUT-pool resize was clamping back to 65484 and Firefox lost the slice:

v4l2-request: codec_store_buffer: OUTPUT-pool resize (need 72921 > cap 65484 → new_sizeimage 147456)
v4l2-request: codec_store_buffer_ensure_capacity: kernel returned sizeimage 65484 < required 72921

What

Both packages bumped to 0.1.0+r45+g872eec5-1:

  • daedalus-v4l2 (daemon): r43 → r45. Daemon-side allocations are dynamic, so the only growth is one ~1 MiB read buffer per daemon process at startup.
  • daedalus-v4l2-dkms (kernel module): r33 → r45. Skips the daemon-only bumps r37/r39/r41/r43 (no kernel/ or include/ change in that range) and lands the PROTO_MAX_PAYLOAD bump.

⚠ Lock-step install

Effective wire cap is min(kernel, daemon). A stale kernel with a new daemon (or vice versa) still rejects >64 KiB payloads. apt / pacman should pick both up in one transaction since they share the same upstream pin and the changelog warns explicitly.

Wire protocol

Value-only change in include/daedalus_v4l2_proto.h; struct layout unchanged. DAEDALUS_PROTO_VERSION stays at 0.

Verify post-merge

ssh higgs 'sudo apt update && sudo apt install -y daedalus-v4l2 daedalus-v4l2-dkms'
ssh higgs 'sudo modprobe -r daedalus_v4l2 2>/dev/null; sudo modprobe daedalus_v4l2'
ssh higgs 'sudo systemctl restart daedalus-v4l2'

Then open YouTube avc1 720p in Firefox; confirm no kernel returned sizeimage 65484 in libva trace and continuous decoder: OK lines in the daemon journal across pause/resume cycles.

Refs

Picks up reauktion/daedalus-v4l2 PR #20 (closes #19): wire-protocol cap `DAEDALUS_PROTO_MAX_PAYLOAD` raised from 64 KiB to 1 MiB. `DAEDALUS_MAX_BITSTREAM` follows; `daedalus_fill_output_fmt` now reports OUTPUT_MPLANE `sizeimage = ~1 MiB`. ## Bug fixed Firefox YouTube `avc1` SW-fallback observed on higgs when any H.264 slice exceeded 64 KiB (routine on 720p+ streams). libva-v4l2-request-fourier's S_FMT-driven OUTPUT-pool resize was clamping back to 65484 and Firefox lost the slice: ``` v4l2-request: codec_store_buffer: OUTPUT-pool resize (need 72921 > cap 65484 → new_sizeimage 147456) v4l2-request: codec_store_buffer_ensure_capacity: kernel returned sizeimage 65484 < required 72921 ``` ## What Both packages bumped to **0.1.0+r45+g872eec5-1**: - `daedalus-v4l2` (daemon): r43 → r45. Daemon-side allocations are dynamic, so the only growth is one ~1 MiB read buffer per daemon process at startup. - `daedalus-v4l2-dkms` (kernel module): **r33 → r45**. Skips the daemon-only bumps r37/r39/r41/r43 (no `kernel/` or `include/` change in that range) and lands the PROTO_MAX_PAYLOAD bump. ## ⚠ Lock-step install Effective wire cap is `min(kernel, daemon)`. A stale kernel with a new daemon (or vice versa) still rejects >64 KiB payloads. apt / pacman should pick both up in one transaction since they share the same upstream pin and the changelog warns explicitly. ## Wire protocol Value-only change in `include/daedalus_v4l2_proto.h`; struct layout unchanged. `DAEDALUS_PROTO_VERSION` stays at 0. ## Verify post-merge ``` ssh higgs 'sudo apt update && sudo apt install -y daedalus-v4l2 daedalus-v4l2-dkms' ssh higgs 'sudo modprobe -r daedalus_v4l2 2>/dev/null; sudo modprobe daedalus_v4l2' ssh higgs 'sudo systemctl restart daedalus-v4l2' ``` Then open YouTube avc1 720p in Firefox; confirm no `kernel returned sizeimage 65484` in libva trace and continuous `decoder: OK` lines in the daemon journal across pause/resume cycles. ## Refs - reauktion/daedalus-v4l2 issue #19 + PR #20: https://git.reauktion.de/reauktion/daedalus-v4l2/issues/19 - Companion to PR #18 (#17 tiny-bitstream filter, the *other* end of the OUTPUT-pool sizing story).
marfrit added 1 commit 2026-05-22 18:50:29 +00:00
Picks up reauktion/daedalus-v4l2 PR #20 (closes #19): wire-protocol
cap DAEDALUS_PROTO_MAX_PAYLOAD raised from 64 KiB to 1 MiB.
DAEDALUS_MAX_BITSTREAM follows; daedalus_fill_output_fmt now reports
OUTPUT_MPLANE sizeimage = ~1 MiB.

Fixes the Firefox YouTube avc1 SW-fallback observed on higgs when
any H.264 slice exceeded 64 KiB (routine on 720p+ streams).
libva-v4l2-request-fourier's S_FMT-driven OUTPUT-pool resize was
clamping back to 65484 and Firefox lost the slice; now the kernel
honours the larger sizeimage.

Both packages bumped to 0.1.0+r45+g872eec5-1:

  - daedalus-v4l2 (daemon): r43 -> r45.  Daemon-side allocations
    are dynamic, so the only growth is one ~1 MiB read buffer per
    daemon process at startup.
  - daedalus-v4l2-dkms (kernel module): r33 -> r45.  Skips the
    daemon-only bumps r37/r39/r41/r43 (no kernel/include change in
    that range) and lands the PROTO_MAX_PAYLOAD bump.

LOCK-STEP INSTALL REQUIRED: effective cap is min(kernel, daemon).
A stale kernel with a new daemon (or vice versa) still rejects
>64 KiB payloads.  apt/pacman should pick both up in one
transaction since they share the same upstream pin.

Wire-protocol value-only change in include/daedalus_v4l2_proto.h;
struct layout unchanged.  DAEDALUS_PROTO_VERSION stays at 0.
marfrit merged commit 8729c2db92 into main 2026-05-22 18:52:53 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marfrit/marfrit-packages#89