[FFmpeg-cvslog] lavfi/telecine: Mark telecined frames as interlaced.

Carl Eugen Hoyos git at videolan.org
Sat Apr 11 14:49:44 EEST 2020


ffmpeg | branch: master | Carl Eugen Hoyos <ceffmpeg at gmail.com> | Sun Apr  5 01:00:44 2020 +0200| [dbc5c0c1c8b205b7f2af6c00177d99d5f44e9207] | committer: Carl Eugen Hoyos

lavfi/telecine: Mark telecined frames as interlaced.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=dbc5c0c1c8b205b7f2af6c00177d99d5f44e9207
---

 libavfilter/vf_telecine.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libavfilter/vf_telecine.c b/libavfilter/vf_telecine.c
index 62599a7a3a..ff8151dfc9 100644
--- a/libavfilter/vf_telecine.c
+++ b/libavfilter/vf_telecine.c
@@ -207,6 +207,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpicref)
                                 s->stride[i],
                                 (s->planeheight[i] - !s->first_field + 1) / 2);
         }
+        s->frame[nout]->interlaced_frame = 1;
+        s->frame[nout]->top_field_first  = !s->first_field;
         nout++;
         len--;
         s->occupied = 0;
@@ -220,6 +222,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpicref)
                                 inpicref->data[i], inpicref->linesize[i],
                                 s->stride[i],
                                 s->planeheight[i]);
+        s->frame[nout]->interlaced_frame = inpicref->interlaced_frame;
+        s->frame[nout]->top_field_first  = inpicref->top_field_first;
         nout++;
         len -= 2;
     }
@@ -236,6 +240,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpicref)
 
     for (i = 0; i < nout; i++) {
         AVFrame *frame = av_frame_clone(s->frame[i]);
+        int interlaced = frame->interlaced_frame;
+        int tff        = frame->top_field_first;
 
         if (!frame) {
             av_frame_free(&inpicref);
@@ -243,6 +249,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpicref)
         }
 
         av_frame_copy_props(frame, inpicref);
+        frame->interlaced_frame = interlaced;
+        frame->top_field_first  = tff;
         frame->pts = ((s->start_time == AV_NOPTS_VALUE) ? 0 : s->start_time) +
                      av_rescale(outlink->frame_count_in, s->ts_unit.num,
                                 s->ts_unit.den);



More information about the ffmpeg-cvslog mailing list