diff options
author | Paul B Mahol <onemda@gmail.com> | 2020-11-28 20:43:14 +0100 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2020-11-28 20:57:41 +0100 |
commit | a01b037c908eae2e4ed03a976fc63a0de6cd443b (patch) | |
tree | 55665cf0a70a6a3d589df369432b4fad56014c86 | |
parent | f3891430fc15cc8a1b7a16916030962e0a4d609c (diff) | |
download | ffmpeg-a01b037c908eae2e4ed03a976fc63a0de6cd443b.tar.gz |
avfilter/avf_showfreqs: add group delay data mode
-rw-r--r-- | doc/filters.texi | 1 | ||||
-rw-r--r-- | libavfilter/avf_showfreqs.c | 13 |
2 files changed, 13 insertions, 1 deletions
diff --git a/doc/filters.texi b/doc/filters.texi index 2f64d568a6..b927ddbfbb 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -25230,6 +25230,7 @@ It accepts the following values: @table @samp @item magnitude @item phase +@item delay @end table Default is @code{magnitude}. @end table diff --git a/libavfilter/avf_showfreqs.c b/libavfilter/avf_showfreqs.c index 2ab9d4479f..6f286c03ba 100644 --- a/libavfilter/avf_showfreqs.c +++ b/libavfilter/avf_showfreqs.c @@ -36,7 +36,7 @@ #include "internal.h" #include "window_func.h" -enum DataMode { MAGNITUDE, PHASE, NB_DATA }; +enum DataMode { MAGNITUDE, PHASE, DELAY, NB_DATA }; enum DisplayMode { LINE, BAR, DOT, NB_MODES }; enum ChannelMode { COMBINED, SEPARATE, NB_CMODES }; enum FrequencyScale { FS_LINEAR, FS_LOG, FS_RLOG, NB_FSCALES }; @@ -120,6 +120,7 @@ static const AVOption showfreqs_options[] = { { "data", "set data mode", OFFSET(data_mode), AV_OPT_TYPE_INT, {.i64=MAGNITUDE}, 0, NB_DATA-1, FLAGS, "data" }, { "magnitude", "show magnitude", 0, AV_OPT_TYPE_CONST, {.i64=MAGNITUDE}, 0, 0, FLAGS, "data" }, { "phase", "show phase", 0, AV_OPT_TYPE_CONST, {.i64=PHASE}, 0, 0, FLAGS, "data" }, + { "delay", "show group delay",0, AV_OPT_TYPE_CONST, {.i64=DELAY}, 0, 0, FLAGS, "data" }, { NULL } }; @@ -440,6 +441,16 @@ static int plot_freqs(AVFilterLink *inlink, AVFrame *in) plot_freq(s, ch, a, f, fg, &prev_y, out, outlink); } break; + case DELAY: + plot_freq(s, ch, 0, 0, fg, &prev_y, out, outlink); + + for (f = 1; f < s->nb_freq; f++) { + a = av_clipd((M_PI - P(IM(f, ch) * RE(f-1, ch) - IM(f-1, ch) * RE(f, ch), + RE(f, ch) * RE(f-1, ch) + IM(f, ch) * IM(f-1, ch))) / (2. * M_PI), 0, 1); + + plot_freq(s, ch, a, f, fg, &prev_y, out, outlink); + } + break; } } |