diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-07-09 17:57:49 +0200 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2013-07-12 11:40:56 +0300 |
commit | bec509db4364b9c8b00437939a4197fc12fec3e8 (patch) | |
tree | fb434cfcb8c98bfd5c09973cf73841a27c3c58de | |
parent | 52ea29867070243385220a223d7512ea7d4ae2d2 (diff) | |
download | ffmpeg-bec509db4364b9c8b00437939a4197fc12fec3e8.tar.gz |
vf_interlace: better handling of odd video size
Signed-off-by: Martin Storsjö <martin@martin.st>
-rwxr-xr-x | libavfilter/vf_interlace.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libavfilter/vf_interlace.c b/libavfilter/vf_interlace.c index ff54896be0..d65473967f 100755 --- a/libavfilter/vf_interlace.c +++ b/libavfilter/vf_interlace.c @@ -126,14 +126,14 @@ static void copy_picture_field(AVFrame *src_frame, AVFrame *dst_frame, int plane, i, j; for (plane = 0; plane < desc->nb_components; plane++) { - int lines = (plane == 1 || plane == 2) ? inlink->h >> vsub : inlink->h; + int lines = (plane == 1 || plane == 2) ? -(-inlink->h) >> vsub : inlink->h; int linesize = av_image_get_linesize(inlink->format, inlink->w, plane); uint8_t *dstp = dst_frame->data[plane]; const uint8_t *srcp = src_frame->data[plane]; av_assert0(linesize >= 0); - lines /= 2; + lines = (lines + (field_type == FIELD_UPPER)) / 2; if (field_type == FIELD_LOWER) srcp += src_frame->linesize[plane]; if (field_type == FIELD_LOWER) |