use sdl2::event::{Event, WindowEvent};
use sdl2::keyboard::{Keycode, Mod};
-use sdl2::mouse::MouseButton;
+use sdl2::mouse::{MouseButton, MouseWheelDirection};
use sdl2::render::{Canvas, Texture, TextureCreator};
use sdl2::pixels::PixelFormatEnum;
use sdl2::video::{Window, WindowContext};
let vsystem = sdl_context.video().expect("video subsystem init failure");
let asystem = sdl_context.audio().expect("audio subsystem init failure");
vsystem.disable_screen_saver();
- let acontrol = AudioControl::new(None, None, &asystem);
+ let acontrol = AudioControl::new(None, None, false, &asystem);
let vcontrol = VideoControl::new(None, 0, 0, 0, 0);
Self {
sdl_context, asystem, vsystem,
_ => {},
};
}
+ if let Event::MouseWheel {direction: MouseWheelDirection::Normal, x: 0, y, ..} = event {
+ self.seek(10, y > 0, dmx, disp_queue)?;
+ }
if let Event::KeyDown {keycode: Some(keycode), keymod, ..} = event {
match keycode {
Keycode::Escape => {
println!();
return Ok(true);
},
- Keycode::Q if matches!(keymod, Mod::RSHIFTMOD | Mod::LSHIFTMOD) => {
+ Keycode::Q if keymod.contains(Mod::RSHIFTMOD) || keymod.contains(Mod::LSHIFTMOD) => {
self.end = true;
println!();
return Ok(true);
let mut tb_num = 0;
let mut tb_den = 0;
let mut ainfo: Option<NAAudioInfo> = None;
+ let mut sbr_hack = false;
let mut video_dec: Option<DecoderStuff> = None;
let mut audio_dec: Option<DecoderStuff> = None;
let mut dec = (decfunc)();
let mut dsupp = Box::new(NADecoderSupport::new());
ainfo = info.get_properties().get_audio_info();
+ if let (true, Some(ref ai)) = (info.get_name() == "aac", ainfo) {
+ if ai.sample_rate < 32000 {
+ sbr_hack = true;
+ }
+ }
if dec.init(&mut dsupp, info).is_err() {
println!("failed to initialise audio decoder");
return;
let mut new_vcontrol = VideoControl::new(video_dec, width, height, tb_num, tb_den);
std::mem::swap(&mut self.vcontrol, &mut new_vcontrol);
- let mut new_acontrol = AudioControl::new(audio_dec, ainfo, &self.asystem);
+ let mut new_acontrol = AudioControl::new(audio_dec, ainfo, sbr_hack, &self.asystem);
std::mem::swap(&mut self.acontrol, &mut new_acontrol);
if self.mute {
"-ae" => { player.play_audio = true; },
"-vn" => { player.play_video = false; },
"-ve" => { player.play_video = true; },
- "-seek" => {
+ "-seek" | "-start" => {
if let Some(arg) = aiter.next() {
if let Ok(time) = arg.parse::<NATimePoint>() {
seek_time = time;