The mixer allocates an audio frame for each added data source. This audio frame was deallocated when a source was removed from the mixer. Source removal could happen during the mixing, and the existing locking scheme (and the Clang thread checker) was not sufficient to prevent a data race. After this change, the mixer doesn't release its lock until it is finished with the sources' Audio frames. Since multi-threaded access to the mixer only happens when a source is added or removed, we believe that this change wouldn't have any noticeable performance impact. NOTRY=True BUG=webrtc:6346 Review-Url: https://codereview.webrtc.org/2439283002 Cr-Commit-Position: refs/heads/master@{#14744}
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.