annotate the sources for test samples
[nihav.git] / nihav-rad / src / demuxers / bink.rs
index a5d8169240f9159f4bf8f0a244ca711eb50fe989..cf576f3763346b4f65f70074534297c0f8d96f1c 100644 (file)
@@ -20,7 +20,7 @@ impl AudioTrack {
         let mut edata: Vec<u8> = Vec::with_capacity(4);
         edata.extend_from_slice(&magic);
         let ainfo = NACodecInfo::new(codecname, NACodecTypeInfo::Audio(ahdr), Some(edata));
-        let res = strmgr.add_stream(NAStream::new(StreamType::Audio, (str_id + 1) as u32, ainfo, 1, srate));
+        let res = strmgr.add_stream(NAStream::new(StreamType::Audio, (str_id + 1) as u32, ainfo, 1, srate, 0));
         validate!(res.is_some());
         let id = res.unwrap();
         Ok(Self{ id })
@@ -78,7 +78,7 @@ impl<'a> DemuxCore<'a> for BinkDemuxer<'a> {
         let vhdr = NAVideoInfo::new(width, height, false, YUV420_FORMAT);
         let codec = if magic[0] == b'K' && magic[1] == b'B' && magic[2] == b'2' { "bink2-video" } else { "bink-video" };
         let vinfo = NACodecInfo::new(codec, NACodecTypeInfo::Video(vhdr), Some(edata));
-        let res = strmgr.add_stream(NAStream::new(StreamType::Video, 0, vinfo, self.tb_num, self.tb_den));
+        let res = strmgr.add_stream(NAStream::new(StreamType::Video, 0, vinfo, self.tb_num, self.tb_den, self.frames as u64));
         validate!(res.is_some());
         self.video_id = res.unwrap();
 
@@ -146,13 +146,13 @@ impl<'a> DemuxCore<'a> for BinkDemuxer<'a> {
         let stream = strres.unwrap();
         let keyframe = (self.frame_pos[self.cur_frame] & 1) != 0;
         let ts = NATimeInfo::new(Some(self.cur_frame as u64), None, None, self.tb_num, self.tb_den);
-        let pkt = self.src.read_packet(stream.clone(), ts, keyframe, payload_size)?;
+        let pkt = self.src.read_packet(stream, ts, keyframe, payload_size)?;
 
         self.cur_frame += 1;
 
         Ok(pkt)
     }
-    fn seek(&mut self, time: u64, seek_idx: &SeekIndex) -> DemuxerResult<()> {
+    fn seek(&mut self, time: NATimePoint, seek_idx: &SeekIndex) -> DemuxerResult<()> {
         let ret = seek_idx.find_pos(time);
         if ret.is_none() {
             return Err(DemuxerError::SeekError);
@@ -163,6 +163,7 @@ impl<'a> DemuxCore<'a> for BinkDemuxer<'a> {
         self.cur_frame = seek_info.pts as usize;
         Ok(())
     }
+    fn get_duration(&self) -> u64 { 0 }
 }
 
 impl<'a> NAOptionHandler for BinkDemuxer<'a> {
@@ -204,6 +205,7 @@ mod test {
 
     #[test]
     fn test_bink_demux() {
+        // sample: https://samples.mplayerhq.hu/game-formats/bink/ActivisionLogo.bik
         let mut file = File::open("assets/RAD/ActivisionLogo.bik").unwrap();
 //        let mut file = File::open("assets/RAD/original.bik").unwrap();
 //        let mut file = File::open("assets/RAD/Snd0a110c51.dee").unwrap();