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);
--
1.7.2.1
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel