A further update:
I'm having difficulty making this work in the simulator. It appears to
be a problem with the way the SDL audio code operates. No matter what I
request for the audio buffer size, it opens a 44112 byte buffer, and
expects it to be filled on every callback. This isn't a problem with
normal playback, but the mixer expects a callback every time the mix
buffer runs out. The mix buffer is only 4096 bytes, so it can't fill
the SDL buffer on each call. Therefore, the SDL callback produces
another mixer callback immediately, before the mix buffer has a chance
to get more data. Then playback starves and restarts as soon as more
mix input appears. This stutters playback terribly.
I think this behavior will not occur on target since the callback should
only occur when the (very small )hardware buffer is starved. This
prevents the double callback and playback stop.
I'd like to know if there's some way to force SDL to behave like a
target, with a very small FIFO buffer rather than its own large playback
buffer, or at least not always insist on its being full. Ideas?
Jeff