58ccd530fc
ffmpeg-sys-next binds a curated header list that omits every hwcontext_*.h, so AVVulkanDeviceContext/AVVulkanFramesContext/AVVkFrame — the surface that lets FFmpeg's Vulkan Video decoder run on the presenter's own VkDevice and hand the decoded VkImages back — had no Rust bindings at all. pf-ffvk generates them at build time from the SYSTEM headers, which is the only ABI-safe option: the struct layout depends on FF_API_* deprecation gates resolved in libavutil/version.h (confirmed: FFmpeg 8.1 still carries the FIXED_QUEUES fields). Ships ash<->vulkan.h handle conversions; opaque AVHW*/AVFrame types keep ffmpeg-sys-next the owner of the core surface (pointer casts across). Needs vulkan-headers (Arch) / libvulkan-dev (CI, added); PF_FFVK_VULKAN_INCLUDE overrides for cross builds. Verified: bindgen layout tests pass, av_vk_frame_alloc links and zero-initializes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
23 lines
1.0 KiB
TOML
23 lines
1.0 KiB
TOML
[package]
|
|
name = "pf-ffvk"
|
|
description = "Bindgen shim for FFmpeg's Vulkan hwcontext (libavutil/hwcontext_vulkan.h) — the AVVulkanDeviceContext/AVVkFrame surface ffmpeg-sys-next doesn't bind; enables Vulkan Video decode straight onto the presenter's device"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
authors.workspace = true
|
|
repository.workspace = true
|
|
|
|
# The bindings are generated at build time from the SYSTEM headers (libavutil +
|
|
# vulkan-headers), so they are ABI-exact for the installed FFmpeg — including the
|
|
# FF_API_VULKAN_* deprecation gates that change AVVulkanDeviceContext's layout between
|
|
# FFmpeg builds. This is deliberately not hand-transcribed.
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
ash = { version = "0.38", features = ["loaded"] }
|
|
|
|
[build-dependencies]
|
|
# Same bindgen configuration as ffmpeg-sys-next (runtime = dlopen libclang).
|
|
bindgen = { version = "0.72", features = ["runtime"], default-features = false }
|
|
pkg-config = "0.3"
|