]> granicus.if.org Git - libvpx/commitdiff
vp10: update assertion/allocation for tokens.
authorRonald S. Bultje <rsbultje@gmail.com>
Mon, 12 Oct 2015 18:45:04 +0000 (14:45 -0400)
committerRonald S. Bultje <rsbultje@gmail.com>
Mon, 12 Oct 2015 18:45:18 +0000 (14:45 -0400)
We only write EOSB tokens if we write tokens (i.e. not for skip blocks),
and we write EOSB tokens per-plane instead of per block.

Change-Id: I8d7ee99f8ec50eb7ae809f9f9282c1c91dbf6537

vp10/encoder/encodeframe.c
vp10/encoder/encoder.h

index ce1530c635f550759fd66fa96575887b19e067c4..31a2a268fb828de987ef0a73583c9700ba20c5a5 100644 (file)
@@ -2423,7 +2423,7 @@ static void rd_pick_partition(VP10_COMP *cpi, ThreadData *td,
   }
 
   if (bsize == BLOCK_64X64) {
-    assert(tp_orig < *tp);
+    assert(tp_orig < *tp || (tp_orig == *tp && xd->mi[0]->mbmi.skip));
     assert(best_rdc.rate < INT_MAX);
     assert(best_rdc.dist < INT64_MAX);
   } else {
index 6f3f7113c51c6ac71e06517b5790614f5cab67cf..2bf0be3673ca5c96809841d74aaad7c4ab6da1c8 100644 (file)
@@ -572,8 +572,8 @@ static INLINE int get_token_alloc(int mb_rows, int mb_cols) {
   // 32x32 transform crossing a boundary at a multiple of 16.
   // mb_rows, cols are in units of 16 pixels. We assume 3 planes all at full
   // resolution. We assume up to 1 token per pixel, and then allow
-  // a head room of 4.
-  return mb_rows * mb_cols * (16 * 16 * 3 + 4);
+  // a head room of 1 EOSB token per 8x8 block per plane.
+  return mb_rows * mb_cols * (16 * 16 + 4) * 3;
 }
 
 // Get the allocated token size for a tile. It does the same calculation as in