diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-04-26 15:28:09 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-04-26 15:39:32 +0200 |
commit | ee4c01bef65dc714c55178fa240951407c36ec1a (patch) | |
tree | 3113f6a88cdca56e05803202166ed5898f5c319a /libavcodec/vc1.c | |
parent | ba323d67fa5554e83a907ac81b623c0539e37e03 (diff) | |
download | ffmpeg-ee4c01bef65dc714c55178fa240951407c36ec1a.tar.gz |
vc1dec: factor lut clean code
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/vc1.c')
-rw-r--r-- | libavcodec/vc1.c | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c index bd56425b15..2d4411f5bf 100644 --- a/libavcodec/vc1.c +++ b/libavcodec/vc1.c @@ -576,25 +576,6 @@ int ff_vc1_decode_entry_point(AVCodecContext *avctx, VC1Context *v, GetBitContex return 0; } -static void rotate_luts(VC1Context *v) -{ -#define ROTATE(DEF, L, N, C, A) do {\ - if (v->s.pict_type == AV_PICTURE_TYPE_BI || v->s.pict_type == AV_PICTURE_TYPE_B) {\ - C = A;\ - } else {\ - DEF;\ - 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(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); -} - /* fill lookup tables for intensity compensation */ #define INIT_LUT(lumscale, lumshift, luty, lutuv, chain) do {\ int scale, shift, i; \ @@ -619,6 +600,29 @@ static void rotate_luts(VC1Context *v) }while(0) +static void rotate_luts(VC1Context *v) +{ +#define ROTATE(DEF, L, N, C, A) do {\ + if (v->s.pict_type == AV_PICTURE_TYPE_BI || v->s.pict_type == AV_PICTURE_TYPE_B) {\ + C = A;\ + } else {\ + DEF;\ + 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(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; +} + int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb) { int pqindex, lowquant, status; @@ -709,9 +713,6 @@ int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb) if(v->first_pic_header_flag) { rotate_luts(v); - 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; } switch (v->s.pict_type) { @@ -986,9 +987,6 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) if(v->first_pic_header_flag) { rotate_luts(v); - 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; } switch (v->s.pict_type) { |