From 01930a70430c2ca4c7d16fe1138a50156341c947 Mon Sep 17 00:00:00 2001 From: Lee Hanken Date: Sun, 7 Jan 2024 22:32:02 +0000 Subject: [PATCH] LibAudio: Correctly output mono wav files Prevent two channels of data being written when the wav file is mono. --- Userland/Libraries/LibAudio/WavWriter.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibAudio/WavWriter.cpp b/Userland/Libraries/LibAudio/WavWriter.cpp index 3c295a3cf6..4999b6a9e6 100644 --- a/Userland/Libraries/LibAudio/WavWriter.cpp +++ b/Userland/Libraries/LibAudio/WavWriter.cpp @@ -50,9 +50,10 @@ ErrorOr WavWriter::write_samples(ReadonlySpan samples) u8 left = static_cast((sample.left + 1) * scale); u8 right = static_cast((sample.right + 1) * scale); TRY(m_file->write_value(left)); - TRY(m_file->write_value(right)); + if (m_num_channels >= 2) + TRY(m_file->write_value(right)); } - m_data_sz += samples.size() * 2 * sizeof(u8); + m_data_sz += samples.size() * m_num_channels * sizeof(u8); break; } case PcmSampleFormat::Int16: { @@ -61,9 +62,10 @@ ErrorOr WavWriter::write_samples(ReadonlySpan samples) u16 left = AK::convert_between_host_and_little_endian(static_cast(sample.left * scale)); u16 right = AK::convert_between_host_and_little_endian(static_cast(sample.right * scale)); TRY(m_file->write_value(left)); - TRY(m_file->write_value(right)); + if (m_num_channels >= 2) + TRY(m_file->write_value(right)); } - m_data_sz += samples.size() * 2 * sizeof(u16); + m_data_sz += samples.size() * m_num_channels * sizeof(u16); break; } default: