| 303 |
sdl_close (&glob_sdl); |
sdl_close (&glob_sdl); |
| 304 |
} |
} |
| 305 |
|
|
| 306 |
static int sdl_init_out (HWVoiceOut *hw, int freq, int nchannels, audfmt_e fmt) |
static int sdl_init_out (HWVoiceOut *hw, audsettings_t *as) |
| 307 |
{ |
{ |
| 308 |
SDLVoiceOut *sdl = (SDLVoiceOut *) hw; |
SDLVoiceOut *sdl = (SDLVoiceOut *) hw; |
| 309 |
SDLAudioState *s = &glob_sdl; |
SDLAudioState *s = &glob_sdl; |
| 312 |
int endianess; |
int endianess; |
| 313 |
int err; |
int err; |
| 314 |
audfmt_e effective_fmt; |
audfmt_e effective_fmt; |
| 315 |
|
audsettings_t obt_as; |
| 316 |
|
|
| 317 |
if (nchannels != 2) { |
shift <<= as->nchannels == 2; |
|
dolog ("Can not init DAC. Bogus channel count %d\n", nchannels); |
|
|
return -1; |
|
|
} |
|
| 318 |
|
|
| 319 |
req.freq = freq; |
req.freq = as->freq; |
| 320 |
req.format = aud_to_sdlfmt (fmt, &shift); |
req.format = aud_to_sdlfmt (as->fmt, &shift); |
| 321 |
req.channels = nchannels; |
req.channels = as->nchannels; |
| 322 |
req.samples = conf.nb_samples; |
req.samples = conf.nb_samples; |
|
shift <<= nchannels == 2; |
|
|
|
|
| 323 |
req.callback = sdl_callback; |
req.callback = sdl_callback; |
| 324 |
req.userdata = sdl; |
req.userdata = sdl; |
| 325 |
|
|
| 333 |
return -1; |
return -1; |
| 334 |
} |
} |
| 335 |
|
|
| 336 |
|
obt_as.freq = obt.freq; |
| 337 |
|
obt_as.nchannels = obt.channels; |
| 338 |
|
obt_as.fmt = effective_fmt; |
| 339 |
|
|
| 340 |
audio_pcm_init_info ( |
audio_pcm_init_info ( |
| 341 |
&hw->info, |
&hw->info, |
| 342 |
obt.freq, |
&obt_as, |
|
obt.channels, |
|
|
effective_fmt, |
|
| 343 |
audio_need_to_swap_endian (endianess) |
audio_need_to_swap_endian (endianess) |
| 344 |
); |
); |
| 345 |
hw->bufsize = obt.samples << shift; |
hw->samples = obt.samples; |
| 346 |
|
|
| 347 |
s->initialized = 1; |
s->initialized = 1; |
| 348 |
s->exit = 0; |
s->exit = 0; |