Merge "MB_MODE_INFO size reduction"
This commit is contained in:
commit
3c5ed6f52e
@ -150,14 +150,15 @@ typedef enum
|
||||
|
||||
typedef struct
|
||||
{
|
||||
MB_PREDICTION_MODE mode, uv_mode;
|
||||
MV_REFERENCE_FRAME ref_frame;
|
||||
uint8_t mode, uv_mode;
|
||||
uint8_t ref_frame;
|
||||
uint8_t is_4x4;
|
||||
int_mv mv;
|
||||
|
||||
unsigned char partitioning;
|
||||
unsigned char mb_skip_coeff; /* does this mb has coefficients at all, 1=no coefficients, 0=need decode tokens */
|
||||
unsigned char need_to_clamp_mvs;
|
||||
unsigned char segment_id; /* Which set of segmentation parameters should be used for this MB */
|
||||
uint8_t partitioning;
|
||||
uint8_t mb_skip_coeff; /* does this mb has coefficients at all, 1=no coefficients, 0=need decode tokens */
|
||||
uint8_t need_to_clamp_mvs;
|
||||
uint8_t segment_id; /* Which set of segmentation parameters should be used for this MB */
|
||||
} MB_MODE_INFO;
|
||||
|
||||
typedef struct
|
||||
|
@ -57,6 +57,7 @@ static void read_kf_modes(VP8D_COMP *pbi, MODE_INFO *mi)
|
||||
if (mi->mbmi.mode == B_PRED)
|
||||
{
|
||||
int i = 0;
|
||||
mi->mbmi.is_4x4 = 1;
|
||||
|
||||
do
|
||||
{
|
||||
@ -485,6 +486,7 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi)
|
||||
mb_to_bottom_edge);
|
||||
mbmi->mv.as_int = mi->bmi[15].mv.as_int;
|
||||
mbmi->mode = SPLITMV;
|
||||
mbmi->is_4x4 = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -557,6 +559,7 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi)
|
||||
if ((mbmi->mode = read_ymode(bc, pbi->common.fc.ymode_prob)) == B_PRED)
|
||||
{
|
||||
int j = 0;
|
||||
mbmi->is_4x4 = 1;
|
||||
do
|
||||
{
|
||||
mi->bmi[j].as_mode = read_bmode(bc, pbi->common.fc.bmode_prob);
|
||||
@ -603,6 +606,7 @@ static void decode_mb_mode_mvs(VP8D_COMP *pbi, MODE_INFO *mi,
|
||||
else
|
||||
mi->mbmi.mb_skip_coeff = 0;
|
||||
|
||||
mi->mbmi.is_4x4 = 0;
|
||||
if(pbi->common.frame_type == KEY_FRAME)
|
||||
read_kf_modes(pbi, mi);
|
||||
else
|
||||
|
@ -17,17 +17,16 @@
|
||||
|
||||
void vp8_reset_mb_tokens_context(MACROBLOCKD *x)
|
||||
{
|
||||
ENTROPY_CONTEXT *a_ctx = ((ENTROPY_CONTEXT *)x->above_context);
|
||||
ENTROPY_CONTEXT *l_ctx = ((ENTROPY_CONTEXT *)x->left_context);
|
||||
|
||||
vpx_memset(a_ctx, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
|
||||
vpx_memset(l_ctx, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
|
||||
|
||||
/* Clear entropy contexts for Y2 blocks */
|
||||
if (x->mode_info_context->mbmi.mode != B_PRED &&
|
||||
x->mode_info_context->mbmi.mode != SPLITMV)
|
||||
if (!x->mode_info_context->mbmi.is_4x4)
|
||||
{
|
||||
vpx_memset(x->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
vpx_memset(x->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
}
|
||||
else
|
||||
{
|
||||
vpx_memset(x->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
|
||||
vpx_memset(x->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
|
||||
a_ctx[8] = l_ctx[8] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -187,8 +186,7 @@ int vp8_decode_mb_tokens(VP8D_COMP *dx, MACROBLOCKD *x)
|
||||
|
||||
qcoeff_ptr = &x->qcoeff[0];
|
||||
|
||||
if (x->mode_info_context->mbmi.mode != B_PRED &&
|
||||
x->mode_info_context->mbmi.mode != SPLITMV)
|
||||
if (!x->mode_info_context->mbmi.is_4x4)
|
||||
{
|
||||
a = a_ctx + 8;
|
||||
l = l_ctx + 8;
|
||||
|
Loading…
x
Reference in New Issue
Block a user