Revert of Moved the ringbuffer to be built using C++ (patchset #2 id:20001 of https://codereview.webrtc.org/1851873003/ ) Reason for revert: This CL is dependent on the CL https://codereview.webrtc.org/1846903004/ which caused a google3 breakage due to dependencies in Google3. I will fix that, and reland this CL. Original issue's description: > Moved the ringbuffer to be built using C++ > > BUG=webrtc:5724 > > Committed: https://crrev.com/677e5774eaf287fa02f75fd5c8ad3f9ded9ed9c4 > Cr-Commit-Position: refs/heads/master@{#12230} TBR=ivoc@webrtc.org,henrik.lundin@webrtc.org,kwiberg@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=webrtc:5724 Review URL: https://codereview.webrtc.org/1858873003 Cr-Commit-Position: refs/heads/master@{#12231}
diff --git a/webrtc/modules/audio_processing/BUILD.gn b/webrtc/modules/audio_processing/BUILD.gn index 7960368..bf7bdc5 100644 --- a/webrtc/modules/audio_processing/BUILD.gn +++ b/webrtc/modules/audio_processing/BUILD.gn
@@ -121,7 +121,7 @@ "utility/delay_estimator_wrapper.h", "utility/lapped_transform.cc", "utility/lapped_transform.h", - "utility/ring_buffer.cc", + "utility/ring_buffer.c", "utility/ring_buffer.h", "vad/common.h", "vad/gmm.cc",
diff --git a/webrtc/modules/audio_processing/aec/aec_core.cc b/webrtc/modules/audio_processing/aec/aec_core.cc index 5af6e5d..4fe635d 100644 --- a/webrtc/modules/audio_processing/aec/aec_core.cc +++ b/webrtc/modules/audio_processing/aec/aec_core.cc
@@ -33,8 +33,8 @@ #include "webrtc/modules/audio_processing/logging/aec_logging.h" extern "C" { #include "webrtc/modules/audio_processing/utility/delay_estimator_wrapper.h" -} #include "webrtc/modules/audio_processing/utility/ring_buffer.h" +} #include "webrtc/system_wrappers/include/cpu_features_wrapper.h" #include "webrtc/typedefs.h"
diff --git a/webrtc/modules/audio_processing/aec/aec_core_internal.h b/webrtc/modules/audio_processing/aec/aec_core_internal.h index 79af29d..1f4f99b 100644 --- a/webrtc/modules/audio_processing/aec/aec_core_internal.h +++ b/webrtc/modules/audio_processing/aec/aec_core_internal.h
@@ -15,7 +15,9 @@ #include "webrtc/modules/audio_processing/aec/aec_common.h" #include "webrtc/modules/audio_processing/aec/aec_core.h" #include "webrtc/modules/audio_processing/utility/block_mean_calculator.h" +extern "C" { #include "webrtc/modules/audio_processing/utility/ring_buffer.h" +} #include "webrtc/typedefs.h"
diff --git a/webrtc/modules/audio_processing/aec/echo_cancellation_internal.h b/webrtc/modules/audio_processing/aec/echo_cancellation_internal.h index 9779d6f..537ab5d 100644 --- a/webrtc/modules/audio_processing/aec/echo_cancellation_internal.h +++ b/webrtc/modules/audio_processing/aec/echo_cancellation_internal.h
@@ -12,7 +12,9 @@ #define WEBRTC_MODULES_AUDIO_PROCESSING_AEC_ECHO_CANCELLATION_INTERNAL_H_ #include "webrtc/modules/audio_processing/aec/aec_core.h" +extern "C" { #include "webrtc/modules/audio_processing/utility/ring_buffer.h" +} namespace webrtc {
diff --git a/webrtc/modules/audio_processing/audio_processing.gypi b/webrtc/modules/audio_processing/audio_processing.gypi index 1fa4a85..75da59f 100644 --- a/webrtc/modules/audio_processing/audio_processing.gypi +++ b/webrtc/modules/audio_processing/audio_processing.gypi
@@ -131,7 +131,7 @@ 'utility/delay_estimator_wrapper.h', 'utility/lapped_transform.cc', 'utility/lapped_transform.h', - 'utility/ring_buffer.cc', + 'utility/ring_buffer.c', 'utility/ring_buffer.h', 'vad/common.h', 'vad/gmm.cc',
diff --git a/webrtc/modules/audio_processing/utility/ring_buffer.cc b/webrtc/modules/audio_processing/utility/ring_buffer.c similarity index 88% rename from webrtc/modules/audio_processing/utility/ring_buffer.cc rename to webrtc/modules/audio_processing/utility/ring_buffer.c index e5c86cd..c71bac1 100644 --- a/webrtc/modules/audio_processing/utility/ring_buffer.cc +++ b/webrtc/modules/audio_processing/utility/ring_buffer.c
@@ -42,6 +42,7 @@ size_t* data_ptr_bytes_1, void** data_ptr_2, size_t* data_ptr_bytes_2) { + const size_t readable_elements = WebRtc_available_read(buf); const size_t read_elements = (readable_elements < element_count ? readable_elements : element_count); @@ -70,12 +71,12 @@ return NULL; } - self = static_cast<RingBuffer*>(malloc(sizeof(RingBuffer))); + self = malloc(sizeof(RingBuffer)); if (!self) { return NULL; } - self->data = static_cast<char*>(malloc(element_count * element_size)); + self->data = malloc(element_count * element_size); if (!self->data) { free(self); self = NULL; @@ -99,7 +100,7 @@ } void WebRtc_FreeBuffer(void* handle) { - RingBuffer* self = static_cast<RingBuffer*>(handle); + RingBuffer* self = (RingBuffer*)handle; if (!self) { return; } @@ -112,6 +113,7 @@ void** data_ptr, void* data, size_t element_count) { + if (self == NULL) { return 0; } @@ -135,8 +137,7 @@ // We have a wrap around when reading the buffer. Copy the buffer data to // |data| and point to it. memcpy(data, buf_ptr_1, buf_ptr_bytes_1); - memcpy(static_cast<char*>(data) + buf_ptr_bytes_1, buf_ptr_2, - buf_ptr_bytes_2); + memcpy(((char*) data) + buf_ptr_bytes_1, buf_ptr_2, buf_ptr_bytes_2); buf_ptr_1 = data; } else if (!data_ptr) { // No wrap, but a memcpy was requested. @@ -148,7 +149,7 @@ } // Update read position - WebRtc_MoveReadPtr(self, static_cast<int>(read_count)); + WebRtc_MoveReadPtr(self, (int) read_count); return read_count; } @@ -196,9 +197,9 @@ { // We need to be able to take care of negative changes, hence use "int" // instead of "size_t". - const int free_elements = static_cast<int>(WebRtc_available_write(self)); - const int readable_elements = static_cast<int>(WebRtc_available_read(self)); - int read_pos = static_cast<int>(self->read_pos); + const int free_elements = (int) WebRtc_available_write(self); + const int readable_elements = (int) WebRtc_available_read(self); + int read_pos = (int) self->read_pos; if (element_count > readable_elements) { element_count = readable_elements; @@ -208,18 +209,18 @@ } read_pos += element_count; - if (read_pos > static_cast<int>(self->element_count)) { + if (read_pos > (int) self->element_count) { // Buffer wrap around. Restart read position and wrap indicator. - read_pos -= static_cast<int>(self->element_count); + read_pos -= (int) self->element_count; self->rw_wrap = SAME_WRAP; } if (read_pos < 0) { // Buffer wrap around. Restart read position and wrap indicator. - read_pos += static_cast<int>(self->element_count); + read_pos += (int) self->element_count; self->rw_wrap = DIFF_WRAP; } - self->read_pos = static_cast<size_t>(read_pos); + self->read_pos = (size_t) read_pos; return element_count; }