X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-commonfmt%2Fsrc%2Fmuxers%2Favi.rs;h=0977aac61e1127d4a7af33a98e1b1bdaf3f7ab36;hb=7b430a1e47759ba440db5d56523ec043433732c9;hp=ac09974d7eef7a02de10533cac2e39a2dad9bdbf;hpb=6f2630992fe340ad1a122ec10c649f756e478185;p=nihav.git diff --git a/nihav-commonfmt/src/muxers/avi.rs b/nihav-commonfmt/src/muxers/avi.rs index ac09974..0977aac 100644 --- a/nihav-commonfmt/src/muxers/avi.rs +++ b/nihav-commonfmt/src/muxers/avi.rs @@ -172,8 +172,13 @@ impl<'a> MuxCore<'a> for AVIMuxer<'a> { self.bw.write_u32le(0)?; self.bw.write_u32le(vinfo.width as u32)?; self.bw.write_u32le(vinfo.height as u32)?; - self.bw.write_u16le(vinfo.format.components as u16)?; - self.bw.write_u16le(vinfo.format.get_total_depth() as u16)?; + if !vinfo.format.palette { + self.bw.write_u16le(vinfo.format.components as u16)?; + self.bw.write_u16le(vinfo.format.get_total_depth() as u16)?; + } else { + self.bw.write_u16le(1)?; + self.bw.write_u16le(8)?; + } let fcc = find_avi_fourcc(str.get_info().get_name()); if fcc.is_none() { return Err(MuxerError::UnsupportedFormat); @@ -238,8 +243,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 +287,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(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 {