On Mon, Oct 03, 2011 at 11:28:58PM -0700, Ronald S. Bultje wrote:
> It was wrong in colorspaces where horizontal and vertical chroma
> subsampling are not the same, e.g. 422.
> ---
> libavcodec/mpegvideo.c | 15 +++++++++------
> 1 files changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
> index e418e95..baab3c8 100644
> --- a/libavcodec/mpegvideo.c
> +++ b/libavcodec/mpegvideo.c
> @@ -2313,12 +2313,15 @@ void ff_draw_horiz_band(MpegEncContext *s, int y, int
> h){
>
> edge_h= FFMIN(h, s->v_edge_pos - y);
>
> - s->dsp.draw_edges(s->current_picture_ptr->f.data[0] + y
> *s->linesize , s->linesize,
> - s->h_edge_pos , edge_h , EDGE_WIDTH
> , EDGE_WIDTH , sides);
> - s->dsp.draw_edges(s->current_picture_ptr->f.data[1] +
> (y>>vshift)*s->uvlinesize, s->uvlinesize,
> - s->h_edge_pos>>hshift, edge_h>>hshift,
> EDGE_WIDTH>>hshift, EDGE_WIDTH>>vshift, sides);
> - s->dsp.draw_edges(s->current_picture_ptr->f.data[2] +
> (y>>vshift)*s->uvlinesize, s->uvlinesize,
> - s->h_edge_pos>>hshift, edge_h>>hshift,
> EDGE_WIDTH>>hshift, EDGE_WIDTH>>vshift, sides);
> + s->dsp.draw_edges(s->current_picture_ptr->f.data[0] + y
> *s->linesize,
> + s->linesize, s->h_edge_pos,
> edge_h,
> + EDGE_WIDTH, EDGE_WIDTH,
> sides);
> + s->dsp.draw_edges(s->current_picture_ptr->f.data[1] +
> (y>>vshift)*s->uvlinesize,
> + s->uvlinesize, s->h_edge_pos>>hshift,
> edge_h>>vshift,
> + EDGE_WIDTH>>hshift, EDGE_WIDTH>>vshift,
> sides);
> + s->dsp.draw_edges(s->current_picture_ptr->f.data[2] +
> (y>>vshift)*s->uvlinesize,
> + s->uvlinesize, s->h_edge_pos>>hshift,
> edge_h>>vshift,
> + EDGE_WIDTH>>hshift, EDGE_WIDTH>>vshift,
> sides);
> }
>
> h= FFMIN(h, s->avctx->height - y);
lgtm, although I would have broken the long lines in a separate patch.
Janne
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel