[arch-commits] Commit in alsa-plugins/trunk (3 files)
Jan Steffens
heftig at archlinux.org
Tue Feb 22 08:10:56 UTC 2011
Date: Tuesday, February 22, 2011 @ 03:10:56
Author: heftig
Revision: 110785
upgpkg: alsa-plugins 1.0.24-1
Update to 1.0.24
Modified:
alsa-plugins/trunk/PKGBUILD
Deleted:
alsa-plugins/trunk/Add_handle_underrun_option.patch
alsa-plugins/trunk/Fix_invalid_buffer_pointer_return_value.patch
-----------------------------------------------+
Add_handle_underrun_option.patch | 86 ------------------------
Fix_invalid_buffer_pointer_return_value.patch | 75 --------------------
PKGBUILD | 17 +---
3 files changed, 4 insertions(+), 174 deletions(-)
Deleted: Add_handle_underrun_option.patch
===================================================================
--- Add_handle_underrun_option.patch 2011-02-22 07:49:26 UTC (rev 110784)
+++ Add_handle_underrun_option.patch 2011-02-22 08:10:56 UTC (rev 110785)
@@ -1,86 +0,0 @@
-From: Takashi Iwai <tiwai at suse.de>
-Date: Fri, 9 Jul 2010 12:05:03 +0000 (+0200)
-Subject: pulse: Add handle_underrun option
-X-Git-Url: http://git.alsa-project.org/?p=alsa-plugins.git;a=commitdiff_plain;h=c20d516e229620129ee20175d8fee8511cc3a4bd
-
-pulse: Add handle_underrun option
-
-Added a config option "handle_underrun" to specify whether pulse plugin
-handles the underrun reported from PA. The default value is now set to
-false, i.e. it will ignore underruns in PA (for good reasons below).
-You can take back to the old behavior by setting handle_underrun true.
-
-The original idea was brought by David Henningsson <diwic at ubuntu.com>,
-while this patch is simplified and makes the behavior configurable.
-
-The reasons for avoiding underruns (cited from David's original patch):
-
- Reporting underruns to ALSA seems to do more bad than good, for these reasons:
- * If pulseaudio gets an underrun, the normal way to end that underrun is to
- feed it with more buffers. This is different from the ALSA way of dealing
- with underruns, which requires hardware buffer pointers to be reset.
- * In addition, underrun signals are delivered asynchronously from pulseaudio.
- This means that there might be more buffers on the way to pulseaudio when
- the underrun is reported, making the underrun obsolete. Unfortunately,
- there is currently no known way to determine whether this is the case or
- not.
-
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
----
-
-diff --git a/pulse/pcm_pulse.c b/pulse/pcm_pulse.c
-index b322898..2df0a80 100644
---- a/pulse/pcm_pulse.c
-+++ b/pulse/pcm_pulse.c
-@@ -39,6 +39,7 @@ typedef struct snd_pcm_pulse {
- size_t last_size;
- size_t ptr;
- int underrun;
-+ int handle_underrun;
-
- size_t offset;
-
-@@ -696,8 +697,9 @@ static int pulse_prepare(snd_pcm_ioplug_t * io)
- if (io->stream == SND_PCM_STREAM_PLAYBACK) {
- pa_stream_set_write_callback(pcm->stream,
- stream_request_cb, pcm);
-- pa_stream_set_underflow_callback(pcm->stream,
-- stream_underrun_cb, pcm);
-+ if (pcm->handle_underrun)
-+ pa_stream_set_underflow_callback(pcm->stream,
-+ stream_underrun_cb, pcm);
- r = pa_stream_connect_playback(pcm->stream, pcm->device,
- &pcm->buffer_attr,
- PA_STREAM_AUTO_TIMING_UPDATE |
-@@ -980,6 +982,7 @@ SND_PCM_PLUGIN_DEFINE_FUNC(pulse)
- snd_config_iterator_t i, next;
- const char *server = NULL;
- const char *device = NULL;
-+ int handle_underrun = 0;
- int err;
- snd_pcm_pulse_t *pcm;
-
-@@ -1005,6 +1008,14 @@ SND_PCM_PLUGIN_DEFINE_FUNC(pulse)
- }
- continue;
- }
-+ if (strcmp(id, "handle_underrun") == 0) {
-+ if ((err = snd_config_get_bool(n)) < 0) {
-+ SNDERR("Invalid value for %s", id);
-+ return -EINVAL;
-+ }
-+ handle_underrun = err;
-+ continue;
-+ }
- SNDERR("Unknown field %s", id);
- return -EINVAL;
- }
-@@ -1028,6 +1039,8 @@ SND_PCM_PLUGIN_DEFINE_FUNC(pulse)
- goto error;
- }
-
-+ pcm->handle_underrun = handle_underrun;
-+
- err = pulse_connect(pcm->p, server);
- if (err < 0)
- goto error;
Deleted: Fix_invalid_buffer_pointer_return_value.patch
===================================================================
--- Fix_invalid_buffer_pointer_return_value.patch 2011-02-22 07:49:26 UTC (rev 110784)
+++ Fix_invalid_buffer_pointer_return_value.patch 2011-02-22 08:10:56 UTC (rev 110785)
@@ -1,75 +0,0 @@
-From: David Henningsson <diwic at ubuntu.com>
-Date: Sat, 9 Jan 2010 08:09:14 +0000 (+0100)
-Subject: pulse: Fix invalid buffer pointer return value
-X-Git-Url: http://git.alsa-project.org/?p=alsa-plugins.git;a=commitdiff_plain;h=1675414eca06dcfc20899adf104ace05acfe26a0
-
-pulse: Fix invalid buffer pointer return value
-
-This patch improves recovering from underruns, and prevents hangs inside
-snd_pcm_write* and snd_pcm_read* due to snd_pcm_avail* returning too
-low values. It especially helps low latency situations.
-
-Signed-off-by: David Henningsson <diwic at ubuntu.com>
-Signed-off-by: Takashi Iwai <tiwai at suse.de>
----
-
-diff --git a/pulse/pcm_pulse.c b/pulse/pcm_pulse.c
-index 02a837e..b322898 100644
---- a/pulse/pcm_pulse.c
-+++ b/pulse/pcm_pulse.c
-@@ -90,6 +90,10 @@ static int update_ptr(snd_pcm_pulse_t *pcm)
- if (pcm->io.stream == SND_PCM_STREAM_CAPTURE)
- size -= pcm->offset;
-
-+ /* Prevent accidental overrun of the fake ringbuffer */
-+ if (size >= pcm->buffer_attr.tlength)
-+ size = pcm->buffer_attr.tlength-1;
-+
- if (size > pcm->last_size) {
- pcm->ptr += size - pcm->last_size;
- pcm->ptr %= pcm->buffer_attr.tlength;
-@@ -424,6 +428,7 @@ static snd_pcm_sframes_t pulse_write(snd_pcm_ioplug_t * io,
- snd_pcm_pulse_t *pcm = io->private_data;
- const char *buf;
- snd_pcm_sframes_t ret = 0;
-+ size_t writebytes;
-
- assert(pcm);
-
-@@ -445,13 +450,15 @@ static snd_pcm_sframes_t pulse_write(snd_pcm_ioplug_t * io,
- (char *) areas->addr + (areas->first +
- areas->step * offset) / 8;
-
-- ret = pa_stream_write(pcm->stream, buf, size * pcm->frame_size, NULL, 0, 0);
-+ writebytes = size * pcm->frame_size;
-+ ret = pa_stream_write(pcm->stream, buf, writebytes, NULL, 0, 0);
- if (ret < 0) {
- ret = -EIO;
- goto finish;
- }
-
- /* Make sure the buffer pointer is in sync */
-+ pcm->last_size -= writebytes;
- ret = update_ptr(pcm);
- if (ret < 0)
- goto finish;
-@@ -528,6 +535,7 @@ static snd_pcm_sframes_t pulse_read(snd_pcm_ioplug_t * io,
-
- dst_buf = (char *) dst_buf + frag_length;
- remain_size -= frag_length;
-+ pcm->last_size -= frag_length;
- }
-
- /* Make sure the buffer pointer is in sync */
-@@ -730,6 +738,11 @@ static int pulse_prepare(snd_pcm_ioplug_t * io)
- pcm->offset = 0;
- pcm->underrun = 0;
-
-+ /* Reset fake ringbuffer */
-+ pcm->last_size = 0;
-+ pcm->ptr = 0;
-+ update_ptr(pcm);
-+
- finish:
- pa_threaded_mainloop_unlock(pcm->p->mainloop);
-
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2011-02-22 07:49:26 UTC (rev 110784)
+++ PKGBUILD 2011-02-22 08:10:56 UTC (rev 110785)
@@ -4,8 +4,8 @@
# Contributor: Daniel Ehlers <danielehlers at mindeye.net>
pkgname=alsa-plugins
-pkgver=1.0.23
-pkgrel=2
+pkgver=1.0.24
+pkgrel=1
pkgdesc="Extra alsa plugins"
arch=(i686 x86_64)
url="http://www.alsa-project.org"
@@ -18,20 +18,11 @@
'libsamplerate: libsamplerate resampling plugin'
'speex: libspeexdsp resampling plugin')
options=('!libtool')
-source=("ftp://ftp.alsa-project.org/pub/plugins/$pkgname-$pkgver.tar.bz2"
- Fix_invalid_buffer_pointer_return_value.patch
- Add_handle_underrun_option.patch)
-md5sums=('a671f8102366c5b388133e948e1c85cb'
- '067a51a5157a42989f60078d5225b6c1'
- '56fb0e9cbef9714504ecaa1bb62d7acf')
+source=("ftp://ftp.alsa-project.org/pub/plugins/$pkgname-$pkgver.tar.bz2")
+md5sums=('e4d4c90e11ab9d1a117afbbc1edd2b16')
build() {
cd "$srcdir/$pkgname-$pkgver"
-
- # Improve pulse underrun handling
- patch -Np1 -i "$srcdir/Fix_invalid_buffer_pointer_return_value.patch"
- patch -Np1 -i "$srcdir/Add_handle_underrun_option.patch"
-
./configure --prefix=/usr
make
}
More information about the arch-commits
mailing list