Browse code

avfilter/showcqt: make minimum timeclamp option lower

high basefreq does not require high timeclamp

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>

Muhammad Faiz authored on 2017/01/30 07:41:49
Showing 2 changed files
... ...
@@ -17029,7 +17029,7 @@ Specify the transform timeclamp. At low frequency, there is trade-off between
17029 17029
 accuracy in time domain and frequency domain. If timeclamp is lower,
17030 17030
 event in time domain is represented more accurately (such as fast bass drum),
17031 17031
 otherwise event in frequency domain is represented more accurately
17032
-(such as bass guitar). Acceptable range is @code{[0.1, 1]}. Default value is @code{0.17}.
17032
+(such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
17033 17033
 
17034 17034
 @item basefreq
17035 17035
 Specify the transform base frequency. Default value is @code{20.01523126408007475},
... ...
@@ -76,8 +76,8 @@ static const AVOption showcqt_options[] = {
76 76
     { "bar_g",    "set bargraph gamma", OFFSET(bar_g),      AV_OPT_TYPE_FLOAT, { .dbl = 1.0 },            1.0, 7.0,      FLAGS },
77 77
     { "gamma2",   "set bargraph gamma", OFFSET(bar_g),      AV_OPT_TYPE_FLOAT, { .dbl = 1.0 },            1.0, 7.0,      FLAGS },
78 78
     { "bar_t",  "set bar transparency", OFFSET(bar_t),      AV_OPT_TYPE_FLOAT, { .dbl = 1.0 },            0.0, 1.0,      FLAGS },
79
-    { "timeclamp",     "set timeclamp", OFFSET(timeclamp), AV_OPT_TYPE_DOUBLE, { .dbl = 0.17 },           0.1, 1.0,      FLAGS },
80
-    { "tc",            "set timeclamp", OFFSET(timeclamp), AV_OPT_TYPE_DOUBLE, { .dbl = 0.17 },           0.1, 1.0,      FLAGS },
79
+    { "timeclamp",     "set timeclamp", OFFSET(timeclamp), AV_OPT_TYPE_DOUBLE, { .dbl = 0.17 },         0.002, 1.0,      FLAGS },
80
+    { "tc",            "set timeclamp", OFFSET(timeclamp), AV_OPT_TYPE_DOUBLE, { .dbl = 0.17 },         0.002, 1.0,      FLAGS },
81 81
     { "basefreq", "set base frequency", OFFSET(basefreq),  AV_OPT_TYPE_DOUBLE, { .dbl = BASEFREQ },      10.0, 100000.0, FLAGS },
82 82
     { "endfreq",   "set end frequency", OFFSET(endfreq),   AV_OPT_TYPE_DOUBLE, { .dbl = ENDFREQ },       10.0, 100000.0, FLAGS },
83 83
     { "coeffclamp",   "set coeffclamp", OFFSET(coeffclamp), AV_OPT_TYPE_FLOAT, { .dbl = 1.0 },            0.1, 10.0,     FLAGS },
... ...
@@ -1366,7 +1366,7 @@ static int config_output(AVFilterLink *outlink)
1366 1366
     if ((ret = init_volume(s)) < 0)
1367 1367
         return ret;
1368 1368
 
1369
-    s->fft_bits = ceil(log2(inlink->sample_rate * s->timeclamp));
1369
+    s->fft_bits = FFMAX(ceil(log2(inlink->sample_rate * s->timeclamp)), 4);
1370 1370
     s->fft_len = 1 << s->fft_bits;
1371 1371
     av_log(ctx, AV_LOG_INFO, "fft_len = %d, cqt_len = %d.\n", s->fft_len, s->cqt_len);
1372 1372