h264: expose chroma DC 2x2 Hadamard as public API
PR #23 added the Hadamard as a test-only spec reference; this PR promotes it to a public symbol in src/ so consumers (the eventual marfrit-packages substitution-arc patch 0011) can link against it. New: void daedalus_h264_chroma_dc_hadamard_2x2(int16_t c[4]); — operates in-place on 4 int16, no QP-dependent scaling (caller composes that themselves per §8.5.11.2). The src/ implementation is byte-for-byte identical to the test-only ref in tests/h264_chroma_dc_hadamard_ref.c (kept as a separate spec-validation copy). A new "public API parity" test case verifies the two produce identical output for a non-trivial input. Pure CPU primitive — no substrate-dispatch wrapper because the work is 4 adds + 4 subs; the substrate machinery would cost more than the kernel itself. Verified on hertz: $ ./build/test_chroma_dc_hadamard all-uniform 5 PASS col gradient [0,10,0,10] PASS row gradient [0,0,10,10] PASS anti-diagonal [10,0,0,10] PASS asymmetric [1,2,3,4] PASS sign-alternating [-5,5,-5,5] PASS double-Hadamard = 4*orig PASS public API parity vs _ref PASS ALL chroma DC Hadamard tests PASS $ nm -g build/libdaedalus_core.a | grep chroma_dc_hadamard 0000000000000000 T daedalus_h264_chroma_dc_hadamard_2x2 Unblocks marfrit-packages 0011 (substituting H264DSPContext.chroma_dc_dequant_idct, which composes the Hadamard + qmul scaling).
This commit is contained in:
@@ -391,6 +391,7 @@ endif()
|
||||
|
||||
add_library(daedalus_core STATIC
|
||||
src/daedalus_core.c
|
||||
src/h264_chroma_dc.c
|
||||
src/v3d_runner.c
|
||||
${FFASM_SOURCES}
|
||||
${FFASM_LPF_SOURCES}
|
||||
@@ -577,6 +578,9 @@ add_executable(test_chroma_dc_hadamard
|
||||
tests/test_chroma_dc_hadamard.c
|
||||
tests/h264_chroma_dc_hadamard_ref.c
|
||||
)
|
||||
# Links daedalus_core to pull in the public daedalus_h264_chroma_dc_hadamard_2x2
|
||||
# symbol (for the public-API parity test added in this PR).
|
||||
target_link_libraries(test_chroma_dc_hadamard PRIVATE daedalus_core)
|
||||
target_compile_options(test_chroma_dc_hadamard PRIVATE -O2)
|
||||
|
||||
# H.264 primitives latency benchmark (NEON CPU baseline).
|
||||
|
||||
Reference in New Issue
Block a user