提交 e221cdcf 编写于 作者: S Simon Glass

dm: sandbox: Allow selection of sample rate and channels

At present these parameters are hard-coded in the sdl interface code.
Allow them to be specified by the driver instead.
Signed-off-by: NSimon Glass <sjg@chromium.org>
上级 bc58184e
......@@ -9,10 +9,6 @@
#include <SDL/SDL.h>
#include <asm/state.h>
enum {
SAMPLE_RATE = 22050,
};
/**
* struct buf_info - a data buffer holding audio data
*
......@@ -285,7 +281,7 @@ void sandbox_sdl_fill_audio(void *udata, Uint8 *stream, int len)
}
}
int sandbox_sdl_sound_init(void)
int sandbox_sdl_sound_init(int rate, int channels)
{
SDL_AudioSpec wanted;
int i;
......@@ -297,9 +293,9 @@ int sandbox_sdl_sound_init(void)
return 0;
/* Set the audio format */
wanted.freq = SAMPLE_RATE;
wanted.freq = rate;
wanted.format = AUDIO_S16;
wanted.channels = 1; /* 1 = mono, 2 = stereo */
wanted.channels = channels;
wanted.samples = 1024; /* Good low-latency value for callback */
wanted.callback = sandbox_sdl_fill_audio;
wanted.userdata = NULL;
......
......@@ -71,9 +71,11 @@ int sandbox_sdl_sound_stop(void);
/**
* sandbox_sdl_sound_init() - set up the sound system
*
* @rate: Sample rate to use
* @channels: Number of channels to use (1=mono, 2=stereo)
* @return 0 if OK, -ENODEV if no sound is available
*/
int sandbox_sdl_sound_init(void);
int sandbox_sdl_sound_init(int rate, int channels);
#else
static inline int sandbox_sdl_init_display(int width, int height,
......@@ -112,7 +114,7 @@ static inline int sandbox_sdl_sound_stop(void)
return -ENODEV;
}
static inline int sandbox_sdl_sound_init(void)
int sandbox_sdl_sound_init(int rate, int channels)
{
return -ENODEV;
}
......
......@@ -102,7 +102,7 @@ static int sandbox_i2s_probe(struct udevice *dev)
uc_priv->id = 1;
/* Ignore any error here - we'll just have no sound */
sandbox_sdl_sound_init();
sandbox_sdl_sound_init(uc_priv->samplingrate, uc_priv->channels);
return 0;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册