X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-commonfmt%2Fsrc%2Fmuxers%2Favi.rs;h=5e98ed998e3673e109e2aabd97199083fabaf7c7;hb=71d7f39706f0f5004820f8d1d36c87d5f9ec3e97;hp=cd75942f5a75bfffe135cb4c077751ef5df6e052;hpb=379524159c95f1c3639976ccf35f9d47cd9732ac;p=nihav.git diff --git a/nihav-commonfmt/src/muxers/avi.rs b/nihav-commonfmt/src/muxers/avi.rs index cd75942..5e98ed9 100644 --- a/nihav-commonfmt/src/muxers/avi.rs +++ b/nihav-commonfmt/src/muxers/avi.rs @@ -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")?; @@ -238,8 +238,8 @@ impl<'a> MuxCore<'a> for AVIMuxer<'a> { if self.data_pos == 0 { return Err(MuxerError::NotCreated); } - let str = pkt.get_stream(); - let str_num = str.get_num(); + let stream = pkt.get_stream(); + let str_num = stream.get_num(); if str_num > 99 || str_num >= self.stream_info.len() { return Err(MuxerError::UnsupportedFormat); } @@ -282,11 +282,11 @@ impl<'a> MuxCore<'a> for AVIMuxer<'a> { self.stream_info[str_num].max_size = self.stream_info[str_num].max_size.max(chunk_len); self.index.push(IdxEntry { stream: str_num as u32, - stype: str.get_media_type(), + stype: stream.get_media_type(), 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, stream.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",