projects
/
nihav-tool.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
frmwriter: fix handling of flipped paletted images
[nihav-tool.git]
/
src
/
frmwriter.rs
diff --git
a/src/frmwriter.rs
b/src/frmwriter.rs
index 5b50b816b20a340bca3f478c9e7f28e24f72c700..f882a7fa266f9bcd5dac659c134f23929b347125 100644
(file)
--- a/
src/frmwriter.rs
+++ b/
src/frmwriter.rs
@@
-43,7
+43,8
@@
pub fn write_pgmyuv(pfx: &str, strno: usize, num: u64, frm: NAFrameRef) {
let stride2 = buf.get_stride(2);
let u = &dta[base1..][..h2*stride1];
let v = &dta[base2..][..h2*stride2];
let stride2 = buf.get_stride(2);
let u = &dta[base1..][..h2*stride1];
let v = &dta[base2..][..h2*stride2];
- if !full_w {
+ let has_chroma = stride1 > 0 && stride2 > 0;
+ if !full_w && has_chroma {
if !is_flipped {
for (uline, vline) in u.chunks(stride1).zip(v.chunks(stride2)) {
ofile.write_all(&uline[..w2]).unwrap();
if !is_flipped {
for (uline, vline) in u.chunks(stride1).zip(v.chunks(stride2)) {
ofile.write_all(&uline[..w2]).unwrap();
@@
-61,7
+62,7
@@
pub fn write_pgmyuv(pfx: &str, strno: usize, num: u64, frm: NAFrameRef) {
ofile.write_all(pad.as_slice()).unwrap();
}
}
ofile.write_all(pad.as_slice()).unwrap();
}
}
- } else {
+ } else
if has_chroma
{
if !is_flipped {
for uline in u.chunks(stride1) {
ofile.write_all(&uline[..w2]).unwrap();
if !is_flipped {
for uline in u.chunks(stride1) {
ofile.write_all(&uline[..w2]).unwrap();
@@
-111,9
+112,12
@@
pub fn write_palppm(pfx: &str, strno: usize, num: u64, frm: NAFrameRef) {
buf.get_info().get_format().get_chromaton(2).unwrap().get_offset() as usize
];
let flipped = buf.get_info().is_flipped();
buf.get_info().get_format().get_chromaton(2).unwrap().get_offset() as usize
];
let flipped = buf.get_info().is_flipped();
- let mut idx = if !flipped { 0 } else { ls *
(h - 1)
};
+ let mut idx = if !flipped { 0 } else { ls *
h
};
let mut line: Vec<u8> = vec![0; w * 3];
for _ in 0..h {
let mut line: Vec<u8> = vec![0; w * 3];
for _ in 0..h {
+ if flipped {
+ idx -= ls;
+ }
let src = &dta[idx..(idx+w)];
for x in 0..w {
let pix = src[x] as usize;
let src = &dta[idx..(idx+w)];
for x in 0..w {
let pix = src[x] as usize;
@@
-124,8
+128,6
@@
pub fn write_palppm(pfx: &str, strno: usize, num: u64, frm: NAFrameRef) {
ofile.write_all(line.as_slice()).unwrap();
if !flipped {
idx += ls;
ofile.write_all(line.as_slice()).unwrap();
if !flipped {
idx += ls;
- } else {
- idx -= ls;
}
}
}
}
}
}