Hello community,
here is the log from the commit of package openal
checked in at Tue Jul 3 16:50:03 CEST 2007.
--------
--- openal/openal.changes 2007-06-09 09:59:10.000000000 +0200
+++ /mounts/work_src_done/STABLE/openal/openal.changes 2007-07-03 16:07:41.000000000 +0200
@@ -1,0 +2,12 @@
+Thu Jun 28 21:06:53 CEST 2007 - tiwai@suse.de
+
+- auto device-selection per speaker-num configuration.
+
+-------------------------------------------------------------------
+Tue Jun 26 14:06:05 CEST 2007 - tiwai@suse.de
+
+- add 5.1/7.1 speaker support
+- fix ALSA backend
+- add speaker-position config in ~/.openalrc.
+
+-------------------------------------------------------------------
New:
----
openal-5.1-support.diff
openal-alsa-backend-fix.diff
openal-device-auto-select.diff
openal-speaker-config.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openal.spec ++++++
--- /var/tmp/diff_new_pack.SK9785/_old 2007-07-03 16:49:09.000000000 +0200
+++ /var/tmp/diff_new_pack.SK9785/_new 2007-07-03 16:49:09.000000000 +0200
@@ -13,11 +13,11 @@
Name: openal
%define DISTRIBUTABLE 1
BuildRequires: SDL-devel esound-devel gcc-c++ nasm
-License: GNU Library General Public License v. 2.0 and 2.1 (LGPL)
+License: LGPL v2 or later
Group: System/Libraries
Autoreqprov: on
Version: 0.0.8
-Release: 55
+Release: 59
URL: http://www.openal.org/
Icon: openal.xpm
Summary: Open Audio Library
@@ -25,6 +25,10 @@
Source2: openalrc
Patch0: %{name}-%{version}-floatmul.patch
Patch1: gcc-4.2.diff
+Patch2: openal-alsa-backend-fix.diff
+Patch3: openal-5.1-support.diff
+Patch4: openal-speaker-config.diff
+Patch5: openal-device-auto-select.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -56,12 +60,14 @@
%setup -q
%patch0
%patch1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
%build
%{?suse_update_config:%{suse_update_config -f linux}}
-#aclocal
-#autoconf
-#autoheader configure.ac
+autoreconf -fi
CFLAGS="$RPM_OPT_FLAGS" \
%ifarch ia64
LDFLAGS=-Wl,-relax \
@@ -113,6 +119,12 @@
%{_libdir}/pkgconfig/*.pc
%changelog
+* Thu Jun 28 2007 - tiwai@suse.de
+- auto device-selection per speaker-num configuration.
+* Tue Jun 26 2007 - tiwai@suse.de
+- add 5.1/7.1 speaker support
+- fix ALSA backend
+- add speaker-position config in ~/.openalrc.
* Sat Jun 09 2007 - dmueller@suse.de
- add patch to fix build with gcc 4.2
* Fri Feb 16 2007 - prusnak@suse.cz
++++++ openal-5.1-support.diff ++++++
# HG changeset patch
# User tiwai
# Date 1182851747 -7200
# Node ID 0db436732d7dcfa45d2d25885eaf071d884a673b
# Parent abe8ba9de91a4d173209ec750df3de6f3e7389fb
Add 5.1 support
diff -r abe8ba9de91a -r 0db436732d7d include/AL/alext.h
--- a/include/AL/alext.h Tue Jun 26 11:53:00 2007 +0200
+++ b/include/AL/alext.h Tue Jun 26 11:55:47 2007 +0200
@@ -17,6 +17,13 @@ extern "C" {
/* four point formats */
#define AL_FORMAT_QUAD8_LOKI 0x10004
#define AL_FORMAT_QUAD16_LOKI 0x10005
+
+/* five point formats */
+#define AL_FORMAT_51_8 0x10006
+#define AL_FORMAT_51_16 0x10007
+/* seven point formats */
+#define AL_FORMAT_71_8 0x10008
+#define AL_FORMAT_71_16 0x10009
/**
* token extensions, base 0x20000
diff -r abe8ba9de91a -r 0db436732d7d src/al_buffer.c
--- a/src/al_buffer.c Tue Jun 26 11:53:00 2007 +0200
+++ b/src/al_buffer.c Tue Jun 26 11:55:47 2007 +0200
@@ -383,6 +383,10 @@ void alBufferData( ALuint bid,
case AL_FORMAT_STEREO16:
case AL_FORMAT_QUAD8_LOKI:
case AL_FORMAT_QUAD16_LOKI:
+ case AL_FORMAT_51_8:
+ case AL_FORMAT_51_16:
+ case AL_FORMAT_71_8:
+ case AL_FORMAT_71_16:
case AL_FORMAT_IMA_ADPCM_MONO16_EXT:
case AL_FORMAT_IMA_ADPCM_STEREO16_EXT:
break;
@@ -458,11 +462,13 @@ void alBufferData( ALuint bid,
{
void *temp_copies[_ALC_MAX_CHANNELS] = { NULL };
ALboolean success = AL_TRUE;
+ int chs;
/* don't use realloc */
_alBufferFreeOrigBuffers(buf);
- for(i = 0; i < _alGetChannelsFromFormat(buf->format); i++)
+ chs = _alGetChannelsFromFormat(buf->format);
+ for(i = 0; i < chs; i++)
{
temp_copies[i] = malloc(retsize);
success = (temp_copies[i] != NULL) ? AL_TRUE : AL_FALSE;
@@ -472,7 +478,7 @@ void alBufferData( ALuint bid,
{
free(cdata);
- for(i = 0; i < _alGetChannelsFromFormat(buf->format); i++)
+ for(i = 0; i < chs; i++)
{
free(temp_copies[i]);
}
@@ -487,43 +493,18 @@ void alBufferData( ALuint bid,
return;
}
- switch(_alGetChannelsFromFormat(buf->format))
+ switch (chs)
{
case 1:
- for(i = 0; i < elementsof(buf->orig_buffers); i++)
+ case 2:
+ case 4:
+ case 6:
+ case 8:
+ for(i = 0; i < elementsof(buf->orig_buffers);)
{
- buf->orig_buffers[i] = temp_copies[0];
- }
-
- break;
- case 2:
- for(i = 0; i < elementsof(buf->orig_buffers); i += 2)
- {
- buf->orig_buffers[i] = temp_copies[0];
- buf->orig_buffers[i+1] = temp_copies[1];
- }
-
- break;
- case 4:
- assert(elementsof(buf->orig_buffers) >= 4);
- for(i = 0; i < elementsof(buf->orig_buffers); i += 4)
- {
- buf->orig_buffers[i] = temp_copies[0];
- buf->orig_buffers[i+1] = temp_copies[1];
- buf->orig_buffers[i+2] = temp_copies[2];
- buf->orig_buffers[i+3] = temp_copies[3];
- }
- break;
- case 6:
- assert(elementsof(buf->orig_buffers) >= 6);
- for(i = 0; i < elementsof(buf->orig_buffers); i += 6)
- {
- buf->orig_buffers[i] = temp_copies[0];
- buf->orig_buffers[i+1] = temp_copies[1];
- buf->orig_buffers[i+2] = temp_copies[2];
- buf->orig_buffers[i+3] = temp_copies[3];
- buf->orig_buffers[i+4] = temp_copies[4];
- buf->orig_buffers[i+5] = temp_copies[5];
+ int j;
+ for (j = 0; j < chs; j++, i++)
+ buf->orig_buffers[i] = temp_copies[0];
}
break;
diff -r abe8ba9de91a -r 0db436732d7d src/al_ext.c
--- a/src/al_ext.c Tue Jun 26 11:53:00 2007 +0200
+++ b/src/al_ext.c Tue Jun 26 11:55:47 2007 +0200
@@ -875,6 +875,18 @@ getExtensionEnumValue( ALenum *value, co
} else if (strcmp(name, "AL_FORMAT_QUAD8_LOKI") == 0) {
*value = AL_FORMAT_QUAD8_LOKI;
return AL_TRUE;
+ } else if (strcmp(name, "AL_FORMAT_51_16") == 0) {
+ *value = AL_FORMAT_51_16;
+ return AL_TRUE;
+ } else if (strcmp(name, "AL_FORMAT_51_8") == 0) {
+ *value = AL_FORMAT_51_8;
+ return AL_TRUE;
+ } else if (strcmp(name, "AL_FORMAT_71_16") == 0) {
+ *value = AL_FORMAT_71_16;
+ return AL_TRUE;
+ } else if (strcmp(name, "AL_FORMAT_71_8") == 0) {
+ *value = AL_FORMAT_71_8;
+ return AL_TRUE;
} else {
return AL_FALSE;
}
diff -r abe8ba9de91a -r 0db436732d7d src/al_main.c
--- a/src/al_main.c Tue Jun 26 11:53:00 2007 +0200
+++ b/src/al_main.c Tue Jun 26 11:55:47 2007 +0200
@@ -248,6 +248,12 @@ ALenum _al_AC2ALFMT( ALuint acformat, AL
ALenum _al_AC2ALFMT( ALuint acformat, ALuint channels ) {
switch( acformat ) {
case AUDIO_U8:
+ if(channels == 8) {
+ return AL_FORMAT_71_8;
+ }
+ if(channels == 6) {
+ return AL_FORMAT_51_8;
+ }
if(channels == 4) {
return AL_FORMAT_QUAD8_LOKI;
}
@@ -260,6 +266,12 @@ ALenum _al_AC2ALFMT( ALuint acformat, AL
break;
case AUDIO_S16LSB:
case AUDIO_S16MSB:
+ if(channels == 8) {
+ return AL_FORMAT_71_16;
+ }
+ if(channels == 6) {
+ return AL_FORMAT_51_16;
+ }
if(channels == 4) {
return AL_FORMAT_QUAD16_LOKI;
}
@@ -288,10 +300,14 @@ ALenum _al_AC2ALFMT( ALuint acformat, AL
*/
ALushort _al_AL2ACFMT( ALenum alformat ) {
switch( alformat ) {
+ case AL_FORMAT_71_8:
+ case AL_FORMAT_51_8:
case AL_FORMAT_QUAD8_LOKI:
case AL_FORMAT_STEREO8:
case AL_FORMAT_MONO8:
return AUDIO_U8;
+ case AL_FORMAT_71_16:
+ case AL_FORMAT_51_16:
case AL_FORMAT_QUAD16_LOKI:
case AL_FORMAT_STEREO16:
case AL_FORMAT_MONO16:
@@ -324,6 +340,12 @@ ALubyte _alGetChannelsFromFormat(ALenum
case AL_FORMAT_QUAD8_LOKI:
case AL_FORMAT_QUAD16_LOKI:
return 4;
+ case AL_FORMAT_51_8:
+ case AL_FORMAT_51_16:
+ return 6;
+ case AL_FORMAT_71_8:
+ case AL_FORMAT_71_16:
+ return 8;
default:
break;
}
@@ -365,6 +387,20 @@ ALenum _al_formatscale(ALenum format, AL
default: return -1;
}
break;
+ case 6:
+ switch(fmt_bits) {
+ case 8: return AL_FORMAT_51_8; break;
+ case 16: return AL_FORMAT_51_16; break;
+ default: return -1;
+ }
+ break;
+ case 8:
+ switch(fmt_bits) {
+ case 8: return AL_FORMAT_71_8; break;
+ case 16: return AL_FORMAT_71_16; break;
+ default: return -1;
+ }
+ break;
default:
#ifdef DEBUG_CONVERT
fprintf(stderr,
@@ -580,6 +616,14 @@ ALenum _al_AL2FMT(ALuint channels, ALuin
case 4:
if(bits == 8) return AL_FORMAT_QUAD8_LOKI;
if(bits == 16) return AL_FORMAT_QUAD16_LOKI;
+ break;
+ case 6:
+ if(bits == 8) return AL_FORMAT_51_8;
+ if(bits == 16) return AL_FORMAT_51_16;
+ break;
+ case 8:
+ if(bits == 8) return AL_FORMAT_71_8;
+ if(bits == 16) return AL_FORMAT_71_16;
break;
}
@@ -719,6 +763,10 @@ ALboolean _al_RAWFORMAT(ALenum format)
case AL_FORMAT_STEREO8:
case AL_FORMAT_QUAD16_LOKI:
case AL_FORMAT_QUAD8_LOKI:
+ case AL_FORMAT_51_8:
+ case AL_FORMAT_51_16:
+ case AL_FORMAT_71_8:
+ case AL_FORMAT_71_16:
return AL_TRUE;
default:
break;
@@ -738,6 +786,8 @@ ALbyte _alGetBitsFromFormat(ALenum forma
case AL_FORMAT_MONO16:
case AL_FORMAT_STEREO16:
case AL_FORMAT_QUAD16_LOKI:
+ case AL_FORMAT_51_16:
+ case AL_FORMAT_71_16:
case AL_FORMAT_IMA_ADPCM_MONO16_EXT:
case AL_FORMAT_IMA_ADPCM_STEREO16_EXT:
return 16;
@@ -745,6 +795,8 @@ ALbyte _alGetBitsFromFormat(ALenum forma
case AL_FORMAT_MONO8:
case AL_FORMAT_STEREO8:
case AL_FORMAT_QUAD8_LOKI:
+ case AL_FORMAT_51_8:
+ case AL_FORMAT_71_8:
return 8;
break;
}
diff -r abe8ba9de91a -r 0db436732d7d src/al_source.c
--- a/src/al_source.c Tue Jun 26 11:53:00 2007 +0200
+++ b/src/al_source.c Tue Jun 26 11:55:47 2007 +0200
@@ -58,6 +58,9 @@ static void _alMonoifyOffset1to4(ALshort
static void _alMonoifyOffset1to4(ALshort **dstref, ALuint offset, ALvoid *src, ALuint ssize);
static void _alMonoifyOffset2to4(ALshort **dstref, ALuint offset, ALvoid *src, ALuint ssize);
static void _alMonoifyOffset4to4(ALshort **dstref, ALuint offset, ALvoid *src, ALuint ssize);
+static void _alMonoifyOffsetNtoN( ALshort **dsts, ALuint offset,
+ ALvoid *srcp, ALuint size,
+ ALuint dstchan, ALuint srcchan);
/*
* Channelify functions copy the PCM data from srcs[0..nc-1] into an
@@ -67,6 +70,8 @@ static void _alMonoifyOffset4to4(ALshort
*/
static void _alChannelify2Offset(ALshort *dst, ALuint offset, ALshort **srcs, ALuint size);
static void _alChannelify4Offset(ALshort *dst, ALuint offset, ALshort **srcs, ALuint size);
+static void _alChannelifyNOffset( ALshort *dst, ALuint offset,
+ ALshort **srcs, ALuint size, int nchan );
/* static data */
static ALshort *stereoptr = NULL; /*
@@ -1850,6 +1855,16 @@ void _alMonoifyOffset(ALshort **dstref,
void _alMonoifyOffset(ALshort **dstref, ALuint offset,
ALvoid *srcp, ALuint size, ALuint dc, ALuint sc) {
switch( dc ) {
+ case 6:
+ case 8:
+ if (sc == 1 || sc == 2 || sc == 4)
+ _alMonoifyOffsetNtoN(dstref, offset, srcp, size, dc, sc);
+ else {
+ fprintf(stderr, "unhandled Monoify (dc %d sc %d)\n",
+ dc, sc);
+ break;
+ }
+ break;
case 4:
switch(sc) {
case 1:
@@ -1901,6 +1916,28 @@ void _alMonoifyOffset(ALshort **dstref,
return;
}
+static void _alMonoifyOffsetNtoN( ALshort **dsts, ALuint offset,
+ ALvoid *srcp, ALuint size,
+ ALuint dstchan, ALuint srcchan) {
+ ALshort *src = (ALshort *) srcp;
+ ALshort *dst[_ALC_MAX_CHANNELS];
+
+ int len = size / sizeof *src;
+ int i, j, n;
+
+ offset /= sizeof **dsts;
+ for (i = 0; i < dstchan; i++)
+ dst[i] = dsts[0] + offset;
+
+ for(i = 0; i < len; i++) {
+ for (n = 0; n < dstchan; )
+ for (j = 0; j < srcchan; j++, n++)
+ dst[n][i] = src[j];
+ src += srcchan;
+ }
+
+}
+
static void _alMonoifyOffset1to4( ALshort **dsts, ALuint offset,
ALvoid *srcp, ALuint size) {
ALshort *src = (ALshort *) srcp;
@@ -2069,9 +2106,16 @@ void _alChannelifyOffset( ALshort *dst,
{
switch( nc )
{
+ case 6:
+ case 8:
+ case 4:
+ _alChannelifyNOffset(dst, offset, srcs, size, nc);
+ break;
+#if 0
case 4:
_alChannelify4Offset(dst, offset, srcs, size);
break;
+#endif
case 2:
_alChannelify2Offset(dst, offset, srcs, size);
break;
@@ -2144,6 +2188,25 @@ void _alChannelify4Offset( ALshort *dst,
}
+void _alChannelifyNOffset( ALshort *dst, ALuint offset,
+ ALshort **srcs, ALuint size, int nchan ) {
+ ALshort *src[_ALC_MAX_CHANNELS];
+ ALuint i, j;
+
+ for (i = 0; i < nchan; i++)
+ src[i] = &srcs[i][offset / sizeof *srcs];
+
+ size /= sizeof *dst; /* we need sample offsets */
+
+ for (i = 0; i < size; i++ ) {
+ for (j = 0; j < nchan; j++) {
+ *dst++ = *src[j];
+ src[j]++;
+ }
+ }
+
+ return;
+}
/*
* alDeleteSources( ALsizei n, ALuint *sources )
diff -r abe8ba9de91a -r 0db436732d7d src/al_types.h
--- a/src/al_types.h Tue Jun 26 11:53:00 2007 +0200
+++ b/src/al_types.h Tue Jun 26 11:55:47 2007 +0200
@@ -21,7 +21,7 @@
#include