Only draw the actually visible area in vp3_draw_horiz_band.

Fixes a black line in non-swapped, non-mod-16-height Theora videos
when vp3_draw_horiz_band is used.

Originally committed as revision 25073 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Reimar Döffinger 2010-09-08 05:51:31 +00:00
parent 6950cca97f
commit 83f72f138e

View File

@ -1326,9 +1326,7 @@ static void vp3_draw_horiz_band(Vp3DecodeContext *s, int y)
y -= h; y -= h;
if (!s->flipped_image) { if (!s->flipped_image) {
if (y == 0) y = s->avctx->height - y - h;
h -= s->height - s->avctx->height; // account for non-mod16
y = s->height - y - h;
} }
cy = y >> s->chroma_y_shift; cy = y >> s->chroma_y_shift;
@ -1850,7 +1848,7 @@ static int vp3_decode_frame(AVCodecContext *avctx,
int row = (s->height >> (3+(i && s->chroma_y_shift))) - 1; int row = (s->height >> (3+(i && s->chroma_y_shift))) - 1;
apply_loop_filter(s, i, row, row+1); apply_loop_filter(s, i, row, row+1);
} }
vp3_draw_horiz_band(s, s->height); vp3_draw_horiz_band(s, s->avctx->height);
*data_size=sizeof(AVFrame); *data_size=sizeof(AVFrame);
*(AVFrame*)data= s->current_frame; *(AVFrame*)data= s->current_frame;