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;
let cxpos = ((xpos + dx) & 63) >> RV60_BLOCK_LOG2[size];
let cypos = ((ypos + dy) & 63) >> RV60_BLOCK_LOG2[size];
((cypos as u8) & RV60_AVAIL_MASK[cxpos]) == 0
let cxpos = ((xpos + dx) & 63) >> RV60_BLOCK_LOG2[size];
let cypos = ((ypos + dy) & 63) >> RV60_BLOCK_LOG2[size];
((cypos as u8) & RV60_AVAIL_MASK[cxpos]) == 0
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;
let cxpos = (!(xpos + dx) & 63) >> RV60_BLOCK_LOG2[size];
let cypos = (!(ypos + dy) & 63) >> RV60_BLOCK_LOG2[size];
((cypos as u8) & RV60_AVAIL_MASK[cxpos]) >= 1
let cxpos = (!(xpos + dx) & 63) >> RV60_BLOCK_LOG2[size];
let cypos = (!(ypos + dy) & 63) >> RV60_BLOCK_LOG2[size];
((cypos as u8) & RV60_AVAIL_MASK[cxpos]) >= 1
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);
fn deblock_cb_tree(&mut self, buf: &mut NASimpleVideoFrame<u8>, hdr: &FrameHeader, xpos: usize, ypos: usize, log_size: u8) {
fn deblock_cb_tree(&mut self, buf: &mut NASimpleVideoFrame<u8>, hdr: &FrameHeader, xpos: usize, ypos: usize, log_size: u8) {
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);
let ntiles = 1 << (log_size - tsize);
let dparams = RV60DeblockParams {
deblock_chroma: hdr.deblock_chroma,
let ntiles = 1 << (log_size - tsize);
let dparams = RV60DeblockParams {
deblock_chroma: hdr.deblock_chroma,
if self.blk_info[blk_pos + i].mv.is_deblock_cand(&self.blk_info[top_blk_pos + i].mv) {
self.dblk.set_top_strength(dblk_pos + i, 1);
}
if self.blk_info[blk_pos + i].mv.is_deblock_cand(&self.blk_info[top_blk_pos + i].mv) {
self.dblk.set_top_strength(dblk_pos + i, 1);
}
[0x2b1f1807, 0x09edef33, 0x0e6c78c1, 0x3b3c8179],
[0xc7d45c3b, 0x6a82ff3a, 0xaf49a7ea, 0x7cf9a533],
[0x2b1f1807, 0x09edef33, 0x0e6c78c1, 0x3b3c8179],
[0x2b1f1807, 0x09edef33, 0x0e6c78c1, 0x3b3c8179],
[0xc7d45c3b, 0x6a82ff3a, 0xaf49a7ea, 0x7cf9a533],
[0x2b1f1807, 0x09edef33, 0x0e6c78c1, 0x3b3c8179],
- [0x3db0f7ea, 0xbbf24a80, 0x54c0dd7c, 0xbdea881a],
+ [0xec3cf068, 0xe989c7f5, 0x0bd41758, 0x81199c9e],
[0x24134118, 0xeece4c59, 0x3f319c04, 0xd04951fd],
[0x24134118, 0xeece4c59, 0x3f319c04, 0xd04951fd],
- [0xe5f1a7a5, 0x204ab47b, 0x678277b3, 0x179f3007],
- [0x61fb5e14, 0x47cce437, 0xaeeed91f, 0x03f727aa],
- [0x46c71f20, 0x8e6ee603, 0xb68965ee, 0xf5bf3c45],
- [0xf87589a4, 0xd9cc9120, 0xff27a8e6, 0xc1cc1dd5],
- [0x12ea3288, 0x810b766b, 0x9a83ac11, 0x88f9996a],
- [0xe1a8020f, 0x972fadbb, 0x771f0f7e, 0x7a3a3e41],
- [0xed041308, 0x3112b04e, 0xcb39b23b, 0x5f73798c],
- [0xb0a2db76, 0x56dd7f97, 0x87e4f6d4, 0xe69ecfd8]]));
+ [0x5a2e4e52, 0xa11ad66f, 0x304f2a84, 0xe43aaa90],
+ [0x06d8bb44, 0x00b83933, 0xacce3d6f, 0x7159cd5e],
+ [0xe5dfb853, 0x93f2fe74, 0x932d8c1a, 0x2579208e],
+ [0xcfc5cae6, 0xa878bbd5, 0x5f0302c5, 0x9c0623ae],
+ [0x5103a4ad, 0xec5ebe4e, 0x445037ca, 0x3797abe1],
+ [0x66c9b636, 0xaec1afb7, 0x978fa6eb, 0x964649f5],
+ [0xf1d17b76, 0xe8351888, 0x59d4acf1, 0x22387b9e],
+ [0x8fff649f, 0xf1fe573b, 0xfce60560, 0x47c8c8b1]]));