impl<'a> DemuxCore<'a> for VXDemuxer<'a> {
#[allow(unused_variables)]
+ #[allow(clippy::cast_lossless)]
fn open(&mut self, strmgr: &mut StreamManager, _seek_index: &mut SeekIndex) -> DemuxerResult<()> {
let src = &mut self.src;
let vci = NACodecTypeInfo::Video(vhdr);
let edata = [fps as u8].to_vec();
let vinfo = NACodecInfo::new("vxvideo", vci, Some(edata));
- self.vid_id = strmgr.add_stream(NAStream::new(StreamType::Video, 0, vinfo, 1, fps)).unwrap();
+ self.vid_id = strmgr.add_stream(NAStream::new(StreamType::Video, 0, vinfo, 1, fps, nframes as u64)).unwrap();
if num_audio_tracks != 0 {
validate!(audio_off + ((num_audio_tracks * AUDIO_EXTRADATA_LEN) as u64) == vinfo_off);
src.read_buf(edata.as_mut_slice())?;
let ahdr = NAAudioInfo::new(srate, 1, SND_S16P_FORMAT, 1);
let ainfo = NACodecInfo::new("vxaudio", NACodecTypeInfo::Audio(ahdr), Some(edata));
- self.aud_id = strmgr.add_stream(NAStream::new(StreamType::Audio, 1, ainfo, 1, srate)).unwrap();
+ self.aud_id = strmgr.add_stream(NAStream::new(StreamType::Audio, 1, ainfo, 1, srate, 0)).unwrap();
self.num_afrm = nframes as u64;
self.ano = 0;
self.num_aud = num_audio_tracks;
let stream = strmgr.get_stream(self.vid_id);
if stream.is_none() { return Err(DemuxerError::InvalidData); }
let stream = stream.unwrap();
- let (tn, td) = stream.get_timebase();
- let ts = NATimeInfo::new(Some(self.vno), None, None, tn, td);
+ let ts = stream.make_ts(Some(self.vno), None, None);
let size = self.src.read_u16le()? as usize;
validate!(size > 2);
let _num_achunks = self.src.read_u16le()?;
fn seek(&mut self, _time: NATimePoint, _seek_index: &SeekIndex) -> DemuxerResult<()> {
Err(DemuxerError::NotPossible)
}
+
+ fn get_duration(&self) -> u64 { 0 }
}
impl<'a> NAOptionHandler for VXDemuxer<'a> {
#[test]
fn test_vx_demux() {
+ // sample from some game
let mut file = File::open("assets/Game/bioware.vx").unwrap();
//let mut file = File::open("assets/Game/BS_01_Intro.vx").unwrap();
//let mut file = File::open("assets/Game/sega.vx").unwrap();