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