Headless decode primitive, the mirror of the encoder: VaapiDecoder opens a file, hardware-decodes H.264 into VAAPI NV12 surfaces (hw_device_ctx + a get_format callback selecting AV_PIX_FMT_VAAPI), maps each surface to a DRM-PRIME DMA-BUF, and imports it as two wgpu plane textures via the existing dmabuf::import_raw — the same path the encoder uses, in the read direction. Frames stay GPU-resident (no CPU copy). Validated by a round-trip test: encode solid gray with ZeroCopyEncoder, decode it back, read the Y plane (mean ≈ 128). All 9 crate tests pass on the container's Intel GPU. Next (Stage 3): wire this into VideoManager/get_frame so the compositor consumes a GPU texture directly (no write_texture upload), with software decode fallback. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| beamdsp | ||
| egui_node_graph2 | ||
| gpu-video-encoder | ||
| lightningbeam-core | ||
| lightningbeam-editor | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| GPU_VIDEO_DECODE_PLAN.md | ||
| build-static.sh | ||
| build-windows.bat | ||