Files
punktfunk/crates/pf-vkdecode/Cargo.toml
T
enricobuehler d24f7fc6ac feat(pf-vkdecode): the CPU half of native Vulkan decode — StdVideo conversion + slot map
M2 WP-A (design/client-native-decode.md §3.2). AuPlan -> StdVideo
parameter sets (owned pointer backings), per-AU decode info with slice
start-code offsets, and a PicId->slot map that never evicts on its own.
Deliberate rejections over silent claims: FMO, separate colour planes,
DPBs deeper than 16 frames (unbounded VUI ue(v)) all fail closed.

pf-bitstream API grew what the review proved necessary: RefPic carries
the true top/bottom field order counts (a single poc fabricated
BottomFieldOrderCnt whenever the PPS signals pic-order deltas), the
>16-frame DPB envelope gate, and an MMCO5 rebase warning.

Adversarial review round two: 8 findings fixed pre-commit, including
transactional slot mutation (an error path could permanently desync
the map) and count/pointer coherence on type-1 POC offsets.

Gates: fmt clean, clippy -D warnings zero, 45+26+21 tests green on
macOS and the linux/amd64 container.
2026-08-05 15:03:39 +02:00

23 lines
962 B
TOML

[package]
name = "pf-vkdecode"
description = "Native Vulkan Video H.264 decode for the clients (M2): StdVideo parameter-set/picture conversion and DPB slot management over pf-bitstream's AuPlans — the CPU-testable half; session, memory and command recording follow in WP-B (design/client-native-decode.md §3.2)"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
[dependencies]
ash = "0.38"
# Direct dependency on the vendored parser crate, not just pf-bitstream: the parameter-set
# conversion consumes the parser's `Sps`/`Pps` types wholesale (pf-bitstream re-exports only
# `Level`/`SliceHeader`), and the same path means the one crate instance the workspace already
# builds — no duplicate types.
cros-codecs = { path = "../pf-bitstream/vendor/cros-codecs" }
pf-bitstream = { path = "../pf-bitstream" }
tracing = "0.1"
[lints]
workspace = true