History

avfilter/avf_showcwt: add fm frequency scaler

Paul B Mahol committed 3 years ago

Commit 49719d31 parent 409b29d2 files · +13 −1Browse files

Showing the changes to libavfilter (1 of 2 files). Show all

Unified · Split

libavfilter/avf_showcwt.c+12−1
@@ -45,6 +45,7 @@ enum FrequencyScale { · 44 unmodified lines
45 FSCALE_SQRT,45 FSCALE_SQRT,
46 FSCALE_CBRT,46 FSCALE_CBRT,
47 FSCALE_QDRT,47 FSCALE_QDRT,
48 FSCALE_FM,
48 NB_FSCALE49 NB_FSCALE
49};50};
50 51
@@ -144,6 +145,7 @@ static const AVOption showcwt_options[] = { · 93 unmodified lines
144 { "sqrt", "sqrt", 0, AV_OPT_TYPE_CONST,{.i64=FSCALE_SQRT}, 0, 0, FLAGS, "scale" },145 { "sqrt", "sqrt", 0, AV_OPT_TYPE_CONST,{.i64=FSCALE_SQRT}, 0, 0, FLAGS, "scale" },
145 { "cbrt", "cbrt", 0, AV_OPT_TYPE_CONST,{.i64=FSCALE_CBRT}, 0, 0, FLAGS, "scale" },146 { "cbrt", "cbrt", 0, AV_OPT_TYPE_CONST,{.i64=FSCALE_CBRT}, 0, 0, FLAGS, "scale" },
146 { "qdrt", "qdrt", 0, AV_OPT_TYPE_CONST,{.i64=FSCALE_QDRT}, 0, 0, FLAGS, "scale" },147 { "qdrt", "qdrt", 0, AV_OPT_TYPE_CONST,{.i64=FSCALE_QDRT}, 0, 0, FLAGS, "scale" },
148 { "fm", "fm", 0, AV_OPT_TYPE_CONST,{.i64=FSCALE_FM}, 0, 0, FLAGS, "scale" },
147 { "iscale", "set intensity scale", OFFSET(intensity_scale),AV_OPT_TYPE_INT, {.i64=0}, 0, NB_ISCALE-1, FLAGS, "iscale" },149 { "iscale", "set intensity scale", OFFSET(intensity_scale),AV_OPT_TYPE_INT, {.i64=0}, 0, NB_ISCALE-1, FLAGS, "iscale" },
148 { "linear", "linear", 0, AV_OPT_TYPE_CONST,{.i64=ISCALE_LINEAR}, 0, 0, FLAGS, "iscale" },150 { "linear", "linear", 0, AV_OPT_TYPE_CONST,{.i64=ISCALE_LINEAR}, 0, 0, FLAGS, "iscale" },
149 { "log", "logarithmic", 0, AV_OPT_TYPE_CONST,{.i64=ISCALE_LOG}, 0, 0, FLAGS, "iscale" },151 { "log", "logarithmic", 0, AV_OPT_TYPE_CONST,{.i64=ISCALE_LOG}, 0, 0, FLAGS, "iscale" },
@@ -292,6 +294,10 @@ static float frequency_band(float *frequency_band, · 142 unmodified lines
292 frequency = frequency * frequency * frequency * frequency;294 frequency = frequency * frequency * frequency * frequency;
293 frequency_derivative *= 4.f * powf(frequency, 3.f / 4.f);295 frequency_derivative *= 4.f * powf(frequency, 3.f / 4.f);
294 break;296 break;
297 case FSCALE_FM:
298 frequency = 2.f * powf(frequency, 3.f / 2.f) / 3.f;
299 frequency_derivative *= sqrtf(frequency);
300 break;
295 }301 }
296 302
297 frequency_band[y*2 ] = frequency;303 frequency_band[y*2 ] = frequency;
@@ -788,7 +794,8 @@ static int config_output(AVFilterLink *outlink) · 490 unmodified lines
788 AVFilterContext *ctx = outlink->src;794 AVFilterContext *ctx = outlink->src;
789 AVFilterLink *inlink = ctx->inputs[0];795 AVFilterLink *inlink = ctx->inputs[0];
790 ShowCWTContext *s = ctx->priv;796 ShowCWTContext *s = ctx->priv;
791 float maximum_frequency = fminf(s->maximum_frequency, inlink->sample_rate * 0.5f);797 const float limit_frequency = inlink->sample_rate * 0.5f;
798 float maximum_frequency = fminf(s->maximum_frequency, limit_frequency);
792 float minimum_frequency = s->minimum_frequency;799 float minimum_frequency = s->minimum_frequency;
793 float scale = 1.f, factor;800 float scale = 1.f, factor;
794 int ret;801 int ret;
@@ -847,6 +854,10 @@ static int config_output(AVFilterLink *outlink) · 52 unmodified lines
847 minimum_frequency = powf(minimum_frequency, 0.25f);854 minimum_frequency = powf(minimum_frequency, 0.25f);
848 maximum_frequency = powf(maximum_frequency, 0.25f);855 maximum_frequency = powf(maximum_frequency, 0.25f);
849 break;856 break;
857 case FSCALE_FM:
858 minimum_frequency = powf(9.f * (minimum_frequency * minimum_frequency) / 4.f, 1.f / 3.f);
859 maximum_frequency = powf(9.f * (maximum_frequency * maximum_frequency) / 4.f, 1.f / 3.f);
860 break;
850 }861 }
851 862
852 s->frequency_band = av_calloc(s->frequency_band_count,863 s->frequency_band = av_calloc(s->frequency_band_count,

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t