Re: [RFC] How to handle delays in isochronous transfers?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 13 Sep 2012, Clemens Ladisch wrote:

> Alan Stern wrote:
> > If instead I do "echo 2 3000 >test" then the next URB is submitted 3
> > frames too late.  Since the URB contains only 3 packets, all of its
> > slots have already expired.  The submission fails and the audio stops
> > playing, although the ogg123 program continues running and the synch
> > URBs continue to be submitted.
> 
> You might try this untested patch (ogg123 should then restart):
> 
> --- a/sound/usb/endpoint.c
> +++ b/sound/usb/endpoint.c
> @@ -386,7 +386,7 @@ static void snd_complete_urb(struct urb *urb)
>  		return;
> 
>  	snd_printk(KERN_ERR "cannot submit urb (err = %d)\n", err);
> -	//snd_pcm_stop(substream, SNDRV_PCM_STATE_XRUN);
> +	snd_pcm_stop(substream, SNDRV_PCM_STATE_XRUN);

This doesn't compile because substream is undefined.  I tried the 
following instead:

--- usb-3.6.orig/sound/usb/endpoint.c
+++ usb-3.6/sound/usb/endpoint.c
@@ -376,7 +376,7 @@ static void snd_complete_urb(struct urb
 		return;
 
 	snd_printk(KERN_ERR "cannot submit urb (err = %d)\n", err);
-	//snd_pcm_stop(substream, SNDRV_PCM_STATE_XRUN);
+	snd_pcm_stop(ctx->subs->pcm_substream, SNDRV_PCM_STATE_XRUN);
 
 exit_clear:
 	clear_bit(ctx->index, &ep->active_mask);

But it caused an immediate oops during testing.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux