diff --git a/SOURCES/alsa-git.patch b/SOURCES/alsa-git.patch index 3456836..c43a81d 100644 --- a/SOURCES/alsa-git.patch +++ b/SOURCES/alsa-git.patch @@ -1,7 +1,7 @@ From 78212445de4c8e07873cbc7dff2abcacd031f151 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 1 Jun 2021 17:47:42 +0200 -Subject: [PATCH 1/9] alsactl: fix the nested iteration +Subject: [PATCH 01/16] alsactl: fix the nested iteration There may be nested iterations for hw: card names. Handle this card name in snd_card_iterator_sinit(). @@ -33,7 +33,7 @@ index c79fd95..881b505 100644 From 3d7a6facd9e1f962eef6c4ba3aa4cdc22477a6ac Mon Sep 17 00:00:00 2001 From: Chao Song Date: Mon, 31 May 2021 10:29:57 +0800 -Subject: [PATCH 2/9] topology: fix potential null pointer from strchr +Subject: [PATCH 02/16] topology: fix potential null pointer from strchr This patch adds check to the return pointer from strchr, because it may be null and cause segment fault, if component @@ -86,7 +86,7 @@ index 09aa375..ac8caec 100644 From d6d566a9eebb63dd9d1351b07d385d39cdc33beb Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 4 Jun 2021 09:53:56 +0200 -Subject: [PATCH 3/9] alsactl: return error value in dump_config_tree() +Subject: [PATCH 03/16] alsactl: return error value in dump_config_tree() Signed-off-by: Jaroslav Kysela --- @@ -113,7 +113,7 @@ index a011284..05738fb 100644 From 511dd7a597735048f3883ef7883adf853ac2de4a Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 4 Jun 2021 09:56:20 +0200 -Subject: [PATCH 4/9] alsactl: init() - return error value from +Subject: [PATCH 04/16] alsactl: init() - return error value from snd_card_iterator_sinit() call Signed-off-by: Jaroslav Kysela @@ -141,7 +141,8 @@ index 9d0f473..e439de7 100644 From 2bc595e7bd9a9b8f8605104cfdb8f40a07c2655b Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 4 Jun 2021 09:58:46 +0200 -Subject: [PATCH 5/9] alsactl: check for error values from snd_config_get...() +Subject: [PATCH 05/16] alsactl: check for error values from + snd_config_get...() Signed-off-by: Jaroslav Kysela --- @@ -272,8 +273,8 @@ index 44fda3f..b3a3f4d 100644 From 646d6ff094a82153db49af176cba3aacbde46cf6 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 4 Jun 2021 10:04:50 +0200 -Subject: [PATCH 6/9] =?UTF-8?q?alsactl:=20state=20-=20fix=20=E2=80=98item?= - =?UTF-8?q?=E2=80=99=20may=20be=20used=20uninitialized=20gcc=20warning?= +Subject: [PATCH 06/16] =?UTF-8?q?alsactl:=20state=20-=20fix=20=E2=80=98ite?= + =?UTF-8?q?m=E2=80=99=20may=20be=20used=20uninitialized=20gcc=20warning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -303,7 +304,7 @@ index b3a3f4d..9c75688 100644 From cd2f779b8d6439479b9802e9fd2c8af86f8702fb Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 4 Jun 2021 10:08:18 +0200 -Subject: [PATCH 7/9] alsactl: fix lock_fd unlock in load_configuration() - +Subject: [PATCH 07/16] alsactl: fix lock_fd unlock in load_configuration() - error path Signed-off-by: Jaroslav Kysela @@ -342,7 +343,7 @@ index 881b505..fd4a108 100644 From 74ad91245f8257e242cf5b5b6b809f94321f197a Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 4 Jun 2021 10:12:06 +0200 -Subject: [PATCH 8/9] axfer: fix wrong calloc() item size in +Subject: [PATCH 08/16] axfer: fix wrong calloc() item size in allocate_containers() Signed-off-by: Jaroslav Kysela @@ -370,7 +371,7 @@ index 27d2cc5..839215a 100644 From c58f981e1530557835461b17b92eac6c475e5f68 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 4 Jun 2021 10:19:22 +0200 -Subject: [PATCH 9/9] topology: fix few coverity detected defects +Subject: [PATCH 09/16] topology: fix few coverity detected defects Signed-off-by: Jaroslav Kysela --- @@ -460,3 +461,476 @@ index 0458c3c..442dcc4 100644 -- 2.30.2 + +From f138117a457944ca73776bd752693d64ec207e55 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Mon, 7 Jun 2021 17:21:56 +0200 +Subject: [PATCH 10/16] alsactl: load_state() - initialize config variable for + the open_failed case + +Fixes: https://github.com/alsa-project/alsa-utils/issues/93 +Signed-off-by: Jaroslav Kysela +--- + alsactl/state.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/alsactl/state.c b/alsactl/state.c +index 9c75688..439e1f8 100644 +--- a/alsactl/state.c ++++ b/alsactl/state.c +@@ -1642,6 +1642,7 @@ int load_state(const char *cfgdir, const char *file, + snd_config_t *config; + const char *cardname1; + ++ config = NULL; + err = load_configuration(file, &config, &open_failed); + if (err < 0 && !open_failed) + return err; +-- +2.30.2 + + +From 6018c2014ac24877b2aa58c2c57f2fd901e6c7b1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?S=C3=B6ren=20Tempel?= +Date: Sun, 6 Jun 2021 03:14:19 +0200 +Subject: [PATCH 11/16] alsactl: load_state: Only delete config if one was + loaded +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If load_configuration fails with open_failed == true, load_state will +jump to the out label without config being initialized and pass this +uninitialized config value to snd_config_delete. This commit fixes this +issue by initializing config with NULL and checking if it is non-null +before invoking snd_config_delete. + +Fixes: https://github.com/alsa-project/alsa-utils/pull/94 +Fixes: f138117 ("alsactl: load_state() - initialize config variable for the open_failed case") +BugLink: https://github.com/alsa-project/alsa-utils/issues/93 +Signed-off-by: Sören Tempel +Signed-off-by: Jaroslav Kysela +--- + alsactl/state.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/alsactl/state.c b/alsactl/state.c +index 439e1f8..adbd13f 100644 +--- a/alsactl/state.c ++++ b/alsactl/state.c +@@ -1692,7 +1692,8 @@ int load_state(const char *cfgdir, const char *file, + } + err = finalerr ? finalerr : snd_card_iterator_error(&iter); + out: +- snd_config_delete(config); ++ if (config) ++ snd_config_delete(config); + snd_config_update_free_global(); + return err; + } +-- +2.30.2 + + +From 6a0d13ddb2b2afb450f3404d3cbaa56253bdcab2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Thu, 3 Jun 2021 16:07:10 +0200 +Subject: [PATCH 12/16] utils.c: Include limits.h explicitly to fix build on + musl +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes: +| ../../alsa-utils-1.2.5/alsactl/utils.c: In function 'snd_card_clean_cfgdir': +| ../../alsa-utils-1.2.5/alsactl/utils.c:309:19: error: 'PATH_MAX' undeclared (first use in this function) +| 309 | char path[PATH_MAX]; +| | ^~~~~~~~ +| ../../alsa-utils-1.2.5/alsactl/utils.c:309:19: note: each undeclared identifier is reported only once for each function it appears in + +Fixes: https://github.com/alsa-project/alsa-utils/pull/92 +Signed-off-by: Andreas Müller +Signed-off-by: Jaroslav Kysela +--- + alsactl/utils.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/alsactl/utils.c b/alsactl/utils.c +index fd4a108..a507972 100644 +--- a/alsactl/utils.c ++++ b/alsactl/utils.c +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + #include "alsactl.h" + + int file_map(const char *filename, char **buf, size_t *bufsize) +-- +2.30.2 + + +From 0e21f4d8643db547dcca1375a4265fce1edc4d51 Mon Sep 17 00:00:00 2001 +From: Andrea Piras +Date: Fri, 29 Nov 2019 03:13:21 +0100 +Subject: [PATCH 13/16] added an option to aseqnet to optionally set the midi + process name + +This option allows to run multiple instances of aseqnet without having +to double check the assigned port number, since each one can get spawned +with a unique name. + +Fixes: https://github.com/alsa-project/alsa-utils/pull/95 +Signed-off-by: Andrea Piras +Signed-off-by: Jaroslav Kysela +--- + seq/aseqnet/README.aseqnet | 2 ++ + seq/aseqnet/aseqnet.1 | 3 +++ + seq/aseqnet/aseqnet.c | 26 ++++++++++++++++++-------- + 3 files changed, 23 insertions(+), 8 deletions(-) + +diff --git a/seq/aseqnet/README.aseqnet b/seq/aseqnet/README.aseqnet +index bd0b68e..6a627f4 100644 +--- a/seq/aseqnet/README.aseqnet ++++ b/seq/aseqnet/README.aseqnet +@@ -50,4 +50,6 @@ The available options are: + -s addr : explicit read-subscription to the given address + (client:addr). + -d addr : explicit write-subscription to the given address. ++ -n name : specify the midi name of the process. ++ Default value is either 'Net Client' or 'Net Server'. + -v : verbose mode. +diff --git a/seq/aseqnet/aseqnet.1 b/seq/aseqnet/aseqnet.1 +index 2cb6eb7..6ed3911 100644 +--- a/seq/aseqnet/aseqnet.1 ++++ b/seq/aseqnet/aseqnet.1 +@@ -70,6 +70,9 @@ Subscribe to the given address for read automatically. + .B \-d addr + Subscribe to the given address for write automatically. + .TP ++.B \-n name ++Specify the midi name of the process. ++.TP + .B \-v + Verbose mode. + +diff --git a/seq/aseqnet/aseqnet.c b/seq/aseqnet/aseqnet.c +index ebdea0b..e756e82 100644 +--- a/seq/aseqnet/aseqnet.c ++++ b/seq/aseqnet/aseqnet.c +@@ -37,7 +37,7 @@ static void usage(void); + static void init_buf(void); + static void init_pollfds(void); + static void close_files(void); +-static void init_seq(char *source, char *dest); ++static void init_seq(char *source, char *dest, char *name); + static int get_port(char *service); + static void sigterm_exit(int sig); + static void init_server(int port); +@@ -87,6 +87,7 @@ static const struct option long_option[] = { + {"port", 1, NULL, 'p'}, + {"source", 1, NULL, 's'}, + {"dest", 1, NULL, 'd'}, ++ {"name", 1, NULL, 'n'}, + {"help", 0, NULL, 'h'}, + {"verbose", 0, NULL, 'v'}, + {"info", 0, NULL, 'i'}, +@@ -98,13 +99,14 @@ int main(int argc, char **argv) + int c; + int port = DEFAULT_PORT; + char *source = NULL, *dest = NULL; ++ char *name = NULL; + + #ifdef ENABLE_NLS + setlocale(LC_ALL, ""); + textdomain(PACKAGE); + #endif + +- while ((c = getopt_long(argc, argv, "p:s:d:vi", long_option, NULL)) != -1) { ++ while ((c = getopt_long(argc, argv, "p:s:d:n:,vi", long_option, NULL)) != -1) { + switch (c) { + case 'p': + if (isdigit(*optarg)) +@@ -118,6 +120,9 @@ int main(int argc, char **argv) + case 'd': + dest = optarg; + break; ++ case 'n': ++ name = optarg; ++ break; + case 'v': + verbose++; + break; +@@ -134,7 +139,7 @@ int main(int argc, char **argv) + signal(SIGTERM, sigterm_exit); + + init_buf(); +- init_seq(source, dest); ++ init_seq(source, dest, name); + + if (optind >= argc) { + server_mode = 1; +@@ -170,6 +175,7 @@ static void usage(void) + printf(_(" -p,--port # : specify TCP port (digit or service name)\n")); + printf(_(" -s,--source addr : read from given addr (client:port)\n")); + printf(_(" -d,--dest addr : write to given addr (client:port)\n")); ++ printf(_(" -n,--name value : use a specific midi process name\n")); + printf(_(" -v, --verbose : print verbose messages\n")); + printf(_(" -i, --info : print certain received events\n")); + } +@@ -223,7 +229,7 @@ static void close_files(void) + /* + * initialize sequencer + */ +-static void init_seq(char *source, char *dest) ++static void init_seq(char *source, char *dest, char* name) + { + snd_seq_addr_t addr; + int err, counti, counto; +@@ -252,10 +258,14 @@ static void init_seq(char *source, char *dest) + snd_seq_nonblock(handle, 1); + + /* set client info */ +- if (server_mode) +- snd_seq_set_client_name(handle, "Net Server"); +- else +- snd_seq_set_client_name(handle, "Net Client"); ++ if (name) ++ snd_seq_set_client_name(handle, name); ++ else { ++ if (server_mode) ++ snd_seq_set_client_name(handle, "Net Server"); ++ else ++ snd_seq_set_client_name(handle, "Net Client"); ++ } + + /* create a port */ + seq_port = snd_seq_create_simple_port(handle, "Network", +-- +2.30.2 + + +From f35b66d8f1c5e3c551981723ed242e48c62ad97f Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Mon, 14 Jun 2021 12:02:35 +0200 +Subject: [PATCH 14/16] Revert "aplay: try to use 16-bit format to increase + capture quality" + +This reverts commit 0c5948e98a6a8535c89b7bcab13017d7732181c6. + +Link: https://github.com/alsa-project/alsa-utils/issues/96 +Signed-off-by: Jaroslav Kysela +--- + aplay/aplay.c | 43 +++++++++---------------------------------- + 1 file changed, 9 insertions(+), 34 deletions(-) + +diff --git a/aplay/aplay.c b/aplay/aplay.c +index 0b7884e..d89b7df 100644 +--- a/aplay/aplay.c ++++ b/aplay/aplay.c +@@ -32,7 +32,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -95,7 +94,6 @@ enum { + VUMETER_STEREO + }; + +-static snd_pcm_format_t default_format = DEFAULT_FORMAT; + static char *command; + static snd_pcm_t *handle; + static struct { +@@ -470,24 +468,6 @@ 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(¶ms); +- 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; +@@ -548,7 +528,6 @@ 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, ""); +@@ -583,7 +562,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; + +@@ -633,7 +612,6 @@ 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; +@@ -866,9 +844,6 @@ int main(int argc, char *argv[]) + } + } + +- if (!user_set_fmt) +- try_to_adjust_default_format_16bit(); +- + chunk_size = 1024; + hwparams = rhwparams; + +@@ -1089,7 +1064,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; +@@ -1099,7 +1074,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)); +@@ -1112,7 +1087,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)); +@@ -1123,7 +1098,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)); +@@ -1209,19 +1184,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; +@@ -2390,7 +2365,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.30.2 + + +From fc7500c3c7a7d6bfb975a87e23b7544a84da3186 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Mon, 14 Jun 2021 12:22:08 +0200 +Subject: [PATCH 15/16] arecord: Inform users when 8-bit sampling is used on + tty + +When we reverted 0c5948e ("aplay: try to use 16-bit format to +increase capture quality"), we should also handle the original +problem somehow. This code shows a warning with a hint to +the right parameter. + +Fixes: https://github.com/alsa-project/alsa-utils/issues/96 +Signed-off-by: Jaroslav Kysela +--- + aplay/aplay.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/aplay/aplay.c b/aplay/aplay.c +index d89b7df..cc51dcb 100644 +--- a/aplay/aplay.c ++++ b/aplay/aplay.c +@@ -525,7 +525,7 @@ int main(int argc, char *argv[]) + }; + char *pcm_name = "default"; + int tmp, err, c; +- int do_device_list = 0, do_pcm_list = 0; ++ int do_device_list = 0, do_pcm_list = 0, force_sample_format = 0; + snd_pcm_info_t *info; + FILE *direction; + +@@ -612,6 +612,7 @@ int main(int argc, char *argv[]) + } + break; + case 'f': ++ force_sample_format = 1; + if (strcasecmp(optarg, "cd") == 0 || strcasecmp(optarg, "cdr") == 0) { + if (strcasecmp(optarg, "cdr") == 0) + rhwparams.format = SND_PCM_FORMAT_S16_BE; +@@ -844,6 +845,14 @@ int main(int argc, char *argv[]) + } + } + ++ if (!force_sample_format && ++ isatty(fileno(stdin)) && ++ stream == SND_PCM_STREAM_CAPTURE && ++ snd_pcm_format_width(rhwparams.format) <= 8) ++ fprintf(stderr, "Warning: Some sources (like microphones) may produce inaudiable results\n" ++ " with 8-bit sampling. Use '-f' argument to increase resolution\n" ++ " e.g. '-f S16_LE'.\n"); ++ + chunk_size = 1024; + hwparams = rhwparams; + +-- +2.30.2 + + diff --git a/SPECS/alsa-utils.spec b/SPECS/alsa-utils.spec index 6e7ae1f..f6bb520 100644 --- a/SPECS/alsa-utils.spec +++ b/SPECS/alsa-utils.spec @@ -5,7 +5,7 @@ Summary: Advanced Linux Sound Architecture (ALSA) utilities Name: alsa-utils Version: %{baseversion}%{?fixversion} -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv2+ Group: Applications/Multimedia URL: http://www.alsa-project.org/ @@ -192,7 +192,7 @@ fi %systemd_postun_with_restart alsa-state.service %changelog -* Thu Jun 3 2021 Jaroslav Kysela - 1.2.5-2 +* Mon Jun 14 2021 Jaroslav Kysela - 1.2.5-3 - Updated to 1.2.5 * Mon Jun 8 2020 Jaroslav Kysela - 1.2.4-2