Handle single frame inputs similar to yadif (e.g., 
https://github.com/FFmpeg/FFmpeg/commit/0f9f24c9cfd291c7ece4d3bad64fdf06d107168a
 and 
https://github.com/FFmpeg/FFmpeg/commit/681e008d06d2241d50abe6316c908a184ddc5942)

Example:
  ffmpeg -r 1 -t 1 -i fate-suite/ffmpeg-synthetic/vsynth1/%02d.pgm  -vf 
idet,showinfo -f null -y /dev/null

Previously:
  Output file is empty, nothing was encoded (check -ss / -t / -frames 
parameters if used)
  [Parsed_idet_0 @ 0x36389d0] Repeated Fields: Neither:     0 Top:     0 
Bottom:     0

After patch:
  [Parsed_showinfo_1 @ 0x1909810] n:0 pts:0 pts_time:0 pos:-1 fmt:gray sar:0/1 
s:352x432 ...
  [Parsed_idet_0 @ 0x18f9bb0] Repeated Fields: Neither:     1 Top:     0 
Bottom:     0

Fate looks good.

Signed-off-by: Neil Birkbeck <neil.birkb...@gmail.com>

---
 libavfilter/vf_idet.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/libavfilter/vf_idet.c b/libavfilter/vf_idet.c
index ed21eea..9a25042 100644
--- a/libavfilter/vf_idet.c
+++ b/libavfilter/vf_idet.c
@@ -241,11 +241,12 @@ static int filter_frame(AVFilterLink *link, AVFrame 
*picref)
     idet->cur  = idet->next;
     idet->next = picref;
 
-    if (!idet->cur)
-        return 0;
+    if (!idet->cur &&
+        !(idet->cur = av_frame_clone(idet->next)))
+        return AVERROR(ENOMEM);
 
     if (!idet->prev)
-        idet->prev = av_frame_clone(idet->cur);
+        return 0;
 
     if (!idet->csp)
         idet->csp = av_pix_fmt_desc_get(link->format);
@@ -284,7 +285,7 @@ static int request_frame(AVFilterLink *link)
         } else if (ret < 0) {
             return ret;
         }
-    } while (!idet->cur);
+    } while (!idet->prev);
 
     return 0;
 }
-- 
2.2.0.rc0.207.ga3a616c

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to