--- sys/dev/sound/usb/uaudio.c.orig (revision 194047) +++ sys/dev/sound/usb/uaudio.c (working copy) @@ -1361,13 +1361,18 @@ ch->pcm_cap.minspeed = ch->sample_rate; ch->pcm_cap.maxspeed = ch->sample_rate; - if (ch->p_asf1d->bNrChannels >= 2) - ch->pcm_cap.fmtlist[0] = - SND_FORMAT(ch->p_fmt->freebsd_fmt, 2, 0); - else - ch->pcm_cap.fmtlist[0] = - SND_FORMAT(ch->p_fmt->freebsd_fmt, 1, 0); + ch->pcm_cap.fmtlist[0] = + feeder_matrix_default_format(SND_FORMAT(ch->p_fmt->freebsd_fmt, + ch->p_asf1d->bNrChannels, 0)); + if (ch->pcm_cap.fmtlist[0] == 0) { + if (ch->p_asf1d->bNrChannels >= 2) + ch->pcm_cap.fmtlist[0] = + SND_FORMAT(ch->p_fmt->freebsd_fmt, 2, 0); + else + ch->pcm_cap.fmtlist[0] = + SND_FORMAT(ch->p_fmt->freebsd_fmt, 1, 0); + } ch->pcm_cap.fmtlist[1] = 0;