media: freeze oversized hevc mjpeg spool frames

This commit is contained in:
Brad Stein 2026-05-15 08:40:08 -03:00
parent 58e4b4f5b7
commit 8aa3ce2575
5 changed files with 16 additions and 6 deletions

6
Cargo.lock generated
View File

@ -1652,7 +1652,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
[[package]]
name = "lesavka_client"
version = "0.22.37"
version = "0.22.38"
dependencies = [
"anyhow",
"async-stream",
@ -1686,7 +1686,7 @@ dependencies = [
[[package]]
name = "lesavka_common"
version = "0.22.37"
version = "0.22.38"
dependencies = [
"anyhow",
"base64",
@ -1698,7 +1698,7 @@ dependencies = [
[[package]]
name = "lesavka_server"
version = "0.22.37"
version = "0.22.38"
dependencies = [
"anyhow",
"base64",

View File

@ -4,7 +4,7 @@ path = "src/main.rs"
[package]
name = "lesavka_client"
version = "0.22.37"
version = "0.22.38"
edition = "2024"
[dependencies]

View File

@ -1,6 +1,6 @@
[package]
name = "lesavka_common"
version = "0.22.37"
version = "0.22.38"
edition = "2024"
build = "build.rs"

View File

@ -10,7 +10,7 @@ bench = false
[package]
name = "lesavka_server"
version = "0.22.37"
version = "0.22.38"
edition = "2024"
autobins = false

View File

@ -770,6 +770,16 @@ impl WebcamSink {
);
return;
}
if decoded_bytes > self.direct_mjpeg_max_bytes {
warn!(
target:"lesavka_server::video",
previous_bytes,
next_bytes = decoded_bytes,
max_bytes = self.direct_mjpeg_max_bytes,
"📸⚠️ freezing oversized decoded HEVC->MJPEG frame before UVC spool"
);
return;
}
if let Err(err) = spool_mjpeg_frame_with_timing(path, map.as_slice(), Some(timing)) {
warn!(target:"lesavka_server::video", %err, "📸⚠️ failed to spool decoded HEVC frame for UVC helper");
} else {