projects
/
nihav.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
replace vec.truncate(0) with vec.clear()
[nihav.git]
/
nihav-rad
/
src
/
demuxers
/
smacker.rs
diff --git
a/nihav-rad/src/demuxers/smacker.rs
b/nihav-rad/src/demuxers/smacker.rs
index accbfa51b956ca1a2bcc8c926209111c40bbcd59..3a45826850da8852461f556463b933cc8dc94619 100644
(file)
--- a/
nihav-rad/src/demuxers/smacker.rs
+++ b/
nihav-rad/src/demuxers/smacker.rs
@@
-56,7
+56,7
@@
impl AudioTrack {
let soniton = if (self.flags & SMK_AUD_FLAG_16BIT) != 0 { SND_S16_FORMAT } else { SND_U8_FORMAT };
let ahdr = NAAudioInfo::new(self.srate, channels, soniton, 1);
let ainfo = NACodecInfo::new(codecname, NACodecTypeInfo::Audio(ahdr), None);
let soniton = if (self.flags & SMK_AUD_FLAG_16BIT) != 0 { SND_S16_FORMAT } else { SND_U8_FORMAT };
let ahdr = NAAudioInfo::new(self.srate, channels, soniton, 1);
let ainfo = NACodecInfo::new(codecname, NACodecTypeInfo::Audio(ahdr), None);
- let res = strmgr.add_stream(NAStream::new(StreamType::Audio, (str_id + 1) as u32, ainfo, 1, self.srate));
+ let res = strmgr.add_stream(NAStream::new(StreamType::Audio, (str_id + 1) as u32, ainfo, 1, self.srate
, 0
));
validate!(res.is_some());
self.id = res.unwrap();
validate!(res.is_some());
self.id = res.unwrap();
@@
-90,7
+90,7
@@
struct SmackerVideoDemuxer<'a> {
fn get_pts_inc(val: i32) -> u64 {
if val > 0 { (val as u64) * 100 }
fn get_pts_inc(val: i32) -> u64 {
if val > 0 { (val as u64) * 100 }
- else if val < 0 {
(-val as u64)
}
+ else if val < 0 {
-val as u64
}
else { 1 }
}
else { 1 }
}
@@
-149,7
+149,7
@@
impl<'a> DemuxCore<'a> for SmackerVideoDemuxer<'a> {
let vhdr = NAVideoInfo::new(width, height, false, PAL8_FORMAT);
let vinfo = NACodecInfo::new("smacker-video", NACodecTypeInfo::Video(vhdr), Some(treedata));
let vhdr = NAVideoInfo::new(width, height, false, PAL8_FORMAT);
let vinfo = NACodecInfo::new("smacker-video", NACodecTypeInfo::Video(vhdr), Some(treedata));
- let res = strmgr.add_stream(NAStream::new(StreamType::Video, 0, vinfo, 1, 100000));
+ let res = strmgr.add_stream(NAStream::new(StreamType::Video, 0, vinfo, 1, 100000
, 0
));
validate!(res.is_some());
self.video_id = res.unwrap();
validate!(res.is_some());
self.video_id = res.unwrap();
@@
-251,8
+251,13
@@
impl<'a> DemuxCore<'a> for SmackerVideoDemuxer<'a> {
Ok(pkt)
}
Ok(pkt)
}
- fn seek(&mut self, time: u64, _seek_idx: &SeekIndex) -> DemuxerResult<()> {
- if time == 0 {
+ fn seek(&mut self, time: NATimePoint, _seek_idx: &SeekIndex) -> DemuxerResult<()> {
+ let seek_to_start = match time {
+ NATimePoint::Milliseconds(0) => true,
+ NATimePoint::PTS(0) => true,
+ _ => false,
+ };
+ if seek_to_start {
let start = self.start;
self.src.seek(SeekFrom::Start(start))?;
self.cur_frame = 0;
let start = self.start;
self.src.seek(SeekFrom::Start(start))?;
self.cur_frame = 0;
@@
-262,6
+267,7
@@
impl<'a> DemuxCore<'a> for SmackerVideoDemuxer<'a> {
}
Err(DemuxerError::NotImplemented)
}
}
Err(DemuxerError::NotImplemented)
}
+ fn get_duration(&self) -> u64 { self.frames as u64 * self.pts_inc / 100 }
}
impl<'a> NAOptionHandler for SmackerVideoDemuxer<'a> {
}
impl<'a> NAOptionHandler for SmackerVideoDemuxer<'a> {
@@
-288,7
+294,7
@@
impl<'a> SmackerVideoDemuxer<'a> {
}
}
fn reset_state(&mut self) {
}
}
fn reset_state(&mut self) {
- self.queued_packets.
truncate(0
);
+ self.queued_packets.
clear(
);
}
}
}
}