h264: promote Intra_4x4 luma prediction (9 modes) to public API
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.
This commit is contained in:
+7
-7
@@ -392,6 +392,7 @@ endif()
|
||||
add_library(daedalus_core STATIC
|
||||
src/daedalus_core.c
|
||||
src/h264_chroma_dc.c
|
||||
src/h264_intra_pred_4x4.c
|
||||
src/v3d_runner.c
|
||||
${FFASM_SOURCES}
|
||||
${FFASM_LPF_SOURCES}
|
||||
@@ -538,13 +539,12 @@ add_executable(test_api_opportunistic_qpu tests/test_api_opportunistic_qpu.c)
|
||||
target_link_libraries(test_api_opportunistic_qpu PRIVATE daedalus_core)
|
||||
target_compile_options(test_api_opportunistic_qpu PRIVATE -O2)
|
||||
|
||||
# H.264 Intra_4x4 luma prediction (9 modes) — reference + tests.
|
||||
# Pure CPU + spec-derived; no daedalus_core dependency yet (this is
|
||||
# the bit-exact gate for the eventual shader / dispatch wiring).
|
||||
add_executable(test_intra_pred_4x4
|
||||
tests/test_intra_pred_4x4.c
|
||||
tests/h264_intra_pred_4x4_ref.c
|
||||
)
|
||||
# H.264 Intra_4x4 luma prediction (9 modes) — public src primitives.
|
||||
# The bodies now live in src/h264_intra_pred_4x4.c (linked into
|
||||
# daedalus_core for use by libavcodec.so substitution-arc consumers).
|
||||
# This test exercises the public symbols.
|
||||
add_executable(test_intra_pred_4x4 tests/test_intra_pred_4x4.c)
|
||||
target_link_libraries(test_intra_pred_4x4 PRIVATE daedalus_core)
|
||||
target_compile_options(test_intra_pred_4x4 PRIVATE -O2)
|
||||
|
||||
# H.264 Intra_16x16 luma prediction (4 modes: V, H, DC, Plane) —
|
||||
|
||||
Reference in New Issue
Block a user