Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Issue 2716643002: Add framerate to VideoSinkWants and ability to signal on overuse (Closed)

Created:
3 years, 10 months ago by sprang_webrtc
Modified:
3 years, 9 months ago
CC:
webrtc-reviews_webrtc.org, video-team_agora.io, yujie_mao (webrtc), zhengzhonghou_agora.io, stefan-webrtc, tterriberry_mozilla.com, mflodman
Target Ref:
refs/heads/master
Project:
webrtc
Visibility:
Public.

Description

Add framerate to VideoSinkWants and ability to signal on overuse In ViEEncoder, try to reduce framerate instead of resolution if the current degradation preference is maintain-resolution rather than balanced. BUG=webrtc:4172 Review-Url: https://codereview.webrtc.org/2716643002 Cr-Commit-Position: refs/heads/master@{#17327} Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6

Patch Set 1 #

Patch Set 2 : Fix wireup, keep scale state per degradation pref #

Total comments: 16

Patch Set 3 : Added tests, fixed bugs, rebase, address comments #

Total comments: 2

Patch Set 4 : comments #

Total comments: 9

Patch Set 5 : Changed AdaptUp behavior, respect SinkWants in test capturers, manual testing facilitated #

Total comments: 2

Patch Set 6 : sscanf #

Patch Set 7 : That went too fast... #

Patch Set 8 : More dregradation options, including disabled. More tests. #

Patch Set 9 : windows warning #

Total comments: 40

Patch Set 10 : Addressed comments #

Total comments: 6

Patch Set 11 : Rebase #

Patch Set 12 : Comments #

Total comments: 6

Patch Set 13 : Addressed comments, fixed missing include #

Total comments: 8

Patch Set 14 : Comments #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1306 lines, -376 lines) Patch
M webrtc/call/bitrate_estimator_tests.cc View 1 2 3 4 5 6 7 1 chunk +1 line, -1 line 0 comments Download
M webrtc/call/call_perf_tests.cc View 1 2 3 4 5 6 7 8 9 10 1 chunk +2 lines, -3 lines 0 comments Download
M webrtc/media/base/adaptedvideotracksource.cc View 1 2 3 4 5 6 7 1 chunk +2 lines, -2 lines 0 comments Download
M webrtc/media/base/fakevideocapturer.h View 1 2 3 4 5 6 7 2 chunks +8 lines, -4 lines 0 comments Download
M webrtc/media/base/fakevideorenderer.h View 1 chunk +1 line, -0 lines 0 comments Download
M webrtc/media/base/videoadapter.h View 1 2 3 4 5 6 7 8 9 10 11 12 3 chunks +14 lines, -7 lines 0 comments Download
M webrtc/media/base/videoadapter.cc View 1 2 3 4 5 6 7 8 9 10 11 4 chunks +25 lines, -10 lines 0 comments Download
M webrtc/media/base/videoadapter_unittest.cc View 1 2 3 4 5 6 7 8 9 29 chunks +117 lines, -50 lines 0 comments Download
M webrtc/media/base/videobroadcaster.cc View 1 2 3 4 5 6 7 8 9 2 chunks +8 lines, -6 lines 0 comments Download
M webrtc/media/base/videobroadcaster_unittest.cc View 1 2 3 4 5 6 7 8 9 2 chunks +29 lines, -6 lines 0 comments Download
M webrtc/media/base/videocapturer.cc View 1 2 3 4 5 6 7 1 chunk +3 lines, -2 lines 0 comments Download
M webrtc/media/base/videocapturer_unittest.cc View 1 2 3 4 5 6 7 8 9 3 chunks +4 lines, -5 lines 0 comments Download
M webrtc/media/base/videosourceinterface.h View 1 2 3 4 5 6 7 8 9 1 chunk +3 lines, -1 line 0 comments Download
M webrtc/media/engine/fakewebrtccall.h View 1 2 3 4 5 6 7 8 9 10 2 chunks +2 lines, -0 lines 0 comments Download
M webrtc/media/engine/fakewebrtccall.cc View 1 2 3 4 5 6 7 8 9 3 chunks +22 lines, -4 lines 0 comments Download
M webrtc/media/engine/webrtcvideoengine2.h View 1 2 3 4 5 6 7 8 9 1 chunk +3 lines, -0 lines 0 comments Download
M webrtc/media/engine/webrtcvideoengine2.cc View 1 2 3 4 5 6 7 8 9 10 3 chunks +24 lines, -23 lines 0 comments Download
M webrtc/media/engine/webrtcvideoengine2_unittest.cc View 1 2 3 4 5 6 7 8 9 10 8 chunks +53 lines, -23 lines 0 comments Download
M webrtc/test/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 2 chunks +2 lines, -0 lines 0 comments Download
M webrtc/test/call_test.cc View 1 2 3 4 5 6 7 8 9 10 2 chunks +2 lines, -2 lines 0 comments Download
M webrtc/test/frame_generator_capturer.h View 1 2 3 4 5 6 7 8 9 10 2 chunks +3 lines, -1 line 0 comments Download
M webrtc/test/frame_generator_capturer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 6 chunks +85 lines, -48 lines 0 comments Download
M webrtc/test/vcm_capturer.h View 1 2 3 4 5 6 7 8 9 1 chunk +2 lines, -0 lines 0 comments Download
M webrtc/test/vcm_capturer.cc View 1 2 3 4 5 6 7 8 9 6 chunks +16 lines, -12 lines 0 comments Download
M webrtc/test/video_capturer.h View 1 2 3 4 5 6 7 8 9 1 chunk +24 lines, -5 lines 0 comments Download
A webrtc/test/video_capturer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +58 lines, -0 lines 0 comments Download
M webrtc/video/end_to_end_tests.cc View 1 2 3 4 5 6 7 8 9 10 4 chunks +6 lines, -4 lines 0 comments Download
M webrtc/video/overuse_frame_detector.h View 1 2 3 4 2 chunks +4 lines, -0 lines 0 comments Download
M webrtc/video/overuse_frame_detector.cc View 1 2 3 4 5 6 7 8 9 7 chunks +93 lines, -4 lines 0 comments Download
M webrtc/video/send_statistics_proxy.h View 1 2 3 4 5 6 7 1 chunk +1 line, -1 line 0 comments Download
M webrtc/video/video_quality_test.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +1 line, -1 line 0 comments Download
M webrtc/video/video_send_stream_tests.cc View 1 2 3 4 5 6 7 8 9 10 3 chunks +3 lines, -3 lines 0 comments Download
M webrtc/video/vie_encoder.h View 1 2 3 4 5 6 7 8 9 5 chunks +16 lines, -3 lines 0 comments Download
M webrtc/video/vie_encoder.cc View 1 2 3 4 5 6 7 8 9 10 11 12 12 chunks +253 lines, -68 lines 0 comments Download
M webrtc/video/vie_encoder_unittest.cc View 1 2 3 4 5 6 7 8 9 10 32 chunks +405 lines, -75 lines 0 comments Download
M webrtc/video_send_stream.h View 1 2 3 4 5 6 7 1 chunk +11 lines, -2 lines 0 comments Download

Messages

Total messages: 104 (63 generated)
sprang_webrtc
Please have a look. I'll be adding additional tests shortly.
3 years, 9 months ago (2017-02-26 12:10:54 UTC) #10
magjed_webrtc
https://codereview.webrtc.org/2716643002/diff/20001/webrtc/media/base/videoadapter.cc File webrtc/media/base/videoadapter.cc (right): https://codereview.webrtc.org/2716643002/diff/20001/webrtc/media/base/videoadapter.cc#newcode122 webrtc/media/base/videoadapter.cc:122: if (std::numeric_limits<int>::max() != 0) { I think this should ...
3 years, 9 months ago (2017-02-27 09:30:35 UTC) #13
magjed_webrtc
I'm adding Kári as reviewer as well.
3 years, 9 months ago (2017-02-27 09:58:30 UTC) #15
sprang_webrtc
https://codereview.webrtc.org/2716643002/diff/20001/webrtc/media/base/videoadapter.cc File webrtc/media/base/videoadapter.cc (right): https://codereview.webrtc.org/2716643002/diff/20001/webrtc/media/base/videoadapter.cc#newcode122 webrtc/media/base/videoadapter.cc:122: if (std::numeric_limits<int>::max() != 0) { On 2017/02/27 09:30:35, magjed_webrtc ...
3 years, 9 months ago (2017-02-27 12:51:49 UTC) #16
kthelgason
https://codereview.webrtc.org/2716643002/diff/20001/webrtc/media/base/videobroadcaster_unittest.cc File webrtc/media/base/videobroadcaster_unittest.cc (right): https://codereview.webrtc.org/2716643002/diff/20001/webrtc/media/base/videobroadcaster_unittest.cc#newcode13 webrtc/media/base/videobroadcaster_unittest.cc:13: //#include "webrtc/base/gunit.h" I guess this should not have been ...
3 years, 9 months ago (2017-02-27 14:02:39 UTC) #17
sprang_webrtc
https://codereview.webrtc.org/2716643002/diff/20001/webrtc/media/base/videobroadcaster_unittest.cc File webrtc/media/base/videobroadcaster_unittest.cc (right): https://codereview.webrtc.org/2716643002/diff/20001/webrtc/media/base/videobroadcaster_unittest.cc#newcode13 webrtc/media/base/videobroadcaster_unittest.cc:13: //#include "webrtc/base/gunit.h" On 2017/02/27 14:02:39, kthelgason wrote: > I ...
3 years, 9 months ago (2017-02-28 08:46:28 UTC) #22
kthelgason
On 2017/02/28 08:46:28, språng wrote: > https://codereview.webrtc.org/2716643002/diff/20001/webrtc/media/base/videobroadcaster_unittest.cc > File webrtc/media/base/videobroadcaster_unittest.cc (right): > > https://codereview.webrtc.org/2716643002/diff/20001/webrtc/media/base/videobroadcaster_unittest.cc#newcode13 > ...
3 years, 9 months ago (2017-02-28 09:09:10 UTC) #23
magjed_webrtc
lgtm https://codereview.webrtc.org/2716643002/diff/20001/webrtc/video/vie_encoder.cc File webrtc/video/vie_encoder.cc (right): https://codereview.webrtc.org/2716643002/diff/20001/webrtc/video/vie_encoder.cc#newcode235 webrtc/video/vie_encoder.cc:235: if (framerate_fps < kMinFramerateFps) On 2017/02/27 12:51:49, språng ...
3 years, 9 months ago (2017-02-28 14:21:55 UTC) #24
sprang_webrtc
https://codereview.webrtc.org/2716643002/diff/20001/webrtc/video/vie_encoder.cc File webrtc/video/vie_encoder.cc (right): https://codereview.webrtc.org/2716643002/diff/20001/webrtc/video/vie_encoder.cc#newcode235 webrtc/video/vie_encoder.cc:235: if (framerate_fps < kMinFramerateFps) On 2017/02/28 14:21:55, magjed_webrtc wrote: ...
3 years, 9 months ago (2017-02-28 15:15:30 UTC) #27
nisse-webrtc
Please consider dropping optional where not really needed. I trust your judgement on that. LGTM. ...
3 years, 9 months ago (2017-03-08 08:08:54 UTC) #30
kthelgason
https://codereview.webrtc.org/2716643002/diff/60001/webrtc/media/base/videosourceinterface.h File webrtc/media/base/videosourceinterface.h (right): https://codereview.webrtc.org/2716643002/diff/60001/webrtc/media/base/videosourceinterface.h#newcode38 webrtc/media/base/videosourceinterface.h:38: rtc::Optional<int> max_framerate_fps_; On 2017/03/08 08:08:54, nisse-webrtc (ooo March 6) ...
3 years, 9 months ago (2017-03-08 08:15:59 UTC) #31
sprang_webrtc
A sneaked in a little bit of test code after the lgtm and also changed ...
3 years, 9 months ago (2017-03-09 13:19:34 UTC) #32
nisse-webrtc
On 2017/03/09 13:19:34, språng wrote: > It will make it uglier in others, where we'll ...
3 years, 9 months ago (2017-03-09 13:32:59 UTC) #37
nisse-webrtc
LGTM. https://codereview.webrtc.org/2716643002/diff/80001/webrtc/test/vcm_capturer.cc File webrtc/test/vcm_capturer.cc (right): https://codereview.webrtc.org/2716643002/diff/80001/webrtc/test/vcm_capturer.cc#newcode115 webrtc/test/vcm_capturer.cc:115: int cropped_width = 0; Adding adaptation here makes ...
3 years, 9 months ago (2017-03-09 13:33:18 UTC) #38
sprang_webrtc
https://codereview.webrtc.org/2716643002/diff/80001/webrtc/test/vcm_capturer.cc File webrtc/test/vcm_capturer.cc (right): https://codereview.webrtc.org/2716643002/diff/80001/webrtc/test/vcm_capturer.cc#newcode115 webrtc/test/vcm_capturer.cc:115: int cropped_width = 0; On 2017/03/09 13:33:18, nisse-webrtc (ooo ...
3 years, 9 months ago (2017-03-09 13:42:26 UTC) #43
nisse-webrtc
On 2017/03/09 13:42:26, språng wrote: > https://codereview.webrtc.org/2716643002/diff/80001/webrtc/test/vcm_capturer.cc > File webrtc/test/vcm_capturer.cc (right): > > https://codereview.webrtc.org/2716643002/diff/80001/webrtc/test/vcm_capturer.cc#newcode115 > ...
3 years, 9 months ago (2017-03-09 13:51:20 UTC) #46
sprang_webrtc
I've done some further work here as I found a few issues. One of them ...
3 years, 9 months ago (2017-03-14 08:27:16 UTC) #55
nisse-webrtc
https://codereview.webrtc.org/2716643002/diff/150001/webrtc/media/base/videoadapter.cc File webrtc/media/base/videoadapter.cc (right): https://codereview.webrtc.org/2716643002/diff/150001/webrtc/media/base/videoadapter.cc#newcode269 webrtc/media/base/videoadapter.cc:269: const rtc::Optional<int>& framerate_fps) { Even if you want to ...
3 years, 9 months ago (2017-03-14 09:00:29 UTC) #58
kthelgason
https://codereview.webrtc.org/2716643002/diff/150001/webrtc/media/engine/webrtcvideoengine2.cc File webrtc/media/engine/webrtcvideoengine2.cc (right): https://codereview.webrtc.org/2716643002/diff/150001/webrtc/media/engine/webrtcvideoengine2.cc#newcode1632 webrtc/media/engine/webrtcvideoengine2.cc:1632: webrtc::VideoSendStream::DegradationPreference::kDegradationDisabled); just DegradationPreference::kDegradationDisabled given the using directive above. https://codereview.webrtc.org/2716643002/diff/150001/webrtc/test/frame_generator_capturer.cc ...
3 years, 9 months ago (2017-03-14 10:01:21 UTC) #59
sprang_webrtc
https://codereview.webrtc.org/2716643002/diff/150001/webrtc/media/base/videoadapter.cc File webrtc/media/base/videoadapter.cc (right): https://codereview.webrtc.org/2716643002/diff/150001/webrtc/media/base/videoadapter.cc#newcode269 webrtc/media/base/videoadapter.cc:269: const rtc::Optional<int>& framerate_fps) { On 2017/03/14 09:00:28, nisse-webrtc wrote: ...
3 years, 9 months ago (2017-03-14 14:15:03 UTC) #62
kthelgason
This CL is getting quite unwieldy! I like the newest patchset though, it LQGTM. https://codereview.webrtc.org/2716643002/diff/170001/webrtc/video/vie_encoder.cc ...
3 years, 9 months ago (2017-03-15 09:24:59 UTC) #65
kthelgason
On 2017/03/15 09:24:59, kthelgason wrote: > This CL is getting quite unwieldy! I like the ...
3 years, 9 months ago (2017-03-15 09:25:15 UTC) #66
nisse-webrtc
lgtm % nits https://codereview.webrtc.org/2716643002/diff/170001/webrtc/media/base/videoadapter.h File webrtc/media/base/videoadapter.h (right): https://codereview.webrtc.org/2716643002/diff/170001/webrtc/media/base/videoadapter.h#newcode56 webrtc/media/base/videoadapter.h:56: // |max_pixel_count|. If |max_pixel_count| is not ...
3 years, 9 months ago (2017-03-15 09:45:23 UTC) #67
sprang_webrtc
+ilnik for webrtc/test/frame_generator_capturer.* as I rebased on top of recent refactorings there. https://codereview.webrtc.org/2716643002/diff/170001/webrtc/media/base/videoadapter.h File webrtc/media/base/videoadapter.h ...
3 years, 9 months ago (2017-03-20 09:41:31 UTC) #71
nisse-webrtc
One more comment comment. Still lgtm. https://codereview.webrtc.org/2716643002/diff/210001/webrtc/media/base/videoadapter.h File webrtc/media/base/videoadapter.h (right): https://codereview.webrtc.org/2716643002/diff/210001/webrtc/media/base/videoadapter.h#newcode56 webrtc/media/base/videoadapter.h:56: // |framerate_fps| is ...
3 years, 9 months ago (2017-03-20 09:49:41 UTC) #74
ilnik
https://codereview.webrtc.org/2716643002/diff/210001/webrtc/test/frame_generator_capturer.cc File webrtc/test/frame_generator_capturer.cc (right): https://codereview.webrtc.org/2716643002/diff/210001/webrtc/test/frame_generator_capturer.cc#newcode77 webrtc/test/frame_generator_capturer.cc:77: return repeat_interval_ms_ == 0; There is now a memory ...
3 years, 9 months ago (2017-03-20 10:02:52 UTC) #75
sprang_webrtc
https://codereview.webrtc.org/2716643002/diff/210001/webrtc/media/base/videoadapter.h File webrtc/media/base/videoadapter.h (right): https://codereview.webrtc.org/2716643002/diff/210001/webrtc/media/base/videoadapter.h#newcode56 webrtc/media/base/videoadapter.h:56: // |framerate_fps| is essentially analogous to |max_pixel_count|, but for ...
3 years, 9 months ago (2017-03-20 10:18:45 UTC) #77
ilnik
On 2017/03/20 10:18:45, språng wrote: > https://codereview.webrtc.org/2716643002/diff/210001/webrtc/media/base/videoadapter.h > File webrtc/media/base/videoadapter.h (right): > > https://codereview.webrtc.org/2716643002/diff/210001/webrtc/media/base/videoadapter.h#newcode56 > ...
3 years, 9 months ago (2017-03-20 10:21:18 UTC) #79
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.webrtc.org/2716643002/230001
3 years, 9 months ago (2017-03-20 10:44:13 UTC) #84
commit-bot: I haz the power
Try jobs failed on following builders: presubmit on master.tryserver.webrtc (JOB_FAILED, http://build.chromium.org/p/tryserver.webrtc/builders/presubmit/builds/15114)
3 years, 9 months ago (2017-03-20 10:48:44 UTC) #86
sprang_webrtc
+stefan as owner for webrtc/call/* webrtc/test/* webrtc/video_send_stream.h
3 years, 9 months ago (2017-03-20 11:40:17 UTC) #88
stefan-webrtc
https://codereview.webrtc.org/2716643002/diff/230001/webrtc/call/bitrate_estimator_tests.cc File webrtc/call/bitrate_estimator_tests.cc (right): https://codereview.webrtc.org/2716643002/diff/230001/webrtc/call/bitrate_estimator_tests.cc#newcode175 webrtc/call/bitrate_estimator_tests.cc:175: VideoSendStream::DegradationPreference::kMaintainFramerate); Isn't balanced a better default, or why do ...
3 years, 9 months ago (2017-03-21 15:37:36 UTC) #89
sprang_webrtc
https://codereview.webrtc.org/2716643002/diff/230001/webrtc/call/bitrate_estimator_tests.cc File webrtc/call/bitrate_estimator_tests.cc (right): https://codereview.webrtc.org/2716643002/diff/230001/webrtc/call/bitrate_estimator_tests.cc#newcode175 webrtc/call/bitrate_estimator_tests.cc:175: VideoSendStream::DegradationPreference::kMaintainFramerate); On 2017/03/21 15:37:36, stefan-webrtc wrote: > Isn't balanced ...
3 years, 9 months ago (2017-03-21 15:59:18 UTC) #90
stefan-webrtc
lgtm
3 years, 9 months ago (2017-03-21 16:13:52 UTC) #91
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.webrtc.org/2716643002/250001
3 years, 9 months ago (2017-03-21 16:39:33 UTC) #94
commit-bot: I haz the power
Try jobs failed on following builders: android_dbg on master.tryserver.webrtc (JOB_FAILED, http://build.chromium.org/p/tryserver.webrtc/builders/android_dbg/builds/22638) linux_msan on master.tryserver.webrtc (JOB_FAILED, ...
3 years, 9 months ago (2017-03-21 16:57:24 UTC) #96
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.webrtc.org/2716643002/250001
3 years, 9 months ago (2017-03-21 18:38:34 UTC) #98
commit-bot: I haz the power
Committed patchset #14 (id:250001) as https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
3 years, 9 months ago (2017-03-21 18:54:19 UTC) #101
skvlad
On 2017/03/21 18:54:19, commit-bot: I haz the power wrote: > Committed patchset #14 (id:250001) as ...
3 years, 9 months ago (2017-03-21 20:22:33 UTC) #102
skvlad
A revert of this CL (patchset #14 id:250001) has been created in https://codereview.webrtc.org/2764133002/ by skvlad@webrtc.org. ...
3 years, 9 months ago (2017-03-21 20:25:45 UTC) #103
ilnik
3 years, 9 months ago (2017-03-22 08:42:04 UTC) #104
Message was sent while issue was closed.
On 2017/03/21 20:25:45, skvlad wrote:
> A revert of this CL (patchset #14 id:250001) has been created in
> https://codereview.webrtc.org/2764133002/ by mailto:skvlad@webrtc.org.
> 
> The reason for reverting is: Breaks perf tests:
> https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
>
https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20....

Erik, I had problem with this test on windows and android also. Issue was caused
by not so precise FrameGenaratorCapturer. One explanation could be that your
changes broke timer-adjusting behavior inside the InsertFrameTask.

Powered by Google App Engine
This is Rietveld 408576698