value lime_al_get_bufferf (value buffer, value param) { float data; alGetBufferf (val_int (buffer), val_int (param), &data); return alloc_float (data); }
AL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values) { ALCdevice *device; ALCcontext *context; switch(param) { case AL_SEC_LENGTH_SOFT: alGetBufferf(buffer, param, values); return; } context = GetContextRef(); if(!context) return; device = context->Device; if(LookupBuffer(device, buffer) == NULL) SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done); if(!(values)) SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done); switch(param) { default: SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done); } done: ALCcontext_DecRef(context); }
float lime_al_get_bufferf (int buffer, int param) { ALfloat data; alGetBufferf (buffer, param, &data); return data; }
void al_getbufferf( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { if (NULL == alGetBufferf) mogl_glunsupported("alGetBufferf"); alGetBufferf((ALuint)mxGetScalar(prhs[0]), (ALenum)mxGetScalar(prhs[1]), (ALfloat*)mxGetData(prhs[2])); }
WError WSound::SaveToWS(std::string filename) const { if (Valid() && m_dataV.size()) //only attempt to save if the sound is valid and there is something to save { //open the file for writing fstream file; file.open(filename, ios::out | ios::binary); if (!file.is_open()) return WError(W_FILENOTFOUND); float temp[3]; //write pitch & volume alGetSourcef(m_source, AL_PITCH, &temp[0]); alGetSourcef(m_source, AL_GAIN, &temp[1]); file.write((char*)temp, 2 * sizeof(float)); //write position & direction alGetSource3f(m_source, AL_POSITION, &temp[0], &temp[1], &temp[2]); file.write((char*)temp, 3 * sizeof(float)); alGetSource3f(m_source, AL_DIRECTION, &temp[0], &temp[1], &temp[2]); file.write((char*)temp, 3 * sizeof(float)); char numBuffers = m_dataV.size(); file.write((char*)&numBuffers, 1); for (uint i = 0; i < numBuffers; i++) { file.write((char*)&m_dataV[i].buffer, 4); //buffer index file.write((char*)&m_dataV[i].format, sizeof ALenum); //buffer format alGetBufferf(m_buffers[m_dataV[i].buffer], AL_FREQUENCY, &temp[0]); file.write((char*)&temp[0], 4); //frequency file.write((char*)&m_dataV[i].dataSize, 4); //size of data file.write((char*)&m_dataV[i].data, m_dataV[i].dataSize); //data } file.close(); } else return WError(W_NOTVALID); return WError(W_SUCCEEDED); }
WError WSound::SaveToWS(basic_filebuf<char>* buff, uint pos) const { if (Valid() && m_dataV.size()) //only attempt to save if the sound is valid and there is something to save { //use the given stream fstream file; if (!buff) return WError(W_INVALIDPARAM); file.set_rdbuf(buff); file.seekp(pos); float temp[3]; //write pitch & volume alGetSourcef(m_source, AL_PITCH, &temp[0]); alGetSourcef(m_source, AL_GAIN, &temp[1]); file.write((char*)temp, 2 * sizeof(float)); //write position & direction alGetSource3f(m_source, AL_POSITION, &temp[0], &temp[1], &temp[2]); file.write((char*)temp, 3 * sizeof(float)); alGetSource3f(m_source, AL_DIRECTION, &temp[0], &temp[1], &temp[2]); file.write((char*)temp, 3 * sizeof(float)); char numBuffers = m_dataV.size(); file.write((char*)&numBuffers, 1); for (uint i = 0; i < numBuffers; i++) { file.write((char*)&m_dataV[i].buffer, 4); //buffer index file.write((char*)&m_dataV[i].format, sizeof ALenum); //buffer format alGetBufferf(m_buffers[m_dataV[i].buffer], AL_FREQUENCY, &temp[0]); file.write((char*)&temp[0], 4); //frequency file.write((char*)&m_dataV[i].dataSize, 4); //size of data file.write((char*)&m_dataV[i].data, m_dataV[i].dataSize); //data } } else return WError(W_NOTVALID); return WError(W_SUCCEEDED); }
ALvoid CDECL wine_alGetBufferf(ALuint bid, ALenum param, ALfloat* value) { alGetBufferf(bid, param, value); }
JNIEXPORT void JNICALL Java_org_lwjgl_openal_AL10_nalGetBufferf(JNIEnv *__env, jclass clazz, jint bufferName, jint paramName, jlong valueAddress, jlong __functionAddress) { ALfloat *value = (ALfloat *)(intptr_t)valueAddress; alGetBufferfPROC alGetBufferf = (alGetBufferfPROC)(intptr_t)__functionAddress; UNUSED_PARAMS(__env, clazz) alGetBufferf(bufferName, paramName, value); }
//***************************************************************************** // alGetBufferf //***************************************************************************** // ALAPI ALvoid ALAPIENTRY alGetBufferf(ALuint bufferName, ALenum param, ALfloat* value) { AL_VOID_FXN(alGetBufferf(bufferName, param, value)); }