Use char as ring-buffer data type.

- Avoids a bunch of char* casts.
- Use enum type rather than char.

TEST=audioproc_unittest on Linux (float and fixed), build on Windows

Review URL: http://webrtc-codereview.appspot.com/336010

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1303 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
andrew@webrtc.org 2011-12-28 22:40:15 +00:00
parent e2642494e4
commit 6d6a43d6e3

View File

@ -28,17 +28,20 @@ typedef struct {
bufdata_t *data;
} tmp_buf_t;
enum Wrap {
SAME_WRAP,
DIFF_WRAP
};
typedef struct {
size_t read_pos;
size_t write_pos;
size_t element_count;
size_t element_size;
char rw_wrap;
void* data;
enum Wrap rw_wrap;
char* data;
} buf_t;
enum { SAME_WRAP, DIFF_WRAP };
// Get address of region(s) from which we can read data.
// If the region is contiguous, |data_ptr_bytes_2| will be zero.
// If non-contiguous, |data_ptr_bytes_2| will be the size in bytes of the second
@ -59,12 +62,12 @@ static size_t GetBufferReadRegions(buf_t* buf,
// Check to see if read is not contiguous.
if (read_elements > margin) {
// Write data in two blocks that wrap the buffer.
*data_ptr_1 = ((char*) buf->data) + (buf->read_pos * buf->element_size);
*data_ptr_1 = buf->data + buf->read_pos * buf->element_size;
*data_ptr_bytes_1 = margin * buf->element_size;
*data_ptr_2 = buf->data;
*data_ptr_bytes_2 = (read_elements - margin) * buf->element_size;
} else {
*data_ptr_1 = ((char*) buf->data) + (buf->read_pos * buf->element_size);
*data_ptr_1 = buf->data + buf->read_pos * buf->element_size;
*data_ptr_bytes_1 = read_elements * buf->element_size;
*data_ptr_2 = NULL;
*data_ptr_bytes_2 = 0;
@ -396,13 +399,13 @@ size_t WebRtc_WriteBuffer(void* handle,
if (write_elements > margin) {
// Buffer wrap around when writing.
memcpy(((char*) self->data) + (self->write_pos * self->element_size),
memcpy(self->data + self->write_pos * self->element_size,
data, margin * self->element_size);
self->write_pos = 0;
n -= margin;
self->rw_wrap = DIFF_WRAP;
}
memcpy(((char*) self->data) + (self->write_pos * self->element_size),
memcpy(self->data + self->write_pos * self->element_size,
((const char*) data) + ((write_elements - n) * self->element_size),
n * self->element_size);
self->write_pos += n;