Signed-off-by: Benjamin Steffes <benjaminst...@gmail.com> --- libavfilter/vf_detelecine.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-)
diff --git a/libavfilter/vf_detelecine.c b/libavfilter/vf_detelecine.c index 6fd9aad..f5ae350 100644 --- a/libavfilter/vf_detelecine.c +++ b/libavfilter/vf_detelecine.c @@ -195,21 +195,15 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpicref) s->nskip_fields -= 2; return 0; } else if (s->nskip_fields >= 1) { - if (s->occupied) { - s->occupied = 0; - s->nskip_fields--; - } - else { - for (i = 0; i < s->nb_planes; i++) { - av_image_copy_plane(s->temp->data[i], s->temp->linesize[i], - inpicref->data[i], inpicref->linesize[i], - s->stride[i], - s->planeheight[i]); - } - s->occupied = 1; - s->nskip_fields--; - return 0; + for (i = 0; i < s->nb_planes; i++) { + av_image_copy_plane(s->temp->data[i], s->temp->linesize[i], + inpicref->data[i], inpicref->linesize[i], + s->stride[i], + s->planeheight[i]); } + s->occupied = 1; + s->nskip_fields--; + return 0; } if (s->nskip_fields == 0) { @@ -243,15 +237,19 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpicref) s->stride[i], (s->planeheight[i] - !s->first_field + 1) / 2); } - len -= 2; - for (i = 0; i < s->nb_planes; i++) { - av_image_copy_plane(s->temp->data[i], s->temp->linesize[i], - inpicref->data[i], inpicref->linesize[i], - s->stride[i], - s->planeheight[i]); + + s->occupied = 0; + if (len <= 2) { + for (i = 0; i < s->nb_planes; i++) { + av_image_copy_plane(s->temp->data[i], s->temp->linesize[i], + inpicref->data[i], inpicref->linesize[i], + s->stride[i], + s->planeheight[i]); + } + s->occupied = 1; } - s->occupied = 1; out = 1; + len = (len >= 3) ? len - 3 : 0; } else { if (len >= 2) { // output THIS image as-is -- 2.5.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel