1357 Commits

Author SHA1 Message Date
Steve Anton
10542f21c8 (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries
Mechanically generated by running this command:

tools_webrtc/do-renames.sh update all-renames.txt && git cl format

Then manually updating:

tools_webrtc/sanitizers/tsan_suppressions_webrtc.cc

Bug: webrtc:10159
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: I54824cd91dada8fc3ee3d098f971bc319d477833
Reviewed-on: https://webrtc-review.googlesource.com/c/115653
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26226}
2019-01-11 17:11:39 +00:00
Stefan Holmer
1f7a008261 Enable quality-scaling in all video perf tests.
Bug: None
Change-Id: Idc8d4b3372dcabdc4b419f1cce3d02adc3c30128
Reviewed-on: https://webrtc-review.googlesource.com/c/116983
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26221}
2019-01-11 15:39:17 +00:00
Niels Möller
4687915495 Enable use of MediaTransportInterface for video streams.
Bug: webrtc:9719
Change-Id: I8c6027b4b15ed641e42fd210b3ea87d121508a69
Reviewed-on: https://webrtc-review.googlesource.com/c/111751
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Peter Slatala <psla@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26219}
2019-01-11 14:06:15 +00:00
Niels Möller
6bb5ab9740 Reland "Refactor and remove media_optimization::MediaOptimization."
This reverts commit 6613f8e98ab3654ade7e8f5352d8d6711b157499.

Reason for revert: This change seemed innocent after all, so undoing speculative revert.

Original change's description:
> Revert "Refactor and remove media_optimization::MediaOptimization."
> 
> This reverts commit 07276e4f89a93b1479d7aeefa53b4fc32daf001b.
> 
> Reason for revert: Speculative revert due to downstream crashes.
> 
> Original change's description:
> > Refactor and remove media_optimization::MediaOptimization.
> > 
> > This CL removes MediaOptmization and folds some of its functionality
> > into VideoStreamEncoder.
> > 
> > The FPS tracking is now handled by a RateStatistics instance. Frame
> > dropping is still handled by FrameDropper. Both of these now live
> > directly in VideoStreamEncoder.
> > There is no intended change in behavior from this CL, but due to a new
> > way of measuring frame rate, some minor perf changes can be expected.
> > 
> > A small change in behavior is that OnBitrateUpdated is now called
> > directly rather than on the next frame. Since both encoding frame and
> > setting rate allocations happen on the encoder worker thread, there's
> > really no reason to cache bitrates and wait until the next frame.
> > An edge case though is that if a new bitrate is set before the first
> > frame, we must remember that bitrate and then apply it after the video
> > bitrate allocator has been first created.
> > 
> > In addition to existing unit tests, manual tests have been used to
> > confirm that frame dropping works as expected with misbehaving encoders.
> > 
> > Bug: webrtc:10164
> > Change-Id: I7ee9c8d3c4f2bcf23c8c420310b05a4d35d94744
> > Reviewed-on: https://webrtc-review.googlesource.com/c/115620
> > Commit-Queue: Erik Språng <sprang@webrtc.org>
> > Reviewed-by: Niels Moller <nisse@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#26147}
> 
> TBR=nisse@webrtc.org,sprang@webrtc.org
> 
> # Not skipping CQ checks because original CL landed > 1 day ago.
> 
> Bug: webrtc:10164
> Change-Id: Ie0dae19dd012bc09e793c9661a45823fd760c20c
> Reviewed-on: https://webrtc-review.googlesource.com/c/116780
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26191}

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

Change-Id: Ieda1fad301de002460bb0bf5a75267ea065176a8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10164
Reviewed-on: https://webrtc-review.googlesource.com/c/116960
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26213}
2019-01-11 10:46:33 +00:00
Niels Möller
9c843906ca Delete VCMEncodedFrame methods Buffer and MutableBuffer
Replaced by inherited method EncodedImage::data().

Bug: webrtc:9378
Change-Id: I4ec75148f578c72ffb407f9cbf6b4232cc9cfcf6
Reviewed-on: https://webrtc-review.googlesource.com/c/116962
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26212}
2019-01-11 10:10:12 +00:00
Sergey Silkin
1daa7e8729 Use RTP timestamp when checking for frame duplication.
Value of render timestamp can be the same for consecutive frames (e.g.
when old frames got decoded and need to be rendered immediately). It
should not be used for frame duplication checking.

Bug: b/122636276
Change-Id: Ie00bdd3fa50a2eacd48cba228fa3c54a6b206864
Reviewed-on: https://webrtc-review.googlesource.com/c/116790
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26210}
2019-01-11 08:52:13 +00:00
Benjamin Wright
e9bece37ae Minor change to the Json Config format for the replay file.
See: test/fuzzers/configs/replay_packet_fuzzer for example configurations.

Bug: webrtc:10117
Change-Id: Ife2bf7d053bc4feb4d7e6e38ff31280236c962b6
Reviewed-on: https://webrtc-review.googlesource.com/c/116764
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26204}
2019-01-10 18:38:08 +00:00
Stefan Holmer
b344640771 Enable quality scaling in video_loopback.
Bug: None
Change-Id: Ie6e7472f8b407b7da0f111cddec35bbbe66e31df
Reviewed-on: https://webrtc-review.googlesource.com/c/116791
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26198}
2019-01-10 15:02:03 +00:00
Oskar Sundbom
8984cd61ca Revert "Add a high bitrate full stack test with fake codec"
This reverts commit 15df2774f4e85cf8900768c1793edcf17d651dcd.

Reason for revert: It's causing the Android perf bots to fail. E.g.: https://ci.chromium.org/buildbot/client.webrtc.perf/Android32%20Tests%20%28L%20Nexus4%29/6666

Original change's description:
> Add a high bitrate full stack test with fake codec
> 
> This CL adds a fake codec factory  in WebRTC that can be used in tests to
> produce target bitrate output.
> 
> We also add a high bitrate test that makes use of fake codec. This test assumes
> ideal network conditions with target bandwidth being available and exercises
> WebRTC calls with a high target bitrate(100 Mbps) end-to-end.
> 
> Bug: chromium:879723
> Change-Id: I981124e2087054ed72c5447e239f28aae0878e29
> Reviewed-on: https://webrtc-review.googlesource.com/c/97185
> Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Johannes Kron <kron@webrtc.org>
> Reviewed-by: Sebastian Jansson <srte@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26182}

TBR=sprang@webrtc.org,stefan@webrtc.org,srte@webrtc.org,emircan@webrtc.org,kron@webrtc.org

Change-Id: I33cd01ce345d81d66543f9be99750fa100760b5c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:879723
Reviewed-on: https://webrtc-review.googlesource.com/c/116785
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Commit-Queue: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26192}
2019-01-10 11:49:05 +00:00
Niels Möller
6613f8e98a Revert "Refactor and remove media_optimization::MediaOptimization."
This reverts commit 07276e4f89a93b1479d7aeefa53b4fc32daf001b.

Reason for revert: Speculative revert due to downstream crashes.

Original change's description:
> Refactor and remove media_optimization::MediaOptimization.
> 
> This CL removes MediaOptmization and folds some of its functionality
> into VideoStreamEncoder.
> 
> The FPS tracking is now handled by a RateStatistics instance. Frame
> dropping is still handled by FrameDropper. Both of these now live
> directly in VideoStreamEncoder.
> There is no intended change in behavior from this CL, but due to a new
> way of measuring frame rate, some minor perf changes can be expected.
> 
> A small change in behavior is that OnBitrateUpdated is now called
> directly rather than on the next frame. Since both encoding frame and
> setting rate allocations happen on the encoder worker thread, there's
> really no reason to cache bitrates and wait until the next frame.
> An edge case though is that if a new bitrate is set before the first
> frame, we must remember that bitrate and then apply it after the video
> bitrate allocator has been first created.
> 
> In addition to existing unit tests, manual tests have been used to
> confirm that frame dropping works as expected with misbehaving encoders.
> 
> Bug: webrtc:10164
> Change-Id: I7ee9c8d3c4f2bcf23c8c420310b05a4d35d94744
> Reviewed-on: https://webrtc-review.googlesource.com/c/115620
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26147}

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

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

Bug: webrtc:10164
Change-Id: Ie0dae19dd012bc09e793c9661a45823fd760c20c
Reviewed-on: https://webrtc-review.googlesource.com/c/116780
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26191}
2019-01-10 11:39:24 +00:00
Emircan Uysaler
15df2774f4 Add a high bitrate full stack test with fake codec
This CL adds a fake codec factory  in WebRTC that can be used in tests to
produce target bitrate output.

We also add a high bitrate test that makes use of fake codec. This test assumes
ideal network conditions with target bandwidth being available and exercises
WebRTC calls with a high target bitrate(100 Mbps) end-to-end.

Bug: chromium:879723
Change-Id: I981124e2087054ed72c5447e239f28aae0878e29
Reviewed-on: https://webrtc-review.googlesource.com/c/97185
Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26182}
2019-01-09 23:49:03 +00:00
Sergey Silkin
278f82516f Calculate video quality metrics only for rendered frames.
Bug: webrtc:10158
Change-Id: I90ff5a3509cdaa2cd0e2e652f639a388f3e7276e
Reviewed-on: https://webrtc-review.googlesource.com/c/115415
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26178}
2019-01-09 14:38:44 +00:00
Erik Språng
c12d41b747 Add field trial kill switch for packetization overhead subtraction.
Just in case.
Also slightly update picture id test to make it more clear.
This is a follow-up to
https://webrtc-review.googlesource.com/c/src/+/115410

Bug: webrtc:10155
Change-Id: I9a0239e474b79fe545738860983e1931e8b82eff
Reviewed-on: https://webrtc-review.googlesource.com/c/116661
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26173}
2019-01-09 10:19:22 +00:00
Steve Anton
40d55331d7 Include absl/memory/memory.h if absl::make_unique is used
Tbr: kwiberg@webrtc.org
Bug: None
Change-Id: Iaf4533d2ce0e80b351a8a664ef8cf7ba0e5ec583
Reviewed-on: https://webrtc-review.googlesource.com/c/115746
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Yves Gerey <yvesg@google.com>
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26168}
2019-01-08 20:08:32 +00:00
Oskar Sundbom
8bacf255d2 Disable FullStackTest/ScreenshareSlidesVP8_3TL_Simulcast on Windows
It's started flaking.

Bug: webrtc:9840
Change-Id: Icc62c4715703f7e4d4f44ea11caf2f59351488d7
Reviewed-on: https://webrtc-review.googlesource.com/c/116520
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26166}
2019-01-08 17:24:28 +00:00
Erik Språng
482b3ef2ac Account for packetization overhead when setting target bitrate.
That is, the payload packetization overhead (eg. vp8 payload header),
not the RTP headers, extensions, etc.
The encoder and pacer both look at payload rate, but are currently not
aware of the bytes that are added in between them.

Bug: webrtc:10155
Change-Id: I4cdb04849d762360374d47a496983c8c6df191d2
Reviewed-on: https://webrtc-review.googlesource.com/c/115410
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26163}
2019-01-08 16:12:58 +00:00
Minyue Li
455d27c49a Adding audio network adaptor to video quality test.
Bug: b/122445011
Change-Id: I2f652f972e500fa700b65d89cb044f98bcfb1eed
Reviewed-on: https://webrtc-review.googlesource.com/c/116282
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26158}
2019-01-08 14:49:50 +00:00
Erik Språng
07276e4f89 Refactor and remove media_optimization::MediaOptimization.
This CL removes MediaOptmization and folds some of its functionality
into VideoStreamEncoder.

The FPS tracking is now handled by a RateStatistics instance. Frame
dropping is still handled by FrameDropper. Both of these now live
directly in VideoStreamEncoder.
There is no intended change in behavior from this CL, but due to a new
way of measuring frame rate, some minor perf changes can be expected.

A small change in behavior is that OnBitrateUpdated is now called
directly rather than on the next frame. Since both encoding frame and
setting rate allocations happen on the encoder worker thread, there's
really no reason to cache bitrates and wait until the next frame.
An edge case though is that if a new bitrate is set before the first
frame, we must remember that bitrate and then apply it after the video
bitrate allocator has been first created.

In addition to existing unit tests, manual tests have been used to
confirm that frame dropping works as expected with misbehaving encoders.

Bug: webrtc:10164
Change-Id: I7ee9c8d3c4f2bcf23c8c420310b05a4d35d94744
Reviewed-on: https://webrtc-review.googlesource.com/c/115620
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26147}
2019-01-07 14:58:23 +00:00
Artem Titov
1ebfb6aac7 Introduce VideoFrame::id to keep track of frames inside application.
Also switch webrtc code from deprecated constructors to the builder API.

Change-Id: Ie325bf1e9b4ff1e413fef3431ced8ed9ff725107
Bug: webrtc:10138
Reviewed-on: https://webrtc-review.googlesource.com/c/114422
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26132}
2019-01-04 08:59:26 +00:00
Niels Möller
412d185b4a Delete pre_encode_callback from VideoSendStream::Config
Bug: webrtc:9864
Change-Id: I7f0c897345c99765ea9de77bc70b43ba0e4af19b
Reviewed-on: https://webrtc-review.googlesource.com/c/115320
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26110}
2019-01-02 09:14:32 +00:00
Amit Hilbuch
0fc2843c10 Removing redundant argument for SSRCs from ctor of RtpVideoSender.
SSRCs are specified twice in calls to the RtpVideoSender constructor.
Once in the first argument of ssrcs, and then again in the RtpConfig
ssrcs variable. Resolving to reference the variable in the RtpConfig.

Bug: None
TBR: stefan@webrtc.org
Change-Id: I53528140166a53f3558f950d5662b7d3d6b8c822
Reviewed-on: https://webrtc-review.googlesource.com/c/114910
Commit-Queue: Amit Hilbuch <amithi@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26094}
2018-12-21 23:33:39 +00:00
Niels Möller
cf85e24661 Delete test VideoSendStreamTest.CapturesTextureAndVideoFrames.
This test was added in
https://webrtc-codereview.appspot.com/15789004/, which looks like it
was early on in adding support for capture and encode with native
textures on Android. Since then, the VideoFrame/VideoFrameBuffer
interfaces have emerged and texture support has changed a lot (now
using VideoFrameBuffer with type kNative).

The test only exercises the parts of the video pipeline before
VideoStreamEncoder::pre_encode_callback_, which doesn't care at all
about the type of the corresponding VideoFrameBuffer. That's not so
useful, and since it blocks removal of pre_encode_callback, let's
delete this old test.

Bug: webrtc:9864, chromium:362437
Change-Id: I2eb6c4c48557883309fd6431bc25528441c83078
Reviewed-on: https://webrtc-review.googlesource.com/c/115411
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26086}
2018-12-21 13:41:23 +00:00
Niels Möller
1c931c4f00 Use VideoSourceInterface for owning test video sources
CallTest, VideoQualityTest and VideoAnalyzer used test::TestVideoCapturer
as an interface for video sources. Change to use VideoSourceInterface instead,
since that's all they need.

This is a preparation for making test::VcmCapturer usable as a
VideoTrackSource, and replace use of cricket::VideoCapturer in example code.

Bug: webrtc:6353
Change-Id: I445f5f6f9b7342230b89f53a5722df9c9e92834f
Reviewed-on: https://webrtc-review.googlesource.com/c/114881
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26047}
2018-12-18 15:43:55 +00:00
Sebastian Jansson
7d92de69fe Deprecating legacy SendSideCongestionController.
For somewhat similar funtionality, GoogCcNetworkController can
be used via GoogCcNetworkControllerFactory.

Bug: webrtc:9586
Change-Id: I298050184513f50c1b9ef5c21b8c9b7a6ca46fd5
Reviewed-on: https://webrtc-review.googlesource.com/c/114543
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26040}
2018-12-18 10:22:30 +00:00
Niels Möller
8eeccbe6a6 Delete Start and Stop methods from TestVideoCapturer.
Preparation for replacing use of TestVideoCapturer as an interface,
instead using VideoSourceInterface.

Methods kept as non-virtual on the subclass FrameGeneratorCapturer,
but it's changed to be started on creation.

Bug: webrtc:6353
Change-Id: Iae1c9a0ee55d730d4992204f62227ef2f057d58e
Reviewed-on: https://webrtc-review.googlesource.com/c/114425
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26037}
2018-12-18 09:29:52 +00:00
Johannes Kron
f1ab9b9b3b Refactor creation of ColorSpace test data
Bug: webrtc:8651
Change-Id: I2ebb5fcdc260af19d04513ab5f3d76f81a3b4ca9
Reviewed-on: https://webrtc-review.googlesource.com/c/114282
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26012}
2018-12-14 10:15:10 +00:00
Erik Språng
d96b275cd6 Refactor EncodeParameters usage, remove unused rtt/loss
Bug: webrtc:10126
Change-Id: Ib93f5e65b25540576c026197f72a5902cf43fc16
Reviewed-on: https://webrtc-review.googlesource.com/c/114281
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26001}
2018-12-13 12:15:09 +00:00
Johannes Kron
f7f13e0742 Add end-to-end test for ColorSpace information
Bug: webrtc:8651
Change-Id: Ib7f6162c8dd41868b7d7acca8a6292b2d911c520
Reviewed-on: https://webrtc-review.googlesource.com/c/113941
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25992}
2018-12-12 14:27:18 +00:00
Benjamin Wright
514f084c26 New statistic added to VideoReceiveStream to determine latency to first decode.
This change introduces a new measurement into the VideoReceiveStream::Stats
structure to measure the latency between the first frame being received and
the first frame being decoded in WebRTC. The goal here is to measure the latency
difference when a FrameEncryptor is attached and not attached.

Change-Id: I0f0178aff73b66f25dbc6617098033e226da2958
Bug: webrtc:10105
Reviewed-on: https://webrtc-review.googlesource.com/c/113328
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25956}
2018-12-10 18:49:34 +00:00
Sergey Silkin
8b9b5f98db Activate/deactivate VP9 spatial layers.
* Stop encoding spatial layers S(n >= N) if application deactivates
spatial layer N by setting RTCRtpEncodingParameters.active = false.

* Move calculation of padding bitrate to SvcRateAllocator class.

* Pad up to minimum required bitrate of base layer if ALR probing is
enabled.

Bug: webrtc:9350
Change-Id: I398284c943d43348def535c83263fc234c9767fa
Reviewed-on: https://webrtc-review.googlesource.com/c/113240
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25945}
2018-12-10 12:55:51 +00:00
Mirta Dvornicic
1ec2a16121 Revert "Replace VideoEncoderFactory::QueryVideoEncoder with VideoEncoder::GetEncoderInfo"
This reverts commit cdc5eb0de179dcc866ef770ea303879c64466879.

Reason for revert: Causes wrong CPU adaptation to be used for some HW codecs since GetEncoderInfo() is polled before InitEncode().

Original change's description:
> Replace VideoEncoderFactory::QueryVideoEncoder with VideoEncoder::GetEncoderInfo
> 
> Make implementation of VideoEncoderFactory::QueryVideoEncoder optional
> until it is removed downstream and remove all implementations of it.
> 
> Bug: webrtc:10065
> Change-Id: Ibb1f9612234e536651ce53f05ee048a5d172a41f
> Reviewed-on: https://webrtc-review.googlesource.com/c/113065
> Commit-Queue: Mirta Dvornicic <mirtad@webrtc.org>
> Reviewed-by: Sebastian Jansson <srte@webrtc.org>
> Reviewed-by: Per Kjellander <perkj@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
> Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25924}

TBR=brandtr@webrtc.org,sakal@webrtc.org,kthelgason@webrtc.org,sprang@webrtc.org,srte@webrtc.org,perkj@webrtc.org,mirtad@webrtc.org

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

Bug: webrtc:10065
Change-Id: Idaa452e1d8c1c58cdb4ec69b88fce9042589cc3c
Reviewed-on: https://webrtc-review.googlesource.com/c/113800
Reviewed-by: Mirta Dvornicic <mirtad@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Mirta Dvornicic <mirtad@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25943}
2018-12-10 10:36:00 +00:00
Benjamin Wright
168456c128 Enable authentication of the header as an optional WebRTC trial.
TBR=asapersson@webrtc.org

Bug: webrtc:10103
Change-Id: I3dce3cd06afab62cc30761395299dbb1c02ae444
Reviewed-on: https://webrtc-review.googlesource.com/c/113464
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25938}
2018-12-07 20:23:43 +00:00
Ilya Nikolaevskiy
4348ce240a Calculate min and max receive timestamps for packets in a video frame
Bug: webrtc:10106
Change-Id: I1d3469abb1e7bb7c91a5912d7b781505526abaca
Reviewed-on: https://webrtc-review.googlesource.com/c/113507
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25935}
2018-12-07 16:22:34 +00:00
Benjamin Wright
3f10ca8145 Always record receive timestamps even on when the invalid flag is set.
This change is based on a discussion for integrating a new statistic that
measures the delay between the first frame being received and the first frame
being decoded. To enable this in the context of FrameEncryption it makes sense
for packet receive timestamps to be unconditionally recorded.

Bug: webrtc:10105
Change-Id: I6b3b0118121db1fe5d4a4fb16cf5d94341cd2b1b
Reviewed-on: https://webrtc-review.googlesource.com/c/113487
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25931}
2018-12-07 12:29:45 +00:00
Mirta Dvornicic
cdc5eb0de1 Replace VideoEncoderFactory::QueryVideoEncoder with VideoEncoder::GetEncoderInfo
Make implementation of VideoEncoderFactory::QueryVideoEncoder optional
until it is removed downstream and remove all implementations of it.

Bug: webrtc:10065
Change-Id: Ibb1f9612234e536651ce53f05ee048a5d172a41f
Reviewed-on: https://webrtc-review.googlesource.com/c/113065
Commit-Queue: Mirta Dvornicic <mirtad@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25924}
2018-12-06 15:24:45 +00:00
Benjamin Wright
722875f72e Adding partial authentication of the Generic RTP Frame Descriptor.
Bug: None
Change-Id: I590e28acbd17b45dcb4e3bac34d223ad0903f7dc
Reviewed-on: https://webrtc-review.googlesource.com/c/113131
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25921}
2018-12-06 13:35:59 +00:00
Florent Castelli
e7862cc6b5 Copy VP8EncoderSimulcastProxy to EncoderSimulcastProxy
Use the new class internally where appropriate too.

The objective is to rename it, but due to some external dependency,
it is better to copy, update dependencies and remove.

Bug: webrtc:10069
Change-Id: I8477ce5a2982933db27513cc9509f51558dafaf3
Reviewed-on: https://webrtc-review.googlesource.com/c/113265
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25920}
2018-12-06 13:24:07 +00:00
Ilya Nikolaevskiy
5546aef682 Vp9 flexible mode fixes
- Enable vp9 flexible mode in VideoEngine if 3 spatial layers are set.
- Enable flexible mode in loopback tools and quality tests.
- Reset first active spatial layer on keyframe in encoder.
- Ensure duplicate references are not set by the sender in video header.
- Set references manually for flexible mode in vp9 encoder.
- Delay new activated layers until next base layer frame.
- On receive side put each spatial layer as a separate frame to FrameBuffer
  and return several frames combined from FrameBuffer.

Bug: webrtc:10049,webrtc:9794,webrtc:9784
Change-Id: I01e69f134cc145deba666ccc92deb1d37a324ede
Reviewed-on: https://webrtc-review.googlesource.com/c/112289
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25895}
2018-12-04 15:36:28 +00:00
Johannes Kron
d0b69a8c50 Send and receive color space information if available
Bug: webrtc:8651
Change-Id: I244647cb1ccbda66fce83ae925cf4273c5a6568b
Reviewed-on: https://webrtc-review.googlesource.com/c/112383
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25884}
2018-12-03 21:07:45 +00:00
Florent Castelli
450b548cad Encode frames at the largest layer resolution instead of last layer
The current code assumes that layers are ordered from the smallest
to the largest.
If that assumption is broken and the last layer is smaller than the
others, all layers that are bigger will be scaled up.

Bug: webrtc:10069
Change-Id: Iff87ddba741d5dfe3d0cc25a8f75d898a417eec7
Reviewed-on: https://webrtc-review.googlesource.com/c/112460
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25878}
2018-12-03 14:07:14 +00:00
Benjamin Wright
00765297a2 Add BufferedFrameDecryptor to cleanly deal with receiving encrypted frames.
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}
2018-12-01 00:55:08 +00:00
Patrik Höglund
d4d254f315 Revert "Various VP9 high fps fixes"
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}
2018-11-29 15:57:55 +00:00
Niels Möller
f0eee0087f Move size() method to EncodedImage base class
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}
2018-11-29 13:44:47 +00:00
Yves Gerey
3e70781361 [Cleanup] Add missing #include. Remove useless ones. IWYU part 2.
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}
2018-11-28 18:25:07 +00:00
Niels Möller
648a7cefe1 Delete method EncodedFrame::GetBitstream, part 1
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}
2018-11-28 14:52:32 +00:00
Niels Möller
53382cb19f Move RtcpStatistics from common_types.h to a new header file
New location is modules/rtp_rtcp/include/rtcp_statistics.h.

Bug: webrtc:5876
Change-Id: I85f55b58658588228ed77175226b3479352fd5de
Reviewed-on: https://webrtc-review.googlesource.com/c/111961
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25799}
2018-11-27 13:46:42 +00:00
Christoffer Rodbro
196c5ba045 Specific pacing configuration.
Allow configuration of pacing parameters, independently of ALR configuration.

Bug: webrtc:10038
Change-Id: I2a7f650d1e6d58f9936fc481988bc4bb6fba7220
Reviewed-on: https://webrtc-review.googlesource.com/c/112127
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Christoffer Rodbro <crodbro@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25796}
2018-11-27 12:36:40 +00:00
Ilya Nikolaevskiy
ba2840ce4e 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}
2018-11-27 12:20:56 +00:00
Danil Chapovalov
8ce0d2b956 In ReceiveStatistic require callbacks during construction
Remove RegisterRtcpStatisticsCallback callback functions
saving taking an extra lock when calling callbacks.

Bug: None
Change-Id: Ib4537deffa0ab0abf597228e7c0fab7067614f6a
Reviewed-on: https://webrtc-review.googlesource.com/c/111821
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25779}
2018-11-26 09:17:21 +00:00
Jiawei Ou
8b5d9d8650 Remove the audio/video split for the RTCP report intervals.
This is a follow up of a comment in
https://webrtc-review.googlesource.com/c/src/+/110105

It was not very useful to split the audio and video report interval since the RTCP module can only either be audio or video.

The recent it was written that way in https://webrtc-review.googlesource.com/c/src/+/43201/ was because that was a straightforward transition from two global constants to two variable.

Bug: webrtc:8789
Change-Id: I2293de14ba5f363351f379a02022ed5dc7b8d458
Reviewed-on: https://webrtc-review.googlesource.com/c/110824
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Jiawei Ou <ouj@fb.com>
Cr-Commit-Position: refs/heads/master@{#25741}
2018-11-22 01:39:41 +00:00