]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/vf_idet.c
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libavfilter / vf_idet.c
index d192be72f3af70ec48a5ef47e04bc411d1dc7337..938f4a0d524d0ce44d389f94271e3fbb981546f0 100644 (file)
@@ -169,7 +169,7 @@ static void filter(AVFilterContext *ctx)
     av_log(ctx, AV_LOG_DEBUG, "Single frame:%s, Multi frame:%s\n", type2str(type), type2str(idet->last_type));
 }
 
-static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref)
+static int start_frame(AVFilterLink *link, AVFilterBufferRef *picref)
 {
     AVFilterContext *ctx = link->dst;
     IDETContext *idet = ctx->priv;
@@ -181,21 +181,21 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref)
     idet->next = picref;
 
     if (!idet->cur)
-        return;
+        return 0;
 
     if (!idet->prev)
-        idet->prev = avfilter_ref_buffer(idet->cur, AV_PERM_READ);
+        idet->prev = avfilter_ref_buffer(idet->cur, ~0);
 
-    ff_start_frame(ctx->outputs[0], avfilter_ref_buffer(idet->cur, AV_PERM_READ));
+    return ff_start_frame(ctx->outputs[0], avfilter_ref_buffer(idet->cur, ~0));
 }
 
-static void end_frame(AVFilterLink *link)
+static int end_frame(AVFilterLink *link)
 {
     AVFilterContext *ctx = link->dst;
     IDETContext *idet = ctx->priv;
 
     if (!idet->cur)
-        return;
+        return 0;
 
     if (!idet->csp)
         idet->csp = &av_pix_fmt_descriptors[link->format];
@@ -205,7 +205,7 @@ static void end_frame(AVFilterLink *link)
     filter(ctx);
 
     ff_draw_slice(ctx->outputs[0], 0, link->h, 1);
-    ff_end_frame(ctx->outputs[0]);
+    return ff_end_frame(ctx->outputs[0]);
 }
 
 static int request_frame(AVFilterLink *link)
@@ -311,7 +311,7 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
     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_idet = {
     .name          = "idet",
@@ -327,11 +327,12 @@ AVFilter avfilter_vf_idet = {
                                           .start_frame      = start_frame,
                                           .draw_slice       = null_draw_slice,
                                           .end_frame        = end_frame,
-                                          .rej_perms        = AV_PERM_REUSE2, },
+                                          .min_perms        = AV_PERM_PRESERVE },
                                         { .name = NULL}},
 
     .outputs   = (const AVFilterPad[]) {{ .name       = "default",
                                           .type             = AVMEDIA_TYPE_VIDEO,
+                                          .rej_perms        = AV_PERM_WRITE,
                                           .poll_frame       = poll_frame,
                                           .request_frame    = request_frame, },
                                         { .name = NULL}},