All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eldad Zack <eldad@fogrefinery.com>
To: Takashi Iwai <tiwai@suse.de>, Daniel Mack <zonque@gmail.com>,
	Felix Homann <linuxaudio@showlabor.de>,
	Clemens Ladisch <clemens@ladisch.de>,
	alsa-devel@alsa-project.org
Cc: Grant Diffey <gdiffey@gmail.com>,
	George Willian Condomitti <georgecondomitti@gmail.com>,
	Chris Cavey <chris-alsa@rauros.net>,
	Eldad Zack <eldad@fogrefinery.com>
Subject: [FT C400, PATCH RFC, v3 2/9] usb-audio: use sender stride for implicit feedback
Date: Tue, 27 Nov 2012 17:00:51 +0100	[thread overview]
Message-ID: <1354032058-668-3-git-send-email-eldad@fogrefinery.com> (raw)
In-Reply-To: <1354032058-668-1-git-send-email-eldad@fogrefinery.com>

For implicit feedback endpoints, the number of bytes for each packet
is matched by the corresponding synchronizing endpoint.
The size is calculated by taking the actual size and dividing it by
the stride - currently by the endpoint's stride, but we should use the
synchronization source's stride.
This is evident when the number of channels differ between the
synchornization source and the implictly fed-back endpoint, as with
M-Audio Fast Track C400 - the synchonization source (capture) has
4 channels, while the implicit feedback mode endpoint has 6.

Signed-off-by: Eldad Zack <eldad@fogrefinery.com>
---
 sound/usb/endpoint.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c
index 34de6f2..72e711c 100644
--- a/sound/usb/endpoint.c
+++ b/sound/usb/endpoint.c
@@ -1034,15 +1034,18 @@ void snd_usb_handle_sync_urb(struct snd_usb_endpoint *ep,
 		/*
 		 * Iterate through the inbound packet and prepare the lengths
 		 * for the output packet. The OUT packet we are about to send
-		 * will have the same amount of payload bytes than the IN
-		 * packet we just received.
+		 * will have the same amount of payload bytes per stride as the
+		 * IN packet we just received. Since the actual size is scaled
+		 * by the stride, use the sender stride to calculate the length
+		 * in case the number of channels differ between the implicitly
+		 * fed-back endpoint and the synchronizing endpoint.
 		 */
 
 		out_packet->packets = in_ctx->packets;
 		for (i = 0; i < in_ctx->packets; i++) {
 			if (urb->iso_frame_desc[i].status == 0)
 				out_packet->packet_size[i] =
-					urb->iso_frame_desc[i].actual_length / ep->stride;
+					urb->iso_frame_desc[i].actual_length / sender->stride;
 			else
 				out_packet->packet_size[i] = 0;
 		}
-- 
1.7.8.6

  parent reply	other threads:[~2012-11-27 16:01 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-27 16:00 [FT C400,PATCH RFC,v3 0/9] M-Audio Fast Track C400 Eldad Zack
2012-11-27 16:00 ` [FT C400, PATCH RFC, v3 1/9] usb-audio: replace hardcoded value with const Eldad Zack
2012-11-27 16:00 ` Eldad Zack [this message]
2012-11-27 16:00 ` [FT C400, PATCH RFC, v3 3/9] usb-audio: add control index offset Eldad Zack
2012-11-27 16:00 ` [FT C400, PATCH RFC, v3 4/9] usb-audio: skip UAC2 EFFECT_UNIT Eldad Zack
2012-11-27 16:00 ` [FT C400, PATCH RFC, v3 5/9] usb-audio: parameterize FTU effect unit control Eldad Zack
2012-11-27 16:00 ` [FT C400, PATCH RFC, v3 6/9] usb-audio: M-Audio Fast Track C400 quirks table Eldad Zack
2012-11-27 16:11   ` Clemens Ladisch
2012-11-27 16:44     ` Eldad Zack
2012-11-28 10:20       ` Takashi Iwai
2012-11-27 16:00 ` [FT C400, PATCH RFC, v3 7/9] usb-audio: Fast Track C400 mixer ranges Eldad Zack
2012-11-27 16:12   ` Clemens Ladisch
2012-11-27 17:44     ` Eldad Zack
2012-11-27 16:00 ` [FT C400, PATCH RFC, v3 8/9] usb-audio: Fast Track C400 mixer controls Eldad Zack
2012-11-27 16:00 ` [FT C400, PATCH RFC, v3 9/9] usb-audio: FT C400 sync playback EP to capture EP Eldad Zack

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1354032058-668-3-git-send-email-eldad@fogrefinery.com \
    --to=eldad@fogrefinery.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=chris-alsa@rauros.net \
    --cc=clemens@ladisch.de \
    --cc=gdiffey@gmail.com \
    --cc=georgecondomitti@gmail.com \
    --cc=linuxaudio@showlabor.de \
    --cc=tiwai@suse.de \
    --cc=zonque@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.