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

Issue 2873089: media: gpu process ipc video decoder implementation (Closed)

Created:
10 years, 4 months ago by jiesun
Modified:
10 years, 4 months ago
CC:
chromium-reviews, fbarchard, ben+cc_chromium.org, jam, apatrick_chromium, darin-cc_chromium.org, awong, brettw-cc_chromium.org, Alpha Left Google, scherkus (not reviewing)
Visibility:
Public.

Description

1. ipc_video_decoder.cc/h is media pipeline filter which use the gpu decoder facilities in video stack. it is only enabled when (a) hardware composition is on (b) hardware decoding command line is on (c) h264 codec is specified. 2. gpu_video_service.cc/h is a singleton in gpu process which provide video services for renderer process, through it we could create decoder. ( in my imagination, in the future, we could create encoder or capturer too) 3. gpu_video_decoder.cc/h. abstract interface for hardware decoder. 4. gpu_video_service_host.cc/h is singleton in renderer process which provide proxy for gpu_video_service. 5. gpu_video_decoder_host.cc/h is proxy for gpu_video_decoder. (1 to 1 map).basically there is one global GpuVideoService in GPU process, one GpuVideoServiceHost in Renderer process. for each renderer process, there are could be multiple renderer view, each could had multiple GpuVideoDecoderHost the connect to GpuVideoDeocder through GPUCHannelHOst/GpuChannel. 6. gpu_video_common.cc/h: IPC message definition and pickle/marshaling support. ISSUES: 1. in media pipeline, we need let decoder to determine if bit stream filter should be used instead of let command line to determine it. 2. stop readback from D3D surface use ANGLE. 3. Flush logic still need fine tuning. 4. CreateThread in GpuVideoDecoder, and post message in message handler, and derived classs handle message loop. ? 5. Error handling. 6. Input ring buffer implementation. Current impl is naive. 7.Add output queue for MFT decoder. 8. Query Capabilities at GetVideoServices()... BUG=None TEST=Windows7 Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=55516

Patch Set 1 : '' #

Patch Set 2 : '' #

Patch Set 3 : '' #

Patch Set 4 : '' #

Total comments: 2

Patch Set 5 : '' #

Patch Set 6 : '' #

Patch Set 7 : '' #

Patch Set 8 : '' #

Total comments: 46

Patch Set 9 : '' #

Total comments: 1

Patch Set 10 : '' #

Patch Set 11 : git #

Patch Set 12 : remove mft #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1786 lines, -3 lines) Patch
M chrome/browser/renderer_host/browser_render_process_host.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +2 lines, -0 lines 0 comments Download
M chrome/chrome.gyp View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +4 lines, -0 lines 0 comments Download
M chrome/chrome_common.gypi View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +2 lines, -0 lines 0 comments Download
M chrome/chrome_renderer.gypi View 1 2 3 4 5 6 7 8 9 10 3 chunks +7 lines, -0 lines 0 comments Download
M chrome/common/gpu_messages_internal.h View 1 2 3 4 5 6 7 8 9 10 3 chunks +80 lines, -0 lines 0 comments Download
A chrome/common/gpu_video_common.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +172 lines, -0 lines 0 comments Download
A chrome/common/gpu_video_common.cc View 1 2 3 4 5 6 7 8 9 10 1 chunk +211 lines, -0 lines 0 comments Download
M chrome/gpu/gpu_channel.h View 1 2 3 4 5 6 7 8 9 10 2 chunks +5 lines, -0 lines 0 comments Download
M chrome/gpu/gpu_channel.cc View 1 2 3 4 5 6 7 8 9 10 4 chunks +52 lines, -0 lines 0 comments Download
A chrome/gpu/gpu_video_decoder.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +76 lines, -0 lines 0 comments Download
A chrome/gpu/gpu_video_decoder.cc View 1 2 3 4 5 6 7 8 9 10 1 chunk +108 lines, -0 lines 0 comments Download
A chrome/gpu/gpu_video_service.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +56 lines, -0 lines 0 comments Download
A chrome/gpu/gpu_video_service.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +75 lines, -0 lines 0 comments Download
M chrome/renderer/DEPS View 6 7 8 9 10 1 chunk +1 line, -0 lines 0 comments Download
M chrome/renderer/gpu_channel_host.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +0 lines, -1 line 0 comments Download
M chrome/renderer/gpu_channel_host.cc View 1 2 3 4 5 6 7 8 9 10 2 chunks +4 lines, -0 lines 0 comments Download
A chrome/renderer/gpu_video_decoder_host.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +126 lines, -0 lines 0 comments Download
A chrome/renderer/gpu_video_decoder_host.cc View 1 2 3 4 5 6 7 8 9 10 1 chunk +199 lines, -0 lines 0 comments Download
A chrome/renderer/gpu_video_service_host.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +51 lines, -0 lines 0 comments Download
A chrome/renderer/gpu_video_service_host.cc View 1 2 3 4 5 6 7 8 9 10 1 chunk +91 lines, -0 lines 0 comments Download
A chrome/renderer/media/ipc_video_decoder.h View 5 6 7 8 9 10 1 chunk +100 lines, -0 lines 0 comments Download
A chrome/renderer/media/ipc_video_decoder.cc View 5 6 7 8 9 10 1 chunk +344 lines, -0 lines 0 comments Download
M chrome/renderer/render_thread.cc View 1 2 3 4 5 6 7 8 9 10 11 2 chunks +3 lines, -0 lines 0 comments Download
M chrome/renderer/render_view.cc View 1 2 3 4 5 6 7 8 9 10 11 3 chunks +9 lines, -0 lines 0 comments Download
M ipc/ipc_message_utils.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +2 lines, -0 lines 0 comments Download
M media/base/media_switches.h View 5 6 7 8 9 10 1 chunk +1 line, -0 lines 0 comments Download
M media/base/media_switches.cc View 5 6 7 8 9 10 1 chunk +3 lines, -0 lines 0 comments Download
M media/filters/ffmpeg_demuxer.cc View 1 2 3 4 5 6 7 8 9 10 1 chunk +2 lines, -2 lines 0 comments Download

Messages

Total messages: 17 (0 generated)
jiesun
Please review. Please keep in mind that we are not going to finalize this in ...
10 years, 4 months ago (2010-08-03 16:40:47 UTC) #1
Alpha Left Google
I haven't looked into the IPC part, but here's some high level comments about the ...
10 years, 4 months ago (2010-08-03 19:34:01 UTC) #2
scherkus (not reviewing)
we've got to do some restructuring as you have media code depending on chrome code ...
10 years, 4 months ago (2010-08-03 19:56:40 UTC) #3
jiesun
Moving ipc_video_decoder.cc/h to chrome/renderer/media mean add dependency of ffmpeg to chrome renderer, is that what ...
10 years, 4 months ago (2010-08-03 21:10:17 UTC) #4
scherkus (not reviewing)
On 2010/08/03 21:10:17, jiesun wrote: > Moving ipc_video_decoder.cc/h to chrome/renderer/media mean add dependency of > ...
10 years, 4 months ago (2010-08-03 21:44:22 UTC) #5
scherkus (not reviewing)
Also there are no unit tests.. I would strongly encourage you to write some after ...
10 years, 4 months ago (2010-08-03 22:44:42 UTC) #6
jiesun
how to fix the "check deps" error on linux bot? ERROR in /b/slave/linux/build/src/chrome/renderer/media/ipc_video_decoder.cc Illegal include: ...
10 years, 4 months ago (2010-08-03 23:03:19 UTC) #7
scherkus (not reviewing)
Two ways: 1) Fix the root issue by not using QueryInterface 2) Adjust the rules ...
10 years, 4 months ago (2010-08-03 23:06:34 UTC) #8
jiesun
I tried to remove QueryInterface: It seems that I only need width and height and ...
10 years, 4 months ago (2010-08-04 15:36:17 UTC) #9
fbarchard
At some point we want aspect ratio, which is a scaled width and height. Keep ...
10 years, 4 months ago (2010-08-04 15:52:42 UTC) #10
jiesun
IIRC, SAR is encoded inside elementary stream (SEI?), therefore I doubt we need that information ...
10 years, 4 months ago (2010-08-04 16:01:57 UTC) #11
jiesun
ping!
10 years, 4 months ago (2010-08-05 16:18:58 UTC) #12
Alpha Left Google
Brett: Can you look into the IPC part? Here's my major concerns for the media ...
10 years, 4 months ago (2010-08-05 18:55:11 UTC) #13
brettw
I didn't really look at the Windows video code, I assume the other reviewers covered ...
10 years, 4 months ago (2010-08-05 21:22:51 UTC) #14
jiesun
thanks for reviewing, please have another look. address Alpha's concern: As I said in patch ...
10 years, 4 months ago (2010-08-05 22:41:36 UTC) #15
Alpha Left Google
Sounds good to me. LGTM from my side.
10 years, 4 months ago (2010-08-05 22:43:56 UTC) #16
brettw
10 years, 4 months ago (2010-08-05 23:17:46 UTC) #17
LGTM, I think we can continue to work on this in subsequent passes.

http://codereview.chromium.org/2873089/diff/75001/45048
File chrome/gpu/gpu_video_service.h (right):

http://codereview.chromium.org/2873089/diff/75001/45048#newcode33
chrome/gpu/gpu_video_service.h:33: struct GpuVideoDecoderInfo {
Nit: indented 1 too many spaces.

Powered by Google App Engine
This is Rietveld 408576698