Re: Trigger problems while writing Alsa Shim

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

 



At Fri, 07 Mar 2008 10:10:05 -0600,
bruce@xxxxxxxxxxxxx wrote:
> 
> I am writing a shim from alsa to our own sound card drivers.  I was  
> able to get the init driver working and our sound card recognized.   
> Things seem to be set up correctly.  When I do aplay to my device (USB  
> device works find), it calls my copy callback twice and then it calls  
> the trigger and fails.  The call that fails is in pcm_write  
> (writei_func) with a -5.  I know that my callback returns zero but  
> there must be something else under the covers since that gets to be  
> zero.  Any help would be appreciated.

The error -5 is -EIO.  Typically it indicates that the data isn't
handled properly by the PCM core.

ALSA PCM core needs proper (asynchronous) notification via
snd_pcm_period_elapsed().  Otherwise the internals won't be updated
and you'll have the error.  Usually this is called from the irq
handler.

snd_pcm_period_elapsed() is supposed to be issued at the time when the
last period (fragment, chunk) has been processed -- meaning the sound
is really played back.  It doesn't mean that the data is fed to the
hardware.

Once after snd_pcm_period_elapsed() is called, PCM core calls the
pointer callback and updates the internals including the current
position.  Then it wakes up the pending tasks, which will restart
writing to the buffer, etc.


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

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

  Powered by Linux