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.