forked from pool/alsa-utils
Accepting request 1137523 from home:tiwai:branches:multimedia:libs
- Backport upstream fixes: buffer overflow fixes in aplay, segfault in aplaymidi, etc: 0008-topology-include-locale.h.patch 0009-nhlt-dmic-info.c-include-sys-types.h.patch 0010-topology-pre-processor-Add-support-for-enum-controls.patch 0011-configure.ac-fix-UMP-support-detection.patch 0012-bat-really-skip-analysis-of-the-first-period-and-upd.patch 0013-topology-add-include-for-ENABLE_NLS-on-musl.patch 0014-nhlt-use-stdint.h-types.patch 0015-Revert-nhlt-dmic-info.c-include-sys-types.h.patch 0016-aplay-use-stdint.h-types-instead-u_int-u_short-u_cha.patch 0017-alsa-restore.rules-use-devnode-instead-number-atribu.patch 0018-nhlt-Revert-SSP_ANALOG-device_type-field.patch 0019-alsactl-fix-potential-buffer-overwrite.patch 0020-aplay-fix-buffer-overflow-and-tainted-format-string.patch 0021-misc-fix-incorrect-usages-of-strerror.patch 0022-aplay-Add-option-for-specifying-subformat.patch 0023-aplay-allow-to-compile-with-older-alsa-lib-subformat.patch 0024-aplay-log-pcm-status-before-reporting-a-fatal-error.patch 0025-aplay-enable-timestamps-by-default.patch 0026-aplay-status-dumps-are-called-only-in-verbose-mode.patch 0027-aplaymidi-Set-event-completely-for-tempo-event.patch OBS-URL: https://build.opensuse.org/request/show/1137523 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/alsa-utils?expand=0&rev=210
This commit is contained in:
parent
9ba2362df1
commit
c349a7f6d8
29
0008-topology-include-locale.h.patch
Normal file
29
0008-topology-include-locale.h.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From 8c229270f6bae83b705a03714c46067a7aa57b02 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Opdenacker <michael.opdenacker@bootlin.com>
|
||||
Date: Tue, 19 Sep 2023 13:14:29 +0200
|
||||
Subject: [PATCH] topology: include locale.h
|
||||
|
||||
This solves an issue compiling with the musl libc.
|
||||
|
||||
Fixes: https://github.com/alsa-project/alsa-utils/issues/239
|
||||
Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
topology/topology.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/topology/topology.c b/topology/topology.c
|
||||
index 1840ffe65cba..5d03a8b133b8 100644
|
||||
--- a/topology/topology.c
|
||||
+++ b/topology/topology.c
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <getopt.h>
|
||||
#include <assert.h>
|
||||
+#include <locale.h>
|
||||
|
||||
#include <alsa/asoundlib.h>
|
||||
#include <alsa/topology.h>
|
||||
--
|
||||
2.35.3
|
||||
|
29
0009-nhlt-dmic-info.c-include-sys-types.h.patch
Normal file
29
0009-nhlt-dmic-info.c-include-sys-types.h.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From 0925ad7f09b2dc77015784f9ac2f5e34dd0dd5c3 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Opdenacker <michael.opdenacker@bootlin.com>
|
||||
Date: Tue, 19 Sep 2023 13:14:30 +0200
|
||||
Subject: [PATCH] nhlt-dmic-info.c: include sys/types.h
|
||||
|
||||
This fixes an issue compiling with the musl libc.
|
||||
|
||||
Fixes: https://github.com/alsa-project/alsa-utils/issues/238
|
||||
Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
nhlt/nhlt-dmic-info.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/nhlt/nhlt-dmic-info.c b/nhlt/nhlt-dmic-info.c
|
||||
index 3f6c64d992b9..331555a82677 100644
|
||||
--- a/nhlt/nhlt-dmic-info.c
|
||||
+++ b/nhlt/nhlt-dmic-info.c
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <getopt.h>
|
||||
#include <sys/stat.h>
|
||||
+#include <sys/types.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
int debug = 0;
|
||||
--
|
||||
2.35.3
|
||||
|
124
0010-topology-pre-processor-Add-support-for-enum-controls.patch
Normal file
124
0010-topology-pre-processor-Add-support-for-enum-controls.patch
Normal file
@ -0,0 +1,124 @@
|
||||
From 68dd54784a0b2287015433a62600b28bbff49399 Mon Sep 17 00:00:00 2001
|
||||
From: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
|
||||
Date: Mon, 11 Sep 2023 08:18:15 -0700
|
||||
Subject: [PATCH] topology: pre-processor: Add support for enum controls
|
||||
|
||||
Add support for adding enum controls in the topology pre-processor.
|
||||
|
||||
Closes: https://github.com/alsa-project/alsa-utils/pull/236
|
||||
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
topology/pre-process-dapm.c | 26 ++++++++++++++++++++++++++
|
||||
topology/pre-process-object.c | 14 +++++++++++++-
|
||||
topology/pre-processor.h | 4 ++++
|
||||
3 files changed, 43 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/topology/pre-process-dapm.c b/topology/pre-process-dapm.c
|
||||
index 9355a861757d..78944a6d9801 100644
|
||||
--- a/topology/pre-process-dapm.c
|
||||
+++ b/topology/pre-process-dapm.c
|
||||
@@ -70,6 +70,26 @@ int tplg_build_channel_object(struct tplg_pre_processor *tplg_pp, snd_config_t *
|
||||
return tplg_build_base_object(tplg_pp, obj_cfg, parent, false);
|
||||
}
|
||||
|
||||
+int tplg_build_text_object(struct tplg_pre_processor *tplg_pp, snd_config_t *obj_cfg,
|
||||
+ snd_config_t *parent)
|
||||
+{
|
||||
+ snd_config_t *cfg;
|
||||
+ const char *name;
|
||||
+ int ret;
|
||||
+
|
||||
+ cfg = tplg_object_get_instance_config(tplg_pp, obj_cfg);
|
||||
+
|
||||
+ name = tplg_object_get_name(tplg_pp, cfg);
|
||||
+ if (!name)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ ret = tplg_build_object_from_template(tplg_pp, obj_cfg, &cfg, NULL, false);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ return tplg_parent_update(tplg_pp, parent, "texts", name);
|
||||
+}
|
||||
+
|
||||
int tplg_build_tlv_object(struct tplg_pre_processor *tplg_pp, snd_config_t *obj_cfg,
|
||||
snd_config_t *parent)
|
||||
{
|
||||
@@ -131,6 +151,12 @@ int tplg_build_bytes_control(struct tplg_pre_processor *tplg_pp, snd_config_t *o
|
||||
return tplg_build_control(tplg_pp, obj_cfg, parent, "bytes");
|
||||
}
|
||||
|
||||
+int tplg_build_enum_control(struct tplg_pre_processor *tplg_pp, snd_config_t *obj_cfg,
|
||||
+ snd_config_t *parent)
|
||||
+{
|
||||
+ return tplg_build_control(tplg_pp, obj_cfg, parent, "enum");
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Widget names for pipeline endpoints can be of the following type:
|
||||
* "class.<constructor args separated by .> ex: pga.0.1, buffer.1.1 etc
|
||||
diff --git a/topology/pre-process-object.c b/topology/pre-process-object.c
|
||||
index 61cc85fbc43d..34b92033435c 100644
|
||||
--- a/topology/pre-process-object.c
|
||||
+++ b/topology/pre-process-object.c
|
||||
@@ -117,7 +117,7 @@ int tplg_parent_update(struct tplg_pre_processor *tplg_pp, snd_config_t *parent,
|
||||
return ret;
|
||||
|
||||
/* get section config */
|
||||
- if (!strcmp(section_name, "tlv")) {
|
||||
+ if (!strcmp(section_name, "tlv") || !strcmp(section_name, "texts")) {
|
||||
/* set tlv name if config exists already */
|
||||
ret = snd_config_search(cfg, section_name, &item_config);
|
||||
if (ret < 0) {
|
||||
@@ -1038,6 +1038,15 @@ const struct config_template_items bytes_control_config = {
|
||||
.compound_config_ids = {"access"}
|
||||
};
|
||||
|
||||
+const struct config_template_items enum_control_config = {
|
||||
+ .int_config_ids = {"index"},
|
||||
+ .compound_config_ids = {"access"}
|
||||
+};
|
||||
+
|
||||
+const struct config_template_items text_config = {
|
||||
+ .compound_config_ids = {"values"}
|
||||
+};
|
||||
+
|
||||
const struct config_template_items scale_config = {
|
||||
.int_config_ids = {"min", "step", "mute"},
|
||||
};
|
||||
@@ -1073,6 +1082,7 @@ const struct build_function_map object_build_map[] = {
|
||||
{"Base", "ops", "ops" ,&tplg_build_ops_object, NULL, &ops_config},
|
||||
{"Base", "extops", "extops" ,&tplg_build_ops_object, NULL, &ops_config},
|
||||
{"Base", "channel", "channel", &tplg_build_channel_object, NULL, &channel_config},
|
||||
+ {"Base", "text", "SectionText", &tplg_build_text_object, NULL, &text_config},
|
||||
{"Base", "VendorToken", "SectionVendorTokens", &tplg_build_vendor_token_object,
|
||||
NULL, NULL},
|
||||
{"Base", "hw_config", "SectionHWConfig", &tplg_build_hw_cfg_object, NULL,
|
||||
@@ -1085,6 +1095,8 @@ const struct build_function_map object_build_map[] = {
|
||||
&mixer_control_config},
|
||||
{"Control", "bytes", "SectionControlBytes", &tplg_build_bytes_control, NULL,
|
||||
&bytes_control_config},
|
||||
+ {"Control", "enum", "SectionControlEnum", &tplg_build_enum_control, NULL,
|
||||
+ &enum_control_config},
|
||||
{"Dai", "", "SectionBE", &tplg_build_generic_object, NULL, &be_dai_config},
|
||||
{"PCM", "pcm", "SectionPCM", &tplg_build_generic_object, NULL, &pcm_config},
|
||||
{"PCM", "pcm_caps", "SectionPCMCapabilities", &tplg_build_pcm_caps_object,
|
||||
diff --git a/topology/pre-processor.h b/topology/pre-processor.h
|
||||
index 878653d4c849..3a8a4bc3b1a8 100644
|
||||
--- a/topology/pre-processor.h
|
||||
+++ b/topology/pre-processor.h
|
||||
@@ -70,6 +70,10 @@ int tplg_build_mixer_control(struct tplg_pre_processor *tplg_pp, snd_config_t *o
|
||||
snd_config_t *parent);
|
||||
int tplg_build_bytes_control(struct tplg_pre_processor *tplg_pp, snd_config_t *obj_cfg,
|
||||
snd_config_t *parent);
|
||||
+int tplg_build_enum_control(struct tplg_pre_processor *tplg_pp, snd_config_t *obj_cfg,
|
||||
+ snd_config_t *parent);
|
||||
+int tplg_build_text_object(struct tplg_pre_processor *tplg_pp, snd_config_t *obj_cfg,
|
||||
+ snd_config_t *parent);
|
||||
int tplg_build_dapm_route_object(struct tplg_pre_processor *tplg_pp, snd_config_t *obj_cfg,
|
||||
snd_config_t *parent);
|
||||
int tplg_build_hw_cfg_object(struct tplg_pre_processor *tplg_pp,
|
||||
--
|
||||
2.35.3
|
||||
|
38
0011-configure.ac-fix-UMP-support-detection.patch
Normal file
38
0011-configure.ac-fix-UMP-support-detection.patch
Normal file
@ -0,0 +1,38 @@
|
||||
From 31e91f911e9132171a87fb7966c3f4701ff9717c Mon Sep 17 00:00:00 2001
|
||||
From: Bernd Kuhls <bernd@kuhls.net>
|
||||
Date: Fri, 13 Oct 2023 20:32:32 +0200
|
||||
Subject: [PATCH] configure.ac: fix UMP support detection
|
||||
|
||||
https://github.com/alsa-project/alsa-utils/commit/b399fb85a919636b7da34e8bcf17f484dd9046f7
|
||||
added usage of alsa/ump_msg.h without checking whether alsa-lib was
|
||||
compiled with rawmidi support:
|
||||
https://github.com/alsa-project/alsa-lib/blob/master/include/Makefile.am#L37
|
||||
|
||||
Fixes a build error when alsa-lib was compiled with --disable-rawmidi
|
||||
|
||||
aplaymidi.c:34:10: fatal error: alsa/ump_msg.h: No such file or directory
|
||||
34 | #include <alsa/ump_msg.h>
|
||||
|
||||
Closes: https://github.com/alsa-project/alsa-utils/pull/240
|
||||
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index beb496393df5..42177416dafe 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -55,7 +55,7 @@ if test "$HAVE_SEQ_CLIENT_INFO_GET_PID" = "yes" ; then
|
||||
AC_DEFINE([HAVE_SEQ_CLIENT_INFO_GET_PID], 1, [alsa-lib supports snd_seq_client_info_get_pid])
|
||||
fi
|
||||
AC_CHECK_LIB([asound], [snd_seq_client_info_get_midi_version], [HAVE_SEQ_CLIENT_INFO_GET_MIDI_VERSION="yes"])
|
||||
-if test "$HAVE_SEQ_CLIENT_INFO_GET_MIDI_VERSION" = "yes" ; then
|
||||
+if test "$HAVE_SEQ_CLIENT_INFO_GET_MIDI_VERSION" = "yes" -a "$have_rawmidi" = "yes"; then
|
||||
AC_DEFINE([HAVE_SEQ_CLIENT_INFO_GET_MIDI_VERSION], 1, [alsa-lib supports snd_seq_client_info_get_midi_version])
|
||||
fi
|
||||
AC_CHECK_LIB([atopology], [snd_tplg_save], [have_topology="yes"], [have_topology="no"])
|
||||
--
|
||||
2.35.3
|
||||
|
@ -0,0 +1,44 @@
|
||||
From 039e4cad48a01437d195914b57b5da83ebc582c3 Mon Sep 17 00:00:00 2001
|
||||
From: Delio Brignoli <dbrignoli@audioscience.com>
|
||||
Date: Mon, 18 Sep 2023 09:33:37 +0100
|
||||
Subject: [PATCH] bat: really skip analysis of the first period and update
|
||||
related comment
|
||||
|
||||
Prior to this change bat/analyze.c would skip the last period of the recording, contrary to
|
||||
what the comment in the code which stated the first period was meant to be skipped.
|
||||
|
||||
The comment has been updated to state that both the first and last period are skipped and the code
|
||||
has been updated to match.
|
||||
|
||||
Closes: https://github.com/alsa-project/alsa-utils/pull/237
|
||||
Signed-off-by: Delio Brignoli <dbrignoli@audioscience.com>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
bat/analyze.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/bat/analyze.c b/bat/analyze.c
|
||||
index 686788000f99..b8d02706fe66 100644
|
||||
--- a/bat/analyze.c
|
||||
+++ b/bat/analyze.c
|
||||
@@ -299,7 +299,7 @@ static int calculate_noise(struct bat *bat, float *src, int channel)
|
||||
/* each section has 2 sine periods, the first one for locating
|
||||
* and the second one for noise calculating */
|
||||
int nsamples_per_section = nsamples * 2;
|
||||
- /* all sine periods will be calculated except the first one */
|
||||
+ /* all sine periods will be calculated except the first and last one */
|
||||
int nsection = bat->frames / nsamples - 1;
|
||||
|
||||
fprintf(bat->log, _("samples per period: %d\n"), nsamples);
|
||||
@@ -331,7 +331,7 @@ static int calculate_noise(struct bat *bat, float *src, int channel)
|
||||
/* calculate average noise level */
|
||||
sum_snr_pc = 0.0;
|
||||
cnt_clean = cnt_noise = 0;
|
||||
- for (i = 0, offset = 0; i < nsection; i++) {
|
||||
+ for (i = 1, offset = nsamples; i < nsection; i++) {
|
||||
na.snr_db = SNR_DB_INVALID;
|
||||
|
||||
err = calculate_noise_one_period(bat, &na, src + offset,
|
||||
--
|
||||
2.35.3
|
||||
|
39
0013-topology-add-include-for-ENABLE_NLS-on-musl.patch
Normal file
39
0013-topology-add-include-for-ENABLE_NLS-on-musl.patch
Normal file
@ -0,0 +1,39 @@
|
||||
From d272c5d935b2ff8acc00f16317f1f960b02ed3a1 Mon Sep 17 00:00:00 2001
|
||||
From: Sam James <sam@gentoo.org>
|
||||
Date: Thu, 7 Sep 2023 21:23:51 +0100
|
||||
Subject: [PATCH] topology: add include for ENABLE_NLS on musl
|
||||
|
||||
Needed for setlocale().
|
||||
|
||||
(After rebasing to pick up 8c229270f6bae83b705a03714c46067a7aa57b02, just
|
||||
move it to be guarded as the include now exists.)
|
||||
|
||||
Closes: https://github.com/alsa-project/alsa-utils/pull/234
|
||||
Signed-off-by: Sam James <sam@gentoo.org>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
topology/topology.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/topology/topology.c b/topology/topology.c
|
||||
index 5d03a8b133b8..98b000aa5031 100644
|
||||
--- a/topology/topology.c
|
||||
+++ b/topology/topology.c
|
||||
@@ -32,11 +32,13 @@
|
||||
#include <sys/stat.h>
|
||||
#include <getopt.h>
|
||||
#include <assert.h>
|
||||
-#include <locale.h>
|
||||
|
||||
#include <alsa/asoundlib.h>
|
||||
#include <alsa/topology.h>
|
||||
#include "gettext.h"
|
||||
+#ifdef ENABLE_NLS
|
||||
+#include <locale.h>
|
||||
+#endif
|
||||
#include "version.h"
|
||||
#include "topology.h"
|
||||
|
||||
--
|
||||
2.35.3
|
||||
|
109
0014-nhlt-use-stdint.h-types.patch
Normal file
109
0014-nhlt-use-stdint.h-types.patch
Normal file
@ -0,0 +1,109 @@
|
||||
From c08d580b281bd5965585bf09b45ba3a582202931 Mon Sep 17 00:00:00 2001
|
||||
From: Sam James <sam@gentoo.org>
|
||||
Date: Thu, 7 Sep 2023 21:24:16 +0100
|
||||
Subject: [PATCH] nhlt: use stdint.h types
|
||||
|
||||
u_int_* aren't standard, but uint* are. Use those instead for musl compat.
|
||||
|
||||
Closes: https://github.com/alsa-project/alsa-utils/pull/234
|
||||
Bug: https://bugs.gentoo.org/913758
|
||||
Signed-off-by: Sam James <sam@gentoo.org>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
nhlt/nhlt-dmic-info.c | 28 ++++++++++++++--------------
|
||||
1 file changed, 14 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/nhlt/nhlt-dmic-info.c b/nhlt/nhlt-dmic-info.c
|
||||
index 331555a82677..eadf21a11bbc 100644
|
||||
--- a/nhlt/nhlt-dmic-info.c
|
||||
+++ b/nhlt/nhlt-dmic-info.c
|
||||
@@ -46,7 +46,7 @@ int debug = 0;
|
||||
#define NHLT_EP_HDR_SIZE (4 + 1 + 1 + 2 + 2 + 2 + 4 + 1 + 1 + 1)
|
||||
#define VENDOR_MIC_CFG_SIZE (1 + 1 + 2 + 2 + 2 + 1 + 1 + 2 + 2 + 2 + 2 + 2 + 2)
|
||||
|
||||
-static const char *microphone_type(u_int8_t type)
|
||||
+static const char *microphone_type(uint8_t type)
|
||||
{
|
||||
switch (type) {
|
||||
case 0: return "omnidirectional";
|
||||
@@ -60,7 +60,7 @@ static const char *microphone_type(u_int8_t type)
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
-static const char *microphone_location(u_int8_t location)
|
||||
+static const char *microphone_location(uint8_t location)
|
||||
{
|
||||
switch (location) {
|
||||
case 0: return "laptop-top-panel";
|
||||
@@ -74,21 +74,21 @@ static const char *microphone_location(u_int8_t location)
|
||||
}
|
||||
|
||||
|
||||
-static inline u_int8_t get_u8(u_int8_t *base, u_int32_t off)
|
||||
+static inline uint8_t get_u8(uint8_t *base, uint32_t off)
|
||||
{
|
||||
return *(base + off);
|
||||
}
|
||||
|
||||
-static inline int32_t get_s16le(u_int8_t *base, u_int32_t off)
|
||||
+static inline int32_t get_s16le(uint8_t *base, uint32_t off)
|
||||
{
|
||||
- u_int32_t v = *(base + off + 0) |
|
||||
+ uint32_t v = *(base + off + 0) |
|
||||
(*(base + off + 1) << 8);
|
||||
if (v & 0x8000)
|
||||
return -((int32_t)0x10000 - (int32_t)v);
|
||||
return v;
|
||||
}
|
||||
|
||||
-static inline u_int32_t get_u32le(u_int8_t *base, u_int32_t off)
|
||||
+static inline uint32_t get_u32le(uint8_t *base, uint32_t off)
|
||||
{
|
||||
return *(base + off + 0) |
|
||||
(*(base + off + 1) << 8) |
|
||||
@@ -138,10 +138,10 @@ static int nhlt_dmic_config(FILE *out, uint8_t *dmic, uint8_t mic)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int nhlt_dmic_ep_to_json(FILE *out, uint8_t *ep, u_int32_t ep_size)
|
||||
+static int nhlt_dmic_ep_to_json(FILE *out, uint8_t *ep, uint32_t ep_size)
|
||||
{
|
||||
- u_int32_t off, specific_cfg_size;
|
||||
- u_int8_t config_type, array_type, mic, num_mics;
|
||||
+ uint32_t off, specific_cfg_size;
|
||||
+ uint8_t config_type, array_type, mic, num_mics;
|
||||
int res;
|
||||
|
||||
off = NHLT_EP_HDR_SIZE;
|
||||
@@ -182,15 +182,15 @@ oob:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
-static int nhlt_table_to_json(FILE *out, u_int8_t *nhlt, u_int32_t size)
|
||||
+static int nhlt_table_to_json(FILE *out, uint8_t *nhlt, uint32_t size)
|
||||
{
|
||||
- u_int32_t _size, off, ep_size;
|
||||
- u_int8_t sum = 0, ep, ep_count, link_type, dmics = 0;
|
||||
+ uint32_t _size, off, ep_size;
|
||||
+ uint8_t sum = 0, ep, ep_count, link_type, dmics = 0;
|
||||
int res;
|
||||
|
||||
_size = get_u32le(nhlt, 4);
|
||||
if (_size != size) {
|
||||
- fprintf(stderr, "Table size mismatch (%08x != %08x)\n", _size, (u_int32_t)size);
|
||||
+ fprintf(stderr, "Table size mismatch (%08x != %08x)\n", _size, (uint32_t)size);
|
||||
return -EINVAL;
|
||||
}
|
||||
for (off = 0; off < size; off++)
|
||||
@@ -232,7 +232,7 @@ oob:
|
||||
static int nhlt_to_json(FILE *out, const char *nhlt_file)
|
||||
{
|
||||
struct stat st;
|
||||
- u_int8_t *buf;
|
||||
+ uint8_t *buf;
|
||||
int _errno, fd, res;
|
||||
size_t pos, size;
|
||||
ssize_t ret;
|
||||
--
|
||||
2.35.3
|
||||
|
32
0015-Revert-nhlt-dmic-info.c-include-sys-types.h.patch
Normal file
32
0015-Revert-nhlt-dmic-info.c-include-sys-types.h.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 5ae01fcf270864d379eefd81f1abc5b71907a72b Mon Sep 17 00:00:00 2001
|
||||
From: Sam James <sam@gentoo.org>
|
||||
Date: Sat, 30 Sep 2023 10:09:46 +0100
|
||||
Subject: [PATCH] Revert "nhlt-dmic-info.c: include sys/types.h"
|
||||
|
||||
This reverts commit 0925ad7f09b2dc77015784f9ac2f5e34dd0dd5c3.
|
||||
|
||||
This isn't necessary now that we use standard types (sys/types.h just
|
||||
defines some compatibility typedefs).
|
||||
|
||||
Closes: https://github.com/alsa-project/alsa-utils/pull/234
|
||||
Signed-off-by: Sam James <sam@gentoo.org>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
nhlt/nhlt-dmic-info.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/nhlt/nhlt-dmic-info.c b/nhlt/nhlt-dmic-info.c
|
||||
index eadf21a11bbc..f1b085742510 100644
|
||||
--- a/nhlt/nhlt-dmic-info.c
|
||||
+++ b/nhlt/nhlt-dmic-info.c
|
||||
@@ -33,7 +33,6 @@
|
||||
#include <fcntl.h>
|
||||
#include <getopt.h>
|
||||
#include <sys/stat.h>
|
||||
-#include <sys/types.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
int debug = 0;
|
||||
--
|
||||
2.35.3
|
||||
|
451
0016-aplay-use-stdint.h-types-instead-u_int-u_short-u_cha.patch
Normal file
451
0016-aplay-use-stdint.h-types-instead-u_int-u_short-u_cha.patch
Normal file
@ -0,0 +1,451 @@
|
||||
From 37447085c6fc975d191ecb508931a67bce79233d Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Tue, 17 Oct 2023 13:44:03 +0200
|
||||
Subject: [PATCH] aplay: use stdint.h types instead u_int/u_short/u_char
|
||||
|
||||
Closes: https://github.com/alsa-project/alsa-utils/pull/234
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
aplay/aplay.c | 92 ++++++++++++++++++++++++-------------------------
|
||||
aplay/formats.h | 70 ++++++++++++++++++-------------------
|
||||
2 files changed, 81 insertions(+), 81 deletions(-)
|
||||
|
||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
||||
index f180d42b5516..9cf36dee2d9d 100644
|
||||
--- a/aplay/aplay.c
|
||||
+++ b/aplay/aplay.c
|
||||
@@ -29,6 +29,7 @@
|
||||
#define _GNU_SOURCE
|
||||
#include "aconfig.h"
|
||||
#include <stdio.h>
|
||||
+#include <stdint.h>
|
||||
#if HAVE_MALLOC_H
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
@@ -50,7 +51,6 @@
|
||||
#include <sys/uio.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/stat.h>
|
||||
-#include <sys/types.h>
|
||||
#include <endian.h>
|
||||
#include "gettext.h"
|
||||
#include "formats.h"
|
||||
@@ -114,7 +114,7 @@ static int mmap_flag = 0;
|
||||
static int interleaved = 1;
|
||||
static int nonblock = 0;
|
||||
static volatile sig_atomic_t in_aborting = 0;
|
||||
-static u_char *audiobuf = NULL;
|
||||
+static uint8_t *audiobuf = NULL;
|
||||
static snd_pcm_uframes_t chunk_size = 0;
|
||||
static unsigned period_time = 0;
|
||||
static unsigned buffer_time = 0;
|
||||
@@ -859,7 +859,7 @@ int main(int argc, char *argv[])
|
||||
chunk_size = 1024;
|
||||
hwparams = rhwparams;
|
||||
|
||||
- audiobuf = (u_char *)malloc(1024);
|
||||
+ audiobuf = (uint8_t *)malloc(1024);
|
||||
if (audiobuf == NULL) {
|
||||
error(_("not enough memory"));
|
||||
return 1;
|
||||
@@ -970,7 +970,7 @@ static int test_vocfile(void *buffer)
|
||||
* helper for test_wavefile
|
||||
*/
|
||||
|
||||
-static size_t test_wavefile_read(int fd, u_char *buffer, size_t *size, size_t reqsize, int line)
|
||||
+static size_t test_wavefile_read(int fd, uint8_t *buffer, size_t *size, size_t reqsize, int line)
|
||||
{
|
||||
if (*size >= reqsize)
|
||||
return *size;
|
||||
@@ -995,17 +995,17 @@ static size_t test_wavefile_read(int fd, u_char *buffer, size_t *size, size_t re
|
||||
* == 0 if not
|
||||
* Value returned is bytes to be discarded.
|
||||
*/
|
||||
-static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size)
|
||||
+static ssize_t test_wavefile(int fd, uint8_t *_buffer, size_t size)
|
||||
{
|
||||
WaveHeader *h = (WaveHeader *)_buffer;
|
||||
- u_char *buffer = NULL;
|
||||
+ uint8_t *buffer = NULL;
|
||||
size_t blimit = 0;
|
||||
WaveFmtBody *f;
|
||||
WaveChunkHeader *c;
|
||||
- u_int type, len;
|
||||
+ uint32_t type, len;
|
||||
unsigned short format, channels;
|
||||
int big_endian, native_format;
|
||||
- u_char vbps = 0;
|
||||
+ uint8_t vbps = 0;
|
||||
|
||||
if (size < sizeof(WaveHeader))
|
||||
return -1;
|
||||
@@ -1044,7 +1044,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size)
|
||||
|
||||
if (len < sizeof(WaveFmtBody)) {
|
||||
error(_("unknown length of 'fmt ' chunk (read %u, should be %u at least)"),
|
||||
- len, (u_int)sizeof(WaveFmtBody));
|
||||
+ len, (uint32_t)sizeof(WaveFmtBody));
|
||||
prg_exit(EXIT_FAILURE);
|
||||
}
|
||||
check_wavefile_space(buffer, len, blimit);
|
||||
@@ -1055,7 +1055,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size)
|
||||
WaveFmtExtensibleBody *fe = (WaveFmtExtensibleBody*)buffer;
|
||||
if (len < sizeof(WaveFmtExtensibleBody)) {
|
||||
error(_("unknown length of extensible 'fmt ' chunk (read %u, should be %u at least)"),
|
||||
- len, (u_int)sizeof(WaveFmtExtensibleBody));
|
||||
+ len, (unsigned int)sizeof(WaveFmtExtensibleBody));
|
||||
prg_exit(EXIT_FAILURE);
|
||||
}
|
||||
if (memcmp(fe->guid_tag, WAV_GUID_TAG, 14) != 0) {
|
||||
@@ -1167,7 +1167,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size)
|
||||
size -= len;
|
||||
|
||||
while (1) {
|
||||
- u_int type, len;
|
||||
+ uint32_t type, len;
|
||||
|
||||
check_wavefile_space(buffer, sizeof(WaveChunkHeader), blimit);
|
||||
test_wavefile_read(fd, buffer, &size, sizeof(WaveChunkHeader), __LINE__);
|
||||
@@ -1809,7 +1809,7 @@ static void print_vu_meter(signed int *perc, signed int *maxperc)
|
||||
}
|
||||
|
||||
/* peak handler */
|
||||
-static void compute_max_peak(u_char *data, size_t samples)
|
||||
+static void compute_max_peak(uint8_t *data, size_t samples)
|
||||
{
|
||||
signed int val, max, perc[2], max_peak[2];
|
||||
static int run = 0;
|
||||
@@ -2054,9 +2054,9 @@ static void do_test_position(void)
|
||||
/*
|
||||
*/
|
||||
#ifdef CONFIG_SUPPORT_CHMAP
|
||||
-static u_char *remap_data(u_char *data, size_t count)
|
||||
+static uint8_t *remap_data(uint8_t *data, size_t count)
|
||||
{
|
||||
- static u_char *tmp, *src, *dst;
|
||||
+ static uint8_t *tmp, *src, *dst;
|
||||
static size_t tmp_size;
|
||||
size_t sample_bytes = bits_per_sample / 8;
|
||||
size_t step = bits_per_frame / 8;
|
||||
@@ -2090,9 +2090,9 @@ static u_char *remap_data(u_char *data, size_t count)
|
||||
return tmp;
|
||||
}
|
||||
|
||||
-static u_char **remap_datav(u_char **data, size_t count ATTRIBUTE_UNUSED)
|
||||
+static uint8_t **remap_datav(uint8_t **data, size_t count ATTRIBUTE_UNUSED)
|
||||
{
|
||||
- static u_char **tmp;
|
||||
+ static uint8_t **tmp;
|
||||
unsigned int ch;
|
||||
|
||||
if (!hw_map)
|
||||
@@ -2118,7 +2118,7 @@ static u_char **remap_datav(u_char **data, size_t count ATTRIBUTE_UNUSED)
|
||||
* write function
|
||||
*/
|
||||
|
||||
-static ssize_t pcm_write(u_char *data, size_t count)
|
||||
+static ssize_t pcm_write(uint8_t *data, size_t count)
|
||||
{
|
||||
ssize_t r;
|
||||
ssize_t result = 0;
|
||||
@@ -2157,7 +2157,7 @@ static ssize_t pcm_write(u_char *data, size_t count)
|
||||
return result;
|
||||
}
|
||||
|
||||
-static ssize_t pcm_writev(u_char **data, unsigned int channels, size_t count)
|
||||
+static ssize_t pcm_writev(uint8_t **data, unsigned int channels, size_t count)
|
||||
{
|
||||
ssize_t r;
|
||||
size_t result = 0;
|
||||
@@ -2210,7 +2210,7 @@ static ssize_t pcm_writev(u_char **data, unsigned int channels, size_t count)
|
||||
* read function
|
||||
*/
|
||||
|
||||
-static ssize_t pcm_read(u_char *data, size_t rcount)
|
||||
+static ssize_t pcm_read(uint8_t *data, size_t rcount)
|
||||
{
|
||||
ssize_t r;
|
||||
size_t result = 0;
|
||||
@@ -2252,7 +2252,7 @@ abort:
|
||||
return result > rcount ? rcount : result;
|
||||
}
|
||||
|
||||
-static ssize_t pcm_readv(u_char **data, unsigned int channels, size_t rcount)
|
||||
+static ssize_t pcm_readv(uint8_t **data, unsigned int channels, size_t rcount)
|
||||
{
|
||||
ssize_t r;
|
||||
size_t result = 0;
|
||||
@@ -2304,7 +2304,7 @@ abort:
|
||||
* ok, let's play a .voc file
|
||||
*/
|
||||
|
||||
-static ssize_t voc_pcm_write(u_char *data, size_t count)
|
||||
+static ssize_t voc_pcm_write(uint8_t *data, size_t count)
|
||||
{
|
||||
ssize_t result = count, r;
|
||||
size_t size;
|
||||
@@ -2329,9 +2329,9 @@ static ssize_t voc_pcm_write(u_char *data, size_t count)
|
||||
static void voc_write_silence(unsigned x)
|
||||
{
|
||||
unsigned l;
|
||||
- u_char *buf;
|
||||
+ uint8_t *buf;
|
||||
|
||||
- buf = (u_char *) malloc(chunk_bytes);
|
||||
+ buf = (uint8_t *) malloc(chunk_bytes);
|
||||
if (buf == NULL) {
|
||||
error(_("can't allocate buffer for silence"));
|
||||
return; /* not fatal error */
|
||||
@@ -2372,15 +2372,15 @@ static void voc_play(int fd, int ofs, char *name)
|
||||
VocVoiceData *vd;
|
||||
VocExtBlock *eb;
|
||||
size_t nextblock, in_buffer;
|
||||
- u_char *data, *buf;
|
||||
+ uint8_t *data, *buf;
|
||||
char was_extended = 0, output = 0;
|
||||
- u_short *sp, repeat = 0;
|
||||
+ uint16_t *sp, repeat = 0;
|
||||
off_t filepos = 0;
|
||||
|
||||
#define COUNT(x) nextblock -= x; in_buffer -= x; data += x
|
||||
#define COUNT1(x) in_buffer -= x; data += x
|
||||
|
||||
- data = buf = (u_char *)malloc(64 * 1024);
|
||||
+ data = buf = (uint8_t *)malloc(64 * 1024);
|
||||
buffer_pos = 0;
|
||||
if (data == NULL) {
|
||||
error(_("malloc error"));
|
||||
@@ -2472,8 +2472,8 @@ static void voc_play(int fd, int ofs, char *name)
|
||||
#endif
|
||||
break;
|
||||
case 3: /* a silence block, no data, only a count */
|
||||
- sp = (u_short *) data;
|
||||
- COUNT1(sizeof(u_short));
|
||||
+ sp = (uint16_t *) data;
|
||||
+ COUNT1(sizeof(uint16_t));
|
||||
hwparams.rate = (int) (*data);
|
||||
COUNT1(1);
|
||||
hwparams.rate = 1000000 / (256 - hwparams.rate);
|
||||
@@ -2488,8 +2488,8 @@ static void voc_play(int fd, int ofs, char *name)
|
||||
voc_write_silence(*sp);
|
||||
break;
|
||||
case 4: /* a marker for syncronisation, no effect */
|
||||
- sp = (u_short *) data;
|
||||
- COUNT1(sizeof(u_short));
|
||||
+ sp = (uint16_t *) data;
|
||||
+ COUNT1(sizeof(uint16_t));
|
||||
#if 0
|
||||
d_printf("Marker %d\n", *sp);
|
||||
#endif
|
||||
@@ -2503,8 +2503,8 @@ static void voc_play(int fd, int ofs, char *name)
|
||||
case 6: /* repeat marker, says repeatcount */
|
||||
/* my specs don't say it: maybe this can be recursive, but
|
||||
I don't think somebody use it */
|
||||
- repeat = *(u_short *) data;
|
||||
- COUNT1(sizeof(u_short));
|
||||
+ repeat = *(uint16_t *) data;
|
||||
+ COUNT1(sizeof(uint16_t));
|
||||
#if 0
|
||||
d_printf("Repeat loop %d times\n", repeat);
|
||||
#endif
|
||||
@@ -2649,14 +2649,14 @@ static void begin_voc(int fd, size_t cnt)
|
||||
}
|
||||
bt.type = 1;
|
||||
cnt += sizeof(VocVoiceData); /* Channel_data block follows */
|
||||
- bt.datalen = (u_char) (cnt & 0xFF);
|
||||
- bt.datalen_m = (u_char) ((cnt & 0xFF00) >> 8);
|
||||
- bt.datalen_h = (u_char) ((cnt & 0xFF0000) >> 16);
|
||||
+ bt.datalen = (uint8_t) (cnt & 0xFF);
|
||||
+ bt.datalen_m = (uint8_t) ((cnt & 0xFF00) >> 8);
|
||||
+ bt.datalen_h = (uint8_t) ((cnt & 0xFF0000) >> 16);
|
||||
if (xwrite(fd, &bt, sizeof(VocBlockType)) != sizeof(VocBlockType)) {
|
||||
error(_("write error"));
|
||||
prg_exit(EXIT_FAILURE);
|
||||
}
|
||||
- vd.tc = (u_char) (256 - (1000000 / hwparams.rate));
|
||||
+ vd.tc = (uint8_t) (256 - (1000000 / hwparams.rate));
|
||||
vd.pack = 0;
|
||||
if (xwrite(fd, &vd, sizeof(VocVoiceData)) != sizeof(VocVoiceData)) {
|
||||
error(_("write error"));
|
||||
@@ -2671,8 +2671,8 @@ static void begin_wave(int fd, size_t cnt)
|
||||
WaveFmtBody f;
|
||||
WaveChunkHeader cf, cd;
|
||||
int bits;
|
||||
- u_int tmp;
|
||||
- u_short tmp2;
|
||||
+ uint32_t tmp;
|
||||
+ uint16_t tmp2;
|
||||
|
||||
/* WAVE cannot handle greater than 32bit (signed?) int */
|
||||
if (cnt == (size_t)-2)
|
||||
@@ -2715,11 +2715,11 @@ static void begin_wave(int fd, size_t cnt)
|
||||
#if 0
|
||||
tmp2 = (samplesize == 8) ? 1 : 2;
|
||||
f.byte_p_spl = LE_SHORT(tmp2);
|
||||
- tmp = dsp_speed * hwparams.channels * (u_int) tmp2;
|
||||
+ tmp = dsp_speed * hwparams.channels * (uint32_t) tmp2;
|
||||
#else
|
||||
tmp2 = hwparams.channels * snd_pcm_format_physical_width(hwparams.format) / 8;
|
||||
f.byte_p_spl = LE_SHORT(tmp2);
|
||||
- tmp = (u_int) tmp2 * hwparams.rate;
|
||||
+ tmp = (uint32_t) tmp2 * hwparams.rate;
|
||||
#endif
|
||||
f.byte_p_sec = LE_INT(tmp);
|
||||
f.bit_p_spl = LE_SHORT(bits);
|
||||
@@ -2786,9 +2786,9 @@ static void end_voc(int fd)
|
||||
cnt += sizeof(VocVoiceData); /* Channel_data block follows */
|
||||
if (cnt > 0x00ffffff)
|
||||
cnt = 0x00ffffff;
|
||||
- bt.datalen = (u_char) (cnt & 0xFF);
|
||||
- bt.datalen_m = (u_char) ((cnt & 0xFF00) >> 8);
|
||||
- bt.datalen_h = (u_char) ((cnt & 0xFF0000) >> 16);
|
||||
+ bt.datalen = (uint8_t) (cnt & 0xFF);
|
||||
+ bt.datalen_m = (uint8_t) ((cnt & 0xFF00) >> 8);
|
||||
+ bt.datalen_h = (uint8_t) ((cnt & 0xFF0000) >> 16);
|
||||
if (lseek(fd, length_seek, SEEK_SET) == length_seek)
|
||||
xwrite(fd, &bt, sizeof(VocBlockType));
|
||||
}
|
||||
@@ -2798,7 +2798,7 @@ static void end_wave(int fd)
|
||||
WaveChunkHeader cd;
|
||||
off_t length_seek;
|
||||
off_t filelen;
|
||||
- u_int rifflen;
|
||||
+ uint32_t rifflen;
|
||||
|
||||
length_seek = sizeof(WaveHeader) +
|
||||
sizeof(WaveChunkHeader) +
|
||||
@@ -3339,7 +3339,7 @@ static void playbackv_go(int* fds, unsigned int channels, size_t loaded, off_t c
|
||||
size_t vsize;
|
||||
|
||||
unsigned int channel;
|
||||
- u_char *bufs[channels];
|
||||
+ uint8_t *bufs[channels];
|
||||
|
||||
header(rtype, names[0]);
|
||||
set_params();
|
||||
@@ -3393,7 +3393,7 @@ static void capturev_go(int* fds, unsigned int channels, off_t count, int rtype,
|
||||
ssize_t r;
|
||||
unsigned int channel;
|
||||
size_t vsize;
|
||||
- u_char *bufs[channels];
|
||||
+ uint8_t *bufs[channels];
|
||||
|
||||
header(rtype, names[0]);
|
||||
set_params();
|
||||
diff --git a/aplay/formats.h b/aplay/formats.h
|
||||
index 093ab809382e..d82505e4626f 100644
|
||||
--- a/aplay/formats.h
|
||||
+++ b/aplay/formats.h
|
||||
@@ -17,28 +17,28 @@
|
||||
((u_long)(bp->datalen_h) << 16) )
|
||||
|
||||
typedef struct voc_header {
|
||||
- u_char magic[20]; /* must be MAGIC_STRING */
|
||||
- u_short headerlen; /* Headerlength, should be 0x1A */
|
||||
- u_short version; /* VOC-file version */
|
||||
- u_short coded_ver; /* 0x1233-version */
|
||||
+ uint8_t magic[20]; /* must be MAGIC_STRING */
|
||||
+ uint16_t headerlen; /* Headerlength, should be 0x1A */
|
||||
+ uint16_t version; /* VOC-file version */
|
||||
+ uint16_t coded_ver; /* 0x1233-version */
|
||||
} VocHeader;
|
||||
|
||||
typedef struct voc_blocktype {
|
||||
- u_char type;
|
||||
- u_char datalen; /* low-byte */
|
||||
- u_char datalen_m; /* medium-byte */
|
||||
- u_char datalen_h; /* high-byte */
|
||||
+ uint8_t type;
|
||||
+ uint8_t datalen; /* low-byte */
|
||||
+ uint8_t datalen_m; /* medium-byte */
|
||||
+ uint8_t datalen_h; /* high-byte */
|
||||
} VocBlockType;
|
||||
|
||||
typedef struct voc_voice_data {
|
||||
- u_char tc;
|
||||
- u_char pack;
|
||||
+ uint8_t tc;
|
||||
+ uint8_t pack;
|
||||
} VocVoiceData;
|
||||
|
||||
typedef struct voc_ext_block {
|
||||
- u_short tc;
|
||||
- u_char pack;
|
||||
- u_char mode;
|
||||
+ uint16_t tc;
|
||||
+ uint8_t pack;
|
||||
+ uint8_t mode;
|
||||
} VocExtBlock;
|
||||
|
||||
/* Definitions for Microsoft WAVE format */
|
||||
@@ -85,32 +85,32 @@ typedef struct voc_ext_block {
|
||||
it works on all WAVE-file I have
|
||||
*/
|
||||
typedef struct {
|
||||
- u_int magic; /* 'RIFF' */
|
||||
- u_int length; /* filelen */
|
||||
- u_int type; /* 'WAVE' */
|
||||
+ uint32_t magic; /* 'RIFF' */
|
||||
+ uint32_t length; /* filelen */
|
||||
+ uint32_t type; /* 'WAVE' */
|
||||
} WaveHeader;
|
||||
|
||||
typedef struct {
|
||||
- u_short format; /* see WAV_FMT_* */
|
||||
- u_short channels;
|
||||
- u_int sample_fq; /* frequence of sample */
|
||||
- u_int byte_p_sec;
|
||||
- u_short byte_p_spl; /* samplesize; 1 or 2 bytes */
|
||||
- u_short bit_p_spl; /* 8, 12 or 16 bit */
|
||||
+ uint16_t format; /* see WAV_FMT_* */
|
||||
+ uint16_t channels;
|
||||
+ uint32_t sample_fq; /* frequence of sample */
|
||||
+ uint32_t byte_p_sec;
|
||||
+ uint16_t byte_p_spl; /* samplesize; 1 or 2 bytes */
|
||||
+ uint16_t bit_p_spl; /* 8, 12 or 16 bit */
|
||||
} WaveFmtBody;
|
||||
|
||||
typedef struct {
|
||||
WaveFmtBody format;
|
||||
- u_short ext_size;
|
||||
- u_short bit_p_spl;
|
||||
- u_int channel_mask;
|
||||
- u_short guid_format; /* WAV_FMT_* */
|
||||
- u_char guid_tag[14]; /* WAV_GUID_TAG */
|
||||
+ uint16_t ext_size;
|
||||
+ uint16_t bit_p_spl;
|
||||
+ uint32_t channel_mask;
|
||||
+ uint16_t guid_format; /* WAV_FMT_* */
|
||||
+ uint8_t guid_tag[14]; /* WAV_GUID_TAG */
|
||||
} WaveFmtExtensibleBody;
|
||||
|
||||
typedef struct {
|
||||
- u_int type; /* 'data' */
|
||||
- u_int length; /* samplecount */
|
||||
+ uint32_t type; /* 'data' */
|
||||
+ uint32_t length; /* samplecount */
|
||||
} WaveChunkHeader;
|
||||
|
||||
/* Definitions for Sparc .au header */
|
||||
@@ -122,12 +122,12 @@ typedef struct {
|
||||
#define AU_FMT_LIN16 3
|
||||
|
||||
typedef struct au_header {
|
||||
- u_int magic; /* '.snd' */
|
||||
- u_int hdr_size; /* size of header (min 24) */
|
||||
- u_int data_size; /* size of data */
|
||||
- u_int encoding; /* see to AU_FMT_XXXX */
|
||||
- u_int sample_rate; /* sample rate */
|
||||
- u_int channels; /* number of channels (voices) */
|
||||
+ uint32_t magic; /* '.snd' */
|
||||
+ uint32_t hdr_size; /* size of header (min 24) */
|
||||
+ uint32_t data_size; /* size of data */
|
||||
+ uint32_t encoding; /* see to AU_FMT_XXXX */
|
||||
+ uint32_t sample_rate; /* sample rate */
|
||||
+ uint32_t channels; /* number of channels (voices) */
|
||||
} AuHeader;
|
||||
|
||||
#endif /* FORMATS */
|
||||
--
|
||||
2.35.3
|
||||
|
@ -0,0 +1,28 @@
|
||||
From b5591747fd432d6289c9594a481982a77d357ed5 Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Wed, 15 Nov 2023 15:02:31 +0100
|
||||
Subject: [PATCH] alsa-restore.rules: use devnode instead number atribute
|
||||
|
||||
Fixes: https://github.com/alsa-project/alsa-utils/issues/244
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
alsactl/90-alsa-restore.rules.in | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/alsactl/90-alsa-restore.rules.in b/alsactl/90-alsa-restore.rules.in
|
||||
index c0c1b232bb38..1a411c994870 100644
|
||||
--- a/alsactl/90-alsa-restore.rules.in
|
||||
+++ b/alsactl/90-alsa-restore.rules.in
|
||||
@@ -2,7 +2,7 @@ ACTION=="add", SUBSYSTEM=="sound", KERNEL=="controlC*", KERNELS!="card*", TEST==
|
||||
GOTO="alsa_restore_end"
|
||||
|
||||
LABEL="alsa_restore_go"
|
||||
-TEST!="@daemonswitch@", RUN+="@sbindir@/alsactl restore $attr{device/number}"
|
||||
-TEST=="@daemonswitch@", RUN+="@sbindir@/alsactl nrestore $attr{device/number}"
|
||||
+TEST!="@daemonswitch@", RUN+="@sbindir@/alsactl restore $devnode"
|
||||
+TEST=="@daemonswitch@", RUN+="@sbindir@/alsactl nrestore $devnode"
|
||||
|
||||
LABEL="alsa_restore_end"
|
||||
--
|
||||
2.35.3
|
||||
|
43
0018-nhlt-Revert-SSP_ANALOG-device_type-field.patch
Normal file
43
0018-nhlt-Revert-SSP_ANALOG-device_type-field.patch
Normal file
@ -0,0 +1,43 @@
|
||||
From 8f3d84ba19a45411f08bae13ee4dcd8329aa9438 Mon Sep 17 00:00:00 2001
|
||||
From: Andy Ross <andyross@google.com>
|
||||
Date: Thu, 7 Dec 2023 09:17:57 -0800
|
||||
Subject: [PATCH] nhlt: Revert SSP_ANALOG device_type field
|
||||
|
||||
This partially reverts commit 3a47ef2487ed ("topology: nhlt: intel:
|
||||
support more device types and directions"), which changed the default
|
||||
device_type in the endpoint descriptor from zero to SSP_ANALOG.
|
||||
|
||||
This change breaks the Linux kernel NHLT parser (which AFAICT doesn't
|
||||
recognize SSP_ANALOG at all), producing errors like:
|
||||
|
||||
[56458.583812] sof-audio-pci-intel-mtl 0000:00:1f.3: no matching blob for sample rate: 48000 sample width: 32 channels: 2
|
||||
[56458.583833] sof-audio-pci-intel-mtl 0000:00:1f.3: failed to prepare widget dai-copier.SSP.SSP0-Codec.playback
|
||||
[56458.583840] sof-audio-pci-intel-mtl 0000:00:1f.3: Failed to prepare connected widgets
|
||||
[56458.583847] sof-audio-pci-intel-mtl 0000:00:1f.3: error: failed widget list set up for pcm 1 dir 0
|
||||
[56458.583853] sof-audio-pci-intel-mtl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -22
|
||||
|
||||
Revert for compatibility.
|
||||
|
||||
Fixes: https://github.com/alsa-project/alsa-utils/pull/248
|
||||
Signed-off-by: Andy Ross <andyross@google.com>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
topology/nhlt/intel/ssp/ssp-process.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/topology/nhlt/intel/ssp/ssp-process.c b/topology/nhlt/intel/ssp/ssp-process.c
|
||||
index 17b88d2b712b..d8fbba43f4c7 100644
|
||||
--- a/topology/nhlt/intel/ssp/ssp-process.c
|
||||
+++ b/topology/nhlt/intel/ssp/ssp-process.c
|
||||
@@ -783,7 +783,7 @@ int ssp_get_params(struct intel_nhlt_params *nhlt, int dai_index, uint32_t *virt
|
||||
if (ssp->ssp_prm[dai_index].quirks & SSP_INTEL_QUIRK_BT_SIDEBAND)
|
||||
*device_type = NHLT_DEVICE_TYPE_SSP_BT_SIDEBAND;
|
||||
else
|
||||
- *device_type = NHLT_DEVICE_TYPE_SSP_ANALOG;
|
||||
+ *device_type = 0;
|
||||
if (ssp->ssp_prm[dai_index].quirks & SSP_INTEL_QUIRK_RENDER_FEEDBACK) {
|
||||
if (*direction == NHLT_ENDPOINT_DIRECTION_RENDER)
|
||||
*direction = NHLT_ENDPOINT_DIRECTION_RENDER_WITH_LOOPBACK;
|
||||
--
|
||||
2.35.3
|
||||
|
31
0019-alsactl-fix-potential-buffer-overwrite.patch
Normal file
31
0019-alsactl-fix-potential-buffer-overwrite.patch
Normal file
@ -0,0 +1,31 @@
|
||||
From 004d085c675c56f866f008dbf712ee7503de5b27 Mon Sep 17 00:00:00 2001
|
||||
From: Mingjie Shen <shen497@purdue.edu>
|
||||
Date: Wed, 6 Dec 2023 16:49:26 -0500
|
||||
Subject: [PATCH] alsactl: fix potential buffer overwrite
|
||||
|
||||
The 'call to sprintf' operation on line 413 requires 21 bytes
|
||||
but the destination is only 16 bytes.
|
||||
|
||||
Fixes: https://github.com/alsa-project/alsa-utils/pull/247
|
||||
Signed-off-by: Mingjie Shen <shen497@purdue.edu>
|
||||
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 a854c0bdc16f..8ad991a0f36b 100644
|
||||
--- a/alsactl/alsactl.c
|
||||
+++ b/alsactl/alsactl.c
|
||||
@@ -242,7 +242,7 @@ int main(int argc, char *argv[])
|
||||
char *cfgfile = SYS_ASOUNDRC;
|
||||
char *initfile = DATADIR "/init/00main";
|
||||
char *pidfile = SYS_PIDFILE;
|
||||
- char *cardname, ncardname[16];
|
||||
+ char *cardname, ncardname[21];
|
||||
char *cmd;
|
||||
char *const *extra_args;
|
||||
const char *const *tmp;
|
||||
--
|
||||
2.35.3
|
||||
|
@ -0,0 +1,70 @@
|
||||
From 4ce6a0a4af518700c3e44257af5f44ff24d58fc9 Mon Sep 17 00:00:00 2001
|
||||
From: Mingjie Shen <shen497@purdue.edu>
|
||||
Date: Wed, 6 Dec 2023 16:09:58 -0500
|
||||
Subject: [PATCH] aplay: fix buffer overflow and tainted format string
|
||||
|
||||
Prior this commit, memcpy from names[0] to format[] will overwrite if
|
||||
strlen(names[0]) is greater than 1024. Also, the length of malloc()ed
|
||||
names[channel] is insufficient, leading to another buffer overwriting
|
||||
when calling sprintf(). Moreover, the format string of sprintf()
|
||||
can be controlled by user input. An attacker can exploit this weakness
|
||||
to crash the program, disclose information or even execute arbitrary
|
||||
code.
|
||||
|
||||
Fix by allocating enough space for arrays and using constant expressions
|
||||
as the format strings.
|
||||
|
||||
Fixes: https://github.com/alsa-project/alsa-utils/pull/246/
|
||||
Signed-off-by: Mingjie Shen <shen497@purdue.edu>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
aplay/aplay.c | 20 ++++++++++----------
|
||||
1 file changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
||||
index 9cf36dee2d9d..f1c27b6c4929 100644
|
||||
--- a/aplay/aplay.c
|
||||
+++ b/aplay/aplay.c
|
||||
@@ -3436,14 +3436,14 @@ static void playbackv(char **names, unsigned int count)
|
||||
|
||||
if (count == 1 && channels > 1) {
|
||||
size_t len = strlen(names[0]);
|
||||
- char format[1024];
|
||||
- memcpy(format, names[0], len);
|
||||
- strcpy(format + len, ".%d");
|
||||
- len += 4;
|
||||
+ char buf[len + 1];
|
||||
+ strcpy(buf, names[0]);
|
||||
+ /* 1 for "." + 3 for channel (<= 256) + 1 for null terminator */
|
||||
+ len += 5;
|
||||
names = malloc(sizeof(*names) * channels);
|
||||
for (channel = 0; channel < channels; ++channel) {
|
||||
names[channel] = malloc(len);
|
||||
- sprintf(names[channel], format, channel);
|
||||
+ snprintf(names[channel], len, "%s.%d", buf, channel);
|
||||
}
|
||||
alloced = 1;
|
||||
} else if (count != channels) {
|
||||
@@ -3489,14 +3489,14 @@ static void capturev(char **names, unsigned int count)
|
||||
|
||||
if (count == 1) {
|
||||
size_t len = strlen(names[0]);
|
||||
- char format[1024];
|
||||
- memcpy(format, names[0], len);
|
||||
- strcpy(format + len, ".%d");
|
||||
- len += 4;
|
||||
+ char buf[len + 1];
|
||||
+ strcpy(buf, names[0]);
|
||||
+ /* 1 for "." + 3 for channel (<= 256) + 1 for null terminator */
|
||||
+ len += 5;
|
||||
names = malloc(sizeof(*names) * channels);
|
||||
for (channel = 0; channel < channels; ++channel) {
|
||||
names[channel] = malloc(len);
|
||||
- sprintf(names[channel], format, channel);
|
||||
+ snprintf(names[channel], len, "%s.%d", buf, channel);
|
||||
}
|
||||
alloced = 1;
|
||||
} else if (count != channels) {
|
||||
--
|
||||
2.35.3
|
||||
|
102
0021-misc-fix-incorrect-usages-of-strerror.patch
Normal file
102
0021-misc-fix-incorrect-usages-of-strerror.patch
Normal file
@ -0,0 +1,102 @@
|
||||
From edff9652c050935ad7a0131b5585b4dad5e42296 Mon Sep 17 00:00:00 2001
|
||||
From: Tianyi Liu <i.pear@outlook.com>
|
||||
Date: Tue, 21 Nov 2023 23:19:35 +0800
|
||||
Subject: [PATCH] misc: fix incorrect usages of `strerror`
|
||||
|
||||
`strerror` takes the `errno` directly as its argument,
|
||||
negating it will result in an "Unknown error".
|
||||
|
||||
This fixes such usages across multiple modules.
|
||||
|
||||
Fixes: https://github.com/alsa-project/alsa-utils/pull/245
|
||||
Signed-off-by: Tianyi Liu <i.pear@outlook.com>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
alsaucm/usecase.c | 2 +-
|
||||
nhlt/nhlt-dmic-info.c | 2 +-
|
||||
topology/topology.c | 12 ++++++------
|
||||
3 files changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/alsaucm/usecase.c b/alsaucm/usecase.c
|
||||
index a5c815591dca..0aea84c6cd1e 100644
|
||||
--- a/alsaucm/usecase.c
|
||||
+++ b/alsaucm/usecase.c
|
||||
@@ -510,7 +510,7 @@ int main(int argc, char *argv[])
|
||||
in = fopen(context->batch, "r");
|
||||
if (in == NULL) {
|
||||
fprintf(stderr, "%s: error failed to open file '%s': %s\n",
|
||||
- command, context->batch, strerror(-errno));
|
||||
+ command, context->batch, strerror(errno));
|
||||
my_exit(context, EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
diff --git a/nhlt/nhlt-dmic-info.c b/nhlt/nhlt-dmic-info.c
|
||||
index f1b085742510..f08dc85d02eb 100644
|
||||
--- a/nhlt/nhlt-dmic-info.c
|
||||
+++ b/nhlt/nhlt-dmic-info.c
|
||||
@@ -404,7 +404,7 @@ int main(int argc, char *argv[])
|
||||
output = fopen(output_file, "w+");
|
||||
if (output == NULL) {
|
||||
fprintf(stderr, "Unable to create output file \"%s\": %s\n",
|
||||
- output_file, strerror(-errno));
|
||||
+ output_file, strerror(errno));
|
||||
res = EXIT_FAILURE;
|
||||
goto out;
|
||||
}
|
||||
diff --git a/topology/topology.c b/topology/topology.c
|
||||
index 98b000aa5031..9752f8889367 100644
|
||||
--- a/topology/topology.c
|
||||
+++ b/topology/topology.c
|
||||
@@ -96,7 +96,7 @@ static int load(const char *source_file, void **dst, size_t *dst_size)
|
||||
fd = open(source_file, O_RDONLY);
|
||||
if (fd < 0) {
|
||||
fprintf(stderr, _("Unable to open input file '%s': %s\n"),
|
||||
- source_file, strerror(-errno));
|
||||
+ source_file, strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -120,7 +120,7 @@ static int load(const char *source_file, void **dst, size_t *dst_size)
|
||||
buf = buf2;
|
||||
}
|
||||
if (r < 0) {
|
||||
- fprintf(stderr, _("Read error: %s\n"), strerror(-errno));
|
||||
+ fprintf(stderr, _("Read error: %s\n"), strerror(errno));
|
||||
goto _err;
|
||||
}
|
||||
|
||||
@@ -177,7 +177,7 @@ static int save(const char *output_file, void *buf, size_t size)
|
||||
fd = open(fname, O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
|
||||
if (fd < 0) {
|
||||
fprintf(stderr, _("Unable to open output file '%s': %s\n"),
|
||||
- fname, strerror(-errno));
|
||||
+ fname, strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -194,11 +194,11 @@ static int save(const char *output_file, void *buf, size_t size)
|
||||
}
|
||||
|
||||
if (r < 0) {
|
||||
- fprintf(stderr, _("Write error: %s\n"), strerror(-errno));
|
||||
+ fprintf(stderr, _("Write error: %s\n"), strerror(errno));
|
||||
if (fd != fileno(stdout)) {
|
||||
if (fname && remove(fname))
|
||||
fprintf(stderr, _("Unable to remove file %s: %s\n"),
|
||||
- fname, strerror(-errno));
|
||||
+ fname, strerror(errno));
|
||||
close(fd);
|
||||
}
|
||||
return 1;
|
||||
@@ -209,7 +209,7 @@ static int save(const char *output_file, void *buf, size_t size)
|
||||
|
||||
if (fname && rename(fname, output_file)) {
|
||||
fprintf(stderr, _("Unable to rename file '%s' to '%s': %s\n"),
|
||||
- fname, output_file, strerror(-errno));
|
||||
+ fname, output_file, strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
|
||||
--
|
||||
2.35.3
|
||||
|
97
0022-aplay-Add-option-for-specifying-subformat.patch
Normal file
97
0022-aplay-Add-option-for-specifying-subformat.patch
Normal file
@ -0,0 +1,97 @@
|
||||
From d55cd9fcd9e96e96b27bea778c70dd4459e6d2a3 Mon Sep 17 00:00:00 2001
|
||||
From: Cezary Rojewski <cezary.rojewski@intel.com>
|
||||
Date: Fri, 4 Aug 2023 10:26:50 +0200
|
||||
Subject: [PATCH] aplay: Add option for specifying subformat
|
||||
|
||||
Make subformat first-class citizen by allowing users to specify it just
|
||||
like it is the case for the format. Default to SND_PCM_SUBFORMAT_STD so
|
||||
they are no surprises.
|
||||
|
||||
Closes: https://github.com/alsa-project/alsa-utils/pull/228
|
||||
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
aplay/aplay.c | 18 ++++++++++++++++++
|
||||
1 file changed, 18 insertions(+)
|
||||
|
||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
||||
index f1c27b6c4929..03443df52d33 100644
|
||||
--- a/aplay/aplay.c
|
||||
+++ b/aplay/aplay.c
|
||||
@@ -101,6 +101,7 @@ static char *command;
|
||||
static snd_pcm_t *handle;
|
||||
static struct {
|
||||
snd_pcm_format_t format;
|
||||
+ snd_pcm_subformat_t subformat;
|
||||
unsigned int channels;
|
||||
unsigned int rate;
|
||||
} hwparams, rhwparams;
|
||||
@@ -216,6 +217,7 @@ _("Usage: %s [OPTION]... [FILE]...\n"
|
||||
"-t, --file-type TYPE file type (voc, wav, raw or au)\n"
|
||||
"-c, --channels=# channels\n"
|
||||
"-f, --format=FORMAT sample format (case insensitive)\n"
|
||||
+" --subformat=SUBFORMAT sample subformat (case insensitive)\n"
|
||||
"-r, --rate=# sample rate\n"
|
||||
"-d, --duration=# interrupt after # seconds\n"
|
||||
"-s, --samples=# interrupt after # samples per channel\n"
|
||||
@@ -434,6 +436,7 @@ enum {
|
||||
OPT_USE_STRFTIME,
|
||||
OPT_DUMP_HWPARAMS,
|
||||
OPT_FATAL_ERRORS,
|
||||
+ OPT_SUBFORMAT,
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -491,6 +494,7 @@ int main(int argc, char *argv[])
|
||||
{"file-type", 1, 0, 't'},
|
||||
{"channels", 1, 0, 'c'},
|
||||
{"format", 1, 0, 'f'},
|
||||
+ {"subformat", 1, 0, OPT_SUBFORMAT},
|
||||
{"rate", 1, 0, 'r'},
|
||||
{"duration", 1, 0 ,'d'},
|
||||
{"samples", 1, 0, 's'},
|
||||
@@ -566,6 +570,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
chunk_size = -1;
|
||||
rhwparams.format = DEFAULT_FORMAT;
|
||||
+ rhwparams.subformat = SND_PCM_SUBFORMAT_STD;
|
||||
rhwparams.rate = DEFAULT_SPEED;
|
||||
rhwparams.channels = 1;
|
||||
|
||||
@@ -635,6 +640,13 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
break;
|
||||
+ case OPT_SUBFORMAT:
|
||||
+ rhwparams.subformat = snd_pcm_subformat_value(optarg);
|
||||
+ if (rhwparams.subformat == SND_PCM_SUBFORMAT_UNKNOWN) {
|
||||
+ error(_("wrong extended subformat '%s'"), optarg);
|
||||
+ prg_exit(EXIT_FAILURE);
|
||||
+ }
|
||||
+ break;
|
||||
case 'r':
|
||||
tmp = parse_long(optarg, &err);
|
||||
if (err < 0) {
|
||||
@@ -1372,6 +1384,11 @@ static void set_params(void)
|
||||
show_available_sample_formats(params);
|
||||
prg_exit(EXIT_FAILURE);
|
||||
}
|
||||
+ err = snd_pcm_hw_params_set_subformat(handle, params, hwparams.subformat);
|
||||
+ if (err < 0) {
|
||||
+ error(_("Sample subformat not available"));
|
||||
+ prg_exit(EXIT_FAILURE);
|
||||
+ }
|
||||
err = snd_pcm_hw_params_set_channels(handle, params, hwparams.channels);
|
||||
if (err < 0) {
|
||||
error(_("Channels count non available"));
|
||||
@@ -2404,6 +2421,7 @@ static void voc_play(int fd, int ofs, char *name)
|
||||
}
|
||||
}
|
||||
hwparams.format = DEFAULT_FORMAT;
|
||||
+ hwparams.subformat = SND_PCM_SUBFORMAT_STD;
|
||||
hwparams.channels = 1;
|
||||
hwparams.rate = DEFAULT_SPEED;
|
||||
set_params();
|
||||
--
|
||||
2.35.3
|
||||
|
@ -0,0 +1,30 @@
|
||||
From 8e6351f19d803e969c5d2fc874033f3cf68b89c4 Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Tue, 12 Dec 2023 13:47:03 +0100
|
||||
Subject: [PATCH] aplay: allow to compile with older alsa-lib (subformat)
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
aplay/aplay.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
||||
index 03443df52d33..fc4bac697226 100644
|
||||
--- a/aplay/aplay.c
|
||||
+++ b/aplay/aplay.c
|
||||
@@ -641,8 +641,12 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
break;
|
||||
case OPT_SUBFORMAT:
|
||||
+#if SND_LIB_VER(1, 2, 10) < SND_LIB_VERSION
|
||||
rhwparams.subformat = snd_pcm_subformat_value(optarg);
|
||||
if (rhwparams.subformat == SND_PCM_SUBFORMAT_UNKNOWN) {
|
||||
+#else
|
||||
+ if (strcasecmp(optarg, "std") != 0 && strcasecmp(optarg, "standard") != 0) {
|
||||
+#endif
|
||||
error(_("wrong extended subformat '%s'"), optarg);
|
||||
prg_exit(EXIT_FAILURE);
|
||||
}
|
||||
--
|
||||
2.35.3
|
||||
|
@ -0,0 +1,50 @@
|
||||
From 6e9be2a3f356d79da3b71c9244d4c809baf38e52 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Date: Fri, 27 Oct 2023 15:05:06 -0500
|
||||
Subject: [PATCH] aplay: log pcm status before reporting a fatal error
|
||||
|
||||
When the --fatal-errors happen, nothing is provided to the user even
|
||||
when the '-v' verbose option is specified. This patch adds the fatal
|
||||
error exit after dumping the logs. No functionality change, just
|
||||
better information on what just happened.
|
||||
|
||||
Closes: https://github.com/alsa-project/alsa-utils/pull/242
|
||||
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
aplay/aplay.c | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
||||
index fc4bac697226..ed58a1ec8c7f 100644
|
||||
--- a/aplay/aplay.c
|
||||
+++ b/aplay/aplay.c
|
||||
@@ -1677,12 +1677,6 @@ static void xrun(void)
|
||||
prg_exit(EXIT_FAILURE);
|
||||
}
|
||||
if (snd_pcm_status_get_state(status) == SND_PCM_STATE_XRUN) {
|
||||
- if (fatal_errors) {
|
||||
- error(_("fatal %s: %s"),
|
||||
- stream == SND_PCM_STREAM_PLAYBACK ? _("underrun") : _("overrun"),
|
||||
- snd_strerror(res));
|
||||
- prg_exit(EXIT_FAILURE);
|
||||
- }
|
||||
if (monotonic) {
|
||||
#ifdef HAVE_CLOCK_GETTIME
|
||||
struct timespec now, diff, tstamp;
|
||||
@@ -1708,6 +1702,12 @@ static void xrun(void)
|
||||
fprintf(stderr, _("Status:\n"));
|
||||
snd_pcm_status_dump(status, log);
|
||||
}
|
||||
+ if (fatal_errors) {
|
||||
+ error(_("fatal %s: %s"),
|
||||
+ stream == SND_PCM_STREAM_PLAYBACK ? _("underrun") : _("overrun"),
|
||||
+ snd_strerror(res));
|
||||
+ prg_exit(EXIT_FAILURE);
|
||||
+ }
|
||||
if ((res = snd_pcm_prepare(handle))<0) {
|
||||
error(_("xrun: prepare error: %s"), snd_strerror(res));
|
||||
prg_exit(EXIT_FAILURE);
|
||||
--
|
||||
2.35.3
|
||||
|
65
0025-aplay-enable-timestamps-by-default.patch
Normal file
65
0025-aplay-enable-timestamps-by-default.patch
Normal file
@ -0,0 +1,65 @@
|
||||
From 35f45c50eeb779724f882c4e98a279934e1e3140 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Date: Fri, 27 Oct 2023 15:09:56 -0500
|
||||
Subject: [PATCH] aplay: enable timestamps by default
|
||||
|
||||
When the '-v' or '--test-position' options are used, the 'tstamp' is
|
||||
shown as zero. Unconditionally enable the timestamps and choose the
|
||||
timestamp time based on the 'monotonic' variable.
|
||||
|
||||
Example log:
|
||||
|
||||
Status(R/W) (standalone avail=36 delay=924):
|
||||
state : RUNNING
|
||||
trigger_time: 2045.504937
|
||||
tstamp : 2190.754602
|
||||
delay : 924
|
||||
avail : 36
|
||||
avail_max : 444
|
||||
Status(R/W) (standalone avail=44 delay=912):
|
||||
state : RUNNING
|
||||
trigger_time: 2045.504937
|
||||
tstamp : 2190.754852
|
||||
delay : 912
|
||||
avail : 48
|
||||
avail_max : 48
|
||||
underrun!!! (at least 471.161 ms long)
|
||||
Status:
|
||||
state : XRUN
|
||||
trigger_time: 2190.786234
|
||||
tstamp : 2191.257392
|
||||
delay : 0
|
||||
avail : 1412
|
||||
avail_max : 1412
|
||||
aplay: xrun:1690: fatal underrun: Success
|
||||
|
||||
Closes: https://github.com/alsa-project/alsa-utils/pull/242
|
||||
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
aplay/aplay.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
||||
index ed58a1ec8c7f..2a75de72523d 100644
|
||||
--- a/aplay/aplay.c
|
||||
+++ b/aplay/aplay.c
|
||||
@@ -1494,6 +1494,15 @@ static void set_params(void)
|
||||
err = snd_pcm_sw_params_set_stop_threshold(handle, swparams, stop_threshold);
|
||||
assert(err >= 0);
|
||||
|
||||
+ err = snd_pcm_sw_params_set_tstamp_mode(handle, swparams, SND_PCM_TSTAMP_ENABLE);
|
||||
+ assert(err >= 0);
|
||||
+
|
||||
+ if (monotonic)
|
||||
+ err = snd_pcm_sw_params_set_tstamp_type(handle, swparams, SND_PCM_TSTAMP_TYPE_MONOTONIC);
|
||||
+ else
|
||||
+ err = snd_pcm_sw_params_set_tstamp_type(handle, swparams, SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY);
|
||||
+ assert(err >= 0);
|
||||
+
|
||||
if (snd_pcm_sw_params(handle, swparams) < 0) {
|
||||
error(_("unable to install sw params:"));
|
||||
snd_pcm_sw_params_dump(swparams, log);
|
||||
--
|
||||
2.35.3
|
||||
|
@ -0,0 +1,43 @@
|
||||
From 827905c002dad40a7821a55b570aeaf55b4f1614 Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Tue, 12 Dec 2023 15:07:06 +0100
|
||||
Subject: [PATCH] aplay: status dumps are called only in verbose mode
|
||||
|
||||
Do not enable timestamps for the normal operation.
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
aplay/aplay.c | 16 +++++++++-------
|
||||
1 file changed, 9 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
||||
index 2a75de72523d..6c5a07eff7d4 100644
|
||||
--- a/aplay/aplay.c
|
||||
+++ b/aplay/aplay.c
|
||||
@@ -1494,14 +1494,16 @@ static void set_params(void)
|
||||
err = snd_pcm_sw_params_set_stop_threshold(handle, swparams, stop_threshold);
|
||||
assert(err >= 0);
|
||||
|
||||
- err = snd_pcm_sw_params_set_tstamp_mode(handle, swparams, SND_PCM_TSTAMP_ENABLE);
|
||||
- assert(err >= 0);
|
||||
+ if (verbose) {
|
||||
+ err = snd_pcm_sw_params_set_tstamp_mode(handle, swparams, SND_PCM_TSTAMP_ENABLE);
|
||||
+ assert(err >= 0);
|
||||
|
||||
- if (monotonic)
|
||||
- err = snd_pcm_sw_params_set_tstamp_type(handle, swparams, SND_PCM_TSTAMP_TYPE_MONOTONIC);
|
||||
- else
|
||||
- err = snd_pcm_sw_params_set_tstamp_type(handle, swparams, SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY);
|
||||
- assert(err >= 0);
|
||||
+ if (monotonic)
|
||||
+ err = snd_pcm_sw_params_set_tstamp_type(handle, swparams, SND_PCM_TSTAMP_TYPE_MONOTONIC);
|
||||
+ else
|
||||
+ err = snd_pcm_sw_params_set_tstamp_type(handle, swparams, SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY);
|
||||
+ assert(err >= 0);
|
||||
+ }
|
||||
|
||||
if (snd_pcm_sw_params(handle, swparams) < 0) {
|
||||
error(_("unable to install sw params:"));
|
||||
--
|
||||
2.35.3
|
||||
|
35
0027-aplaymidi-Set-event-completely-for-tempo-event.patch
Normal file
35
0027-aplaymidi-Set-event-completely-for-tempo-event.patch
Normal file
@ -0,0 +1,35 @@
|
||||
From 4cb3e3a7b5b2347e87747a5544c1f4db62a7be53 Mon Sep 17 00:00:00 2001
|
||||
From: "John K. Luebs" <john@luebs.org>
|
||||
Date: Sun, 7 Jan 2024 13:33:33 -0600
|
||||
Subject: [PATCH] aplaymidi: Set event completely for tempo event
|
||||
|
||||
After UMP support was added in b399fb8 ev.type setting was inadvertently
|
||||
dropped in the code path handling tempo meta event.
|
||||
This is causing tempo meta events to not be handled at all.
|
||||
Moreover, snd_seq_ev_set_fixed is also missing so MIDI files with
|
||||
variable events such as SYSEX before the tempo meta event usually are
|
||||
causing a segfault.
|
||||
|
||||
Fixes: b399fb85a919 ("aplaymidi: Add UMP support")
|
||||
Closes: https://github.com/alsa-project/alsa-utils/issues/241
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
seq/aplaymidi/aplaymidi.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/seq/aplaymidi/aplaymidi.c b/seq/aplaymidi/aplaymidi.c
|
||||
index a7293d31fb31..66038e278d4a 100644
|
||||
--- a/seq/aplaymidi/aplaymidi.c
|
||||
+++ b/seq/aplaymidi/aplaymidi.c
|
||||
@@ -819,6 +819,8 @@ static void play_midi(void)
|
||||
ev.time.tick = event->tick;
|
||||
ev.dest = ports[event->port];
|
||||
if (event->type == SND_SEQ_EVENT_TEMPO) {
|
||||
+ snd_seq_ev_set_fixed(&ev);
|
||||
+ ev.type = event->type;
|
||||
ev.dest.client = SND_SEQ_CLIENT_SYSTEM;
|
||||
ev.dest.port = SND_SEQ_PORT_SYSTEM_TIMER;
|
||||
ev.data.queue.queue = queue;
|
||||
--
|
||||
2.35.3
|
||||
|
@ -1,3 +1,29 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Jan 8 09:12:41 UTC 2024 - Takashi Iwai <tiwai@suse.com>
|
||||
|
||||
- Backport upstream fixes:
|
||||
buffer overflow fixes in aplay, segfault in aplaymidi, etc:
|
||||
0008-topology-include-locale.h.patch
|
||||
0009-nhlt-dmic-info.c-include-sys-types.h.patch
|
||||
0010-topology-pre-processor-Add-support-for-enum-controls.patch
|
||||
0011-configure.ac-fix-UMP-support-detection.patch
|
||||
0012-bat-really-skip-analysis-of-the-first-period-and-upd.patch
|
||||
0013-topology-add-include-for-ENABLE_NLS-on-musl.patch
|
||||
0014-nhlt-use-stdint.h-types.patch
|
||||
0015-Revert-nhlt-dmic-info.c-include-sys-types.h.patch
|
||||
0016-aplay-use-stdint.h-types-instead-u_int-u_short-u_cha.patch
|
||||
0017-alsa-restore.rules-use-devnode-instead-number-atribu.patch
|
||||
0018-nhlt-Revert-SSP_ANALOG-device_type-field.patch
|
||||
0019-alsactl-fix-potential-buffer-overwrite.patch
|
||||
0020-aplay-fix-buffer-overflow-and-tainted-format-string.patch
|
||||
0021-misc-fix-incorrect-usages-of-strerror.patch
|
||||
0022-aplay-Add-option-for-specifying-subformat.patch
|
||||
0023-aplay-allow-to-compile-with-older-alsa-lib-subformat.patch
|
||||
0024-aplay-log-pcm-status-before-reporting-a-fatal-error.patch
|
||||
0025-aplay-enable-timestamps-by-default.patch
|
||||
0026-aplay-status-dumps-are-called-only-in-verbose-mode.patch
|
||||
0027-aplaymidi-Set-event-completely-for-tempo-event.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 4 12:38:04 UTC 2023 - Takashi Iwai <tiwai@suse.com>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package alsa-utils
|
||||
#
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -16,7 +16,7 @@
|
||||
#
|
||||
|
||||
|
||||
%define do_autoreconf 0
|
||||
%define do_autoreconf 1
|
||||
%define _udevdir %(pkg-config --variable=udevdir udev)
|
||||
%ifarch %ix86 x86_64 %arm aarch64 ppc64le riscv64
|
||||
%define enable_topology 1
|
||||
@ -46,6 +46,26 @@ Patch4: 0004-bat-use-ATTRIBUTE_UNUSED-instead-remove-argument-nam.patch
|
||||
Patch5: 0005-seq-use-ATTRIBUTE_UNUSED-instead-remove-argument-nam.patch
|
||||
Patch6: 0006-alsaucm-use-ATTRIBUTE_UNUSED-instead-remove-argument.patch
|
||||
Patch7: 0007-topology-use-ATTRIBUTE_UNUSED-instead-remove-argumen.patch
|
||||
Patch8: 0008-topology-include-locale.h.patch
|
||||
Patch9: 0009-nhlt-dmic-info.c-include-sys-types.h.patch
|
||||
Patch10: 0010-topology-pre-processor-Add-support-for-enum-controls.patch
|
||||
Patch11: 0011-configure.ac-fix-UMP-support-detection.patch
|
||||
Patch12: 0012-bat-really-skip-analysis-of-the-first-period-and-upd.patch
|
||||
Patch13: 0013-topology-add-include-for-ENABLE_NLS-on-musl.patch
|
||||
Patch14: 0014-nhlt-use-stdint.h-types.patch
|
||||
Patch15: 0015-Revert-nhlt-dmic-info.c-include-sys-types.h.patch
|
||||
Patch16: 0016-aplay-use-stdint.h-types-instead-u_int-u_short-u_cha.patch
|
||||
Patch17: 0017-alsa-restore.rules-use-devnode-instead-number-atribu.patch
|
||||
Patch18: 0018-nhlt-Revert-SSP_ANALOG-device_type-field.patch
|
||||
Patch19: 0019-alsactl-fix-potential-buffer-overwrite.patch
|
||||
Patch20: 0020-aplay-fix-buffer-overflow-and-tainted-format-string.patch
|
||||
Patch21: 0021-misc-fix-incorrect-usages-of-strerror.patch
|
||||
Patch22: 0022-aplay-Add-option-for-specifying-subformat.patch
|
||||
Patch23: 0023-aplay-allow-to-compile-with-older-alsa-lib-subformat.patch
|
||||
Patch24: 0024-aplay-log-pcm-status-before-reporting-a-fatal-error.patch
|
||||
Patch25: 0025-aplay-enable-timestamps-by-default.patch
|
||||
Patch26: 0026-aplay-status-dumps-are-called-only-in-verbose-mode.patch
|
||||
Patch27: 0027-aplaymidi-Set-event-completely-for-tempo-event.patch
|
||||
Patch100: alsa-info-no-update-for-distro-script.patch
|
||||
Patch101: alsa-utils-configure-version-revert.patch
|
||||
BuildRequires: alsa-devel
|
||||
@ -97,6 +117,26 @@ and test audio before and after PM state changes.
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -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
|
||||
%patch26 -p1
|
||||
%patch27 -p1
|
||||
%patch100 -p1
|
||||
%if 0%{?do_autoreconf}
|
||||
%patch101 -p1
|
||||
|
Loading…
Reference in New Issue
Block a user