ReplayGain filter: allow gain > 100 %
The ReplayGain filter clamped the gain to max. 100 % even if the algorithm determined the signal needed a boost. That would result in any such tracks being played with too low volume, effectively defeating the purpose of the filter.
This commit is contained in:
parent
92b6ba9eff
commit
ed5d297301
@ -55,8 +55,16 @@ struct replay_gain_filter {
|
|||||||
struct replay_gain_info info;
|
struct replay_gain_info info;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The current volume, between 0 and #PCM_VOLUME_1 (both
|
* The current volume, between 0 and a value that may or may not exceed
|
||||||
* including).
|
* #PCM_VOLUME_1.
|
||||||
|
*
|
||||||
|
* If the default value of true is used for replaygain_limit, the
|
||||||
|
* application of the volume to the signal will never cause clipping.
|
||||||
|
*
|
||||||
|
* On the other hand, if the user has set replaygain_limit to false,
|
||||||
|
* the chance of clipping is explicitly preferred if that's required to
|
||||||
|
* maintain a consistent audio level. Whether clipping will actually
|
||||||
|
* occur depends on what value the user is using for replaygain_preamp.
|
||||||
*/
|
*/
|
||||||
unsigned volume;
|
unsigned volume;
|
||||||
|
|
||||||
@ -171,7 +179,7 @@ replay_gain_filter_filter(struct filter *_filter,
|
|||||||
|
|
||||||
*dest_size_r = src_size;
|
*dest_size_r = src_size;
|
||||||
|
|
||||||
if (filter->volume >= PCM_VOLUME_1)
|
if (filter->volume == PCM_VOLUME_1)
|
||||||
/* optimized special case: 100% volume = no-op */
|
/* optimized special case: 100% volume = no-op */
|
||||||
return src;
|
return src;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user