diff --git a/.cvsignore b/.cvsignore index 4149a2c..6ca2361 100644 --- a/.cvsignore +++ b/.cvsignore @@ -25,3 +25,4 @@ alsa-lib-1.0.18.tar.bz2 alsa-lib-1.0.19.tar.bz2 alsa-lib-1.0.20.tar.bz2 alsa-lib-1.0.21.tar.bz2 +alsa-lib-1.0.22.tar.bz2 diff --git a/alsa-lib-1.0.21-dmix-conf.patch b/alsa-lib-1.0.21-dmix-conf.patch deleted file mode 100644 index 316cd3f..0000000 --- a/alsa-lib-1.0.21-dmix-conf.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 1f126fd7c6ef37b04ad745609bbebf0dbbf2e1fd Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 9 Sep 2009 11:38:11 +0200 -Subject: [PATCH] Change dmix.conf to accept user configuration from defaults.dmix..xxx - -An attempt to fix problem described in reverted patch "Fix driver conf -parsing in snd_config_hook_load_for_all_cards()". - -Signed-off-by: Jaroslav Kysela ---- - src/conf/pcm/dmix.conf | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/src/conf/pcm/dmix.conf b/src/conf/pcm/dmix.conf -index 4108ddb..e62cb29 100644 ---- a/src/conf/pcm/dmix.conf -+++ b/src/conf/pcm/dmix.conf -@@ -63,12 +63,12 @@ pcm.!dmix { - name { - @func concat - strings [ -- "cards." -+ "defaults.dmix." - { - @func card_driver - card $CARD - } -- ".pcm.dmix.period_size" -+ ".period_size" - ] - } - default 1024 -@@ -78,12 +78,12 @@ pcm.!dmix { - name { - @func concat - strings [ -- "cards." -+ "defaults.dmix." - { - @func card_driver - card $CARD - } -- ".pcm.dmix.period_time" -+ ".period_time" - ] - } - default -1 -@@ -93,12 +93,12 @@ pcm.!dmix { - name { - @func concat - strings [ -- "cards." -+ "defaults.dmix." - { - @func card_driver - card $CARD - } -- ".pcm.dmix.periods" -+ ".periods" - ] - } - default 16 --- -1.5.5.1 - diff --git a/alsa-lib-1.0.21-revert-hook.patch b/alsa-lib-1.0.21-revert-hook.patch deleted file mode 100644 index aff50dc..0000000 --- a/alsa-lib-1.0.21-revert-hook.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 133819d420d962b6888c280352a5532da93f1a3a Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 9 Sep 2009 11:24:11 +0200 -Subject: [PATCH] Revert "Fix driver conf parsing in snd_config_hook_load_for_all_cards()" - -This reverts commit 96da0c842d14b40ce8e37726b259229634b3aa21. - -This way of fix brokes card-specific configuration loading. -See http://bugzilla.redhat.com bug#521988 for details. - -Appropriate way to handle this problem is to fix the dmix configuration file. - -Signed-off-by: Jaroslav Kysela ---- - src/conf.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/conf.c b/src/conf.c -index 3f0dfe1..570c90f 100644 ---- a/src/conf.c -+++ b/src/conf.c -@@ -3477,8 +3477,9 @@ int snd_config_hook_load_for_all_cards(snd_config_t *root, snd_config_t *config, - err = snd_determine_driver(card, &fdriver); - if (err < 0) - return err; -- if (snd_config_search(root, fdriver, &n) >= 0 && -- snd_config_get_string(n, &driver) >= 0) { -+ if (snd_config_search(root, fdriver, &n) >= 0) { -+ if (snd_config_get_string(n, &driver) < 0) -+ goto __err; - assert(driver); - while (1) { - char *s = strchr(driver, '.'); --- -1.5.5.1 - diff --git a/alsa-lib-1.0.21-speaker.patch b/alsa-lib-1.0.21-speaker.patch deleted file mode 100644 index 14aa79e..0000000 --- a/alsa-lib-1.0.21-speaker.patch +++ /dev/null @@ -1,36 +0,0 @@ -From ac9de424bc0a896e8e30b5ec176daf924a2cefb2 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Mon, 31 Aug 2009 16:41:12 +0200 -Subject: [PATCH] mixer: Add Speaker and Beep names to the weight list - -Added strings "Speaker" and "Beep" to the weight list so that the entries -appear in more appropriate positions. - -Signed-off-by: Takashi Iwai ---- - src/mixer/simple_none.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -diff --git a/src/mixer/simple_none.c b/src/mixer/simple_none.c -index 4802200..9259a08 100644 ---- a/src/mixer/simple_none.c -+++ b/src/mixer/simple_none.c -@@ -134,6 +134,7 @@ static int get_compare_weight(const char *name, unsigned int idx) - static const char *const names[] = { - "Master", - "Headphone", -+ "Speaker", - "Tone", - "Bass", - "Treble", -@@ -158,6 +159,7 @@ static int get_compare_weight(const char *name, unsigned int idx) - "I2S", - "IEC958", - "PC Speaker", -+ "Beep", - "Aux", - "Mono", - "Playback", --- -1.5.5.1 - diff --git a/alsa-lib-1.0.22-closetimer.patch b/alsa-lib-1.0.22-closetimer.patch new file mode 100644 index 0000000..433f554 --- /dev/null +++ b/alsa-lib-1.0.22-closetimer.patch @@ -0,0 +1,65 @@ +From a256766c10c52cb6667de8a65f5cbb332fad4cc7 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Mon, 21 Dec 2009 09:09:42 +0100 +Subject: [PATCH] pcm: Close event timer in pcm_hw plugin + +Dan McCombs discovered that snd_pcm_close() invocations are not leading +to associated timers being closed, which results in successively more +timers being created but not freed. + +Original patch from Daniel T Chen . + +BugLink: https://bugs.launchpad.net/bugs/451893 + +Signed-off-by: Jaroslav Kysela +--- + src/pcm/pcm_hw.c | 26 ++++++++++++++------------ + 1 files changed, 14 insertions(+), 12 deletions(-) + +diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c +index 2095b01..b557912 100644 +--- a/src/pcm/pcm_hw.c ++++ b/src/pcm/pcm_hw.c +@@ -338,18 +338,6 @@ static int snd_pcm_hw_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t * params) + return 0; + } + +-static int snd_pcm_hw_hw_free(snd_pcm_t *pcm) +-{ +- snd_pcm_hw_t *hw = pcm->private_data; +- int fd = hw->fd, err; +- if (ioctl(fd, SNDRV_PCM_IOCTL_HW_FREE) < 0) { +- err = -errno; +- SYSMSG("SNDRV_PCM_IOCTL_HW_FREE failed"); +- return err; +- } +- return 0; +-} +- + static void snd_pcm_hw_close_timer(snd_pcm_hw_t *hw) + { + if (hw->period_timer) { +@@ -421,6 +409,20 @@ static int snd_pcm_hw_change_timer(snd_pcm_t *pcm, int enable) + } else { + snd_pcm_hw_close_timer(hw); + pcm->fast_ops = &snd_pcm_hw_fast_ops; ++ hw->period_event = 0; ++ } ++ return 0; ++} ++ ++static int snd_pcm_hw_hw_free(snd_pcm_t *pcm) ++{ ++ snd_pcm_hw_t *hw = pcm->private_data; ++ int fd = hw->fd, err; ++ snd_pcm_hw_change_timer(pcm, 0); ++ if (ioctl(fd, SNDRV_PCM_IOCTL_HW_FREE) < 0) { ++ err = -errno; ++ SYSMSG("SNDRV_PCM_IOCTL_HW_FREE failed"); ++ return err; + } + return 0; + } +-- +1.5.5.1 + diff --git a/alsa-lib-1.0.22-softvol.patch b/alsa-lib-1.0.22-softvol.patch new file mode 100644 index 0000000..2cda8e6 --- /dev/null +++ b/alsa-lib-1.0.22-softvol.patch @@ -0,0 +1,65 @@ +From bdf80e58af79d4e989cd8d701d97f888c9e2dadc Mon Sep 17 00:00:00 2001 +From: Zerg Cannibal +Date: Mon, 21 Dec 2009 22:19:14 +0100 +Subject: [PATCH] pcm: Fix the sound distortions for S24_3LE stream in pcm_softvol plugin + +This patch fixes sound distortions in alsa-lib "softvol" +for S24_3LE sound stream, when softvol slider is not at 0.0dB +position. + +Signed-off-by: CannibalZerg +Signed-off-by: Jaroslav Kysela +--- + src/pcm/pcm_softvol.c | 22 ++++++++++++++++++++-- + 1 files changed, 20 insertions(+), 2 deletions(-) + +diff --git a/src/pcm/pcm_softvol.c b/src/pcm/pcm_softvol.c +index 637e5cb..2c7c006 100644 +--- a/src/pcm/pcm_softvol.c ++++ b/src/pcm/pcm_softvol.c +@@ -107,7 +107,8 @@ static inline int MULTI_DIV_32x16(int a, unsigned short b) + v.i = a; + y.i = 0; + #if __BYTE_ORDER == __LITTLE_ENDIAN +- x.i = (unsigned int)v.s[0] * b; ++ x.i = (unsigned short)v.s[0]; ++ x.i *= b; + y.s[0] = x.s[1]; + y.i += (int)v.s[1] * b; + #else +@@ -135,6 +136,23 @@ static inline int MULTI_DIV_int(int a, unsigned int b, int swap) + return swap ? (int)bswap_32(fraction) : fraction; + } + ++/* always little endian */ ++static inline int MULTI_DIV_24(int a, unsigned int b) ++{ ++ unsigned int gain = b >> VOL_SCALE_SHIFT; ++ int fraction; ++ fraction = MULTI_DIV_32x16(a, b & VOL_SCALE_MASK); ++ if (gain) { ++ long long amp = (long long)a * gain + fraction; ++ if (amp > (int)0x7fffff) ++ amp = (int)0x7fffff; ++ else if (amp < (int)0x800000) ++ amp = (int)0x800000; ++ return (int)amp; ++ } ++ return fraction; ++} ++ + static inline short MULTI_DIV_short(short a, unsigned int b, int swap) + { + unsigned int gain = b >> VOL_SCALE_SHIFT; +@@ -223,7 +241,7 @@ static inline short MULTI_DIV_short(short a, unsigned int b, int swap) + tmp = src[0] | \ + (src[1] << 8) | \ + (((signed char *) src)[2] << 16); \ +- tmp = MULTI_DIV_int(tmp, vol_scale, 0); \ ++ tmp = MULTI_DIV_24(tmp, vol_scale); \ + dst[0] = tmp; \ + dst[1] = tmp >> 8; \ + dst[2] = tmp >> 16; \ +-- +1.5.5.1 + diff --git a/alsa-lib.spec b/alsa-lib.spec index 24352e3..2ff173d 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -4,8 +4,8 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib -Version: 1.0.21 -Release: 3%{?prever_dot}%{?dist} +Version: 1.0.22 +Release: 1%{?prever_dot}%{?dist} License: LGPLv2+ Group: System Environment/Libraries Source: ftp://ftp.alsa-project.org/pub/lib/%{name}-%{version}%{?prever}%{?postver}.tar.bz2 @@ -13,9 +13,8 @@ Source10: asound.conf Patch0: alsa-lib-1.0.17-config.patch Patch2: alsa-lib-1.0.14-glibc-open.patch Patch4: alsa-lib-1.0.16-no-dox-date.patch -Patch10: alsa-lib-1.0.21-speaker.patch -Patch11: alsa-lib-1.0.21-revert-hook.patch -Patch12: alsa-lib-1.0.21-dmix-conf.patch +Patch10: alsa-lib-1.0.22-closetimer.patch +Patch11: alsa-lib-1.0.22-softvol.patch URL: http://www.alsa-project.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: doxygen @@ -47,9 +46,8 @@ against the ALSA libraries and interfaces. %patch0 -p1 -b .config %patch2 -p1 -b .glibc-open %patch4 -p1 -b .no-dox-date -%patch10 -p1 -b .speaker -%patch11 -p1 -b .revert-hook -%patch12 -p1 -b .dmix-conf +%patch10 -p1 -b .closetimer +%patch11 -p1 -b .softvol %build %configure --disable-aload @@ -99,6 +97,11 @@ rm -rf %{buildroot} %{_datadir}/aclocal/alsa.m4 %changelog +* Mon Dec 28 2009 Jaroslav Kysela - 1.0.22-1 +- Updated to 1.0.22 final +- Fix file descriptor leak in pcm_hw plugin +- Fix sound distortions for S24_LE - softvol plugin + * Wed Sep 9 2009 Jaroslav Kysela - 1.0.21-3 - Add Speaker and Beep control names to mixer weight list - Fix redhat bug #521988 diff --git a/sources b/sources index ec11765..aa883f1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -d8a556041a4cbeeae0c32eadeffb3c74 alsa-lib-1.0.21.tar.bz2 +b28a12348905fb6915bc41f0edb2ecce alsa-lib-1.0.22.tar.bz2