fix(client): unused 'decoder label under default features + box the PyroWave backend variant
ci / web (push) Successful in 56s
ci / docs-site (push) Successful in 1m7s
decky / build-publish (push) Successful in 17s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 9s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 8s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 8s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 8s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 8s
ci / bench (push) Successful in 6m20s
android / android (push) Successful in 14m39s
arch / build-publish (push) Successful in 12m29s
docker / deploy-docs (push) Successful in 22s
flatpak / build-publish (push) Successful in 6m17s
deb / build-publish (push) Successful in 11m58s
ci / rust (push) Successful in 18m3s
rpm / build-publish (43, bazzite, punktfunk-fedora-rpm) (push) Successful in 14m21s
rpm / build-publish (44, fedora-44, punktfunk-fedora44-rpm) (push) Successful in 13m58s
windows-msix / package (arm64, C:\Users\Public\ffmpeg-arm64, --no-default-features, aarch64-pc-windows-msvc, C:\t-a64) (push) Successful in 4m3s
windows-msix / package (x64, C:\Users\Public\ffmpeg, , x86_64-pc-windows-msvc, C:\t) (push) Successful in 3m54s
windows / build (aarch64-pc-windows-msvc) (push) Successful in 4m58s
apple / swift (push) Successful in 4m52s
apple / screenshots (push) Waiting to run
windows / build (x86_64-pc-windows-msvc) (push) Successful in 5m38s

ci.yml's -D warnings clippy (default features) flagged the labeled block
whose only break lives behind the pyrowave cfg — restructured as cfg'd
let-bindings, no label. Also boxed Backend::PyroWave (the decoder's
pinned create-info hold + plane ring dwarfed the other variants —
clippy::large_enum_variant under the feature).

Both configs strict-clippy clean on .21; 26 tests green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-15 02:18:45 +02:00
parent fa4df1de9e
commit eb8a659319
2 changed files with 18 additions and 16 deletions
+14 -13
View File
@@ -278,22 +278,23 @@ fn pump(
welcome_codec = connector.codec,
"negotiated video codec"
);
let built = 'decoder: {
// A negotiated PyroWave session decodes on the presenter's device, no FFmpeg —
// reachable only through the explicit preference above (resolve_codec never
// auto-picks the bit), so failing loudly here is failing an opted-in experiment.
#[cfg(all(target_os = "linux", feature = "pyrowave"))]
if connector.codec == punktfunk_core::quic::CODEC_PYROWAVE {
let mode = connector.mode();
break 'decoder match params.vulkan.as_ref() {
Some(vk) => Decoder::new_pyrowave(vk, mode.width, mode.height),
None => Err(anyhow::anyhow!(
"pyrowave session without a presenter device"
)),
};
// A negotiated PyroWave session decodes on the presenter's device, no FFmpeg —
// reachable only through the explicit preference above (resolve_codec never
// auto-picks the bit), so failing loudly here is failing an opted-in experiment.
#[cfg(all(target_os = "linux", feature = "pyrowave"))]
let built = if connector.codec == punktfunk_core::quic::CODEC_PYROWAVE {
let mode = connector.mode();
match params.vulkan.as_ref() {
Some(vk) => Decoder::new_pyrowave(vk, mode.width, mode.height),
None => Err(anyhow::anyhow!(
"pyrowave session without a presenter device"
)),
}
} else {
Decoder::new(codec_id, &params.decoder, params.vulkan.as_ref())
};
#[cfg(not(all(target_os = "linux", feature = "pyrowave")))]
let built = Decoder::new(codec_id, &params.decoder, params.vulkan.as_ref());
let mut decoder = match built {
Ok(d) => d,
Err(e) => {
+4 -3
View File
@@ -323,8 +323,9 @@ enum Backend {
D3d11va(crate::video_d3d11::D3d11vaDecoder),
/// PyroWave (wired-LAN wavelet codec): pyrowave compute on the presenter's device,
/// no FFmpeg involvement. No demotion rung — there is no other decoder for it.
/// Boxed: the decoder (pinned create-info hold + plane ring) dwarfs the other variants.
#[cfg(all(target_os = "linux", feature = "pyrowave"))]
PyroWave(crate::video_pyrowave::PyroWaveDecoder),
PyroWave(Box<crate::video_pyrowave::PyroWaveDecoder>),
Software(SoftwareDecoder),
}
@@ -573,9 +574,9 @@ impl Decoder {
#[cfg(all(target_os = "linux", feature = "pyrowave"))]
pub fn new_pyrowave(vk: &VulkanDecodeDevice, width: u32, height: u32) -> Result<Decoder> {
Ok(Decoder {
backend: Backend::PyroWave(crate::video_pyrowave::PyroWaveDecoder::new(
backend: Backend::PyroWave(Box::new(crate::video_pyrowave::PyroWaveDecoder::new(
vk, width, height,
)?),
)?)),
codec_id: ffmpeg::codec::Id::HEVC,
vaapi_fails: 0,
want_keyframe: false,