Just looking it over it seems fine. Eric Pouech is a better person to review something like this, he's had quite a bit more experence in this area.
A couple of things:
(4b) wodPlayer_FeedDSP()
In the while loop, I could not figure out the purpose of 'availInQ > SPACE_THRESHOLD', so I changed it to 'availInQ'. In reality, the SPACE_THRESHOLD check could probably be left in, I am not sure what the purpose was in the first place.
I think is to prevents us from feeding very small amounts of data. I'm not sure it is necessary for arts but I believe oss/alsa have issues with chunks of data below a certain size. Perhaps it improves performance if we aren't always trying to stuff a handful of bytes in.
(4d) Removed wodPlayer_DSPWait()
I just calculate the wait value once in wodOpen() and store it in wwo->dwSleepTime.
Won't this value change as arts becomes filled with data or plays data out?
ARTS_P_PACKET_SETTINGS Can you go over these changes a bit more? Maybe Tom can add some information to the documentation based on what you have to say about the change.
Thanks, Chris