I have a question about where the buffers are filled: in the first post, you mentioned
but later in the thread you also mentioned using callbacks.
I'm curious: when you say "buffer filling", what do you mean?
Usually the app should Enqueue empty buffers for OpenSL ES recorder to fill;
the app should not be filling those buffers itself.
Also, what operations do you do inside of the record buffer completion callback?
normally the steps should be: copy data out of most recently completed buffer
[you will need to track which buffer that is] to your private area,
then enqueue an empty buffer for recorder to use next.
One last thing, avoid doing I/O or logging or acquiring a mutex inside the callback.
Please post here the exact sequence, and if I spot something fishy I'll let you know.