| Index: source/libvpx/vp9/encoder/vp9_encodemb.c
|
| ===================================================================
|
| --- source/libvpx/vp9/encoder/vp9_encodemb.c (revision 290053)
|
| +++ source/libvpx/vp9/encoder/vp9_encodemb.c (working copy)
|
| @@ -32,7 +32,7 @@
|
| struct encode_b_args {
|
| MACROBLOCK *x;
|
| struct optimize_ctx *ctx;
|
| - unsigned char *skip;
|
| + int8_t *skip;
|
| };
|
|
|
| void vp9_subtract_block_c(int rows, int cols,
|
| @@ -348,6 +348,7 @@
|
| break;
|
| default:
|
| assert(0);
|
| + break;
|
| }
|
| }
|
|
|
| @@ -394,6 +395,7 @@
|
| break;
|
| default:
|
| assert(0);
|
| + break;
|
| }
|
| }
|
|
|
| @@ -444,6 +446,7 @@
|
| break;
|
| default:
|
| assert(0);
|
| + break;
|
| }
|
| }
|
|
|
| @@ -472,22 +475,22 @@
|
| return;
|
| }
|
|
|
| - if (x->skip_txfm == 0) {
|
| - // full forward transform and quantization
|
| - if (!x->skip_recode) {
|
| + 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);
|
| + } else {
|
| + // skip forward transform
|
| + p->eobs[block] = 0;
|
| + *a = *l = 0;
|
| + return;
|
| }
|
| - } else if (x->skip_txfm == 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;
|
| }
|
|
|
| if (x->optimize && (!x->skip_recode || !x->skip_optimize)) {
|
| @@ -521,6 +524,7 @@
|
| break;
|
| default:
|
| assert(0 && "Invalid transform size");
|
| + break;
|
| }
|
| }
|
|
|
| @@ -692,6 +696,7 @@
|
| break;
|
| default:
|
| assert(0);
|
| + break;
|
| }
|
| if (*eob)
|
| *(args->skip) = 0;
|
| @@ -699,7 +704,7 @@
|
|
|
| void vp9_encode_block_intra(MACROBLOCK *x, int plane, int block,
|
| BLOCK_SIZE plane_bsize, TX_SIZE tx_size,
|
| - unsigned char *skip) {
|
| + int8_t *skip) {
|
| struct encode_b_args arg = {x, NULL, skip};
|
| encode_block_intra(plane, block, plane_bsize, tx_size, &arg);
|
| }
|
|
|