avfilter/vf_pullup: fix gray8
[ffmpeg.git] / libavfilter / af_compand.c
index 24472f7..deaaf44 100644 (file)
@@ -20,7 +20,6 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
  */
 
 /**
@@ -32,8 +31,8 @@
 #include "libavutil/avstring.h"
 #include "libavutil/opt.h"
 #include "libavutil/samplefmt.h"
-#include "avfilter.h"
 #include "audio.h"
+#include "avfilter.h"
 #include "internal.h"
 
 typedef struct ChanParam {
@@ -49,10 +48,10 @@ typedef struct CompandSegment {
 
 typedef struct CompandContext {
     const AVClass *class;
+    int nb_segments;
     char *attacks, *decays, *points;
     CompandSegment *segments;
     ChanParam *channels;
-    int nb_segments;
     double in_min_lin;
     double out_min_lin;
     double curve_dB;
@@ -173,7 +172,7 @@ static int compand_nodelay(AVFilterContext *ctx, AVFrame *frame)
 {
     CompandContext *s    = ctx->priv;
     AVFilterLink *inlink = ctx->inputs[0];
-    const int channels = inlink->channels;
+    const int channels   = inlink->channels;
     const int nb_samples = frame->nb_samples;
     AVFrame *out_frame;
     int chan, i;
@@ -233,8 +232,8 @@ static int compand_delay(AVFilterContext *ctx, AVFrame *frame)
 
     for (chan = 0; chan < channels; chan++) {
         AVFrame *delay_frame = s->delay_frame;
-        const double *src = (double *)frame->extended_data[chan];
-        double *dbuf      = (double *)delay_frame->extended_data[chan];
+        const double *src    = (double *)frame->extended_data[chan];
+        double *dbuf         = (double *)delay_frame->extended_data[chan];
         ChanParam *cp        = &s->channels[chan];
         double *dst;
 
@@ -286,10 +285,11 @@ static int compand_drain(AVFilterLink *outlink)
 {
     AVFilterContext *ctx = outlink->src;
     CompandContext *s    = ctx->priv;
-    const int channels = outlink->channels;
+    const int channels   = outlink->channels;
+    AVFrame *frame       = NULL;
     int chan, i, dindex;
-    AVFrame *frame = NULL;
 
+    /* 2048 is to limit output frame size during drain */
     frame = ff_get_audio_buffer(outlink, FFMIN(2048, s->delay_count));
     if (!frame)
         return AVERROR(ENOMEM);
@@ -305,7 +305,8 @@ static int compand_drain(AVFilterLink *outlink)
 
         dindex = s->delay_index;
         for (i = 0; i < frame->nb_samples; i++) {
-            dst[i] = av_clipd(dbuf[dindex] * get_volume(s, cp->volume), -1, 1);
+            dst[i] = av_clipd(dbuf[dindex] * get_volume(s, cp->volume),
+                    -1, 1);
             dindex = MOD(dindex + 1, s->delay_samples);
         }
     }
@@ -320,10 +321,10 @@ static int config_output(AVFilterLink *outlink)
     AVFilterContext *ctx  = outlink->src;
     CompandContext *s     = ctx->priv;
     const int sample_rate = outlink->sample_rate;
-    double radius         = s->curve_dB * M_LN10 / 20;
-    int nb_attacks, nb_decays, nb_points;
-    char *p, *saveptr = NULL;
+    double radius         = s->curve_dB * M_LN10 / 20.0;
+    char *p, *saveptr     = NULL;
     const int channels    = outlink->channels;
+    int nb_attacks, nb_decays, nb_points;
     int new_nb_items, num;
     int i;
     int err;
@@ -338,8 +339,9 @@ static int config_output(AVFilterLink *outlink)
         return AVERROR(EINVAL);
     }
 
-    if ((nb_attacks > channels) || (nb_decays > channels)) {
-        av_log(ctx, AV_LOG_ERROR, "Number of attacks/decays bigger than number of channels.\n");
+    if (nb_attacks > channels || nb_decays > channels) {
+        av_log(ctx, AV_LOG_ERROR,
+                "Number of attacks/decays bigger than number of channels.\n");
         return AVERROR(EINVAL);
     }