daedalus-v4l2{,-dkms}: f0d4186 -> 79256dc — H.264 B-frame reorder + menu ctrls
Lock-step bump of both packages to daedalus-v4l2#7 + #4. PROTO_VERSION bumps 0 → 1 at the daemon ↔ kernel chardev wire: REQ_DECODE adds __u64 src_pts (the OUTPUT vb2 timestamp); RESP_FRAME adds __u32 flags (HAS_PIXELS / SRC_CONSUMED) + __u64 output_src_pts (= frame->pts on drain). Both .debs must be installed atomically or the chardev handshake rejects the version mismatch. * daedalus-v4l2: daemon's send_packet → receive_frame loop now stamps pkt->pts = req->src_pts and looks up the cookie for each drained frame via frame->pts. chardev_client emits multiple RESP_FRAME messages per REQ_DECODE when libavcodec's display- order DPB releases an earlier frame on receipt of a later bitstream — fixes the "2 1 4 3 6 5" pair-swap on H.264 streams with B-frames. * daedalus-v4l2-dkms: kernel device_run mirrors src_buf timestamp into REQ_DECODE.src_pts. Completion path splits HAS_PIXELS / SRC_CONSUMED: src is released as soon as send_packet succeeds (so the m2m scheduler moves on), dst stays parked until the matching frame is drained later. TIMESTAMP_COPY's auto src→dst pairing no longer applies once lifecycles decouple — dst is stamped explicitly from inflight->src_pts at HAS_PIXELS time. * daedalus-v4l2-dkms also carries forward the -2 multi-kernel postinst fix (#64) from the prior PKGREL. PKGREL resets to 1 on the new upstream pin. The daedalus-v4l2#4 H.264 DECODE_MODE + START_CODE menu controls (a cosmetic warning fix that PR landed alongside #7) is also subsumed — "Unable to set control(s) error_idx=2/2" no longer fires. Refs: * reauktion/daedalus-v4l2#7 * reauktion/daedalus-v4l2#4 * reauktion/daedalus-v4l2#6
This commit is contained in:
+3
-3
@@ -14,9 +14,9 @@
|
||||
# Sibling userspace package: ../daedalus-v4l2/build-deb.sh
|
||||
set -euo pipefail
|
||||
|
||||
UPSTREAM_COMMIT=f0d41867f60f5bf8dbfcc6cc16404d7d7eb90014
|
||||
PKGVER=0.1.0+r24+gf0d4186
|
||||
PKGREL=2 # postinst: autoinstall for every installed kernel with headers (#64)
|
||||
UPSTREAM_COMMIT=79256dc7ef41f83873ca9c23db20f5888858e65d
|
||||
PKGVER=0.1.0+r28+g79256dc
|
||||
PKGREL=1 # reset for new upstream pin (79256dc — H.264 B-frame reorder fix); still carries the #64 multi-kernel postinst fix
|
||||
MODULE_NAME=daedalus_v4l2
|
||||
|
||||
HERE=$(dirname "$(readlink -f "$0")")
|
||||
|
||||
+22
@@ -1,3 +1,25 @@
|
||||
daedalus-v4l2-dkms (0.1.0+r28+g79256dc-1) bookworm trixie; urgency=medium
|
||||
|
||||
* Bump to 79256dc — H.264 B-frame display reorder fix (closes
|
||||
daedalus-v4l2#6). libavcodec's H.264 decoder reorders output to
|
||||
display order before returning from avcodec_receive_frame; the
|
||||
daemon was binding each REQ_DECODE's pixels to the cookie of the
|
||||
bitstream that triggered the receive_frame call, not the cookie
|
||||
of the bitstream that actually produced the picture. For B-frame
|
||||
sequences this paired cookie N's CAPTURE buffer with cookie N-2's
|
||||
pixels and silently lost intermediate frames — visible as
|
||||
"2 1 4 3 6 5" frame pairing in mpv / Firefox on Pi CM5.
|
||||
* Wire-protocol bump (DAEDALUS_PROTO_VERSION 0 → 1): REQ_DECODE
|
||||
gains __u64 src_pts; RESP_FRAME gains __u32 flags +
|
||||
__u64 output_src_pts. Kernel + daemon must install atomically
|
||||
(this package + daedalus-v4l2 0.1.0+r28+g79256dc).
|
||||
* Carries forward the #64 multi-kernel postinst fix from -2:
|
||||
autoinstall for every /lib/modules/*/build that resolves to real
|
||||
headers, not just $(uname -r).
|
||||
* Closes #64.
|
||||
|
||||
-- Markus Fritsche <mfritsche@reauktion.de> Thu, 21 May 2026 12:00:00 +0000
|
||||
|
||||
daedalus-v4l2-dkms (0.1.0+r24+gf0d4186-2) bookworm trixie; urgency=medium
|
||||
|
||||
* postinst: autoinstall for every installed kernel with headers, not
|
||||
|
||||
Reference in New Issue
Block a user