commit | 906f4030882ad6b7f31658e43a15e6165f3431d0 | [log] [tgz] |
---|---|---|
author | peah <peah@webrtc.org> | Thu Sep 08 16:49:42 2016 |
committer | Commit bot <commit-bot@chromium.org> | Thu Sep 08 16:49:50 2016 |
tree | 003903b22c884acd1e6663e1cb97c361b2bc994b | |
parent | 0e62f2bebeb09f4c952009922a7ce46b63db8648 [diff] |
This CL refactors the buffering of the incoming near-end signal inside the AEC. This solves the following issues: -Even though the buffering was previously done using ringbuffers, those were inefficiently used which caused a lot of hidden memcopys. -The ringbuffers wasted a lot of space in the AEC state as they were too long. -The lowest and two upper bands were decoupled in the buffering, which required extra code to handle. -On top of the ringbuffers there was a second linear buffer that was stored in the state which caused even more data to be stored on the state. -The incoming nearend frames were passed to the functions in the form of buffers on the state, which made the code harder to read as it was not immediately clear where the nearend signal was used, and when it was modified. The CL addresses this by replacing all the buffers by two linear buffers: -One buffer before the AEC processing for producing nearend blocks of size 64 that can be processed by the AEC. -One inside the AEC processing that buffers the current nearend block until the next block is processed. The changes have been tested to be bitexact. This CL will be followed by several other CLs, that refactor the other buffers in the AEC. BUG=webrtc:5298, webrtc:6018 Review-Url: https://codereview.webrtc.org/2311833002 Cr-Commit-Position: refs/heads/master@{#14141}
WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.
The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others. This page is maintained by the Google Chrome team.
See http://www.webrtc.org/native-code/development for instructions on how to get started developing with the native code.