OBS User unknown 2009-01-22 15:43:10 +00:00 committed by Git OBS Bridge
parent 203f09df1d
commit 17d72ab7df
9 changed files with 69 additions and 419 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c487645d32b8124b9ae224b8929e5aa45e581bd8d8c8da666add423cf927d1ea
size 790052

3
alsa-lib-1.0.19.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:32ee26d93a25963fdc49b4b5ccd014749d675e33f419022c646a61c31a4a2886
size 792682

View File

@ -1,33 +0,0 @@
From 0400fa6f8d979b708bb36a35c9fbe22e3949912d Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Wed, 10 Dec 2008 18:20:50 +0100
Subject: [PATCH] Don't accept an empty string for $ALSA_CONFIG_PATH
The variable $ALSA_CONFIG_PATH specifies the config path, but the current
code accepts the empty string and results in a mysterious error because
no config file is found.
This patch fixes the check of the variable and takes the default value
if the string is empty.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
src/conf.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/conf.c b/src/conf.c
index 32a7608..c86f819 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -2962,7 +2962,7 @@ int snd_config_update_r(snd_config_t **_top, snd_config_update_t **_update, cons
configs = cfgs;
if (!configs) {
configs = getenv(ALSA_CONFIG_PATH_VAR);
- if (!configs)
+ if (!configs || !*configs)
configs = ALSA_CONFIG_PATH_DEFAULT;
}
for (k = 0, c = configs; (l = strcspn(c, ": ")) > 0; ) {
--
1.6.0.5

View File

@ -1,94 +1,57 @@
diff --git a/configure.in b/configure.in
index 9a71d95..ea6a8a0 100644
--- a/configure.in
+++ b/configure.in
@@ -367,6 +367,7 @@ AC_ARG_ENABLE(seq,
AC_ARG_ENABLE(alisp,
AS_HELP_STRING([--disable-alisp], [disable the alisp component]),
[build_alisp="$enableval"], [build_alisp="yes"])
+test "$softfloat" = "yes" && build_alisp="no"
AC_ARG_ENABLE(old-symbols,
AS_HELP_STRING([--disable-old-symbols], [disable old obsoleted symbols]),
[keep_old_symbols="$enableval"], [keep_old_symbols="yes"])
@@ -474,6 +475,7 @@ fi
if test "$softfloat" = "yes"; then
build_pcm_lfloat="no"
+ build_pcm_ladspa="no"
fi
AM_CONDITIONAL(BUILD_PCM_PLUGIN, test x$build_pcm_plugin = xyes)
diff --git a/modules/mixer/simple/Makefile.am b/modules/mixer/simple/Makefile.am
index f73871f..bad0944 100644
--- a/modules/mixer/simple/Makefile.am
+++ b/modules/mixer/simple/Makefile.am
@@ -21,11 +21,11 @@ smixer_sbase_la_LIBADD = ../../../src/libasound.la
smixer_ac97_la_SOURCES = ac97.c sbasedl.c
smixer_ac97_la_LDFLAGS = -module -avoid-version $(LDFLAGS_NOUNDEFINED)
-smixer_ac97_la_LIBADD = ../../../src/libasound.la
+smixer_ac97_la_LIBADD = ../../../src/libasound.la -ldl
smixer_hda_la_SOURCES = hda.c sbasedl.c
smixer_hda_la_LDFLAGS = -module -avoid-version $(LDFLAGS_NOUNDEFINED)
-smixer_hda_la_LIBADD = ../../../src/libasound.la
+smixer_hda_la_LIBADD = ../../../src/libasound.la -ldl
if BUILD_PYTHON
smixer_python_la_SOURCES = python.c
diff --git a/src/mixer/simple_none.c b/src/mixer/simple_none.c
index ef277de..8d6aae8 100644
index 0f4dd3a..4802200 100644
--- a/src/mixer/simple_none.c
+++ b/src/mixer/simple_none.c
@@ -809,14 +809,14 @@ static int simple_update(snd_mixer_elem_t *melem)
if (caps & (SM_CAP_GSWITCH|SM_CAP_CSWITCH))
caps |= SM_CAP_CSWITCH_JOIN;
if (caps & (SM_CAP_GVOLUME|SM_CAP_CVOLUME))
- caps |= SM_CAP_PVOLUME_JOIN;
+ caps |= SM_CAP_CVOLUME_JOIN;
if (pchannels > 1 || cchannels > 1) {
if (simple->ctls[CTL_SINGLE].elem &&
simple->ctls[CTL_SINGLE].values > 1) {
if (caps & SM_CAP_GSWITCH)
- caps &= ~SM_CAP_PSWITCH_JOIN;
+ caps &= ~(SM_CAP_PSWITCH_JOIN|SM_CAP_CSWITCH_JOIN);
else
- caps &= ~SM_CAP_PVOLUME_JOIN;
+ caps &= ~(SM_CAP_PVOLUME_JOIN|SM_CAP_CVOLUME_JOIN);
@@ -1450,7 +1450,14 @@ static int simple_add1(snd_mixer_class_t *class, const char *name,
}
if (simple->ctls[CTL_GLOBAL_ROUTE].elem ||
(simple->ctls[CTL_GLOBAL_SWITCH].elem &&
@@ -946,6 +946,8 @@ static int base_len(const char *name, selem_ctl_type_t *type)
static int _snd_mixer_selem_set_volume(snd_mixer_elem_t *elem, int dir, snd_mixer_selem_channel_id_t channel, long value)
{
selem_none_t *s = snd_mixer_elem_get_private(elem);
+ if (s->selem.caps & SM_CAP_GVOLUME)
+ dir = SM_PLAY;
if ((unsigned int) channel >= s->str[dir].channels)
return 0;
if (value < s->str[dir].min || value > s->str[dir].max)
@@ -1064,6 +1066,8 @@ static int get_volume_ops(snd_mixer_elem_t *elem, int dir,
snd_mixer_selem_channel_id_t channel, long *value)
{
selem_none_t *s = snd_mixer_elem_get_private(elem);
+ if (s->selem.caps & SM_CAP_GVOLUME)
+ dir = SM_PLAY;
if ((unsigned int) channel >= s->str[dir].channels)
return -EINVAL;
*value = s->str[dir].vol[channel];
@@ -1158,6 +1162,8 @@ static int get_dB_range_ops(snd_mixer_elem_t *elem, int dir,
selem_none_t *s = snd_mixer_elem_get_private(elem);
selem_ctl_t *c;
+ if (s->selem.caps & SM_CAP_GVOLUME)
+ dir = SM_PLAY;
c = get_selem_ctl(s, dir);
if (! c)
return -EINVAL;
@@ -1199,6 +1205,8 @@ static int get_dB_ops(snd_mixer_elem_t *elem,
int err;
long volume, db_gain;
+ if (s->selem.caps & SM_CAP_GVOLUME)
+ dir = SM_PLAY;
c = get_selem_ctl(s, dir);
if (! c)
return -EINVAL;
@@ -1216,6 +1224,8 @@ static int get_switch_ops(snd_mixer_elem_t *elem, int dir,
snd_mixer_selem_channel_id_t channel, int *value)
{
selem_none_t *s = snd_mixer_elem_get_private(elem);
+ if (s->selem.caps & SM_CAP_GSWITCH)
+ dir = SM_PLAY;
if ((unsigned int) channel >= s->str[dir].channels)
return -EINVAL;
*value = !!(s->str[dir].sw & (1 << channel));
@@ -1240,6 +1250,8 @@ static int ask_dB_vol_ops(snd_mixer_elem_t *elem, int dir,
selem_none_t *s = snd_mixer_elem_get_private(elem);
selem_ctl_t *c;
+ if (s->selem.caps & SM_CAP_GVOLUME)
+ dir = SM_PLAY;
c = get_selem_ctl(s, dir);
if (! c)
return -EINVAL;
@@ -1255,6 +1267,8 @@ static int set_dB_ops(snd_mixer_elem_t *elem, int dir,
long value;
int err;
+ if (s->selem.caps & SM_CAP_GVOLUME)
+ dir = SM_PLAY;
c = get_selem_ctl(s, dir);
if (! c)
return -EINVAL;
@@ -1269,6 +1283,8 @@ static int set_switch_ops(snd_mixer_elem_t *elem, int dir,
{
int changed;
selem_none_t *s = snd_mixer_elem_get_private(elem);
+ if (s->selem.caps & SM_CAP_GSWITCH)
+ dir = SM_PLAY;
if (dir == SM_PLAY) {
if (! (s->selem.caps & (SM_CAP_GSWITCH|SM_CAP_PSWITCH)))
return -EINVAL;
if (ctype != SND_CTL_ELEM_TYPE_BOOLEAN)
return 0;
+#ifdef HAVE_SOFT_FLOAT
+ /* up to 256 channels */
+ for (n = 1; n < 256; n++)
+ if (n * n == values)
+ break;
+#else
n = sqrt((double)values);
+#endif
if (n * n != values)
return 0;
values = n;

View File

@ -1,118 +0,0 @@
commit cb1fd837d93fbc495eab4aa3efaf8072937ff2df
Author: Takashi Iwai <tiwai@suse.de>
Date: Wed Nov 19 14:59:03 2008 +0100
Add linear plugin wrapping iec958 PCM for ice1724-based boards
The ice1724-based cards can handle only 32bit while the apps almost
expet 16bit format for SPDIF I/O. This prevents the default config
working on many apps like mplayer, xine, etc.
This patch simply adds the least automatic conversion by linear plugin.
Note that "plug" isn't used here. Otherwise we get a problem of the
routing (plug over plug is buggy).
Signed-off-by: Takashi Iwai <tiwai@suse.de>
diff --git a/src/conf/cards/Aureon51.conf b/src/conf/cards/Aureon51.conf
index 1b8ee85..24b4d94 100644
--- a/src/conf/cards/Aureon51.conf
+++ b/src/conf/cards/Aureon51.conf
@@ -121,6 +121,8 @@ Aureon51.pcm.iec958.0 {
}
type asym
playback.pcm {
+ type linear
+ slave.pcm {
type hooks
slave.pcm {
type hw
@@ -147,8 +149,12 @@ Aureon51.pcm.iec958.0 {
}
]
}
+ }
+ slave.format S32_LE
}
capture.pcm {
+ type linear
+ slave.pcm {
type hooks
slave.pcm {
type hw
@@ -167,5 +173,7 @@ Aureon51.pcm.iec958.0 {
}
]
}
+ }
+ slave.format S32_LE
}
}
diff --git a/src/conf/cards/Aureon71.conf b/src/conf/cards/Aureon71.conf
index 8a88cce..1479c25 100644
--- a/src/conf/cards/Aureon71.conf
+++ b/src/conf/cards/Aureon71.conf
@@ -132,6 +132,8 @@ Aureon71.pcm.iec958.0 {
}
type asym
playback.pcm {
+ type linear
+ slave.pcm {
type hooks
slave.pcm {
type hw
@@ -158,8 +160,12 @@ Aureon71.pcm.iec958.0 {
}
]
}
+ }
+ slave.format S32_LE
}
capture.pcm {
+ type linear
+ slave.pcm {
type hooks
slave.pcm {
type hw
@@ -178,5 +184,7 @@ Aureon71.pcm.iec958.0 {
}
]
}
+ }
+ slave.format S32_LE
}
}
diff --git a/src/conf/cards/ICE1724.conf b/src/conf/cards/ICE1724.conf
index 7f15332..e806b36 100644
--- a/src/conf/cards/ICE1724.conf
+++ b/src/conf/cards/ICE1724.conf
@@ -166,6 +166,8 @@ ICE1724.pcm.iec958.0 {
}
type asym
playback.pcm {
+ type linear
+ slave.pcm {
type hooks
slave.pcm {
type hw
@@ -192,8 +194,12 @@ ICE1724.pcm.iec958.0 {
}
]
}
+ }
+ slave.format S32_LE
}
capture.pcm {
+ type linear
+ slave.pcm {
type hooks
slave.pcm {
type hw
@@ -212,5 +218,7 @@ ICE1724.pcm.iec958.0 {
}
]
}
+ }
+ slave.format S32_LE
}
}

View File

@ -1,26 +0,0 @@
commit 73ddcda842935c2aed6dd57d141688fe61985b26
Author: Takashi Iwai <tiwai@suse.de>
Date: Wed Nov 19 16:14:27 2008 +0100
Fix segfault with invalid meter plugin option
snd_pcm_meter_add_scope_conf() may cause a segfault when pcm_scope_type
isn't defined.
Initialize type_conf properly to avoid it.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
diff --git a/src/pcm/pcm_meter.c b/src/pcm/pcm_meter.c
index 0dedb42..83d643a 100644
--- a/src/pcm/pcm_meter.c
+++ b/src/pcm/pcm_meter.c
@@ -603,7 +603,7 @@ static int snd_pcm_meter_add_scope_conf(snd_pcm_t *pcm, const char *name,
snd_config_iterator_t i, next;
const char *id;
const char *lib = NULL, *open_name = NULL, *str = NULL;
- snd_config_t *c, *type_conf;
+ snd_config_t *c, *type_conf = NULL;
int (*open_func)(snd_pcm_t *, const char *,
snd_config_t *, snd_config_t *) = NULL;
snd_pcm_meter_t *meter = pcm->private_data;

View File

@ -1,139 +0,0 @@
From 48e4d089dc68ad29267fe6b9c7efc4a66611aeda Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Thu, 4 Dec 2008 15:21:40 +0100
Subject: [PATCH] Fix softvol access refine
The commit a13707da6bb0161db855a146c3e4d1d849e4108b
pcm_softvol plugin: remove access type change for refine
breaks the softvol in the case of RW -> MMAP. The slave of softvol
must be an mmap although the previous fix forces RW access.
This patch reverts the commit, and the fixed access refine method
to hanle non-interleaved <-> interleaved changes.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
src/pcm/pcm_softvol.c | 56 +++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 52 insertions(+), 4 deletions(-)
diff --git a/src/pcm/pcm_softvol.c b/src/pcm/pcm_softvol.c
index 4c5f0f7..637e5cb 100644
--- a/src/pcm/pcm_softvol.c
+++ b/src/pcm/pcm_softvol.c
@@ -399,6 +399,7 @@ static int snd_pcm_softvol_hw_refine_cprepare(snd_pcm_t *pcm,
{
int err;
snd_pcm_softvol_t *svol = pcm->private_data;
+ snd_pcm_access_mask_t access_mask = { SND_PCM_ACCBIT_SHM };
snd_pcm_format_mask_t format_mask = {
{
(1ULL << SND_PCM_FORMAT_S16_LE) |
@@ -412,6 +413,10 @@ static int snd_pcm_softvol_hw_refine_cprepare(snd_pcm_t *pcm,
snd_pcm_format_mask_none(&format_mask);
snd_pcm_format_mask_set(&format_mask, svol->sformat);
}
+ err = _snd_pcm_hw_param_set_mask(params, SND_PCM_HW_PARAM_ACCESS,
+ &access_mask);
+ if (err < 0)
+ return err;
err = _snd_pcm_hw_param_set_mask(params, SND_PCM_HW_PARAM_FORMAT,
&format_mask);
if (err < 0)
@@ -429,7 +434,10 @@ static int snd_pcm_softvol_hw_refine_cprepare(snd_pcm_t *pcm,
static int snd_pcm_softvol_hw_refine_sprepare(snd_pcm_t *pcm, snd_pcm_hw_params_t *sparams)
{
snd_pcm_softvol_t *svol = pcm->private_data;
+ snd_pcm_access_mask_t saccess_mask = { SND_PCM_ACCBIT_MMAP };
_snd_pcm_hw_params_any(sparams);
+ _snd_pcm_hw_param_set_mask(sparams, SND_PCM_HW_PARAM_ACCESS,
+ &saccess_mask);
if (svol->sformat != SND_PCM_FORMAT_UNKNOWN) {
_snd_pcm_hw_params_set_format(sparams, svol->sformat);
_snd_pcm_hw_params_set_subformat(sparams, SND_PCM_SUBFORMAT_STD);
@@ -437,14 +445,45 @@ static int snd_pcm_softvol_hw_refine_sprepare(snd_pcm_t *pcm, snd_pcm_hw_params_
return 0;
}
+/*
+ * refine the access mask
+ */
+static int check_access_mask(snd_pcm_hw_params_t *src,
+ snd_pcm_hw_params_t *dst)
+{
+ const snd_pcm_access_mask_t *mask;
+ snd_pcm_access_mask_t smask;
+
+ mask = snd_pcm_hw_param_get_mask(src, SND_PCM_HW_PARAM_ACCESS);
+ snd_mask_none(&smask);
+ if (snd_pcm_access_mask_test(mask, SND_PCM_ACCESS_RW_INTERLEAVED) ||
+ snd_pcm_access_mask_test(mask, SND_PCM_ACCESS_MMAP_INTERLEAVED)) {
+ snd_pcm_access_mask_set(&smask,
+ SND_PCM_ACCESS_RW_INTERLEAVED);
+ snd_pcm_access_mask_set(&smask,
+ SND_PCM_ACCESS_MMAP_INTERLEAVED);
+ }
+ if (snd_pcm_access_mask_test(mask, SND_PCM_ACCESS_RW_NONINTERLEAVED) ||
+ snd_pcm_access_mask_test(mask, SND_PCM_ACCESS_MMAP_NONINTERLEAVED)) {
+ snd_pcm_access_mask_set(&smask,
+ SND_PCM_ACCESS_RW_NONINTERLEAVED);
+ snd_pcm_access_mask_set(&smask,
+ SND_PCM_ACCESS_MMAP_NONINTERLEAVED);
+ }
+ if (snd_pcm_access_mask_test(mask, SND_PCM_ACCESS_MMAP_COMPLEX))
+ snd_pcm_access_mask_set(&smask,
+ SND_PCM_ACCESS_MMAP_COMPLEX);
+
+ return _snd_pcm_hw_param_set_mask(dst, SND_PCM_HW_PARAM_ACCESS, &smask);
+}
+
static int snd_pcm_softvol_hw_refine_schange(snd_pcm_t *pcm,
snd_pcm_hw_params_t *params,
snd_pcm_hw_params_t *sparams)
{
snd_pcm_softvol_t *svol = pcm->private_data;
int err;
- unsigned int links = (SND_PCM_HW_PARBIT_ACCESS |
- SND_PCM_HW_PARBIT_CHANNELS |
+ unsigned int links = (SND_PCM_HW_PARBIT_CHANNELS |
SND_PCM_HW_PARBIT_RATE |
SND_PCM_HW_PARBIT_PERIODS |
SND_PCM_HW_PARBIT_PERIOD_SIZE |
@@ -459,6 +498,11 @@ static int snd_pcm_softvol_hw_refine_schange(snd_pcm_t *pcm,
err = _snd_pcm_hw_params_refine(sparams, links, params);
if (err < 0)
return err;
+
+ err = check_access_mask(params, sparams);
+ if (err < 0)
+ return err;
+
return 0;
}
@@ -468,8 +512,7 @@ static int snd_pcm_softvol_hw_refine_cchange(snd_pcm_t *pcm,
{
snd_pcm_softvol_t *svol = pcm->private_data;
int err;
- unsigned int links = (SND_PCM_HW_PARBIT_ACCESS |
- SND_PCM_HW_PARBIT_CHANNELS |
+ unsigned int links = (SND_PCM_HW_PARBIT_CHANNELS |
SND_PCM_HW_PARBIT_RATE |
SND_PCM_HW_PARBIT_PERIODS |
SND_PCM_HW_PARBIT_PERIOD_SIZE |
@@ -484,6 +527,11 @@ static int snd_pcm_softvol_hw_refine_cchange(snd_pcm_t *pcm,
err = _snd_pcm_hw_params_refine(params, links, sparams);
if (err < 0)
return err;
+
+ err = check_access_mask(sparams, params);
+ if (err < 0)
+ return err;
+
return 0;
}
--
1.6.0.4

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Thu Jan 22 13:59:24 CET 2009 - tiwai@suse.de
- updated to version 1.0.19:
* including previous patches
- fix build without math support
-------------------------------------------------------------------
Tue Jan 13 12:34:56 CET 2009 - olh@suse.de

View File

@ -20,7 +20,7 @@
Name: alsa
BuildRequires: doxygen
%define package_version 1.0.18
%define package_version 1.0.19
License: GPL v2 or later
Group: System/Libraries
Requires: alsa-utils
@ -34,7 +34,7 @@ Obsoletes: alsa-64bit
#
Summary: Advanced Linux Sound Architecture
Version: 1.0.18
Release: 11
Release: 13
Source: ftp://ftp.alsa-project.org/pub/lib/alsa-lib-%{package_version}.tar.bz2
Source8: 40-alsa.rules
Source11: alsasound
@ -51,10 +51,6 @@ Source32: all_notes_off.mid
Source33: alsa-info.sh
Source34: alsa-init.sh
Patch: alsa-lib-git-fixes.diff
Patch1: alsa-lib-ice1724-spdif-fix.diff
Patch2: alsa-lib-meter-plugin-segfault-fix.diff
Patch3: alsa-lib-softvol-access-refine-fix.diff
Patch4: alsa-lib-conf-path-check-fix.diff
Url: http://www.alsa-project.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -127,10 +123,6 @@ Authors:
%prep
%setup -q -n alsa-lib-%{package_version}
%patch -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%build
# build alsa-lib
@ -252,6 +244,10 @@ exit 0
%{_datadir}/alsa
%changelog
* Thu Jan 22 2009 tiwai@suse.de
- updated to version 1.0.19:
* including previous patches
- fix build without math support
* Tue Jan 13 2009 olh@suse.de
- obsolete old -XXbit packages (bnc#437293)
* Mon Jan 12 2009 tiwai@suse.de