diff --git a/client/Cargo.toml b/client/Cargo.toml index 92f4d80..4bf2cc7 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -4,7 +4,7 @@ path = "src/main.rs" [package] name = "lesavka_client" -version = "0.11.6" +version = "0.11.7" edition = "2024" [dependencies] diff --git a/client/src/launcher/preview.rs b/client/src/launcher/preview.rs index 59aff28..0337511 100644 --- a/client/src/launcher/preview.rs +++ b/client/src/launcher/preview.rs @@ -1342,20 +1342,17 @@ fn adapt_inline_preview_request( max_bitrate_kbit: u32, prefer_reencode: bool, ) -> (i32, i32, u32, u32, bool) { - let bounded_width = requested_width.max(2).min(preview_dimension( - "LESAVKA_PREVIEW_REQUEST_WIDTH", - INLINE_PREVIEW_REQUEST_WIDTH, - )); - let bounded_height = requested_height.max(2).min(preview_dimension( - "LESAVKA_PREVIEW_REQUEST_HEIGHT", - INLINE_PREVIEW_REQUEST_HEIGHT, - )); - let (inline_width, inline_height) = fit_preview_within_bounds( - requested_width.max(2), - requested_height.max(2), - bounded_width, - bounded_height, - ); + let inline_width = requested_width.max(2); + let inline_height = requested_height.max(2); + if !prefer_reencode { + return ( + inline_width, + inline_height, + requested_fps.max(1), + max_bitrate_kbit.max(800), + false, + ); + } let inline_fps = requested_fps.max(1).min(preview_bitrate( "LESAVKA_PREVIEW_REQUEST_FPS", INLINE_PREVIEW_REQUEST_FPS, @@ -1364,10 +1361,7 @@ fn adapt_inline_preview_request( "LESAVKA_PREVIEW_MAX_KBIT", INLINE_PREVIEW_MAX_KBIT, )); - let adapted = inline_width != requested_width.max(2) - || inline_height != requested_height.max(2) - || inline_fps != requested_fps.max(1) - || inline_bitrate != max_bitrate_kbit.max(800); + let adapted = inline_fps != requested_fps.max(1) || inline_bitrate != max_bitrate_kbit.max(800); ( inline_width, inline_height, @@ -1378,36 +1372,6 @@ fn adapt_inline_preview_request( } #[cfg(not(coverage))] -fn fit_preview_within_bounds( - requested_width: i32, - requested_height: i32, - max_width: i32, - max_height: i32, -) -> (i32, i32) { - let requested_width = round_down_even_i32(requested_width.max(2)); - let requested_height = round_down_even_i32(requested_height.max(2)); - let max_width = round_down_even_i32(max_width.max(2)); - let max_height = round_down_even_i32(max_height.max(2)); - if requested_width <= max_width && requested_height <= max_height { - return (requested_width, requested_height); - } - let width_limited_height = - round_down_even_i32((requested_height * max_width) / requested_width); - if width_limited_height <= max_height { - (max_width, width_limited_height.max(2)) - } else { - let height_limited_width = - round_down_even_i32((requested_width * max_height) / requested_height); - (height_limited_width.max(2), max_height) - } -} - -#[cfg(not(coverage))] -fn round_down_even_i32(value: i32) -> i32 { - let value = value.max(2); - value - (value & 1) -} - #[cfg(not(coverage))] fn events_per_second(events: &VecDeque, now: Instant) -> f32 { let Some(oldest) = events.front().copied() else { @@ -1494,8 +1458,14 @@ mod tests { #[test] fn inline_preview_request_caps_large_full_quality_streams() { + let adapted = adapt_inline_preview_request(1920, 1080, 30, 12_000, true); + assert_eq!(adapted, (1920, 1080, 24, 4_000, true)); + } + + #[test] + fn inline_preview_request_keeps_source_stream_honest() { let adapted = adapt_inline_preview_request(1920, 1080, 30, 12_000, false); - assert_eq!(adapted, (960, 540, 24, 4_000, true)); + assert_eq!(adapted, (1920, 1080, 30, 12_000, false)); } #[test] diff --git a/common/Cargo.toml b/common/Cargo.toml index 407f30b..2d0f0f3 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lesavka_common" -version = "0.11.6" +version = "0.11.7" edition = "2024" build = "build.rs" diff --git a/common/src/cli.rs b/common/src/cli.rs index 0d206f5..72d7e34 100644 --- a/common/src/cli.rs +++ b/common/src/cli.rs @@ -17,6 +17,6 @@ mod tests { #[test] fn banner_includes_version() { - assert_eq!(banner("0.11.6"), "lesavka-common CLI (v0.11.6)"); + assert_eq!(banner("0.11.7"), "lesavka-common CLI (v0.11.7)"); } } diff --git a/server/Cargo.toml b/server/Cargo.toml index fb8a0fa..4a19ca2 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -10,7 +10,7 @@ bench = false [package] name = "lesavka_server" -version = "0.11.6" +version = "0.11.7" edition = "2024" autobins = false