예제 #1
0
void
PlayAudio(char *name, char mode)
{
    ssize_t bytes = 0;
    bytes = load_audio_file(name, &soundbuf, &soundbuf_size);
    soundbuf_used = (bytes > 0) ? bytes : 0;
    PlayVoice();
}
예제 #2
0
void
NGetVoice(char plr, char val)
{
    char fname[100];
    ssize_t bytes = 0;

    sprintf(fname, "%s_%03d.ogg", (plr ? "sov" : "usa"), val);
    bytes = load_audio_file(fname, &soundbuf, &soundbuf_size);
    soundbuf_used = (bytes > 0) ? bytes : 0;
}
예제 #3
0
std::vector<AudioBuffer> SoundFX::load_samples(const AudioSpec &_spec, const samples_t &_samples)
{
	std::vector<std::future<void>> futures(_samples.size());
	std::vector<AudioBuffer> buffers(_samples.size());
	for(unsigned i=0; i<_samples.size(); ++i) {
		futures[i] = std::async(std::launch::async, [_spec,i,&buffers,&_samples]() {
			PINFOF(LOG_V1, LOG_AUDIO, "loading %s for %s sound fx\n",
					_samples[i].file, _samples[i].name);
			load_audio_file(_samples[i].file, buffers[i], _spec);
		});
	}
	for(unsigned i=0; i<_samples.size(); ++i) {
		futures[i].wait();
	}
	return buffers;
}
예제 #4
0
void
play_audio(int sidx, int mode)
{
    char filename[40];
    ssize_t size;
    char *name = seq_filename(sidx, mode);

    if (!name) {
        CWARNING4(audio, "failed request for sound idx %d, mode %d",
                  sidx, mode);
        return;
    }

    snprintf(filename, sizeof(filename), "%s.ogg", name);
    CINFO3(audio, "play sound file `%s'", filename);
    size = load_audio_file(filename, &soundbuf, &soundbuf_size);
    soundbuf_used = (size > 0) ? size : 0;
    PlayVoice();
}