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

Issue 2427053002: Move video encode accelerator IPC messages to GPU IO thread (Closed)

Created:
4 years, 2 months ago by emircan
Modified:
4 years, 1 month ago
CC:
chromium-reviews, posciak+watch_chromium.org, piman+watch_chromium.org, feature-media-reviews_chromium.org
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Move video encode accelerator IPC messages to GPU IO thread This CL moves video encode accelerator IPC messages to GPU IO thread instead of the main thread. This helps stabilize frame rate as well as reduce jitter on Windows. Currently, a lot of these calls get huge delays and results in dropped frames. In order to do this with respect to each platform, TryToSetupEncodeOnSeparateThread() is added to VideoEncodeAccelerator interface. If this method return false, we keep all IPC messages on main thread like before. It returns false by default. Note: Initially, I only moved AcceleratedVideoEncoderMsg_Encode call to IO thread, but then we started waiting for output buffers for a long time and again stayed below 30 fps. Therefore I moved all three functions to IO thread and reached ~30 fps, even when switching between tabs. BUG=657217, 649275 TEST=RunsAudioVideoCall60SecsAndLogsInternalMetricsH264 browser test on Windows result in stable 30 fps. Committed: https://crrev.com/66ea9831c5714e7d25e544f31bce201cdb35c4af Cr-Commit-Position: refs/heads/master@{#430882}

Patch Set 1 #

Total comments: 20

Patch Set 2 : sanders@ comments. #

Patch Set 3 : Fix log order. #

Total comments: 36

Patch Set 4 : posciak@ comments. #

Total comments: 6

Patch Set 5 : posciak@ comments. #

Total comments: 4

Patch Set 6 : posciak@ comments. #

Patch Set 7 : Add an encoder worker thread for map(). #

Patch Set 8 : Use encoder worker thread only on IO. #

Patch Set 9 : posciak@ comments. #

Total comments: 18

Patch Set 10 : posciak@ comments. #

Total comments: 4

Patch Set 11 : posciak@ comments. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+509 lines, -131 lines) Patch
M media/gpu/ipc/service/gpu_video_encode_accelerator.h View 1 2 3 4 5 6 7 8 9 10 6 chunks +63 lines, -6 lines 0 comments Download
M media/gpu/ipc/service/gpu_video_encode_accelerator.cc View 1 2 3 4 5 6 7 8 9 9 chunks +246 lines, -66 lines 0 comments Download
M media/gpu/ipc/service/media_gpu_channel.cc View 1 chunk +2 lines, -2 lines 0 comments Download
M media/gpu/media_foundation_video_encode_accelerator_win.h View 1 2 3 4 6 chunks +25 lines, -18 lines 0 comments Download
M media/gpu/media_foundation_video_encode_accelerator_win.cc View 1 2 3 4 5 6 7 8 9 10 18 chunks +44 lines, -27 lines 0 comments Download
M media/gpu/video_encode_accelerator_unittest.cc View 1 2 3 4 5 6 7 8 9 14 chunks +101 lines, -10 lines 0 comments Download
M media/video/video_encode_accelerator.h View 1 2 3 4 5 6 7 8 9 2 chunks +22 lines, -2 lines 0 comments Download
M media/video/video_encode_accelerator.cc View 1 2 3 1 chunk +6 lines, -0 lines 0 comments Download

Messages

Total messages: 122 (93 generated)
emircan
PTAL.
4 years, 2 months ago (2016-10-19 22:13:25 UTC) #25
sandersd (OOO until July 31)
On 2016/10/19 22:13:25, emircan wrote: > PTAL. To help with this review, I have one ...
4 years, 2 months ago (2016-10-20 23:12:49 UTC) #38
emircan
On 2016/10/20 23:12:49, sandersd wrote: > For VDAs, the threading is complicated by requirements that ...
4 years, 2 months ago (2016-10-20 23:58:16 UTC) #39
sandersd (OOO until July 31)
Looks good on first pass, but I want to review the main logic more thoroughly ...
4 years, 2 months ago (2016-10-21 01:01:00 UTC) #40
sandersd (OOO until July 31)
Just few nits and low-priority requests. https://codereview.chromium.org/2427053002/diff/100001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc File media/gpu/ipc/service/gpu_video_encode_accelerator.cc (right): https://codereview.chromium.org/2427053002/diff/100001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc#newcode114 media/gpu/ipc/service/gpu_video_encode_accelerator.cc:114: // This will ...
4 years, 2 months ago (2016-10-21 18:41:03 UTC) #41
emircan
https://codereview.chromium.org/2427053002/diff/100001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc File media/gpu/ipc/service/gpu_video_encode_accelerator.cc (right): https://codereview.chromium.org/2427053002/diff/100001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc#newcode114 media/gpu/ipc/service/gpu_video_encode_accelerator.cc:114: // This will delete |owner_| and |this|. On 2016/10/21 ...
4 years, 1 month ago (2016-10-24 19:44:53 UTC) #42
sandersd (OOO until July 31)
lgtm
4 years, 1 month ago (2016-10-24 21:44:21 UTC) #48
Pawel Osciak
https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc File media/gpu/ipc/service/gpu_video_encode_accelerator.cc (right): https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc#newcode107 media/gpu/ipc/service/gpu_video_encode_accelerator.cc:107: void OnChannelError() override { sender_ = NULL; } sender_ ...
4 years, 1 month ago (2016-10-25 01:44:05 UTC) #52
emircan
https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc File media/gpu/ipc/service/gpu_video_encode_accelerator.cc (right): https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc#newcode107 media/gpu/ipc/service/gpu_video_encode_accelerator.cc:107: void OnChannelError() override { sender_ = NULL; } On ...
4 years, 1 month ago (2016-10-25 21:57:51 UTC) #55
Pawel Osciak
https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc File media/gpu/ipc/service/gpu_video_encode_accelerator.cc (right): https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc#newcode352 media/gpu/ipc/service/gpu_video_encode_accelerator.cc:352: // Wrap into a SharedMemory in the beginning, so ...
4 years, 1 month ago (2016-10-27 01:45:19 UTC) #58
emircan
https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc File media/gpu/ipc/service/gpu_video_encode_accelerator.cc (right): https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc#newcode352 media/gpu/ipc/service/gpu_video_encode_accelerator.cc:352: // Wrap into a SharedMemory in the beginning, so ...
4 years, 1 month ago (2016-10-27 17:53:30 UTC) #60
Pawel Osciak
https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc File media/gpu/ipc/service/gpu_video_encode_accelerator.cc (right): https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc#newcode352 media/gpu/ipc/service/gpu_video_encode_accelerator.cc:352: // Wrap into a SharedMemory in the beginning, so ...
4 years, 1 month ago (2016-10-31 07:40:22 UTC) #64
emircan
https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc File media/gpu/ipc/service/gpu_video_encode_accelerator.cc (right): https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc#newcode352 media/gpu/ipc/service/gpu_video_encode_accelerator.cc:352: // Wrap into a SharedMemory in the beginning, so ...
4 years, 1 month ago (2016-10-31 19:45:08 UTC) #67
Pawel Osciak
https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc File media/gpu/ipc/service/gpu_video_encode_accelerator.cc (right): https://codereview.chromium.org/2427053002/diff/140001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc#newcode352 media/gpu/ipc/service/gpu_video_encode_accelerator.cc:352: // Wrap into a SharedMemory in the beginning, so ...
4 years, 1 month ago (2016-11-01 04:59:58 UTC) #70
emircan
On 2016/11/01 04:59:58, Pawel Osciak wrote: > > SGTM, thanks! That would be in this ...
4 years, 1 month ago (2016-11-01 05:05:49 UTC) #71
Pawel Osciak
On 2016/11/01 05:05:49, emircan wrote: > On 2016/11/01 04:59:58, Pawel Osciak wrote: > > > ...
4 years, 1 month ago (2016-11-01 05:13:25 UTC) #72
emircan
On 2016/11/01 05:13:25, Pawel Osciak wrote: > On 2016/11/01 05:05:49, emircan wrote: > > On ...
4 years, 1 month ago (2016-11-02 02:26:58 UTC) #75
chromium-reviews
On Mon, Oct 31, 2016 at 12:45 PM, <emircan@chromium.org> wrote: > > https://codereview.chromium.org/2427053002/diff/140001/ > media/gpu/ipc/service/gpu_video_encode_accelerator.cc ...
4 years, 1 month ago (2016-11-02 02:39:35 UTC) #77
emircan
Based on offline discussion, map() is within the threshold of using gpu main thread. (Gpu ...
4 years, 1 month ago (2016-11-02 21:19:21 UTC) #85
Pawel Osciak
On 2016/11/02 21:19:21, emircan wrote: > Based on offline discussion, map() is within the threshold ...
4 years, 1 month ago (2016-11-04 04:56:48 UTC) #93
emircan
On 2016/11/04 04:56:48, Pawel Osciak wrote: > On 2016/11/02 21:19:21, emircan wrote: > > Based ...
4 years, 1 month ago (2016-11-05 02:45:11 UTC) #96
Pawel Osciak
Thanks! https://codereview.chromium.org/2427053002/diff/300001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc File media/gpu/ipc/service/gpu_video_encode_accelerator.cc (right): https://codereview.chromium.org/2427053002/diff/300001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc#newcode109 media/gpu/ipc/service/gpu_video_encode_accelerator.cc:109: : owner_(owner), host_route_id_(host_route_id), sender_(nullptr) {} Nit: perhaps sender_ ...
4 years, 1 month ago (2016-11-07 02:00:36 UTC) #99
emircan
https://codereview.chromium.org/2427053002/diff/300001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc File media/gpu/ipc/service/gpu_video_encode_accelerator.cc (right): https://codereview.chromium.org/2427053002/diff/300001/media/gpu/ipc/service/gpu_video_encode_accelerator.cc#newcode109 media/gpu/ipc/service/gpu_video_encode_accelerator.cc:109: : owner_(owner), host_route_id_(host_route_id), sender_(nullptr) {} On 2016/11/07 02:00:35, Pawel ...
4 years, 1 month ago (2016-11-07 19:35:29 UTC) #100
Pawel Osciak
https://codereview.chromium.org/2427053002/diff/340001/media/gpu/ipc/service/gpu_video_encode_accelerator.h File media/gpu/ipc/service/gpu_video_encode_accelerator.h (right): https://codereview.chromium.org/2427053002/diff/340001/media/gpu/ipc/service/gpu_video_encode_accelerator.h#newcode115 media/gpu/ipc/service/gpu_video_encode_accelerator.h:115: // Notifies renderer that input is completed. Nit: perhaps ...
4 years, 1 month ago (2016-11-09 01:03:02 UTC) #110
emircan
https://codereview.chromium.org/2427053002/diff/340001/media/gpu/ipc/service/gpu_video_encode_accelerator.h File media/gpu/ipc/service/gpu_video_encode_accelerator.h (right): https://codereview.chromium.org/2427053002/diff/340001/media/gpu/ipc/service/gpu_video_encode_accelerator.h#newcode115 media/gpu/ipc/service/gpu_video_encode_accelerator.h:115: // Notifies renderer that input is completed. On 2016/11/09 ...
4 years, 1 month ago (2016-11-09 01:20:23 UTC) #112
Pawel Osciak
lgtm
4 years, 1 month ago (2016-11-09 01:24:39 UTC) #114
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/2427053002/360001
4 years, 1 month ago (2016-11-09 01:41:38 UTC) #118
commit-bot: I haz the power
Committed patchset #11 (id:360001)
4 years, 1 month ago (2016-11-09 06:52:12 UTC) #120
commit-bot: I haz the power
4 years, 1 month ago (2016-11-09 06:55:45 UTC) #122
Message was sent while issue was closed.
Patchset 11 (id:??) landed as
https://crrev.com/66ea9831c5714e7d25e544f31bce201cdb35c4af
Cr-Commit-Position: refs/heads/master@{#430882}

Powered by Google App Engine
This is Rietveld 408576698