commit | 7092368982d3f9c5a503cde2c6ee08c05eedfe25 | [log] [tgz] |
---|---|---|
author | Jonathan Yu <yujo@chromium.org> | Fri Feb 02 12:44:33 2018 -0800 |
committer | Commit Bot <commit-bot@chromium.org> | Mon Feb 05 18:44:24 2018 +0000 |
tree | 2b73c3a47fa455df598810c1a29a205e6498da1f | |
parent | eb0df088caaea172a468ca9c34d42c59fd99b99d [diff] |
Fix race condition in cleanup of old frame records. VideoEncoderWrapper may be released and reused (Release() followed by InitEncode()). This often happens back to back when encoders are reconfigured. Because encoded frames are posted asynchronously to the encoder queue, they may be processed after the encoder associated with them has already been released. In the existing code, if a frame for the new encoder had already been received, the processing of the frame for the old encoder would clear out the record for the new encoder's frame. This is now fixed by only clearing out records that are older than the encoded frame being processed. A particularly bad symptom is when the new encoder is used for the same stream as the old one (but was reconfigured for e.g. a change in resolution). In that case, the new encoder's initial keyframe gets dropped, and all subsequent difference frames are based off the last sent frame from the old encoder. This all renders as garbage until a new keyframe is sent. Bug: webrtc:8849 Change-Id: I25094f12b38e03e158dc10ac66e92aa9ebaa5541 Reviewed-on: https://webrtc-review.googlesource.com/47549 Commit-Queue: Jonathan Yu <yujo@chromium.org> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> Cr-Commit-Position: refs/heads/master@{#21896}
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.
See http://www.webrtc.org/native-code/development for instructions on how to get started developing with the native code.
Authoritative list of directories that contain the native API header files.