X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=drivers%2Fsound%2Fsound.c;h=dd3f9db4f7547da4b45491eb44e8dd906062e504;hb=7a6c6dba28fd084f37ff43bebd721caeae9ab698;hp=9dda2dba822aa8bc0a4aaf504130f1bfaddfc530;hpb=a77bf70978a42e94790a8bc81941edc1026939ce;p=oweals%2Fu-boot.git diff --git a/drivers/sound/sound.c b/drivers/sound/sound.c index 9dda2dba82..dd3f9db4f7 100644 --- a/drivers/sound/sound.c +++ b/drivers/sound/sound.c @@ -1,18 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (C) 2012 Samsung Electronics * R. Chandrasekar - * - * SPDX-License-Identifier: GPL-2.0+ */ #include #include -void sound_create_square_wave(unsigned short *data, int size, uint32_t freq) +void sound_create_square_wave(uint sample_rate, unsigned short *data, int size, + uint freq, uint channels) { - const int sample = 48000; const unsigned short amplitude = 16000; /* between 1 and 32767 */ - const int period = freq ? sample / freq : 0; + const int period = freq ? sample_rate / freq : 0; const int half = period / 2; assert(freq); @@ -22,16 +21,17 @@ void sound_create_square_wave(unsigned short *data, int size, uint32_t freq) size--; while (size) { - int i; + int i, j; + for (i = 0; size && i < half; i++) { size -= 2; - *data++ = amplitude; - *data++ = amplitude; + for (j = 0; j < channels; j++) + *data++ = amplitude; } for (i = 0; size && i < period - half; i++) { size -= 2; - *data++ = -amplitude; - *data++ = -amplitude; + for (j = 0; j < channels; j++) + *data++ = -amplitude; } } }