-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5080c13
commit 5842603
Showing
5 changed files
with
125 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
pcaudiolib |
19 changes: 19 additions & 0 deletions
19
srcpkgs/pcaudiolib/patches/upstream-fix-alsa-sample-size.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
commit d6a6b00aa4334b461c1a09c27b6c681eaac8da8a | ||
Author: Martin Schreiber <mse00000@gmail.com> | ||
Date: Sat Mar 10 06:55:58 2018 +0100 | ||
|
||
* Alsa: fixed sample_size calculation, multiply with channel count. | ||
|
||
diff --git src/alsa.c src/alsa.c | ||
index 34e39be..6af1941 100644 | ||
--- src/alsa.c | ||
+++ src/alsa.c | ||
@@ -53,7 +53,7 @@ alsa_object_open(struct audio_object *object, | ||
return -EEXIST; | ||
|
||
snd_pcm_format_t pcm_format; | ||
-#define FORMAT(srcfmt, dstfmt, size) case srcfmt: pcm_format = dstfmt; self->sample_size = size; break; | ||
+#define FORMAT(srcfmt, dstfmt, size) case srcfmt: pcm_format = dstfmt; self->sample_size = size*channels; break; | ||
switch (format) | ||
{ | ||
FORMAT(AUDIO_OBJECT_FORMAT_ALAW, SND_PCM_FORMAT_A_LAW, 1) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
commit a41d46e816d2cbcd93564c42b65a87af547bcb2d | ||
Author: Samuel Thibault <samuel.thibault@ens-lyon.org> | ||
Date: Sun Oct 11 17:34:57 2020 +0200 | ||
|
||
Fix cancellation snappiness | ||
|
||
Screen reader users report getting late cancellation, or even mixtures | ||
of speech. This is because the default buffering parameters of alsa or | ||
pulseaudio are relatively large. | ||
|
||
This change sets alsa and pulseaudio buffer sizes to 10ms worth of audio, | ||
which is the human snappiness perception limit. | ||
|
||
diff --git src/alsa.c src/alsa.c | ||
index 64d5a90..c856788 100644 | ||
--- src/alsa.c | ||
+++ src/alsa.c | ||
@@ -99,6 +99,7 @@ alsa_object_open(struct audio_object *object, | ||
|
||
snd_pcm_hw_params_t *params = NULL; | ||
snd_pcm_hw_params_malloc(¶ms); | ||
+ snd_pcm_uframes_t bufsize = (rate * channels * LATENCY) / 1000; | ||
|
||
int err = 0; | ||
if ((err = snd_pcm_open(&self->handle, self->device ? self->device : "default", SND_PCM_STREAM_PLAYBACK, 0)) < 0) | ||
@@ -113,6 +114,8 @@ alsa_object_open(struct audio_object *object, | ||
goto error; | ||
if ((err = snd_pcm_hw_params_set_channels(self->handle, params, channels)) < 0) | ||
goto error; | ||
+ if ((err = snd_pcm_hw_params_set_buffer_size_near(self->handle, params, &bufsize)) < 0) | ||
+ goto error; | ||
if ((err = snd_pcm_hw_params(self->handle, params)) < 0) | ||
goto error; | ||
if ((err = snd_pcm_prepare(self->handle)) < 0) | ||
diff --git src/audio_priv.h src/audio_priv.h | ||
index 9526138..669a037 100644 | ||
--- src/audio_priv.h | ||
+++ src/audio_priv.h | ||
@@ -52,6 +52,10 @@ struct audio_object | ||
int error); | ||
}; | ||
|
||
+/* We try to aim for 10ms cancelation latency, which will be perceived as | ||
+ * "snappy" by users */ | ||
+#define LATENCY 10 | ||
+ | ||
#if defined(_WIN32) || defined(_WIN64) | ||
|
||
#include <windows.h> | ||
diff --git src/pulseaudio.c src/pulseaudio.c | ||
index d23366d..2f80c62 100644 | ||
--- src/pulseaudio.c | ||
+++ src/pulseaudio.c | ||
@@ -74,6 +74,13 @@ pulseaudio_object_open(struct audio_object *object, | ||
} | ||
|
||
int error = 0; | ||
+ pa_buffer_attr battr; | ||
+ | ||
+ battr.fragsize = (uint32_t) -1; | ||
+ battr.maxlength = (uint32_t) -1; | ||
+ battr.minreq = (uint32_t) -1; | ||
+ battr.prebuf = (uint32_t) -1; | ||
+ battr.tlength = pa_bytes_per_second(&self->ss) * LATENCY / 1000; | ||
self->s = pa_simple_new(NULL, | ||
self->application_name, | ||
PA_STREAM_PLAYBACK, | ||
@@ -81,7 +88,7 @@ pulseaudio_object_open(struct audio_object *object, | ||
self->description, | ||
&self->ss, | ||
NULL, | ||
- NULL, | ||
+ &battr, | ||
&error); | ||
return error; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# Template file for 'pcaudiolib' | ||
pkgname=pcaudiolib | ||
version=1.1 | ||
revision=1 | ||
wrksrc=${pkgname}-${version} | ||
build_style=gnu-configure | ||
hostmakedepends="automake libtool which pkg-config" | ||
makedepends="alsa-lib-devel pulseaudio-devel" | ||
short_desc="Portable C Audio Library" | ||
maintainer="Joey <joey@imap.cc>" | ||
license="GPL-3.0-or-later" | ||
homepage="https://github.com/espeak-ng/pcaudiolib" | ||
distfiles="https://github.com/espeak-ng/pcaudiolib/archive/${version}.tar.gz" | ||
checksum=699a5a347b1e12dc5b122e192e19f4db01621826bf41b9ebefb1cbc63ae2180b | ||
|
||
pre_configure() { | ||
./autogen.sh | ||
} | ||
|
||
pcaudiolib-devel_package() { | ||
depends="pcaudiolib>=${version}_${revision}" | ||
short_desc+=" - development files" | ||
pkg_install() { | ||
vmove usr/include | ||
vmove "usr/lib/*.so" | ||
vmove "usr/lib/*.a" | ||
} | ||
} |