wip: predicted samples plumbing
This commit is contained in:
@@ -89,6 +89,26 @@ struct daedalus_decoder_mb_input {
|
||||
* column-major within each 4x4 or 8x8 block (matches FFmpeg
|
||||
* convention). Caller-owned; copied during append. */
|
||||
const int16_t *coeffs; /* points at exactly 384 int16_t */
|
||||
|
||||
/* Reconstructed predicted samples for this MB, planar order:
|
||||
* [ 0 .. 256) — 16×16 luma, ROW-MAJOR raster (row 0 cols 0..15,
|
||||
* row 1 cols 0..15, ..., row 15 cols 0..15)
|
||||
* [256 .. 320) — 8×8 Cb, ROW-MAJOR raster
|
||||
* [320 .. 384) — 8×8 Cr, ROW-MAJOR raster
|
||||
*
|
||||
* The caller (libavcodec's CPU intra-prediction kernels for Phase 1
|
||||
* I-frames; MC fallback for Phase 2 P-frames before GPU MC lands)
|
||||
* populates this from neighbour samples per H.264 §8.3 / §8.4.
|
||||
* `flush_frame()`'s reconstruction step is `clip255(predicted +
|
||||
* idct(coeffs))` — the IDCT shader reads dst, adds the inverse
|
||||
* transform, writes clipped — so a non-zero `predicted` here makes
|
||||
* the output pixel a valid H.264 reconstruction; zero means
|
||||
* residual-only (used by IDCT-isolation tests).
|
||||
*
|
||||
* NULL is legal and means "all-zero predicted samples" for this MB
|
||||
* (the per-frame predicted buffer is zeroed at flush time so a NULL
|
||||
* is indistinguishable from explicit zeros). */
|
||||
const uint8_t *predicted; /* NULL or exactly 384 uint8_t */
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user