]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/avf_aphasemeter.c
swscale: Add swscale input support for Y210LE
[ffmpeg] / libavfilter / avf_aphasemeter.c
index 8cdee9464c46d9ca2870cf553222339bbddb9a20..be0b2fb70f5a7fd5e038be7d744501392d867eb8 100644 (file)
@@ -106,7 +106,7 @@ static int config_input(AVFilterLink *inlink)
     int nb_samples;
 
     if (s->do_video) {
-        nb_samples = FFMAX(1024, ((double)inlink->sample_rate / av_q2d(s->frame_rate)) + 0.5);
+        nb_samples = FFMAX(1, av_rescale(inlink->sample_rate, s->frame_rate.den, s->frame_rate.num));
         inlink->partial_buf_size =
         inlink->min_samples =
         inlink->max_samples = nb_samples;
@@ -213,8 +213,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
     }
 
     if (s->do_video) {
+        AVFrame *clone;
+
         s->out->pts = in->pts;
-        ff_filter_frame(outlink, av_frame_clone(s->out));
+        clone = av_frame_clone(s->out);
+        if (!clone)
+            return AVERROR(ENOMEM);
+        ff_filter_frame(outlink, clone);
     }
     return ff_filter_frame(aoutlink, in);
 }
@@ -233,6 +238,7 @@ static av_cold int init(AVFilterContext *ctx)
 {
     AudioPhaseMeterContext *s = ctx->priv;
     AVFilterPad pad;
+    int ret;
 
     pad = (AVFilterPad){
         .name         = av_strdup("out0"),
@@ -240,7 +246,11 @@ static av_cold int init(AVFilterContext *ctx)
     };
     if (!pad.name)
         return AVERROR(ENOMEM);
-    ff_insert_outpad(ctx, 0, &pad);
+    ret = ff_insert_outpad(ctx, 0, &pad);
+    if (ret < 0) {
+        av_freep(&pad.name);
+        return ret;
+    }
 
     if (s->do_video) {
         pad = (AVFilterPad){
@@ -250,7 +260,11 @@ static av_cold int init(AVFilterContext *ctx)
         };
         if (!pad.name)
             return AVERROR(ENOMEM);
-        ff_insert_outpad(ctx, 1, &pad);
+        ret = ff_insert_outpad(ctx, 1, &pad);
+        if (ret < 0) {
+            av_freep(&pad.name);
+            return ret;
+        }
     }
 
     return 0;