video and audio callback API change:
fn video_refresh(&mut self, data: &[u8], width: c_uint, height: c_uint, pitch: c_uint);
fn video_refresh_dupe(&mut self, width: c_uint, height: c_uint, pitch: c_uint);
fn video_refresh_hw(&mut self, width: c_uint, height: c_uint);
fn audio_sample(&mut self, left: i16, right: i16);
fn audio_sample_batch(&mut self, stereo_pcm: &[i16]) -> usize;
have been replaced with
fn video_refresh(&mut self, frame: &VideoFrame);
fn audio_samples(&mut self, stereo_pcm: &[i16]) -> usize;
where VideoFrame is
pub enum VideoFrame<'a> {
XRGB1555 { data: &'a [u16], width: c_uint, height: c_uint, pitch_u16: usize },
RGB565 { data: &'a [u16], width: c_uint, height: c_uint, pitch_u16: usize },
XRGB8888 { data: &'a [u32], width: c_uint, height: c_uint, pitch_u32: usize },
Duplicate { width: c_uint, height: c_uint, pitch_u8: usize, },
HardwareRender { width: c_uint, height: c_uint, },
}
use `pub fn VideoFrame::data_pitch_as_bytes(&self) -> Option<(&'a [u8], usize)>` for things that need to access the framebuffer data as a byte array rather than a pixel array.