]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/vf_tinterlace.c
lavfi: rename vf_setpts.c to f_setpts.c
[ffmpeg] / libavfilter / vf_tinterlace.c
index 402eecacfbea0869a7355ea123464855d96c58db..5b03b81bf1ac035ef1a8d68522209a90d096a95c 100644 (file)
@@ -155,7 +155,7 @@ static int config_out_props(AVFilterLink *outlink)
                    tinterlace->black_linesize[i] * h);
         }
     }
-    av_log(ctx, AV_LOG_INFO, "mode:%s h:%d -> h:%d\n",
+    av_log(ctx, AV_LOG_VERBOSE, "mode:%s h:%d -> h:%d\n",
            tinterlace_mode_str[tinterlace->mode], inlink->h, outlink->h);
 
     return 0;
@@ -198,7 +198,7 @@ void copy_picture_field(uint8_t *dst[4], int dst_linesize[4],
     }
 }
 
-static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref)
+static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref)
 {
     AVFilterContext *ctx = inlink->dst;
     TInterlaceContext *tinterlace = ctx->priv;
@@ -206,9 +206,10 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref)
     avfilter_unref_buffer(tinterlace->cur);
     tinterlace->cur  = tinterlace->next;
     tinterlace->next = picref;
+    return 0;
 }
 
-static void end_frame(AVFilterLink *inlink)
+static int end_frame(AVFilterLink *inlink)
 {
     AVFilterContext *ctx = inlink->dst;
     AVFilterLink *outlink = ctx->outputs[0];
@@ -220,7 +221,7 @@ static void end_frame(AVFilterLink *inlink)
 
     /* we need at least two frames */
     if (!tinterlace->cur)
-        return;
+        return 0;
 
     switch (tinterlace->mode) {
     case MODE_MERGE: /* move the odd frame into the upper field of the new image, even into
@@ -293,7 +294,7 @@ static void end_frame(AVFilterLink *inlink)
         break;
     case MODE_INTERLACEX2: /* re-interlace preserving image height, double frame rate */
         /* output current frame first */
-        out = avfilter_ref_buffer(cur, AV_PERM_READ);
+        out = avfilter_ref_buffer(cur, ~AV_PERM_WRITE);
         out->video->interlaced = 1;
 
         ff_start_frame(outlink, out);
@@ -324,6 +325,8 @@ static void end_frame(AVFilterLink *inlink)
     ff_end_frame(outlink);
 
     tinterlace->frame++;
+
+    return 0;
 }
 
 static int poll_frame(AVFilterLink *outlink)
@@ -359,7 +362,7 @@ static int request_frame(AVFilterLink *outlink)
     return 0;
 }
 
-static void null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { }
+static int null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { return 0; }
 
 AVFilter avfilter_vf_tinterlace = {
     .name          = "tinterlace",