iter5b Phase 6: 3 commits A+B+C landed clean, backend installed on fresnel
Fork tip 4b2288f. Backend SHA256 d7722da742bfcb86a9136b07e6d9a5de23668f37fcad328258966c5338265e82 on /usr/lib/dri/v4l2_request_drv_video.so (pre-iter5b was 6e90b7a9b2c33480...). LOC: 188 across 5 modified files + 2 new (codec.h, codec.c). All 4 Phase 5 amendments (CRIT-1 + 3 IMPs) incorporated in the actual commits, no follow-ups needed. Phase 7 sweep ready: re-run /tmp/iter5_p3/sweep.sh on fresnel; expect libva == kdirect == sw for HEVC + VP9 + VP8 (3 codecs unblocked); MPEG-2 unchanged; H.264 unchanged (Bug 4 deferred to iter6). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# Iteration 5b — Phase 6 (implementation)
|
||||
|
||||
Commits A + B + C landed on fork master 2026-05-12. All built clean on fresnel `linux-fresnel-fourier 7.0-1` (libva 1.23, ninja 1.13.2, gcc 15.2.1). No fix-forward needed.
|
||||
|
||||
## Commits
|
||||
|
||||
| SHA | Files | LOC | Summary |
|
||||
|---|---|---|---|
|
||||
| `ce304ef` (A) | `src/codec.h` (new) · `src/codec.c` (new) · `src/meson.build` | +102 / -2 | NEW codec.h/codec.c — `pixelformat_for_profile()` helper mapping VAProfile → V4L2 OUTPUT FOURCC. Register in meson.build sources + headers. |
|
||||
| `f8256e6` (B) | `src/request.h` · `src/config.c` | +24 | request.h: `last_output_pixelformat` field on `struct request_data`. config.c: wire up dead `object_config->pixelformat` at CreateConfig via the helper. IMP-2 amendment. |
|
||||
| `4b2288f` (C) | `src/surface.c` | +78 / -11 | NEW `find_sole_active_pixelformat()` static helper (CRIT-1-corrected: `int iter` per request.c:411-418 pattern). Replace surface.c:173 hardcode with helper call. Extend gate to fire on pixelformat change. Comment updated to mention "codec change" alongside resolution (IMP-1). |
|
||||
|
||||
**Total**: 3 commits, 188 LOC delta, 5 files modified + 2 NEW.
|
||||
|
||||
Fork tip: `4b2288f`. Backend installed SHA256 `d7722da742bfcb86a9136b07e6d9a5de23668f37fcad328258966c5338265e82` (pre-iter5b was `6e90b7a9b2c33480…`).
|
||||
|
||||
## Phase 5 amendments incorporated
|
||||
|
||||
| ID | Amendment | Where landed |
|
||||
|---|---|---|
|
||||
| CRIT-1 | iterator type `int` (not `struct object_heap_iterator`); cast-on-return pattern | `surface.c::find_sole_active_pixelformat`, mirrors request.c:411-418 |
|
||||
| IMP-1 | Gate comment mentions codec/profile change alongside resolution | `surface.c:178-200` updated comment block |
|
||||
| IMP-2 | Wire `object_config->pixelformat` at CreateConfig; helper returns FOURCC directly | `config.c::RequestCreateConfig` populates field; `find_sole_active_pixelformat` returns `config_object->pixelformat` directly (one fewer indirection) |
|
||||
| IMP-3 | Commit message precision (hantro substitution to MPEG2_DECODER) | Commit C message body uses precise framing |
|
||||
|
||||
All 4 Phase 5 amendments incorporated in the actual commits, no follow-up edits needed.
|
||||
|
||||
## Phase 1 criteria status (post-Phase-6, pre-Phase-7)
|
||||
|
||||
| # | Criterion | Build-time signal | Empirical signal |
|
||||
|---|---|---|---|
|
||||
| 1 | HEVC + VP9 + VP8 libva == kdirect == sw | Backend built clean; new SHA installed | Pending Phase 7 sweep |
|
||||
| 2 | MPEG-2 unchanged | hantro path's MPEG2_SLICE mapping unchanged (helper returns MPEG2_SLICE for both VAProfileMPEG2Simple + Main) | Pending Phase 7 sweep |
|
||||
| 3 | H.264 keyframe still decodes | H264_SLICE mapping preserved | Pending Phase 7 sweep |
|
||||
| 4 | Control-payload anchors hold | No code touching control-handling | Pending Phase 7 strace anchor diff |
|
||||
|
||||
## Build inputs verified
|
||||
|
||||
- `pixelformat_for_profile()` symbol resolved: gcc compiled `surface.c::find_sole_active_pixelformat` without missing-symbol errors → codec.h #include chain correct.
|
||||
- `config.h` included in surface.c — `struct object_config` access works → no missing-type errors at compile.
|
||||
- `int iter` pattern: ninja build succeeded → no implicit-int-conversion warning, no struct-undefined error.
|
||||
- `last_output_pixelformat` field added to `struct request_data`: ninja compiled request.c et al. cleanly → no field-already-exists / type-mismatch errors.
|
||||
|
||||
## Build environment
|
||||
|
||||
```
|
||||
Linux fresnel 7.0.0-fresnel-fourier #1 SMP PREEMPT Sat May 9 19:24:42 CEST 2026 aarch64
|
||||
libva 1.23 / meson 1.x / ninja 1.13.2 / gcc 15.2.1
|
||||
fork tip: 4b2288f
|
||||
backend SHA256: d7722da742bfcb86a9136b07e6d9a5de23668f37fcad328258966c5338265e82
|
||||
```
|
||||
|
||||
## Phase 7 readiness
|
||||
|
||||
The Phase 4 plan's C7 verification matrix is ready to run. Phase 3 sweep script preserved on fresnel at `/tmp/iter5_p3/sweep.sh` and in `iter5_phase3_baseline.tgz`. Expected post-fix hash matrix:
|
||||
|
||||
| Codec | Pre-fix libva | Expected post-fix libva | kdirect (anchor) |
|
||||
|---|---|---|---|
|
||||
| H.264 1080p30 | `71ac099b…` (keyframe partial) | unchanged — Bug 4 deferred | `1e7a0bc9…` |
|
||||
| HEVC 720p | `06b2c5a0…` (all-zero) | **`9340b832…`** | `9340b832…` |
|
||||
| VP9 720p | `06b2c5a0…` (all-zero) | **`4f1565e8…`** | `4f1565e8…` |
|
||||
| MPEG-2 720p | `19eefbf4…` (worked) | `19eefbf4…` (unchanged) | `19eefbf4…` |
|
||||
| VP8 720p | `06b2c5a0…` (all-zero) | **`136ce5cb…`** | `136ce5cb…` |
|
||||
|
||||
Phase 7 binary checks: `cmp -s libva_<codec>.yuv kdirect_<codec>.yuv` for each of {hevc, vp9, vp8}. 3 of 3 must pass. MPEG-2 + H.264 cmp-against-prior-Phase-3-anchor must hold (no regression).
|
||||
|
||||
## Substrate state at Phase 6 close
|
||||
|
||||
- Fork tip `4b2288f` on noether + fresnel + gitea (push via `claude-noether@git.reauktion.de` SSH).
|
||||
- Backend installed at `/usr/lib/dri/v4l2_request_drv_video.so` SHA256 `d7722da742bfcb86a9136b07e6d9a5de23668f37fcad328258966c5338265e82`.
|
||||
- Kernel: `linux-fresnel-fourier 7.0-1` (unchanged; no kernel work in iter5b).
|
||||
- Test fixtures unchanged.
|
||||
- Phase 7 sweep ready to execute.
|
||||
Reference in New Issue
Block a user