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}
Name: WebRTC URL: http://www.webrtc.org Version: 90 License: BSD License File: LICENSE Description: WebRTC provides real time voice and video processing functionality to enable the implementation of PeerConnection/MediaStream. Third party code used in this project is described in the file LICENSE_THIRD_PARTY.