From 5bf6acb9644b4b0e1720a4418fce8b1934fd12ec Mon Sep 17 00:00:00 2001 From: Markus Fritsche Date: Wed, 13 May 2026 09:41:12 +0000 Subject: [PATCH] =?UTF-8?q?iter7=20Phase=206:=201=20commit=20landed=20on?= =?UTF-8?q?=20fork=20=E2=80=94=20auto-detect=20refactor=20pending=20fresne?= =?UTF-8?q?l=20build?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fork tip c106d95 (was 70196f8). 165 LOC added / 57 removed in src/request.c. All 9 Phase 5 amendments (2 CRIT + 4 IMP + 3 MIN) incorporated. Fresnel offline at push time. Build + install + Phase 7 verify deferred until host returns. Phase 7 sweep ready to execute: vainfo + ffmpeg-vaapi + reboot stability + iter5b/iter6 regression check. Code review verified algorithm correctness against Phase 5 reviewer pseudocode + boltzmann's linux-rockchip source confirms MEDIA_ENT_F_PROC_VIDEO_DECODER is set on rkvdec.c:1382 + hantro_drv.c proc entities. Compile-time syntax untested (no va-api dev headers on noether). Co-Authored-By: Claude Opus 4.7 (1M context) --- phase6_iter7_implementation.md | 69 ++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 phase6_iter7_implementation.md diff --git a/phase6_iter7_implementation.md b/phase6_iter7_implementation.md new file mode 100644 index 0000000..5fe1f0f --- /dev/null +++ b/phase6_iter7_implementation.md @@ -0,0 +1,69 @@ +# Iteration 7 — Phase 6 (implementation) + +Single fork commit landed 2026-05-13. Build + install + Phase 7 verify pending fresnel uptime (offline at commit-push time). + +## Commit + +| SHA | Files | LOC | Summary | +|---|---|---|---| +| `c106d95` | `src/request.c` | +165 / -57 | Refactor `find_video_node_via_topology` → `find_decoder_video_node_via_topology` (entity-function discrimination + link-graph walk). Two-pass `find_codec_device` for rkvdec preference. | + +Fork tip post-iter7-Phase-6: `c106d95` (was `70196f8` at iter5b-β/iter6 close). + +## Phase 5 amendments incorporated + +| ID | Amendment | Where landed | +|---|---|---| +| CRIT-1 | MEDIA_LNK_FL_INTERFACE_LINK link discrimination | `find_decoder_video_node_via_topology` data-link vs interface-link checks | +| CRIT-2 | Check both source_id AND sink_id of each link | Both inner loops check both endpoints | +| IMP-1 | Decoder-proc / encoder-proc distinction (algorithm safe by construction) | Confirmed correct; no additional code | +| IMP-2 | MEDIA_ENT_F_PROC_VIDEO_DECODER set by rkvdec.c + hantro_drv.c | Confirmed at code level on boltzmann | +| IMP-3 | 2-call MEDIA_IOC_G_TOPOLOGY pattern | Replaces 3-call pattern in old `find_video_node_via_topology` | +| IMP-4 | Two-pass fd open/close | `for (pass = 0; pass < 2; pass++)` outer loop | +| MIN-1 | `media_out` from `path` preserved | Unchanged | +| MIN-2 | Single-bit flag test for interface links | `flags & MEDIA_LNK_FL_INTERFACE_LINK` | +| MIN-3 | Phase 7 MPEG-2/VP8 env-override mandatory | Phase 7 doc will enforce | + +All amendments mechanical; no structural plan changes. + +## Status + +- Fork commit `c106d95` on noether + gitea. Pushed via `claude-noether` SSH per `feedback_gitea_as_claude_noether.md`. +- Fresnel offline at commit time. Cannot syntax-check on noether (no va-api dev headers locally). Build error risk exists but is small — diff is mechanically derived from working code. +- Backend installed SHA on fresnel: unchanged from iter5b-β/iter6 close (`2c6ff82c…`). Will update post-build. + +## Phase 7 plan (pending fresnel uptime) + +When fresnel returns: + +1. Pull on fresnel: `cd ~/src/libva-v4l2-request-fourier && git pull --ff-only origin master`. +2. Build: `ninja -C build`. If syntax fails, report errors; fix via amend or new commit. +3. Install: `sudo install -m 644 build/src/v4l2_request_drv_video.so /usr/lib/dri/v4l2_request_drv_video.so`. +4. Capture new SHA256. +5. Phase 7 verification matrix: + - **C5 item 1**: `vainfo` (no env override) lists H.264/HEVC/VP9 profiles (rkvdec). + - **C5 item 2**: ffmpeg-vaapi HEVC fixture engages decoder (strace shows /dev/video opened). + - **C5 item 3** (mandatory per Phase 5 MIN-3): MPEG-2/VP8 with explicit env override still decode correctly. + - **C5 item 4**: VP9 still PASS direct, MPEG-2 still PASS, no regression on Bugs 4/5/6 partial states. + - **C5 item 5**: reboot fresnel; re-run vainfo + ffmpeg. Verify auto-detect repeats. +6. If 5 of 5 PASS: write Phase 7 verification doc; proceed to Phase 8 close. +7. If any fail: Phase 7 → Phase 4 loopback. + +## Risk register update + +| Risk | Status | +|---|---| +| Syntax/compile error from Edit-based refactor | UNTESTED — fresnel offline | +| Algorithm bug in link traversal | Mechanically verified against Phase 5 reviewer pseudocode | +| `MEDIA_ENT_F_PROC_VIDEO_DECODER` not set in kernel | Verified at code level (rkvdec.c:1382, hantro_drv.c) | +| Two-pass changes behavior on rkvdec-only systems | Same as single-pass (pass 1 picks rkvdec, pass 2 never fires) | +| Two-pass on hantro-only systems | Pass 1 finds nothing; pass 2 picks hantro-decoder (works) | +| Encoder mis-detection | Eliminated by construction (entity-function check excludes encoder-only paths) | + +## Substrate state at Phase 6 close + +- Fork tip `c106d95` (iter7 Phase 6 commit). +- Backend installed: still iter5b-β/iter6 SHA `2c6ff82c…`. To be updated when fresnel returns. +- Kernel `linux-fresnel-fourier 7.0-1`. +- Test fixtures unchanged. +- Phase 7 ready to execute once fresnel + build cycle complete.