vc1: simplify *_use_ic initialization

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
pull/51/head
Michael Niedermayer 11 years ago
parent ed5bed4152
commit 64b98df389
  1. 16
      libavcodec/vc1.c
  2. 2
      libavcodec/vc1.h
  3. 6
      libavcodec/vc1dec.c

@ -596,24 +596,20 @@ static void rotate_luts(VC1Context *v)
C = A; \
} else { \
DEF; \
memcpy(&tmp, &L , sizeof(tmp)); \
memcpy(&L , &N , sizeof(tmp)); \
memcpy(&N , &tmp, sizeof(tmp)); \
memcpy(&tmp, L , sizeof(tmp)); \
memcpy(L , N , sizeof(tmp)); \
memcpy(N , &tmp, sizeof(tmp)); \
C = N; \
} \
} while(0)
ROTATE(int tmp, v->last_use_ic, v->next_use_ic, v->curr_use_ic, v->aux_use_ic);
ROTATE(int *tmp, &v->last_use_ic, &v->next_use_ic, v->curr_use_ic, &v->aux_use_ic);
ROTATE(uint8_t tmp[2][256], v->last_luty, v->next_luty, v->curr_luty, v->aux_luty);
ROTATE(uint8_t tmp[2][256], v->last_lutuv, v->next_lutuv, v->curr_lutuv, v->aux_lutuv);
INIT_LUT(32, 0, v->curr_luty[0], v->curr_lutuv[0], 0);
INIT_LUT(32, 0, v->curr_luty[1], v->curr_lutuv[1], 0);
v->curr_use_ic = 0;
if (v->curr_luty == v->next_luty) {
// If we just initialized next_lut, clear next_use_ic to match.
v->next_use_ic = 0;
}
*v->curr_use_ic = 0;
}
int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb)
@ -1108,7 +1104,7 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
INIT_LUT(v->lumscale2, v->lumshift2, v->curr_luty[v->cur_field_type^1], v->curr_lutuv[v->cur_field_type^1], 0);
INIT_LUT(v->lumscale , v->lumshift , v->last_luty[v->cur_field_type ], v->last_lutuv[v->cur_field_type ], 1);
}
v->next_use_ic = v->curr_use_ic = 1;
v->next_use_ic = *v->curr_use_ic = 1;
} else {
INIT_LUT(v->lumscale , v->lumshift , v->last_luty[0], v->last_lutuv[0], 1);
INIT_LUT(v->lumscale2, v->lumshift2, v->last_luty[1], v->last_lutuv[1], 1);

@ -315,7 +315,7 @@ typedef struct VC1Context{
uint8_t aux_luty[2][256], aux_lutuv[2][256]; ///< lookup tables used for intensity compensation
uint8_t next_luty[2][256], next_lutuv[2][256]; ///< lookup tables used for intensity compensation
uint8_t (*curr_luty)[256] ,(*curr_lutuv)[256];
int last_use_ic, curr_use_ic, next_use_ic, aux_use_ic;
int last_use_ic, *curr_use_ic, next_use_ic, aux_use_ic;
int rnd; ///< rounding control
/** Frame decoding info for S/M profiles only */

@ -377,7 +377,7 @@ static void vc1_mc_1mv(VC1Context *v, int dir)
srcV = s->current_picture.f.data[2];
luty = v->curr_luty;
lutuv = v->curr_lutuv;
use_ic = v->curr_use_ic;
use_ic = *v->curr_use_ic;
} else {
srcY = s->last_picture.f.data[0];
srcU = s->last_picture.f.data[1];
@ -571,7 +571,7 @@ static void vc1_mc_4mv_luma(VC1Context *v, int n, int dir, int avg)
if (v->field_mode && (v->cur_field_type != v->ref_field_type[dir]) && v->second_field) {
srcY = s->current_picture.f.data[0];
luty = v->curr_luty;
use_ic = v->curr_use_ic;
use_ic = *v->curr_use_ic;
} else {
srcY = s->last_picture.f.data[0];
luty = v->last_luty;
@ -873,7 +873,7 @@ static void vc1_mc_4mv_chroma(VC1Context *v, int dir)
srcU = s->current_picture.f.data[1];
srcV = s->current_picture.f.data[2];
lutuv = v->curr_lutuv;
use_ic = v->curr_use_ic;
use_ic = *v->curr_use_ic;
} else {
srcU = s->last_picture.f.data[1];
srcV = s->last_picture.f.data[2];

Loading…
Cancel
Save