X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-commonfmt%2Fsrc%2Fmuxers%2Favi.rs;h=ac09974d7eef7a02de10533cac2e39a2dad9bdbf;hb=6f2630992fe340ad1a122ec10c649f756e478185;hp=00b3e6db60e935c680d7a6d87aa90b7f0532e058;hpb=e5b5248d8e4f0b6be84db2d00158a9dcdff0d512;p=nihav.git diff --git a/nihav-commonfmt/src/muxers/avi.rs b/nihav-commonfmt/src/muxers/avi.rs index 00b3e6d..ac09974 100644 --- a/nihav-commonfmt/src/muxers/avi.rs +++ b/nihav-commonfmt/src/muxers/avi.rs @@ -109,7 +109,7 @@ impl<'a> MuxCore<'a> for AVIMuxer<'a> { self.bw.write_u32le(0)?; // reserved self.bw.write_u32le(0)?; // reserved - self.pal_pos.truncate(0); + self.pal_pos.clear(); self.pal_pos.resize(strmgr.get_num_streams(), 0); for (strno, str) in strmgr.iter().enumerate() { let strl_pos = self.bw.tell() + 8; @@ -224,10 +224,10 @@ impl<'a> MuxCore<'a> for AVIMuxer<'a> { }, _ => unreachable!(), }; - patch_size(&mut self.bw, strf_pos)?; - patch_size(&mut self.bw, strl_pos)?; + patch_size(self.bw, strf_pos)?; + patch_size(self.bw, strl_pos)?; } - patch_size(&mut self.bw, hdrl_pos)?; + patch_size(self.bw, hdrl_pos)?; self.data_pos = self.bw.tell() + 8; self.bw.write_buf(b"LIST\0\0\0\0movi")?; @@ -286,7 +286,7 @@ impl<'a> MuxCore<'a> for AVIMuxer<'a> { key: pkt.keyframe, pos: self.bw.tell() as u32, len: chunk_len }); - write_chunk_hdr(&mut self.bw, str.get_media_type(), str_num as u32)?; + write_chunk_hdr(self.bw, str.get_media_type(), str_num as u32)?; self.bw.write_u32le(chunk_len)?; self.bw.write_buf(pkt.get_buffer().as_slice())?; if (self.bw.tell() & 1) != 0 { @@ -298,18 +298,18 @@ impl<'a> MuxCore<'a> for AVIMuxer<'a> { Ok(()) } fn end(&mut self) -> MuxerResult<()> { - patch_size(&mut self.bw, self.data_pos)?; + patch_size(self.bw, self.data_pos)?; if !self.index.is_empty() { self.bw.write_buf(b"idx1")?; self.bw.write_u32le((self.index.len() * 16) as u32)?; for item in self.index.iter() { - write_chunk_hdr(&mut self.bw, item.stype, item.stream)?; + write_chunk_hdr(self.bw, item.stype, item.stream)?; self.bw.write_u32le(if item.key { 0x10 } else { 0 })?; self.bw.write_u32le(item.pos)?; self.bw.write_u32le(item.len)?; } } - patch_size(&mut self.bw, 8)?; + patch_size(self.bw, 8)?; let mut max_frames = 0; let mut max_size = 0; for stri in self.stream_info.iter() { @@ -355,6 +355,7 @@ mod test { fn test_avi_muxer() { let mut dmx_reg = RegisteredDemuxers::new(); generic_register_all_demuxers(&mut dmx_reg); + //test sample: https://samples.mplayerhq.hu/V-codecs/RT21/320x240/laser05.avi let dec_config = DecoderTestParams { demuxer: "avi", in_name: "assets/Indeo/laser05.avi",