output/openal: force 16 bit playback, as 8 bit doesn't work
The OpenAL specification says that AL_FORMAT_MONO8 and AL_FORMAT_STEREO8 expect unsigned 8 bit samples, but MPD uses unsigned samples.
This commit is contained in:
parent
097e5dfbdc
commit
96ad5b8444
1
NEWS
1
NEWS
|
@ -1,6 +1,7 @@
|
||||||
ver 0.16.7 (2011/??/??)
|
ver 0.16.7 (2011/??/??)
|
||||||
* output:
|
* output:
|
||||||
- httpd: fix excessive buffering
|
- httpd: fix excessive buffering
|
||||||
|
- openal: force 16 bit playback, as 8 bit doesn't work
|
||||||
|
|
||||||
|
|
||||||
ver 0.16.6 (2011/12/01)
|
ver 0.16.6 (2011/12/01)
|
||||||
|
|
|
@ -58,6 +58,10 @@ openal_output_quark(void)
|
||||||
static ALenum
|
static ALenum
|
||||||
openal_audio_format(struct audio_format *audio_format)
|
openal_audio_format(struct audio_format *audio_format)
|
||||||
{
|
{
|
||||||
|
/* note: cannot map SAMPLE_FORMAT_S8 to AL_FORMAT_STEREO8 or
|
||||||
|
AL_FORMAT_MONO8 since OpenAL expects unsigned 8 bit
|
||||||
|
samples, while MPD uses signed samples */
|
||||||
|
|
||||||
switch (audio_format->format) {
|
switch (audio_format->format) {
|
||||||
case SAMPLE_FORMAT_S16:
|
case SAMPLE_FORMAT_S16:
|
||||||
if (audio_format->channels == 2)
|
if (audio_format->channels == 2)
|
||||||
|
@ -69,16 +73,6 @@ openal_audio_format(struct audio_format *audio_format)
|
||||||
audio_format->channels = 1;
|
audio_format->channels = 1;
|
||||||
return openal_audio_format(audio_format);
|
return openal_audio_format(audio_format);
|
||||||
|
|
||||||
case SAMPLE_FORMAT_S8:
|
|
||||||
if (audio_format->channels == 2)
|
|
||||||
return AL_FORMAT_STEREO8;
|
|
||||||
if (audio_format->channels == 1)
|
|
||||||
return AL_FORMAT_MONO8;
|
|
||||||
|
|
||||||
/* fall back to mono */
|
|
||||||
audio_format->channels = 1;
|
|
||||||
return openal_audio_format(audio_format);
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/* fall back to 16 bit */
|
/* fall back to 16 bit */
|
||||||
audio_format->format = SAMPLE_FORMAT_S16;
|
audio_format->format = SAMPLE_FORMAT_S16;
|
||||||
|
|
Loading…
Reference in New Issue