summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encodemb.c
diff options
context:
space:
mode:
authorJingning Han <jingning@google.com>2014-08-28 09:09:37 -0700
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2014-08-29 08:29:34 -0700
commit02e6ecdc4c0bc1216f6748fe95ff6864d0f8304e (patch)
tree345e29d7d10745484c1de1ff65127058c8a78cfc /vp9/encoder/vp9_encodemb.c
parentc29cc89c78dcd5cdf66e879f284de40cb0d85a08 (diff)
downloadlibvpx-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.c30
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);
}
}