lesavka: retire broken sd source modes
This commit is contained in:
parent
8273b83017
commit
2356817080
@ -4,7 +4,7 @@ path = "src/main.rs"
|
||||
|
||||
[package]
|
||||
name = "lesavka_client"
|
||||
version = "0.11.17"
|
||||
version = "0.11.18"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@ -684,7 +684,7 @@ fn recommendations_for(state: &LauncherState, log: &DiagnosticsLog) -> Vec<Strin
|
||||
.any(|preset| !matches!(preset, FeedSourcePreset::Off));
|
||||
if source_passthrough {
|
||||
items.push(
|
||||
"Device H.264 pass-through is active. If we need it cheaper, use the eye device's real 1080p/720p/576p/480p/VGA source modes before considering codec-aware thinning."
|
||||
"Device H.264 pass-through is active. On current GC311 hardware, prefer the real 1080p/720p source modes. The lower SD/VGA modes are intentionally retired because they center-cut widescreen HDMI sources."
|
||||
.to_string(),
|
||||
);
|
||||
}
|
||||
|
||||
@ -2019,7 +2019,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
fn inline_preview_requests_native_480p_source_mode_on_wire() {
|
||||
fn inline_preview_legacy_low_modes_fall_forward_to_720p_on_wire() {
|
||||
let relay = ProbeRelay::default();
|
||||
let requests = relay.requests.clone();
|
||||
let rt = tokio::runtime::Runtime::new().expect("runtime");
|
||||
@ -2055,10 +2055,10 @@ mod tests {
|
||||
if let Some(request) = requests.lock().unwrap().last().cloned() {
|
||||
assert_eq!(request.id, 1);
|
||||
assert_eq!(request.source_id, Some(1));
|
||||
assert_eq!(request.requested_width, 720);
|
||||
assert_eq!(request.requested_height, 480);
|
||||
assert_eq!(request.requested_width, 1280);
|
||||
assert_eq!(request.requested_height, 720);
|
||||
assert_eq!(request.requested_fps, 60);
|
||||
assert_eq!(request.max_bitrate, 2_500);
|
||||
assert_eq!(request.max_bitrate, 12_000);
|
||||
preview.shutdown_all();
|
||||
return;
|
||||
}
|
||||
@ -2066,7 +2066,7 @@ mod tests {
|
||||
}
|
||||
|
||||
preview.shutdown_all();
|
||||
panic!("preview did not issue a 480p source capture request within timeout");
|
||||
panic!("preview did not issue a 720p fallback source capture request within timeout");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@ -190,20 +190,15 @@ impl CaptureSizePreset {
|
||||
}
|
||||
|
||||
pub fn source_mode(self) -> EyeSourceMode {
|
||||
match self {
|
||||
Self::Vga => native_eye_source_modes()[4],
|
||||
Self::P480 => native_eye_source_modes()[3],
|
||||
Self::P576 => native_eye_source_modes()[2],
|
||||
match normalize_capture_size_preset(self) {
|
||||
Self::P720 => native_eye_source_modes()[1],
|
||||
Self::P1080 => native_eye_source_modes()[0],
|
||||
Self::Vga | Self::P480 | Self::P576 => native_eye_source_modes()[1],
|
||||
}
|
||||
}
|
||||
|
||||
pub fn from_source_mode(mode: EyeSourceMode) -> Self {
|
||||
match (mode.width, mode.height, mode.fps) {
|
||||
(640, 480, 60) => Self::Vga,
|
||||
(720, 480, 60) => Self::P480,
|
||||
(720, 576, 50) => Self::P576,
|
||||
(1280, 720, 60) => Self::P720,
|
||||
_ => Self::P1080,
|
||||
}
|
||||
@ -909,7 +904,12 @@ fn default_profile_for_preset(
|
||||
}
|
||||
|
||||
fn normalize_capture_size_preset(preset: CaptureSizePreset) -> CaptureSizePreset {
|
||||
preset
|
||||
match preset {
|
||||
CaptureSizePreset::Vga | CaptureSizePreset::P480 | CaptureSizePreset::P576 => {
|
||||
CaptureSizePreset::P720
|
||||
}
|
||||
other => other,
|
||||
}
|
||||
}
|
||||
|
||||
fn fit_standard_dimensions(
|
||||
@ -1161,19 +1161,20 @@ mod tests {
|
||||
|
||||
state.set_capture_size_preset(0, CaptureSizePreset::P480);
|
||||
let compact_capture = state.capture_size_choice(0);
|
||||
assert_eq!(compact_capture.width, 720);
|
||||
assert_eq!(compact_capture.height, 480);
|
||||
assert_eq!(compact_capture.preset, CaptureSizePreset::P720);
|
||||
assert_eq!(compact_capture.width, 1280);
|
||||
assert_eq!(compact_capture.height, 720);
|
||||
assert_eq!(compact_capture.fps, 60);
|
||||
assert_eq!(compact_capture.max_bitrate_kbit, 2_500);
|
||||
assert_eq!(compact_capture.max_bitrate_kbit, 12_000);
|
||||
|
||||
let effective_source = state.effective_preview_source_size(0);
|
||||
assert_eq!(effective_source.width, 720);
|
||||
assert_eq!(effective_source.height, 480);
|
||||
assert_eq!(effective_source.width, 1280);
|
||||
assert_eq!(effective_source.height, 720);
|
||||
assert_eq!(effective_source.fps, 60);
|
||||
|
||||
let display = state.breakout_size_choice(0);
|
||||
assert_eq!(display.width, 852);
|
||||
assert_eq!(display.height, 480);
|
||||
assert_eq!(display.width, 1280);
|
||||
assert_eq!(display.height, 720);
|
||||
|
||||
state.set_breakout_size_preset(0, BreakoutSizePreset::P360);
|
||||
let smaller = state.breakout_size_choice(0);
|
||||
@ -1186,7 +1187,7 @@ mod tests {
|
||||
assert_eq!(compact.height, 540);
|
||||
|
||||
let capture_options = state.capture_size_options();
|
||||
assert_eq!(capture_options.len(), 5);
|
||||
assert_eq!(capture_options.len(), 2);
|
||||
assert_eq!(capture_options[0].preset, CaptureSizePreset::P1080);
|
||||
assert_eq!(capture_options[0].width, 1920);
|
||||
assert_eq!(capture_options[0].height, 1080);
|
||||
@ -1197,8 +1198,8 @@ mod tests {
|
||||
assert!(breakout_options.len() >= 5);
|
||||
assert!(breakout_options.iter().any(|choice| {
|
||||
choice.preset == BreakoutSizePreset::Source
|
||||
&& choice.width == 852
|
||||
&& choice.height == 480
|
||||
&& choice.width == 1280
|
||||
&& choice.height == 720
|
||||
}));
|
||||
}
|
||||
|
||||
@ -1274,16 +1275,16 @@ mod tests {
|
||||
|
||||
state.set_capture_size_preset(0, CaptureSizePreset::P576);
|
||||
let compact = state.capture_size_choice(0);
|
||||
assert_eq!(compact.preset, CaptureSizePreset::P576);
|
||||
assert_eq!(compact.width, 720);
|
||||
assert_eq!(compact.height, 576);
|
||||
assert_eq!(compact.fps, 50);
|
||||
assert_eq!(compact.preset, CaptureSizePreset::P720);
|
||||
assert_eq!(compact.width, 1280);
|
||||
assert_eq!(compact.height, 720);
|
||||
assert_eq!(compact.fps, 60);
|
||||
|
||||
state.set_capture_size_preset(0, CaptureSizePreset::Vga);
|
||||
let small = state.capture_size_choice(0);
|
||||
assert_eq!(small.preset, CaptureSizePreset::Vga);
|
||||
assert_eq!(small.width, 640);
|
||||
assert_eq!(small.height, 480);
|
||||
assert_eq!(small.preset, CaptureSizePreset::P720);
|
||||
assert_eq!(small.width, 1280);
|
||||
assert_eq!(small.height, 720);
|
||||
assert_eq!(small.fps, 60);
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "lesavka_common"
|
||||
version = "0.11.17"
|
||||
version = "0.11.18"
|
||||
edition = "2024"
|
||||
build = "build.rs"
|
||||
|
||||
|
||||
@ -17,6 +17,6 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn banner_includes_version() {
|
||||
assert_eq!(banner("0.11.17"), "lesavka-common CLI (v0.11.17)");
|
||||
assert_eq!(banner("0.11.18"), "lesavka-common CLI (v0.11.18)");
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@ pub struct EyeSourceMode {
|
||||
pub fps: u32,
|
||||
}
|
||||
|
||||
const GC311_H264_SOURCE_MODES: [EyeSourceMode; 5] = [
|
||||
const GC311_H264_SOURCE_MODES: [EyeSourceMode; 2] = [
|
||||
EyeSourceMode {
|
||||
width: 1920,
|
||||
height: 1080,
|
||||
@ -16,21 +16,6 @@ const GC311_H264_SOURCE_MODES: [EyeSourceMode; 5] = [
|
||||
height: 720,
|
||||
fps: 60,
|
||||
},
|
||||
EyeSourceMode {
|
||||
width: 720,
|
||||
height: 576,
|
||||
fps: 50,
|
||||
},
|
||||
EyeSourceMode {
|
||||
width: 720,
|
||||
height: 480,
|
||||
fps: 60,
|
||||
},
|
||||
EyeSourceMode {
|
||||
width: 640,
|
||||
height: 480,
|
||||
fps: 60,
|
||||
},
|
||||
];
|
||||
|
||||
pub fn native_eye_source_modes() -> &'static [EyeSourceMode] {
|
||||
@ -100,8 +85,8 @@ mod tests {
|
||||
assert_eq!(
|
||||
eye_source_mode_for_request(960, 540),
|
||||
EyeSourceMode {
|
||||
width: 720,
|
||||
height: 480,
|
||||
width: 1280,
|
||||
height: 720,
|
||||
fps: 60,
|
||||
}
|
||||
);
|
||||
@ -125,29 +110,5 @@ mod tests {
|
||||
}),
|
||||
(1280, 720)
|
||||
);
|
||||
assert_eq!(
|
||||
display_size_for_source_mode(EyeSourceMode {
|
||||
width: 720,
|
||||
height: 576,
|
||||
fps: 50,
|
||||
}),
|
||||
(1024, 576)
|
||||
);
|
||||
assert_eq!(
|
||||
display_size_for_source_mode(EyeSourceMode {
|
||||
width: 720,
|
||||
height: 480,
|
||||
fps: 60,
|
||||
}),
|
||||
(854, 480)
|
||||
);
|
||||
assert_eq!(
|
||||
display_size_for_source_mode(EyeSourceMode {
|
||||
width: 640,
|
||||
height: 480,
|
||||
fps: 60,
|
||||
}),
|
||||
(640, 480)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@ bench = false
|
||||
|
||||
[package]
|
||||
name = "lesavka_server"
|
||||
version = "0.11.17"
|
||||
version = "0.11.18"
|
||||
edition = "2024"
|
||||
autobins = false
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user