diff --git a/src/ui/factories/wivrn_encoder_group_factory.rs b/src/ui/factories/wivrn_encoder_group_factory.rs index 7b51a73..4b59dae 100644 --- a/src/ui/factories/wivrn_encoder_group_factory.rs +++ b/src/ui/factories/wivrn_encoder_group_factory.rs @@ -2,6 +2,7 @@ use crate::{ file_builders::wivrn_config::{Codec, Encoder, WivrnConfEncoder}, ui::{ preference_rows::{combo_row, number_entry_row, spin_row}, + util::{bits_from_mbits, bits_to_mbits}, wivrn_conf_editor::WivrnConfEditorMsg, }, }; @@ -85,9 +86,13 @@ impl AsyncFactoryComponent for WivrnEncoderModel { } ) -> adw::ComboRow, add: bitrate_row = &number_entry_row( - "Bitrate", + "Bitrate (Mbps)", &self.encoder_conf.bitrate - .and_then(|n| Some(n.to_string())) + .and_then(|n| if let Some(mbits) = bits_to_mbits(n) { + Some(mbits.to_string()) + } else { + None + }) .unwrap_or_default(), false, { @@ -98,7 +103,10 @@ impl AsyncFactoryComponent for WivrnEncoderModel { if txt.is_empty() { None } else { - Some(txt.parse::().unwrap()) + match txt.parse::() { + Ok(bits) => bits_from_mbits(bits), + Err(e) => None, + } } )); } diff --git a/src/ui/util.rs b/src/ui/util.rs index c1826f7..ff76cf2 100644 --- a/src/ui/util.rs +++ b/src/ui/util.rs @@ -61,3 +61,11 @@ pub fn copy_text(txt: &str) { } } } + +pub fn bits_to_mbits(bits: u32) -> Option { + bits.checked_div(1000000) +} + +pub fn bits_from_mbits(mbits: u32) -> Option { + mbits.checked_mul(1000000) +}