Index: source/libvpx/vp9/encoder/vp9_encodemb.c |
=================================================================== |
--- source/libvpx/vp9/encoder/vp9_encodemb.c (revision 291857) |
+++ source/libvpx/vp9/encoder/vp9_encodemb.c (working copy) |
@@ -476,20 +476,24 @@ |
} |
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); |
} |
} |