On 07.01.2019 15:31, Dmitry Humeniuk wrote:
Signed-off-by: Dmitry Humeniuk <dhumen...@google.com>
---
  Changelog                            |    1 +
  doc/filters.texi                     |   23 +
  libavfilter/Makefile                 |    1 +
  libavfilter/af_dumpwave.c            |  234 ++++
  libavfilter/allfilters.c             |    1 +
  libavfilter/version.h                |    4 +-
  tests/fate-run.sh                    |    9 +
  tests/fate/filter-audio.mak          |   12 +
  tests/ref/fate/filter-dumpwave       | 1800 ++++++++++++++++++++++++++
  tests/ref/fate/filter-dumpwave-24bit | 1800 ++++++++++++++++++++++++++
  tests/ref/fate/filter-dumpwave-fltp  | 1800 ++++++++++++++++++++++++++
  11 files changed, 5683 insertions(+), 2 deletions(-)
  create mode 100644 libavfilter/af_dumpwave.c
  create mode 100644 tests/ref/fate/filter-dumpwave
  create mode 100644 tests/ref/fate/filter-dumpwave-24bit
  create mode 100644 tests/ref/fate/filter-dumpwave-fltp

diff --git a/Changelog b/Changelog
index f135fa56b6..1eb337796b 100644
--- a/Changelog
+++ b/Changelog
@@ -13,6 +13,7 @@ version <next>:
  - GIF parser
  - vividas demuxer
  - hymt decoder
+- dumpwave filter
version 4.1:
diff --git a/doc/filters.texi b/doc/filters.texi
index 98858c5356..66c2961fd8 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -2912,6 +2912,29 @@ Set window length in seconds used to split audio into 
segments of equal length.
  Default is 3 seconds.
  @end table
+@section dumpwave
+Dump RMS envelope to a file.
+Convert samples to decibels and calculates RMS (Root-Mean-Square) audio power 
in 0 to 1.0 floats.
+
+@table @option
+@item w, width
+Number of data values.
+The default value is @var{1800}
+
+@item n, nb_samples
+Samples count per value per channel, default 128
+
+@item f, file
+Path to a file ``-'' is a shorthand
+for standard output.
+@end table
+
+For example, to generate RMS envelope for 44.1 kHz 6 seconds length audio
+with dimensions @var{1800x140}, samples count @code{44100*6/1800=147} and 
store it to @var{/tmp/out.csv}, you might use:
+@example
+dumpwave=w=1800:n=147:f=/tmp/out.csv
+@end example
+
  @section dynaudnorm
  Dynamic Audio Normalizer.
[...]

I appreciate the completeness of the proposed patch (documentation, tests, version bump) but it seems that the functionality overlaps with existing filters. Besides the different output format I think the same can be achieved by using a command like:

ffmpeg -i input.wav -f null -filter:a "asetnsamples=147,astats=metadata=on,ametadata=print:key=lavfi.astats.Overall.RMS_peak:file=/tmp/out.dat" /dev/null

So if it is only about the output format, it would be better to add CSV support to the ametadata filter, IMHO. That way other filters with frame metadata output will also gain CSV support.

Best regards,
Tobias

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to