[FFmpeg-cvslog] avfilter/avf_showfreqs: make minimum amplitude for log scaler configurable
Paul B Mahol
git at videolan.org
Wed Aug 17 23:03:12 EEST 2016
ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Wed Aug 17 21:56:42 2016 +0200| [5ee5f4b13cc4a512d5a6730bc1b4d913c9a9dc11] | committer: Paul B Mahol
avfilter/avf_showfreqs: make minimum amplitude for log scaler configurable
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5ee5f4b13cc4a512d5a6730bc1b4d913c9a9dc11
---
doc/filters.texi | 3 +++
libavfilter/avf_showfreqs.c | 6 +++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/doc/filters.texi b/doc/filters.texi
index 46a3158..cbe95aa 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -16563,6 +16563,9 @@ It accepts the following values:
@end table
Default is @code{combined}.
+ at item minamp
+Set minimum amplitude used in @code{log} amplitude scaler.
+
@end table
@anchor{showspectrum}
diff --git a/libavfilter/avf_showfreqs.c b/libavfilter/avf_showfreqs.c
index 6f9d486..e2a923b 100644
--- a/libavfilter/avf_showfreqs.c
+++ b/libavfilter/avf_showfreqs.c
@@ -18,6 +18,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <float.h>
#include <math.h>
#include "libavcodec/avfft.h"
@@ -53,6 +54,7 @@ typedef struct ShowFreqsContext {
float **avg_data;
float *window_func_lut;
float overlap;
+ float minamp;
int hop_size;
int nb_channels;
int nb_freq;
@@ -122,6 +124,7 @@ static const AVOption showfreqs_options[] = {
{ "cmode", "set channel mode", OFFSET(cmode), AV_OPT_TYPE_INT, {.i64=COMBINED}, 0, NB_CMODES-1, FLAGS, "cmode" },
{ "combined", "show all channels in same window", 0, AV_OPT_TYPE_CONST, {.i64=COMBINED}, 0, 0, FLAGS, "cmode" },
{ "separate", "show each channel in own window", 0, AV_OPT_TYPE_CONST, {.i64=SEPARATE}, 0, 0, FLAGS, "cmode" },
+ { "minamp", "set minimum amplitude", OFFSET(minamp), AV_OPT_TYPE_FLOAT, {.dbl=1e-6}, FLT_MIN, 1e-6, FLAGS },
{ NULL }
};
@@ -285,6 +288,7 @@ static inline void plot_freq(ShowFreqsContext *s, int ch,
AVFrame *out, AVFilterLink *outlink)
{
const int w = s->w;
+ const float min = s->minamp;
const float avg = s->avg_data[ch][f];
const float bsize = get_bsize(s, f);
const int sx = get_sx(s, f);
@@ -299,7 +303,7 @@ static inline void plot_freq(ShowFreqsContext *s, int ch,
a = 1.0 - cbrt(a);
break;
case AS_LOG:
- a = log(av_clipd(a, 1e-6, 1)) / log(1e-6);
+ a = log(av_clipd(a, min, 1)) / log(min);
break;
case AS_LINEAR:
a = 1.0 - a;
More information about the ffmpeg-cvslog
mailing list