test(lesavka): repair HEVC guard contract harness
This commit is contained in:
parent
71846c90a5
commit
518f74b91a
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -1749,6 +1749,7 @@ dependencies = [
|
|||||||
"gstreamer-app",
|
"gstreamer-app",
|
||||||
"gstreamer-video",
|
"gstreamer-video",
|
||||||
"gtk4",
|
"gtk4",
|
||||||
|
"jpeg-decoder",
|
||||||
"lesavka_client",
|
"lesavka_client",
|
||||||
"lesavka_common",
|
"lesavka_common",
|
||||||
"lesavka_server",
|
"lesavka_server",
|
||||||
|
|||||||
@ -44,6 +44,7 @@ gstreamer = { version = "0.23", features = ["v1_22"] }
|
|||||||
gstreamer-app = { version = "0.23", features = ["v1_22"] }
|
gstreamer-app = { version = "0.23", features = ["v1_22"] }
|
||||||
gstreamer-video = { version = "0.23", features = ["v1_22"] }
|
gstreamer-video = { version = "0.23", features = ["v1_22"] }
|
||||||
gtk = { version = "0.8", package = "gtk4", features = ["v4_6"] }
|
gtk = { version = "0.8", package = "gtk4", features = ["v4_6"] }
|
||||||
|
jpeg-decoder = { version = "0.3", default-features = false }
|
||||||
winit = "0.30"
|
winit = "0.30"
|
||||||
serial_test = { workspace = true }
|
serial_test = { workspace = true }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
|||||||
@ -1308,17 +1308,22 @@
|
|||||||
"server/src/video_sinks/hevc_mjpeg_guard.rs": {
|
"server/src/video_sinks/hevc_mjpeg_guard.rs": {
|
||||||
"clippy_warnings": 0,
|
"clippy_warnings": 0,
|
||||||
"doc_debt": 0,
|
"doc_debt": 0,
|
||||||
"loc": 375
|
"loc": 383
|
||||||
},
|
},
|
||||||
"server/src/video_sinks/hevc_mjpeg_guard/mjpeg_frame_inspection.rs": {
|
"server/src/video_sinks/hevc_mjpeg_guard/mjpeg_frame_inspection.rs": {
|
||||||
"clippy_warnings": 0,
|
"clippy_warnings": 0,
|
||||||
"doc_debt": 1,
|
"doc_debt": 1,
|
||||||
"loc": 167
|
"loc": 167
|
||||||
},
|
},
|
||||||
|
"server/src/video_sinks/hevc_mjpeg_guard/mjpeg_visual_guard.rs": {
|
||||||
|
"clippy_warnings": 0,
|
||||||
|
"doc_debt": 8,
|
||||||
|
"loc": 475
|
||||||
|
},
|
||||||
"server/src/video_sinks/hevc_mjpeg_guard/tests.rs": {
|
"server/src/video_sinks/hevc_mjpeg_guard/tests.rs": {
|
||||||
"clippy_warnings": 0,
|
"clippy_warnings": 0,
|
||||||
"doc_debt": 5,
|
"doc_debt": 11,
|
||||||
"loc": 258
|
"loc": 422
|
||||||
},
|
},
|
||||||
"server/src/video_sinks/mjpeg_spool.rs": {
|
"server/src/video_sinks/mjpeg_spool.rs": {
|
||||||
"clippy_warnings": 0,
|
"clippy_warnings": 0,
|
||||||
|
|||||||
@ -15,33 +15,36 @@ mod video_support {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::items_after_test_module)]
|
mod video_sinks {
|
||||||
mod guard {
|
#[allow(clippy::items_after_test_module)]
|
||||||
include!(concat!(
|
pub mod hevc_mjpeg_guard {
|
||||||
env!("CARGO_MANIFEST_DIR"),
|
include!(concat!(
|
||||||
"/server/src/video_sinks/hevc_mjpeg_guard.rs"
|
env!("CARGO_MANIFEST_DIR"),
|
||||||
));
|
"/server/src/video_sinks/hevc_mjpeg_guard.rs"
|
||||||
|
));
|
||||||
|
|
||||||
pub fn should_freeze(previous_bytes: u64, next_bytes: usize) -> bool {
|
pub fn should_freeze(previous_bytes: u64, next_bytes: usize) -> bool {
|
||||||
should_freeze_decoded_mjpeg(previous_bytes, next_bytes)
|
should_freeze_decoded_mjpeg(previous_bytes, next_bytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn should_freeze_frame(previous_bytes: u64, decoded_mjpeg: &[u8]) -> bool {
|
pub fn should_freeze_frame(previous_bytes: u64, decoded_mjpeg: &[u8]) -> bool {
|
||||||
should_freeze_decoded_mjpeg_frame(previous_bytes, decoded_mjpeg)
|
should_freeze_decoded_mjpeg_frame(previous_bytes, decoded_mjpeg)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn should_reject_direct_frame(previous_bytes: u64, mjpeg: &[u8]) -> bool {
|
pub fn should_reject_direct_frame(previous_bytes: u64, mjpeg: &[u8]) -> bool {
|
||||||
should_reject_direct_mjpeg_frame(previous_bytes, mjpeg)
|
should_reject_direct_mjpeg_frame(previous_bytes, mjpeg)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn should_reject_direct_frame_with_budget(
|
pub fn should_reject_direct_frame_with_budget(
|
||||||
previous_bytes: u64,
|
previous_bytes: u64,
|
||||||
max_bytes: usize,
|
max_bytes: usize,
|
||||||
mjpeg: &[u8],
|
mjpeg: &[u8],
|
||||||
) -> bool {
|
) -> bool {
|
||||||
direct_mjpeg_reject_reason(previous_bytes, Some(max_bytes), None, mjpeg).is_some()
|
direct_mjpeg_reject_reason(previous_bytes, Some(max_bytes), None, mjpeg).is_some()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
use video_sinks::hevc_mjpeg_guard as guard;
|
||||||
|
|
||||||
const WEBCAM_SINK: &str = include_str!(concat!(
|
const WEBCAM_SINK: &str = include_str!(concat!(
|
||||||
env!("CARGO_MANIFEST_DIR"),
|
env!("CARGO_MANIFEST_DIR"),
|
||||||
|
|||||||
@ -20,7 +20,7 @@ mod video_support {
|
|||||||
mod media_timing;
|
mod media_timing;
|
||||||
|
|
||||||
#[allow(warnings)]
|
#[allow(warnings)]
|
||||||
mod video_sinks_include_contract {
|
mod video_sinks {
|
||||||
include!(env!("LESAVKA_SERVER_VIDEO_SINKS_SRC"));
|
include!(env!("LESAVKA_SERVER_VIDEO_SINKS_SRC"));
|
||||||
|
|
||||||
use crate::camera::{CameraOutput, HdmiConnector, HdmiMode};
|
use crate::camera::{CameraOutput, HdmiConnector, HdmiMode};
|
||||||
|
|||||||
@ -18,21 +18,24 @@ mod video_support {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::items_after_test_module)]
|
mod video_sinks {
|
||||||
mod guard {
|
#[allow(clippy::items_after_test_module)]
|
||||||
include!(concat!(
|
pub mod hevc_mjpeg_guard {
|
||||||
env!("CARGO_MANIFEST_DIR"),
|
include!(concat!(
|
||||||
"/server/src/video_sinks/hevc_mjpeg_guard.rs"
|
env!("CARGO_MANIFEST_DIR"),
|
||||||
));
|
"/server/src/video_sinks/hevc_mjpeg_guard.rs"
|
||||||
|
));
|
||||||
|
|
||||||
pub fn normalizer_enabled() -> bool {
|
pub fn normalizer_enabled() -> bool {
|
||||||
direct_mjpeg_normalize_enabled()
|
direct_mjpeg_normalize_enabled()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn normalizer_rss_limit_kb() -> Option<u64> {
|
pub fn normalizer_rss_limit_kb() -> Option<u64> {
|
||||||
direct_mjpeg_normalize_rss_limit_kb()
|
direct_mjpeg_normalize_rss_limit_kb()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
use video_sinks::hevc_mjpeg_guard as guard;
|
||||||
|
|
||||||
const SERVER_INSTALL: &str = include_str!(concat!(
|
const SERVER_INSTALL: &str = include_str!(concat!(
|
||||||
env!("CARGO_MANIFEST_DIR"),
|
env!("CARGO_MANIFEST_DIR"),
|
||||||
|
|||||||
@ -16,33 +16,36 @@ mod video_support {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::items_after_test_module)]
|
mod video_sinks {
|
||||||
mod guard {
|
#[allow(clippy::items_after_test_module)]
|
||||||
include!(concat!(
|
pub mod hevc_mjpeg_guard {
|
||||||
env!("CARGO_MANIFEST_DIR"),
|
include!(concat!(
|
||||||
"/server/src/video_sinks/hevc_mjpeg_guard.rs"
|
env!("CARGO_MANIFEST_DIR"),
|
||||||
));
|
"/server/src/video_sinks/hevc_mjpeg_guard.rs"
|
||||||
|
));
|
||||||
|
|
||||||
pub fn jpeg_quality() -> u32 {
|
pub fn jpeg_quality() -> u32 {
|
||||||
hevc_jpeg_quality()
|
hevc_jpeg_quality()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn min_reference() -> u32 {
|
pub fn min_reference() -> u32 {
|
||||||
min_reference_bytes()
|
min_reference_bytes()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn drop_pct() -> u32 {
|
pub fn drop_pct() -> u32 {
|
||||||
size_drop_pct()
|
size_drop_pct()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn should_freeze(previous_bytes: u64, next_bytes: usize) -> bool {
|
pub fn should_freeze(previous_bytes: u64, next_bytes: usize) -> bool {
|
||||||
should_freeze_decoded_mjpeg(previous_bytes, next_bytes)
|
should_freeze_decoded_mjpeg(previous_bytes, next_bytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn should_freeze_frame(previous_bytes: u64, decoded_mjpeg: &[u8]) -> bool {
|
pub fn should_freeze_frame(previous_bytes: u64, decoded_mjpeg: &[u8]) -> bool {
|
||||||
should_freeze_decoded_mjpeg_frame(previous_bytes, decoded_mjpeg)
|
should_freeze_decoded_mjpeg_frame(previous_bytes, decoded_mjpeg)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
use video_sinks::hevc_mjpeg_guard as guard;
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
struct GuardedFrameEmitter {
|
struct GuardedFrameEmitter {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user