]> granicus.if.org Git - libvpx/commitdiff
Move switch(tx_size) around txsize to detokenize.c.
authorRonald S. Bultje <rbultje@google.com>
Fri, 23 Nov 2012 19:23:50 +0000 (11:23 -0800)
committerRonald S. Bultje <rbultje@google.com>
Sun, 25 Nov 2012 05:22:42 +0000 (21:22 -0800)
Add a new function vp9_decode_mb_tokens() that handles the switch
between different per-tx-size detokenize functions. Make actual
implementations (vp9_decode_mb_tokens_NxN()) static.

Change-Id: I9e0c4ef410bfa90128a02b472c079a955776816d

vp9/decoder/decodframe.c
vp9/decoder/detokenize.c
vp9/decoder/detokenize.h

index 46821073fba822d829f33f9469211e8af3398c88..b4b6e2f34af6e853133eaeffa86e4779f7d6951e 100644 (file)
@@ -287,13 +287,7 @@ static void decode_superblock(VP9D_COMP *pbi, MACROBLOCKD *xd,
       xd->eobs[i] = 0;
     }
 
-    if (tx_size == TX_16X16) {
-      eobtotal = vp9_decode_mb_tokens_16x16(pbi, xd, bc);
-    } else if (tx_size == TX_8X8) {
-      eobtotal = vp9_decode_mb_tokens_8x8(pbi, xd, bc);
-    } else {
-      eobtotal = vp9_decode_mb_tokens_4x4(pbi, xd, bc);
-    }
+    eobtotal = vp9_decode_mb_tokens(pbi, xd, bc);
     if (eobtotal == 0) {  // skip loopfilter
       xd->mode_info_context->mbmi.mb_skip_coeff = 1;
       continue;
@@ -391,12 +385,8 @@ static void decode_macroblock(VP9D_COMP *pbi, MACROBLOCKD *xd,
       xd->block[i].eob = 0;
       xd->eobs[i] = 0;
     }
-    if (tx_size == TX_16X16) {
-      eobtotal = vp9_decode_mb_tokens_16x16(pbi, xd, bc);
-    } else if (tx_size == TX_8X8) {
-      eobtotal = vp9_decode_mb_tokens_8x8(pbi, xd, bc);
-    } else if (mode != B_PRED) {
-      eobtotal = vp9_decode_mb_tokens_4x4(pbi, xd, bc);
+    if (mode != B_PRED) {
+      eobtotal = vp9_decode_mb_tokens(pbi, xd, bc);
     }
   }
 
index 29ec9787b71d7690052686ccb627f9bdd03e5d7c..b6823e7efa9075842d0df0b1e75e16a264e0f7f2 100644 (file)
@@ -256,9 +256,9 @@ static int get_eob(MACROBLOCKD* const xd, int segment_id, int eob_max) {
 }
 
 
-int vp9_decode_mb_tokens_16x16(VP9D_COMP* const pbi,
-                               MACROBLOCKD* const xd,
-                               BOOL_DECODER* const bc) {
+static int vp9_decode_mb_tokens_16x16(VP9D_COMP* const pbi,
+                                      MACROBLOCKD* const xd,
+                                      BOOL_DECODER* const bc) {
   ENTROPY_CONTEXT* const A = (ENTROPY_CONTEXT *)xd->above_context;
   ENTROPY_CONTEXT* const L = (ENTROPY_CONTEXT *)xd->left_context;
   unsigned short* const eobs = xd->eobs;
@@ -297,9 +297,9 @@ int vp9_decode_mb_tokens_16x16(VP9D_COMP* const pbi,
   return eobtotal;
 }
 
-int vp9_decode_mb_tokens_8x8(VP9D_COMP* const pbi,
-                             MACROBLOCKD* const xd,
-                             BOOL_DECODER* const bc) {
+static int vp9_decode_mb_tokens_8x8(VP9D_COMP* const pbi,
+                                    MACROBLOCKD* const xd,
+                                    BOOL_DECODER* const bc) {
   ENTROPY_CONTEXT *const A = (ENTROPY_CONTEXT *)xd->above_context;
   ENTROPY_CONTEXT *const L = (ENTROPY_CONTEXT *)xd->left_context;
   unsigned short *const eobs = xd->eobs;
@@ -419,9 +419,9 @@ int vp9_decode_mb_tokens_4x4_uv(VP9D_COMP* const dx,
   return eobtotal;
 }
 
-int vp9_decode_mb_tokens_4x4(VP9D_COMP* const dx,
-                             MACROBLOCKD* const xd,
-                             BOOL_DECODER* const bc) {
+static int vp9_decode_mb_tokens_4x4(VP9D_COMP* const dx,
+                                    MACROBLOCKD* const xd,
+                                    BOOL_DECODER* const bc) {
   int i, eobtotal = 0;
   PLANE_TYPE type;
 
@@ -440,3 +440,21 @@ int vp9_decode_mb_tokens_4x4(VP9D_COMP* const dx,
 
   return eobtotal + vp9_decode_mb_tokens_4x4_uv(dx, xd, bc);
 }
+
+int vp9_decode_mb_tokens(VP9D_COMP* const dx,
+                         MACROBLOCKD* const xd,
+                         BOOL_DECODER* const bc) {
+  const TX_SIZE tx_size = xd->mode_info_context->mbmi.txfm_size;
+  int eobtotal;
+
+  if (tx_size == TX_16X16) {
+    eobtotal = vp9_decode_mb_tokens_16x16(dx, xd, bc);
+  } else if (tx_size == TX_8X8) {
+    eobtotal = vp9_decode_mb_tokens_8x8(dx, xd, bc);
+  } else {
+    assert(tx_size == TX_4X4);
+    eobtotal = vp9_decode_mb_tokens_4x4(dx, xd, bc);
+  }
+
+  return eobtotal;
+}
index a8f78f4ccce216cee4ba5c063080c9a999507e95..9f00d297d707bb2d9b5d83098e744701486cf979 100644 (file)
@@ -20,16 +20,10 @@ int vp9_decode_coefs_4x4(VP9D_COMP *dx, MACROBLOCKD *xd,
                          BOOL_DECODER* const bc,
                          PLANE_TYPE type, int i);
 
-int vp9_decode_mb_tokens_4x4(VP9D_COMP* const, MACROBLOCKD* const,
-                             BOOL_DECODER* const);
+int vp9_decode_mb_tokens(VP9D_COMP* const, MACROBLOCKD* const,
+                         BOOL_DECODER* const);
 
 int vp9_decode_mb_tokens_4x4_uv(VP9D_COMP* const dx, MACROBLOCKD* const xd,
                                 BOOL_DECODER* const bc);
 
-int vp9_decode_mb_tokens_8x8(VP9D_COMP* const, MACROBLOCKD* const,
-                             BOOL_DECODER* const);
-
-int vp9_decode_mb_tokens_16x16(VP9D_COMP* const, MACROBLOCKD* const,
-                               BOOL_DECODER* const);
-
 #endif /* DETOKENIZE_H */