h264: promote Intra_4x4 luma prediction (9 modes) to public API #26

Merged
marfrit merged 1 commits from noether/h264-intra-pred-4x4-api into main 2026-05-25 13:36:02 +00:00
Owner

Promotes the 9 Intra_4x4 luma intra prediction modes from tests/-only spec references (PR #12) to public src/ symbols. Same promotion pattern as PR #25 (chroma DC Hadamard).

Moved tests/h264_intra_pred_4x4_ref.c → src/h264_intra_pred_4x4.c; renamed daedalus_h264_pred_4x4_<mode>_refdaedalus_h264_pred_4x4_<mode>. The test binary now links against daedalus_core to exercise the public symbols.

All 10 tests PASS through the public API; 9 symbols exported.

Unblocks marfrit-packages substitution arc patch 0014 for Intra_4x4 luma. Follow-ups (same shape): Intra_16x16 luma, Intra_8x8 chroma, Intra_8x8 luma.

Promotes the 9 Intra_4x4 luma intra prediction modes from tests/-only spec references (PR #12) to public src/ symbols. Same promotion pattern as PR #25 (chroma DC Hadamard). Moved tests/h264_intra_pred_4x4_ref.c → src/h264_intra_pred_4x4.c; renamed `daedalus_h264_pred_4x4_<mode>_ref` → `daedalus_h264_pred_4x4_<mode>`. The test binary now links against daedalus_core to exercise the public symbols. All 10 tests PASS through the public API; 9 symbols exported. **Unblocks marfrit-packages substitution arc patch 0014** for Intra_4x4 luma. Follow-ups (same shape): Intra_16x16 luma, Intra_8x8 chroma, Intra_8x8 luma.
marfrit added 1 commit 2026-05-25 12:53:50 +00:00
PR #12 added the 9 Intra_4x4 luma intra prediction modes as test-only
spec references in tests/.  This PR promotes them to public src/
symbols so consumers (the eventual marfrit-packages substitution-arc
patch 0014) can link against them.

  Moved: tests/h264_intra_pred_4x4_ref.c → src/h264_intra_pred_4x4.c
  Renamed: daedalus_h264_pred_4x4_<mode>_ref → daedalus_h264_pred_4x4_<mode>
           (9 functions: vertical/horizontal/dc/ddl/ddr/vr/hd/vl/hu)

The src/ implementation is byte-for-byte the same code as the
test-only ref; this PR is plain plumbing.  The test binary now
links against daedalus_core to pull in the public symbols (instead
of compiling the ref file directly), exercising the path that real
consumers will use.

Same promotion shape as PR #25 (chroma DC Hadamard).

Verified on hertz:

  $ ./build/test_intra_pred_4x4
    Vertical (mode 0)          PASS
    Horizontal (mode 1)        PASS
    DC (mode 2)                PASS
    DiagDownLeft (mode 3)      PASS
    DiagDownRight (mode 4)     PASS
    VerticalRight (mode 5)     PASS
    HorizontalDown (mode 6)    PASS
    VerticalLeft (mode 7)      PASS
    HorizontalUp (mode 8)      PASS
    VR asym (sanity)           PASS

  ALL 10 intra-4x4 mode references PASS

  $ nm -g build/libdaedalus_core.a | grep "T daedalus_h264_pred_4x4"
  (9 symbols exported)

Follow-ups (same promotion pattern, can land in parallel):
  - Intra_16x16 luma (4 modes, PR #13)
  - Intra_8x8 chroma (4 modes, PR #14)
  - Intra_8x8 luma (9 modes, PRs #21 + #22)

Once all 26 intra modes are in the public API, the marfrit-packages
substitution arc can route H264PredContext's pred function pointer
tables through daedalus alongside the IDCT / deblock / qpel / DC
Hadamard substitutions already in place.
marfrit merged commit 31c68d0d0e into main 2026-05-25 13:36:02 +00:00
marfrit deleted branch noether/h264-intra-pred-4x4-api 2026-05-25 13:36:08 +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/daedalus-fourier#26