gstreamer/subprojects/gst-plugins-base/tests/check/elements
Roman Lebedev 8b1500d7ff volume: support arbitrarily-large positive gains
The current limit is `x10`, which allows just `+20 dB` of gain.

While it may seem sufficient, this came up as a problem
in a real-world, non-specially-engineered situation,
in strawberry's EBU R 128 loudness normalization.
(https://github.com/strawberrymusicplayer/strawberry/pull/1216)

There is an audio track (that was not intentionally engineered that way),
that has integrated loudness of `-38 LUFS`,
and if we want to normalize it's loudness to e.g. `-16 LUFS`,
which is a very reasonable thing to do,
we need to apply gain of `+22 dB`,
which is larger than `+20 dB`, and we fail...

I think it should allow at least `+96 dB` of gain,
and therefore should be at `10^(96/20) ~= 63096`.

But, i don't see why we need to put any specific restriction
on that parameter in the first place, other than the fact
that the fixed-point multiplication scheme does not support volume
larger than 15x-ish.

So let's just implement a floating-point fall-back path
that does not involve fixed-point multiplication
and lift the restriction altogether?

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5063>
2023-08-07 13:17:45 +00:00
..
adder.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
appsink.c appsink: add propose_allocation support 2023-03-27 12:34:16 +03:00
appsrc.c appsrc: properly handle events received before sending the segment 2023-04-05 11:11:46 +00:00
audioconvert.c gst-plugins-base: re-indent with GNU indent 2.2.12 2023-03-17 03:18:53 +00:00
audiointerleave.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
audiomixer.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
audiorate.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
audioresample.c Bump GLib requirement to >= 2.62 2022-06-10 06:01:41 +00:00
audiotestsrc.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
compositor.c tests: compositor: Fix race in buffer unref 2023-07-21 00:59:59 +09:00
decodebin.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
encodebin.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
glbin.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
glfilter.c ximagesink/xvimagesink: use GST_XINITTHREADS to ensure call to XInitThreads 2022-04-04 15:49:02 +08:00
glimagesink.c ximagesink/xvimagesink: use GST_XINITTHREADS to ensure call to XInitThreads 2022-04-04 15:49:02 +08:00
glmixer.c ximagesink/xvimagesink: use GST_XINITTHREADS to ensure call to XInitThreads 2022-04-04 15:49:02 +08:00
glstereo.c ximagesink/xvimagesink: use GST_XINITTHREADS to ensure call to XInitThreads 2022-04-04 15:49:02 +08:00
libvisual.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
multifdsink.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
multisocketsink.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
opus.c gst-plugins-base: re-indent with GNU indent 2.2.12 2023-03-17 03:18:53 +00:00
overlaycomposition.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
playbin-complex.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
playbin.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
playsink.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
rawaudioparse.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
rawvideoparse.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
streamsynchronizer.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
subparse.c samiparse: fix handling of self-closing tags 2022-07-01 17:24:52 +00:00
textoverlay.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
theoradec.c theoradec: make sure the selected pool accepts the new config 2023-05-12 14:37:06 +02:00
urisourcebin.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
videoconvert.c test: Update all video related tests because of adding DMA_DRM format 2023-07-19 09:57:50 +00:00
videorate.c videorate: properly handle variable framerate input and drop-only=true 2023-07-05 19:33:59 +00:00
videoscale.c test: Update all video related tests because of adding DMA_DRM format 2023-07-19 09:57:50 +00:00
videotestsrc.c gst-plugins-base: re-indent with GNU indent 2.2.12 2023-03-17 03:18:53 +00:00
volume.c volume: support arbitrarily-large positive gains 2023-08-07 13:17:45 +00:00
vorbisdec.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
vorbistag.c Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00