h264: promote remaining intra prediction modes (17) to public API
Follows PR #26 (Intra_4x4 luma) with the same promotion pattern for the rest of the intra prediction primitive set: Intra_16x16 luma (4 modes, PR #13) — V/H/DC/Plane Intra_8x8 chroma (4 modes, PR #14) — DC/H/V/Plane (4:2:0) Intra_8x8 luma (9 modes, PRs #21 + #22) — High profile, with 1-2-1 pre-filter 3 file moves via `git mv`, ~17 function renames stripping the `_ref` suffix. Test binaries rewired to link daedalus_core instead of compiling the (now moved) ref files directly. No code change — pure plumbing for substitution-arc consumers. 26 intra prediction modes total now in the public API after this PR. Verified on hertz: test_intra_pred_16x16: 5/5 PASS test_intra_pred_chroma8x8: 5/5 PASS test_intra_pred_8x8_luma: 11/11 PASS All via public symbols (test binaries linked against daedalus_core). Unblocks marfrit-packages substitution arc patch 0014 — wires H264PredContext.pred4x4[], pred16x16[], pred8x8[], pred8x8l[] through daedalus alongside the existing IDCT / deblock / qpel / DC Hadamard substitutions. After 0014 lands, the libavcodec.so built by marfrit-packages will have EVERY hot-path pixel-math kernel of an H.264 8-bit 4:2:0 decode routing through daedalus — the substitution arc is feature- complete for the campaign target (Pi 5 Firefox YouTube playback).
This commit is contained in:
@@ -586,6 +586,46 @@ void daedalus_h264_pred_4x4_hd (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_4x4_vl (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_4x4_hu (uint8_t *dst, ptrdiff_t stride);
|
||||
|
||||
/* -------------------------------------------------------------------
|
||||
* H.264 Intra_16x16 luma prediction (per §8.3.2). 4 modes:
|
||||
* Vertical / Horizontal / DC / Plane. Same FFmpeg-style interface
|
||||
* as the 4x4 family at 16x16 scale. Same neighbour availability
|
||||
* assumption (interior-MB).
|
||||
* ----------------------------------------------------------------- */
|
||||
void daedalus_h264_pred_16x16_vertical (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_16x16_horizontal(uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_16x16_dc (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_16x16_plane (uint8_t *dst, ptrdiff_t stride);
|
||||
|
||||
/* -------------------------------------------------------------------
|
||||
* H.264 Intra_8x8 chroma prediction (per §8.3.3, 4:2:0). 4 modes:
|
||||
* DC / Horizontal / Vertical / Plane. Note: DC is per-quadrant
|
||||
* asymmetric; Plane uses slope coefficient 34 (not luma's 5).
|
||||
* ----------------------------------------------------------------- */
|
||||
void daedalus_h264_pred_chroma8x8_dc (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_chroma8x8_horizontal(uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_chroma8x8_vertical (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_chroma8x8_plane (uint8_t *dst, ptrdiff_t stride);
|
||||
|
||||
/* -------------------------------------------------------------------
|
||||
* H.264 Intra_8x8 luma prediction (High profile, per §8.3.2.1).
|
||||
* 9 modes with the spec-defined 1-2-1 reference-sample pre-filter
|
||||
* applied internally to the 25 neighbours before the mode arithmetic.
|
||||
*
|
||||
* "_8x8l" naming follows the FFmpeg h264pred_template convention
|
||||
* (pred8x8l_<mode>_c) to keep the substitution wrappers a 1:1 name
|
||||
* map.
|
||||
* ----------------------------------------------------------------- */
|
||||
void daedalus_h264_pred_8x8l_vertical (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_8x8l_horizontal(uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_8x8l_dc (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_8x8l_ddl (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_8x8l_ddr (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_8x8l_vr (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_8x8l_hd (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_8x8l_vl (uint8_t *dst, ptrdiff_t stride);
|
||||
void daedalus_h264_pred_8x8l_hu (uint8_t *dst, ptrdiff_t stride);
|
||||
|
||||
/* -------------------------------------------------------------------
|
||||
* Recipe query — what does the API recommend for each kernel?
|
||||
* ----------------------------------------------------------------- */
|
||||
|
||||
Reference in New Issue
Block a user