> Things like ring buffers are still the same idea, but I won't explain
> how they're the same, because it would make the explanation more
> confusing. Just hold onto the core idea -- the receiver and sender of
> data each have their own buffers.

Heartfelt thanks for this great explanation.

I am a driver guy and i fully understand the concept of ring buffer
mechanism and how it used in ALSA.What i don't understand is that
sometimes write(){called by audioflinger} function call takes some
time to return(probably because of driver bug or latency) and
sometimes it doesn't return at all causing problem as shown below:
"obtainBuffer timed out (is the CPU pegged?)" in audiotrack.cpp

Is this buffer same as what is being allocated in the case of
streaming(sharebuffer = 0) in audioflinger.cpp file(constructor of
trackbase)
mCblkMemory = client->heap()->allocate(size);
If not then which buffer is this and where was it allocated.How can i
avoid getting this error other than solving it in driver?I don't mind
dropping some frames.

In the static case i guess when we call write() of audioflinger the
java pointer is directly passed to audiodriver by copying and we don't
maintain any buffers in this case?

And what is this track(audioflinger point of view)?How many tracks are
going to be created if i am playing music and what will be it's size??

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to