To correctly send media from Bob to Alice, when Alice is calling Bob
we have to add transceivers for Bob's media to Alice first, because
it is forbidden to add new media sections into answer in Unified Plan,
so Alice's offer have to contain media sections for Bob's media tracks.
Bug: webrtc:10138
Change-Id: I8a5f19aa5ed6051a981472d5c79493362365f587
Reviewed-on: https://webrtc-review.googlesource.com/c/124492
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Peter Slatala <psla@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26892}
This CL adds a temporary flag for specifying that the legacy AEC2 should
be used.
Bug: webrtc:10366
Change-Id: Ie3edaa1560cdc1282b62242beb67aa6fee7f2841
Reviewed-on: https://webrtc-review.googlesource.com/c/124980
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26891}
This involves inserting an extra layer between jsep_transport_controller
and the cricket::SctpTransportInternal layer. The objects at this layer
are reference counted.
Bug: chromium:818643
Change-Id: Ibed57c4a538de981cee63e0f7f1f319f029cab39
Reviewed-on: https://webrtc-review.googlesource.com/c/123884
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26889}
This replaces the use of command-line flags with the use of a config
struct. This makes it easier for non command-line applications to use
the NetEqTestFactory to run simulations.
Bug: webrtc:10337
Change-Id: I24533bf206e70e12db9af8d9675769c1ff7c7d48
Reviewed-on: https://webrtc-review.googlesource.com/c/123600
Reviewed-by: Pablo Barrera González <barrerap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26887}
Introduce test case name for proper metrics reporting across different
parts of framework.
Bug: webrtc:10138
Change-Id: I7c501413ca2f2ee40314d988855dec0c28381c47
Reviewed-on: https://webrtc-review.googlesource.com/c/124740
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26886}
If x-mt line is present (one or more), and the first line is dedicated
for the media transport that we support, pass the config down to this
media transport.
In the future we will do 3 changes:
1) Add MediaTransportFactory::IsSupported(config) to let the
implementation decide whether the current factory can support a given
setting
2) Add support for multiple x-mt lines. Right now the support is
minimal: we only look at the first line (because we only allow single
media transport factory). In the future, when RtpMediaTransport is
introduced, this may and will change.
3) Allow multiple MediaTransportFactories and add fallback to RTP if
media transport is not supported.
Current solution provides backward compatibility for the 2 above
extensions.
Bug: webrtc:9719
Change-Id: I82a469fecda57effc95d7d8191f4a9e4a01d199c
Reviewed-on: https://webrtc-review.googlesource.com/c/124800
Commit-Queue: Peter Slatala <psla@webrtc.org>
Reviewed-by: Bjorn Mellem <mellem@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26882}
This change adds a parser for the x-mt line to the WebRTC SDP, and adds a collection in the SessionDescription for media transport.
x-mt line contains information about media transport settings.
This is an experimental line.
This change will be followed up by two other changes:
* Setting the offer with x-mt
* Using the x-mt line to pass it to the media transport
Bug: webrtc:9719
Change-Id: I46568610d4092a69ada7b7c1d3987d698ddba0be
Reviewed-on: https://webrtc-review.googlesource.com/c/124601
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Bjorn Mellem <mellem@webrtc.org>
Commit-Queue: Peter Slatala <psla@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26881}
We want to avoid system clock dependencies in congestion
controllers as it makes it harder to test them. This CL removes
a rtc::TimeMillis() call from the AlrDetector class and removes
dependencies on rtc_base_approved as it exposes time_utils.h.
Bug: None
Change-Id: Ie50a27399c05a0c50cdc17ad142db884b94ee918
Reviewed-on: https://webrtc-review.googlesource.com/c/124491
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26879}
On api level two methods were added to api/media_stream_interface.cc on VideoSourceInterface,
GetLatency and SetLatency. Latency is measured in seconds, delay in milliseconds but both describes
the same concept.
Bug: webrtc:10287
Change-Id: Ib8dc62a4d73f63fab7e10b82c716096ee6199957
Reviewed-on: https://webrtc-review.googlesource.com/c/123482
Commit-Queue: Ruslan Burakov <kuddai@google.com>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26877}
One-byte RTP extensions may only have IDs in the range 1-14.
For higher IDs, the two-byte format must be used.
If default IDs are set for all extensions, once 15 extensions are
defined by the code, some extensions will have IDs greater than 14.
This will happen even if only one extension actually ends up being
offered, so long as it's that unfortunate RTP extension.
It's better to dynamically assign the IDs to those extensions we
actually offer. The code that assigns the IDs is currently
distributed ( WebRtcVoiceEngine::GetCapabilities() and
WebRtcVideoEngine::GetCapabilities()), and without a bigger
refactoring effort would produce some ID collisions and mismatches.
Those are already handled by MergeRtpHdrExts(), so so that
should not be a problem.
Bug: webrtc:10288
Change-Id: I087f1ed5baa9fd61fd5556f1d82f540304ec6b93
Reviewed-on: https://webrtc-review.googlesource.com/c/122480
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26876}
In encoded image data injectors use the last bytes of the payload,
instead of the first.
Rewriting first bytes of the video frames payload caused problems
as somewhere first are used to check if the frame is key-frame
and also to parse QP values.
Bug: webrtc:10138
Change-Id: I59b7313ee54a33b31f842ec28ef8d831fe24eea5
Reviewed-on: https://webrtc-review.googlesource.com/c/124490
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Peter Slatala <psla@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26875}
- This mode estimates relative packet arrival delay for each incoming packet and adds that value to the histogram.
- The histogram buckets are 20 milliseconds each instead of whole packets.
- The functionality is enabled with a field trial for experimentation.
Bug: webrtc:10333
Change-Id: I8f7499c56802fc1aa1ced2f5310fdd2ef1403515
Reviewed-on: https://webrtc-review.googlesource.com/c/123923
Commit-Queue: Jakob Ivarsson <jakobi@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26871}
Simulcast screenshare appears broken due to unrelated changes. It
implicitly relied on SimulcastEncoderAdapter fallback, which happened before
if streams had same resolution. It's not the case anymore. Thus, this CL
adds checks for different frame-rate in simulcast streams.
FullStackTests are also updated to use actual parameters.
Bug: none
Change-Id: I2c1ddb1b39edb96464a0915dfcb9cb4e18844187
Reviewed-on: https://webrtc-review.googlesource.com/c/124494
Reviewed-by: Mirta Dvornicic <mirtad@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26869}
Import proto_library.gni when rtc_enable_protobuf is true instead of when
build_with_mozilla is false.
Makes it maybe easier to reason about the intention (e.g. intention is to not
compile any protobuf in, hence flag rtc_enable_protobuf)
The build file could not work if build_with_mozilla = true but
rtc_enable_protobuf = true.
Bug: webrtc:10338
Change-Id: I26e5983bd1519aa46c308b11796d518de5ef7597
Reviewed-on: https://webrtc-review.googlesource.com/c/123763
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26868}
This change simply adds const to all the variables that can use it. It seemed
like a good idea to enforce const correctness where possible in the TLS stack.
Bug: webrtc:9860
Change-Id: Iabfe1e26647b0c21e2f209e0e0f96d0ec7465e7a
Reviewed-on: https://webrtc-review.googlesource.com/c/124623
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26865}
RtpSender uses a transactional model when getting and setting RtpParameters.
One must call GetParameters() and then can use the returned object in a
subsequent call to SetParameters().
PeerConnection was calling GetParameters() and SetParameters() during
negotiation in SetLocalDescription and SetRemoteDescription effectively
invalidating any parameters that the client previously held.
This change introduces an internal way for the platform to modify
parameters without invalidating the transactional model, provided that
the modification is not severe.
Ex. removing simulcast layers is a severe modification and will
invalidate any outstanding parameters.
Bug: webrtc:10339
Change-Id: I362e8ca4d9556e04a1aa7a3e74e2c275f8d16fbc
Reviewed-on: https://webrtc-review.googlesource.com/c/124504
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Amit Hilbuch <amithi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26864}
In order to enable ::Connect method, we also need to split the factory and create a method that creates media transport, but doesn't connect it.
So far media transport was connecting right away after creation. We would however want to expose some of the settings in SDP. SDP is created before connection is connected (and before ICE transport is created), and so we would like to be able to get the settings from the caller to the callee.
Bug: webrtc:9719
Change-Id: I1dc2f30c9a2dae8b3db04f14c8b334cd1b3ab5ab
Reviewed-on: https://webrtc-review.googlesource.com/c/124517
Reviewed-by: Bjorn Mellem <mellem@webrtc.org>
Commit-Queue: Peter Slatala <psla@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26863}
This CL takes a few parts of VCMEncodedFrameCallback and
VCMGenericEncoder and folds some aspect directly into
VideoStreamEncoder. Parts related to timing frames are extracted
into a new class FrameEncodeTimer that explicitly handles that.
Bug: webrtc:10164
Change-Id: I9b26f734473b659e4093c84c09fb0ed441290e40
Reviewed-on: https://webrtc-review.googlesource.com/c/124122
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26862}
In a previous refactor, the ALR probe timestamp update was moved
after a return statement by accident. This CL fixes this.
The impact of this bug is limited as there are several other criteria
that has to be fulfilled for sending ALR probes.
Bug: None
Change-Id: Ia85e6ff9d782c1c4722a3df7e01ed803cf86b11d
Reviewed-on: https://webrtc-review.googlesource.com/c/124489
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26861}
This patch adds a field trial for appending an extra
attribute which contains the remote ufrag for the permission.
The attribute is put into the comprehension-optional range
so that a TURN server should ignore it if it doesn't know if.
https://tools.ietf.org/html/rfc5389#section-18.2
Bug: webrtc:10350
Change-Id: I7d62ab94e947bddd670d8eb53d4ff89b1d1e275c
Reviewed-on: https://webrtc-review.googlesource.com/c/123901
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26859}
This CL makes it easy to invoke the tool for single cc files,
without having to install or configure anything.
It boils down to:
% tools_webrtc/clang_tidy.py path/to/file.cc [clang-tidy-args...]
If any issue is encountered, a colored diagnostic will be printed.
By default, it also includes checks from clang analyzer.
Warning! This is linux-only, and uses an old version of
clang-tidy based on LLVM 5.0. USE WITH CARE.
bug: webrtc:8793
Change-Id: I8964f2b939408326cc349c5f0ac0dfcff2da24c5
Reviewed-on: https://webrtc-review.googlesource.com/c/120221
Commit-Queue: Yves Gerey <yvesg@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26858}
This is a reland of
https://webrtc-review.googlesource.com/c/src/+/123920
Patch set 1 is identical to the previous CL, additional patch sets fix
the bug that was introduced and adds test coverage.
Since this "data base" only holds a single encoder instance it just
serves to confuse object ownership. Removing it and giving ownership
of generic encoder instance to VideoStreamEncoder.
This CL also removes VideoSender interface from video_coding_impl.h,
which is mostly a leftover from
https://webrtc-review.googlesource.com/c/src/+/123540
Bug: webrtc:10164
Change-Id: Ieaf23457d69af0d6356b70461112892b14760b19
Reviewed-on: https://webrtc-review.googlesource.com/c/124488
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26857}
The metrics of interest are the pacer rate, both normally and during a
queue drain, as well as padding rate.
Bug: None
Change-Id: I9c36219f63ce61b46f20d42678e0d97cb2a1873c
Reviewed-on: https://webrtc-review.googlesource.com/c/123195
Commit-Queue: Evan Shrubsole <eshr@google.com>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Konrad Hofbauer <hofbauer@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26855}
This CL introduces the possibility to poll the 2 peer connections
at constant intervals.
It also introduces a dummy AudioQualityAnalyzer that will have to
be implemented in a follow-up CL and it moves every type of the
test framework inside the webrtc::test namespace.
Bug: webrtc:10138
Change-Id: I40acf7894bd67ea5229baba2d2cf18cd8ef65e67
Reviewed-on: https://webrtc-review.googlesource.com/c/123441
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26854}
The Legacy ADM has remained to be available for testing. Now we are
ready to move on to using only the Java ADM.
Bug: webrtc:7452
Change-Id: Ic95b04b933e165f3c16b587a44384a2c965ef16c
Reviewed-on: https://webrtc-review.googlesource.com/c/123921
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Paulina Hensman <phensman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26852}
For binary size reasons; they emit too many instructions at each call
site.
I decided to not point out replacements for them, since rtc::join has
only one caller, and rtc::split isn't the only option for splitting
strings. And both of them have APIs that can cause the creation of
needless temporary strings.
Bug: none
Change-Id: I06161012836a90b09249c2813d2ddc15f167d580
Notry: true
Reviewed-on: https://webrtc-review.googlesource.com/c/124480
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26846}