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

Issue 2007743003: Add sender controlled playout delay limits (Closed)

Created:
4 years, 7 months ago by Irfan
Modified:
4 years, 4 months ago
CC:
webrtc-reviews_webrtc.org, interface-changes_webrtc.org, video-team_agora.io, yujie_mao (webrtc), zhuangzesen_agora.io, Andrew MacDonald, zhengzhonghou_agora.io, henrika_webrtc, stefan-webrtc, tlegrand-webrtc, tterriberry_mozilla.com, audio-team_agora.io, qiang.lu, niklas.enbom, peah-webrtc, minyue-webrtc, the sun, pbos-webrtc, perkj_webrtc, mflodman, terelius, philipel, ehmaldonado_webrtc
Base URL:
https://chromium.googlesource.com/external/webrtc.git@cleanup_rtp_hdr_extensions
Target Ref:
refs/pending/heads/master
Project:
webrtc
Visibility:
Public.

Description

Add sender controlled playout delay limits This CL adds support for an extension on RTP frames to allow the sender to specify the minimum and maximum playout delay limits. The receiver makes a best-effort attempt to keep the capture-to-render delay within this range. This allows different types of application to specify different end-to-end delay goals. For example gaming can support rendering of frames as soon as received on receiver to minimize delay. A movie playback application can specify a minimum playout delay to allow fixed buffering in presence of network jitter. There are no tests at this time and most of testing is done with chromium webrtc prototype. On chromoting performance tests, this extension helps bring down end-to-end delay by about 150 ms on small frames. BUG=webrtc:5895 Committed: https://crrev.com/6b4b5f37704cb414420d813eb39b90b25f5b2d6c Cr-Commit-Position: refs/heads/master@{#13059}

Patch Set 1 #

Total comments: 24

Patch Set 2 : Addressed comments #

Total comments: 6

Patch Set 3 : Removed audio changes and added locking on playout delay oracle #

Total comments: 32

Patch Set 4 : Addressed comments #

Patch Set 5 : Add unit tests, fix test issues, address comments #

Total comments: 21

Patch Set 6 : Remove notion of max and current header length #

Total comments: 8

Patch Set 7 : Addressed nits and rebase #

Total comments: 16

Patch Set 8 : Addressed stefan nits #

Patch Set 9 : Rename OnReceivedRtcpReport to OnReceivedRtcpReportBlocks #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+859 lines, -407 lines) Patch
M webrtc/common_types.h View 1 2 3 2 chunks +20 lines, -0 lines 0 comments Download
M webrtc/common_types.cc View 1 1 chunk +1 line, -2 lines 0 comments Download
M webrtc/config.h View 1 1 chunk +3 lines, -0 lines 0 comments Download
M webrtc/config.cc View 1 2 3 4 5 6 2 chunks +10 lines, -1 line 0 comments Download
M webrtc/media/engine/webrtcvideoengine2.cc View 1 2 3 4 5 6 1 chunk +3 lines, -0 lines 0 comments Download
M webrtc/modules/include/module_common_types.h View 1 1 chunk +2 lines, -0 lines 0 comments Download
M webrtc/modules/modules.gyp View 1 2 3 4 5 6 1 chunk +1 line, -0 lines 1 comment Download
M webrtc/modules/rtp_rtcp/BUILD.gn View 1 2 3 4 5 6 1 chunk +2 lines, -0 lines 0 comments Download
M webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h View 1 2 3 4 5 6 1 chunk +1 line, -0 lines 0 comments Download
M webrtc/modules/rtp_rtcp/rtp_rtcp.gypi View 1 2 3 4 5 6 1 chunk +2 lines, -0 lines 0 comments Download
A webrtc/modules/rtp_rtcp/source/playout_delay_oracle.h View 1 2 3 4 5 6 7 8 1 chunk +93 lines, -0 lines 0 comments Download
A webrtc/modules/rtp_rtcp/source/playout_delay_oracle.cc View 1 2 3 4 5 6 7 8 1 chunk +68 lines, -0 lines 0 comments Download
A webrtc/modules/rtp_rtcp/source/playout_delay_oracle_unittest.cc View 1 2 3 4 5 6 7 8 1 chunk +69 lines, -0 lines 0 comments Download
M webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc View 1 2 3 4 5 6 7 8 1 chunk +5 lines, -0 lines 0 comments Download
M webrtc/modules/rtp_rtcp/source/rtp_header_extension.h View 1 2 3 4 5 3 chunks +14 lines, -4 lines 0 comments Download
M webrtc/modules/rtp_rtcp/source/rtp_receiver_video.cc View 1 1 chunk +3 lines, -0 lines 0 comments Download
M webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h View 1 2 3 4 5 6 7 8 2 chunks +2 lines, -0 lines 0 comments Download
M webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc View 1 2 3 4 5 6 7 8 2 chunks +7 lines, -0 lines 0 comments Download
M webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc View 1 2 3 4 1 chunk +3 lines, -7 lines 0 comments Download
M webrtc/modules/rtp_rtcp/source/rtp_sender.h View 1 2 3 4 5 6 7 8 12 chunks +27 lines, -14 lines 0 comments Download
M webrtc/modules/rtp_rtcp/source/rtp_sender.cc View 1 2 3 4 5 6 7 8 12 chunks +90 lines, -18 lines 0 comments Download
M webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc View 1 2 3 4 5 6 11 chunks +30 lines, -36 lines 0 comments Download
M webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc View 1 2 3 4 5 6 4 chunks +8 lines, -7 lines 0 comments Download
M webrtc/modules/rtp_rtcp/source/rtp_utility.cc View 1 2 3 2 chunks +23 lines, -0 lines 0 comments Download
M webrtc/modules/video_coding/decoding_state_unittest.cc View 25 chunks +85 lines, -85 lines 0 comments Download
M webrtc/modules/video_coding/frame_buffer.cc View 1 2 3 2 chunks +6 lines, -2 lines 0 comments Download
M webrtc/modules/video_coding/frame_object.cc View 1 1 chunk +1 line, -1 line 0 comments Download
M webrtc/modules/video_coding/jitter_buffer.h View 1 chunk +2 lines, -3 lines 0 comments Download
M webrtc/modules/video_coding/jitter_buffer.cc View 1 2 3 4 5 6 7 6 chunks +10 lines, -11 lines 0 comments Download
M webrtc/modules/video_coding/jitter_buffer_unittest.cc View 1 2 3 25 chunks +111 lines, -112 lines 0 comments Download
M webrtc/modules/video_coding/packet.h View 1 1 chunk +1 line, -1 line 0 comments Download
M webrtc/modules/video_coding/packet.cc View 1 2 3 4 6 chunks +16 lines, -9 lines 0 comments Download
M webrtc/modules/video_coding/packet_buffer_unittest.cc View 1 3 chunks +20 lines, -20 lines 0 comments Download
M webrtc/modules/video_coding/receiver.cc View 1 2 3 1 chunk +17 lines, -6 lines 0 comments Download
M webrtc/modules/video_coding/session_info.cc View 8 chunks +31 lines, -39 lines 0 comments Download
M webrtc/modules/video_coding/timing.h View 1 2 3 4 chunks +26 lines, -12 lines 0 comments Download
M webrtc/modules/video_coding/timing.cc View 1 2 3 8 chunks +37 lines, -16 lines 0 comments Download
M webrtc/modules/video_coding/timing_unittest.cc View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M webrtc/video/payload_router.cc View 1 2 3 1 chunk +1 line, -0 lines 0 comments Download
M webrtc/video/rtp_stream_receiver.cc View 1 1 chunk +2 lines, -0 lines 0 comments Download
M webrtc/video_frame.h View 1 2 3 1 chunk +5 lines, -0 lines 0 comments Download

Messages

Total messages: 64 (27 generated)
Irfan
Please refer to this doc for the CL: https://docs.google.com/document/d/1i8zTPob7ygaOPjiOujGVq9ws-YvjdhGmsSQU7C7itKs/edit I have largely done testing on ...
4 years, 7 months ago (2016-05-24 07:51:52 UTC) #4
Irfan
Danil, I have not updated rtp_packet in this CL to keep it focussed. I can ...
4 years, 7 months ago (2016-05-24 07:53:09 UTC) #5
danilchap
On 2016/05/24 07:53:09, Irfan wrote: > Danil, I have not updated rtp_packet in this CL ...
4 years, 7 months ago (2016-05-24 13:27:43 UTC) #6
danilchap
https://codereview.webrtc.org/2007743003/diff/1/webrtc/config.cc File webrtc/config.cc (right): https://codereview.webrtc.org/2007743003/diff/1/webrtc/config.cc#newcode58 webrtc/config.cc:58: const int RtpExtension::kPlayoutDelayId = 6; DefaultId https://codereview.webrtc.org/2007743003/diff/1/webrtc/modules/rtp_rtcp/source/playout_delay_oracle.h File webrtc/modules/rtp_rtcp/source/playout_delay_oracle.h ...
4 years, 7 months ago (2016-05-24 13:28:25 UTC) #7
sprang_webrtc
https://codereview.chromium.org/2007743003/diff/1/webrtc/common_types.h File webrtc/common_types.h (right): https://codereview.chromium.org/2007743003/diff/1/webrtc/common_types.h#newcode779 webrtc/common_types.h:779: int16_t max_playout_delay_ms; Maybe you can have a small separate ...
4 years, 7 months ago (2016-05-24 14:46:08 UTC) #9
Irfan
PS#2 addresses initial comments. I also fix a few things from testing under webrtc repo. ...
4 years, 7 months ago (2016-05-25 09:32:53 UTC) #11
hlundin-webrtc
On 2016/05/25 09:32:53, Irfan wrote: > PS#2 addresses initial comments. I also fix a few ...
4 years, 7 months ago (2016-05-25 10:58:45 UTC) #13
danilchap
https://codereview.webrtc.org/2007743003/diff/1/webrtc/modules/rtp_rtcp/source/rtp_sender.cc File webrtc/modules/rtp_rtcp/source/rtp_sender.cc (right): https://codereview.webrtc.org/2007743003/diff/1/webrtc/modules/rtp_rtcp/source/rtp_sender.cc#newcode1719 webrtc/modules/rtp_rtcp/source/rtp_sender.cc:1719: RTC_DCHECK(length == kPlayoutDelayLength); On 2016/05/25 09:32:53, Irfan wrote: > ...
4 years, 7 months ago (2016-05-25 19:08:49 UTC) #14
Irfan
I went ahead and removed the capability support that existed for audio code. It makes ...
4 years, 7 months ago (2016-05-26 05:51:48 UTC) #15
Irfan
PS#3 removes adding playout delay capability to audio and addresses Danil comments. PTAL.
4 years, 7 months ago (2016-05-26 05:58:24 UTC) #17
danilchap
rtp part (modules/rtp_rtcp) lgtm https://codereview.chromium.org/2007743003/diff/120001/webrtc/common_types.h File webrtc/common_types.h (right): https://codereview.chromium.org/2007743003/diff/120001/webrtc/common_types.h#newcode764 webrtc/common_types.h:764: struct PlayoutDelay { May be ...
4 years, 7 months ago (2016-05-26 09:41:58 UTC) #19
stefan-webrtc
https://codereview.webrtc.org/2007743003/diff/120001/webrtc/modules/rtp_rtcp/source/playout_delay_oracle.h File webrtc/modules/rtp_rtcp/source/playout_delay_oracle.h (right): https://codereview.webrtc.org/2007743003/diff/120001/webrtc/modules/rtp_rtcp/source/playout_delay_oracle.h#newcode72 webrtc/modules/rtp_rtcp/source/playout_delay_oracle.h:72: // Data in this section is accessed on the ...
4 years, 6 months ago (2016-05-28 05:01:45 UTC) #20
Sergey Ulanov
https://codereview.chromium.org/2007743003/diff/120001/webrtc/common_types.h File webrtc/common_types.h (right): https://codereview.chromium.org/2007743003/diff/120001/webrtc/common_types.h#newcode764 webrtc/common_types.h:764: struct PlayoutDelay { On 2016/05/26 09:41:58, danilchap wrote: > ...
4 years, 6 months ago (2016-05-30 07:22:56 UTC) #21
sprang
https://codereview.webrtc.org/2007743003/diff/120001/webrtc/modules/rtp_rtcp/source/rtp_header_extension.h File webrtc/modules/rtp_rtcp/source/rtp_header_extension.h (right): https://codereview.webrtc.org/2007743003/diff/120001/webrtc/modules/rtp_rtcp/source/rtp_header_extension.h#newcode36 webrtc/modules/rtp_rtcp/source/rtp_header_extension.h:36: const int kPlayoutDelayMaxMs = 40950; On 2016/05/28 05:01:44, stefan-webrtc ...
4 years, 6 months ago (2016-05-30 12:13:15 UTC) #22
Irfan
https://codereview.chromium.org/2007743003/diff/120001/webrtc/common_types.h File webrtc/common_types.h (right): https://codereview.chromium.org/2007743003/diff/120001/webrtc/common_types.h#newcode764 webrtc/common_types.h:764: struct PlayoutDelay { On 2016/05/30 07:22:56, Sergey Ulanov wrote: ...
4 years, 6 months ago (2016-06-01 08:38:34 UTC) #25
Irfan
PS#4 addresses latest comments. PTAL.
4 years, 6 months ago (2016-06-01 08:39:01 UTC) #26
Irfan
PS#5 addresses test failures. One particular issue that was interesting was that my change to ...
4 years, 6 months ago (2016-06-02 06:46:44 UTC) #30
Stefan
Looks OK to me, but it would be good to get Danil's eyes on these ...
4 years, 6 months ago (2016-06-02 08:07:09 UTC) #32
danilchap
Nice catch about potential sequence number gap! (I had a plan to make that mistake ...
4 years, 6 months ago (2016-06-02 12:12:34 UTC) #33
Irfan
https://codereview.chromium.org/2007743003/diff/260001/webrtc/modules/rtp_rtcp/source/playout_delay_oracle.cc File webrtc/modules/rtp_rtcp/source/playout_delay_oracle.cc (right): https://codereview.chromium.org/2007743003/diff/260001/webrtc/modules/rtp_rtcp/source/playout_delay_oracle.cc#newcode34 webrtc/modules/rtp_rtcp/source/playout_delay_oracle.cc:34: RTC_DCHECK(thread_checker_.CalledOnValidThread()); On 2016/06/02 12:12:34, danilchap wrote: > RTC_DCHECK_RUN_ON(&thread_checker_); > ...
4 years, 6 months ago (2016-06-02 18:15:53 UTC) #34
Irfan
PS#6 still needs to pass tests, but is now updated to address Danil's comments.
4 years, 6 months ago (2016-06-02 18:17:48 UTC) #35
danilchap
rtp part (modules/rtp_rtcp) lgtm again % nit https://codereview.webrtc.org/2007743003/diff/300001/webrtc/config.cc File webrtc/config.cc (right): https://codereview.webrtc.org/2007743003/diff/300001/webrtc/config.cc#newcode64 webrtc/config.cc:64: uri == ...
4 years, 6 months ago (2016-06-03 09:01:37 UTC) #37
Irfan
https://codereview.chromium.org/2007743003/diff/300001/webrtc/config.cc File webrtc/config.cc (right): https://codereview.chromium.org/2007743003/diff/300001/webrtc/config.cc#newcode64 webrtc/config.cc:64: uri == webrtc::RtpExtension::kPlayoutDelayUri; On 2016/06/03 09:01:37, danilchap wrote: > ...
4 years, 6 months ago (2016-06-03 15:55:33 UTC) #38
Irfan
PS#7 addressed Danil's nits. Can others please take a look for lgtm ?
4 years, 6 months ago (2016-06-03 15:59:07 UTC) #40
stefan-webrtc
In a follow-up I'd be happy if you also looked into adding this to our ...
4 years, 6 months ago (2016-06-06 14:08:16 UTC) #42
Irfan
https://codereview.chromium.org/2007743003/diff/290042/webrtc/common_types.h File webrtc/common_types.h (right): https://codereview.chromium.org/2007743003/diff/290042/webrtc/common_types.h#newcode763 webrtc/common_types.h:763: // in the range (x, y) based on network ...
4 years, 6 months ago (2016-06-06 15:39:42 UTC) #43
Irfan
Stefan, PS#7 addresses your latest comments. PTAL.
4 years, 6 months ago (2016-06-06 15:41:36 UTC) #44
Irfan
PS#8 is actually the latest update, not PS#7.
4 years, 6 months ago (2016-06-06 15:43:41 UTC) #46
stefan-webrtc
lgtm, but consider the renaming, and follow up/sync with philipel@ about the new jitter buffer. ...
4 years, 6 months ago (2016-06-06 20:02:25 UTC) #48
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2007743003/430001
4 years, 6 months ago (2016-06-06 20:14:14 UTC) #51
commit-bot: I haz the power
Try jobs failed on following builders: presubmit on tryserver.webrtc (JOB_FAILED, http://build.chromium.org/p/tryserver.webrtc/builders/presubmit/builds/6106)
4 years, 6 months ago (2016-06-06 20:17:46 UTC) #53
Irfan
Magnus, need your lgtm for top-level files (config.h, config.cc, common_types.cc, common_types.h). Can you PTAL ?
4 years, 6 months ago (2016-06-06 20:21:21 UTC) #55
mflodman
RS LGTM for the file in webrtc/ root.
4 years, 6 months ago (2016-06-08 06:37:44 UTC) #56
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2007743003/430001
4 years, 6 months ago (2016-06-08 06:43:14 UTC) #58
commit-bot: I haz the power
Committed patchset #9 (id:430001)
4 years, 6 months ago (2016-06-08 07:24:28 UTC) #60
commit-bot: I haz the power
Patchset 9 (id:??) landed as https://crrev.com/6b4b5f37704cb414420d813eb39b90b25f5b2d6c Cr-Commit-Position: refs/heads/master@{#13059}
4 years, 6 months ago (2016-06-08 07:24:41 UTC) #62
kjellander_webrtc
4 years, 4 months ago (2016-08-17 15:23:43 UTC) #64
Message was sent while issue was closed.
Edward found an error in this CL (test missing for the GN target). Please fix.

https://codereview.webrtc.org/2007743003/diff/430001/webrtc/modules/modules.gyp
File webrtc/modules/modules.gyp (right):

https://codereview.webrtc.org/2007743003/diff/430001/webrtc/modules/modules.g...
webrtc/modules/modules.gyp:302:
'rtp_rtcp/source/playout_delay_oracle_unittest.cc',
This entry is missing in webrtc/modules/BUILD.gn. Can you add it to
modules_unittests in there as well in a follow-up CL?

Powered by Google App Engine
This is Rietveld 408576698