#[derive(Clone,Copy,PartialEq)]
enum DecodeMode {
YUV,
- Gray,
+ Grey,
Palette,
Unknown,
}
}
}
-fn put_block_gray(block: &[u8; 24], x: usize, y: usize, frm: &mut NASimpleVideoFrame<u8>) {
+fn put_block_grey(block: &[u8; 24], x: usize, y: usize, frm: &mut NASimpleVideoFrame<u8>) {
let mut yoff = frm.offset[0] + x + y * frm.stride[0];
for i in 0..4 {
for j in 0..4 {
if self.mode == DecodeMode::YUV {
put_block(&block, x, y, frm);
} else {
- put_block_gray(&block, x, y, frm);
+ put_block_grey(&block, x, y, frm);
}
x += 4;
if x >= xend {
break;
},
0x24..=0x27 => {
- mode = DecodeMode::Gray;
+ mode = DecodeMode::Grey;
break;
},
_ => {
validate!(is_intra);
let fmt = match mode {
DecodeMode::YUV => YUV420_FORMAT,
- DecodeMode::Gray => GREY_FORMAT,
+ DecodeMode::Grey => GREY_FORMAT,
DecodeMode::Palette => PAL8_FORMAT,
_ => unreachable!(),
};
[0x9c090a08, 0x43071726, 0x26236b5a, 0x79595848]]));
}
#[test]
- fn test_cinepak_gray() {
+ fn test_cinepak_grey() {
let mut dmx_reg = RegisteredDemuxers::new();
generic_register_all_demuxers(&mut dmx_reg);
let mut dec_reg = RegisteredDecoders::new();
v4_len: usize,
v1_idx: Vec<u8>,
v4_idx: Vec<u8>,
- grayscale: bool,
+ greyscale: bool,
rng: RNG,
masks: MaskWriter,
skip_dist: Vec<u32>,
v4_cur_cb: Vec::with_capacity(2),
v1_len: 0,
v4_len: 0,
- grayscale: false,
+ greyscale: false,
rng: RNG::new(),
v1_idx: Vec::new(),
v4_idx: Vec::new(),
yblk[i + j * 4] = data[yoff + x + i + j * ystride];
}
}
- if !self.grayscale {
+ if !self.greyscale {
for j in 0..2 {
for i in 0..2 {
ublk[i + j * 2] = data[uoff + x / 2 + i + j * ustride];
let upd_size = cb_size * (new_cb.len() - skip_count) + (new_cb.len() + 31) / 32 * 4;
upd_size < full_size
}
- fn write_cb(bw: &mut dyn ByteIO, mut id: u8, new_cb: &[YUVCode], old_cb: &[YUVCode], grayscale: bool, update: bool, num_elem: usize) -> EncoderResult<()> {
- if grayscale {
+ fn write_cb(bw: &mut dyn ByteIO, mut id: u8, new_cb: &[YUVCode], old_cb: &[YUVCode], greyscale: bool, update: bool, num_elem: usize) -> EncoderResult<()> {
+ if greyscale {
id |= 4;
}
if update {
if !update {
for entry in new_cb.iter().take(num_elem) {
bw.write_buf(&entry.y)?;
- if !grayscale {
+ if !greyscale {
bw.write_byte(entry.u ^ 0x80)?;
bw.write_byte(entry.v ^ 0x80)?;
}
for j in 0..32 {
if new_cb[i + j] == old_cb[i + j] { continue; }
bw.write_buf(&new_cb[i + j].y)?;
- if !grayscale {
+ if !greyscale {
bw.write_byte(new_cb[i + j].u ^ 0x80)?;
bw.write_byte(new_cb[i + j].v ^ 0x80)?;
}
data[coff] = cb.y[2]; data[coff + 1] = cb.y[2];
data[coff + 2] = cb.y[3]; data[coff + 3] = cb.y[3];
- if !self.grayscale {
+ if !self.greyscale {
let mut coff = uoff + x / 2;
data[coff] = cb.u; data[coff + 1] = cb.u;
coff += ustride;
data[coff] = cb2.y[2]; data[coff + 1] = cb2.y[3];
data[coff + 2] = cb3.y[2]; data[coff + 3] = cb3.y[3];
- if !self.grayscale {
+ if !self.greyscale {
let mut coff = uoff + x / 2;
data[coff] = cb0.u; data[coff + 1] = cb1.u;
coff += ustride;
roff += rystride;
ioff += iystride;
}
- if !self.grayscale {
+ if !self.greyscale {
let mut roff = ruoff + x / 2;
let mut ioff = iuoff + x / 2;
let ud = i32::from(rdata[roff]) - i32::from(idata[ioff]);
self.v4_cb[self.cur_strip] = self.v4_cb[self.cur_strip - 1];
}
self.quant_vectors();
- if self.grayscale {
+ if self.greyscale {
for cw in self.v1_cur_cb[self.cur_strip].iter_mut() {
cw.u = 128;
cw.v = 128;
let mut is_intra_strip = start_line == 0;
let (upd_v1, upd_v4) = if !is_intra_strip {
- let cb_size = if self.grayscale { 4 } else { 6 };
+ let cb_size = if self.greyscale { 4 } else { 6 };
(Self::can_update_cb(&self.v1_cur_cb[self.cur_strip][..self.v1_len], &self.v1_cb[self.cur_strip][..self.v1_len], cb_size),
Self::can_update_cb(&self.v4_cur_cb[self.cur_strip][..self.v4_len], &self.v4_cb[self.cur_strip][..self.v4_len], cb_size))
} else {
bw.write_u16be((end_line - start_line) as u16)?;
bw.write_u16be(width as u16)?;
- Self::write_cb(bw, 0x20, &self.v4_cur_cb[self.cur_strip], &self.v4_cb[self.cur_strip], self.grayscale, upd_v4, self.v4_len)?;
- Self::write_cb(bw, 0x22, &self.v1_cur_cb[self.cur_strip], &self.v1_cb[self.cur_strip], self.grayscale, upd_v1, self.v1_len)?;
+ Self::write_cb(bw, 0x20, &self.v4_cur_cb[self.cur_strip], &self.v4_cb[self.cur_strip], self.greyscale, upd_v4, self.v4_len)?;
+ Self::write_cb(bw, 0x22, &self.v1_cur_cb[self.cur_strip], &self.v1_cb[self.cur_strip], self.greyscale, upd_v1, self.v1_len)?;
self.render_stripe(true, start_line, end_line);
self.calc_skip_dist(in_frm, start_line, end_line);
self.quant_vectors();
- if self.grayscale {
+ if self.greyscale {
for cw in self.v1_cur_cb[self.cur_strip].iter_mut() {
cw.u = 128;
cw.v = 128;
self.masks.end();
let (upd_v1, upd_v4) = {
- let cb_size = if self.grayscale { 4 } else { 6 };
+ let cb_size = if self.greyscale { 4 } else { 6 };
(Self::can_update_cb(&self.v1_cur_cb[self.cur_strip][..self.v1_len], &self.v1_cb[self.cur_strip][..self.v1_len], cb_size),
Self::can_update_cb(&self.v4_cur_cb[self.cur_strip][..self.v4_len], &self.v4_cb[self.cur_strip][..self.v4_len], cb_size))
};
bw.write_u16be((end_line - start_line) as u16)?;
bw.write_u16be(width as u16)?;
- Self::write_cb(bw, 0x20, &self.v4_cur_cb[self.cur_strip], &self.v4_cb[self.cur_strip], self.grayscale, upd_v4, self.v4_len)?;
- Self::write_cb(bw, 0x22, &self.v1_cur_cb[self.cur_strip], &self.v1_cb[self.cur_strip], self.grayscale, upd_v1, self.v1_len)?;
+ Self::write_cb(bw, 0x20, &self.v4_cur_cb[self.cur_strip], &self.v4_cb[self.cur_strip], self.greyscale, upd_v4, self.v4_len)?;
+ Self::write_cb(bw, 0x22, &self.v1_cur_cb[self.cur_strip], &self.v1_cb[self.cur_strip], self.greyscale, upd_v1, self.v1_len)?;
self.render_stripe(false, start_line, end_line);
self.stream = Some(stream.clone());
self.quality = encinfo.quality;
- self.grayscale = vinfo.format != YUV420_FORMAT;
+ self.greyscale = vinfo.format != YUV420_FORMAT;
let num_blocks = vinfo.width / 2 * vinfo.height / 2;
self.v1_entries = Vec::with_capacity(num_blocks);
self.v4_entries = Vec::with_capacity(num_blocks * 4);
}
if (src[off] & 0xBF) == 5 {
- // reset reference frame into grayscale
+ // reset reference frame into greyscale
unimplemented!();
}
self.weighted = (src[off] & 0x40) != 0;
first: bool,
width: usize,
height: usize,
- grayscale: bool,
+ greyscale: bool,
lzw: LZWEncoder,
p_trans: bool,
tr_idx: Option<u8>,
first: true,
width: 0,
height: 0,
- grayscale: false,
+ greyscale: false,
lzw: LZWEncoder::new(),
p_trans: false,
tr_idx: None,
}
self.width = vinfo.width;
self.height = vinfo.height;
- self.grayscale = vinfo.format == GREY_FORMAT;
+ self.greyscale = vinfo.format == GREY_FORMAT;
let edata = self.tr_idx.map(|val| vec![val]);
let cur_pal = &src[buf.get_offset(1)..][..768];
if self.first {
- if !self.grayscale {
+ if !self.greyscale {
self.pal.copy_from_slice(cur_pal);
} else {
for (i, pal) in self.pal.chunks_exact_mut(3).enumerate() {
}
let mut pal_changed = false;
- if !self.first && !self.grayscale {
+ if !self.first && !self.greyscale {
let mut used = [false; 256];
for &b in self.cur_frm.iter() {
used[usize::from(b)] = true;
self.pkt = Some(NAPacket::new(self.stream.clone().unwrap(), frm.ts, self.first, dbuf));
self.first = false;
- if !self.grayscale {
+ if !self.greyscale {
if let NABufferType::Video(ref buf) = frm.get_buffer() {
let paloff = buf.get_offset(1);
let data = buf.get_data();
fn process(&mut self, pic_in: &NABufferType, pic_out: &mut NABufferType) {
if let (Some(ref sbuf), Some(ref mut dbuf)) = (pic_in.get_vbuf(), pic_out.get_vbuf()) {
if dbuf.get_info().get_format().get_num_comp() < 3 {
- return self.process_grayscale(sbuf, dbuf);
+ return self.process_greyscale(sbuf, dbuf);
}
let istrides = [sbuf.get_stride(0), sbuf.get_stride(1), sbuf.get_stride(2)];
let dstrides = [dbuf.get_stride(0), dbuf.get_stride(1), dbuf.get_stride(2)];
}
} else if let (Some(ref sbuf), Some(ref mut dbuf)) = (pic_in.get_vbuf16(), pic_out.get_vbuf16()) {
if dbuf.get_info().get_format().get_num_comp() < 3 {
- return self.process_grayscale16(sbuf, dbuf);
+ return self.process_greyscale16(sbuf, dbuf);
}
let istrides = [sbuf.get_stride(0), sbuf.get_stride(1), sbuf.get_stride(2)];
let dstrides = [dbuf.get_stride(0), dbuf.get_stride(1), dbuf.get_stride(2)];
}
impl RgbToYuv {
- fn process_grayscale(&self, sbuf: &NAVideoBuffer<u8>, dbuf: &mut NAVideoBuffer<u8>) {
+ fn process_greyscale(&self, sbuf: &NAVideoBuffer<u8>, dbuf: &mut NAVideoBuffer<u8>) {
let istrides = [sbuf.get_stride(0), sbuf.get_stride(1), sbuf.get_stride(2)];
let ystride = dbuf.get_stride(0);
let (w, h) = sbuf.get_dimensions(0);
yoff += ystride;
}
}
- fn process_grayscale16(&self, sbuf: &NAVideoBuffer<u16>, dbuf: &mut NAVideoBuffer<u16>) {
+ fn process_greyscale16(&self, sbuf: &NAVideoBuffer<u16>, dbuf: &mut NAVideoBuffer<u16>) {
let istrides = [sbuf.get_stride(0), sbuf.get_stride(1), sbuf.get_stride(2)];
let ystride = dbuf.get_stride(0);
let (w, h) = sbuf.get_dimensions(0);
let dstrides = [dbuf.get_stride(0), dbuf.get_stride(1), dbuf.get_stride(2)];
let (w, h) = sbuf.get_dimensions(0);
if sbuf.get_info().get_format().get_num_comp() < 3 {
- return self.process_grayscale(sbuf, dbuf);
+ return self.process_greyscale(sbuf, dbuf);
}
let (sv0, sh0) = sbuf.get_info().get_format().get_chromaton(1).unwrap().get_subsampling();
let (sv1, sh1) = sbuf.get_info().get_format().get_chromaton(2).unwrap().get_subsampling();
let dstrides = [dbuf.get_stride(0), dbuf.get_stride(1), dbuf.get_stride(2)];
let (w, h) = sbuf.get_dimensions(0);
if sbuf.get_info().get_format().get_num_comp() < 3 {
- return self.process_grayscale16(sbuf, dbuf);
+ return self.process_greyscale16(sbuf, dbuf);
}
let yshift = sbuf.get_info().get_format().get_chromaton(0).unwrap().get_depth() - 8;
let ushift = sbuf.get_info().get_format().get_chromaton(1).unwrap().get_depth() - 8;
}
impl YuvToRgb {
- fn process_grayscale(&self, sbuf: &NAVideoBuffer<u8>, dbuf: &mut NAVideoBuffer<u8>) {
+ fn process_greyscale(&self, sbuf: &NAVideoBuffer<u8>, dbuf: &mut NAVideoBuffer<u8>) {
let ystride = sbuf.get_stride(0);
let dstrides = [dbuf.get_stride(0), dbuf.get_stride(1), dbuf.get_stride(2)];
let (w, h) = sbuf.get_dimensions(0);
}
}
}
- fn process_grayscale16(&self, sbuf: &NAVideoBuffer<u16>, dbuf: &mut NAVideoBuffer<u8>) {
+ fn process_greyscale16(&self, sbuf: &NAVideoBuffer<u16>, dbuf: &mut NAVideoBuffer<u8>) {
let ystride = sbuf.get_stride(0);
let dstrides = [dbuf.get_stride(0), dbuf.get_stride(1), dbuf.get_stride(2)];
let yshift = sbuf.get_info().get_format().get_chromaton(0).unwrap().get_depth() - 8;
}
}
- pub fn gray_block(&mut self, frm: &mut NASimpleVideoFrame<u8>, x: usize, y: usize, w: usize, h: usize) {
+ pub fn grey_block(&mut self, frm: &mut NASimpleVideoFrame<u8>, x: usize, y: usize, w: usize, h: usize) {
let yoff = frm.offset[0] + x + y * frm.stride[0];
let coff = [frm.offset[1] + x / 2 + y / 2 * frm.stride[1],
frm.offset[2] + x / 2 + y / 2 * frm.stride[2]];
}
}
} else {
- mc_dsp.gray_block(frm, xpos, ypos, w, h);
+ mc_dsp.grey_block(frm, xpos, ypos, w, h);
}
}
if let Some(buf) = ref_pic0 {
mc_dsp.do_mc(frm, buf, xpos, ypos, w, h, mv0);
} else {
- mc_dsp.gray_block(frm, xpos, ypos, w, h);
+ mc_dsp.grey_block(frm, xpos, ypos, w, h);
}
},
BMode::L1 => {
if let Some(buf) = ref_pic1 {
mc_dsp.do_mc(frm, buf, xpos, ypos, w, h, mv1);
} else {
- mc_dsp.gray_block(frm, xpos, ypos, w, h);
+ mc_dsp.grey_block(frm, xpos, ypos, w, h);
}
},
BMode::Bi => {
mc_dsp.do_mc(frm, buf1, xpos, ypos, w, h, mv1);
},
(None, None) => {
- mc_dsp.gray_block(frm, xpos, ypos, w, h);
+ mc_dsp.grey_block(frm, xpos, ypos, w, h);
},
};
},
}
},
_ => {
- mc_dsp.gray_block(frm, xpos, ypos, w, h);
+ mc_dsp.grey_block(frm, xpos, ypos, w, h);
},
};
}
mc_dsp.do_mc(frm, buf1, xpos, ypos, 4, 4, mv[1]);
},
(None, None) => {
- mc_dsp.gray_block(frm, xpos, ypos, 4, 4);
+ mc_dsp.grey_block(frm, xpos, ypos, 4, 4);
},
};
} else {
}
},
_ => {
- mc_dsp.gray_block(frm, xpos, ypos, 4, 4);
+ mc_dsp.grey_block(frm, xpos, ypos, 4, 4);
},
};
}
}
}
- pub fn gray_block(&mut self, frm: &mut NASimpleVideoFrame<u16>, x: usize, y: usize, w: usize, h: usize) {
+ pub fn grey_block(&mut self, frm: &mut NASimpleVideoFrame<u16>, x: usize, y: usize, w: usize, h: usize) {
let fill = 1 << (self.depth - 1);
let yoff = frm.offset[0] + x + y * frm.stride[0];
let coff = [frm.offset[1] + x / 2 + y / 2 * frm.stride[1],
}
}
} else {
- mc_dsp.gray_block(frm, xpos, ypos, w, h);
+ mc_dsp.grey_block(frm, xpos, ypos, w, h);
}
}
if let Some(buf) = ref_pic0 {
mc_dsp.do_mc(frm, buf, xpos, ypos, w, h, mv0);
} else {
- mc_dsp.gray_block(frm, xpos, ypos, w, h);
+ mc_dsp.grey_block(frm, xpos, ypos, w, h);
}
},
BMode::L1 => {
if let Some(buf) = ref_pic1 {
mc_dsp.do_mc(frm, buf, xpos, ypos, w, h, mv1);
} else {
- mc_dsp.gray_block(frm, xpos, ypos, w, h);
+ mc_dsp.grey_block(frm, xpos, ypos, w, h);
}
},
BMode::Bi => {
mc_dsp.do_mc(frm, buf1, xpos, ypos, w, h, mv1);
},
(None, None) => {
- mc_dsp.gray_block(frm, xpos, ypos, w, h);
+ mc_dsp.grey_block(frm, xpos, ypos, w, h);
},
};
},
}
},
_ => {
- mc_dsp.gray_block(frm, xpos, ypos, w, h);
+ mc_dsp.grey_block(frm, xpos, ypos, w, h);
},
};
}
mc_dsp.do_mc(frm, buf1, xpos, ypos, 4, 4, mv[1]);
},
(None, None) => {
- mc_dsp.gray_block(frm, xpos, ypos, 4, 4);
+ mc_dsp.grey_block(frm, xpos, ypos, 4, 4);
},
};
} else {
}
},
_ => {
- mc_dsp.gray_block(frm, xpos, ypos, 4, 4);
+ mc_dsp.grey_block(frm, xpos, ypos, 4, 4);
},
};
}
("FRext/HPCVNL_BRCM_A.264", [0x441E6C4F, 0x861B69E6, 0xC007EEFB, 0x820D6494]),
/*("FRext/HPCVFL_BRCM_A.264", [0;4]), //PAFF
("FRext/HPCVFLNL_BRCM_A.264", [0;4]),*/
- //("FRext/HPCVMOLQ_BRCM_B.264", [0;4]), //grayscale
- //("FRext/HPCAMOLQ_BRCM_B.264", [0;4]), //grayscale
+ //("FRext/HPCVMOLQ_BRCM_B.264", [0;4]), //greyscale
+ //("FRext/HPCAMOLQ_BRCM_B.264", [0;4]), //greyscale
("FRext/HPCAQ2LQ_BRCM_B.264", [0xEF0F86EC, 0x8C1C79BA, 0xFA5DFB57, 0x85C2C4FC]),
("FRext/Freh1_B.264", [0x852901B5, 0xC0F54669, 0xD32B9487, 0x40A2BAD9]),
("FRext/Freh2_B.264", [0x28432234, 0x311A2C63, 0x6FE630A8, 0x007AA51E]),
("FRext/HPCVNL_BRCM_A.264", [0x441E6C4F, 0x861B69E6, 0xC007EEFB, 0x820D6494]),
/*("FRext/HPCVFL_BRCM_A.264", [0;4]), //PAFF
("FRext/HPCVFLNL_BRCM_A.264", [0;4]),*/
- //("FRext/HPCVMOLQ_BRCM_B.264", [0;4]), //grayscale
- //("FRext/HPCAMOLQ_BRCM_B.264", [0;4]), //grayscale
+ //("FRext/HPCVMOLQ_BRCM_B.264", [0;4]), //greyscale
+ //("FRext/HPCAMOLQ_BRCM_B.264", [0;4]), //greyscale
("FRext/HPCAQ2LQ_BRCM_B.264", [0xEF0F86EC, 0x8C1C79BA, 0xFA5DFB57, 0x85C2C4FC]),
("FRext/Freh1_B.264", [0x852901B5, 0xC0F54669, 0xD32B9487, 0x40A2BAD9]),
("FRext/Freh2_B.264", [0x28432234, 0x311A2C63, 0x6FE630A8, 0x007AA51E]),