ffmpeg-v4l2-request-fourier: route H.264 luma intra deblock through daedalus-fourier (0010) #99

Merged
marfrit merged 1 commits from claude-noether/marfrit-packages:noether/h264-substitute-deblock-intra into main 2026-05-25 11:28:43 +00:00
Owner

Adds the bS=4 intra-strength variants of the already-substituted luma_v / luma_h deblock (0005, 0008). Intra MBs and certain inter-MB edges (4x4 transform boundaries inside Intra_NxN neighbours) force boundary strength to 4 per H.264 §8.7.2.1.

  • H264DSPContext.v_loop_filter_luma_intra → daedalus dispatch
  • H264DSPContext.h_loop_filter_luma_intra → daedalus dispatch

Both kernels landed in daedalus-fourier PR #11. NEON-to-NEON via daedalus recipe (no intra QPU shaders yet).

Signature differs from bS<4: no tc0 — wrapper passes meta with alpha/beta set; tc0[] ignored by the intra dispatch (bS=4 hardcodes strength).

Chroma intra deferred to a follow-up because the chroma init has a 4:2:0 / 4:2:2 split (chroma_format_idc gating); the daedalus dispatch is 4:2:0-only and needs explicit conditional substitution. (This is also a latent concern for the 0009 chroma substitution — works fine for 4:2:0 YouTube streams; would be wrong for 4:2:2 content.)

Adds the bS=4 intra-strength variants of the already-substituted luma_v / luma_h deblock (0005, 0008). Intra MBs and certain inter-MB edges (4x4 transform boundaries inside Intra_NxN neighbours) force boundary strength to 4 per H.264 §8.7.2.1. - `H264DSPContext.v_loop_filter_luma_intra` → daedalus dispatch - `H264DSPContext.h_loop_filter_luma_intra` → daedalus dispatch Both kernels landed in daedalus-fourier PR #11. NEON-to-NEON via daedalus recipe (no intra QPU shaders yet). Signature differs from bS<4: no tc0 — wrapper passes meta with alpha/beta set; tc0[] ignored by the intra dispatch (bS=4 hardcodes strength). **Chroma intra deferred** to a follow-up because the chroma init has a 4:2:0 / 4:2:2 split (chroma_format_idc gating); the daedalus dispatch is 4:2:0-only and needs explicit conditional substitution. (This is also a latent concern for the 0009 chroma substitution — works fine for 4:2:0 YouTube streams; would be wrong for 4:2:2 content.)
marfrit added 1 commit 2026-05-25 11:21:12 +00:00
Adds the bS=4 intra-strength variants of the already-substituted
luma_v / luma_h deblock (0005, 0008).  Intra MBs and certain
inter-MB edges (4x4 transform boundaries inside an Intra_NxN
neighbour) force boundary strength to 4 per H.264 §8.7.2.1.

  H264DSPContext.v_loop_filter_luma_intra →
    daedalus_recipe_dispatch_h264_deblock_luma_v_intra
  H264DSPContext.h_loop_filter_luma_intra →
    daedalus_recipe_dispatch_h264_deblock_luma_h_intra

Both kernels landed in daedalus-fourier PR #11.  Recipe → CPU NEON
(no intra QPU shaders yet); plumbing-only NEON-to-NEON via daedalus.

Signature differs from bS<4: no tc0 argument.  Wrapper passes
daedalus_h264_deblock_meta with alpha/beta set; tc0[] is ignored by
the intra dispatch (bS=4 hardcodes the strength).

Chroma intra variants are deferred to a follow-up because the chroma
init has a 4:2:0 / 4:2:2 split (chroma_format_idc gating) — the
daedalus dispatch is 4:2:0-only and needs explicit conditional
substitution to avoid running on 4:2:2 chroma.

Verified the patch applies cleanly on top of 0001-0009 against the
pinned upstream commit b57fbbe5 on hertz.
marfrit merged commit 1f58ff2b6b into main 2026-05-25 11:28:43 +00:00
marfrit deleted branch noether/h264-substitute-deblock-intra 2026-05-25 11:28:46 +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#99