pcm/Export: DSD_U32 quarters the sample rate

DSD_U32 packs four bytes instead of one large "sample", thus the
sample rate is one quarter of the input sample rate.  This fixes a
rather critical DSD_U32 playback problem.
This commit is contained in:
Max Kellermann
2017-01-11 10:06:27 +01:00
parent c143adba91
commit 2b43ceb6c6
3 changed files with 17 additions and 0 deletions

View File

@@ -101,12 +101,24 @@ PcmExport::GetFrameSize(const AudioFormat &audio_format) const
unsigned
PcmExport::Params::CalcOutputSampleRate(unsigned sample_rate) const
{
#ifdef ENABLE_DSD
if (dsd_u32)
/* DSD_U32 combines four 8-bit "samples" in one 32-bit
"sample" */
sample_rate /= 4;
#endif
return sample_rate;
}
unsigned
PcmExport::Params::CalcInputSampleRate(unsigned sample_rate) const
{
#ifdef ENABLE_DSD
if (dsd_u32)
sample_rate *= 4;
#endif
return sample_rate;
}