From a6987857bd0add66c9058be8266e0b4554b95331 Mon Sep 17 00:00:00 2001 From: ochibani <11yzyv86j@relay.firefox.com> Date: Sat, 25 Jan 2025 09:26:32 +0200 Subject: [PATCH] update ffmpeg_window --- core/src/ffmpeg_windows.rs | 14 +++++++------- gui/src/ui.rs | 38 +++++++++++++++++++++++++++++++++----- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/core/src/ffmpeg_windows.rs b/core/src/ffmpeg_windows.rs index fd5fb4c..26f8dfa 100644 --- a/core/src/ffmpeg_windows.rs +++ b/core/src/ffmpeg_windows.rs @@ -530,16 +530,16 @@ impl Ffmpeg { // Record audio input if self.audio_input_switch.is_active() { - ffmpeg_command.format("pulse") - .input(&self.audio_input_id.active_id() - .ok_or_else(|| anyhow!("Failed to get audio input ID."))? - ); + ffmpeg_command.format("dshow"); + ffmpeg_command.input(format!("audio=\"{}\"", &self.audio_input_id.active_text() + .ok_or_else(|| anyhow!("Failed to get audio input source."))?) + ); } // Record audio output if self.audio_output_switch.is_active() { - ffmpeg_command.format("pulse") - .input(&self.audio_output_id); + ffmpeg_command.format("dshow"); + ffmpeg_command.input(format!("audio=\"{}\"", &self.audio_output_id)); } // Disable bitrate if value is zero @@ -631,7 +631,7 @@ impl Ffmpeg { ) .format("ogg"); if self.audio_output_switch.is_active() { - ffmpeg_command.format("pulse") + ffmpeg_command.format("dshow") .input(&self.audio_output_id); } ffmpeg_command.format("ogg"); diff --git a/gui/src/ui.rs b/gui/src/ui.rs index 3024dff..6cdba78 100644 --- a/gui/src/ui.rs +++ b/gui/src/ui.rs @@ -745,7 +745,6 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag // Disable show area check button if !area_grab_button.is_active() { - input_widgets.push(area_switch.clone().into()); area_switch.set_active(false); area_switch.set_sensitive(false); } @@ -782,7 +781,7 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag audio_output_switch: audio_output_switch.clone(), follow_mouse: follow_mouse_switch.clone(), record_mouse: mouse_switch.clone(), - show_area: area_switch, + show_area: area_switch.clone(), video_switch: video_switch.clone() })); @@ -811,7 +810,7 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag audio_output_switch: audio_output_switch.clone(), follow_mouse: follow_mouse_switch.clone(), record_mouse: mouse_switch.clone(), - show_area: area_switch, + show_area: area_switch.clone(), video_switch: video_switch.clone(), wayland_recorder: glib::MainContext::default().block_on(WaylandRecorder::new()) })); @@ -821,6 +820,8 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag delay_window_title.set_label(&get_bundle("delay-title", None)); record_button.set_tooltip_text(Some(&get_bundle("record-tooltip", None))); record_label.set_label(&get_bundle("record", None)); + let _area_grab_button = area_grab_button.clone(); + let _area_switch = area_switch.clone(); let _audio_input_switch = audio_input_switch.clone(); let _audio_output_switch = audio_output_switch.clone(); let _delay_spin = delay_spin.clone(); @@ -842,14 +843,17 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag is_record_button_clicked: false, })); record_button.connect_clicked(move |_| { - let mode: RecordMode = if area_grab_button.is_active() { + let mode: RecordMode = if _area_grab_button.is_active() { RecordMode::Area } else if window_grab_button.is_active() { RecordMode::Window } else { RecordMode::Screen }; - + // Disable show area check button + if _area_grab_button.is_active() { + _area_switch.set_sensitive(false); + } // Disable mouse cursor capture during record if _video_switch.is_active() { _mouse_switch.set_sensitive(false); @@ -858,6 +862,9 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag } match _ffmpeg_record_interface.borrow_mut().get_filename() { Err(error) => { + if _area_grab_button.is_active() { + _area_switch.set_sensitive(true); + } if _video_switch.is_active() { _mouse_switch.set_sensitive(true); #[cfg(any(target_os = "freebsd", target_os = "linux"))] @@ -924,6 +931,9 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag // Do nothing }, Err(error) => { + if _area_grab_button.is_active() { + _area_switch.set_sensitive(true); + } if _video_switch.is_active() { _mouse_switch.set_sensitive(true); #[cfg(any(target_os = "freebsd", target_os = "linux"))] @@ -945,6 +955,9 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag // Do nothing }, Err(error) => { + if _area_grab_button.is_active() { + _area_switch.set_sensitive(true); + } if _video_switch.is_active() { _mouse_switch.set_sensitive(true); #[cfg(any(target_os = "freebsd", target_os = "linux"))] @@ -983,6 +996,9 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag // Do nothing }, Err(error) => { + if _area_grab_button.is_active() { + _area_switch.set_sensitive(true); + } if _video_switch.is_active() { _mouse_switch.set_sensitive(true); #[cfg(any(target_os = "freebsd", target_os = "linux"))] @@ -1029,6 +1045,9 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag // Continue }, Err(error) => { + if area_grab_button.is_active() { + area_switch.set_sensitive(true); + } if _video_switch.is_active() { _mouse_switch.set_sensitive(true); #[cfg(any(target_os = "freebsd", target_os = "linux"))] @@ -1051,6 +1070,9 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag // Continue }, Err(error) => { + if area_grab_button.is_active() { + area_switch.set_sensitive(true); + } if _video_switch.is_active() { _mouse_switch.set_sensitive(true); #[cfg(any(target_os = "freebsd", target_os = "linux"))] @@ -1073,6 +1095,9 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag // Continue }, Err(error) => { + if area_grab_button.is_active() { + area_switch.set_sensitive(true); + } if _video_switch.is_active() { _mouse_switch.set_sensitive(true); #[cfg(any(target_os = "freebsd", target_os = "linux"))] @@ -1089,6 +1114,9 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag }, } } + if area_grab_button.is_active() { + area_switch.set_sensitive(true); + } if _video_switch.is_active() { _mouse_switch.set_sensitive(true); #[cfg(any(target_os = "freebsd", target_os = "linux"))]