There is a version of the WindRiver ALSA audio that uses unblocked I/O
and will kick-start the audio if this happens. The real problem is that
the ALSA driver usually doesn't survive well over a suspend/resume. The
way to reproduce the problem is if:
1) Play something.
2) Stop play.
3) Suspend.
4) Resume.
5) Play something.
It shouldn't allow the platform to sleep when playing, so if it is a
suspend/resume issue you are seeing then this is the only way to
reproduce it.
naveenkrishna.ch wrote:
> I started working on audio with OMAP3 + Android.
> I have the windrivers audio porting as base the audio playback works fine.
> But some times i get a warning prints continuously
> with audio playback stopping and logging some entry similar to below.
>
> W/AudioTrack( 566): obtainBuffer timed out (is the CPU pegged?)
> user=00000100, server=00000000
>
> after that point i could not make it re-play again without restarting.
>
> I have seen a similar issue raised earlier but was not solved at that
> point of time.
> Is there any work around for this issue.
>
> --
> Thanks,
>
> (: Naveen Krishna Ch :)
>
> >
I've explained the major issue here - it is your audio drivers fault. It
isn't returning from a write.
This could be for any number of reasons. In your case, I'd look at how
you've MUXd the interface between the OMAP and the TWL. Then, if you are
using mcBSP1 or 2 with DMA, I'd consider perhaps you are losing an
interrupt somewhere. Then there is the ALSA layer implementation on top
of the low level stuff. Wind River has had no issues with audio on Zoom
reference platforms and customer hardware, so it isn't really the ALSA
layer in Android. Maybe your kernel version is too old (missing bug
fixes) or too new (recently introduced bug)?