summaryrefslogtreecommitdiffstats
path: root/chrome/gpu/gpu_video_decoder.cc
Commit message (Collapse)AuthorAgeFilesLines
* Move chrome\gpu to content\gpu.jam@chromium.org2011-03-121-427/+0
| | | | | | | TBR=avi Review URL: http://codereview.chromium.org/6684015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77903 0039d316-1c4b-4281-b951-d872f2087c98
* Remove FFmpegVideoDecodeEngine's dependency on AVStream (again).scherkus@chromium.org2011-03-111-8/+11
| | | | | | | | | | | First step of many towards removing DemuxerStream::QueryInterface, AVStreamProvider, and MediaFormat. This time without memory leaks! BUG=28206 TEST=media_unittests git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77875 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 77476 - Remove FFmpegVideoDecodeEngine's dependency on AVStream.tyoshino@chromium.org2011-03-111-11/+8
| | | | | | | | | | | | | | | | | This change seems to have caused Linux Heapcheck bot redness. http://build.chromium.org/p/chromium.memory/builders/Linux%20Heapcheck/builds/4846 First step of many towards removing DemuxerStream::QueryInterface, AVStreamProvider, and MediaFormat. BUG=28206 TEST=media_unittests Review URL: http://codereview.chromium.org/6624062 TBR=scherkus@chromium.org Review URL: http://codereview.chromium.org/6665020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77770 0039d316-1c4b-4281-b951-d872f2087c98
* Move GPU messages to content. I've also switched the IPC structs to use the ↵jam@chromium.org2011-03-101-4/+8
| | | | | | | | new IPC macros that generate serialization code. Review URL: http://codereview.chromium.org/6673003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77721 0039d316-1c4b-4281-b951-d872f2087c98
* Remove FFmpegVideoDecodeEngine's dependency on AVStream.scherkus@chromium.org2011-03-091-8/+11
| | | | | | | | | | | First step of many towards removing DemuxerStream::QueryInterface, AVStreamProvider, and MediaFormat. BUG=28206 TEST=media_unittests Review URL: http://codereview.chromium.org/6624062 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77476 0039d316-1c4b-4281-b951-d872f2087c98
* Move ChildThread and ChildProcess to content. Also move remaining code that ↵jam@chromium.org2011-03-081-1/+1
| | | | | | | | they depend on and which depends on them.TBR=avi Review URL: http://codereview.chromium.org/6628071 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77249 0039d316-1c4b-4281-b951-d872f2087c98
* Implement webkit media metrics in chromium.scherkus@chromium.org2011-02-161-1/+4
| | | | | | | | | | | | | | | This implements the chromium side of the webkit media statistics feature. A followup cl (in webkit) will wire the two sides together. Patch by sjl@chromium.org: http://codereview.chromium.org/6246091/ BUG=71255 TEST=media_unittests git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75050 0039d316-1c4b-4281-b951-d872f2087c98
* Make IPC::Channel::Listener:OnMessageReceived have a return value indicating ↵jam@chromium.org2010-12-241-2/+5
| | | | | | | | | whether a message was processed or not. TBR=brettw Review URL: http://codereview.chromium.org/5978003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70139 0039d316-1c4b-4281-b951-d872f2087c98
* Rename UploadToVideoFrame to ConvertToVideoFrame.tfarina@chromium.org2010-10-301-4/+5
| | | | | | | | | | | (Note: This was a TODO for hclam). BUG=None TEST=trybots Review URL: http://codereview.chromium.org/4113006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64526 0039d316-1c4b-4281-b951-d872f2087c98
* Fix up SharedMemory implementation so that it is more equivalent on Windows ↵dmaclach@chromium.org2010-10-271-4/+1
| | | | | | | | | | | | | vs Posix and enforces exclusive creates. Clean up some naming to make it clearer what size you are getting by changing max_size to created_size. BUG=NONE TEST=BUILD Review URL: http://codereview.chromium.org/4034006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64097 0039d316-1c4b-4281-b951-d872f2087c98
* FBTF: More dtor deinlining. (Can almost see the end!)erg@google.com2010-10-221-0/+11
| | | | | | | | | BUG=none TEST=compiles Review URL: http://codereview.chromium.org/3962004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63527 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Delay loading Media Foundations DLLs"hclam@chromium.org2010-10-191-2/+4
| | | | | | | | | | | | This reverts commit a6294c5672df70fbd5191f25487119f0fa6a3ffe. TBR=eroman BUG=None TEST=None Review URL: http://codereview.chromium.org/3913002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63120 0039d316-1c4b-4281-b951-d872f2087c98
* Delay loading Media Foundations DLLshclam@chromium.org2010-10-191-4/+2
| | | | | | | | | | | Checked with Al we are already delay loading d3d9.dll, so add some extra for MF. BUG=53714 TEST=None Review URL: http://codereview.chromium.org/3859005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63112 0039d316-1c4b-4281-b951-d872f2087c98
* Remove the usage of MFT related objects so they don't get linked.hclam@chromium.org2010-10-081-2/+4
| | | | | | | | | | | | | Linking against MFT seems to create a runtime problem for XP. TBR=scherkus BUG=None TEST=None Review URL: http://codereview.chromium.org/3548021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61929 0039d316-1c4b-4281-b951-d872f2087c98
* Resubmit - move MFT h264 code to media/video and connect to gpu video decoder.hclam@chromium.org2010-10-081-4/+24
| | | | | | | | | | | TBR=scherkus BUG=None TEST=None Review URL: http://codereview.chromium.org/3591020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61925 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Move MFT H264 video decoder implementation and connect it to ↵hclam@chromium.org2010-10-081-24/+4
| | | | | | | | | | | | | | | | | | | GpuVideoDecoder" This reverts commit 8462483619e253dca3717d51e340ed839a6cab1d. Revert "Fix build failure." This reverts commit 8dcd363637ac2e59f9472c0793a0b1fd3c2ad4c7. TBR=scherkus BUG=None TEST=None Review URL: http://codereview.chromium.org/3601019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61922 0039d316-1c4b-4281-b951-d872f2087c98
* Fix build failure.hclam@chromium.org2010-10-081-2/+7
| | | | | | | | | | | TBR=scherkus BUG=None TEST=None Review URL: http://codereview.chromium.org/3516024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61921 0039d316-1c4b-4281-b951-d872f2087c98
* Move MFT H264 video decoder implementation and connect it to GpuVideoDecoderhclam@chromium.org2010-10-081-4/+19
| | | | | | | | | | | | | | | | | | | | Remove media/mf folder and move the video decode engine to media/video. There are some temporary changes in MftH264DecodeEngine to work with GpuVideoDecoder correctly. Removed tests will be added later. Example program will likely be removed permanently due to maintence problem. This patch depends WebKit and ANGLE changes to be able to present video frames onto screen and still have lot of bugs, those problems will be address later. BUG=53714 TEST=Tree is green. This patch doesn't work yet. Review URL: http://codereview.chromium.org/3432030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61918 0039d316-1c4b-4281-b951-d872f2087c98
* Make FakeGlVideoDecodeEngine works in the hardware video decoding architecturehclam@chromium.org2010-10-071-2/+15
| | | | | | | | | | | | | | Add Preroll IPC message for finishing the initialiation of FakeGlVideoDecodeEngine. Also defined methods in WebVideoFrameImpl to access video frame textures. This change depend on a WebKit change to succesfully display the textures. BUG=53714 TEST=Tree is green. This still needs WebKit changes to work. Review URL: http://codereview.chromium.org/3472016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61853 0039d316-1c4b-4281-b951-d872f2087c98
* Implement GpuVideoDecoderHost and unit testshclam@chromium.org2010-10-071-10/+13
| | | | | | | | | | | | | | Add the following feature to GpuVideoDecoderHost: 1. Video frame allocation / release. 2. ProduceVideoFrame / ConsumeVideoFrame using frames allocated. 3. Change GpuVideoDecoder creation to asynchronous. BUG=53714 TEST=unit_tests --gtest_filter=GpuVideoDecoder* Review URL: http://codereview.chromium.org/3397027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61824 0039d316-1c4b-4281-b951-d872f2087c98
* shared_memory: remove wstrings, fix callers.evan@chromium.org2010-09-291-1/+1
| | | | | | | | | BUG=23581 TEST=compiles Review URL: http://codereview.chromium.org/3555002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60985 0039d316-1c4b-4281-b951-d872f2087c98
* Implement video frame exchange in GpuVideoDecoder and testshclam@chromium.org2010-09-291-48/+61
| | | | | | | | | | | | Implement ProduceVideoFrame() in GpuVideoDecoder and unit tests for testing the loginc in GpuVideoDecoder. BUG=53714 TEST=unit_tests --gtest_filter=GpuVideoDecoder* Review URL: http://codereview.chromium.org/3414003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60902 0039d316-1c4b-4281-b951-d872f2087c98
* Revert r60126 that broke the build.hclam@chromium.org2010-09-221-5/+1
| | | | | | | | | | | TBR=scherkus BUG=53714 TEST= Review URL: http://codereview.chromium.org/3393017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60130 0039d316-1c4b-4281-b951-d872f2087c98
* SendAllocateVideoFrames to the rendererhclam@chromium.org2010-09-211-1/+5
| | | | | | | | | | | This is separated from a previous patch due to link error on mac. BUG=53714 TEST=Mac build bots are happy Review URL: http://codereview.chromium.org/3414011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60126 0039d316-1c4b-4281-b951-d872f2087c98
* Build fix. Chromium mac compiles again...hclam@chromium.org2010-09-171-5/+1
| | | | | | | | | | | Passed try bot but still failed, so removed the offending code. BUG=53714 TEST= Review URL: http://codereview.chromium.org/3440010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59861 0039d316-1c4b-4281-b951-d872f2087c98
* Resubmit GpuVideoDecoder and related patches.hclam@chromium.org2010-09-171-110/+101
| | | | | | | | | BUG=53714 TEST=Tree is green Review URL: http://codereview.chromium.org/3442006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59860 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 59784 - GpuVideoDecoder to use GpuVideoDevice and IPC messages to ↵mlloyd@chromium.org2010-09-171-76/+107
| | | | | | | | | | | | | | | | | | complete VideoFrame allocation GpuVideoDecedoer now sends IPC messages to allocation GL textures. It also uses GpuVideoDevice to create VideoFrames from the GL textures. These GL textures are passed into VideoDecodeEngine. BUG=53714 TEST=Tree is green Review URL: http://codereview.chromium.org/3335019 TBR=hclam@chromium.org Review URL: http://codereview.chromium.org/3451007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59790 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 59785 - Implement FakeGlVideoDecodeEngine using FakeGlVideoDecodeContextmlloyd@chromium.org2010-09-171-31/+9
| | | | | | | | | | | | | | | | | Defines UploadToVideoFrame in VideoDecodeContext. FakeGlVideoDecodeEngine now uses FakeGlVideoDecodeContext to video frame allocation and uploading. BUG=53714 TEST=Tree is green Review URL: http://codereview.chromium.org/3312022 TBR=hclam@chromium.org Review URL: http://codereview.chromium.org/3436014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59789 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 59786 - Fix build.mlloyd@chromium.org2010-09-171-2/+1
| | | | | | | | | | | | BUG= TEST= Review URL: http://codereview.chromium.org/3400013 TBR=hclam@chromium.org Review URL: http://codereview.chromium.org/3415013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59788 0039d316-1c4b-4281-b951-d872f2087c98
* Fix build.hclam@chromium.org2010-09-171-1/+2
| | | | | | | | | BUG= TEST= Review URL: http://codereview.chromium.org/3400013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59786 0039d316-1c4b-4281-b951-d872f2087c98
* Implement FakeGlVideoDecodeEngine using FakeGlVideoDecodeContexthclam@chromium.org2010-09-171-9/+31
| | | | | | | | | | | | | | Defines UploadToVideoFrame in VideoDecodeContext. FakeGlVideoDecodeEngine now uses FakeGlVideoDecodeContext to video frame allocation and uploading. BUG=53714 TEST=Tree is green Review URL: http://codereview.chromium.org/3312022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59785 0039d316-1c4b-4281-b951-d872f2087c98
* GpuVideoDecoder to use GpuVideoDevice and IPC messages to complete ↵hclam@chromium.org2010-09-171-107/+76
| | | | | | | | | | | | | | | VideoFrame allocation GpuVideoDecedoer now sends IPC messages to allocation GL textures. It also uses GpuVideoDevice to create VideoFrames from the GL textures. These GL textures are passed into VideoDecodeEngine. BUG=53714 TEST=Tree is green Review URL: http://codereview.chromium.org/3335019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59784 0039d316-1c4b-4281-b951-d872f2087c98
* Add IPC messages for allocation video frames for hardware video decoderhclam@chromium.org2010-09-171-13/+3
| | | | | | | | | | | | | | | Allocation of video frames should be originated from the VideoDecodeEngine in the GPU process. Adding messages that will allow allocation be done during runtime instead of initialization. Also did some cleanup in gpu_video_common.cc. BUG=53714 TEST=Tree is green Review URL: http://codereview.chromium.org/3361017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59775 0039d316-1c4b-4281-b951-d872f2087c98
* Defines GpuVideoDevice for video frame allocationhclam@chromium.org2010-09-161-1/+43
| | | | | | | | | | | | | | GpuVideoDecoder now implements VideoDecodeContext. Also defined a GpuVideoDevice that works with GpuVideoDecoder. No implemetation in this change, just added comments to describe the work flow. BUG=53714 TEST=Tree is green Review URL: http://codereview.chromium.org/3295027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59627 0039d316-1c4b-4281-b951-d872f2087c98
* Added FakeGlVideoDecodeEngine to exercise the IPC protocol for hardware ↵hclam@chromium.org2010-09-131-52/+70
| | | | | | | | | | | | | | | | video decoding There are several things done in this patch: 1. Added FakeGlVideoDecodeEngine 2. Fixed style problem in VideoDecodeEngine and gpu_video_common.h 3. Added route to pass texture from gpu process to WebKit BUG=53714 TEST=Tree is green Review URL: http://codereview.chromium.org/3335014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59223 0039d316-1c4b-4281-b951-d872f2087c98
* Clean up texture types in VideoFramehclam@chromium.org2010-09-091-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | A VideoFrame should only reveal it self as system memory or textures (GL or D3D). All the implementation details should be hidden. This removed EGL image, OMXBUFFERHEADERTYPE, D3D surface and MF buffer from video frame. We should only have 3 different types of video frames: 1. System memory Whether it is allocated by VideoFrame or is just memory mapped should fall into this category. Memory can either be allocated internally or provided externally. 2. GL texture EGL image or just plain GL texture should fall into this area. Decode engines should do all the necessary operations to convert texture to GL textures. 3. D3D texture Whether we are using Media Foundation or DxVA2, if we are on windows we should convert everything to D3D texture and again all the operations involved are done inside the decode engine. BUG=53714 TEST=Tree is green. This is just API change. Review URL: http://codereview.chromium.org/3303014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58899 0039d316-1c4b-4281-b951-d872f2087c98
* Rename all FillThisBuffer and EmptyThisBuffer to something more meaningfulhclam@chromium.org2010-09-051-6/+6
| | | | | | | | | | | | The FillThisBuffer and EmptyThisBuffer names are very confusing. Anyone new working on the code probably won't understand the code at all. I'm changing the names to something more meaningful, which state the actual action taken by the methods. It is also easier to tell whether the method is for input pin or for output pin by their names. Review URL: http://codereview.chromium.org/3201013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58604 0039d316-1c4b-4281-b951-d872f2087c98
* Complete initializing a GPU video decoder in a GLES2 contexthclam@chromium.org2010-09-031-4/+5
| | | | | | | | | | | | | | | | | In this patch a ggl::Context is connected to the GpuVideoDecoderHost in the renderer process. In the GPU process the GpuVideoDecoder is connected to a gles2::GLES2Decoder. These changes will be used in the future to switch context before issuing video decode commands. This is also needed by the GPU process to translate a client texture ID to a service texture ID in the GPU video decoder. BUG=53714 TEST=none Review URL: http://codereview.chromium.org/3266008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58518 0039d316-1c4b-4281-b951-d872f2087c98
* FBTF: Move individual XXXMsg_Params structs to a new file.erg@google.com2010-08-241-1/+3
| | | | | | | | | | | | | | | | The new file, render_messages_params.h, is included in 57 files, while render_messages.h is included in 176 files. Moving the Params structs to their own file allow pruning the included headers. (Part 2 of this cleanup will be sorting the individual structs into themes to further minimize header inclusion.) BUG=51411 TEST=compiles Review URL: http://codereview.chromium.org/3119035 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57229 0039d316-1c4b-4281-b951-d872f2087c98
* media: use VideoDecodeEngine interface in gpu_video_decoder abstraction.jiesun@google.com2010-08-171-9/+214
| | | | | | | | some logics are moved into system memory path only. ( such as allocation of output buffer, and usage of FTBDoneACK messages. Review URL: http://codereview.chromium.org/3141014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56358 0039d316-1c4b-4281-b951-d872f2087c98
* Initialize the members and avoid inlining the constructors.finnur@chromium.org2010-08-121-1/+4
| | | | | | | | | | BUG=None TEST=None CID=12377, 12379, 12380, 12381 Review URL: http://codereview.chromium.org/3176004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55863 0039d316-1c4b-4281-b951-d872f2087c98
* 1. ipc_video_decoder.cc/h is media pipeline filter which use the gpu decoder ↵jiesun@google.com2010-08-101-0/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 Review URL: http://codereview.chromium.org/2873089 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55516 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 55405 - Special thanks for in-ming cheng's MFT hardware decodering code.ananta@chromium.org2010-08-091-108/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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_decoder_mft.cc/h media foundation transform hardware decoder which run on windows 7 only. 5. gpu_video_service_host.cc/h is singleton in renderer process which provide proxy for gpu_video_service. 6. 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. 7. 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 Review URL: http://codereview.chromium.org/2873089 TBR=jiesun@google.com Review URL: http://codereview.chromium.org/3020077 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55419 0039d316-1c4b-4281-b951-d872f2087c98
* Special thanks for in-ming cheng's MFT hardware decodering code.jiesun@google.com2010-08-091-0/+108
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_decoder_mft.cc/h media foundation transform hardware decoder which run on windows 7 only. 5. gpu_video_service_host.cc/h is singleton in renderer process which provide proxy for gpu_video_service. 6. 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. 7. 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 Review URL: http://codereview.chromium.org/2873089 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55405 0039d316-1c4b-4281-b951-d872f2087c98