mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:47:44 +00:00
LibAudio: Make playing lossy flacs more truthful
Playing a lossy flac file resulted in hearing something you'd not like to play. Instead of your lovely bass, you had sounds as if you put a CD-ROM disc to a CD player. It turned out that the size for making signed values was too big, making all the values unsigned. I've used lossyWav[1] (the posix port[2] to be exact) to generate such files. [1]: https://wiki.hydrogenaud.io/index.php?title=LossyWAV [2]: https://github.com/MoSal/lossywav-for-posix
This commit is contained in:
parent
837803531a
commit
91c9d9ee88
1 changed files with 3 additions and 4 deletions
|
@ -596,7 +596,7 @@ Vector<i32> FlacLoaderPlugin::parse_subframe(FlacSubframeHeader& subframe_header
|
|||
|
||||
samples.ensure_capacity(m_current_frame->sample_count);
|
||||
for (u32 i = 0; i < m_current_frame->sample_count; ++i) {
|
||||
samples.unchecked_append(sign_extend(constant_value, subframe_header.bits_per_sample));
|
||||
samples.unchecked_append(sign_extend(constant_value, subframe_header.bits_per_sample - subframe_header.wasted_bits_per_sample));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -645,8 +645,7 @@ Vector<i32> FlacLoaderPlugin::decode_custom_lpc(FlacSubframeHeader& subframe, In
|
|||
|
||||
// warm-up samples
|
||||
for (auto i = 0; i < subframe.order; ++i) {
|
||||
decoded.unchecked_append(sign_extend(bit_input.read_bits_big_endian(subframe.bits_per_sample - subframe.wasted_bits_per_sample), subframe.bits_per_sample));
|
||||
decoded[i] <<= subframe.wasted_bits_per_sample;
|
||||
decoded.unchecked_append(sign_extend(bit_input.read_bits_big_endian(subframe.bits_per_sample - subframe.wasted_bits_per_sample), subframe.bits_per_sample - subframe.wasted_bits_per_sample));
|
||||
}
|
||||
|
||||
// precision of the coefficients
|
||||
|
@ -695,7 +694,7 @@ Vector<i32> FlacLoaderPlugin::decode_fixed_lpc(FlacSubframeHeader& subframe, Inp
|
|||
|
||||
// warm-up samples
|
||||
for (auto i = 0; i < subframe.order; ++i) {
|
||||
decoded.unchecked_append(sign_extend(bit_input.read_bits_big_endian(subframe.bits_per_sample - subframe.wasted_bits_per_sample), subframe.bits_per_sample));
|
||||
decoded.unchecked_append(sign_extend(bit_input.read_bits_big_endian(subframe.bits_per_sample - subframe.wasted_bits_per_sample), subframe.bits_per_sample - subframe.wasted_bits_per_sample));
|
||||
}
|
||||
|
||||
decode_residual(decoded, subframe, bit_input);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue