Accepting request 812898 from multimedia:libs

OBS-URL: https://build.opensuse.org/request/show/812898
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/alsa-utils?expand=0&rev=124
This commit is contained in:
Dominique Leuenberger 2020-06-11 12:45:55 +00:00 committed by Git OBS Bridge
commit 977a616ec4
11 changed files with 20 additions and 323 deletions

View File

@ -1,62 +0,0 @@
From ec8717d58891b18e27ac3f0e220a2a7060512870 Mon Sep 17 00:00:00 2001
From: Ruslan Bilovol <ruslan.bilovol@gmail.com>
Date: Mon, 9 Mar 2020 22:29:54 +0200
Subject: [PATCH] alsaloop: reduce cumulative error caused by non-atomic
samples calculation
When doing loopback between two audio card with
same sampling frequency, I noticed slow increase
of pitch_diff.
When I changed order of get_queued_playback_samples()
vs get_queued_capture_samples(), I noticed same drift
of pitch_diff but if was decreasing this time.
This seems to be caused by non-atomic consecutive
snd_pcm_delay() invocation for playback then for
capture. snd_pcm_delay() measures delay between
read/write call and actual ADC/DAC operation.
So while we get this value for playback path in
get_queued_playback_samples(), next call to
get_queued_capture_samples() will happen a little
bit later so snd_pcm_delay() may return incorrect
value.
Be interleaving get_queued_{playback,capture}_samples()
order, we divide this small error between playback
and capture paths. I do not see any issues anymore
with one-way drift of pitch_diff.
Signed-off-by: Ruslan Bilovol <ruslan.bilovol@gmail.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsaloop/pcmjob.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/alsaloop/pcmjob.c b/alsaloop/pcmjob.c
index b252486b2f6d..1b7925a205be 100644
--- a/alsaloop/pcmjob.c
+++ b/alsaloop/pcmjob.c
@@ -1951,8 +1951,16 @@ int pcmjob_pollfds_handle(struct loopback *loop, struct pollfd *fds)
}
if (loop->sync != SYNC_TYPE_NONE) {
snd_pcm_sframes_t pqueued, cqueued;
- pqueued = get_queued_playback_samples(loop);
- cqueued = get_queued_capture_samples(loop);
+
+ /* Reduce cumulative error by interleaving playback vs capture reading order */
+ if (loop->total_queued_count & 1) {
+ pqueued = get_queued_playback_samples(loop);
+ cqueued = get_queued_capture_samples(loop);
+ } else {
+ cqueued = get_queued_capture_samples(loop);
+ pqueued = get_queued_playback_samples(loop);
+ }
+
if (verbose > 4)
snd_output_printf(loop->output, "%s: queued %li/%li samples\n", loop->id, pqueued, cqueued);
if (pqueued > 0)
--
2.16.4

View File

@ -1,32 +0,0 @@
From 5830fc726ac9294641592a8c007502d573f6dea1 Mon Sep 17 00:00:00 2001
From: Zev Weiss <zev@bewilderbeest.net>
Date: Mon, 14 Oct 2019 23:36:50 -0500
Subject: [PATCH] alsactl: don't exit on EINTR from epoll_wait().
Previously, things like attaching strace to a running 'alsactl monitor'
process would cause it to exit.
Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Tested-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsactl/monitor.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/alsactl/monitor.c b/alsactl/monitor.c
index 6b090e4f5c92..cf4167bee165 100644
--- a/alsactl/monitor.c
+++ b/alsactl/monitor.c
@@ -342,6 +342,8 @@ static int run_dispatcher(int epfd, int sigfd, int infd, struct list_head *srcs,
count = epoll_wait(epfd, epev, max_ev_count, 200);
if (count < 0) {
+ if (errno == EINTR)
+ continue;
err = count;
break;
}
--
2.16.4

View File

@ -1,32 +0,0 @@
From 5fe6b866594c6d59d1960356590a00ccc4cdf4c7 Mon Sep 17 00:00:00 2001
From: Zev Weiss <zev@bewilderbeest.net>
Date: Mon, 14 Oct 2019 23:38:02 -0500
Subject: [PATCH] alsactl: avoid needless wakeups in monitor loop.
The timeout wasn't really being used for anything; disabling it should
reduce idle energy consumption slightly.
Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Tested-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsactl/monitor.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/alsactl/monitor.c b/alsactl/monitor.c
index cf4167bee165..fa6cd85d2ab2 100644
--- a/alsactl/monitor.c
+++ b/alsactl/monitor.c
@@ -340,7 +340,7 @@ static int run_dispatcher(int epfd, int sigfd, int infd, struct list_head *srcs,
int count;
int i;
- count = epoll_wait(epfd, epev, max_ev_count, 200);
+ count = epoll_wait(epfd, epev, max_ev_count, -1);
if (count < 0) {
if (errno == EINTR)
continue;
--
2.16.4

View File

@ -1,38 +0,0 @@
From d2bf87608a1c3f2d62ceb9300a74e9006394c678 Mon Sep 17 00:00:00 2001
From: Oscar65 <megia.oscar@gmail.com>
Date: Thu, 16 Apr 2020 12:35:21 +0200
Subject: [PATCH] alsactl: fix error handling for sched_setscheduler() call
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
As man page says: "If successful, the sched_setparam() function shall return zero."
Without update I got this output in the syslog (journalctl):
abr 16 09:25:30 mypc alsactl[1652]: alsactl 1.2.2 daemon started
abr 16 09:25:30 mypc alsactl[1652]: /usr/bin/alsactl: do_nice:165sched_setparam failed: No such file or directory
If sched_setscheduler() returns 0, so it means that the call was successful.
Signed-off-by: Oscar Megía <megia.oscar@gmail.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsactl/alsactl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/alsactl/alsactl.c b/alsactl/alsactl.c
index dfb1db7f4a83..60d39459dedf 100644
--- a/alsactl/alsactl.c
+++ b/alsactl/alsactl.c
@@ -161,7 +161,7 @@ static void do_nice(int use_nice, int sched_idle)
if (sched_idle) {
if (sched_getparam(0, &sched_param) >= 0) {
sched_param.sched_priority = 0;
- if (!sched_setscheduler(0, SCHED_IDLE, &sched_param))
+ if (sched_setscheduler(0, SCHED_IDLE, &sched_param) < 0)
error("sched_setparam failed: %s", strerror(errno));
} else {
error("sched_getparam failed: %s", strerror(errno));
--
2.16.4

View File

@ -1,28 +0,0 @@
From 217fef4a0b4e2604d57c8b9cb21e67a82e9a17a3 Mon Sep 17 00:00:00 2001
From: Michael Shigorin <mike@altlinux.org>
Date: Fri, 1 May 2020 10:28:59 +0300
Subject: [PATCH 5/7] alsa-info.sh: add ALT to DISTRO list
Suggested-by: Anton Farygin <rider@altlinux.org>
See-also: http://bugzilla.altlinux.org/38416
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsa-info/alsa-info.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/alsa-info/alsa-info.sh b/alsa-info/alsa-info.sh
index 7bae30a614b0..2265caec970e 100755
--- a/alsa-info/alsa-info.sh
+++ b/alsa-info/alsa-info.sh
@@ -394,7 +394,7 @@ fi
# Fetch the info and store in temp files/variables
TSTAMP=$(LANG=C TZ=UTC date)
-DISTRO=$(grep -ihs "buntu\|SUSE\|Fedora\|PCLinuxOS\|MEPIS\|Mandriva\|Debian\|Damn\|Sabayon\|Slackware\|KNOPPIX\|Gentoo\|Zenwalk\|Mint\|Kubuntu\|FreeBSD\|Puppy\|Freespire\|Vector\|Dreamlinux\|CentOS\|Arch\|Xandros\|Elive\|SLAX\|Red\|BSD\|KANOTIX\|Nexenta\|Foresight\|GeeXboX\|Frugalware\|64\|SystemRescue\|Novell\|Solaris\|BackTrack\|KateOS\|Pardus" /etc/{issue,*release,*version})
+DISTRO=$(grep -ihs "buntu\|SUSE\|Fedora\|PCLinuxOS\|MEPIS\|Mandriva\|Debian\|Damn\|Sabayon\|Slackware\|KNOPPIX\|Gentoo\|Zenwalk\|Mint\|Kubuntu\|FreeBSD\|Puppy\|Freespire\|Vector\|Dreamlinux\|CentOS\|Arch\|Xandros\|Elive\|SLAX\|Red\|BSD\|KANOTIX\|Nexenta\|Foresight\|GeeXboX\|Frugalware\|64\|SystemRescue\|Novell\|Solaris\|BackTrack\|KateOS\|Pardus\|ALT" /etc/{issue,*release,*version})
KERNEL_VERSION=$(uname -r)
KERNEL_PROCESSOR=$(uname -p)
KERNEL_MACHINE=$(uname -m)
--
2.16.4

View File

@ -1,87 +0,0 @@
From 8e59029c9c70d00efb33eb1d0d79b30dbcabbcc8 Mon Sep 17 00:00:00 2001
From: Michael Shigorin <mike@altlinux.org>
Date: Fri, 1 May 2020 10:52:42 +0300
Subject: [PATCH 6/7] alsa-info: initial rpm/deb package info
This might become a Pandora's box given
the amount of obscure package managers
on the planet but these two account for
most *nix-like systems with ALSA it seems.
Added support for querying ALSA packages
installed through rpm and dpkg; tested
on ALT (rpm) and OS Elbrus (dpkg).
Suggested-by: Anton Farygin <rider@altlinux.org>
See-also: http://bugzilla.altlinux.org/38416
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsa-info/alsa-info.sh | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/alsa-info/alsa-info.sh b/alsa-info/alsa-info.sh
index 2265caec970e..1bf0421e0db3 100755
--- a/alsa-info/alsa-info.sh
+++ b/alsa-info/alsa-info.sh
@@ -238,6 +238,23 @@ withdmesg() {
echo "" >> $FILE
}
+withpackages() {
+ local RPM="$(which rpmquery 2>/dev/null | sed 's|^[^/]*||' 2>/dev/null)"
+ local DPKG="$(which dpkg 2>/dev/null | sed 's|^[^/]*||' 2>/dev/null)"
+ [ -n "$RPM$DPKG" ] || return
+ local PATTERN='(alsa-(lib|oss|plugins|tools|(topology|ucm)-conf|utils)|libalsa|tinycompress)'
+ {
+ echo "!!Packages installed"
+ echo "!!--------------------"
+ echo ""
+ {
+ if [ -x "$RPM" ]; then "$RPM" -a; fi
+ if [ -x "$DPKG" ]; then "$DPKG" -l; fi
+ } | grep -E "$PATTERN"
+ echo ""
+ } >> "$FILE"
+}
+
withall() {
withdevices
withconfigs
@@ -247,6 +264,7 @@ withall() {
withmodules
withsysfs
withdmesg
+ withpackages
WITHALL="no"
}
@@ -357,6 +375,7 @@ information about your ALSA installation and sound related hardware.
aplay
amixer
alsactl
+ rpm, dpkg
/proc/asound/
/sys/class/sound/
~/.asoundrc (etc.)
@@ -699,6 +718,10 @@ if [ -n "$1" ]; then
withconfigs
WITHALL="no"
;;
+ --with-packages)
+ withpackages
+ WITHALL="no"
+ ;;
--stdout)
UPLOAD="no"
if [ -z "$WITHALL" ]; then
@@ -730,6 +753,7 @@ if [ -n "$1" ]; then
echo " /etc/asound.conf if they exist)"
echo " --with-devices (shows the device nodes in /dev/snd/)"
echo " --with-dmesg (shows the ALSA/HDA kernel messages)"
+ echo " --with-packages (includes known packages installed)"
echo ""
echo " --output FILE (specify the file to output for no-upload mode)"
echo " --update (check server for script updates)"
--
2.16.4

View File

@ -1,25 +0,0 @@
From 2cfeffb6e80db3fa39054f74badac33f9539233a Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Mon, 4 May 2020 10:05:41 +0200
Subject: [PATCH 7/7] alsa-info.sh: increase version to 0.4.65
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsa-info/alsa-info.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/alsa-info/alsa-info.sh b/alsa-info/alsa-info.sh
index 1bf0421e0db3..c1849159120c 100755
--- a/alsa-info/alsa-info.sh
+++ b/alsa-info/alsa-info.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-SCRIPT_VERSION=0.4.64
+SCRIPT_VERSION=0.4.65
CHANGELOG="http://www.alsa-project.org/alsa-info.sh.changelog"
#################################################################################
--
2.16.4

View File

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

3
alsa-utils-1.2.3.tar.bz2 Normal file
View File

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

View File

@ -1,3 +1,18 @@
-------------------------------------------------------------------
Tue Jun 9 11:21:59 CEST 2020 - tiwai@suse.de
- Update to alsa-utils 1.2.3:
including previous fixes, see the detailed changes at:
https://www.alsa-project.org/wiki/Detailed_changes_v1.2.2_v1.2.3
- Dropped obsoleted patches:
0001-alsaloop-reduce-cumulative-error-caused-by-non-atomi.patch
0002-alsactl-don-t-exit-on-EINTR-from-epoll_wait.patch
0003-alsactl-avoid-needless-wakeups-in-monitor-loop.patch
0004-alsactl-fix-error-handling-for-sched_setscheduler-ca.patch
0005-alsa-info.sh-add-ALT-to-DISTRO-list.patch
0006-alsa-info-initial-rpm-deb-package-info.patch
0007-alsa-info.sh-increase-version-to-0.4.65.patch
-------------------------------------------------------------------
Wed May 6 12:19:02 CEST 2020 - tiwai@suse.de

View File

@ -16,10 +16,10 @@
#
%define do_autoreconf 1
%define do_autoreconf 0
%define _udevdir %(pkg-config --variable=udevdir udev)
Name: alsa-utils
Version: 1.2.2
Version: 1.2.3
Release: 0
Summary: Advanced Linux Sound Architecture Utilities
License: GPL-2.0-or-later
@ -29,13 +29,6 @@ Source: ftp://ftp.alsa-project.org/pub/utils/alsa-utils-%{version}.tar.b
Source1: 01beep.conf
Source2: sound-extra.service
Source5: load-sound-modules.sh
Patch1: 0001-alsaloop-reduce-cumulative-error-caused-by-non-atomi.patch
Patch2: 0002-alsactl-don-t-exit-on-EINTR-from-epoll_wait.patch
Patch3: 0003-alsactl-avoid-needless-wakeups-in-monitor-loop.patch
Patch4: 0004-alsactl-fix-error-handling-for-sched_setscheduler-ca.patch
Patch5: 0005-alsa-info.sh-add-ALT-to-DISTRO-list.patch
Patch6: 0006-alsa-info-initial-rpm-deb-package-info.patch
Patch7: 0007-alsa-info.sh-increase-version-to-0.4.65.patch
Patch101: alsa-utils-configure-version-revert.patch
BuildRequires: alsa-devel
BuildRequires: alsa-topology-devel
@ -76,13 +69,6 @@ and test audio before and after PM state changes.
%prep
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%if 0%{?do_autoreconf}
%patch101 -p1
# fix stupid automake's automatic action