]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/vf_tinterlace.c
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libavfilter / vf_tinterlace.c
index d511d72667e95e87094db525a849e5f420b60a17..5b03b81bf1ac035ef1a8d68522209a90d096a95c 100644 (file)
@@ -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",