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

Issue 2435693004: Reland: Use webrtc::VideoFrame timestamp in RTCVideoEncoder (Closed)

Created:
4 years, 2 months ago by emircan
Modified:
3 years, 9 months ago
CC:
chromium-reviews, mlamouri+watch-content_chromium.org, posciak+watch_chromium.org, jam, feature-media-reviews_chromium.org, darin-cc_chromium.org, piman+watch_chromium.org
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

Reland: Use webrtc::VideoFrame timestamp in RTCVideoEncoder This CL fixes input timestamp mismatch in RTCVideoEncoder, which broke googAvgEncodeMs and googEncodeUsagePercent stats in webrtc-internals for hardware encoders. With this change, we start using WebRTC given timestamp() so that OveruseFrameDetector can match the timestamps and calculate these stats. Note that we can't directly use RTP timestamp via base::TimeDelta. Suppose WebRTC's timestamp() is 30000 (in 90 kHZ). Then, we would set Chrome's base::TimeDelta in microseconds as (30000/90*1000)= 333333.333333. This drops the decimal bits. Even if we use FromMillisecondsD(), we fail to cover all the information. As a result, we may not return the same timestamp after converting back. Therefore, we keep the value as it is. Moreover, using RTP timestamp's converted value or 90 kHz value in HW encoder causes problems as HW encoder expects presentation timestamp. Bitrate gets visibly worse on Win&Mac. Therefore, I decided to hold onto a queue of presentation timestamp and RTP timestamp in RTCVideoEncoder and match values at the end. BUG=597087 TEST=Tested AppRTC H264 loopback on Mac. googAvgEncodeMs and googEncodeUsagePercent stats are non-zero. CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel Review-Url: https://codereview.chromium.org/2435693004 Cr-Commit-Position: refs/heads/master@{#459908} Committed: https://chromium.googlesource.com/chromium/src/+/2372de8b97b72d62e9ece294494a351ff633a2d8

Patch Set 1 : Using capture timestamp with map to RTP timestamp. #

Patch Set 2 : Use deque. #

Total comments: 8

Patch Set 3 : #

Total comments: 11

Patch Set 4 : Add unittests. #

Patch Set 5 : #

Total comments: 3

Patch Set 6 : #

Patch Set 7 : Rebase. #

Total comments: 2

Patch Set 8 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+145 lines, -22 lines) Patch
M content/renderer/media/gpu/rtc_video_encoder.cc View 1 2 3 4 5 6 7 8 chunks +59 lines, -15 lines 0 comments Download
M content/renderer/media/gpu/rtc_video_encoder_unittest.cc View 1 2 3 6 chunks +85 lines, -6 lines 0 comments Download
M media/gpu/android_video_encode_accelerator.cc View 1 2 3 4 5 6 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 83 (60 generated)
pbos
looks good overall, some nits https://codereview.chromium.org/2435693004/diff/100001/content/renderer/media/gpu/rtc_video_encoder.cc File content/renderer/media/gpu/rtc_video_encoder.cc (right): https://codereview.chromium.org/2435693004/diff/100001/content/renderer/media/gpu/rtc_video_encoder.cc#newcode492 content/renderer/media/gpu/rtc_video_encoder.cc:492: uint32_t rtp_timestamp = 0; ...
3 years, 10 months ago (2017-02-10 00:05:08 UTC) #24
emircan
https://codereview.chromium.org/2435693004/diff/100001/content/renderer/media/gpu/rtc_video_encoder.cc File content/renderer/media/gpu/rtc_video_encoder.cc (right): https://codereview.chromium.org/2435693004/diff/100001/content/renderer/media/gpu/rtc_video_encoder.cc#newcode492 content/renderer/media/gpu/rtc_video_encoder.cc:492: uint32_t rtp_timestamp = 0; On 2017/02/10 00:05:08, pbos wrote: ...
3 years, 10 months ago (2017-02-10 17:14:55 UTC) #29
pbos
https://codereview.chromium.org/2435693004/diff/120001/content/renderer/media/gpu/rtc_video_encoder.cc File content/renderer/media/gpu/rtc_video_encoder.cc (right): https://codereview.chromium.org/2435693004/diff/120001/content/renderer/media/gpu/rtc_video_encoder.cc#newcode507 content/renderer/media/gpu/rtc_video_encoder.cc:507: } I'm worried we'll ever go from RTPTimestamps to ...
3 years, 10 months ago (2017-02-10 17:24:44 UTC) #30
emircan
https://codereview.chromium.org/2435693004/diff/120001/content/renderer/media/gpu/rtc_video_encoder.cc File content/renderer/media/gpu/rtc_video_encoder.cc (right): https://codereview.chromium.org/2435693004/diff/120001/content/renderer/media/gpu/rtc_video_encoder.cc#newcode507 content/renderer/media/gpu/rtc_video_encoder.cc:507: } On 2017/02/10 17:24:43, pbos wrote: > I'm worried ...
3 years, 10 months ago (2017-02-10 22:48:37 UTC) #36
pbos
Nisse can you look at the timestamp question. :) https://codereview.chromium.org/2435693004/diff/120001/content/renderer/media/gpu/rtc_video_encoder.cc File content/renderer/media/gpu/rtc_video_encoder.cc (right): https://codereview.chromium.org/2435693004/diff/120001/content/renderer/media/gpu/rtc_video_encoder.cc#newcode507 content/renderer/media/gpu/rtc_video_encoder.cc:507: ...
3 years, 10 months ago (2017-02-13 03:35:51 UTC) #39
nisse-chromium (ooo August 14)
I'm afraid I'm not familiar at all with this code. Some comments below, but it's ...
3 years, 10 months ago (2017-02-13 07:40:32 UTC) #40
emircan
https://codereview.chromium.org/2435693004/diff/120001/content/renderer/media/gpu/rtc_video_encoder.cc File content/renderer/media/gpu/rtc_video_encoder.cc (right): https://codereview.chromium.org/2435693004/diff/120001/content/renderer/media/gpu/rtc_video_encoder.cc#newcode507 content/renderer/media/gpu/rtc_video_encoder.cc:507: } On 2017/02/13 03:35:51, pbos wrote: > On 2017/02/10 ...
3 years, 10 months ago (2017-02-13 20:23:20 UTC) #43
nisse-chromium (ooo August 14)
https://codereview.chromium.org/2435693004/diff/120001/content/renderer/media/gpu/rtc_video_encoder.cc File content/renderer/media/gpu/rtc_video_encoder.cc (right): https://codereview.chromium.org/2435693004/diff/120001/content/renderer/media/gpu/rtc_video_encoder.cc#newcode527 content/renderer/media/gpu/rtc_video_encoder.cc:527: image.capture_time_ms_ = capture_time_ms; I think we must use a ...
3 years, 10 months ago (2017-02-14 07:45:04 UTC) #47
emircan
https://codereview.chromium.org/2435693004/diff/120001/content/renderer/media/gpu/rtc_video_encoder.cc File content/renderer/media/gpu/rtc_video_encoder.cc (right): https://codereview.chromium.org/2435693004/diff/120001/content/renderer/media/gpu/rtc_video_encoder.cc#newcode527 content/renderer/media/gpu/rtc_video_encoder.cc:527: image.capture_time_ms_ = capture_time_ms; On 2017/02/14 07:45:04, nisse-chromium wrote: > ...
3 years, 10 months ago (2017-02-14 20:07:33 UTC) #48
nisse-chromium (ooo August 14)
On 2017/02/14 20:07:33, emircan wrote: > We can't guarantee returning render_time_ms() as some HW encoders ...
3 years, 10 months ago (2017-02-15 08:03:29 UTC) #49
emircan
On 2017/02/15 08:03:29, nisse-chromium wrote: > On 2017/02/14 20:07:33, emircan wrote: > > > We ...
3 years, 10 months ago (2017-02-15 18:44:01 UTC) #50
pbos-webrtc
https://codereview.chromium.org/2435693004/diff/160001/content/renderer/media/gpu/rtc_video_encoder.cc File content/renderer/media/gpu/rtc_video_encoder.cc (right): https://codereview.chromium.org/2435693004/diff/160001/content/renderer/media/gpu/rtc_video_encoder.cc#newcode507 content/renderer/media/gpu/rtc_video_encoder.cc:507: } Can we say that if pending_timestamps_ ever does ...
3 years, 10 months ago (2017-02-15 20:44:50 UTC) #52
emircan
https://codereview.chromium.org/2435693004/diff/160001/content/renderer/media/gpu/rtc_video_encoder.cc File content/renderer/media/gpu/rtc_video_encoder.cc (right): https://codereview.chromium.org/2435693004/diff/160001/content/renderer/media/gpu/rtc_video_encoder.cc#newcode507 content/renderer/media/gpu/rtc_video_encoder.cc:507: } On 2017/02/15 20:44:50, pbos-webrtc wrote: > Can we ...
3 years, 10 months ago (2017-02-15 21:03:16 UTC) #54
nisse-chromium (ooo August 14)
(Still lgtm, if you agree stats are important, that can be a separate cl). https://codereview.chromium.org/2435693004/diff/160001/content/renderer/media/gpu/rtc_video_encoder.cc ...
3 years, 10 months ago (2017-02-16 07:49:50 UTC) #58
pbos
lgtm, I think logging an impression for failures would be a good idea though
3 years, 10 months ago (2017-02-16 19:07:18 UTC) #59
Stefan
This solution looks a bit fragile to me. Isn't it a better choice to actually ...
3 years, 10 months ago (2017-02-22 08:31:15 UTC) #62
emircan
On 2017/02/22 08:31:15, Stefan wrote: > This solution looks a bit fragile to me. Isn't ...
3 years, 10 months ago (2017-02-22 18:09:29 UTC) #63
pbos
On 2017/02/22 18:09:29, emircan wrote: > On 2017/02/22 08:31:15, Stefan wrote: > > This solution ...
3 years, 10 months ago (2017-02-22 18:14:24 UTC) #64
emircan
Rebased it. After offline discussion, we decided to go ahead with this fix while keeping ...
3 years, 9 months ago (2017-03-24 21:38:33 UTC) #70
liberato (no reviews please)
lgtm % nit. https://codereview.chromium.org/2435693004/diff/200001/content/renderer/media/gpu/rtc_video_encoder.cc File content/renderer/media/gpu/rtc_video_encoder.cc (right): https://codereview.chromium.org/2435693004/diff/200001/content/renderer/media/gpu/rtc_video_encoder.cc#newcode43 content/renderer/media/gpu/rtc_video_encoder.cc:43: const int64_t media_timestamp_in_microseconds; why not use ...
3 years, 9 months ago (2017-03-27 19:31:49 UTC) #73
emircan
https://codereview.chromium.org/2435693004/diff/200001/content/renderer/media/gpu/rtc_video_encoder.cc File content/renderer/media/gpu/rtc_video_encoder.cc (right): https://codereview.chromium.org/2435693004/diff/200001/content/renderer/media/gpu/rtc_video_encoder.cc#newcode43 content/renderer/media/gpu/rtc_video_encoder.cc:43: const int64_t media_timestamp_in_microseconds; On 2017/03/27 19:31:49, liberato wrote: > ...
3 years, 9 months ago (2017-03-27 20:20:32 UTC) #76
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2435693004/220001
3 years, 9 months ago (2017-03-27 20:59:38 UTC) #80
commit-bot: I haz the power
3 years, 9 months ago (2017-03-27 22:31:07 UTC) #83
Message was sent while issue was closed.
Committed patchset #8 (id:220001) as
https://chromium.googlesource.com/chromium/src/+/2372de8b97b72d62e9ece294494a...

Powered by Google App Engine
This is Rietveld 408576698