# The shared media-pipeline vocabulary (plan §W6): the captured-frame types and pixel formats that
# both capture (producer) and encode (consumer) speak, plus the small pure helpers that ride the
# same seam — HDR static metadata, the metronomic-stall detector, per-thread scheduling QoS, and
# (Windows) the DXGI capture identity + D3D11 device creation. A leaf so pf-capture and pf-encode
# can depend on the vocabulary WITHOUT depending on each other.
[package]
name = "pf-frame"
version.workspace = true
edition = "2021"
rust-version.workspace = true
license = "MIT OR Apache-2.0"
description = "punktfunk host shared frame/format vocabulary: CapturedFrame, PixelFormat, HDR metadata, thread QoS, and the Windows DXGI capture identity."
publish = false

[dependencies]
punktfunk-core = { path = "../punktfunk-core", features = ["quic"] }
anyhow = "1"
tracing = "0.1"

[target.'cfg(target_os = "linux")'.dependencies]
# `FramePayload::Cuda` owns a zero-copy `DeviceBuffer`; `libc` for the per-thread `setpriority`.
pf-zerocopy = { path = "../pf-zerocopy" }
libc = "0.2"

[target.'cfg(target_os = "windows")'.dependencies]
# The DXGI capture identity (`WinCaptureTarget`/`D3d11Frame`/`pack_luid`/`make_device`) + the GPU
# scheduling-priority hardening `make_device` applies, and the thread-QoS `SetThreadPriority`.
windows = { version = "0.62", features = [
    "Win32_Foundation",
    "Win32_Security",
    "Win32_Graphics_Dxgi",
    "Win32_Graphics_Dxgi_Common",
    "Win32_Graphics_Direct3D",
    "Win32_Graphics_Direct3D11",
    "Win32_System_LibraryLoader",
    "Win32_System_Threading",
] }

[lints]
workspace = true
