]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/vf_lut2.c
Merge commit 'a2041a6522642859ce64af1c618d6fb90a50d4af'
[ffmpeg] / libavfilter / vf_lut2.c
index 585d121ca35395043a5c005a1cdf92b29331bcf0..66c481e570410f5a0c8355bac529b75fd2ef4ba9 100644 (file)
@@ -304,20 +304,13 @@ static int lut2_config_output(AVFilterLink *outlink)
         av_log(ctx, AV_LOG_ERROR, "inputs must be of same pixel format\n");
         return AVERROR(EINVAL);
     }
-    if (srcx->w                       != srcy->w ||
-        srcx->h                       != srcy->h ||
-        srcx->sample_aspect_ratio.num != srcy->sample_aspect_ratio.num ||
-        srcx->sample_aspect_ratio.den != srcy->sample_aspect_ratio.den) {
+    if (srcx->w != srcy->w || srcx->h != srcy->h) {
         av_log(ctx, AV_LOG_ERROR, "First input link %s parameters "
-               "(size %dx%d, SAR %d:%d) do not match the corresponding "
-               "second input link %s parameters (%dx%d, SAR %d:%d)\n",
+               "(size %dx%d) do not match the corresponding "
+               "second input link %s parameters (size %dx%d)\n",
                ctx->input_pads[0].name, srcx->w, srcx->h,
-               srcx->sample_aspect_ratio.num,
-               srcx->sample_aspect_ratio.den,
                ctx->input_pads[1].name,
-               srcy->w, srcy->h,
-               srcy->sample_aspect_ratio.num,
-               srcy->sample_aspect_ratio.den);
+               srcy->w, srcy->h);
         return AVERROR(EINVAL);
     }
 
@@ -408,18 +401,26 @@ static av_cold int init(AVFilterContext *ctx)
 
 static int tlut2_filter_frame(AVFilterLink *inlink, AVFrame *frame)
 {
-    LUT2Context *s = inlink->dst->priv;
-    AVFilterLink *outlink = inlink->dst->outputs[0];
+    AVFilterContext *ctx = inlink->dst;
+    LUT2Context *s = ctx->priv;
+    AVFilterLink *outlink = ctx->outputs[0];
 
     if (s->prev_frame) {
-        AVFrame *out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-        if (!out) {
-            av_frame_free(&s->prev_frame);
-            s->prev_frame = frame;
-            return AVERROR(ENOMEM);
+        AVFrame *out;
+
+        if (ctx->is_disabled) {
+            out = av_frame_clone(frame);
+        } else {
+            out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
+            if (!out) {
+                av_frame_free(&s->prev_frame);
+                s->prev_frame = frame;
+                return AVERROR(ENOMEM);
+            }
+
+            av_frame_copy_props(out, frame);
+            s->lut2(s, out, frame, s->prev_frame);
         }
-        av_frame_copy_props(out, frame);
-        s->lut2(s, out, frame, s->prev_frame);
         av_frame_free(&s->prev_frame);
         s->prev_frame = frame;
         return ff_filter_frame(outlink, out);
@@ -461,6 +462,7 @@ AVFilter ff_vf_tlut2 = {
     .uninit        = uninit,
     .inputs        = tlut2_inputs,
     .outputs       = tlut2_outputs,
+    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
 };
 
 #endif