[PATCH alsa-utils] aplay/aplay.c: make UCM support optional

Thomas Petazzoni thomas.petazzoni at bootlin.com
Sun Jul 17 19:23:18 CEST 2022


Commit 90f59671784a7e47b40485095cd66892d4840ed7 ("topology:
pre-processor: Move the call to expand variables") modified aplay by
unconditionally invoking features of the use case manager (UCM) from
alsa-lib. However, alsa-lib can be compiled with UCM support.

In order to properly support this situation, this commit changes aplay
to only conditionally compile the UCM related code.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
---
 aplay/aplay.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/aplay/aplay.c b/aplay/aplay.c
index b3b3635..59f937d 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -41,7 +41,9 @@
 #include <time.h>
 #include <locale.h>
 #include <alsa/asoundlib.h>
+#ifdef HAVE_ALSA_USE_CASE_H
 #include <alsa/use-case.h>
+#endif
 #include <assert.h>
 #include <termios.h>
 #include <signal.h>
@@ -453,6 +455,7 @@ static ssize_t xwrite(int fd, const void *buf, size_t count)
 	return offset;
 }
 
+#ifdef HAVE_ALSA_USE_CASE_H
 static int open_ucm(snd_use_case_mgr_t **uc_mgr, char **pcm_name, const char *name)
 {
 	char *s, *p;
@@ -476,6 +479,7 @@ static int open_ucm(snd_use_case_mgr_t **uc_mgr, char **pcm_name, const char *na
 	}
 	return err;
 }
+#endif
 
 static long parse_long(const char *str, int *err)
 {
@@ -553,7 +557,9 @@ int main(int argc, char *argv[])
 	int do_device_list = 0, do_pcm_list = 0, force_sample_format = 0;
 	snd_pcm_info_t *info;
 	FILE *direction;
+#ifdef HAVE_ALSA_USE_CASE_H
 	snd_use_case_mgr_t *uc_mgr = NULL;
+#endif
 
 #ifdef ENABLE_NLS
 	setlocale(LC_ALL, "");
@@ -852,6 +858,7 @@ int main(int argc, char *argv[])
 		goto __end;
 	}
 
+#ifdef HAVE_ALSA_USE_CASE_H
 	if (strncmp(pcm_name, "ucm.", 4) == 0) {
 		err = open_ucm(&uc_mgr, &pcm_name, pcm_name + 4);
 		if (err < 0) {
@@ -861,6 +868,7 @@ int main(int argc, char *argv[])
 		if (verbose)
 			fprintf(stderr, _("Found UCM PCM device: %s\n"), pcm_name);
 	}
+#endif
 
 	err = snd_pcm_open(&handle, pcm_name, stream, open_mode);
 	if (err < 0) {
@@ -951,8 +959,10 @@ int main(int argc, char *argv[])
 	if (verbose==2)
 		putchar('\n');
 	snd_pcm_close(handle);
+#ifdef HAVE_ALSA_USE_CASE_H
 	if (uc_mgr)
 		snd_use_case_mgr_close(uc_mgr);
+#endif
 	handle = NULL;
 	free(audiobuf);
       __end:
-- 
2.36.1



More information about the Alsa-devel mailing list