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)
|
if (!sdl.audio_active)
|
||||||
return -1;
|
return -1;
|
||||||
sdl.frequency = frequency;
|
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_size, frequency);
|
||||||
sdl.audio_pos = 0;
|
sdl.audio_pos = 0;
|
||||||
SDL_PauseAudio(0);
|
SDL_PauseAudio(0);
|
||||||
|
@ -185,7 +185,8 @@ int sound_play(uint32_t msec, uint32_t frequency)
|
|||||||
return -1;
|
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),
|
data_size / sizeof(unsigned short),
|
||||||
frequency);
|
frequency);
|
||||||
|
|
||||||
|
@ -7,11 +7,11 @@
|
|||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <sound.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 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;
|
const int half = period / 2;
|
||||||
|
|
||||||
assert(freq);
|
assert(freq);
|
||||||
|
@ -31,11 +31,13 @@ struct sound_codec_info {
|
|||||||
/*
|
/*
|
||||||
* Generates square wave sound data for 1 second
|
* Generates square wave sound data for 1 second
|
||||||
*
|
*
|
||||||
|
* @param sample_rate Sample rate in Hz
|
||||||
* @param data data buffer pointer
|
* @param data data buffer pointer
|
||||||
* @param size size of the buffer
|
* @param size size of the buffer
|
||||||
* @param freq frequency of the wave
|
* @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
|
* Initialises audio sub system
|
||||||
|
Loading…
Reference in New Issue
Block a user