diff options
Diffstat (limited to 'Alc')
-rw-r--r-- | Alc/ALc.c | 9 | ||||
-rw-r--r-- | Alc/alsa.c | 4 | ||||
-rw-r--r-- | Alc/dsound.c | 2 | ||||
-rw-r--r-- | Alc/oss.c | 55 | ||||
-rw-r--r-- | Alc/winmm.c | 4 |
5 files changed, 20 insertions, 54 deletions
@@ -430,9 +430,8 @@ ALCAPI ALCdevice* ALCAPIENTRY alcCaptureOpenDevice(const ALCchar *deviceName, AL pDevice->Frequency = frequency; pDevice->Format = format; - pDevice->Channels = aluChannelsFromFormat(format); pDevice->FrameSize = aluBytesFromFormat(format) * - pDevice->Channels; + aluChannelsFromFormat(format); for(i = 0;BackendList[i].Init;i++) { @@ -1141,16 +1140,14 @@ ALCAPI ALCdevice* ALCAPIENTRY alcOpenDevice(const ALCchar *deviceName) if(fmt[0]) device->Format = alGetEnumValue(fmt); - device->Channels = aluChannelsFromFormat(device->Format); - if(!device->Channels) + if(!aluChannelsFromFormat(device->Format)) { device->Format = AL_FORMAT_STEREO16; - device->Channels = 2; device->FrameSize = 4; } else device->FrameSize = aluBytesFromFormat(device->Format) * - device->Channels; + aluChannelsFromFormat(device->Format); device->UpdateFreq = GetConfigValueInt(NULL, "refresh", 8192); if((ALint)device->UpdateFreq <= 0) @@ -375,7 +375,7 @@ open_alsa: /* set format (implicitly sets sample bits) */ ok(psnd_pcm_hw_params_set_format(data->pcmHandle, p, data->format), "set format") && /* set channels (implicitly sets frame bits) */ - ok(psnd_pcm_hw_params_set_channels(data->pcmHandle, p, device->Channels), "set channels") && + ok(psnd_pcm_hw_params_set_channels(data->pcmHandle, p, aluChannelsFromFormat(device->Format)), "set channels") && /* set periods (implicitly constrains period/buffer parameters) */ (!periods || ok(psnd_pcm_hw_params_set_periods_near(data->pcmHandle, p, &periods, NULL), "set periods near")) && /* set rate (implicitly constrains period/buffer parameters) */ @@ -551,7 +551,7 @@ open_alsa: /* set format (implicitly sets sample bits) */ ok(psnd_pcm_hw_params_set_format(data->pcmHandle, p, alsaFormat), "set format") && /* set channels (implicitly sets frame bits) */ - ok(psnd_pcm_hw_params_set_channels(data->pcmHandle, p, pDevice->Channels), "set channels") && + ok(psnd_pcm_hw_params_set_channels(data->pcmHandle, p, aluChannelsFromFormat(pDevice->Format)), "set channels") && /* set rate (implicitly constrains period/buffer parameters) */ ok(psnd_pcm_hw_params_set_rate(data->pcmHandle, p, frequency, 0), "set rate") && /* set buffer size in frame units (implicitly sets period size/bytes/time and buffer time/bytes) */ diff --git a/Alc/dsound.c b/Alc/dsound.c index b5796fd9..a05c4034 100644 --- a/Alc/dsound.c +++ b/Alc/dsound.c @@ -199,7 +199,7 @@ static ALCboolean DSoundOpenPlayback(ALCdevice *device, const ALCchar *deviceNam } OutputType.wFormatTag = WAVE_FORMAT_PCM; - OutputType.nChannels = device->Channels; + OutputType.nChannels = aluChannelsFromFormat(device->Format); OutputType.wBitsPerSample = aluBytesFromFormat(device->Format) * 8; OutputType.nBlockAlign = OutputType.nChannels*OutputType.wBitsPerSample/8; OutputType.nSamplesPerSec = device->Frequency; @@ -195,7 +195,7 @@ static ALCboolean oss_open_playback(ALCdevice *device, const ALCchar *deviceName periods = GetConfigValueInt("oss", "periods", 4); if((int)periods <= 0) periods = 4; - numChannels = device->Channels; + numChannels = aluChannelsFromFormat(device->Format); ossSpeed = device->Frequency; log2FragmentSize = log2i(device->UpdateFreq * device->FrameSize / periods); @@ -220,9 +220,9 @@ static ALCboolean oss_open_playback(ALCdevice *device, const ALCchar *deviceName device->Frequency = ossSpeed; - if((int)device->Channels != numChannels) + if((int)aluChannelsFromFormat(device->Format) != numChannels) { - AL_PRINT("Could not set %d channels, got %d instead\n", device->Channels, numChannels); + AL_PRINT("Could not set %d channels, got %d instead\n", aluChannelsFromFormat(device->Format), numChannels); close(data->fd); free(data); return ALC_FALSE; @@ -319,7 +319,7 @@ static ALCboolean oss_open_capture(ALCdevice *device, const ALCchar *deviceName, } periods = 4; - numChannels = device->Channels; + numChannels = aluChannelsFromFormat(device->Format); ossSpeed = frequency; log2FragmentSize = log2i(device->UpdateFreq * device->FrameSize / periods); @@ -342,49 +342,18 @@ static ALCboolean oss_open_capture(ALCdevice *device, const ALCchar *deviceName, } #undef ok - device->Channels = numChannels; - device->Frequency = ossSpeed; - device->Format = 0; - if(ossFormat == AFMT_U8) - { - if(device->Channels == 1) - { - device->Format = AL_FORMAT_MONO8; - device->FrameSize = 1; - } - else if(device->Channels == 2) - { - device->Format = AL_FORMAT_STEREO8; - device->FrameSize = 2; - } - else if(device->Channels == 4) - { - device->Format = AL_FORMAT_QUAD8; - device->FrameSize = 4; - } - } - else if(ossFormat == AFMT_S16_NE) + if((int)aluChannelsFromFormat(device->Format) != numChannels) { - if(device->Channels == 1) - { - device->Format = AL_FORMAT_MONO16; - device->FrameSize = 2; - } - else if(device->Channels == 2) - { - device->Format = AL_FORMAT_STEREO16; - device->FrameSize = 4; - } - else if(device->Channels == 4) - { - device->Format = AL_FORMAT_QUAD16; - device->FrameSize = 8; - } + AL_PRINT("Could not set %d channels, got %d instead\n", aluChannelsFromFormat(device->Format), numChannels); + close(data->fd); + free(data); + return ALC_FALSE; } - if(!device->Format) + if(!((ossFormat == AFMT_U8 && aluBytesFromFormat(device->Format) == 1) || + (ossFormat == AFMT_S16_NE && aluBytesFromFormat(device->Format) == 2))) { - AL_PRINT("returned unknown format: %#x %d!\n", ossFormat, numChannels); + AL_PRINT("Could not set %d-bit input, got format %#x\n", aluBytesFromFormat(device->Format)*8, ossFormat); close(data->fd); free(data); return ALC_FALSE; diff --git a/Alc/winmm.c b/Alc/winmm.c index 17570efc..60f958cb 100644 --- a/Alc/winmm.c +++ b/Alc/winmm.c @@ -209,8 +209,8 @@ static ALCboolean WinMMOpenCapture(ALCdevice *pDevice, const ALCchar *deviceName memset(&wfexCaptureFormat, 0, sizeof(WAVEFORMATEX)); wfexCaptureFormat.wFormatTag = WAVE_FORMAT_PCM; - wfexCaptureFormat.nChannels = pDevice->Channels; - wfexCaptureFormat.wBitsPerSample = pDevice->FrameSize / pDevice->Channels * 8; + wfexCaptureFormat.nChannels = aluChannelsFromFormat(pDevice->Format); + wfexCaptureFormat.wBitsPerSample = aluBytesFromFormat(pDevice->Format) * 8; wfexCaptureFormat.nBlockAlign = pDevice->FrameSize; wfexCaptureFormat.nSamplesPerSec = frequency; wfexCaptureFormat.nAvgBytesPerSec = wfexCaptureFormat.nSamplesPerSec * |