Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Aug 2014 14:22:40 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r270717 - stable/10/sys/dev/sound/usb
Message-ID:  <201408271422.s7REMeED098424@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Wed Aug 27 14:22:40 2014
New Revision: 270717
URL: http://svnweb.freebsd.org/changeset/base/270717

Log:
  MFC r270134:
  Use the "bSubslotSize" and "bSubFrameSize" fields to obtain the actual
  sample size. According to the USB audio frame format specification
  from USB.org, the value in the "bBitResolution" field can be less than
  the actual sample size, depending on the actual hardware, and should
  not be used for this computation.
  
  PR:		192755

Modified:
  stable/10/sys/dev/sound/usb/uaudio.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/sound/usb/uaudio.c
==============================================================================
--- stable/10/sys/dev/sound/usb/uaudio.c	Wed Aug 27 14:20:01 2014	(r270716)
+++ stable/10/sys/dev/sound/usb/uaudio.c	Wed Aug 27 14:22:40 2014	(r270717)
@@ -1665,21 +1665,10 @@ uaudio_chan_fill_info_sub(struct uaudio_
 		} else if (audio_rev >= UAUDIO_VERSION_20) {
 
 			uint32_t dwFormat;
-			uint8_t bSubslotSize;
 
 			dwFormat = UGETDW(asid.v2->bmFormats);
 			bChannels = asid.v2->bNrChannels;
-			bBitResolution = asf1d.v2->bBitResolution;
-			bSubslotSize = asf1d.v2->bSubslotSize;
-
-			/* Map 4-byte aligned 24-bit samples into 32-bit */
-			if (bBitResolution == 24 && bSubslotSize == 4)
-				bBitResolution = 32;
-
-			if (bBitResolution != (bSubslotSize * 8)) {
-				DPRINTF("Invalid bSubslotSize\n");
-				goto next_ep;
-			}
+			bBitResolution = asf1d.v2->bSubslotSize * 8;
 
 			if ((bChannels != channels) ||
 			    (bBitResolution != bit_resolution)) {
@@ -1726,7 +1715,7 @@ uaudio_chan_fill_info_sub(struct uaudio_
 
 			wFormat = UGETW(asid.v1->wFormatTag);
 			bChannels = UAUDIO_MAX_CHAN(asf1d.v1->bNrChannels);
-			bBitResolution = asf1d.v1->bBitResolution;
+			bBitResolution = asf1d.v1->bSubFrameSize * 8;
 
 			if (asf1d.v1->bSamFreqType == 0) {
 				DPRINTFN(16, "Sample rate: %d-%dHz\n",



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201408271422.s7REMeED098424>