From d1e70199022496236e6c11925b8e7b252b06d744 Mon Sep 17 00:00:00 2001 From: Vivian Lim Date: Sun, 29 Nov 2020 02:01:07 -0800 Subject: [PATCH] some fumbling --- examples/ffmpeg_recorder.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/examples/ffmpeg_recorder.rs b/examples/ffmpeg_recorder.rs index 4fe04e4..2ea4080 100644 --- a/examples/ffmpeg_recorder.rs +++ b/examples/ffmpeg_recorder.rs @@ -110,16 +110,21 @@ impl MyEmulator { let retro = retro::wrapper::LibretroWrapper::from(raw_retro); let sys_info = retro.get_system_info(); - let av_info = retro.get_system_av_info(); + let mut av_info = retro.get_system_av_info(); let fps_int = av_info.timing.fps.round() as i32; let fps_int = if fps_int == 0 { 60 } else { fps_int }; video_encoder.set_time_base(Rational::new(1, fps_int)); video_encoder.set_frame_rate(av_info.timing.fps.into()); + if av_info.geometry.base_height == 0 && av_info.geometry.base_width == 0 { + av_info.geometry.base_width = 640; + av_info.geometry.base_height = 480; + av_info.geometry.aspect_ratio = 4.33; + } video_encoder.set_width(av_info.geometry.base_width); video_encoder.set_height(av_info.geometry.base_height); - video_encoder.set_aspect_ratio(av_info.geometry.aspect_ratio as f64); + //video_encoder.set_aspect_ratio(av_info.geometry.aspect_ratio as f64); audio_encoder.set_rate(44100); @@ -249,7 +254,9 @@ impl retro::wrapper::Handler for MyEmulator { fn set_system_av_info(&mut self, system_av_info: SystemAvInfo) -> bool { self.video_encoder.set_frame_rate(system_av_info.timing.fps.into()); + if system_av_info.timing.sample_rate.round() as i32 > 0 { self.audio_encoder.set_rate(system_av_info.timing.sample_rate.round() as i32); + } self.av_info.timing = system_av_info.timing; self.set_geometry(system_av_info.geometry); true @@ -289,6 +296,7 @@ struct Opt { fn main() -> Fallible<()> { let opt: Opt = Opt::from_args(); + ffmpeg::log::set_level(ffmpeg::log::Level::Trace); ffmpeg::init().unwrap(); let mut octx = format::output(&opt.video)?;