annotate the sources for test samples
[nihav.git] / nihav-llaudio / src / demuxers / tta.rs
index 97ee808c01163898d54d112184606ad89a0bfcf9..8c2150c028c8ac4d902904207f697c76468fcd5c 100644 (file)
@@ -9,6 +9,7 @@ struct TTADemuxer<'a> {
     offtab:         Vec<u64>,
     sizetab:        Vec<u32>,
     framelen:       u32,
+    duration:       u64,
 }
 
 impl<'a> TTADemuxer<'a> {
@@ -21,6 +22,7 @@ impl<'a> TTADemuxer<'a> {
             offtab:         Vec::new(),
             sizetab:        Vec::new(),
             framelen:       0,
+            duration:       0,
         }
     }
 }
@@ -46,6 +48,7 @@ impl<'a> DemuxCore<'a> for TTADemuxer<'a> {
         self.framelen = srate * 256 / 245;
 
         self.nframes = (self.nsamples + self.framelen - 1) / self.framelen;
+        self.duration = u64::from(self.nsamples) * 1000 / u64::from(srate);
 
         seek_index.mode = SeekIndexMode::Present;
         let mut off = u64::from(self.nframes) * 4 + 4 + 22;
@@ -62,7 +65,7 @@ impl<'a> DemuxCore<'a> for TTADemuxer<'a> {
 
         let ahdr = NAAudioInfo::new(srate, channels as u8, SND_S16P_FORMAT, 1);
         let ainfo = NACodecInfo::new("tta", NACodecTypeInfo::Audio(ahdr), Some(hdr));
-        strmgr.add_stream(NAStream::new(StreamType::Audio, 0, ainfo, self.framelen, srate)).unwrap();
+        strmgr.add_stream(NAStream::new(StreamType::Audio, 0, ainfo, self.framelen, srate, u64::from(self.nframes))).unwrap();
 
         self.cur_frame = 0;
 
@@ -96,6 +99,7 @@ impl<'a> DemuxCore<'a> for TTADemuxer<'a> {
 
         Ok(())
     }
+    fn get_duration(&self) -> u64 { self.duration }
 }
 
 impl<'a> NAOptionHandler for TTADemuxer<'a> {
@@ -120,6 +124,7 @@ mod test {
 
     #[test]
     fn test_tta_demux() {
+        // sample: https://samples.mplayerhq.hu/A-codecs/lossless/luckynight.tta
         let mut file = File::open("assets/LLaudio/luckynight.tta").unwrap();
         let mut fr = FileReader::new_read(&mut file);
         let mut br = ByteReader::new(&mut fr);