Use buflib for the allocation of voice PCM resources.

Buffers are not allocated and thread is not created until the first
call where voice is required.

Adds a different callback (sync_callback) to buflib so that other
sorts of synchonization are possible, such as briefly locking-out the
PCM callback for a buffer move. It's sort of a messy addition but it
is needed so voice decoding won't have to be stopped when its buffer
is moved.

Change-Id: I4d4d8c35eed5dd15fb7ee7df9323af3d036e92b3
This commit is contained in:
Michael Sevakis 2012-05-02 17:22:28 -04:00
parent 3d3a144cf6
commit da6cebb6b0
13 changed files with 244 additions and 132 deletions

View file

@ -103,6 +103,12 @@ struct buflib_callbacks {
* at least shrinkable
*/
int (*shrink_callback)(int handle, unsigned hints, void* start, size_t old_size);
/**
* This is called when special steps must be taken for synchronization
* both before the move_callback is called and after the data has been
* moved.
*/
void (*sync_callback)(int handle, bool sync_on);
};
#define BUFLIB_SHRINK_POS_MASK ((1<<0|1<<1)<<30)