summaryrefslogtreecommitdiff
path: root/libavfilter/vf_interlace.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-07-09 17:57:49 +0200
committerMartin Storsjö <martin@martin.st>2013-07-12 11:40:56 +0300
commitbec509db4364b9c8b00437939a4197fc12fec3e8 (patch)
treefb434cfcb8c98bfd5c09973cf73841a27c3c58de /libavfilter/vf_interlace.c
parent52ea29867070243385220a223d7512ea7d4ae2d2 (diff)
vf_interlace: better handling of odd video size
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavfilter/vf_interlace.c')
-rwxr-xr-xlibavfilter/vf_interlace.c4
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)