[PATCH] ALSA: usb-audio: map UAC3 front wide channels in convert_chmap_v3()

Cássio Gabriel posted 1 patch 3 weeks, 5 days ago
sound/usb/stream.c | 8 ++++++++
1 file changed, 8 insertions(+)
[PATCH] ALSA: usb-audio: map UAC3 front wide channels in convert_chmap_v3()
Posted by Cássio Gabriel 3 weeks, 5 days ago
convert_chmap_v3() translates UAC3 channel relationship values into
ALSA channel-map positions.

UAC3_CH_FRONT_WIDE_LEFT and UAC3_CH_FRONT_WIDE_RIGHT currently fall
back to SNDRV_CHMAP_UNKNOWN, although ALSA already provides matching
channel-map positions via SNDRV_CHMAP_FLW and SNDRV_CHMAP_FRW.

Map these two UAC3 positions to their ALSA equivalents and update the
comment to clarify that unsupported UAC3 channel relationships remain
reported as SNDRV_CHMAP_UNKNOWN.

No functional change for other channel relationships.

Signed-off-by: Cássio Gabriel <cassiogabrielcontato@gmail.com>
---
 sound/usb/stream.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/sound/usb/stream.c b/sound/usb/stream.c
index d38c39e28f38..2532bf97e05e 100644
--- a/sound/usb/stream.c
+++ b/sound/usb/stream.c
@@ -366,6 +366,8 @@ snd_pcm_chmap_elem *convert_chmap_v3(struct uac3_cluster_header_descriptor
 			/*
 			 * TODO: this conversion is not complete, update it
 			 * after adding UAC3 values to asound.h
+			 * NOTE: not all UAC3 channel relationship have a
+			 * direct ALSA chmap equivalent.
 			 */
 			switch (is->bChRelationship) {
 			case UAC3_CH_MONO:
@@ -390,6 +392,12 @@ snd_pcm_chmap_elem *convert_chmap_v3(struct uac3_cluster_header_descriptor
 			case UAC3_CH_FRONT_RIGHT_OF_CENTER:
 				map = SNDRV_CHMAP_FRC;
 				break;
+			case UAC3_CH_FRONT_WIDE_LEFT:
+				map = SNDRV_CHMAP_FLW;
+				break;
+			case UAC3_CH_FRONT_WIDE_RIGHT:
+				map = SNDRV_CHMAP_FRW;
+				break;
 			case UAC3_CH_SIDE_LEFT:
 				map = SNDRV_CHMAP_SL;
 				break;
-- 
2.53.0

Re: [PATCH] ALSA: usb-audio: map UAC3 front wide channels in convert_chmap_v3()
Posted by Takashi Iwai 3 weeks, 5 days ago
On Wed, 11 Mar 2026 21:00:10 +0100,
Cássio Gabriel wrote:
> 
> convert_chmap_v3() translates UAC3 channel relationship values into
> ALSA channel-map positions.
> 
> UAC3_CH_FRONT_WIDE_LEFT and UAC3_CH_FRONT_WIDE_RIGHT currently fall
> back to SNDRV_CHMAP_UNKNOWN, although ALSA already provides matching
> channel-map positions via SNDRV_CHMAP_FLW and SNDRV_CHMAP_FRW.
> 
> Map these two UAC3 positions to their ALSA equivalents and update the
> comment to clarify that unsupported UAC3 channel relationships remain
> reported as SNDRV_CHMAP_UNKNOWN.
> 
> No functional change for other channel relationships.
> 
> Signed-off-by: Cássio Gabriel <cassiogabrielcontato@gmail.com>

Thanks, applied to for-next branch now.


Takashi