Commit 25b609b6 authored by Ronald S. Bultje's avatar Ronald S. Bultje

Move switch(tx_size) around txsize to detokenize.c.

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
parent 9dc7d4fb
...@@ -287,13 +287,7 @@ static void decode_superblock(VP9D_COMP *pbi, MACROBLOCKD *xd, ...@@ -287,13 +287,7 @@ static void decode_superblock(VP9D_COMP *pbi, MACROBLOCKD *xd,
xd->eobs[i] = 0; xd->eobs[i] = 0;
} }
if (tx_size == TX_16X16) { eobtotal = vp9_decode_mb_tokens(pbi, xd, bc);
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);
}
if (eobtotal == 0) { // skip loopfilter if (eobtotal == 0) { // skip loopfilter
xd->mode_info_context->mbmi.mb_skip_coeff = 1; xd->mode_info_context->mbmi.mb_skip_coeff = 1;
continue; continue;
...@@ -391,12 +385,8 @@ static void decode_macroblock(VP9D_COMP *pbi, MACROBLOCKD *xd, ...@@ -391,12 +385,8 @@ static void decode_macroblock(VP9D_COMP *pbi, MACROBLOCKD *xd,
xd->block[i].eob = 0; xd->block[i].eob = 0;
xd->eobs[i] = 0; xd->eobs[i] = 0;
} }
if (tx_size == TX_16X16) { if (mode != B_PRED) {
eobtotal = vp9_decode_mb_tokens_16x16(pbi, xd, bc); eobtotal = vp9_decode_mb_tokens(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);
} }
} }
......
...@@ -256,9 +256,9 @@ static int get_eob(MACROBLOCKD* const xd, int segment_id, int eob_max) { ...@@ -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, static int vp9_decode_mb_tokens_16x16(VP9D_COMP* const pbi,
MACROBLOCKD* const xd, MACROBLOCKD* const xd,
BOOL_DECODER* const bc) { BOOL_DECODER* const bc) {
ENTROPY_CONTEXT* const A = (ENTROPY_CONTEXT *)xd->above_context; ENTROPY_CONTEXT* const A = (ENTROPY_CONTEXT *)xd->above_context;
ENTROPY_CONTEXT* const L = (ENTROPY_CONTEXT *)xd->left_context; ENTROPY_CONTEXT* const L = (ENTROPY_CONTEXT *)xd->left_context;
unsigned short* const eobs = xd->eobs; unsigned short* const eobs = xd->eobs;
...@@ -297,9 +297,9 @@ int vp9_decode_mb_tokens_16x16(VP9D_COMP* const pbi, ...@@ -297,9 +297,9 @@ int vp9_decode_mb_tokens_16x16(VP9D_COMP* const pbi,
return eobtotal; return eobtotal;
} }
int vp9_decode_mb_tokens_8x8(VP9D_COMP* const pbi, static int vp9_decode_mb_tokens_8x8(VP9D_COMP* const pbi,
MACROBLOCKD* const xd, MACROBLOCKD* const xd,
BOOL_DECODER* const bc) { BOOL_DECODER* const bc) {
ENTROPY_CONTEXT *const A = (ENTROPY_CONTEXT *)xd->above_context; ENTROPY_CONTEXT *const A = (ENTROPY_CONTEXT *)xd->above_context;
ENTROPY_CONTEXT *const L = (ENTROPY_CONTEXT *)xd->left_context; ENTROPY_CONTEXT *const L = (ENTROPY_CONTEXT *)xd->left_context;
unsigned short *const eobs = xd->eobs; unsigned short *const eobs = xd->eobs;
...@@ -419,9 +419,9 @@ int vp9_decode_mb_tokens_4x4_uv(VP9D_COMP* const dx, ...@@ -419,9 +419,9 @@ int vp9_decode_mb_tokens_4x4_uv(VP9D_COMP* const dx,
return eobtotal; return eobtotal;
} }
int vp9_decode_mb_tokens_4x4(VP9D_COMP* const dx, static int vp9_decode_mb_tokens_4x4(VP9D_COMP* const dx,
MACROBLOCKD* const xd, MACROBLOCKD* const xd,
BOOL_DECODER* const bc) { BOOL_DECODER* const bc) {
int i, eobtotal = 0; int i, eobtotal = 0;
PLANE_TYPE type; PLANE_TYPE type;
...@@ -440,3 +440,21 @@ int vp9_decode_mb_tokens_4x4(VP9D_COMP* const dx, ...@@ -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); 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;
}
...@@ -20,16 +20,10 @@ int vp9_decode_coefs_4x4(VP9D_COMP *dx, MACROBLOCKD *xd, ...@@ -20,16 +20,10 @@ int vp9_decode_coefs_4x4(VP9D_COMP *dx, MACROBLOCKD *xd,
BOOL_DECODER* const bc, BOOL_DECODER* const bc,
PLANE_TYPE type, int i); PLANE_TYPE type, int i);
int vp9_decode_mb_tokens_4x4(VP9D_COMP* const, MACROBLOCKD* const, int vp9_decode_mb_tokens(VP9D_COMP* const, MACROBLOCKD* const,
BOOL_DECODER* const); BOOL_DECODER* const);
int vp9_decode_mb_tokens_4x4_uv(VP9D_COMP* const dx, MACROBLOCKD* const xd, int vp9_decode_mb_tokens_4x4_uv(VP9D_COMP* const dx, MACROBLOCKD* const xd,
BOOL_DECODER* const bc); 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 */ #endif /* DETOKENIZE_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment