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
diff --git a/src/modules/audio_processing/utility/ring_buffer.c b/src/modules/audio_processing/utility/ring_buffer.c
index 6f9be31..aebc7c0 100644
--- a/src/modules/audio_processing/utility/ring_buffer.c
+++ b/src/modules/audio_processing/utility/ring_buffer.c
@@ -28,17 +28,20 @@
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 @@
// 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 @@
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;