shithub: libvpx

Download patch

ref: a554bd8dace6ab374c415f1f43ff5740ef1b3f4e
parent: ef1fb6deb4badfe9f78e7e623800b92db0915152
author: hui su <huisu@google.com>
date: Tue Jun 7 11:45:04 EDT 2016

Avoid a potential assertion fail in optimize_b()

The eob of a block is not perperly set when skip_recode is true,
thus triggering assert(eob <= default_eob) to fail.

Change-Id: Ifecbe33dce2dc4903e0a80bd384dc09bf0dd8a44

--- a/vp9/encoder/vp9_encodemb.c
+++ b/vp9/encoder/vp9_encodemb.c
@@ -913,7 +913,7 @@
                              pd->dequant, eob, scan_order->scan,
                              scan_order->iscan);
       }
-      if (args->ctx != NULL) {
+      if (args->ctx != NULL && !x->skip_recode) {
        *a = *l = optimize_b(x, plane, block, tx_size, entropy_ctx) > 0;
       }
       if (!x->skip_encode && *eob)
@@ -929,7 +929,7 @@
                        pd->dequant, eob, scan_order->scan,
                        scan_order->iscan);
       }
-      if (args->ctx != NULL) {
+      if (args->ctx != NULL && !x->skip_recode) {
         *a = *l = optimize_b(x, plane, block, tx_size, entropy_ctx) > 0;
       }
       if (!x->skip_encode && *eob)
@@ -945,7 +945,7 @@
                        pd->dequant, eob, scan_order->scan,
                        scan_order->iscan);
       }
-      if (args->ctx != NULL) {
+      if (args->ctx != NULL && !x->skip_recode) {
         *a = *l = optimize_b(x, plane, block, tx_size, entropy_ctx) > 0;
       }
       if (!x->skip_encode && *eob)
@@ -964,7 +964,7 @@
                        pd->dequant, eob, scan_order->scan,
                        scan_order->iscan);
       }
-      if (args->ctx != NULL) {
+      if (args->ctx != NULL && !x->skip_recode) {
         *a = *l = optimize_b(x, plane, block, tx_size, entropy_ctx) > 0;
       }
       if (!x->skip_encode && *eob) {