New package: pcaudiolib-1.1
This commit is contained in:
parent
bc24118fa4
commit
6a1c24f88f
5 changed files with 124 additions and 0 deletions
|
@ -4002,3 +4002,4 @@ libnotcurses++.so.2 notcurses-2.0.4_1
|
||||||
libevemu.so.3 evemu-2.7.0_1
|
libevemu.so.3 evemu-2.7.0_1
|
||||||
libantilib.so.1 libantimicrox-3.1.2_1
|
libantilib.so.1 libantimicrox-3.1.2_1
|
||||||
libinih.so.0 inih-52_1
|
libinih.so.0 inih-52_1
|
||||||
|
libpcaudio.so.0 pcaudiolib-1.1_1
|
||||||
|
|
1
srcpkgs/pcaudiolib-devel
Symbolic link
1
srcpkgs/pcaudiolib-devel
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
pcaudiolib
|
|
@ -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)
|
76
srcpkgs/pcaudiolib/patches/upstream-fix-snappiness.patch
Normal file
76
srcpkgs/pcaudiolib/patches/upstream-fix-snappiness.patch
Normal file
|
@ -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;
|
||||||
|
}
|
27
srcpkgs/pcaudiolib/template
Normal file
27
srcpkgs/pcaudiolib/template
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# Template file for 'pcaudiolib'
|
||||||
|
pkgname=pcaudiolib
|
||||||
|
version=1.1
|
||||||
|
revision=1
|
||||||
|
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="${sourcepkg}>=${version}_${revision}"
|
||||||
|
short_desc+=" - development files"
|
||||||
|
pkg_install() {
|
||||||
|
vmove usr/include
|
||||||
|
vmove "usr/lib/*.so"
|
||||||
|
vmove "usr/lib/*.a"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue