summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2015-07-17 11:23:45 +0000
committerPaul B Mahol <onemda@gmail.com>2015-07-17 11:29:29 +0000
commit297df52f303529fd3c326bc8f398a5b3cbf71c0b (patch)
tree771543456b09743687706da1a4e860382c11b184
parent21436b95dc96e9cb2ae3f583f219349976ec1b7e (diff)
avfilter/af_compand: fix clipping with default options
Decays and attacks where by default set only for first channel which caused poor defaults to be used which produced clipping on any higher channel. Reported-by: lachs0r Signed-off-by: Paul B Mahol <onemda@gmail.com>
-rw-r--r--doc/filters.texi2
-rw-r--r--libavfilter/af_compand.c5
2 files changed, 7 insertions, 0 deletions
diff --git a/doc/filters.texi b/doc/filters.texi
index 518aef8f22..1bef8363b6 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -1462,6 +1462,8 @@ situations, the attack time (response to the audio getting louder) should be
shorter than the decay time, because the human ear is more sensitive to sudden
loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
a typical value for decay is 0.8 seconds.
+If specified number of attacks & decays is lower than number of channels, the last
+set attack/decay will be used for all remaining channels.
@item points
A list of points for the transfer function, specified in dB relative to the
diff --git a/libavfilter/af_compand.c b/libavfilter/af_compand.c
index 55ad98a15d..610787f54e 100644
--- a/libavfilter/af_compand.c
+++ b/libavfilter/af_compand.c
@@ -398,6 +398,11 @@ static int config_output(AVFilterLink *outlink)
return AVERROR(EINVAL);
}
+ for (i = nb_decays; i < channels; i++) {
+ s->channels[i].attack = s->channels[nb_decays - 1].attack;
+ s->channels[i].decay = s->channels[nb_decays - 1].decay;
+ }
+
#define S(x) s->segments[2 * ((x) + 1)]
p = s->points;
for (i = 0, new_nb_items = 0; i < nb_points; i++) {