[FFmpeg-cvslog] avfilter/avf_showcwt: add sqrt frequency scale

Paul B Mahol git at videolan.org
Sun Jul 9 21:47:42 EEST 2023


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Sun Jul  9 19:56:10 2023 +0200| [7f23b72dde9db1a6867e9897b786fba064fe685d] | committer: Paul B Mahol

avfilter/avf_showcwt: add sqrt frequency scale

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7f23b72dde9db1a6867e9897b786fba064fe685d
---

 doc/filters.texi          |  1 +
 libavfilter/avf_showcwt.c | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/doc/filters.texi b/doc/filters.texi
index 54cc5ba820..ab90f2a876 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -30709,6 +30709,7 @@ Set the frequency scale used. Allowed values are:
 @item bark
 @item mel
 @item erbs
+ at item sqrt
 @end table
 Default value is @code{linear}.
 
diff --git a/libavfilter/avf_showcwt.c b/libavfilter/avf_showcwt.c
index 0ee4414ea2..f9bbcb8ab3 100644
--- a/libavfilter/avf_showcwt.c
+++ b/libavfilter/avf_showcwt.c
@@ -40,6 +40,7 @@ enum FrequencyScale {
     FSCALE_BARK,
     FSCALE_MEL,
     FSCALE_ERBS,
+    FSCALE_SQRT,
     NB_FSCALE
 };
 
@@ -127,6 +128,7 @@ static const AVOption showcwt_options[] = {
     {  "bark",    "bark",             0,                       AV_OPT_TYPE_CONST,{.i64=FSCALE_BARK},   0, 0, FLAGS, "scale" },
     {  "mel",     "mel",              0,                       AV_OPT_TYPE_CONST,{.i64=FSCALE_MEL},    0, 0, FLAGS, "scale" },
     {  "erbs",    "erbs",             0,                       AV_OPT_TYPE_CONST,{.i64=FSCALE_ERBS},   0, 0, FLAGS, "scale" },
+    {  "sqrt",    "sqrt",             0,                       AV_OPT_TYPE_CONST,{.i64=FSCALE_SQRT},   0, 0, FLAGS, "scale" },
     { "min",  "set minimum frequency", OFFSET(minimum_frequency), AV_OPT_TYPE_FLOAT, {.dbl = 20.}, 1, 2000, FLAGS },
     { "max",  "set maximum frequency", OFFSET(maximum_frequency), AV_OPT_TYPE_FLOAT, {.dbl = 20000.}, 0, 192000, FLAGS },
     { "logb", "set logarithmic basis", OFFSET(logarithmic_basis), AV_OPT_TYPE_FLOAT, {.dbl = 0.0001}, 0, 1, FLAGS },
@@ -241,6 +243,10 @@ static void frequency_band(float *frequency_band,
             frequency = 676170.4f / (47.06538f - expf(frequency * 0.08950404f)) - 14678.49f;
             frequency_derivative *= (frequency * frequency + 14990.4 * frequency + 4577850.f) / 160514.f;
             break;
+        case FSCALE_SQRT:
+            frequency = frequency * frequency;
+            frequency_derivative *= 2.f * sqrtf(frequency);
+            break;
         }
 
         frequency_band[y*2  ] = frequency;
@@ -680,6 +686,10 @@ static int config_output(AVFilterLink *outlink)
         minimum_frequency = 11.17268f * log(1.f + (46.06538f * minimum_frequency) / (minimum_frequency + 14678.49f));
         maximum_frequency = 11.17268f * log(1.f + (46.06538f * maximum_frequency) / (maximum_frequency + 14678.49f));
         break;
+    case FSCALE_SQRT:
+        minimum_frequency = sqrtf(minimum_frequency);
+        maximum_frequency = sqrtf(maximum_frequency);
+        break;
     }
 
     frequency_band(s->frequency_band,



More information about the ffmpeg-cvslog mailing list