pcm/Volume: Open() returns output sample format

Prepare for a new mode which may convert to a different sample format
when applying volume, to reduce dithering.
This commit is contained in:
Max Kellermann
2019-07-05 19:03:00 +02:00
parent 1c757f8c1c
commit 5fa7610264
6 changed files with 13 additions and 8 deletions

View File

@@ -77,7 +77,7 @@ public:
mixer(_mixer), base(_base) {
info.Clear();
pv.Open(out_audio_format.format);
out_audio_format.format = pv.Open(out_audio_format.format);
}
void SetInfo(const ReplayGainInfo *_info) {

View File

@@ -30,7 +30,7 @@ class VolumeFilter final : public Filter {
public:
explicit VolumeFilter(const AudioFormat &audio_format)
:Filter(audio_format) {
pv.Open(out_audio_format.format);
out_audio_format.format = pv.Open(out_audio_format.format);
}
unsigned GetVolume() const noexcept {

View File

@@ -96,7 +96,7 @@ pcm_volume_change_float(float *dest, const float *src, size_t n,
dest[i] = src[i] * volume;
}
void
SampleFormat
PcmVolume::Open(SampleFormat _format)
{
assert(format == SampleFormat::UNDEFINED);
@@ -118,7 +118,7 @@ PcmVolume::Open(SampleFormat _format)
break;
}
format = _format;
return format = _format;
}
ConstBuffer<void>

View File

@@ -94,9 +94,10 @@ public:
*
* Throws on error.
*
* @param format the sample format
* @param format the input sample format
* @return the output sample format
*/
void Open(SampleFormat format);
SampleFormat Open(SampleFormat format);
/**
* Closes the object. After that, you may call Open() again.