mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-28 20:53:54 +02:00
avfilter/avf_showcwt: add cbrt frequency scale
This commit is contained in:
parent
7f23b72dde
commit
aee8689ba5
@ -30710,6 +30710,7 @@ Set the frequency scale used. Allowed values are:
|
||||
@item mel
|
||||
@item erbs
|
||||
@item sqrt
|
||||
@item cbrt
|
||||
@end table
|
||||
Default value is @code{linear}.
|
||||
|
||||
|
@ -41,6 +41,7 @@ enum FrequencyScale {
|
||||
FSCALE_MEL,
|
||||
FSCALE_ERBS,
|
||||
FSCALE_SQRT,
|
||||
FSCALE_CBRT,
|
||||
NB_FSCALE
|
||||
};
|
||||
|
||||
@ -129,6 +130,7 @@ static const AVOption showcwt_options[] = {
|
||||
{ "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" },
|
||||
{ "cbrt", "cbrt", 0, AV_OPT_TYPE_CONST,{.i64=FSCALE_CBRT}, 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 },
|
||||
@ -247,6 +249,10 @@ static void frequency_band(float *frequency_band,
|
||||
frequency = frequency * frequency;
|
||||
frequency_derivative *= 2.f * sqrtf(frequency);
|
||||
break;
|
||||
case FSCALE_CBRT:
|
||||
frequency = frequency * frequency * frequency;
|
||||
frequency_derivative *= 3.f * powf(frequency, 2.f / 3.f);
|
||||
break;
|
||||
}
|
||||
|
||||
frequency_band[y*2 ] = frequency;
|
||||
@ -690,6 +696,10 @@ static int config_output(AVFilterLink *outlink)
|
||||
minimum_frequency = sqrtf(minimum_frequency);
|
||||
maximum_frequency = sqrtf(maximum_frequency);
|
||||
break;
|
||||
case FSCALE_CBRT:
|
||||
minimum_frequency = cbrtf(minimum_frequency);
|
||||
maximum_frequency = cbrtf(maximum_frequency);
|
||||
break;
|
||||
}
|
||||
|
||||
frequency_band(s->frequency_band,
|
||||
|
Loading…
Reference in New Issue
Block a user