[igt-dev] [PATCH i-g-t] lib/igt_audio: fix amplitude for S24_LE and S32_LE

Simon Ser simon.ser at intel.com
Wed May 22 10:29:31 UTC 2019


We need to use signed integers (hence "S" in the format name).

The reason this has gone unnoticed is that we were generating signals with half
of the amplitude they were supposed to have. As a result, using UINT32_MAX
(which is almost INT32_MAX * 2) resulted in the correct amplitude. In other
words, these two bugs were cancelling each other's effects.

Signed-off-by: Simon Ser <simon.ser at intel.com>
Fixes: 42576d710255 ("lib/igt_audio: add support for S24_LE and S32_LE signal generation")
---
 lib/igt_audio.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/igt_audio.c b/lib/igt_audio.c
index 9937fd02f750..07935e660c5a 100644
--- a/lib/igt_audio.c
+++ b/lib/igt_audio.c
@@ -328,7 +328,7 @@ void audio_signal_fill_s24_le(struct audio_signal *signal, int32_t *buffer,
 	audio_signal_fill(signal, tmp, samples);

 	for (i = 0; i < signal->channels * samples; ++i)
-		buffer[i] = 0xFFFFFF * tmp[i];
+		buffer[i] = 0x7FFFFF * tmp[i];

 	free(tmp);
 }
@@ -343,7 +343,7 @@ void audio_signal_fill_s32_le(struct audio_signal *signal, int32_t *buffer,
 	audio_signal_fill(signal, tmp, samples);

 	for (i = 0; i < signal->channels * samples; ++i)
-		buffer[i] = UINT32_MAX * tmp[i];
+		buffer[i] = INT32_MAX * tmp[i];

 	free(tmp);
 }
--
2.21.0



More information about the igt-dev mailing list