claude-noether
|
ea2413e957
|
iter3 Phase 0 + Phase 1 lock: VP8 on hantro-vpu-dec
Opens iter3 of the fresnel-fourier campaign immediately after iter2
close (df787a6). Targets VP8 as the fourth codec to pass boolean-
correctness on fresnel via libva-v4l2-request-fourier.
Locked research question:
mpv --hwdec=vaapi bbb_720p10s_vp8.webm engages backend cleanly and
DMA-BUF GL import yields HW pixels byte-identical to SW reference.
Five Phase 1 boolean criteria:
1. vainfo enumerates VAProfileVP8Version0_3 on hantro env binding
2. vaCreateConfig(VAProfileVP8Version0_3, VLD) = SUCCESS
3. ffmpeg -hwaccel vaapi VP8 decode exit 0
4. mpv --hwdec=vaapi --vo=image @ +02s seek: HW=SW byte-identical
for 2 distinct frames; frame1 != frame2
5. THREE-codec regression block: iter1 MPEG-2 + iter2 HEVC + T4
H.264 reference hashes all hold
Substrate carry-forward (re-verified):
- fork master tip post-iter2-close (cca539d + 8d71e20)
- /usr/lib/dri/v4l2_request_drv_video.so SHA256 9e27...6258
- linux-eos-arm 6.19.9-99-eos-arm (post linux-7 headers-only upgrade)
- bbb_720p10s_vp8.webm fixture on fresnel ~/fourier-test/ (2.4 MB)
- hantro-vpu-dec OUTPUT_MPLANE VP8F + vp8_frame_parameters control
- cross-validator anchor confirmed: ffmpeg-v4l2request VP8 = exit 0
Predicted scope (smaller than iter1+iter2):
- config.c: ADD VP8 enumeration block + RequestCreateConfig case
+ RequestQueryConfigEntrypoints case (3 sites; iter1+iter2
only had 1-2 existing-but-broken case labels)
- src/vp8.c NEW file (~150-250 lines vs iter2's 588 h265.c)
- src/vp8.h NEW file
- src/meson.build add 'vp8.c' + 'vp8.h' entries
- picture.c codec_set_controls VP8 dispatch + codec_store_buffer
cases for 4 VAAPI VP8 buffer types (Picture, Slice, Probability,
IQMatrix)
- surface.h params union extend with vp8 member
- context.c: NO changes (VP8 has no DECODE_MODE/START_CODE menus
on hantro per Phase 0 v4l2_inventory)
VP8 contract surface: single V4L2_CID_STATELESS_VP8_FRAME control
per frame (no batch); no slice_params dynamic-array (frame-mode);
no SCALING_MATRIX (entropy + quant carried in v4l2_ctrl_vp8_frame
sub-structs).
Phase 2 source-read targets queued: config.c enumeration pattern,
picture.c dispatch + per-buffer-type cases, surface.h params union,
VAAPI <va/va_dec_vp8.h>, kernel UAPI <linux/v4l2-controls.h>
v4l2_ctrl_vp8_frame, kernel hantro_vp8.c driver, FFmpeg
v4l2_request_vp8.c.
Memory carry-forward (all five entries apply unchanged):
feedback_gitea_as_claude_noether
feedback_no_session_termination_attempts
feedback_header_deletion_check
feedback_review_empirical_over_theoretical (BOTH directions)
feedback_rockchip_pixel_verify_path
Refs:
phase0_findings_iter1.md (iter1 MPEG-2 lock template)
phase0_findings_iter2.md (iter2 HEVC lock template)
phase8_iteration2_close.md (immediate predecessor close)
phase0_evidence/2026-05-07/v4l2_inventory_findings.md (hantro VP8
capability)
phase0_evidence/2026-05-07/cross_validator_traces.md (VP8 kernel
decode path proven)
phase0_evidence/2026-05-07/test_fixtures.md (bbb_720p10s_vp8.webm
provenance)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-08 15:49:28 +00:00 |
|