diff options
author | Chris Robinson <[email protected]> | 2010-12-04 19:50:00 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2010-12-04 19:50:00 -0800 |
commit | 88e3a2277235fe173d4d0ff3f10c0becdc9c82cd (patch) | |
tree | 3cfad0017b809fc08e69cc9ec99fe622d26a2606 /Alc/solaris.c | |
parent | 191803ad53c156d3f056b649c76e441042a385fb (diff) |
Separate device format into 'channel config' and 'sample type' components
Diffstat (limited to 'Alc/solaris.c')
-rw-r--r-- | Alc/solaris.c | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/Alc/solaris.c b/Alc/solaris.c index d07bac0b..a617554f 100644 --- a/Alc/solaris.c +++ b/Alc/solaris.c @@ -59,7 +59,7 @@ static ALuint SolarisProc(ALvoid *ptr) SetRTPriority(); - frameSize = aluFrameSizeFromFormat(pDevice->Format); + frameSize = FrameSizeFromDevFmt(pDevice->FmtChans, pDevice->FmtType); while(!data->killNow && pDevice->Connected) { @@ -139,37 +139,30 @@ static ALCboolean solaris_reset_playback(ALCdevice *device) AUDIO_INITINFO(&info); - switch(aluBytesFromFormat(device->Format)) + switch(device->FmtType) { - case 1: + case DevFmtByte: + device->FmtType = DevFmtUByte; + /* fall-through */ + case DevFmtUByte: info.play.precision = 8; info.play.encoding = AUDIO_ENCODING_LINEAR8; break; - case 4: - switch(numChannels) - { - case 1: device->Format = AL_FORMAT_MONO16; break; - case 2: device->Format = AL_FORMAT_STEREO16; break; - case 4: device->Format = AL_FORMAT_QUAD16; break; - case 6: device->Format = AL_FORMAT_51CHN16; break; - case 7: device->Format = AL_FORMAT_61CHN16; break; - case 8: device->Format = AL_FORMAT_71CHN16; break; - } + case DevFmtUShort: + case DevFmtFloat: + device->FmtType = DevFmtShort; /* fall-through */ - case 2: + case DevFmtShort: info.play.precision = 16; info.play.encoding = AUDIO_ENCODING_LINEAR; break; - default: - AL_PRINT("Unknown format: 0x%x\n", device->Format); - return ALC_FALSE; } - numChannels = aluChannelsFromFormat(device->Format); + numChannels = ChannelsFromDevFmt(device->FmtChans); info.play.sample_rate = device->Frequency; info.play.channels = numChannels; - frameSize = numChannels * aluBytesFromFormat(device->Format); + frameSize = numChannels * BytesFromDevFmt(device->FmtType); info.play.buffer_size = device->UpdateSize*device->NumUpdates * frameSize; if(ioctl(data->fd, AUDIO_SETINFO, &info) < 0) @@ -178,16 +171,16 @@ static ALCboolean solaris_reset_playback(ALCdevice *device) return ALC_FALSE; } - if(aluChannelsFromFormat(device->Format) != info.play.channels) + if(ChannelsFromDevFmt(device->FmtChans) != info.play.channels) { - AL_PRINT("Could not set %d channels, got %d instead\n", aluChannelsFromFormat(device->Format), info.play.channels); + AL_PRINT("Could not set %d channels, got %d instead\n", ChannelsFromDevFmt(device->FmtChans), info.play.channels); return ALC_FALSE; } - if(!((info.play.precision == 8 && aluBytesFromFormat(device->Format) == 1) || - (info.play.precision == 16 && aluBytesFromFormat(device->Format) == 2))) + if(!((info.play.precision == 8 && device->FmtType == DevFmtUByte) || + (info.play.precision == 16 && device->FmtType == DevFmtShort))) { - AL_PRINT("Could not set %d-bit output, got %d\n", aluBytesFromFormat(device->Format)*8, info.play.precision); + AL_PRINT("Could not set %#x sample type, got %d\n", device->FmtType, info.play.precision); return ALC_FALSE; } |