Commit Graph

2568 Commits

Author SHA1 Message Date
5cbc528c03 Revert "Remove VCMEncoderDataBase and put remaining code into VideoStreamEncoder"
This reverts commit 715c4765b1ac20017e6e3b8b925d02536c6610c3.

Reason for revert: Breaks WebRTC roll to Chromium.
https://chromium-review.googlesource.com/c/chromium/src/+/1484629

# Fatal error in: ../../third_party/webrtc/modules/rtp_rtcp/source/rtp_sender.cc, line 796
# last system error: 0
# Check failed: diff_ms >= static_cast<int64_t>(0) (-307 vs. 0)
#

Original change's description:
> Remove VCMEncoderDataBase and put remaining code into VideoStreamEncoder
>
> 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: I9b7fec940dbcbccf3aa1278c2555da3bd5169ae1
> Reviewed-on: https://webrtc-review.googlesource.com/c/123920
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26835}

TBR=brandtr@webrtc.org,nisse@webrtc.org,sprang@webrtc.org

Change-Id: I5432878c4c2e497cd848c4ce1b190e0307df03ca
Bug: webrtc:10164
Reviewed-on: https://webrtc-review.googlesource.com/c/124402
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26841}
2019-02-25 16:31:15 +00:00
7d6a4c045c Connect LossNotificationController to RtpRtcp
* LossNotificationController is the class that decides when to issue
  LossNotification RTCP messages.
* RtpRtcp handles the technicalities of producing RTCP messages.

Bug: webrtc:10336
Change-Id: I292536257a984ca85d21d9cfa38e7ff2569cbb39
Reviewed-on: https://webrtc-review.googlesource.com/c/124123
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26840}
2019-02-25 16:08:35 +00:00
715c4765b1 Remove VCMEncoderDataBase and put remaining code into VideoStreamEncoder
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: I9b7fec940dbcbccf3aa1278c2555da3bd5169ae1
Reviewed-on: https://webrtc-review.googlesource.com/c/123920
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26835}
2019-02-25 11:03:51 +00:00
418dd0b96a Stop using special RTT value for DelayBasedBwe.
There are two RTT values reported to GoogCC. They come from the same
source initially but one is calculated and smoothed in the video call stats.
However, there's not really any technical reasons why this value should
be received via the stats, this has just been maintained for legacy reasons.

Experiments shows no real difference between the modes, therefore the
stats-reported RTT is removed in this CL as a cleanup.

Bug: None
Change-Id: If1462d6c91570ffb883ecef2ba034f04a571c9b5
Reviewed-on: https://webrtc-review.googlesource.com/c/123883
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26833}
2019-02-25 09:51:33 +00:00
76a74e6dc8 Delay bug during audio receiver stream recreation.
For e.g. when audio receiver is recreated during SetRtpExtensionsAndRecreateStream in webrtc_voice_engine.h,
the audio minimum delay can't go down.

Imagine we set base minimum playout delay when audio receiver stream is created, then its value will be cached, to be applied during recreation. Then SetRtpExtensionsAndRecreateStream is fired, and audio receiver stream is recreated with the cached value, but currently it in the constructor it is used to initialize both base minimum playout delay and minimum playout delay. Which leads to the bug that effective minimum playout delay can't go down anymore as if you set base minimum playout delay to the low value then effective delay use the biggest value which minimum playout delay.

This didn't come up during previous trials because of
https://webrtc-review.googlesource.com/c/src/+/122280
It was reseting minimum playout delay to 0 asynchronously, that is why you couldn't see this bug.


Bug: webrtc:10287
Change-Id: I924446bfcb33ac94f7e5bf987a1868acaf1b0346
Reviewed-on: https://webrtc-review.googlesource.com/c/124000
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Ruslan Burakov <kuddai@google.com>
Cr-Commit-Position: refs/heads/master@{#26832}
2019-02-25 09:23:56 +00:00
c4dd730765 Fix -Wextra-semi warnings.
Starting from https://chromium-review.googlesource.com/c/1485012,
-Wextra-semi is enabled and WebRTC has some violations to fix.

This is a follow-up of https://webrtc-review.googlesource.com/c/123560.

Bug: webrtc:10355
Change-Id: I012b7497fc8991037fd77aa98f1579c22e08206f
Reviewed-on: https://webrtc-review.googlesource.com/c/124126
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26831}
2019-02-25 09:22:51 +00:00
3812fa949a Delete VideoCodecTestParameterized.
The approach used in VideoCodecTestLibvpx_DISABLED_MultiresVP8RdPerf
is better.

Bug: webrtc:10349
Change-Id: I76f7f6d9e5ddcae0b3f7f39b871dd1d96dffe56a
Reviewed-on: https://webrtc-review.googlesource.com/c/123980
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26830}
2019-02-25 09:00:26 +00:00
19d0104abb Make RtpRtcp::Configuration::field_trials ptr const
Fix mistake from
https://webrtc-review.googlesource.com/c/src/+/123447

TBR=danilchap@webrtc.org

BUG: webrtc:10335
Change-Id: I5643812e95e25a65e14c9a27e48a4b1cb0287f7a
Reviewed-on: https://webrtc-review.googlesource.com/c/124125
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26829}
2019-02-24 20:08:33 +00:00
74f0a51f97 Move kFeedbackMessageType from Remb to Psfb
The FMT 15 is not specific only to REMB or loss notification messages.
Rather, it is the Application Layer FB (AFB) of Psfb (Payload Specific
Feedback Messages).
See https://tools.ietf.org/html/rfc4585#section-6.3

TBR=terelius@webrtc.org

Bug: webrtc:10336
Change-Id: I8cd27ef9ee044bf7b7e7c1bd1a53c1dae2d95006
Reviewed-on: https://webrtc-review.googlesource.com/c/123886
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26827}
2019-02-24 00:11:33 +00:00
7ef34f8505 Replace field trials with WebRtcKeyValueConfig in PacedSender
Replaces use of field trials in PacedSender with injectable WebRtcKeyValueConfig.
Implementation still defaults to field trials.

BUG: webrtc:10335
Change-Id: Ie8870d93d51e996e762f2c2de7545bad261b6bb7
Reviewed-on: https://webrtc-review.googlesource.com/c/123521
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26818}
2019-02-22 13:08:18 +00:00
b4643ad7ba Rename "OnReceivedFrame" to "OnAssembledFrame"
The new name fits better.

Bug: None
Change-Id: I1f201ff07915ed6c18efeefb7380e2b286742bb9
Reviewed-on: https://webrtc-review.googlesource.com/c/123800
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26814}
2019-02-22 10:49:07 +00:00
d7329ca570 Remove VideoSender and fold code into VideoStreamEncoder
This CL moves the functionality in VideoSender into VideoStreamEncoder
and simplifies the code where possible, given what we know of the
encoder state and that we now run on the encoder queue.

The intent here is to make it easier to remove the next parts, the
encoder database and generic encoder wrapper.

Bug: webrtc:10164
Change-Id: I8c108ccbe5db97cd9fd1e84228134709af845ea3
Reviewed-on: https://webrtc-review.googlesource.com/c/123540
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26813}
2019-02-22 10:29:46 +00:00
10874b2174 Create LossNotificationController
Create LossNotificationController, which produces LossNotification
RTCP feedback messages when video packets/frames are lost.

(LossNotification messages are sent when an RTP gap is detected,
as well as when frames are later received which are undecodable
because of the missing frames due to the previously dropped packets.)

Bug: webrtc:10336
Change-Id: I7b3a156ed14e5a727349acdd82dae6997462421b
Reviewed-on: https://webrtc-review.googlesource.com/c/123762
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26812}
2019-02-22 10:20:14 +00:00
d209cd1754 Lower SSIM thresholds.
VP9 SSIM slightly decreased with the latest libvpx.

Bug: webrtc:10348
Change-Id: I255e3b36751979c3226222caae7fca7bd837901e
Reviewed-on: https://webrtc-review.googlesource.com/c/123902
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26810}
2019-02-22 10:11:33 +00:00
65438812ba 2nd reland of https://webrtc-review.googlesource.com/c/src/+/114883
The difference to the original is new bitexactness strings.  The
reason for reland is breaking downstream projects.

Original CL description:

Tests for multi-stream Opus.

This CL (mainly) adds bit-exactness tests for multi-stream Opus. The
tests are in audio_coding_unittest.cc. Some refactoring of
AcmSendTestOldApi, AcmSenderBitExactnessOldApi is done to make it
possible. A few checks for "channels \in {1, 2}" are replaced with
"channels \in {1, 2, 4, 6, 8}" in the WebRTC Opus codec wrapper. A few
other changes are made to be able to write and read multi-channel WAV
files.

The SDP changes are NOT included; as of this CL there is no way to set
up a multi-stream opus en/de-coder from SDP strings.

TBR=ossu@webrtc.org

Bug: webrtc:8649
Change-Id: I6261b18c69fd666d43ab34ed8f1bc9d5cc82b21f
Reviewed-on: https://webrtc-review.googlesource.com/c/123882
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26809}
2019-02-22 09:59:01 +00:00
caa499b207 PFFFT C++ wrapper for APM
Pretty-Fast Fast Fourier Transform is a 3rd party FFT C library meant to
replace other FFT libraries in WebRTC (see https://crbug.com/webrtc/9577).

This CL adds a WebRTC wrapper meant to be used inside the Audio Processing
Module (APM). As a first step, it only supports aligned memory allocated
via PFFFT. Support for the C++ standard library containers will be done
afterwards since it requires careful investigation and benchmarking (because
PFFFT uses SIMD optimizations).

The wrapper pre-allocates a scratch buffer to avoid VLA.

Bug: webrtc:9577
Change-Id: Ied00c3d3b1df292024f608ccf0ed1917d6e92e56
Reviewed-on: https://webrtc-review.googlesource.com/c/122563
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Max Morin <maxmorin@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26808}
2019-02-22 09:20:29 +00:00
735f823347 CreateAudioProcessor: do not propagate an unset echo control factory to the AudioProcessing instance
In this CL we avoid the propagation of the echo control factory to the AudioProcessing instance when this is not set. That propagation was unnecessarily overriding the echo control factory that might have been already set on that AudioProcessing instance.

Change-Id: Ife8f479bc7a81c35ecf656e7d0ddfcc98981c74f
Bug: webrtc:10344
Reviewed-on: https://webrtc-review.googlesource.com/c/123765
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26802}
2019-02-21 18:31:36 +00:00
54047bea1b Reland "Extend TransportSequenceNumber RTP header extension"
This reverts commit 109b5fb5f5b2f46e1798c91c4a024ce26f57f0b0.

Reason for revert: The failing libfuzzer was fixed in commit d6c6f16063b81fc60206618ba06198e34ee0eacb

Original change's description:
> Revert "Extend TransportSequenceNumber RTP header extension"
> 
> This reverts commit 28c7362bc485d22bdc8c744bc725022780187a96.
> 
> Reason for revert: It breaks Linux64 Release (libfuzzer):
> https://logs.chromium.org/logs/webrtc/buildbucket/cr-buildbucket.appspot.com/8921003137877469920/+/steps/compile/0/stdout
> 
> Original change's description:
> > Extend TransportSequenceNumber RTP header extension
> > 
> > Extend TransportSequenceNumber RTP header extension to support
> > feedback on sender request.
> > 
> > Bug: webrtc:10262
> > Change-Id: Ibc1cf18162d15cd102e951c9dc697d8ea536ebb6
> > Reviewed-on: https://webrtc-review.googlesource.com/c/123233
> > Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> > Reviewed-by: Alex Loiko <aleloi@webrtc.org>
> > Commit-Queue: Johannes Kron <kron@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#26766}
> 
> TBR=danilchap@webrtc.org,aleloi@webrtc.org,kron@webrtc.org
> 
> Change-Id: Ie8a73f5fdffd99919ceaa1ae8911a1645f2077e9
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:10262
> Reviewed-on: https://webrtc-review.googlesource.com/c/123522
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26767}

TBR=danilchap@webrtc.org,mbonadei@webrtc.org,aleloi@webrtc.org,kron@webrtc.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: webrtc:10262
Change-Id: I0f854299a46c042cfbdf8b8cc8cd965a228142c8
Reviewed-on: https://webrtc-review.googlesource.com/c/123764
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26798}
2019-02-21 16:01:30 +00:00
1eb3d7ea0f Refactor DelayManager into separate Histogram class and make it injectable for testing purposes.
Change-Id: I98aa3f992169e598fc1a3dd850400183395fe1fe
Bug: webrtc:10333
Reviewed-on: https://webrtc-review.googlesource.com/c/123445
Commit-Queue: Jakob Ivarsson‎ <jakobi@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26797}
2019-02-21 15:45:31 +00:00
e11b7d2e80 Replace field trials with WebRtcKeyValueConfig in RtpRtcpModule
Replaces use of field trials in RtpSender and RtpVideoSender with injectable WebRtcKeyValueConfig.
Implementation still defaults to field trials.

BUG: webrtc:10335
Change-Id: I5fc6d327ee5d011ccc41385734b38344df172627
Reviewed-on: https://webrtc-review.googlesource.com/c/123447
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26795}
2019-02-21 14:25:34 +00:00
aa1a43e31f AEC3: Use minimum ERLE during onsets
This change disables the ERLE estimation of onsets and instead assumes
minimum ERLE. This reduces the risk of echo leaks during onsets. The
estimated ERLE was sometimes incorrect due to:
- Not enough data to train on.
- Platform noise suppression can change the echo-path.

Bug: chromium:119942,webrtc:10341
Change-Id: I1dd1c0f160489e76eb784f07e99af02f44f387ec
Reviewed-on: https://webrtc-review.googlesource.com/c/123782
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26794}
2019-02-21 14:18:44 +00:00
17c147cc84 Feed PacedSender with RTP packet size
This cl change RtpSender to feed the PacedSender with RTP packet size rather than payload size in experiment WebRTC-SendSideBwe-WithOverhead. Before this cl, the congestion controller was feed with packet size but not the pacer. That means that the pacer budget was updated with an estimate that includes the RTP headers, but the media budget only use the payloads.

BUG: webrtc:10325 webrtc:6762
Change-Id: I35c8350603a7881ea162debcd89ed901cbb50950
Reviewed-on: https://webrtc-review.googlesource.com/c/123444
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26788}
2019-02-21 07:18:26 +00:00
252725d986 Rename RtpPacketHistory::PacketState::payload_size -> packet_size
To reflect what this value actually contain.

BUG: webrtc:10325
Change-Id: Ic3c5efbd16157bfae1a2749df17051f105720997
Reviewed-on: https://webrtc-review.googlesource.com/c/123500
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26787}
2019-02-21 06:42:45 +00:00
22f9925b3e webrtc: Remove semicolons.
Bug: chromium:926235
Change-Id: I66c10ab3df38adf87152d1f18cc8162afedca7e4
Reviewed-on: https://webrtc-review.googlesource.com/c/123560
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26780}
2019-02-20 16:02:59 +00:00
af623ae7f8 Delete unused file mock_video_codec_interface.h
And corresponding build target.

Bug: None
Change-Id: Ic2915a316d2762367e089b6f8e16b502ea51a61a
Reviewed-on: https://webrtc-review.googlesource.com/c/123198
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26779}
2019-02-20 15:35:25 +00:00
d36a815d68 Remove the deprecated CreateProbeClusters method
Bug: None
Change-Id: Ifad8103d5a7c4e99ef7a29e2cec02885854d141c
Reviewed-on: https://webrtc-review.googlesource.com/c/123262
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Peter Slatala <psla@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26778}
2019-02-20 15:33:47 +00:00
8b3db59b6e Revert "Reland of https://webrtc-review.googlesource.com/c/src/+/114883"
This reverts commit 5341aaccdb64e3336abf5875e8828222446adffa.

Reason for revert: Order of initialization of global static strings.

Original change's description:
> Reland of https://webrtc-review.googlesource.com/c/src/+/114883
> 
> The difference to the original is new bitexactness strings AND
> global static file string constants. The reason for reland is breaking
> downstream projects.
> 
> Original CL description:
> 
> Tests for multi-stream Opus.
> 
> This CL (mainly) adds bit-exactness tests for multi-stream Opus. The
> tests are in audio_coding_unittest.cc. Some refactoring of
> AcmSendTestOldApi, AcmSenderBitExactnessOldApi is done to make it
> possible. A few checks for "channels \in {1, 2}" are replaced with
> "channels \in {1, 2, 4, 6, 8}" in the WebRTC Opus codec wrapper. A few
> other changes are made to be able to write and read multi-channel WAV
> files.
> 
> The SDP changes are NOT included; as of this CL there is no way to set
> up a multi-stream opus en/de-coder from SDP strings.
> 
> Bug: webrtc:8649
> Change-Id: I9fd47c790c241c1876c4a731b0840bec30b4f1b2
> Reviewed-on: https://webrtc-review.googlesource.com/c/123387
> Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
> Commit-Queue: Alex Loiko <aleloi@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26774}

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

Change-Id: I88060f2050ccee83d6091b042a10f79b3c4edc47
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8649
Reviewed-on: https://webrtc-review.googlesource.com/c/123580
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26777}
2019-02-20 15:17:49 +00:00
5341aaccdb Reland of https://webrtc-review.googlesource.com/c/src/+/114883
The difference to the original is new bitexactness strings AND
global static file string constants. The reason for reland is breaking
downstream projects.

Original CL description:

Tests for multi-stream Opus.

This CL (mainly) adds bit-exactness tests for multi-stream Opus. The
tests are in audio_coding_unittest.cc. Some refactoring of
AcmSendTestOldApi, AcmSenderBitExactnessOldApi is done to make it
possible. A few checks for "channels \in {1, 2}" are replaced with
"channels \in {1, 2, 4, 6, 8}" in the WebRTC Opus codec wrapper. A few
other changes are made to be able to write and read multi-channel WAV
files.

The SDP changes are NOT included; as of this CL there is no way to set
up a multi-stream opus en/de-coder from SDP strings.

Bug: webrtc:8649
Change-Id: I9fd47c790c241c1876c4a731b0840bec30b4f1b2
Reviewed-on: https://webrtc-review.googlesource.com/c/123387
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26774}
2019-02-20 14:57:01 +00:00
d5e02f0b92 Delete redundant members from VCMPacket.
The values are available as part of the RTPVideoHeader member.

Bug: None
Change-Id: I832fffc449929badec3796d7096c9cdc0d43d344
Reviewed-on: https://webrtc-review.googlesource.com/c/123234
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@{#26773}
2019-02-20 14:39:10 +00:00
b35baccd6f Fix NetEq minimum and maximum delay always reset on acm creation.
Bug: webrtc:10305
Change-Id: Iecc55c3b4bb8416e2fd0cf26532b43dcd70a7cca
Reviewed-on: https://webrtc-review.googlesource.com/c/122280
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Ruslan Burakov <kuddai@google.com>
Cr-Commit-Position: refs/heads/master@{#26771}
2019-02-20 14:04:51 +00:00
dd1cc982e4 Reland "Update VP9EncoderImpl to use EncodedImage::Allocate"
This is a reland of e12778cb3a7c35b4d3b9d25104841dccd67dc59b
Performance regressions should be addressed by
cl https://webrtc-review.googlesource.com/c/123442

Original change's description:
> Update VP9EncoderImpl to use EncodedImage::Allocate
>
> Bug: webrtc:9378
> Change-Id: I009138b4dc50c4ceb8f94fee6a958bbfa4d7e326
> Reviewed-on: https://webrtc-review.googlesource.com/c/121771
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26593}

Bug: webrtc:9378
Change-Id: I37a28574741fd50d03a80a01a8f9fe7596e31d6f
Reviewed-on: https://webrtc-review.googlesource.com/c/123484
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26768}
2019-02-20 13:19:17 +00:00
109b5fb5f5 Revert "Extend TransportSequenceNumber RTP header extension"
This reverts commit 28c7362bc485d22bdc8c744bc725022780187a96.

Reason for revert: It breaks Linux64 Release (libfuzzer):
https://logs.chromium.org/logs/webrtc/buildbucket/cr-buildbucket.appspot.com/8921003137877469920/+/steps/compile/0/stdout

Original change's description:
> Extend TransportSequenceNumber RTP header extension
> 
> Extend TransportSequenceNumber RTP header extension to support
> feedback on sender request.
> 
> Bug: webrtc:10262
> Change-Id: Ibc1cf18162d15cd102e951c9dc697d8ea536ebb6
> Reviewed-on: https://webrtc-review.googlesource.com/c/123233
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Reviewed-by: Alex Loiko <aleloi@webrtc.org>
> Commit-Queue: Johannes Kron <kron@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26766}

TBR=danilchap@webrtc.org,aleloi@webrtc.org,kron@webrtc.org

Change-Id: Ie8a73f5fdffd99919ceaa1ae8911a1645f2077e9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10262
Reviewed-on: https://webrtc-review.googlesource.com/c/123522
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26767}
2019-02-20 13:11:54 +00:00
28c7362bc4 Extend TransportSequenceNumber RTP header extension
Extend TransportSequenceNumber RTP header extension to support
feedback on sender request.

Bug: webrtc:10262
Change-Id: Ibc1cf18162d15cd102e951c9dc697d8ea536ebb6
Reviewed-on: https://webrtc-review.googlesource.com/c/123233
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26766}
2019-02-20 12:23:45 +00:00
3f6bf3a4ab Clarify that pacing rate is based on raw target rate
Change-Id: Ib9cc068c88f45536ea5d9d0a84fab9da8f963131
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/c/123050
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26765}
2019-02-20 10:59:29 +00:00
ccb9b759c5 Create version 01 of Generic Frame Descriptor - with discardability flag
The discardability flag denotes whether the frame may be dropped by
the decoder with no effect on the decodability of subsequent frames.

Bug: webrtc:10214
Change-Id: I3654951d8863b50effe9670b8d1d7eb051240039
Reviewed-on: https://webrtc-review.googlesource.com/c/122241
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26763}
2019-02-20 10:31:58 +00:00
e82643fb9c Fix FFT output size to avoid incorrect band energy computation
The FFT output buffers sizes in SpectralFeaturesExtractor have been reduced
from N to N/2+1, where N is the audio frame size. This is required since
ComputeBandEnergies() currently calls ComputeBandCoefficients() indicating
a higher value for max_freq_bin_index, hence polluting the higher bands with
unwanted energy (coming from the symmetric conjugate copy of the Fourier
coefficients).

Bug: webrtc:10332
Change-Id: Ie080050c4f357fa95e256cf2a6bf572222e8ca44
Reviewed-on: https://webrtc-review.googlesource.com/c/123239
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Pablo Barrera González <barrerap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26761}
2019-02-20 09:08:49 +00:00
4e7058e621 desktopCaptuer: exempt to overlapping between hidden taskbar and maximized target
On Windows 10, the hidden taskbar won't be totally hidden, but having a
2 pixel margin on the screen. While a maximized app window will use up
the full screen, there will be overlapping between a hidden taskbar and
a maximized app window, which will impact window capture to that
maximized window. If the target window doesn't support GDI methods well,
the capture may be black (i.e. Chrome) or still (i.e. Word).

Because there is no solid way to identify a hidden taskbar window, we
have to make an exemption to the overlapping to a maximized window is
2-pixel X screen-width/height, which is thin enough to be noticed in
the cropping result.

Bug: chromium:838062
Change-Id: I9e0fbdf43b4445ca9fbbf5ed43bb266ae726a5b8
Reviewed-on: https://webrtc-review.googlesource.com/c/123261
Commit-Queue: Brave Yao <braveyao@webrtc.org>
Reviewed-by: Jamie Walch <jamiewalch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#26755}
2019-02-19 21:03:10 +00:00
7abfd5678c Improve CPU utilization when encoding VP8 with two temporal layers
This CL is analogous to CL #120904.

Bug: webrtc:10314
Change-Id: Ia885a2614236f634bea934e94cfc5cc719e36792
Reviewed-on: https://webrtc-review.googlesource.com/c/122841
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Mirta Dvornicic <mirtad@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26753}
2019-02-19 15:05:31 +00:00
599d59237a Extend RemoteEstimatorProxy to support feedback on sender request.
Bug: webrtc:10263
Change-Id: I85b992eff7d1e7ed66ead4745f346ddad2977e8e
Reviewed-on: https://webrtc-review.googlesource.com/c/120800
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26752}
2019-02-19 13:56:44 +00:00
d8d3248d95 Reland "Delete test/constants.h"
This reverts commit 4f36b7a478c2763463c7a9ea970548ec68bc3ea6.

Reason for revert: Failing tests fixed.

Original change's description:
> Revert "Delete test/constants.h"
>
> This reverts commit 389b1672a32f2dd49af6c6ed40e8ddf394b986de.
>
> Reason for revert: Causes failure (and empty result list) in CallPerfTest.PadsToMinTransmitBitrate
>
> Original change's description:
> > Delete test/constants.h
> >
> > It's not possible to use constants.h for all RTP extensions
> > after the number of extensions exceeds 14, which is the maximum
> > number of one-byte RTP extensions. This is because some extensions
> > would have to be assigned a number greater than 14, even if the
> > test only involves 14 extensions or less.
> >
> > For uniformity's sake, this CL also edits some files to use an
> > enum as the files involved in this CL, rather than free-floating
> > const-ints.
> >
> > Bug: webrtc:10288
> > Change-Id: Ib5e58ad72c4d3756f4c4f6521f140ec59617f3f5
> > Reviewed-on: https://webrtc-review.googlesource.com/c/123048
> > Commit-Queue: Elad Alon <eladalon@webrtc.org>
> > Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> > Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> > Reviewed-by: Erik Språng <sprang@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#26728}
>
> TBR=danilchap@webrtc.org,kwiberg@webrtc.org,eladalon@webrtc.org,sprang@webrtc.org
>
> Bug: webrtc:10288, chromium:933127
> Change-Id: If1de0bd8992137c52bf0b877b3cb0a2bafc809d4
> Reviewed-on: https://webrtc-review.googlesource.com/c/123381
> Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
> Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26744}

TBR=danilchap@webrtc.org,oprypin@webrtc.org,kwiberg@webrtc.org,eladalon@webrtc.org,sprang@webrtc.org

Change-Id: I65e391325d3a6df6db3c0739185e2002e70fb954
Bug: webrtc:10288, chromium:933127
Reviewed-on: https://webrtc-review.googlesource.com/c/123384
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26750}
2019-02-19 08:51:20 +00:00
1925b5a1d3 Delete deprecated version of AudioCodingModule::IncomingPacket
Followup to https://webrtc-review.googlesource.com/c/123188

Bug: webrtc:5876
Change-Id: Ia1cf7ebafddeb4fe2caece644739fbc2b55e4d66
Reviewed-on: https://webrtc-review.googlesource.com/c/123238
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26749}
2019-02-19 08:46:40 +00:00
ffd1f93a8d Revert "Tests for multi-stream Opus."
This reverts commit 9c31ac23231a3494a794b3ba0a6b018969eaa7aa.

Reason for revert: Breaks downstream project.

Original change's description:
> Tests for multi-stream Opus.
> 
> This CL (mainly) adds bit-exactness tests for multi-stream Opus. The
> tests are in audio_coding_unittest.cc. Some refactoring of
> AcmSendTestOldApi, AcmSenderBitExactnessOldApi is done to make it
> possible. A few checks for "channels \in {1, 2}" are replaced with
> "channels \in {1, 2, 4, 6, 8}" in the WebRTC Opus codec wrapper. A few
> other changes are made to be able to write and read multi-channel WAV
> files.
> 
> The SDP changes are NOT included; as of this CL there is no way to set
> up a multi-stream opus en/de-coder from SDP strings.
> 
> Bug: webrtc:8649
> Change-Id: I1d93a9b8eecc3f6e19896ff2e2ce9b63da77a23c
> Reviewed-on: https://webrtc-review.googlesource.com/c/114883
> Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
> Commit-Queue: Alex Loiko <aleloi@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26742}

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

Change-Id: I0ac48b7320d31d3e7af33bf8714c3db6c807b82e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8649
Reviewed-on: https://webrtc-review.googlesource.com/c/123385
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26747}
2019-02-18 23:10:05 +00:00
4f36b7a478 Revert "Delete test/constants.h"
This reverts commit 389b1672a32f2dd49af6c6ed40e8ddf394b986de.

Reason for revert: Causes failure (and empty result list) in CallPerfTest.PadsToMinTransmitBitrate

Original change's description:
> Delete test/constants.h
>
> It's not possible to use constants.h for all RTP extensions
> after the number of extensions exceeds 14, which is the maximum
> number of one-byte RTP extensions. This is because some extensions
> would have to be assigned a number greater than 14, even if the
> test only involves 14 extensions or less.
>
> For uniformity's sake, this CL also edits some files to use an
> enum as the files involved in this CL, rather than free-floating
> const-ints.
>
> Bug: webrtc:10288
> Change-Id: Ib5e58ad72c4d3756f4c4f6521f140ec59617f3f5
> Reviewed-on: https://webrtc-review.googlesource.com/c/123048
> Commit-Queue: Elad Alon <eladalon@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26728}

TBR=danilchap@webrtc.org,kwiberg@webrtc.org,eladalon@webrtc.org,sprang@webrtc.org

No-Presubmit: True
Bug: webrtc:10288, chromium:933127
Change-Id: If1de0bd8992137c52bf0b877b3cb0a2bafc809d4
Reviewed-on: https://webrtc-review.googlesource.com/c/123381
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26744}
2019-02-18 18:09:22 +00:00
9c31ac2323 Tests for multi-stream Opus.
This CL (mainly) adds bit-exactness tests for multi-stream Opus. The
tests are in audio_coding_unittest.cc. Some refactoring of
AcmSendTestOldApi, AcmSenderBitExactnessOldApi is done to make it
possible. A few checks for "channels \in {1, 2}" are replaced with
"channels \in {1, 2, 4, 6, 8}" in the WebRTC Opus codec wrapper. A few
other changes are made to be able to write and read multi-channel WAV
files.

The SDP changes are NOT included; as of this CL there is no way to set
up a multi-stream opus en/de-coder from SDP strings.

Bug: webrtc:8649
Change-Id: I1d93a9b8eecc3f6e19896ff2e2ce9b63da77a23c
Reviewed-on: https://webrtc-review.googlesource.com/c/114883
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26742}
2019-02-18 17:09:59 +00:00
71aee3a116 Reland "Propagate VideoFrame::UpdateRect to encoder"
Reland with fixes for failing chromium tests.

Propagate VideoFrame::UpdateRect to encoder

Accumulate it in all places where frames can be dropped before they reach the encoder.

Reset UpdateRect in VideoBroadcaster if frame the previous frame is dropped.
No accumulation is done here since it's supposed to be a brief occasion then configuration have changed.

Original Reviewed-on: https://webrtc-review.googlesource.com/c/123102

Bug: webrtc:10310
Change-Id: I18be73f47f227d6392bf9cb220b549ced225714f
Reviewed-on: https://webrtc-review.googlesource.com/c/123230
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26738}
2019-02-18 13:44:14 +00:00
bf47495979 Update remaining audio test code to not use WebRtcRTPHeader.
Bug: webrtc:5876
Change-Id: I5b1abcec4a0ef52b6dd36d1fe94dbfd3f88f28a7
Reviewed-on: https://webrtc-review.googlesource.com/c/123235
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26736}
2019-02-18 13:29:35 +00:00
a0b1fb9ac7 Pass H264 profile/level settings to codec.
Bug: none
Change-Id: I0587a3d7c12a779a968b8c392c3dfa91b4ad040a
Reviewed-on: https://webrtc-review.googlesource.com/c/123180
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26735}
2019-02-18 13:06:35 +00:00
6e1402b25f Skip SSIM calculation in real time mode.
SSIM calculation is not optimized. It takes ~100ms to process 720p frame
on Galaxy S8.

Bug: none
Change-Id: I51cc26d81124f06b2dfb27814edf2e4ae58141ce
Reviewed-on: https://webrtc-review.googlesource.com/c/121762
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26730}
2019-02-18 08:49:47 +00:00
afb5dbbf4e Update ACM to use RTPHeader instead of WebRtcRTPHeader
Bug: webrtc:5876
Change-Id: Id3311dcf508cca34495349197eeac2edf8783772
Reviewed-on: https://webrtc-review.googlesource.com/c/123188
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26729}
2019-02-18 08:01:31 +00:00
389b1672a3 Delete test/constants.h
It's not possible to use constants.h for all RTP extensions
after the number of extensions exceeds 14, which is the maximum
number of one-byte RTP extensions. This is because some extensions
would have to be assigned a number greater than 14, even if the
test only involves 14 extensions or less.

For uniformity's sake, this CL also edits some files to use an
enum as the files involved in this CL, rather than free-floating
const-ints.

Bug: webrtc:10288
Change-Id: Ib5e58ad72c4d3756f4c4f6521f140ec59617f3f5
Reviewed-on: https://webrtc-review.googlesource.com/c/123048
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26728}
2019-02-17 21:47:41 +00:00