avfilter/af_afir: kill useless code which increases latency for no reason
authorPaul B Mahol <onemda@gmail.com>
Fri, 9 Nov 2018 09:40:16 +0000 (10:40 +0100)
committerPaul B Mahol <onemda@gmail.com>
Fri, 9 Nov 2018 09:40:16 +0000 (10:40 +0100)
libavfilter/af_afir.c
libavfilter/af_afir.h

index f12049f..efdd6bb 100644 (file)
@@ -120,16 +120,13 @@ static int fir_frame(AudioFIRContext *s, AVFrame *in, AVFilterLink *outlink)
 {
     AVFilterContext *ctx = outlink->src;
     AVFrame *out = NULL;
-    int ret;
 
     s->nb_samples = in->nb_samples;
 
-    if (!s->want_skip) {
-        out = ff_get_audio_buffer(outlink, s->nb_samples);
-        if (!out) {
-            av_frame_free(&in);
-            return AVERROR(ENOMEM);
-        }
+    out = ff_get_audio_buffer(outlink, s->nb_samples);
+    if (!out) {
+        av_frame_free(&in);
+        return AVERROR(ENOMEM);
     }
 
     if (s->pts == AV_NOPTS_VALUE)
@@ -139,11 +136,9 @@ static int fir_frame(AudioFIRContext *s, AVFrame *in, AVFilterLink *outlink)
 
     s->part_index = (s->part_index + 1) % s->nb_partitions;
 
-    if (!s->want_skip) {
-        out->pts = s->pts;
-        if (s->pts != AV_NOPTS_VALUE)
-            s->pts += av_rescale_q(out->nb_samples, (AVRational){1, outlink->sample_rate}, outlink->time_base);
-    }
+    out->pts = s->pts;
+    if (s->pts != AV_NOPTS_VALUE)
+        s->pts += av_rescale_q(out->nb_samples, (AVRational){1, outlink->sample_rate}, outlink->time_base);
 
     s->index++;
     if (s->index == 3)
@@ -152,14 +147,7 @@ static int fir_frame(AudioFIRContext *s, AVFrame *in, AVFilterLink *outlink)
     av_frame_free(&in);
     s->in[0] = NULL;
 
-    if (s->want_skip == 1) {
-        s->want_skip = 0;
-        ret = 0;
-    } else {
-        ret = ff_filter_frame(outlink, out);
-    }
-
-    return ret;
+    return ff_filter_frame(outlink, out);
 }
 
 static void drawtext(AVFrame *pic, int x, int y, const char *txt, uint32_t color)
@@ -496,16 +484,7 @@ static int activate(AVFilterContext *ctx)
             return ret;
     }
 
-    if (s->need_padding) {
-        in = ff_get_audio_buffer(outlink, s->part_size);
-        if (!in)
-            return AVERROR(ENOMEM);
-        s->need_padding = 0;
-        ret = 1;
-    } else {
-        ret = ff_inlink_consume_samples(ctx->inputs[0], s->part_size, s->part_size, &in);
-    }
-
+    ret = ff_inlink_consume_samples(ctx->inputs[0], s->part_size, s->part_size, &in);
     if (ret > 0)
         ret = fir_frame(s, in, outlink);
 
@@ -626,8 +605,6 @@ static int config_output(AVFilterLink *outlink)
 
     s->nb_channels = outlink->channels;
     s->nb_coef_channels = ctx->inputs[1]->channels;
-    s->want_skip = 1;
-    s->need_padding = 1;
     s->pts = AV_NOPTS_VALUE;
 
     return 0;
index f6727ed..13f7c98 100644 (file)
@@ -66,8 +66,6 @@ typedef struct AudioFIRContext {
     int nb_coef_channels;
     int one2many;
     int nb_samples;
-    int want_skip;
-    int need_padding;
 
     RDFTContext **rdft, **irdft;
     float **sum;