| 78 |
{ |
{ |
| 79 |
va_list ap; |
va_list ap; |
| 80 |
|
|
| 81 |
AUD_log (AUDIO_CAP, "Can not initialize %s\n", typ); |
AUD_log (AUDIO_CAP, "Could not initialize %s\n", typ); |
| 82 |
|
|
| 83 |
va_start (ap, fmt); |
va_start (ap, fmt); |
| 84 |
AUD_vlog (AUDIO_CAP, fmt, ap); |
AUD_vlog (AUDIO_CAP, fmt, ap); |
| 356 |
} |
} |
| 357 |
} |
} |
| 358 |
|
|
| 359 |
static int fmod_init_out (HWVoiceOut *hw, int freq, int nchannels, audfmt_e fmt) |
static int fmod_init_out (HWVoiceOut *hw, audsettings_t *as) |
| 360 |
{ |
{ |
| 361 |
int bits16, mode, channel; |
int bits16, mode, channel; |
| 362 |
FMODVoiceOut *fmd = (FMODVoiceOut *) hw; |
FMODVoiceOut *fmd = (FMODVoiceOut *) hw; |
| 363 |
|
|
| 364 |
mode = aud_to_fmodfmt (fmt, nchannels == 2 ? 1 : 0); |
mode = aud_to_fmodfmt (as->fmt, as->nchannels == 2 ? 1 : 0); |
| 365 |
fmd->fmod_sample = FSOUND_Sample_Alloc ( |
fmd->fmod_sample = FSOUND_Sample_Alloc ( |
| 366 |
FSOUND_FREE, /* index */ |
FSOUND_FREE, /* index */ |
| 367 |
conf.nb_samples, /* length */ |
conf.nb_samples, /* length */ |
| 368 |
mode, /* mode */ |
mode, /* mode */ |
| 369 |
freq, /* freq */ |
as->freq, /* freq */ |
| 370 |
255, /* volume */ |
255, /* volume */ |
| 371 |
128, /* pan */ |
128, /* pan */ |
| 372 |
255 /* priority */ |
255 /* priority */ |
| 386 |
fmd->channel = channel; |
fmd->channel = channel; |
| 387 |
|
|
| 388 |
/* FMOD always operates on little endian frames? */ |
/* FMOD always operates on little endian frames? */ |
| 389 |
audio_pcm_init_info (&hw->info, freq, nchannels, fmt, |
audio_pcm_init_info (&hw->info, as, audio_need_to_swap_endian (0)); |
|
audio_need_to_swap_endian (0)); |
|
| 390 |
bits16 = (mode & FSOUND_16BITS) != 0; |
bits16 = (mode & FSOUND_16BITS) != 0; |
| 391 |
hw->bufsize = conf.nb_samples << (nchannels == 2) << bits16; |
hw->samples = conf.nb_samples; |
| 392 |
return 0; |
return 0; |
| 393 |
} |
} |
| 394 |
|
|
| 416 |
return 0; |
return 0; |
| 417 |
} |
} |
| 418 |
|
|
| 419 |
static int fmod_init_in (HWVoiceIn *hw, int freq, int nchannels, audfmt_e fmt) |
static int fmod_init_in (HWVoiceIn *hw, audsettings_t *as) |
| 420 |
{ |
{ |
| 421 |
int bits16, mode; |
int bits16, mode; |
| 422 |
FMODVoiceIn *fmd = (FMODVoiceIn *) hw; |
FMODVoiceIn *fmd = (FMODVoiceIn *) hw; |
| 425 |
return -1; |
return -1; |
| 426 |
} |
} |
| 427 |
|
|
| 428 |
mode = aud_to_fmodfmt (fmt, nchannels == 2 ? 1 : 0); |
mode = aud_to_fmodfmt (as->fmt, as->nchannels == 2 ? 1 : 0); |
| 429 |
fmd->fmod_sample = FSOUND_Sample_Alloc ( |
fmd->fmod_sample = FSOUND_Sample_Alloc ( |
| 430 |
FSOUND_FREE, /* index */ |
FSOUND_FREE, /* index */ |
| 431 |
conf.nb_samples, /* length */ |
conf.nb_samples, /* length */ |
| 432 |
mode, /* mode */ |
mode, /* mode */ |
| 433 |
freq, /* freq */ |
as->freq, /* freq */ |
| 434 |
255, /* volume */ |
255, /* volume */ |
| 435 |
128, /* pan */ |
128, /* pan */ |
| 436 |
255 /* priority */ |
255 /* priority */ |
| 442 |
} |
} |
| 443 |
|
|
| 444 |
/* FMOD always operates on little endian frames? */ |
/* FMOD always operates on little endian frames? */ |
| 445 |
audio_pcm_init_info (&hw->info, freq, nchannels, fmt, |
audio_pcm_init_info (&hw->info, as, audio_need_to_swap_endian (0)); |
|
audio_need_to_swap_endian (0)); |
|
| 446 |
bits16 = (mode & FSOUND_16BITS) != 0; |
bits16 = (mode & FSOUND_16BITS) != 0; |
| 447 |
hw->bufsize = conf.nb_samples << (nchannels == 2) << bits16; |
hw->samples = conf.nb_samples; |
| 448 |
return 0; |
return 0; |
| 449 |
} |
} |
| 450 |
|
|
| 477 |
|
|
| 478 |
new_pos = FSOUND_Record_GetPosition (); |
new_pos = FSOUND_Record_GetPosition (); |
| 479 |
if (new_pos < 0) { |
if (new_pos < 0) { |
| 480 |
fmod_logerr ("Can not get recording position\n"); |
fmod_logerr ("Could not get recording position\n"); |
| 481 |
return 0; |
return 0; |
| 482 |
} |
} |
| 483 |
|
|