sound: Add sample rate as a parameter for square wave
At present this value is hard-coded in the function that generates a square wave. Since sample rates vary between different hardware, it makes more sense to have this as a parameter. Update the function and its users. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
03f11e87a8
commit
7d92b06090
@ -322,7 +322,7 @@ int sandbox_sdl_sound_start(uint frequency)
|
||||
if (!sdl.audio_active)
|
||||
return -1;
|
||||
sdl.frequency = frequency;
|
||||
sound_create_square_wave((unsigned short *)sdl.audio_data,
|
||||
sound_create_square_wave(22050, (unsigned short *)sdl.audio_data,
|
||||
sdl.audio_size, frequency);
|
||||
sdl.audio_pos = 0;
|
||||
SDL_PauseAudio(0);
|
||||
|
@ -185,7 +185,8 @@ int sound_play(uint32_t msec, uint32_t frequency)
|
||||
return -1;
|
||||
}
|
||||
|
||||
sound_create_square_wave((unsigned short *)data,
|
||||
sound_create_square_wave(g_i2stx_pri.samplingrate,
|
||||
(unsigned short *)data,
|
||||
data_size / sizeof(unsigned short),
|
||||
frequency);
|
||||
|
||||
|
@ -7,11 +7,11 @@
|
||||
#include <common.h>
|
||||
#include <sound.h>
|
||||
|
||||
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)
|
||||
{
|
||||
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);
|
||||
|
@ -31,11 +31,13 @@ struct sound_codec_info {
|
||||
/*
|
||||
* Generates square wave sound data for 1 second
|
||||
*
|
||||
* @param sample_rate Sample rate in Hz
|
||||
* @param data data buffer pointer
|
||||
* @param size size of the buffer
|
||||
* @param freq frequency of the wave
|
||||
*/
|
||||
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);
|
||||
|
||||
/*
|
||||
* Initialises audio sub system
|
||||
|
Loading…
Reference in New Issue
Block a user