Re: Query about xrun on usb/pcm

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

 



Hi Takashi,

> > Can you see any problems with that?  In the application code I do need
> > to re-try the snd_pcm_prepare() if one fails with -EPIPE, but with this
> > undo step the second snd_pcm_prepare() is able to recover the endpoint
> > states, instead of hitting this problem where it tries to start things
> > that are STOPPING, but also won't set things to STOPPED because
> > stop_operating is false.
>
> Setting the stop_operating unconditionally there doesn't look right,
> as there may be other error types not only the pending XRUN.
>
> The problem is rather specific to USB audio driver that tries to start
> the stream at PCM prepare, so it's better to handle in USB audio
> driver itself.  That is, when -EPIPE is returned from
> start_endpoints() at prepare, the driver does some action.
>
> I can see two options:
> - Issue snd_pcm_stop_xrun() when start_endpoints() returns -EPIPE
> - Repeat the prepare after the sync at snd_usb_pcm_prepare()
>
> The former would require a bit of change in snd_pcm_stop_xrun(), and
> it relies on the application retrying the prepare.  The latter would
> be more self-contained.  I attached two patches (totally untested) for
> both scenarios.
>
> My gut feeling is for the latter solution, but this needs
> verification.

The latter solution seems to fix our problem perfectly!  Thank you so
much!

Is there anything I can/should do to help get the change merged?

Kind regards,
Carl



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux