// This should probably move to another c file but for now ... ALCAPI ALCdevice* ALCAPIENTRY alcCaptureOpenDevice(const ALCchar *deviceName, ALCuint frequency, ALCenum format, ALCsizei SampleSize) { ALCboolean DeviceFound = ALC_FALSE; ALCdevice *pDevice = NULL; ALCint i; if(SampleSize <= 0) { alcSetError(ALC_INVALID_VALUE); return NULL; } if(deviceName && !deviceName[0]) deviceName = NULL; pDevice = malloc(sizeof(ALCdevice)); if (pDevice) { //Initialise device structure memset(pDevice, 0, sizeof(ALCdevice)); //Validate device pDevice->Connected = ALC_TRUE; pDevice->IsCaptureDevice = AL_TRUE; pDevice->szDeviceName = NULL; pDevice->Frequency = frequency; pDevice->Format = format; pDevice->UpdateSize = SampleSize; pDevice->NumUpdates = 1; SuspendContext(NULL); for(i = 0;BackendList[i].Init;i++) { pDevice->Funcs = &BackendList[i].Funcs; if(ALCdevice_OpenCapture(pDevice, deviceName)) { pDevice->next = g_pDeviceList; g_pDeviceList = pDevice; g_ulDeviceCount++; DeviceFound = ALC_TRUE; break; } } ProcessContext(NULL); if(!DeviceFound) { alcSetError(ALC_INVALID_VALUE); free(pDevice); pDevice = NULL; } } else alcSetError(ALC_OUT_OF_MEMORY); return pDevice; }
// This should probably move to another c file but for now ... ALCAPI ALCdevice* ALCAPIENTRY alcCaptureOpenDevice(const ALCchar *deviceName, ALCuint frequency, ALCenum format, ALCsizei SampleSize) { ALCboolean DeviceFound = ALC_FALSE; ALCdevice *pDevice = NULL; ALCint i; InitAL(); if(deviceName && !deviceName[0]) deviceName = NULL; pDevice = malloc(sizeof(ALCdevice)); if (pDevice) { if (SampleSize > 0) { //Initialise device structure memset(pDevice, 0, sizeof(ALCdevice)); //Validate device pDevice->InUse = AL_TRUE; pDevice->IsCaptureDevice = AL_TRUE; pDevice->Frequency = frequency; pDevice->Format = format; pDevice->Channels = aluChannelsFromFormat(format); pDevice->FrameSize = aluBytesFromFormat(format) * pDevice->Channels; for(i = 0;BackendList[i].Init;i++) { pDevice->Funcs = &BackendList[i].Funcs; if(ALCdevice_OpenCapture(pDevice, deviceName, frequency, format, SampleSize)) { SuspendContext(NULL); pDevice->next = g_pDeviceList; g_pDeviceList = pDevice; g_ulDeviceCount++; ProcessContext(NULL); DeviceFound = ALC_TRUE; break; } } } else SetALCError(ALC_INVALID_VALUE); if(!DeviceFound) { free(pDevice); pDevice = NULL; } } else SetALCError(ALC_OUT_OF_MEMORY); return pDevice; }