1*4882a593SmuzhiyunFrom 1921efacfe1a230021849b83b2877c8f239b44ab Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
3*4882a593SmuzhiyunDate: Sun, 17 Jul 2022 19:09:04 +0200
4*4882a593SmuzhiyunSubject: [PATCH] aplay/aplay.c: make UCM support optional
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunCommit 90f59671784a7e47b40485095cd66892d4840ed7 ("topology:
7*4882a593Smuzhiyunpre-processor: Move the call to expand variables") modified aplay by
8*4882a593Smuzhiyununconditionally invoking features of the use case manager (UCM) from
9*4882a593Smuzhiyunalsa-lib. However, alsa-lib can be compiled without UCM support.
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunIn order to properly support this situation, this commit changes aplay
12*4882a593Smuzhiyunto only conditionally compile the UCM related code.
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
15*4882a593SmuzhiyunUpstream: https://mailman.alsa-project.org/pipermail/alsa-devel/2022-July/203847.html
16*4882a593Smuzhiyun---
17*4882a593Smuzhiyun aplay/aplay.c | 10 ++++++++++
18*4882a593Smuzhiyun 1 file changed, 10 insertions(+)
19*4882a593Smuzhiyun
20*4882a593Smuzhiyundiff --git a/aplay/aplay.c b/aplay/aplay.c
21*4882a593Smuzhiyunindex b3b3635..59f937d 100644
22*4882a593Smuzhiyun--- a/aplay/aplay.c
23*4882a593Smuzhiyun+++ b/aplay/aplay.c
24*4882a593Smuzhiyun@@ -41,7 +41,9 @@
25*4882a593Smuzhiyun #include <time.h>
26*4882a593Smuzhiyun #include <locale.h>
27*4882a593Smuzhiyun #include <alsa/asoundlib.h>
28*4882a593Smuzhiyun+#ifdef HAVE_ALSA_USE_CASE_H
29*4882a593Smuzhiyun #include <alsa/use-case.h>
30*4882a593Smuzhiyun+#endif
31*4882a593Smuzhiyun #include <assert.h>
32*4882a593Smuzhiyun #include <termios.h>
33*4882a593Smuzhiyun #include <signal.h>
34*4882a593Smuzhiyun@@ -453,6 +455,7 @@ static ssize_t xwrite(int fd, const void *buf, size_t count)
35*4882a593Smuzhiyun 	return offset;
36*4882a593Smuzhiyun }
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun+#ifdef HAVE_ALSA_USE_CASE_H
39*4882a593Smuzhiyun static int open_ucm(snd_use_case_mgr_t **uc_mgr, char **pcm_name, const char *name)
40*4882a593Smuzhiyun {
41*4882a593Smuzhiyun 	char *s, *p;
42*4882a593Smuzhiyun@@ -476,6 +479,7 @@ static int open_ucm(snd_use_case_mgr_t **uc_mgr, char **pcm_name, const char *na
43*4882a593Smuzhiyun 	}
44*4882a593Smuzhiyun 	return err;
45*4882a593Smuzhiyun }
46*4882a593Smuzhiyun+#endif
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun static long parse_long(const char *str, int *err)
49*4882a593Smuzhiyun {
50*4882a593Smuzhiyun@@ -553,7 +557,9 @@ int main(int argc, char *argv[])
51*4882a593Smuzhiyun 	int do_device_list = 0, do_pcm_list = 0, force_sample_format = 0;
52*4882a593Smuzhiyun 	snd_pcm_info_t *info;
53*4882a593Smuzhiyun 	FILE *direction;
54*4882a593Smuzhiyun+#ifdef HAVE_ALSA_USE_CASE_H
55*4882a593Smuzhiyun 	snd_use_case_mgr_t *uc_mgr = NULL;
56*4882a593Smuzhiyun+#endif
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun #ifdef ENABLE_NLS
59*4882a593Smuzhiyun 	setlocale(LC_ALL, "");
60*4882a593Smuzhiyun@@ -852,6 +858,7 @@ int main(int argc, char *argv[])
61*4882a593Smuzhiyun 		goto __end;
62*4882a593Smuzhiyun 	}
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun+#ifdef HAVE_ALSA_USE_CASE_H
65*4882a593Smuzhiyun 	if (strncmp(pcm_name, "ucm.", 4) == 0) {
66*4882a593Smuzhiyun 		err = open_ucm(&uc_mgr, &pcm_name, pcm_name + 4);
67*4882a593Smuzhiyun 		if (err < 0) {
68*4882a593Smuzhiyun@@ -861,6 +868,7 @@ int main(int argc, char *argv[])
69*4882a593Smuzhiyun 		if (verbose)
70*4882a593Smuzhiyun 			fprintf(stderr, _("Found UCM PCM device: %s\n"), pcm_name);
71*4882a593Smuzhiyun 	}
72*4882a593Smuzhiyun+#endif
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun 	err = snd_pcm_open(&handle, pcm_name, stream, open_mode);
75*4882a593Smuzhiyun 	if (err < 0) {
76*4882a593Smuzhiyun@@ -951,8 +959,10 @@ int main(int argc, char *argv[])
77*4882a593Smuzhiyun 	if (verbose==2)
78*4882a593Smuzhiyun 		putchar('\n');
79*4882a593Smuzhiyun 	snd_pcm_close(handle);
80*4882a593Smuzhiyun+#ifdef HAVE_ALSA_USE_CASE_H
81*4882a593Smuzhiyun 	if (uc_mgr)
82*4882a593Smuzhiyun 		snd_use_case_mgr_close(uc_mgr);
83*4882a593Smuzhiyun+#endif
84*4882a593Smuzhiyun 	handle = NULL;
85*4882a593Smuzhiyun 	free(audiobuf);
86*4882a593Smuzhiyun       __end:
87*4882a593Smuzhiyun--
88*4882a593Smuzhiyun2.36.1
89*4882a593Smuzhiyun
90