1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-02 03:06:28 +02:00
Commit Graph

53 Commits

Author SHA1 Message Date
Paul B Mahol
966fc3c070 avfilter/af_astats: add entropy stat 2021-09-11 10:54:20 +02:00
Paul B Mahol
5b258c2770 avfilter/af_astats: remove invalid 5x factor in window size calculation
Also allow smaller window sizes, and change histogram for noise
floor calculation to uint64_t type.
2021-08-21 22:05:08 +02:00
Andreas Rheinhardt
8be701d9f7 avfilter/avfilter: Add numbers of (in|out)pads directly to AVFilter
Up until now, an AVFilter's lists of input and output AVFilterPads
were terminated by a sentinel and the only way to get the length
of these lists was by using avfilter_pad_count(). This has two
drawbacks: first, sizeof(AVFilterPad) is not negligible
(i.e. 64B on 64bit systems); second, getting the size involves
a function call instead of just reading the data.

This commit therefore changes this. The sentinels are removed and new
private fields nb_inputs and nb_outputs are added to AVFilter that
contain the number of elements of the respective AVFilterPad array.

Given that AVFilter.(in|out)puts are the only arrays of zero-terminated
AVFilterPads an API user has access to (AVFilterContext.(in|out)put_pads
are not zero-terminated and they already have a size field) the argument
to avfilter_pad_count() is always one of these lists, so it just has to
find the filter the list belongs to and read said number. This is slower
than before, but a replacement function that just reads the internal numbers
that users are expected to switch to will be added soon; and furthermore,
avfilter_pad_count() is probably never called in hot loops anyway.

This saves about 49KiB from the binary; notice that these sentinels are
not in .bss despite being zeroed: they are in .data.rel.ro due to the
non-sentinels.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-08-20 12:53:58 +02:00
Andreas Rheinhardt
1b20853fb3 avfilter/internal: Factor out executing a filter's execute_func
The current way of doing it involves writing the ctx parameter twice.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-08-15 21:33:25 +02:00
Andreas Rheinhardt
18ec426a86 avfilter/formats: Factor common function combinations out
Several combinations of functions happen quite often in query_format
functions; e.g. ff_set_common_formats(ctx, ff_make_format_list(sample_fmts))
is very common. This commit therefore adds functions that are equivalent
to commonly used function combinations in order to reduce code
duplication.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-08-13 17:36:22 +02:00
Tobias Rapp
ca56299fb3 avfilter/af_astats: Only print header lines when values are to be printed
Avoids empty "Channel" or "Overall" header lines added to log output
when measurement is restricted to one scope using
"measure_perchannel=none" or "measure_overall=none".

Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
2021-07-14 10:31:33 +02:00
Andreas Rheinhardt
a04ad248a0 avfilter: Constify all AVFilters
This is possible now that the next-API is gone.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2021-04-27 11:48:05 -03:00
Marton Balint
c8e1e56509 avfilter/af_astats: fix possible crash because of undefined float to integer rounding
Fixes ticket #9049.

Signed-off-by: Marton Balint <cus@passwd.hu>
2021-01-23 19:54:14 +01:00
Paul B Mahol
89c9c42c5b avfilter/af_astats: clip input value to prevent overflow 2021-01-04 11:14:50 +01:00
Paul B Mahol
24db9372eb avfilter/af_astats: add noise floor count stat 2020-04-17 13:28:01 +02:00
Paul B Mahol
715da29501 avfilter/af_astats: add slice threading support 2020-04-17 13:26:44 +02:00
Paul B Mahol
87b4fb65a8 avfilter/af_astats: measure noise floor 2020-04-17 13:26:30 +02:00
Paul B Mahol
bd6942b4c0 avfilter/af_astats: fix calculations involving last sample 2019-05-12 17:12:06 +02:00
Paul B Mahol
2a4a364f6a avfilter/af_astats: fix initial values of variables 2019-05-12 17:12:06 +02:00
Matthias Troffaes
90b21ae5b5 avfilter/af_astats: fix msvc compile error
MSVC requires an explicit cast from void * to void when applying the
ternary conditional operator to switch between methods that return
void.
2019-04-29 11:08:49 +02:00
Paul B Mahol
1e01f66822 avfilter/af_astats: count number of NaNs/Infs/denormals for floating-point audio too 2019-04-26 12:14:10 +02:00
Marton Balint
6af67dcc35 avfilter/af_astats: add support for optimized min/max/peak calculation
Signed-off-by: Marton Balint <cus@passwd.hu>
2019-03-21 00:39:57 +01:00
Marton Balint
5cc4b79b29 avfilter/af_astats: rework sample loops
The channel loop is now the outer loop for both planar and interleaved. This is
needed by the next patch, and the speed difference is negligable if any.

Signed-off-by: Marton Balint <cus@passwd.hu>
2019-03-21 00:39:57 +01:00
Marton Balint
235228ea50 avfilter/af_astats: factorize sample loops
Signed-off-by: Marton Balint <cus@passwd.hu>
2019-03-21 00:39:57 +01:00
Marton Balint
233fdd84c2 avfilter/af_astats: fix identation
Signed-off-by: Marton Balint <cus@passwd.hu>
2019-03-21 00:39:57 +01:00
Marton Balint
e85f37d51e avfilter/af_astats: add support for selecting measured statistics
set_metadata with many entries is not very efficient, and with small audio
frames the performance loss is noticable. Also with this very simple
calculations (like peak) can be even further optimized.

Unfoturnately there are some small differences in metadata and av_log info
output, so factorizing calculations and output might not worth the hassle.

Signed-off-by: Marton Balint <cus@passwd.hu>
2019-03-21 00:39:57 +01:00
Paul B Mahol
c4774c5474 avfilter/af_astats: count zero crossings 2018-09-17 12:12:54 +02:00
Paul B Mahol
12791ec5b0 avfilter/af_astats: measure dynamic range
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-07-19 21:07:45 +02:00
Paul B Mahol
a17fcd8e04 avfilter/af_astats: do not overwrite already set values when doing reset
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-07-19 20:11:43 +02:00
Paul B Mahol
ed93ed5ee3 avfilter: don't anonymously typedef structs
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-05-13 11:39:28 +02:00
Paul B Mahol
e312ed0504 avfilter/af_astats: add RMS difference too
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-05-12 18:14:45 +02:00
Muhammad Faiz
6af050d7d0 avfilter: do not use AVFrame accessor
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-04-23 14:40:30 +07:00
Paul B Mahol
703ae350c2 avfilter/af_astats: fix flt(p) support 2016-08-18 15:30:05 +02:00
Paul B Mahol
81f7d07608 avfilter/af_astats: add support for s64(p) sample format 2016-08-18 15:30:05 +02:00
Paul B Mahol
4f226714f5 avfilter/af_astats: add support for other sample formats 2016-08-15 22:01:16 +02:00
Paul B Mahol
4be8ab70a6 avfilter/af_astats: extend bitdepth calculation 2016-08-03 20:32:43 +02:00
Paul B Mahol
2a7f056d88 avfilter/af_astats: do not clear previous sample value
Should help when using reset=1 and metadata=1

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-02-26 11:12:45 +01:00
Paul B Mahol
0d65a7d033 avfilter/af_astats: clear all stats
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-02-25 00:00:25 +01:00
Paul B Mahol
c09248aecd avfilter/af_astats: reset stats prior not after filtering
This way stats printed at uninit are also useful.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-02-24 22:32:26 +01:00
Ganesh Ajjanagadde
ac6b7c47cc avfilter/af_astats: replace FFABS with fabs 2015-10-13 09:34:39 +02:00
Paul B Mahol
494b792441 avfilter: use ff_all_channel_counts() instead of ff_all_channel_layouts()
Fixes playback of some files with ffplay.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-09-12 01:43:06 +00:00
Clément Bœsch
816cfd00cb avfilter/astats: use AV_OPT_TYPE_BOOL for metadata option 2015-09-08 23:08:20 +02:00
James Almer
6de5b6cd86 avfilter/af_astats: use UINT64_C instead of the LLU suffix
Should fix compilation with vs2012

Signed-off-by: James Almer <jamrial@gmail.com>
2015-07-20 00:05:20 -03:00
Paul B Mahol
3b365dda5c avfilter/af_astats: measure minimal and mean difference between two consecutive samples
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-17 09:30:03 +00:00
Paul B Mahol
51925daafd avfilter/af_astats: make sure p->last is actually always set when measuring max difference
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-15 19:24:37 +00:00
Paul B Mahol
59a9998908 avfilter/af_astats: also measure maximal difference between two consecutive samples
While here also mention bit depth in documentation.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-15 19:09:57 +00:00
Paul B Mahol
61641627b8 avfilter/af_astats: calculate audio bit-depth
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-15 13:26:43 +00:00
Paul B Mahol
c0d676f977 avfilter/af_astats: implement recalculation of stats after each X frames
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-03 16:34:28 +00:00
Paul B Mahol
d3836b603e avfilter/af_astats: export metadata
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-03 16:34:28 +00:00
Paul B Mahol
a0854c084e avfilter: handle error in query_formats() in bunch of filters
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-04-08 13:05:06 +00:00
Paul B Mahol
0c49cff117 avfilter/af_astats: redo zero channel handling
Suggested-by: Nicolas George
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-03-08 11:06:45 +00:00
Martin Vignali
65ba90eac6 avfilter/af_astats: Avoid Zero division in print part. 2015-03-08 08:47:27 +00:00
Michael Niedermayer
325f6e0a97 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  lavfi: do not export the filters from shared objects

Conflicts:
	libavfilter/af_amix.c
	libavfilter/af_anull.c
	libavfilter/asrc_anullsrc.c
	libavfilter/f_select.c
	libavfilter/f_settb.c
	libavfilter/split.c
	libavfilter/src_movie.c
	libavfilter/vf_aspect.c
	libavfilter/vf_blackframe.c
	libavfilter/vf_colorbalance.c
	libavfilter/vf_copy.c
	libavfilter/vf_crop.c
	libavfilter/vf_cropdetect.c
	libavfilter/vf_drawbox.c
	libavfilter/vf_format.c
	libavfilter/vf_framestep.c
	libavfilter/vf_frei0r.c
	libavfilter/vf_hflip.c
	libavfilter/vf_libopencv.c
	libavfilter/vf_lut.c
	libavfilter/vf_null.c
	libavfilter/vf_overlay.c
	libavfilter/vf_scale.c
	libavfilter/vf_transpose.c
	libavfilter/vf_unsharp.c
	libavfilter/vf_vflip.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-29 11:58:11 +01:00
Paul B Mahol
b211607b5c avfilter: various cosmetics
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2013-09-12 14:01:43 +00:00
Michael Niedermayer
7e7d090907 avfilter/af_astats: rename stat()
See CID1026741
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-03 14:59:52 +02:00