[alsa-devel] [PATCH (alsa-utils)] amixer: Print TLV of channel map controls

David Henningsson david.henningsson at canonical.com
Fri Jun 14 11:41:01 CEST 2013


Previously these were written as "unk-25..." which wasn't very user friendly.

Signed-off-by: David Henningsson <david.henningsson at canonical.com>
---
 amixer/amixer.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/amixer/amixer.c b/amixer/amixer.c
index fe83b49..7727943 100644
--- a/amixer/amixer.c
+++ b/amixer/amixer.c
@@ -443,6 +443,7 @@ static void decode_tlv(unsigned int spaces, unsigned int *tlv, unsigned int tlv_
 	unsigned int type = tlv[0];
 	unsigned int size;
 	unsigned int idx = 0;
+	const char *chmap_type = NULL;
 
 	if (tlv_size < 2 * sizeof(unsigned int)) {
 		printf("TLV size error!\n");
@@ -541,6 +542,27 @@ static void decode_tlv(unsigned int spaces, unsigned int *tlv, unsigned int tlv_
 		}
 		break;
 #endif
+#ifdef SND_CTL_TLVT_CHMAP_FIXED
+	case SND_CTL_TLVT_CHMAP_FIXED:
+		chmap_type = "fixed";
+		/* Fall through */
+	case SND_CTL_TLVT_CHMAP_VAR:
+		if (!chmap_type)
+			chmap_type = "variable";
+		/* Fall through */
+	case SND_CTL_TLVT_CHMAP_PAIRED:
+		if (!chmap_type)
+			chmap_type = "paired";
+		printf("chmap-%s=", chmap_type);
+
+		while (size > 0) {
+			printf("%s", snd_pcm_chmap_name(tlv[idx++]));
+			size -= sizeof(unsigned int);
+			if (size > 0)
+				printf(",");
+		}
+		break;
+#endif
 	default:
 		printf("unk-%i-", type);
 		while (size > 0) {
-- 
1.8.3



More information about the Alsa-devel mailing list