This change introduces a new class BufferedFrameDecryptor that is responsible
for decrypting received encrypted frames and passing them on to the
RtpReferenceFinder. This decoupling refactoring was triggered by a new
optimization also introduced in this patch to stash a small number of
undecryptable frames if no frames have ever been decrypted. The goal of this
optimization is to prevent re-fectching of key frames on low bandwidth networks
simply because the key to decrypt them had not arrived yet.
The optimization will stash 24 frames (about 1 second of video) in a ring buffer
and will attempt to re-decrypt previously received frames on the first valid
decryption. This allows the decoder to receive the key frame without having
to request due to short key delivery latencies. In testing this is actually hit
quite often and saves an entire RTT which can be up to 200ms on a bad network.
As the scope of frame encryption increases in WebRTC and has more specialized
optimizations that do not apply to the general flow it makes sense to move it
to a more explicit bump in the stack protocol that is decoupled from the WebRTC
main flow, similar to how SRTP is utilized with srtp_protect and srtp_unprotect.
One advantage of this approach is the BufferedFrameDecryptor isn't even
constructed if FrameEncryption is not in use.
I have decided against merging the RtpReferenceFinder and EncryptedFrame stash
because it introduced a lot of complexity around the mixed scenario where some
of the frames in the stash are encrypted and others are not. In this case we
would need to mark certain frames as decrypted which appeared to introduce more
complexity than this simple decoupling.
Bug: webrtc:10022
Change-Id: Iab74f7b7d25ef1cdd15c4a76b5daae1cfa24932c
Reviewed-on: https://webrtc-review.googlesource.com/c/112221
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25865}
This reverts commit a4dcb749fbbc83a874d4e2c65de5a98465d3e200.
Reason for revert: Speculative revert. Tsan failure has been consistently generated after this CL.
Original change's description:
> Fix output period in RtcEventLogImpl
>
> RtcEventLogImpl::StartLogging() was ignoring one of its parameters.
> This CL fixes the issue.
>
> Bug: webrtc:10082
> Change-Id: Ie1790c1a7299748dabe99909d967384ad9895635
> Reviewed-on: https://webrtc-review.googlesource.com/c/112586
> Reviewed-by: Björn Terelius <terelius@webrtc.org>
> Commit-Queue: Elad Alon <eladalon@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25858}
TBR=eladalon@webrtc.org,terelius@webrtc.org
Change-Id: I6b79c207d537ab6ca44bb418958854acebc886ac
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10082
Reviewed-on: https://webrtc-review.googlesource.com/c/112740
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25864}
This is a reland of c308bdfa451ee2ceac7096b6777fcbf756f4091a
Original change's description:
> Add transaction id to CandidatePairEvents.
>
> The transaction id is a randomly generated number used to link stun
> requests and responses (https://tools.ietf.org/html/rfc5389#section-6).
> Logging this will help us debug ICE network issues.
>
> Bug: webrtc:9972
> Change-Id: I93167cb119aad99156e8727b6e4eeeff5198f924
> Reviewed-on: https://webrtc-review.googlesource.com/c/109720
> Commit-Queue: Zach Stein <zstein@webrtc.org>
> Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
> Reviewed-by: Elad Alon <eladalon@webrtc.org>
> Reviewed-by: Björn Terelius <terelius@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25848}
TBR=terelius@webrtc.org,qingsi@webrtc.org
Bug: webrtc:9972
Change-Id: I32b55befddfcb8dc98babd0b64e756eaeb9fab09
Reviewed-on: https://webrtc-review.googlesource.com/c/112661
Reviewed-by: Zach Stein <zstein@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25862}
These two configs are in both RTConfiguration and IceConfig,
but ParseIceConfig() function does not move them.
Bug: webrtc:10079
Change-Id: I11cbedfeabaf77228a253c7bc5e2781b28b08642
Reviewed-on: https://webrtc-review.googlesource.com/c/112546
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25860}
RtcEventLogImpl::StartLogging() was ignoring one of its parameters.
This CL fixes the issue.
Bug: webrtc:10082
Change-Id: Ie1790c1a7299748dabe99909d967384ad9895635
Reviewed-on: https://webrtc-review.googlesource.com/c/112586
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25858}
This is the first step in moving the metadata and eventually replacing
VideoEncoderFactory::QueryVideoEncoder with VideoEncoder::GetEncoderInfo.
Bug: webrtc:10065
Change-Id: If925b895718e1b1225d2cf49bede1adb3ff281b8
Reviewed-on: https://webrtc-review.googlesource.com/c/112285
Commit-Queue: Mirta Dvornicic <mirtad@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25856}
Needed for coming cls to be able to use rtc_base/timeutils.h, which
shouldn't be included by api/ headers.
Bug: webrtc:9719
Change-Id: Ia36c0a9218ad505e1eb4f2d9c26d44d5673c2632
Reviewed-on: https://webrtc-review.googlesource.com/c/112580
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25855}
Conversion to kbps will fail if the estimate is lower than the deviation
estimate * 3, since that would produce a negative value.
Bug: webrtc:9718
Change-Id: I83b52acd476d90b1f22c9db9894fa26c9a3e8e17
Reviewed-on: https://webrtc-review.googlesource.com/c/112560
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25854}
By explicitly checking that the template argument is arithmetic, we
avoid exposing internal implementation details in the error message.
Bug: webrtc:9709
Change-Id: Ib1c4b46076af36fe0c4aead968487bb441d03b9a
Reviewed-on: https://webrtc-review.googlesource.com/c/112422
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25853}
This reverts commit c308bdfa451ee2ceac7096b6777fcbf756f4091a.
Reason for revert: The msan bot has been consistently failing since this commit. See eg https://ci.chromium.org/p/webrtc/builders/luci.webrtc.ci/Linux%20MSan/16989
Original change's description:
> Add transaction id to CandidatePairEvents.
>
> The transaction id is a randomly generated number used to link stun
> requests and responses (https://tools.ietf.org/html/rfc5389#section-6).
> Logging this will help us debug ICE network issues.
>
> Bug: webrtc:9972
> Change-Id: I93167cb119aad99156e8727b6e4eeeff5198f924
> Reviewed-on: https://webrtc-review.googlesource.com/c/109720
> Commit-Queue: Zach Stein <zstein@webrtc.org>
> Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
> Reviewed-by: Elad Alon <eladalon@webrtc.org>
> Reviewed-by: Björn Terelius <terelius@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25848}
TBR=eladalon@webrtc.org,terelius@webrtc.org,zstein@webrtc.org,qingsi@webrtc.org,jeroendb@webrtc.org
Change-Id: Ib3b0a845f2300f4fcba2061650e17522735f08b3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9972
Reviewed-on: https://webrtc-review.googlesource.com/c/112581
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25852}
With Retina monitor connected, OSX and Win10 work differently. OSX will
use logical pixel to cursor location and physical pixel to cursor image.
And Win10 will always use logical coordinate. So the processing in this
patchset should only be applied to OSX only.
Bug: chromium:909784
Change-Id: I038e7769d101fbc3efe08b4739204d523255b609
Reviewed-on: https://webrtc-review.googlesource.com/c/112523
Reviewed-by: Jamie Walch <jamiewalch@chromium.org>
Commit-Queue: Brave Yao <braveyao@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25850}
The transaction id is a randomly generated number used to link stun
requests and responses (https://tools.ietf.org/html/rfc5389#section-6).
Logging this will help us debug ICE network issues.
Bug: webrtc:9972
Change-Id: I93167cb119aad99156e8727b6e4eeeff5198f924
Reviewed-on: https://webrtc-review.googlesource.com/c/109720
Commit-Queue: Zach Stein <zstein@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25848}
This prepares for future refactoring of rate controller.
Bug: webrtc:9718
Change-Id: I425c8c547399bda98b4271a0d24a0bb7ee06bc13
Reviewed-on: https://webrtc-review.googlesource.com/c/112420
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25846}
This reverts commit ba2840ce4eba4adebe7c968adcf7689caedccfa9.
Reason for revert: Looks like this breaks all VP9 tests on the Chromium level, for Mac: https://ci.chromium.org/buildbot/chromium.webrtc/Mac%20Tester/85866
Search for TIMED OUT in for instance https://logs.chromium.org/logs/chromium/bb/chromium.webrtc/Mac_Tester/85866/+/recipes/steps/browser_tests/0/stdout (it times out because the video is frozen).
Original change's description:
> Various VP9 high fps fixes
>
> - Enable flexible mode in loopback tools and quality tests
> - Ensure duplicate references are not set by the sender in video header
> - Reset first active spatial layer on keyframe in encoder
> - Make vp9 encoder to not generate spatial references for first active
> layer with external reference control in svc flexible mode
>
> Bug: webrtc:10049
> Change-Id: If9ff576ea8a1a2fef6116b17b5b5adff08c5f8c6
> Reviewed-on: https://webrtc-review.googlesource.com/c/112080
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25795}
TBR=ilnik@webrtc.org,ssilkin@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:10049
Change-Id: Ie6a7daf6414337173fec38c5ff546d509951cba6
Reviewed-on: https://webrtc-review.googlesource.com/c/112400
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25842}
The UWP toolchain code appears to be broken with clang, so let's see
if we have better luck with MSVC.
Bug: webrtc:10050
Change-Id: If8d29e7a95a0780c310ccd665c99d7a3add1016a
Reviewed-on: https://webrtc-review.googlesource.com/c/112290
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25841}
Deleted from subclass video_coding::EncodedFrame. Also delete Length
and SetLength methods on the intermediate class
video_coding::VCMEncodedFrame.
Bug: webrtc:9378
Change-Id: I3c90b14735f622f50b2f403f79072e22fc025d11
Reviewed-on: https://webrtc-review.googlesource.com/c/112131
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25838}
These special bots will be monitored by Microsoft engineers.
Bug: webrtc:10050
Change-Id: I124789628a1f0bbe4ef1a2988261d2175da6387a
Reviewed-on: https://webrtc-review.googlesource.com/c/112082
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25835}
The method for looking up track ID by SSRC was never updated for
Unified Plan so it only looked at the first audio section and the
first video section.
This CL changes the method to look through all audio and video
media sections rather than just the first.
Bug: chromium:906988
Change-Id: Ie79e6162b2bd24b8ac9e983b5fa7360c96f030da
Reviewed-on: https://webrtc-review.googlesource.com/c/112223
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25833}
This includes a refactoring of jseptransport to store a refcounted
object instead of a std::unique_ptr to the cricket::DtlsTransport.
Bug: chromium:907849
Change-Id: Ib557ce72c2e6ce8af297c2b8deb7ec3a103d6d31
Reviewed-on: https://webrtc-review.googlesource.com/c/111920
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25831}
This is a follow-up to
https://webrtc-review.googlesource.com/c/src/+/106280.
This time the whole code base is covered.
Some files may have not been fixed though, whenever the IWYU tool
was breaking the build.
Bug: webrtc:8311
Change-Id: I2c31f552a87e887d33931d46e87b6208b1e483ef
Reviewed-on: https://webrtc-review.googlesource.com/c/111965
Commit-Queue: Yves Gerey <yvesg@google.com>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25830}
This is a reland of e598e6bff9528f77dc9f4fb3a5954ec5fb6790b0
The trouble with original CL was caused by improper timeouts. This was
fixed here: https://webrtc-review.googlesource.com/c/src/+/111383
Original change's description:
> Run robolectric tests for Android on several Android API versions
>
> Depends on https://bugs.chromium.org/p/chromium/issues/detail?id=901324
>
> Bug: webrtc:9955
> Change-Id: I5e3f4c05b8258b90728644846f425ee131fda8d4
> Reviewed-on: https://webrtc-review.googlesource.com/c/109160
> Reviewed-by: Artem Titarenko <artit@webrtc.org>
> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
> Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
> Commit-Queue: Artem Titarenko <artit@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25582}
Bug: webrtc:9955
Change-Id: Ic8a977daa9efb830544da0026c41da5ed2a056f2
Reviewed-on: https://webrtc-review.googlesource.com/c/111753
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@google.com>
Commit-Queue: Artem Titarenko <artit@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25827}
The ssrc for a given NetEq instance shouldn't change.
Bug: webrtc:7135
Change-Id: Iee0d4cd8bd5d917e819fa2ecf45a40e203c6d9c0
Reviewed-on: https://webrtc-review.googlesource.com/c/111661
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25825}
Only caller was the RtpFrameObject constructor, so it's
not needed in the interface.
To be able to delete downstream overrides, add a temporary
default implementation. Method will be completely deleted in part 2.
Bug: webrtc:9378
Change-Id: I9083b6284313b6ebce854c6f2cec4617953331d9
Reviewed-on: https://webrtc-review.googlesource.com/c/112128
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25822}
Stack traces usually get printed when an error occur and we want this
to be included in release versions.
Bug: None
Change-Id: I17fdbc58393f5b4d597b14e95240bdb04473b4ad
Reviewed-on: https://webrtc-review.googlesource.com/c/112133
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25821}
Ability to provide user defined predicate to disable particular
codec in particular circumstances was added. This could help
addressing mysterious crashes on specific Android devices.
Bug: webrtc:10029
Change-Id: I7ad81f4b1351aa68f036c0ee3b6d32fbf0f697ed
Reviewed-on: https://webrtc-review.googlesource.com/c/111781
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25820}
Correcting a mistake in the dominant nearend detection where
the meaning of the echo-to-nearend ratio was inversed.
Bug: webrtc:8671
Change-Id: I7f56369fad1784e256150c312b6b3dafcb9d0f71
Reviewed-on: https://webrtc-review.googlesource.com/c/112136
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25818}
In this CL the analysis of the impulse response that is done in the FilterAnalyzed class is changed in order to reduce its complexity. Instead of analyzing the whole impulse response in each Update call a smaller region is analyzed. That region is changed at each Update call which implies that several calls are needed in order to analyze the complete impulse response.
Bug: webrtc:10032,chromium:909007
Change-Id: Ic58be34ba18485311c63e0fed9b6e892f9cb864c
Reviewed-on: https://webrtc-review.googlesource.com/c/111602
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25817}