On 21/11/14 13:57, Vittorio Giovara wrote:
> From: Michael Niedermayer <[email protected]>
> 
> CC: [email protected]
> Bug-Id: CID 1194380 / CID 1194381
> ---
>  libavcodec/vc1_block.c      | 12 ++++++++----
>  libavcodec/vc1_loopfilter.c | 14 +++++++-------
>  2 files changed, 15 insertions(+), 11 deletions(-)
> 
> diff --git a/libavcodec/vc1_block.c b/libavcodec/vc1_block.c
> index acd5145..c14ef3a 100644
> --- a/libavcodec/vc1_block.c
> +++ b/libavcodec/vc1_block.c
> @@ -1649,7 +1649,8 @@ static int vc1_decode_p_mb_intfr(VC1Context *v)
>                  s->current_picture.motion_val[1][s->block_index[i]][1] = 0;
>              }
>              s->current_picture.mb_type[mb_pos]                     = 
> MB_TYPE_INTRA;
> -            s->mb_intra = v->is_intra[s->mb_x] = 1;
> +            s->mb_intra = 1;
> +            v->is_intra[s->mb_x] = 0x3F;
>              for (i = 0; i < 6; i++)
>                  v->mb_type[0][s->block_index[i]] = 1;
>              fieldtx = v->fieldtx_plane[mb_pos] = get_bits1(gb);
> @@ -1818,7 +1819,8 @@ static int vc1_decode_p_mb_intfi(VC1Context *v)
>  
>      idx_mbmode = get_vlc2(gb, v->mbmode_vlc->table, VC1_IF_MBMODE_VLC_BITS, 
> 2);
>      if (idx_mbmode <= 1) { // intra MB
> -        s->mb_intra = v->is_intra[s->mb_x] = 1;
> +        s->mb_intra = 1;
> +        v->is_intra[s->mb_x] = 0x3F;
>          s->current_picture.motion_val[1][s->block_index[0] + 
> v->blocks_off][0] = 0;
>          s->current_picture.motion_val[1][s->block_index[0] + 
> v->blocks_off][1] = 0;
>          s->current_picture.mb_type[mb_pos + v->mb_off] = MB_TYPE_INTRA;
> @@ -2095,7 +2097,8 @@ static void vc1_decode_b_mb_intfi(VC1Context *v)
>  
>      idx_mbmode = get_vlc2(gb, v->mbmode_vlc->table, VC1_IF_MBMODE_VLC_BITS, 
> 2);
>      if (idx_mbmode <= 1) { // intra MB
> -        s->mb_intra = v->is_intra[s->mb_x] = 1;
> +        s->mb_intra = 1;
> +        v->is_intra[s->mb_x] = 0x3F;
>          s->current_picture.motion_val[1][s->block_index[0]][0] = 0;
>          s->current_picture.motion_val[1][s->block_index[0]][1] = 0;
>          s->current_picture.mb_type[mb_pos + v->mb_off]         = 
> MB_TYPE_INTRA;
> @@ -2314,7 +2317,8 @@ static int vc1_decode_b_mb_intfr(VC1Context *v)
>              s->mv[1][i][1] = 
> s->current_picture.motion_val[1][s->block_index[i]][1] = 0;
>          }
>          s->current_picture.mb_type[mb_pos] = MB_TYPE_INTRA;
> -        s->mb_intra = v->is_intra[s->mb_x] = 1;
> +        s->mb_intra = 1;
> +        v->is_intra[s->mb_x] = 0x3F;
>          for (i = 0; i < 6; i++)
>              v->mb_type[0][s->block_index[i]] = 1;
>          fieldtx = v->fieldtx_plane[mb_pos] = get_bits1(gb);


The part above seems unrelated.

> diff --git a/libavcodec/vc1_loopfilter.c b/libavcodec/vc1_loopfilter.c
> index 1b76d83..78a5d65 100644
> --- a/libavcodec/vc1_loopfilter.c
> +++ b/libavcodec/vc1_loopfilter.c
> @@ -224,14 +224,14 @@ static av_always_inline void 
> vc1_apply_p_v_loop_filter(VC1Context *v, int block_
>  
>          if (block_num > 3) {
>              bottom_cbp      = v->cbp[s->mb_x]      >> (block_num * 4);
> -            bottom_is_intra = v->is_intra[s->mb_x] >> (block_num * 4);
> +            bottom_is_intra = v->is_intra[s->mb_x] >> block_num;
>              mv              = &v->luma_mv[s->mb_x - s->mb_stride];
>              mv_stride       = s->mb_stride;
>          } else {
>              bottom_cbp      = (block_num < 2) ? (mb_cbp               >> 
> ((block_num + 2) * 4))
>                                                : (v->cbp[s->mb_x]      >> 
> ((block_num - 2) * 4));
> -            bottom_is_intra = (block_num < 2) ? (mb_is_intra          >> 
> ((block_num + 2) * 4))
> -                                              : (v->is_intra[s->mb_x] >> 
> ((block_num - 2) * 4));
> +            bottom_is_intra = (block_num < 2) ? (mb_is_intra          >> 
> (block_num + 2))
> +                                              : (v->is_intra[s->mb_x] >> 
> (block_num - 2));
>              mv_stride       = s->b8_stride;
>              mv              = 
> &s->current_picture.motion_val[0][s->block_index[block_num] - 2 * mv_stride];
>          }
> @@ -273,7 +273,7 @@ static av_always_inline void 
> vc1_apply_p_h_loop_filter(VC1Context *v, int block_
>      int mb_cbp         = v->cbp[s->mb_x - 1 - s->mb_stride],
>          block_cbp      = mb_cbp      >> (block_num * 4), right_cbp,
>          mb_is_intra    = v->is_intra[s->mb_x - 1 - s->mb_stride],
> -        block_is_intra = mb_is_intra >> (block_num * 4), right_is_intra;
> +        block_is_intra = mb_is_intra >> block_num, right_is_intra;
>      int idx, linesize  = block_num > 3 ? s->uvlinesize : s->linesize, ttblk;
>      uint8_t *dst;
>  
> @@ -288,13 +288,13 @@ static av_always_inline void 
> vc1_apply_p_h_loop_filter(VC1Context *v, int block_
>  
>          if (block_num > 3) {
>              right_cbp      = v->cbp[s->mb_x - s->mb_stride] >> (block_num * 
> 4);
> -            right_is_intra = v->is_intra[s->mb_x - s->mb_stride] >> 
> (block_num * 4);
> +            right_is_intra = v->is_intra[s->mb_x - s->mb_stride] >> 
> block_num;
>              mv             = &v->luma_mv[s->mb_x - s->mb_stride - 1];
>          } else {
>              right_cbp      = (block_num & 1) ? (v->cbp[s->mb_x - 
> s->mb_stride]      >> ((block_num - 1) * 4))
>                                               : (mb_cbp                       
>        >> ((block_num + 1) * 4));
> -            right_is_intra = (block_num & 1) ? (v->is_intra[s->mb_x - 
> s->mb_stride] >> ((block_num - 1) * 4))
> -                                             : (mb_is_intra                  
>        >> ((block_num + 1) * 4));
> +            right_is_intra = (block_num & 1) ? (v->is_intra[s->mb_x - 
> s->mb_stride] >> (block_num - 1))
> +                                             : (mb_is_intra                  
>        >> (block_num + 1));
>              mv             = 
> &s->current_picture.motion_val[0][s->block_index[block_num] - s->b8_stride * 
> 2 - 2];
>          }
>          if (block_is_intra & 1 || right_is_intra & 1 || mv[0][0] != mv[1][0] 
> || mv[0][1] != mv[1][1]) {
> 

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to