ffmpeg-v4l2-request-fourier: route remaining H.264 qpel 8x8 positions through daedalus-fourier (0012) #101
Reference in New Issue
Block a user
Delete Branch "claude-noether/marfrit-packages:noether/h264-substitute-qpel-rest"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes the H.264 qpel substitution. Extends 0007 (mc20 put_ only) to all 15 useful positions in both put_ and avg_ tables — 29 substitutions total.
Each is a uniform wrapper around
daedalus_recipe_dispatch_h264_qpel_{avg_,}mcXY(fourier PRs #15-#20) via a single DEFINE_QPEL_WRAPPER macro on the libavcodec shim side.All recipe entries route AUTO to CPU NEON — no QPU shaders for non-mc20 positions yet. Plumbing-only NEON-to-NEON; bit-exact against
ff_*_h264_qpel8_*_neon(each dispatch already bit-exact-gated in its fourier PR).16x16 qpel tables stay on in-tree NEON (daedalus only exposes 8x8 today).
After this PR: the substitution arc covers nearly all H.264 8-bit 4:2:0 hot-path kernels — IDCT 4×4 + 8×8, all 4 luma deblock (inter+intra), chroma v/h deblock (non-intra), chroma DC Hadamard, and all 30 qpel 8×8 positions. Remaining bits are minor edge cases: chroma intra deblock (4:2:0 gating) and intra prediction primitives.
Closes the H.264 qpel substitution. Extends 0007 (which routed only mc20 put_) to ALL 15 useful positions in BOTH the put_ and avg_ tables, skipping mc00 (integer copy / pointer-only fast path). 29 substitutions total: 14 new put_ + 15 avg_. Each wraps a single daedalus_recipe_dispatch_h264_qpel_{avg_,}mcXY call (the dispatches landed in daedalus-fourier PRs #15-#20). Collapsed via a single DEFINE_QPEL_WRAPPER macro on the libavcodec shim side so the diff is uniform. All recipe-table entries route AUTO to CPU NEON — no QPU shaders for any qpel position other than mc20 yet. Plumbing-only NEON-to-NEON via the daedalus recipe layer; bit-exact against the in-tree ff_*_h264_qpel8_*_neon path (each daedalus dispatch is already bit-exact-gated by the corresponding fourier PR's test). 16x16 qpel tables ([0][...]) stay on the in-tree NEON. daedalus only exposes 8x8 today; 16x16 substitution can land once fourier provides those variants. Verified the patch applies cleanly on top of 0001-0011 against the pinned upstream commit b57fbbe5 on hertz.