On Sun, Nov 23, 2014 at 11:44 PM, Luca Barbato <lu_z...@gentoo.org> wrote:
> The code currently set the information in at least 4 places, spare
> some pointless loops.
>
> Make the code in the loop a little uniform to make easier factorize
> it out later.
> ---
>  libavcodec/vc1_block.c | 26 +++++++++++---------------
>  1 file changed, 11 insertions(+), 15 deletions(-)
>
> diff --git a/libavcodec/vc1_block.c b/libavcodec/vc1_block.c
> index acd5145..ab7f7a3 100644
> --- a/libavcodec/vc1_block.c
> +++ b/libavcodec/vc1_block.c
> @@ -1650,8 +1650,6 @@ static int vc1_decode_p_mb_intfr(VC1Context *v)
>              }
>              s->current_picture.mb_type[mb_pos]                     = 
> MB_TYPE_INTRA;
>              s->mb_intra = v->is_intra[s->mb_x] = 1;
> -            for (i = 0; i < 6; i++)
> -                v->mb_type[0][s->block_index[i]] = 1;
>              fieldtx = v->fieldtx_plane[mb_pos] = get_bits1(gb);
>              mb_has_coeffs = get_bits1(gb);
>              if (mb_has_coeffs)
> @@ -1664,11 +1662,11 @@ static int vc1_decode_p_mb_intfr(VC1Context *v)
>              s->c_dc_scale = s->c_dc_scale_table[mquant];
>              dst_idx = 0;
>              for (i = 0; i < 6; i++) {
> -                s->dc_val[0][s->block_index[i]] = 0;
> +                v->a_avail = v->c_avail          = 0;
> +                v->mb_type[0][s->block_index[i]] = 1;
> +                s->dc_val[0][s->block_index[i]]  = 0;
>                  dst_idx += i >> 2;
>                  val = ((cbp >> (5 - i)) & 1);
> -                v->mb_type[0][s->block_index[i]] = s->mb_intra;
> -                v->a_avail = v->c_avail = 0;
>                  if (i == 2 || i == 3 || !s->first_slice_line)
>                      v->a_avail = v->mb_type[0][s->block_index[i] - 
> s->block_wrap[i]];
>                  if (i == 1 || i == 3 || s->mb_x)
> @@ -1833,11 +1831,11 @@ static int vc1_decode_p_mb_intfi(VC1Context *v)
>              cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc->table, 
> VC1_ICBPCY_VLC_BITS, 2);
>          dst_idx = 0;
>          for (i = 0; i < 6; i++) {
> -            s->dc_val[0][s->block_index[i]]  = 0;
> +            v->a_avail = v->c_avail          = 0;
>              v->mb_type[0][s->block_index[i]] = 1;
> +            s->dc_val[0][s->block_index[i]]  = 0;
>              dst_idx += i >> 2;
>              val = ((cbp >> (5 - i)) & 1);
> -            v->a_avail = v->c_avail = 0;
>              if (i == 2 || i == 3 || !s->first_slice_line)
>                  v->a_avail = v->mb_type[0][s->block_index[i] - 
> s->block_wrap[i]];
>              if (i == 1 || i == 3 || s->mb_x)
> @@ -2110,11 +2108,11 @@ static void vc1_decode_b_mb_intfi(VC1Context *v)
>              cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc->table, 
> VC1_ICBPCY_VLC_BITS, 2);
>          dst_idx = 0;
>          for (i = 0; i < 6; i++) {
> -            s->dc_val[0][s->block_index[i]] = 0;
> +            v->a_avail = v->c_avail          = 0;
> +            v->mb_type[0][s->block_index[i]] = 1;
> +            s->dc_val[0][s->block_index[i]]  = 0;
>              dst_idx += i >> 2;
>              val = ((cbp >> (5 - i)) & 1);
> -            v->mb_type[0][s->block_index[i]] = s->mb_intra;
> -            v->a_avail                       = v->c_avail = 0;
>              if (i == 2 || i == 3 || !s->first_slice_line)
>                  v->a_avail = v->mb_type[0][s->block_index[i] - 
> s->block_wrap[i]];
>              if (i == 1 || i == 3 || s->mb_x)
> @@ -2315,8 +2313,6 @@ static int vc1_decode_b_mb_intfr(VC1Context *v)
>          }
>          s->current_picture.mb_type[mb_pos] = MB_TYPE_INTRA;
>          s->mb_intra = v->is_intra[s->mb_x] = 1;
> -        for (i = 0; i < 6; i++)
> -            v->mb_type[0][s->block_index[i]] = 1;
>          fieldtx = v->fieldtx_plane[mb_pos] = get_bits1(gb);
>          mb_has_coeffs = get_bits1(gb);
>          if (mb_has_coeffs)
> @@ -2329,11 +2325,11 @@ static int vc1_decode_b_mb_intfr(VC1Context *v)
>          s->c_dc_scale = s->c_dc_scale_table[mquant];
>          dst_idx = 0;
>          for (i = 0; i < 6; i++) {
> -            s->dc_val[0][s->block_index[i]] = 0;
> +            v->a_avail = v->c_avail          = 0;
> +            v->mb_type[0][s->block_index[i]] = 1;
> +            s->dc_val[0][s->block_index[i]]  = 0;
>              dst_idx += i >> 2;
>              val = ((cbp >> (5 - i)) & 1);
> -            v->mb_type[0][s->block_index[i]] = s->mb_intra;
> -            v->a_avail = v->c_avail = 0;
>              if (i == 2 || i == 3 || !s->first_slice_line)
>                  v->a_avail = v->mb_type[0][s->block_index[i] - 
> s->block_wrap[i]];
>              if (i == 1 || i == 3 || s->mb_x)

The set LGTM

-- 
Vittorio
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to