/* * Just a thin wrapper around our internal use callback interface. * Applications that rely on the callback know when to delete sources * and buffers, so the additional callback are not needed. */ void alBufferDataWithCallback_LOKI(ALuint bid, int (*Callback)(ALuint, ALuint, ALshort *, ALenum, ALint, ALint)) { _alBufferDataWithCallback_LOKI(bid, Callback, NULL, NULL); return; }
ALboolean alutLoadRAW_ADPCMData_LOKI(ALuint bid, ALvoid *data, ALuint size, ALuint freq, ALenum format) { alWaveFMT_LOKI wfx; int i; ALvoid *persistent_data; if(RAW_first_time == AL_TRUE) { /* so kludgey */ for(i = 0; i < MAX_ADPCM; i++) { bidmap[i].bid = -1; bidmap[i].data = NULL; admap[i].sid = -1; } RAW_first_time = AL_FALSE; } persistent_data = malloc(size); if(persistent_data == NULL) { return AL_FALSE; } memcpy(persistent_data, data, size); wfx.frequency = freq; wfx.channels = _al_ALCHANNELS(format); wfx.bitspersample = _al_formatbits(format); /* insert new bid, ignore blockalign */ bidmap_insert(bid, persistent_data, size, &wfx); _alBufferDataWithCallback_LOKI(bid, RAW_ADPCM_Callback, RAW_ADPCM_DestroyCallback_Sid, RAW_ADPCM_DestroyCallback_Bid); return AL_TRUE; }