fn has_top_block(&self, xpos: usize, ypos: usize, dx: usize, dy: usize, size: usize) -> bool {
if (ypos + dy) == 0 { return false; }
let xpos2 = xpos + dx;
fn has_top_block(&self, xpos: usize, ypos: usize, dx: usize, dy: usize, size: usize) -> bool {
if (ypos + dy) == 0 { return false; }
let xpos2 = xpos + dx;
true
}
fn has_top_right_block(&self, xpos: usize, ypos: usize, dx: usize, dy: usize, size: usize) -> bool {
if (ypos + dy) == 0 { return false; }
let xpos2 = xpos + dx;
true
}
fn has_top_right_block(&self, xpos: usize, ypos: usize, dx: usize, dy: usize, size: usize) -> bool {
if (ypos + dy) == 0 { return false; }
let xpos2 = xpos + dx;
fn has_left_block(&self, xpos: usize, ypos: usize, dx: usize, dy: usize, size: usize) -> bool {
if (xpos + dx) == 0 { return false; }
let ypos2 = ypos + dy;
fn has_left_block(&self, xpos: usize, ypos: usize, dx: usize, dy: usize, size: usize) -> bool {
if (xpos + dx) == 0 { return false; }
let ypos2 = ypos + dy;
true
}
fn has_left_down_block(&self, xpos: usize, ypos: usize, dx: usize, dy: usize, size: usize) -> bool {
if (xpos + dx) == 0 { return false; }
let ypos2 = ypos + dy;
true
}
fn has_left_down_block(&self, xpos: usize, ypos: usize, dx: usize, dy: usize, size: usize) -> bool {
if (xpos + dx) == 0 { return false; }
let ypos2 = ypos + dy;
rv6_decode_cu_4x4in16x16(br, &self.cbs, is_intra, self.qp, self.sel_qp, &mut self.y_coeffs, &mut self.u_coeffs, &mut self.v_coeffs, cbp16)?;
for y in 0..4 {
for x in 0..4 {
rv6_decode_cu_4x4in16x16(br, &self.cbs, is_intra, self.qp, self.sel_qp, &mut self.y_coeffs, &mut self.u_coeffs, &mut self.v_coeffs, cbp16)?;
for y in 0..4 {
for x in 0..4 {
let off = xpos + x * 4 + (ypos + y * 4) * dstride;
let dst = &mut buf.data;
self.dsp.add_block(dst, off, dstride, &self.y_coeffs[i*16..][..16], 4);
let off = xpos + x * 4 + (ypos + y * 4) * dstride;
let dst = &mut buf.data;
self.dsp.add_block(dst, off, dstride, &self.y_coeffs[i*16..][..16], 4);
let off = buf.offset[1] + xoff + yoff * dstride;
let dst = &mut buf.data;
self.dsp.add_block(dst, off, dstride, &self.u_coeffs[i * 16..][..16], 4);
let off = buf.offset[1] + xoff + yoff * dstride;
let dst = &mut buf.data;
self.dsp.add_block(dst, off, dstride, &self.u_coeffs[i * 16..][..16], 4);
let off = buf.offset[2] + xoff + yoff * dstride;
let dst = &mut buf.data;
self.dsp.add_block(dst, off, dstride, &self.v_coeffs[i * 16..][..16], 4);
let off = buf.offset[2] + xoff + yoff * dstride;
let dst = &mut buf.data;
self.dsp.add_block(dst, off, dstride, &self.v_coeffs[i * 16..][..16], 4);
let dst = &mut buf.data;
self.populate_ipred(hdr, dst, 0, dstride, xoff, yoff, 4, true);
let itype = self.blk_info[self.blk_pos + (i & 1) + (i >> 1) * self.blk_stride].imode;
let dst = &mut buf.data;
self.populate_ipred(hdr, dst, 0, dstride, xoff, yoff, 4, true);
let itype = self.blk_info[self.blk_pos + (i & 1) + (i >> 1) * self.blk_stride].imode;
if split {
let hsize = 1 << (log_size - 1);
self.deblock_cb_tree(buf, hdr, xpos, ypos, log_size - 1);
if split {
let hsize = 1 << (log_size - 1);
self.deblock_cb_tree(buf, hdr, xpos, ypos, log_size - 1);
test_decoding("realmedia", "realvideo6", "assets/RV/RV60.rmhd", Some(1000), &dmx_reg, &dec_reg,
ExpectedTestResult::MD5Frames(vec![
[0x2b1f1807, 0x09edef33, 0x0e6c78c1, 0x3b3c8179],
test_decoding("realmedia", "realvideo6", "assets/RV/RV60.rmhd", Some(1000), &dmx_reg, &dec_reg,
ExpectedTestResult::MD5Frames(vec![
[0x2b1f1807, 0x09edef33, 0x0e6c78c1, 0x3b3c8179],
- [0xb04e2626, 0x976e16f5, 0xc41a7a78, 0x2d8765da],
- [0xf4f30d97, 0x7f2876eb, 0x265ffad4, 0x3542a7c4],
- [0x7fd46b65, 0x9e56b770, 0xffa13e3b, 0x73d47eb6],
- [0xa3ec74e1, 0xc33617ab, 0xb49c744b, 0x7d1c8127],
- [0x830d85c2, 0x1df398c3, 0x40f33a4f, 0x445d95b3],
- [0xa5471116, 0x9299e39f, 0x98da1680, 0x1aabeed5],
- [0xd89ef645, 0x66c684fe, 0x6d5e4207, 0x5e480550],
- [0xdf434d0c, 0xf0018799, 0x935aa650, 0xcfc702fc],
- [0x9770cae6, 0x8a7caa6a, 0x87b6438d, 0x7b161519],
- [0x9a2dfade, 0x3ff56dbe, 0x5fbc6999, 0x827770e9]]));
+ [0xfee70206, 0x626f3bea, 0x7677ad4b, 0x1228f3b6],
+ [0x7156cbc2, 0xf381bcb6, 0xe86531f2, 0xb311c3ea],
+ [0x1742b5a1, 0x66252580, 0x242753de, 0x5215d732],
+ [0xd357ebda, 0x6460dba6, 0xa93eb616, 0x63ee6d60],
+ [0x4cd72275, 0x28e1e439, 0xad17dfca, 0x3fd7253f],
+ [0xe389ce4f, 0x8f0891b3, 0x88639b23, 0x21ed114f],
+ [0x5b2b2f1b, 0x17a7518b, 0x53806e6a, 0x4538bb00],
+ [0xdca03c9a, 0x1a45d80c, 0x86141211, 0x79912ed4],
+ [0x0bf66bf4, 0x46385620, 0xc6fa4796, 0xd8e16d56],
+ [0x4671a7f0, 0x46f50649, 0x268df27b, 0x70b71ab3]]));