| @@ -40,6 +40,7 @@ enum FrequencyScale { · 39 unmodified lines |
| 40 | 40 | FSCALE_BARK, |
| 41 | 41 | FSCALE_MEL, |
| 42 | 42 | FSCALE_ERBS, |
| 43 | + FSCALE_SQRT, |
| 43 | 44 | NB_FSCALE |
| 44 | 45 | }; |
| 45 | 46 | |
| @@ -127,6 +128,7 @@ static const AVOption showcwt_options[] = { · 81 unmodified lines |
| 127 | 128 | { "bark", "bark", 0, AV_OPT_TYPE_CONST,{.i64=FSCALE_BARK}, 0, 0, FLAGS, "scale" }, |
| 128 | 129 | { "mel", "mel", 0, AV_OPT_TYPE_CONST,{.i64=FSCALE_MEL}, 0, 0, FLAGS, "scale" }, |
| 129 | 130 | { "erbs", "erbs", 0, AV_OPT_TYPE_CONST,{.i64=FSCALE_ERBS}, 0, 0, FLAGS, "scale" }, |
| 131 | + { "sqrt", "sqrt", 0, AV_OPT_TYPE_CONST,{.i64=FSCALE_SQRT}, 0, 0, FLAGS, "scale" }, |
| 130 | 132 | { "min", "set minimum frequency", OFFSET(minimum_frequency), AV_OPT_TYPE_FLOAT, {.dbl = 20.}, 1, 2000, FLAGS }, |
| 131 | 133 | { "max", "set maximum frequency", OFFSET(maximum_frequency), AV_OPT_TYPE_FLOAT, {.dbl = 20000.}, 0, 192000, FLAGS }, |
| 132 | 134 | { "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, · 108 unmodified lines |
| 241 | 243 | frequency = 676170.4f / (47.06538f - expf(frequency * 0.08950404f)) - 14678.49f; |
| 242 | 244 | frequency_derivative *= (frequency * frequency + 14990.4 * frequency + 4577850.f) / 160514.f; |
| 243 | 245 | break; |
| 246 | + case FSCALE_SQRT: |
| 247 | + frequency = frequency * frequency; |
| 248 | + frequency_derivative *= 2.f * sqrtf(frequency); |
| 249 | + break; |
| 244 | 250 | } |
| 245 | 251 | |
| 246 | 252 | frequency_band[y*2 ] = frequency; |
| @@ -680,6 +686,10 @@ static int config_output(AVFilterLink *outlink) · 433 unmodified lines |
| 680 | 686 | minimum_frequency = 11.17268f * log(1.f + (46.06538f * minimum_frequency) / (minimum_frequency + 14678.49f)); |
| 681 | 687 | maximum_frequency = 11.17268f * log(1.f + (46.06538f * maximum_frequency) / (maximum_frequency + 14678.49f)); |
| 682 | 688 | break; |
| 689 | + case FSCALE_SQRT: |
| 690 | + minimum_frequency = sqrtf(minimum_frequency); |
| 691 | + maximum_frequency = sqrtf(maximum_frequency); |
| 692 | + break; |
| 683 | 693 | } |
| 684 | 694 | |
| 685 | 695 | frequency_band(s->frequency_band, |