mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 05:47:35 +00:00
LibAudio: Rescale integer samples correctly in FLAC loader
The FLAC samples are signed, so we need to rescale them not by their bit depth, but by half of the bit depth. For example, a 24-bit sample extends from -2^23 to 2^23-1, and therefore needs to be rescaled by 2^23 to conform to the [-1, 1] double sample range.
This commit is contained in:
parent
442aa48a61
commit
c974be91ab
1 changed files with 1 additions and 2 deletions
|
@ -414,8 +414,7 @@ void FlacLoaderPlugin::next_frame()
|
|||
|
||||
VERIFY(left.size() == right.size());
|
||||
|
||||
// TODO: find the correct rescale offset
|
||||
double sample_rescale = static_cast<double>(1 << pcm_bits_per_sample(m_current_frame->bit_depth));
|
||||
double sample_rescale = static_cast<double>(1 << (pcm_bits_per_sample(m_current_frame->bit_depth) - 1));
|
||||
dbgln_if(AFLACLOADER_DEBUG, "Sample rescaled from {} bits: factor {:.1f}", pcm_bits_per_sample(m_current_frame->bit_depth), sample_rescale);
|
||||
|
||||
m_current_frame_data.clear_with_capacity();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue