some fumbling
This commit is contained in:
parent
f94f5c836f
commit
d1e7019902
|
@ -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)?;
|
||||
|
|
Loading…
Reference in New Issue