]> git.nihav.org Git - nihav.git/blobdiff - nihav-commonfmt/src/muxers/avi.rs
indeo3enc: fix checksum calculation
[nihav.git] / nihav-commonfmt / src / muxers / avi.rs
index ac09974d7eef7a02de10533cac2e39a2dad9bdbf..0977aac61e1127d4a7af33a98e1b1bdaf3f7ab36 100644 (file)
@@ -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 {