X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-commonfmt%2Fsrc%2Fcodecs%2Frawvideo.rs;h=13bd18729becfd96298147a7e558257787da185a;hp=fd1c0c3c65590acafc380f7eeddb431b00383ebb;hb=cc0a023d906149db2f406d5596cd400e6a118ce2;hpb=a715e99fd5a8b724cf31877c74bbd8191d7fd256 diff --git a/nihav-commonfmt/src/codecs/rawvideo.rs b/nihav-commonfmt/src/codecs/rawvideo.rs index fd1c0c3..13bd187 100644 --- a/nihav-commonfmt/src/codecs/rawvideo.rs +++ b/nihav-commonfmt/src/codecs/rawvideo.rs @@ -57,11 +57,15 @@ impl NADecoder for RawDecoder { } validate!(off == src.len()); - NABufferType::Video(NAVideoBuffer::from_raw_parts(vinfo.clone(), src.clone(), offs, strides).into_ref()) + NABufferType::Video(NAVideoBuffer::from_raw_parts(*vinfo, src, offs, strides).into_ref()) } else { - let offs = vec![0; ncomp]; - let strides = vec![0; ncomp]; - NABufferType::VideoPacked(NAVideoBuffer::from_raw_parts(vinfo.clone(), src.clone(), offs, strides).into_ref()) + let esize = vinfo.format.elem_size as usize; + let ychr = vinfo.format.get_chromaton(0).unwrap(); + let ystep = if ychr.next_elem != 0 { ychr.next_elem as usize } else { esize }; + let stride = (width * esize + ystep - 1) / ystep; + let offs = vec![0]; + let strides = vec![stride]; + NABufferType::VideoPacked(NAVideoBuffer::from_raw_parts(*vinfo, src, offs, strides).into_ref()) }; let mut frm = NAFrame::new_from_pkt(pkt, self.info.clone(), buf);