diff options
author | Jingning Han <jingning@google.com> | 2014-08-28 09:09:37 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2014-08-29 08:29:34 -0700 |
commit | 02e6ecdc4c0bc1216f6748fe95ff6864d0f8304e (patch) | |
tree | 345e29d7d10745484c1de1ff65127058c8a78cfc /vp9/encoder/vp9_encodemb.c | |
parent | c29cc89c78dcd5cdf66e879f284de40cb0d85a08 (diff) | |
download | libvpx-02e6ecdc4c0bc1216f6748fe95ff6864d0f8304e.tar libvpx-02e6ecdc4c0bc1216f6748fe95ff6864d0f8304e.tar.gz libvpx-02e6ecdc4c0bc1216f6748fe95ff6864d0f8304e.tar.bz2 libvpx-02e6ecdc4c0bc1216f6748fe95ff6864d0f8304e.zip |
Extend block level sse to support multiple txfm blocks
This commit extends the sse and forward transform computation flag
to support the case 64x64 blocks where there are 4 32x32 2D-DCT
blocks.
Change-Id: I86a3e805dfaa0f3abd812f590520c71aa0e40473
Diffstat (limited to 'vp9/encoder/vp9_encodemb.c')
-rw-r--r-- | vp9/encoder/vp9_encodemb.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/vp9/encoder/vp9_encodemb.c b/vp9/encoder/vp9_encodemb.c index 8a737e18e..667845072 100644 --- a/vp9/encoder/vp9_encodemb.c +++ b/vp9/encoder/vp9_encodemb.c @@ -476,20 +476,24 @@ static void encode_block(int plane, int block, BLOCK_SIZE plane_bsize, } if (!x->skip_recode) { - if (x->skip_txfm[plane] == 0) { - // full forward transform and quantization - if (x->quant_fp) - vp9_xform_quant_fp(x, plane, block, plane_bsize, tx_size); - else - vp9_xform_quant(x, plane, block, plane_bsize, tx_size); - } else if (x->skip_txfm[plane] == 2) { - // fast path forward transform and quantization - vp9_xform_quant_dc(x, plane, block, plane_bsize, tx_size); + if (max_txsize_lookup[plane_bsize] == tx_size) { + if (x->skip_txfm[(plane << 2) + (block >> (tx_size << 1))] == 0) { + // full forward transform and quantization + if (x->quant_fp) + vp9_xform_quant_fp(x, plane, block, plane_bsize, tx_size); + else + vp9_xform_quant(x, plane, block, plane_bsize, tx_size); + } else if (x->skip_txfm[(plane << 2) + (block >> (tx_size << 1))] == 2) { + // fast path forward transform and quantization + vp9_xform_quant_dc(x, plane, block, plane_bsize, tx_size); + } else { + // skip forward transform + p->eobs[block] = 0; + *a = *l = 0; + return; + } } else { - // skip forward transform - p->eobs[block] = 0; - *a = *l = 0; - return; + vp9_xform_quant(x, plane, block, plane_bsize, tx_size); } } |