refactor(encode): drop the crate-wide allow(dead_code)
Inherited from the pre-extraction host crate root as scaffolding for backend
paths defined ahead of the build that used them. A census across every feature
combination on both platforms (flip it to `warn`, rebuild) found it was hiding
exactly two items — so it bought nothing while blinding the crate to future rot:
- `vaapi::fourcc` — superseded by `pf_frame::drm_fourcc`; no call sites left.
- `vulkan_video::open_opts` — test-only (the smoke tests use it to pass the
RGB-direct request explicitly rather than through the env), now `#[cfg(test)]`.
Removing it surfaced a real latent defect the Linux census could not see:
`amf.rs`'s `percentile` / `drive_and_measure` helpers are used only by the
`#[cfg(feature = "amf-qsv")]` latency A/B benchmark, so a `--features nvenc,qsv`
build compiled the helpers with their caller gated out. They now carry the same
gate as their caller.
Verified `--all-targets -D warnings` on Linux (no features; shipped
nvenc+vulkan-encode+pyrowave) and Windows (no features; pyrowave; qsv; nvenc,qsv).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -39,11 +39,6 @@ use super::libav::{
|
|||||||
};
|
};
|
||||||
use ffmpeg::ffi; // = ffmpeg_sys_next
|
use ffmpeg::ffi; // = ffmpeg_sys_next
|
||||||
|
|
||||||
/// `fourcc(a,b,c,d)` — DRM FourCC packing (`a | b<<8 | c<<16 | d<<24`).
|
|
||||||
const fn fourcc(a: u8, b: u8, c: u8, d: u8) -> u32 {
|
|
||||||
(a as u32) | ((b as u32) << 8) | ((c as u32) << 16) | ((d as u32) << 24)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// The render node a VAAPI/DRM device should open, from [`pf_gpu::linux_render_node`]: a
|
/// The render node a VAAPI/DRM device should open, from [`pf_gpu::linux_render_node`]: a
|
||||||
/// matched web-console GPU preference pins it, else `PUNKTFUNK_RENDER_NODE`, else the single-GPU
|
/// matched web-console GPU preference pins it, else `PUNKTFUNK_RENDER_NODE`, else the single-GPU
|
||||||
/// default.
|
/// default.
|
||||||
|
|||||||
@@ -524,7 +524,9 @@ impl VulkanVideoEncoder {
|
|||||||
/// `open` with the RGB-direct request explicit instead of read from the env — the smoke
|
/// `open` with the RGB-direct request explicit instead of read from the env — the smoke
|
||||||
/// tests use this (env mutation races parallel tests). `want_rgb` engages the RGB-direct
|
/// tests use this (env mutation races parallel tests). `want_rgb` engages the RGB-direct
|
||||||
/// source only if [`probe_rgb_direct`] also passes; otherwise the session opens on the CSC
|
/// source only if [`probe_rgb_direct`] also passes; otherwise the session opens on the CSC
|
||||||
/// path with the verdict logged.
|
/// path with the verdict logged. Test-only: the production entry point is [`Self::open`],
|
||||||
|
/// which resolves `want_rgb` from the env + the `cursor_blend` hint.
|
||||||
|
#[cfg(test)]
|
||||||
pub(crate) fn open_opts(
|
pub(crate) fn open_opts(
|
||||||
codec: Codec,
|
codec: Codec,
|
||||||
width: u32,
|
width: u32,
|
||||||
|
|||||||
@@ -2760,6 +2760,10 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// The `p`-quantile of `samples` (µs), sorting in place. `0` when empty.
|
/// The `p`-quantile of `samples` (µs), sorting in place. `0` when empty.
|
||||||
|
/// Gated like its only caller, the `amf-qsv`-only §5.2 latency A/B below — otherwise a
|
||||||
|
/// `--features nvenc,qsv` build compiles this helper with the benchmark cfg'd out and trips
|
||||||
|
/// `dead_code` (which the crate root no longer blanket-allows).
|
||||||
|
#[cfg(feature = "amf-qsv")]
|
||||||
fn percentile(samples: &mut [u128], p: f64) -> u128 {
|
fn percentile(samples: &mut [u128], p: f64) -> u128 {
|
||||||
if samples.is_empty() {
|
if samples.is_empty() {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -2778,6 +2782,8 @@ mod tests {
|
|||||||
/// so its submit→AU is the bare ASIC time. The last ~2 unflushed frames on the ffmpeg path
|
/// so its submit→AU is the bare ASIC time. The last ~2 unflushed frames on the ffmpeg path
|
||||||
/// are left unmeasured (dropped with the encoder) so every recorded sample is a genuine paced
|
/// are left unmeasured (dropped with the encoder) so every recorded sample is a genuine paced
|
||||||
/// submit→AU.
|
/// submit→AU.
|
||||||
|
/// Gated like its only caller (see [`percentile`]).
|
||||||
|
#[cfg(feature = "amf-qsv")]
|
||||||
#[allow(clippy::too_many_arguments)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
fn drive_and_measure(
|
fn drive_and_measure(
|
||||||
enc: &mut dyn Encoder,
|
enc: &mut dyn Encoder,
|
||||||
|
|||||||
@@ -5,9 +5,11 @@
|
|||||||
//! VA surface). One [`Encoder`] trait, selected in [`open_video`]. Extracted into a subsystem crate
|
//! VA surface). One [`Encoder`] trait, selected in [`open_video`]. Extracted into a subsystem crate
|
||||||
//! (plan §W6): depends on the shared frame vocabulary (`pf-frame`) + zero-copy plumbing
|
//! (plan §W6): depends on the shared frame vocabulary (`pf-frame`) + zero-copy plumbing
|
||||||
//! (`pf-zerocopy`), never on capture — the capture→encode edge is one-way.
|
//! (`pf-zerocopy`), never on capture — the capture→encode edge is one-way.
|
||||||
// Scaffold: some backend paths + trait defaults are defined ahead of the per-feature build that
|
// NOTE: no crate-wide `#![allow(dead_code)]`. It was inherited from the pre-extraction host crate
|
||||||
// uses them (mirrors the host crate root's allow before the extraction).
|
// root as scaffolding for backend paths defined ahead of the build that used them, but a census
|
||||||
#![allow(dead_code)]
|
// across every feature combination on both platforms found it was hiding exactly two items — so it
|
||||||
|
// bought nothing and blinded the crate to future rot. Genuinely test-only helpers carry
|
||||||
|
// `#[cfg(test)]` instead.
|
||||||
// Every unsafe block in this module tree carries a `// SAFETY:` proof; enforce it (unsafe-proof
|
// Every unsafe block in this module tree carries a `// SAFETY:` proof; enforce it (unsafe-proof
|
||||||
// program). As a parent module this also covers the child modules (windows/linux backends).
|
// program). As a parent module this also covers the child modules (windows/linux backends).
|
||||||
#![deny(clippy::undocumented_unsafe_blocks)]
|
#![deny(clippy::undocumented_unsafe_blocks)]
|
||||||
|
|||||||
Reference in New Issue
Block a user