On 20/01/14 18:30, Janne Grunau wrote:
> This handles macroblock edges for the chroma components in the same way
> as for the luma compoment for 4:4:4 streams. The Spec explicitly states
> that the deblocking filter is not applied to edges at the boundary of
> the picture.
> 
> Signed-off-by: Janne Grunau <[email protected]>
> ---
>  libavcodec/h264.c | 24 +++++++++++++-----------
>  1 file changed, 13 insertions(+), 11 deletions(-)
> 
> diff --git a/libavcodec/h264.c b/libavcodec/h264.c
> index 4b10a68..5069e4a 100644
> --- a/libavcodec/h264.c
> +++ b/libavcodec/h264.c
> @@ -2361,17 +2361,19 @@ static av_always_inline void 
> xchg_mb_border(H264Context *h, uint8_t *src_y,
>      }
>      if (simple || !CONFIG_GRAY || !(h->flags & CODEC_FLAG_GRAY)) {
>          if (chroma444) {
> -            if (deblock_topleft) {
> -                XCHG(top_border_m1 + (24 << pixel_shift), src_cb - (7 << 
> pixel_shift), 1);
> -                XCHG(top_border_m1 + (40 << pixel_shift), src_cr - (7 << 
> pixel_shift), 1);
> -            }
> -            XCHG(top_border + (16 << pixel_shift), src_cb + (1 << 
> pixel_shift), xchg);
> -            XCHG(top_border + (24 << pixel_shift), src_cb + (9 << 
> pixel_shift), 1);
> -            XCHG(top_border + (32 << pixel_shift), src_cr + (1 << 
> pixel_shift), xchg);
> -            XCHG(top_border + (40 << pixel_shift), src_cr + (9 << 
> pixel_shift), 1);
> -            if (h->mb_x + 1 < h->mb_width) {
> -                XCHG(h->top_borders[top_idx][h->mb_x + 1] + (16 << 
> pixel_shift), src_cb + (17 << pixel_shift), 1);
> -                XCHG(h->top_borders[top_idx][h->mb_x + 1] + (32 << 
> pixel_shift), src_cr + (17 << pixel_shift), 1);
> +            if (deblock_top) {
> +                if (deblock_topleft) {
> +                    XCHG(top_border_m1 + (24 << pixel_shift), src_cb - (7 << 
> pixel_shift), 1);
> +                    XCHG(top_border_m1 + (40 << pixel_shift), src_cr - (7 << 
> pixel_shift), 1);
> +                }
> +                XCHG(top_border + (16 << pixel_shift), src_cb + (1 << 
> pixel_shift), xchg);
> +                XCHG(top_border + (24 << pixel_shift), src_cb + (9 << 
> pixel_shift), 1);
> +                XCHG(top_border + (32 << pixel_shift), src_cr + (1 << 
> pixel_shift), xchg);
> +                XCHG(top_border + (40 << pixel_shift), src_cr + (9 << 
> pixel_shift), 1);
> +                if (h->mb_x + 1 < h->mb_width) {
> +                    XCHG(h->top_borders[top_idx][h->mb_x + 1] + (16 << 
> pixel_shift), src_cb + (17 << pixel_shift), 1);
> +                    XCHG(h->top_borders[top_idx][h->mb_x + 1] + (32 << 
> pixel_shift), src_cr + (17 << pixel_shift), 1);
> +                }
>              }
>          } else {
>              if (deblock_top) {
> 

Seems fine.

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

Reply via email to