Commit Graph

3633 Commits

Author SHA1 Message Date
e90636adc2 Codec instantiation tests for testing device capabilities in batch.
Change-Id: I465fb165bec9d6501015ec57d13fb556c4cb532b
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/58643
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22284}
2018-03-05 10:01:02 +00:00
6375ef7dfb Enable VideoProcessorIntegrationTest on devices.
These tests cannot run on simulators but should be enabled on real device
bots in order to catch regressions or crashes in the iOS codecs.

Bug: webrtc:8950
Change-Id: I8e877aa4368683073fdb4586cd6f4add4a1284ad
Reviewed-on: https://webrtc-review.googlesource.com/59040
Commit-Queue: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22283}
2018-03-05 09:52:32 +00:00
4d3644979c Add stub draft of audio generator to APM
This provides the empty shell of an AudioGenerator class.
It is intended to be used for debugging purposes and can be inserted
into the APM much like an AecDump. It allows for playing out diagnostic
audio unaffected by codecs and network jitter, while still capturing
API interaction like in a normal call.

NOTRY=True

Bug: webrtc:8882
Change-Id: I8132afc95cdba02ab233f44e22e0a5f530710ef7
Reviewed-on: https://webrtc-review.googlesource.com/53300
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22282}
2018-03-05 09:28:52 +00:00
3f693b9e75 Delete unused method SetPeriodicKeyFrames.
Keyframe interval is configurable in codec settings, with no need for
a setter method to toggle it on or off.

Bug: webrtc:8830
Change-Id: Ic20d8829884ed22588f8f8c0cceddd76144a9858
Reviewed-on: https://webrtc-review.googlesource.com/56040
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22280}
2018-03-05 08:54:32 +00:00
13e743419d Merge SimulcastStream and SpatialLayer structures.
Both simulcast stream and spatial layer can be described with the same
set of parameters. There is no need in two separate definitions.

1. Original definition of SpatialLayer is removed.
2. SimulcastStream is renamed to SpatialLayer.
3. SimulcastStream is equated to SpatialLayer using typedef.

Bug: webrtc:8518
Change-Id: I90761952b032a1b71fc4bba11f74a6daaf58880a
Reviewed-on: https://webrtc-review.googlesource.com/57102
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22272}
2018-03-02 16:30:19 +00:00
9039969de2 Call vpx_codec_destroy() only if vpx_codec_init() call preceded.
This fixes the issue when Init() with correct codec settings fails
because preceding Init() was called with wrong settings.

Bug: webrtc:8969
Change-Id: I50e618af6266ef593942fda27839c7c01e8717ae
Reviewed-on: https://webrtc-review.googlesource.com/59382
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22271}
2018-03-02 15:43:29 +00:00
ede748f14e Adding waits to SendSideCongestionController tests.
Small changes to the unit tests for send side congestion controller.
Mostly adding some extra waits and expectation verifications. This
prepares for an upcoming CL.

Bug: webrtc:8415
Change-Id: Id3086a485eda99732d01192cac9a91141158ab45
Reviewed-on: https://webrtc-review.googlesource.com/59223
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22270}
2018-03-02 14:08:29 +00:00
3e871ea047 Single exit point in VPx wrapper Release().
This fixes potential memory leak caused by early exit in Release() methods.

Bug: webrtc:8967
Change-Id: I932ec4a451d30b3145a6133a9562e73248a8c203
Reviewed-on: https://webrtc-review.googlesource.com/59380
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22268}
2018-03-02 13:19:49 +00:00
459f4e38b2 VP9 GoF/temporal index check.
Bug: webrtc:8960
Change-Id: Ia0de8659903a64932861061af569f3fc1222fd23
Reviewed-on: https://webrtc-review.googlesource.com/59180
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22264}
2018-03-02 11:03:09 +00:00
6d30631f01 Bug Fix: Multiplex Codec Crash
This CL adds a lock to stashed_images_ in MultiplexEncoderAdapter.
Without lock, it is possible that different threads acts on
stashed_images_ simultaneously and leads to crash.

Bug: webrtc:8965
Change-Id: I887861092d185c3bd6047eb529d8c1cf57fa4648
Reviewed-on: https://webrtc-review.googlesource.com/59260
Reviewed-by: Emircan Uysaler <emircan@webrtc.org>
Commit-Queue: Qiang Chen <qiangchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#22261}
2018-03-02 00:14:48 +00:00
a796a7ee85 Reland "Replaced temporal_layer_thresholds_bps[] field with num_temporal_layers."
This reverts commit e27e0aca9411b6990fcdf56d8a3475569ee5fd2f.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Revert "Replaced temporal_layer_thresholds_bps[] field with num_temporal_layers."
> 
> This reverts commit d2ed0a4c9e7f04060d8e3358eb0006c31579bb86.
> 
> Reason for revert: Breaks downstream projects.
> 
> Original change's description:
> > Replaced temporal_layer_thresholds_bps[] field with num_temporal_layers.
> > 
> > temporal_layer_thresholds_bps served only one purpose: its size was used
> > to infer number of temporal layers. I replaced it with num_temporal_layers,
> > which does what is says.
> > 
> > The practical reason for this change is the need to have possibility to
> > distinguish between cases when VP9 SVC temporal layering was/not set
> > through field trial. That was not possible with
> > temporal_layer_thresholds_bps[] because empty vector means 1 temporal
> > layer.
> > 
> > Bug: webrtc:8518
> > Change-Id: I275ec3a8c74e8ba409eb049878199f132a20ec51
> > Reviewed-on: https://webrtc-review.googlesource.com/58084
> > Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> > Reviewed-by: Erik Språng <sprang@webrtc.org>
> > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#22230}
> 
> TBR=sprang@webrtc.org,stefan@webrtc.org,ssilkin@webrtc.org
> 
> Change-Id: Ic2940f7f78a74312170940d51ad8967cde8ad42f
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:8518
> Reviewed-on: https://webrtc-review.googlesource.com/58902
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Commit-Queue: Philip Eliasson <philipel@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22234}

TBR=sprang@webrtc.org,stefan@webrtc.org,philipel@webrtc.org,ssilkin@webrtc.org

Change-Id: I1900c6b845b9baa9430fb72c3f4e7f2a44b3a8b1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8518
Reviewed-on: https://webrtc-review.googlesource.com/59160
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22256}
2018-03-01 18:07:29 +00:00
45087cd23f Moved retransmission rate limiter to Call class.
Ownership of the retransmission rate limiter for video is moved
from send side congestion controller to Call. This is to reduce the
interface on the rtp transport controller send.

Bug: webrtc:8415
Change-Id: Ie9c7317400a9eb61a3c8325b9e527844ffc13769
Reviewed-on: https://webrtc-review.googlesource.com/58745
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22254}
2018-03-01 17:22:28 +00:00
0f9d9a9a12 Removed unused DeRegisterNetworkObserver.
DeRegisterNetworkObserver is not used, since
RtpTransportControllerSend owns the thread on which
SendSideCongestionController runs it would not be safe to allow it to be
called from outside. Deregistration should be done by destroying
RtpTransportControllerSend.

In the future, the RegisterObserver functions should be removed as well,
in favor of providing the observer in the constructor. This requires
breaking a circular dependency between RtpTransportControllerSend and
Call.

Bug: webrtc:8415
Change-Id: Ifeb4c5d4a41e4d8419994b3146980bdaaf9cd6a9
Reviewed-on: https://webrtc-review.googlesource.com/58098
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22249}
2018-03-01 12:52:28 +00:00
f4e99dba41 Update AEC3 echo tail estimation.
Note: estimation is turned OFF if config_.ep_strength.default_len
is set >= 0 (in this case config_.ep_strength.default_len defines a
constant echo decay factor), and hence turned ON if < 0. In case the
echo tail estimation is turned ON, -config_.ep_strength.default_len is
the starting point for the estimator.

The estimation is done in two passes; first we go through all "sections"
(corresponding to chunks of length kFftLengthBy2) of the filter impulse
response to determine which sections correspond to a "stable" decay",
and then the second pass we go through each stable decay section and
estimate the decay. The actual decay estimation is based on linear
regression of the log magnitude of the squared impulse response.
A bunch of sanity checks are also performed continuously to avoid
estimation error during e.g., filter adaptation.

Bug: webrtc:8924
Change-Id: I686ce3f3e8b6b472348f8d6e01fb44c31e25145d
Reviewed-on: https://webrtc-review.googlesource.com/48440
Commit-Queue: Christian Schuldt <cschuldt@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22247}
2018-03-01 11:21:12 +00:00
e88b04fab1 Making MockMixerAudioSource default to NiceMock.
This eliminates a lot of warnings when running AudioMixer unittests.

Bug: None
Change-Id: I978e859e8904bb382843a9c23a35ace1884aa4b4
Reviewed-on: https://webrtc-review.googlesource.com/58981
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22245}
2018-03-01 10:29:32 +00:00
fc7ec8e9f8 Reland "Moved congestion controller to goog_cc folder."
This is a reland of e6cefdf9c572cdce55ff0497ad6e516c76132ee8.

Original change's description:
> Moved congestion controller to goog_cc folder.
> 
> Bug: webrtc:8415
> Change-Id: I2070da0cacf1dbfc4b6a89285af3e68fd03497ab
> Reviewed-on: https://webrtc-review.googlesource.com/43841
> Commit-Queue: Sebastian Jansson <srte@webrtc.org>
> Reviewed-by: Björn Terelius <terelius@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21928}

Bug: webrtc:8415
Change-Id: Ib5cf8641466655d64ac80f720561817f4cab49a9
Reviewed-on: https://webrtc-review.googlesource.com/53062
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22244}
2018-03-01 10:16:12 +00:00
8acd5f8334 Moved network_control out from rtp specific folder.
The functionality in network_control is by design not rtp specific and
should live outside the rtp directory in congestion_controller.

Bug: webrtc:8415
Change-Id: I68778f1a630c8e93950040bc56ee864c201b5990
Reviewed-on: https://webrtc-review.googlesource.com/55383
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22240}
2018-03-01 08:53:04 +00:00
5f7a891257 Minor improvements to TestConfig and VideoProcessor.
* Do not simulate freeze in decoded output file when frames have been dropped.
* Add more DCHECKs and consts.
* Remove unused members |num_encoded_frames_| and |num_decoded_frames_|.
* Move SdpVideoFormat conversion to TestConfig.

Bug: webrtc:8448
Change-Id: Ia879141f36dc23427cd1abcaa66716656fbaac2a
Reviewed-on: https://webrtc-review.googlesource.com/56802
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22239}
2018-03-01 08:42:43 +00:00
98e0111ea5 Implementing interface with new SSCC
Makes the new task queue based congestion controller implement the
SendSideCongestionControllerInterface.

Bug: webrtc:8415
Change-Id: I3dfe11c2eb200bc8d85c83edf78d7fdd0129bbff
Reviewed-on: https://webrtc-review.googlesource.com/56781
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22235}
2018-02-28 17:30:29 +00:00
e27e0aca94 Revert "Replaced temporal_layer_thresholds_bps[] field with num_temporal_layers."
This reverts commit d2ed0a4c9e7f04060d8e3358eb0006c31579bb86.

Reason for revert: Breaks downstream projects.

Original change's description:
> Replaced temporal_layer_thresholds_bps[] field with num_temporal_layers.
> 
> temporal_layer_thresholds_bps served only one purpose: its size was used
> to infer number of temporal layers. I replaced it with num_temporal_layers,
> which does what is says.
> 
> The practical reason for this change is the need to have possibility to
> distinguish between cases when VP9 SVC temporal layering was/not set
> through field trial. That was not possible with
> temporal_layer_thresholds_bps[] because empty vector means 1 temporal
> layer.
> 
> Bug: webrtc:8518
> Change-Id: I275ec3a8c74e8ba409eb049878199f132a20ec51
> Reviewed-on: https://webrtc-review.googlesource.com/58084
> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22230}

TBR=sprang@webrtc.org,stefan@webrtc.org,ssilkin@webrtc.org

Change-Id: Ic2940f7f78a74312170940d51ad8967cde8ad42f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8518
Reviewed-on: https://webrtc-review.googlesource.com/58902
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22234}
2018-02-28 16:01:32 +00:00
d2ed0a4c9e Replaced temporal_layer_thresholds_bps[] field with num_temporal_layers.
temporal_layer_thresholds_bps served only one purpose: its size was used
to infer number of temporal layers. I replaced it with num_temporal_layers,
which does what is says.

The practical reason for this change is the need to have possibility to
distinguish between cases when VP9 SVC temporal layering was/not set
through field trial. That was not possible with
temporal_layer_thresholds_bps[] because empty vector means 1 temporal
layer.

Bug: webrtc:8518
Change-Id: I275ec3a8c74e8ba409eb049878199f132a20ec51
Reviewed-on: https://webrtc-review.googlesource.com/58084
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22230}
2018-02-28 14:46:03 +00:00
56da2f7868 Added unit tests for new congestion controller.
This CL activates unit tests for the task queue based send side
congestion controller that will replace the current one in the future.

To be able to have the tests run side by side with the tests of the old
congestion controller, the old tests have been prefixed with "Legacy".

This CL also contains some minor fixes to the new congestion controller
code.

Bug: webrtc:8415
Change-Id: I5e7474d42f17fcbfef402e26f638846fa3424695
Reviewed-on: https://webrtc-review.googlesource.com/55381
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22229}
2018-02-28 14:03:48 +00:00
8447e91429 Add a hysteresis for the API call skew detection to better handle jittery platforms
Bug: webrtc:8954,chromium:817313
Change-Id: I940d52ac96e5bddf886d47be089a1991ae24b51b
Reviewed-on: https://webrtc-review.googlesource.com/58640
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22228}
2018-02-28 14:02:43 +00:00
3c24ea8340 Removed SetTransportOverhead in transport controller.
SetTransportOverhead was used by send streams to signal the packet
overhead that they received from Call. However, call receives the value
from OnNetworkRouteChanged in WebRtcVideoChannel and
WebRtcVoiceMediaChannel which is already propagated to
RtpTransportControllerSend. By skipping the round trip, the interface on
the rtp transport controller can be reduced.

Bug: None
Change-Id: I759b1207aab214bbc2b993106f6ff7cc24e177f7
Reviewed-on: https://webrtc-review.googlesource.com/57182
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22226}
2018-02-28 12:36:16 +00:00
0a9f6de446 Removed VCMTiming from RtpVideoStreamReceiver.
Bug: webrtc:8909
Change-Id: Ib42e4cc4c2252f04ea5f7d440352546d36d2899f
Reviewed-on: https://webrtc-review.googlesource.com/58740
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22224}
2018-02-28 11:31:51 +00:00
7eef00719b Fix typo in FrameBuffer
Bug: none
Change-Id: Ifc9a531da9460b7cac4aa71fb468c0881a663e94
Reviewed-on: https://webrtc-review.googlesource.com/58641
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22223}
2018-02-28 11:29:30 +00:00
556270c4d9 Remove FourPeople_1280x720_30.yuv from resources for mobile builds.
Uploading of the file to device causes timeouts. I removed it from
resources for iOS and Android builds and disabled the test that used
the file since we don't really need to run it on test bots.

Bug: webrtc:8936
Change-Id: Ia5e04c4630544eca8e56826c9e89c9c9f4dcb600
Reviewed-on: https://webrtc-review.googlesource.com/58090
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22222}
2018-02-28 09:55:20 +00:00
83b184210f Added namespace to new congestion controller.
This makes it easier to have the new and the old send side congestion
controller side by side. This namespace is only temporary. As soon the
new task queue based congestion controller is fully functional, the old
will be deprecated and removed together with the temporary namespace.

Bug: webrtc:8415
Change-Id: Ie817511345c91cab2ebca68f038075875c7e6529
Reviewed-on: https://webrtc-review.googlesource.com/56720
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22221}
2018-02-28 09:52:43 +00:00
e5d8c5778b Added limit to elapsed time in paced sender.
Added sanity checks to interval budget to protect against integer
overflow. To avoid tests failing due to initializing paced sender
in another time domain, the elapsed time that is input into the
interval budget is limited to max 2 seconds.

Bug: webrtc:8942
Change-Id: I9ed32f059e65df7898c37bb34a008189ce79dc60
Reviewed-on: https://webrtc-review.googlesource.com/58087
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22220}
2018-02-28 09:40:00 +00:00
b6a7fc0f03 Make rtcp::TransportFeedback copyable.
Bug: webrtc:8111
Change-Id: I2a71eb7ab5a913427adfab6f71703850a48fbd03
Reviewed-on: https://webrtc-review.googlesource.com/57181
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22218}
2018-02-28 08:06:20 +00:00
6bcd7f6618 Adding task queue based congestion controller.
To be able to safely move over to the new code, the revised
code is added alongside the old code. Most of the files added
in this CL are more or less direct copies of the previous code.

This new version of send side congestion controller will be
activated under a field trial in a followup CL.

Bug: webrtc:8415
Change-Id: I034e583cf891a8f6357119739a1517cc0a4abe88
Reviewed-on: https://webrtc-review.googlesource.com/53322
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22212}
2018-02-27 18:15:59 +00:00
1631dc6118 Make isac_fix_test correctly parse --isolated-script-test-perf-output.
The flag is passed as --isolated-script-test-perf-output=/b/whatever
on the bots, but this code expected a blank space instead of =.

Bug: webrtc:8932
Change-Id: I9ca48c9b285e365ac23a04ea2e89d9a8e75f5540
Reviewed-on: https://webrtc-review.googlesource.com/58088
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22211}
2018-02-27 16:33:39 +00:00
8c4fe16e4c Make Frame buffer not drop frames unnecessary
Now VCMTiming::MaxWaitingTime will not clip negative values. Thus frame
buffer will be able to distinguish between late frames and when waiting
cycle was simply interrupted by a new inserted frame right before the
waiting timer would expire.

Bug: webrtc:8917
Change-Id: I6b253f459fcb3a346064a103cc92ee332b074e1b
Reviewed-on: https://webrtc-review.googlesource.com/57741
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22210}
2018-02-27 16:31:29 +00:00
99a2c5dcb6 New test binary for the AudioMixer.
Allows mixing up to 4 input streams. Useful for profiling and manual
tests. Allows testing different combinations of input/output rates and
number of channels. Reads and writes WAV files. Can also configure
whether to use the Limiter component of the AudioMixer.

Bug: webrtc:8925
Change-Id: Iaf4fee5284980f6ed01f4bb721e49bb1af8dd392
Reviewed-on: https://webrtc-review.googlesource.com/56842
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22209}
2018-02-27 16:12:59 +00:00
507e8d1f71 Reland of "Choose between APM-AGC-Limiter and Apm-AGC2-fixed-gain_controller."
The webrtc::AudioMixer uses a limiter component. This CL allows
changes the APM-AGC limiter to the APM-AGC2 limiter though a Chrome
field trial.

The AGC2 limiter has a float interface. We plan to eventually switch
to the AGC2 limiter. Therefore, we will now mix in de-interleaved
floats. Float mixing will happen both when using the old limiter and
when using the new one.

After this CL the mixer will support two limiters. The limiters have
different interfaces and need different processing steps. Because of
that, we make (rather big) changes to the control flow in
FrameCombiner. For a short while, we will mix in deinterleaved floats
when using any limiter.

Originally landed in https://webrtc-review.googlesource.com/c/src/+/56141/

Reverted in https://webrtc-review.googlesource.com/c/src/+/57940
because of both breaking compilation and having a severe error. The
error is fixed and a test is added. The compilation issue is fixed.

Bug: webrtc:8925
Change-Id: Ieba138dee9652c826459fe637ae2dccbbc06bcf0
Reviewed-on: https://webrtc-review.googlesource.com/58085
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22207}
2018-02-27 15:47:39 +00:00
0efa941d2f Move EchoCanceller3Factory to api/auido
The AEC3 factory is now part of the WebRTC API.

Bug: webrtc:8844
Change-Id: If6f419b4ca0354e2d346c0e6474086e456ba747e
Reviewed-on: https://webrtc-review.googlesource.com/57141
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22204}
2018-02-27 14:09:59 +00:00
d8243fa6b3 Adding reporting and logging for events of call API skew shifts
Bug: webrtc:8887
Change-Id: I8a73afcd85815f4167ab47bd625f264747c06f8e
Reviewed-on: https://webrtc-review.googlesource.com/53066
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22193}
2018-02-26 23:57:23 +00:00
72eeaa3fe4 Revert "Choose between APM-AGC-Limiter and Apm-AGC2-fixed-gain_controller."
This reverts commit bd7b461f16b53363e2c510893d8d3aade5737f3a.

Reason for revert: Broke the internal project. The issue maybe related to the apm_debug_dump configuration.

Original change's description:
> Choose between APM-AGC-Limiter and Apm-AGC2-fixed-gain_controller.
> 
> The webrtc::AudioMixer uses a limiter component. This CL changes the
> APM-AGC limiter to the APM-AGC2 limiter though a Chrome field trial.
> 
> The new limiter has a float interface. Since we're moving to it, we
> now mix in floats as well. After this CL the mixer will support two
> limiters. The limiters have different interfaces and need different
> processing steps. Because of that, we make (rather big) changes to the
> control flow in FrameCombiner. For a short while, we will mix in
> deinterleaved floats when using any limiter.
> 
> NOTRY=true
> 
> Bug: webrtc:8925
> Change-Id: Ie296c2b0d94f3f0078811a2a58f6fbf0f3e6e4a8
> Reviewed-on: https://webrtc-review.googlesource.com/56141
> Commit-Queue: Alex Loiko <aleloi@webrtc.org>
> Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22185}

TBR=gustaf@webrtc.org,aleloi@webrtc.org

Change-Id: I3dd1a2b1fca32c4dd046e6fc325744079e3ac5ca
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8925
Reviewed-on: https://webrtc-review.googlesource.com/57940
Reviewed-by: Zhi Huang <zhihuang@webrtc.org>
Commit-Queue: Zhi Huang <zhihuang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22189}
2018-02-26 21:03:44 +00:00
9e24cb344a Add move constructors and assignment operators to RtpPacketReceived and RtpPacketToSend. Since both are non-POD now, move would fall back to copy without these.
Bug: webrtc:8935
Change-Id: I270e7daf68aa00411ad5ae00da739292600043f2
Reviewed-on: https://webrtc-review.googlesource.com/57621
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Dino Radaković <dinor@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22186}
2018-02-26 13:25:50 +00:00
bd7b461f16 Choose between APM-AGC-Limiter and Apm-AGC2-fixed-gain_controller.
The webrtc::AudioMixer uses a limiter component. This CL changes the
APM-AGC limiter to the APM-AGC2 limiter though a Chrome field trial.

The new limiter has a float interface. Since we're moving to it, we
now mix in floats as well. After this CL the mixer will support two
limiters. The limiters have different interfaces and need different
processing steps. Because of that, we make (rather big) changes to the
control flow in FrameCombiner. For a short while, we will mix in
deinterleaved floats when using any limiter.

NOTRY=true

Bug: webrtc:8925
Change-Id: Ie296c2b0d94f3f0078811a2a58f6fbf0f3e6e4a8
Reviewed-on: https://webrtc-review.googlesource.com/56141
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22185}
2018-02-26 12:40:00 +00:00
8b84365c81 NetEq: Guarding against reading outside of memory
In rare and pathological circumstances, it could happen that the input
length to the merge function is very short. This CL will avoid one of
the problems with out-of-bounds read that could result from this.

Bug: chromium:799499
Change-Id: I6bde105ae88f9d130764b6dfb3d25443d07e214b
Reviewed-on: https://webrtc-review.googlesource.com/57582
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22180}
2018-02-26 09:30:00 +00:00
88f6decad7 Multiplex Codec Bug Fix: Padding Needed For H264
This CL fixes the bug that we must have some padding for H264 codec
when used in Multiplex encoder/decoder, otherwise H264 decoder will
crash.

And this CL fixes a bug that potential infinite loop exists in
MultiplexEncoderAdapter

Bug: webrtc:8921
Change-Id: I4124579c31ee69f72e29d118378aa1f8b3f05eb4
Reviewed-on: https://webrtc-review.googlesource.com/56960
Commit-Queue: Qiang Chen <qiangchen@chromium.org>
Reviewed-by: Emircan Uysaler <emircan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22175}
2018-02-23 18:15:46 +00:00
1807d57ab8 Add application_data field(s) to RtpPacketToSend and PacketOptions.
Pass pointer to application_data from RtpPacketToSend arriving via RtpSender::SendToNetwork through to Transport::SendRtp, in PacketOptions.

Bug: webrtc:8906
Change-Id: Ie75013ed472710f4efcfbcc160e46a6119a1f41d
Reviewed-on: https://webrtc-review.googlesource.com/55600
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Dino Radaković <dinor@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22174}
2018-02-23 17:20:46 +00:00
f35c6667d6 Separate build targets for aec3 and aec3_unittests
Bug: webrtc:8844
Change-Id: Id6a98eae19aaedc87c3f402a004f58f0290d5c28
Reviewed-on: https://webrtc-review.googlesource.com/56580
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22173}
2018-02-23 13:16:16 +00:00
225c787c6e Move default thresholds from QualityScaler to encoders.
Overriding implementations of VideoEncoder::GetScalingSettings that
want to enable quality scaling must now provide the thresholds.

Bug: webrtc:8830
Change-Id: I75c47cb56ac1b9cf77401684980b3167e485f51c
Reviewed-on: https://webrtc-review.googlesource.com/46622
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22172}
2018-02-23 13:12:36 +00:00
fbf3bce431 Reland "Reduce locking in VideoReceiver and check the threading model."
This is a reland of c75f1e45093a8d5cc62937c7708b87aa5c5bf0b0.

Original change's description:
> Reduce locking in VideoReceiver and check the threading model.
>
> Note: This is a subset of code that was previously reviewed here:
>   - https://codereview.webrtc.org/2764573002/
>
> * Added two notification methods, DecoderThreadStarting() and DecoderThreadStopped()
>   * Allows us to establish a period when the decoder thread is not running and it is
>     safe to modify variables such as callbacks, that are only read when the decoder
>     thread is running.
>   * Allows us to DCHECK thread guarantees/correctness.
>   * Allows synchronizing callbacks from the module process thread and have them only
>     active while the decoder thread is running.
>   * The above, allows us to establish two modes for the thread,
>     single-threaded-mutable and multi-threaded-const.
>   * Using that knowledge, we can remove |receive_crit_| as well as locking for a
>     number of member variables.
> * Removed |VCMFrameBuffer _frameFromFile| (unused).
> * Clean up several of my TODOs
>
> Bug: webrtc:7361, chromium:695438
> Change-Id: Id0048ee9624f76103c088d02825eb5c0d6c8913c
> Reviewed-on: https://webrtc-review.googlesource.com/55000
> Commit-Queue: Tommi <tommi@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22133}

Bug: webrtc:7361, chromium:695438
Change-Id: I32e1dc6c62cb30ad96e6366106f39fe415de49f1
Tbr: philipel@webrtc.org
Reviewed-on: https://webrtc-review.googlesource.com/56803
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22163}
2018-02-22 18:03:45 +00:00
ef9daee934 Using mock transport controller in audio unit tests.
Using a mock of rtp transport controller send in audio send stream unit
tests. This reduces the dependencies and makes the tests more focused
on testing the functionality of audio send stream itself.

Bug: webrtc:8415
Change-Id: Ia8d9cf47d93decc74b10ca75a6771f39df658dc2
Reviewed-on: https://webrtc-review.googlesource.com/56600
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22161}
2018-02-22 17:32:25 +00:00
89c79383e4 Delete assumption TimeMicrosToNtp can match RealTimeClock
Flakiness of the test reveals this assumption doesn't hold and shouldn't be rely on.
Currently there is no code that use it. Plans to rely on it silently adjusted.

Bug: webrtc:8610
Change-Id: Id24f2a36c8fb188b518f5301c4b278836885d140
Reviewed-on: https://webrtc-review.googlesource.com/56860
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22160}
2018-02-22 17:20:25 +00:00
6ce03592c6 Adding missing ASM dependencies.
Bug: webrtc:8603
Change-Id: I7b417759fcdd01879029afcc5afc50300016fd72
Reviewed-on: https://webrtc-review.googlesource.com/56840
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22159}
2018-02-22 16:58:38 +00:00
e7c891f953 Renamed FrameObject to EncodedFrame.
The plan is to:
 1. Move FrameObject to api/video.
 2. Rename FrameObject to EncodedFrame.
 3. Move EncodedFrame out of the video_coding namespace.

This is the 2nd CL.

Bug: webrtc:8909
Change-Id: I5e76a0a3b306156b8bc1de67834b4adf14bebef9
Reviewed-on: https://webrtc-review.googlesource.com/56182
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22158}
2018-02-22 16:12:48 +00:00