Accepting request 899942 from home:tiwai:branches:multimedia:libs

- Update to alsa-utils 1.2.5:
  a major version up, including previous patches
  https://www.alsa-project.org/wiki/Changes_v1.2.4_v1.2.5
- Update to alsa-utils 1.2.5.1:
  a small bugfix release
  https://www.alsa-project.org/wiki/Changes_v1.2.5_v1.2.5.1
- Drop the obsoleted patches:
  0001-aplay-try-to-use-16-bit-format-to-increase-capture-q.patch
  0002-alsamixer-Fix-the-mixer-views-description-in-man-pag.patch
  0003-Add-Slovak-translation.patch
  0004-Add-Basque-translation.patch
  0006-aplay-cosmetic-code-fix-in-xrun.patch
  0007-aplay-fix-the-CPU-busy-loop-in-the-pause-handler.patch
  0008-alsa-info-Add-lsusb-and-stream-outputs.patch
  0010-alsactl-Fix-double-decrease-of-lock-timeout.patch
  0011-alsactl-Fix-race-at-creating-a-lock-file.patch
  0012-alsactl-Remove-asound.state-file-check-from-alsa-res.patch
  0013-aplay-add-test-code-for-snd_pcm_status-to-test-posit.patch
  0014-ucm-fix-typo-in-docs.patch
  0015-aplay-add-avail-delay-checks-to-test-position.patch
  0016-alsactl-daemon-read_pid_file-fix-the-returned-code-o.patch
  0017-alsactl-init-set_ctl_value-fix-bytes-parsing.patch
  0018-alsactl-init-parse-fix-possible-double-free.patch
  0019-alsaloop-fix-possible-memory-leak-in-create_loopback.patch
  0020-alsaloop-get_queued_playback_samples-simplify-code.patch
  0021-topology-fix-possible-double-free-in-load.patch
  0022-alsamixer-remove-dead-fcn-widget_handle_key-in-widge.patch
  0023-alsamixer-remove-unused-variable-y-in-display_scroll.patch
  0024-alsamixer-fix-shift-in-parse_words.patch
  0025-aplay-fix-the-test-position-test-for-playback-avail-.patch

OBS-URL: https://build.opensuse.org/request/show/899942
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/alsa-utils?expand=0&rev=194
This commit is contained in:
Takashi Iwai 2021-06-14 13:28:19 +00:00 committed by Git OBS Bridge
parent 4267bf074f
commit 714a3234d5
27 changed files with 38 additions and 4904 deletions

View File

@ -1,187 +0,0 @@
From 0c5948e98a6a8535c89b7bcab13017d7732181c6 Mon Sep 17 00:00:00 2001
From: Hui Wang <hui.wang@canonical.com>
Date: Fri, 23 Oct 2020 16:47:10 +0800
Subject: [PATCH 01/25] aplay: try to use 16-bit format to increase capture
quality
Recently users reported a bug, I tested it and found it is a common
issue on Laptop or Desktop machines.
The issue is users plug a headset and use "arecord test.wav" to
record a sound with default input volume, the recorded sound has
poor quality and nearly can't distinguish it is the sound we want
to record.
This is because the input volume is low and the default format is U8.
The driver records sound with 16bit, because the input volume is low,
most of samples are within (-256,+256), when converting 16bit to U8,
those samples will be 0x7f. This is called quantization noise and we
could only workaround it by increase the input volume or adding -f to
arecord.
But users want to record a better quality sound with default input
volume (after installing a new OS, the volume is the default volume),
and they don't want to add parameters to the arecord because most of
new linux users just use "arecord test.wav".
So this patch tries to change the default format from U8 to S16_LE/BE.
If the machine doesn't support S16_LE/BE, it still uses U8 as default
format.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
aplay/aplay.c | 43 ++++++++++++++++++++++++++++++++++---------
1 file changed, 34 insertions(+), 9 deletions(-)
diff --git a/aplay/aplay.c b/aplay/aplay.c
index 0a65ad69fd14..a27220d8fd03 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -32,6 +32,7 @@
#include <malloc.h>
#include <unistd.h>
#include <stdlib.h>
+#include <stdbool.h>
#include <string.h>
#include <getopt.h>
#include <fcntl.h>
@@ -94,6 +95,7 @@ enum {
VUMETER_STEREO
};
+static snd_pcm_format_t default_format = DEFAULT_FORMAT;
static char *command;
static snd_pcm_t *handle;
static struct {
@@ -468,6 +470,24 @@ static long parse_long(const char *str, int *err)
return val;
}
+static void try_to_adjust_default_format_16bit(void)
+{
+ snd_pcm_hw_params_t *params;
+ int err;
+
+ snd_pcm_hw_params_alloca(&params);
+ err = snd_pcm_hw_params_any(handle, params);
+ if (err < 0) {
+ error(_("Broken configuration for this PCM: no configurations available"));
+ prg_exit(EXIT_FAILURE);
+ }
+
+ if (file_type != FORMAT_AU && snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_S16_LE) == 0)
+ rhwparams.format = default_format = SND_PCM_FORMAT_S16_LE;
+ else if (file_type == FORMAT_AU && snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_S16_BE) == 0)
+ rhwparams.format = default_format = SND_PCM_FORMAT_S16_BE;
+}
+
int main(int argc, char *argv[])
{
int duration_or_sample = 0;
@@ -528,6 +548,7 @@ int main(int argc, char *argv[])
int do_device_list = 0, do_pcm_list = 0;
snd_pcm_info_t *info;
FILE *direction;
+ bool user_set_fmt = false;
#ifdef ENABLE_NLS
setlocale(LC_ALL, "");
@@ -562,7 +583,7 @@ int main(int argc, char *argv[])
}
chunk_size = -1;
- rhwparams.format = DEFAULT_FORMAT;
+ rhwparams.format = default_format;
rhwparams.rate = DEFAULT_SPEED;
rhwparams.channels = 1;
@@ -612,6 +633,7 @@ int main(int argc, char *argv[])
}
break;
case 'f':
+ user_set_fmt = true;
if (strcasecmp(optarg, "cd") == 0 || strcasecmp(optarg, "cdr") == 0) {
if (strcasecmp(optarg, "cdr") == 0)
rhwparams.format = SND_PCM_FORMAT_S16_BE;
@@ -844,6 +866,9 @@ int main(int argc, char *argv[])
}
}
+ if (!user_set_fmt)
+ try_to_adjust_default_format_16bit();
+
chunk_size = 1024;
hwparams = rhwparams;
@@ -1064,7 +1089,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size)
hwparams.channels = channels;
switch (TO_CPU_SHORT(f->bit_p_spl, big_endian)) {
case 8:
- if (hwparams.format != DEFAULT_FORMAT &&
+ if (hwparams.format != default_format &&
hwparams.format != SND_PCM_FORMAT_U8)
fprintf(stderr, _("Warning: format is changed to U8\n"));
hwparams.format = SND_PCM_FORMAT_U8;
@@ -1074,7 +1099,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size)
native_format = SND_PCM_FORMAT_S16_BE;
else
native_format = SND_PCM_FORMAT_S16_LE;
- if (hwparams.format != DEFAULT_FORMAT &&
+ if (hwparams.format != default_format &&
hwparams.format != native_format)
fprintf(stderr, _("Warning: format is changed to %s\n"),
snd_pcm_format_name(native_format));
@@ -1087,7 +1112,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size)
native_format = SND_PCM_FORMAT_S24_3BE;
else
native_format = SND_PCM_FORMAT_S24_3LE;
- if (hwparams.format != DEFAULT_FORMAT &&
+ if (hwparams.format != default_format &&
hwparams.format != native_format)
fprintf(stderr, _("Warning: format is changed to %s\n"),
snd_pcm_format_name(native_format));
@@ -1098,7 +1123,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size)
native_format = SND_PCM_FORMAT_S24_BE;
else
native_format = SND_PCM_FORMAT_S24_LE;
- if (hwparams.format != DEFAULT_FORMAT &&
+ if (hwparams.format != default_format &&
hwparams.format != native_format)
fprintf(stderr, _("Warning: format is changed to %s\n"),
snd_pcm_format_name(native_format));
@@ -1184,19 +1209,19 @@ static int test_au(int fd, void *buffer)
pbrec_count = BE_INT(ap->data_size);
switch (BE_INT(ap->encoding)) {
case AU_FMT_ULAW:
- if (hwparams.format != DEFAULT_FORMAT &&
+ if (hwparams.format != default_format &&
hwparams.format != SND_PCM_FORMAT_MU_LAW)
fprintf(stderr, _("Warning: format is changed to MU_LAW\n"));
hwparams.format = SND_PCM_FORMAT_MU_LAW;
break;
case AU_FMT_LIN8:
- if (hwparams.format != DEFAULT_FORMAT &&
+ if (hwparams.format != default_format &&
hwparams.format != SND_PCM_FORMAT_U8)
fprintf(stderr, _("Warning: format is changed to U8\n"));
hwparams.format = SND_PCM_FORMAT_U8;
break;
case AU_FMT_LIN16:
- if (hwparams.format != DEFAULT_FORMAT &&
+ if (hwparams.format != default_format &&
hwparams.format != SND_PCM_FORMAT_S16_BE)
fprintf(stderr, _("Warning: format is changed to S16_BE\n"));
hwparams.format = SND_PCM_FORMAT_S16_BE;
@@ -2315,7 +2340,7 @@ static void voc_play(int fd, int ofs, char *name)
prg_exit(EXIT_FAILURE);
}
}
- hwparams.format = DEFAULT_FORMAT;
+ hwparams.format = default_format;
hwparams.channels = 1;
hwparams.rate = DEFAULT_SPEED;
set_params();
--
2.26.2

View File

@ -1,30 +0,0 @@
From 737b64e1940b29c575be3942cd9f87aa390d93b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A9=8D=E4=B8=B9=E5=B0=BC=20Dan=20Jacobson?=
<jidanni@jidanni.org>
Date: Sun, 18 Oct 2020 18:33:54 +0800
Subject: [PATCH 02/25] alsamixer: Fix the mixer views description in man page
Fix grammar mess.
From: Dan Jacobson <jidanni@jidanni.org>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsamixer/alsamixer.1 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/alsamixer/alsamixer.1 b/alsamixer/alsamixer.1
index 8d34680a585e..2d711cf15264 100644
--- a/alsamixer/alsamixer.1
+++ b/alsamixer/alsamixer.1
@@ -34,7 +34,7 @@ Toggle the using of colors.
.SH MIXER VIEWS
-The top-left corner of \fBalsamixer\fP is the are to show some basic
+The top-left corner of \fBalsamixer\fP shows some basic
information: the card name, the mixer chip name, the current view
mode and the currently selected mixer item.
When the mixer item is switched off, \fI[Off]\fP is displayed in its
--
2.26.2

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,27 +0,0 @@
From 986a1bd3d2eebd41a2925969826fca870b2cd330 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Fri, 23 Oct 2020 12:05:56 +0200
Subject: [PATCH 06/25] aplay: cosmetic code fix in xrun()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
aplay/aplay.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/aplay/aplay.c b/aplay/aplay.c
index a27220d8fd03..ae609880bfd7 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -1676,7 +1676,8 @@ static void xrun(void)
prg_exit(EXIT_FAILURE);
}
return; /* ok, data should be accepted again */
- } if (snd_pcm_status_get_state(status) == SND_PCM_STATE_DRAINING) {
+ }
+ if (snd_pcm_status_get_state(status) == SND_PCM_STATE_DRAINING) {
if (verbose) {
fprintf(stderr, _("Status(DRAINING):\n"));
snd_pcm_status_dump(status, log);
--
2.26.2

View File

@ -1,59 +0,0 @@
From c1b92db5ef01311e5fc983f3134caa00826d0c2d Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Sun, 8 Nov 2020 19:11:12 +0100
Subject: [PATCH 07/25] aplay: fix the CPU busy loop in the pause handler
Use the standard poll mechanism to ensure that there's
something in the input to avoid busy loop on the file
descriptor with the non-block mode set.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
aplay/aplay.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/aplay/aplay.c b/aplay/aplay.c
index ae609880bfd7..d385da25fea1 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -1553,6 +1553,19 @@ static void done_stdin(void)
tcsetattr(fileno(stdin), TCSANOW, &term);
}
+static char wait_for_input(void)
+{
+ struct pollfd pfd;
+ unsigned char b;
+
+ do {
+ pfd.fd = fileno(stdin);
+ pfd.events = POLLIN;
+ poll(&pfd, 1, -1);
+ } while (read(fileno(stdin), &b, 1) != 1);
+ return b;
+}
+
static void do_pause(void)
{
int err;
@@ -1571,7 +1584,7 @@ static void do_pause(void)
return;
}
while (1) {
- while (read(fileno(stdin), &b, 1) != 1);
+ b = wait_for_input();
if (b == ' ' || b == '\r') {
while (read(fileno(stdin), &b, 1) == 1);
if (snd_pcm_state(handle) == SND_PCM_STATE_SUSPENDED)
@@ -1596,7 +1609,7 @@ static void check_stdin(void)
while (read(fileno(stdin), &b, 1) == 1);
fprintf(stderr, _("\r=== PAUSE === "));
fflush(stderr);
- do_pause();
+ do_pause();
fprintf(stderr, " \r");
fflush(stderr);
}
--
2.26.2

View File

@ -1,68 +0,0 @@
From 5812f37d877c12bc594b9ffddc493d305991963a Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Wed, 9 Dec 2020 18:35:49 +0100
Subject: [PATCH 08/25] alsa-info: Add lsusb and stream outputs
We need more detailed information for USB-audio devices, at least the
lsusb -v output and the contents of stream* proc files.
Let's add them to alsa-info.sh output.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
alsa-info/alsa-info.sh | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/alsa-info/alsa-info.sh b/alsa-info/alsa-info.sh
index f179bfab8655..3871b97a2268 100755
--- a/alsa-info/alsa-info.sh
+++ b/alsa-info/alsa-info.sh
@@ -476,6 +476,18 @@ cat /proc/asound/card*/codec\#* > $TEMPDIR/alsa-hda-intel.tmp 2> /dev/null
cat /proc/asound/card*/codec97\#0/ac97\#0-0 > $TEMPDIR/alsa-ac97.tmp 2> /dev/null
cat /proc/asound/card*/codec97\#0/ac97\#0-0+regs > $TEMPDIR/alsa-ac97-regs.tmp 2> /dev/null
+#Check for USB descriptors
+if [ -x /usr/bin/lsusb ]; then
+ for f in /proc/asound/card[0-9]*/usbbus; do
+ test -f "$f" || continue
+ id=$(sed 's@/@:@' $f)
+ lsusb -v -s $id >> $TEMPDIR/lsusb.tmp 2> /dev/null
+ done
+fi
+
+#Check for USB stream setup
+cat /proc/asound/card*/stream[0-9]* > $TEMPDIR/alsa-usbstream.tmp 2> /dev/null
+
#Check for USB mixer setup
cat /proc/asound/card*/usbmixer > $TEMPDIR/alsa-usbmixer.tmp 2> /dev/null
@@ -649,6 +661,27 @@ if [ -s "$TEMPDIR/alsa-ac97.tmp" ]; then
echo "" >> $FILE
fi
+if [ -s "$TEMPDIR/lsusb.tmp" ]; then
+ echo "!!USB Descriptors" >> $FILE
+ echo "!!---------------" >> $FILE
+ echo "--startcollapse--" >> $FILE
+ cat $TEMPDIR/lsusb.tmp >> $FILE
+ echo "--endcollapse--" >> $FILE
+ echo "" >> $FILE
+ echo "" >> $FILE
+fi
+
+if [ -s "$TEMPDIR/lsusb.tmp" ]; then
+ echo "!!USB Stream information" >> $FILE
+ echo "!!----------------------" >> $FILE
+ echo "--startcollapse--" >> $FILE
+ echo "" >> $FILE
+ cat $TEMPDIR/alsa-usbstream.tmp >> $FILE
+ echo "--endcollapse--" >> $FILE
+ echo "" >> $FILE
+ echo "" >> $FILE
+fi
+
if [ -s "$TEMPDIR/alsa-usbmixer.tmp" ]; then
echo "!!USB Mixer information" >> $FILE
echo "!!---------------------" >> $FILE
--
2.26.2

View File

@ -1,29 +0,0 @@
From 878e1a7c0f03233530e7675ae015aced069c971d Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Fri, 11 Dec 2020 23:41:59 +0100
Subject: [PATCH] alsactl: Fix double decrease of lock timeout
The state_lock() has a loop to wait for the lock file creation, and
the timeout value gets decremented twice mistakenly, which leads to a
half timeout (5 seconds) than expected 10 seconds. Fix it.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
alsactl/lock.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/alsactl/lock.c b/alsactl/lock.c
index 4a485392b3bd..05f6e4d2a102 100644
--- a/alsactl/lock.c
+++ b/alsactl/lock.c
@@ -63,7 +63,6 @@ static int state_lock_(const char *file, int lock, int timeout, int _fd)
if (fd < 0) {
if (errno == EBUSY || errno == EAGAIN) {
sleep(1);
- timeout--;
} else {
err = -errno;
goto out;
--
2.26.2

View File

@ -1,47 +0,0 @@
From c53f7cd03881092d5a61505d23ab8f920b7faf12 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Fri, 11 Dec 2020 23:46:23 +0100
Subject: [PATCH] alsactl: Fix race at creating a lock file
A race at creating a lock file in state_lock() was discovered
recently: namely, between the first open(O_RDWR) and the second
open(O_RDWR|O_CREAT|O_EXCL) calls, another alsactl invocation may
already create a lock file, then the second open() will return EEXIST,
which isn't handled properly and treated as a fatal error.
In this patch, we check EEXIST case and try again open() with O_RDWR.
This must succeed usually, and if it fails, handle finally as the
fatal error.
BugLink: https://bugzilla.opensuse.org/show_bug.cgi?id=1179904
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
alsactl/lock.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/alsactl/lock.c b/alsactl/lock.c
index 05f6e4d2a102..5b4746231996 100644
--- a/alsactl/lock.c
+++ b/alsactl/lock.c
@@ -63,10 +63,15 @@ static int state_lock_(const char *file, int lock, int timeout, int _fd)
if (fd < 0) {
if (errno == EBUSY || errno == EAGAIN) {
sleep(1);
- } else {
- err = -errno;
- goto out;
+ continue;
}
+ if (errno == EEXIST) {
+ fd = open(nfile, O_RDWR);
+ if (fd >= 0)
+ break;
+ }
+ err = -errno;
+ goto out;
}
}
}
--
2.26.2

View File

@ -1,33 +0,0 @@
From 12487b40b6e7230a003eb6e4333ee820d8578592 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Fri, 11 Dec 2020 23:55:34 +0100
Subject: [PATCH ] alsactl: Remove asound.state file check from alsa-restore.service again
We added the check of asound.state file presence some time ago to
assure that alsactl gets called only if the state file is already
present. Since then, the situation has changed significantly:
e.g. now alsactl does initialize if the state file isn't present, and
the same alsa-restore.service is used to save the state. This means
that we should start this service no matter the state file exists at
the boot time or not. So, revert the old change again.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
alsactl/alsa-restore.service.in | 1 -
1 file changed, 1 deletion(-)
diff --git a/alsactl/alsa-restore.service.in b/alsactl/alsa-restore.service.in
index a84c2e842444..80fd5fd48203 100644
--- a/alsactl/alsa-restore.service.in
+++ b/alsactl/alsa-restore.service.in
@@ -7,7 +7,6 @@
Description=Save/Restore Sound Card State
ConditionPathExists=!@daemonswitch@
ConditionPathExistsGlob=/dev/snd/control*
-ConditionPathExists=@asoundrcfile@
[Service]
Type=oneshot
--
2.26.2

View File

@ -1,108 +0,0 @@
From 76bc37aeb77d51f995e223582d25335cd98b2eea Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Sun, 3 Jan 2021 17:19:03 +0100
Subject: [PATCH 13/25] aplay: add test code for snd_pcm_status() to
--test-position
We need to test also snd_pcm_status() values.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
aplay/aplay.c | 48 ++++++++++++++++++++++++++++++++++++++----------
1 file changed, 38 insertions(+), 10 deletions(-)
diff --git a/aplay/aplay.c b/aplay/aplay.c
index d385da25fea1..5a6d5c33102c 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -1953,22 +1953,38 @@ static void do_test_position(void)
static snd_pcm_sframes_t minavail, mindelay;
static snd_pcm_sframes_t badavail = 0, baddelay = 0;
snd_pcm_sframes_t outofrange;
- snd_pcm_sframes_t avail, delay;
+ snd_pcm_sframes_t avail, delay, savail, sdelay;
+ snd_pcm_status_t *status;
int err;
+ snd_pcm_status_alloca(&status);
err = snd_pcm_avail_delay(handle, &avail, &delay);
if (err < 0)
return;
+ err = snd_pcm_status(handle, status);
+ if (err < 0)
+ return;
+ savail = snd_pcm_status_get_avail(status);
+ sdelay = snd_pcm_status_get_delay(status);
outofrange = (test_coef * (snd_pcm_sframes_t)buffer_frames) / 2;
if (avail > outofrange || avail < -outofrange ||
delay > outofrange || delay < -outofrange) {
- badavail = avail; baddelay = delay;
- availsum = delaysum = samples = 0;
- maxavail = maxdelay = 0;
- minavail = mindelay = buffer_frames * 16;
- fprintf(stderr, _("Suspicious buffer position (%li total): "
- "avail = %li, delay = %li, buffer = %li\n"),
- ++counter, (long)avail, (long)delay, (long)buffer_frames);
+ badavail = avail; baddelay = delay;
+ availsum = delaysum = samples = 0;
+ maxavail = maxdelay = 0;
+ minavail = mindelay = buffer_frames * 16;
+ fprintf(stderr, _("Suspicious buffer position (%li total): "
+ "avail = %li, delay = %li, buffer = %li\n"),
+ ++counter, (long)avail, (long)delay, (long)buffer_frames);
+ } else if (savail > outofrange || savail < -outofrange ||
+ sdelay > outofrange || sdelay < -outofrange) {
+ badavail = savail; baddelay = sdelay;
+ availsum = delaysum = samples = 0;
+ maxavail = maxdelay = 0;
+ minavail = mindelay = buffer_frames * 16;
+ fprintf(stderr, _("Suspicious status buffer position (%li total): "
+ "avail = %li, delay = %li, buffer = %li\n"),
+ ++counter, (long)savail, (long)sdelay, (long)buffer_frames);
} else if (verbose) {
time(&now);
if (tmr == (time_t) -1) {
@@ -1979,19 +1995,27 @@ static void do_test_position(void)
}
if (avail > maxavail)
maxavail = avail;
+ if (savail > maxavail)
+ maxavail = savail;
if (delay > maxdelay)
maxdelay = delay;
+ if (sdelay > maxdelay)
+ maxdelay = sdelay;
if (avail < minavail)
minavail = avail;
+ if (savail < minavail)
+ minavail = savail;
if (delay < mindelay)
mindelay = delay;
+ if (sdelay < mindelay)
+ mindelay = sdelay;
availsum += avail;
delaysum += delay;
samples++;
- if (avail != 0 && now != tmr) {
+ if ((maxavail != 0 || maxdelay != 0) && now != tmr) {
fprintf(stderr, "BUFPOS: avg%li/%li "
"min%li/%li max%li/%li (%li) (%li:%li/%li)\n",
- (long)(availsum / samples),
+ (long)(availsum / samples),
(long)(delaysum / samples),
(long)minavail, (long)mindelay,
(long)maxavail, (long)maxdelay,
@@ -2000,6 +2024,10 @@ static void do_test_position(void)
tmr = now;
}
}
+ if (verbose == 1) {
+ fprintf(stderr, _("Status(R/W) (standalone avail=%li delay=%li):\n"), (long)avail, (long)delay);
+ snd_pcm_status_dump(status, log);
+ }
}
/*
--
2.26.2

View File

@ -1,29 +0,0 @@
From 03e98d280678563acbfece12eab4b571026226b1 Mon Sep 17 00:00:00 2001
From: Curtis Malainey <cujomalainey@chromium.org>
Date: Wed, 6 Jan 2021 16:23:23 -0800
Subject: [PATCH 14/25] ucm: fix typo in docs
Do you know the tstaus of this fix?
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
alsaucm/alsaucm.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/alsaucm/alsaucm.rst b/alsaucm/alsaucm.rst
index 7890ba5377b8..3098672d3d55 100644
--- a/alsaucm/alsaucm.rst
+++ b/alsaucm/alsaucm.rst
@@ -122,7 +122,7 @@ Available commands:
the value of the `IDENTIFIER` argument can can be:
- ``_devstatus/{device}``
- - ``_modtstaus/{device}``
+ - ``_modstatus/{device}``
``set`` `IDENTIFIER` `VALUE`
set string value
--
2.26.2

View File

@ -1,32 +0,0 @@
From 05ebe64b2dd82fd053d7e4cbc709004e240ac13f Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Mon, 4 Jan 2021 12:13:03 +0100
Subject: [PATCH 15/25] aplay: add avail > delay checks to --test-position
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
aplay/aplay.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/aplay/aplay.c b/aplay/aplay.c
index 5a6d5c33102c..b75be6c55794 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -1985,6 +1985,14 @@ static void do_test_position(void)
fprintf(stderr, _("Suspicious status buffer position (%li total): "
"avail = %li, delay = %li, buffer = %li\n"),
++counter, (long)savail, (long)sdelay, (long)buffer_frames);
+ } else if (avail > delay) {
+ fprintf(stderr, _("Suspicious buffer position avail > delay (%li total): "
+ "avail = %li, delay = %li\n"),
+ ++counter, (long)avail, (long)delay);
+ } else if (savail > sdelay) {
+ fprintf(stderr, _("Suspicious status buffer position avail > delay (%li total): "
+ "avail = %li, delay = %li\n"),
+ ++counter, (long)savail, (long)sdelay);
} else if (verbose) {
time(&now);
if (tmr == (time_t) -1) {
--
2.26.2

View File

@ -1,27 +0,0 @@
From 42ca978078e09eb7e0044d2d8453b1a9cb69d9fe Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Fri, 8 Jan 2021 18:07:57 +0100
Subject: [PATCH 16/25] alsactl: daemon - read_pid_file() fix the returned code
on read error
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsactl/daemon.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/alsactl/daemon.c b/alsactl/daemon.c
index 65f7ac1cdd0a..ee03991ef5f1 100644
--- a/alsactl/daemon.c
+++ b/alsactl/daemon.c
@@ -284,7 +284,7 @@ static long read_pid_file(const char *pidfile)
err = err < 0 ? -errno : -EIO;
close(fd);
pid_txt[11] = '\0';
- return atol(pid_txt);
+ return err < 0 ? err : atol(pid_txt);
} else {
return -errno;
}
--
2.26.2

View File

@ -1,36 +0,0 @@
From e55534d8a5f05a6650d3147867bbcb7bb70e64cd Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Fri, 8 Jan 2021 18:15:43 +0100
Subject: [PATCH 17/25] alsactl: init - set_ctl_value() - fix bytes parsing
Use the correct error value handling from hextodigit().
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsactl/init_parse.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/alsactl/init_parse.c b/alsactl/init_parse.c
index ee9cc6d8f1b1..58b46f42de4b 100644
--- a/alsactl/init_parse.c
+++ b/alsactl/init_parse.c
@@ -465,12 +465,13 @@ static int set_ctl_value(struct space *space, const char *value, int all)
return -EINVAL;
}
for (idx = 0; idx < count; idx += 2) {
- val = hextodigit(*(value++)) << 4;
- val |= hextodigit(*(value++));
- if (val > 255) {
+ int nibble1 = hextodigit(*(value++));
+ int nibble2 = hextodigit(*(value++));
+ if (nibble1 < 0 || nibble2 < 0) {
Perror(space, "bad ctl hexa value");
return -EINVAL;
}
+ val = (nibble1 << 4) | nibble2;
snd_ctl_elem_value_set_byte(space->ctl_value, idx, val);
}
break;
--
2.26.2

View File

@ -1,25 +0,0 @@
From c5ecfd97894b429712d334eb91fa46e687b5ed0f Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Fri, 8 Jan 2021 18:18:53 +0100
Subject: [PATCH 18/25] alsactl: init - parse() - fix possible double free
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsactl/init_parse.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/alsactl/init_parse.c b/alsactl/init_parse.c
index 58b46f42de4b..71348da3729c 100644
--- a/alsactl/init_parse.c
+++ b/alsactl/init_parse.c
@@ -1701,6 +1701,7 @@ static int parse(struct space *space, const char *filename)
if (count > linesize - 1) {
free(line);
+ line = NULL;
linesize = (count + 127 + 1) & ~127;
if (linesize > 2048) {
error("file %s, line %i too long", filename, linenum);
--
2.26.2

View File

@ -1,38 +0,0 @@
From 90bbeb1d3ee892be97560c069b22ecab4bb2bf6a Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Fri, 8 Jan 2021 18:21:39 +0100
Subject: [PATCH 19/25] alsaloop: fix possible memory leak in
create_loopback_handle()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsaloop/alsaloop.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/alsaloop/alsaloop.c b/alsaloop/alsaloop.c
index 6a9ce58813ce..06ffadfb1911 100644
--- a/alsaloop/alsaloop.c
+++ b/alsaloop/alsaloop.c
@@ -85,12 +85,17 @@ static int create_loopback_handle(struct loopback_handle **_handle,
if (device == NULL)
device = "hw:0,0";
handle->device = strdup(device);
- if (handle->device == NULL)
+ if (handle->device == NULL) {
+ free(handle);
return -ENOMEM;
+ }
if (ctldev) {
handle->ctldev = strdup(ctldev);
- if (handle->ctldev == NULL)
+ if (handle->ctldev == NULL) {
+ free(handle->device);
+ free(handle);
return -ENOMEM;
+ }
} else {
handle->ctldev = NULL;
}
--
2.26.2

View File

@ -1,28 +0,0 @@
From c9b4293212a4b67a5cf3c27a65ecbe466f773e61 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Fri, 8 Jan 2021 18:29:56 +0100
Subject: [PATCH 20/25] alsaloop: get_queued_playback_samples() - simplify code
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsaloop/pcmjob.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/alsaloop/pcmjob.c b/alsaloop/pcmjob.c
index 6a9aff4dd49a..01e01994c00d 100644
--- a/alsaloop/pcmjob.c
+++ b/alsaloop/pcmjob.c
@@ -1698,9 +1698,8 @@ int pcmjob_pollfds_init(struct loopback *loop, struct pollfd *fds)
static snd_pcm_sframes_t get_queued_playback_samples(struct loopback *loop)
{
snd_pcm_sframes_t delay;
- int err;
- if ((err = snd_pcm_delay(loop->play->handle, &delay)) < 0)
+ if (snd_pcm_delay(loop->play->handle, &delay) < 0)
return 0;
loop->play->last_delay = delay;
delay += loop->play->buf_count;
--
2.26.2

View File

@ -1,29 +0,0 @@
From 88513212c564fb8cbcbbb43f433d73cb4db786e5 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Fri, 8 Jan 2021 18:33:28 +0100
Subject: [PATCH 21/25] topology: fix possible double free in load()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
topology/topology.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/topology/topology.c b/topology/topology.c
index d52b1452fdc2..c2f094324266 100644
--- a/topology/topology.c
+++ b/topology/topology.c
@@ -100,10 +100,8 @@ static int load(const char *source_file, void **dst, size_t *dst_size)
pos += r;
size += 8*1024;
buf2 = realloc(buf, size);
- if (buf2 == NULL) {
- free(buf);
+ if (buf2 == NULL)
goto _nomem;
- }
buf = buf2;
}
if (r < 0) {
--
2.26.2

View File

@ -1,39 +0,0 @@
From b0c4ed248e9f543afe671e253fe1bb285df06477 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Mon, 11 Jan 2021 10:40:53 +0100
Subject: [PATCH 22/25] alsamixer: remove dead fcn widget_handle_key() in
widget.c
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsamixer/widget.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/alsamixer/widget.c b/alsamixer/widget.c
index 17f3aceef35a..5fedaba974eb 100644
--- a/alsamixer/widget.c
+++ b/alsamixer/widget.c
@@ -29,10 +29,6 @@ int screen_cols;
static int cursor_visibility = -1;
-static void widget_handle_key(int key)
-{
-}
-
static void update_cursor_visibility(void)
{
const struct widget *active_widget;
@@ -87,9 +83,6 @@ void widget_init(struct widget *widget, int lines_, int cols, int y, int x,
set_panel_userptr(widget->panel, widget);
}
- //if (!widget->handle_key)
- // widget->handle_key = widget_handle_key;
-
if (old_window)
delwin(old_window);
--
2.26.2

View File

@ -1,27 +0,0 @@
From e165d3413e911b32441a0311d0ec0f280748e22b Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Mon, 11 Jan 2021 10:41:32 +0100
Subject: [PATCH 23/25] alsamixer: remove unused variable y in
display_scroll_indicators()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsamixer/mixer_display.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/alsamixer/mixer_display.c b/alsamixer/mixer_display.c
index 882781de5f49..330fdd5378e8 100644
--- a/alsamixer/mixer_display.c
+++ b/alsamixer/mixer_display.c
@@ -634,7 +634,7 @@ static void display_control(unsigned int control_index)
static void display_scroll_indicators(void)
{
- int y0, y1, y;
+ int y0, y1;
chtype left, right;
if (screen_too_small)
--
2.26.2

View File

@ -1,35 +0,0 @@
From 19cc5daef42c84bdadbaa25d1c4e1da33eeae3cc Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Mon, 11 Jan 2021 10:44:38 +0100
Subject: [PATCH 24/25] alsamixer: fix shift in parse_words()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsamixer/configparser.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/alsamixer/configparser.c b/alsamixer/configparser.c
index 93aa72afd04d..7647987f84d6 100644
--- a/alsamixer/configparser.c
+++ b/alsamixer/configparser.c
@@ -155,7 +155,7 @@ const char *mixer_words =
static unsigned int parse_words(const char *name, const char* wordlist, unsigned int itemlen, unsigned int *number) {
unsigned int words = 0;
unsigned int word;
- unsigned int i;
+ int i;
char buf[16];
char *endptr;
@@ -181,7 +181,7 @@ static unsigned int parse_words(const char *name, const char* wordlist, unsigned
word = W_NUMBER;
}
else if ((i = strlist_index(wordlist, itemlen, buf)) >= 0)
- word = 2U << i;
+ word = i <= 30 ? (2U << i) : 0;
else
return 0;
--
2.26.2

View File

@ -1,34 +0,0 @@
From b8a1e95773227e2b4942d2f67cc10f7d133d75ad Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Tue, 19 Jan 2021 12:36:28 +0100
Subject: [PATCH 25/25] aplay: fix the test position test for playback (avail >
delay)
The avail > delay condition is invalid only for capture, of course.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
aplay/aplay.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/aplay/aplay.c b/aplay/aplay.c
index b75be6c55794..9c827f468d5a 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -1985,11 +1985,11 @@ static void do_test_position(void)
fprintf(stderr, _("Suspicious status buffer position (%li total): "
"avail = %li, delay = %li, buffer = %li\n"),
++counter, (long)savail, (long)sdelay, (long)buffer_frames);
- } else if (avail > delay) {
+ } else if (stream == SND_PCM_STREAM_CAPTURE && avail > delay) {
fprintf(stderr, _("Suspicious buffer position avail > delay (%li total): "
"avail = %li, delay = %li\n"),
++counter, (long)avail, (long)delay);
- } else if (savail > sdelay) {
+ } else if (stream == SND_PCM_STREAM_CAPTURE && savail > sdelay) {
fprintf(stderr, _("Suspicious status buffer position avail > delay (%li total): "
"avail = %li, delay = %li\n"),
++counter, (long)savail, (long)sdelay);
--
2.26.2

View File

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

View File

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

View File

@ -1,3 +1,37 @@
-------------------------------------------------------------------
Mon Jun 14 15:04:57 CEST 2021 - tiwai@suse.de
- Update to alsa-utils 1.2.5:
a major version up, including previous patches
https://www.alsa-project.org/wiki/Changes_v1.2.4_v1.2.5
- Update to alsa-utils 1.2.5.1:
a small bugfix release
https://www.alsa-project.org/wiki/Changes_v1.2.5_v1.2.5.1
- Drop the obsoleted patches:
0001-aplay-try-to-use-16-bit-format-to-increase-capture-q.patch
0002-alsamixer-Fix-the-mixer-views-description-in-man-pag.patch
0003-Add-Slovak-translation.patch
0004-Add-Basque-translation.patch
0006-aplay-cosmetic-code-fix-in-xrun.patch
0007-aplay-fix-the-CPU-busy-loop-in-the-pause-handler.patch
0008-alsa-info-Add-lsusb-and-stream-outputs.patch
0010-alsactl-Fix-double-decrease-of-lock-timeout.patch
0011-alsactl-Fix-race-at-creating-a-lock-file.patch
0012-alsactl-Remove-asound.state-file-check-from-alsa-res.patch
0013-aplay-add-test-code-for-snd_pcm_status-to-test-posit.patch
0014-ucm-fix-typo-in-docs.patch
0015-aplay-add-avail-delay-checks-to-test-position.patch
0016-alsactl-daemon-read_pid_file-fix-the-returned-code-o.patch
0017-alsactl-init-set_ctl_value-fix-bytes-parsing.patch
0018-alsactl-init-parse-fix-possible-double-free.patch
0019-alsaloop-fix-possible-memory-leak-in-create_loopback.patch
0020-alsaloop-get_queued_playback_samples-simplify-code.patch
0021-topology-fix-possible-double-free-in-load.patch
0022-alsamixer-remove-dead-fcn-widget_handle_key-in-widge.patch
0023-alsamixer-remove-unused-variable-y-in-display_scroll.patch
0024-alsamixer-fix-shift-in-parse_words.patch
0025-aplay-fix-the-test-position-test-for-playback-avail-.patch
-------------------------------------------------------------------
Mon Apr 26 10:34:15 CEST 2021 - tiwai@suse.de

View File

@ -19,7 +19,7 @@
%define do_autoreconf 1
%define _udevdir %(pkg-config --variable=udevdir udev)
Name: alsa-utils
Version: 1.2.4
Version: 1.2.5.1
Release: 0
Summary: Advanced Linux Sound Architecture Utilities
License: GPL-2.0-or-later
@ -29,29 +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-aplay-try-to-use-16-bit-format-to-increase-capture-q.patch
Patch2: 0002-alsamixer-Fix-the-mixer-views-description-in-man-pag.patch
Patch3: 0003-Add-Slovak-translation.patch
Patch4: 0004-Add-Basque-translation.patch
Patch6: 0006-aplay-cosmetic-code-fix-in-xrun.patch
Patch7: 0007-aplay-fix-the-CPU-busy-loop-in-the-pause-handler.patch
Patch8: 0008-alsa-info-Add-lsusb-and-stream-outputs.patch
Patch10: 0010-alsactl-Fix-double-decrease-of-lock-timeout.patch
Patch11: 0011-alsactl-Fix-race-at-creating-a-lock-file.patch
Patch12: 0012-alsactl-Remove-asound.state-file-check-from-alsa-res.patch
Patch13: 0013-aplay-add-test-code-for-snd_pcm_status-to-test-posit.patch
Patch14: 0014-ucm-fix-typo-in-docs.patch
Patch15: 0015-aplay-add-avail-delay-checks-to-test-position.patch
Patch16: 0016-alsactl-daemon-read_pid_file-fix-the-returned-code-o.patch
Patch17: 0017-alsactl-init-set_ctl_value-fix-bytes-parsing.patch
Patch18: 0018-alsactl-init-parse-fix-possible-double-free.patch
Patch19: 0019-alsaloop-fix-possible-memory-leak-in-create_loopback.patch
Patch20: 0020-alsaloop-get_queued_playback_samples-simplify-code.patch
Patch21: 0021-topology-fix-possible-double-free-in-load.patch
Patch22: 0022-alsamixer-remove-dead-fcn-widget_handle_key-in-widge.patch
Patch23: 0023-alsamixer-remove-unused-variable-y-in-display_scroll.patch
Patch24: 0024-alsamixer-fix-shift-in-parse_words.patch
Patch25: 0025-aplay-fix-the-test-position-test-for-playback-avail-.patch
Patch100: alsa-info-no-update-for-distro-script.patch
Patch101: alsa-utils-configure-version-revert.patch
BuildRequires: alsa-devel
@ -95,29 +72,6 @@ and test audio before and after PM state changes.
%prep
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch25 -p1
%patch100 -p1
%if 0%{?do_autoreconf}
%patch101 -p1