vp9: skip itxfm_add if the whole block has no coefficients.
authorRonald S. Bultje <rsbultje@gmail.com>
Sun, 27 Oct 2013 13:13:11 +0000 (09:13 -0400)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 27 Oct 2013 14:02:48 +0000 (15:02 +0100)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/vp9.c

index cb14ec4..80bb9a5 100644 (file)
@@ -2155,7 +2155,7 @@ static void intra_recon(AVCodecContext *ctx, ptrdiff_t y_off, ptrdiff_t uv_off)
             LOCAL_ALIGNED_16(uint8_t, a_buf, [48]);
             uint8_t *a = &a_buf[16], l[32];
             enum TxfmType txtp = vp9_intra_txfm_type[mode];
-            int eob = b->tx > TX_8X8 ? AV_RN16A(&s->eob[n]) : s->eob[n];
+            int eob = b->skip ? 0 : b->tx > TX_8X8 ? AV_RN16A(&s->eob[n]) : s->eob[n];
 
             mode = check_intra_mode(s, mode, &a, ptr_r, s->f->linesize[0],
                                     ptr, b->y_stride, l,
@@ -2185,7 +2185,7 @@ static void intra_recon(AVCodecContext *ctx, ptrdiff_t y_off, ptrdiff_t uv_off)
                 int mode = b->uvmode;
                 LOCAL_ALIGNED_16(uint8_t, a_buf, [48]);
                 uint8_t *a = &a_buf[16], l[32];
-                int eob = b->uvtx > TX_8X8 ? AV_RN16A(&s->uveob[p][n]) : s->uveob[p][n];
+                int eob = b->skip ? 0 : b->uvtx > TX_8X8 ? AV_RN16A(&s->uveob[p][n]) : s->uveob[p][n];
 
                 mode = check_intra_mode(s, mode, &a, ptr_r, s->f->linesize[1],
                                         ptr, b->uv_stride, l,