Add support for DX11 based H/W video decoding on Windows 8+
commit3b01db9b22725d4e7d6422d8dadf48dce8ac4794
authorananta <ananta@chromium.org>
Sat, 28 Feb 2015 00:39:18 +0000 (27 16:39 -0800)
committerCommit bot <commit-bot@chromium.org>
Sat, 28 Feb 2015 00:40:00 +0000 (28 00:40 +0000)
tree0282a9b6f8a584158667d7e5ab7714eb1c98a8fc
parenta0c036305b748e1617e56c624cb0f4c49c24e6e0
Add support for DX11 based H/W video decoding on Windows 8+

    This is only available on Windows 8+ because the media foundation API which exposes the device
    manager to be pased to the decoder MFCreateDXGIDeviceManager only exists on Windows 8+.

    Changes in this patch are mostly around using DX11 or D3D wherever needed. These are as below:-

    1. In the initialization code path where we use D3D or DX11 based on whether we are on Windows 8+
       and ANGLE and the decoder say they support DX11.

    2. The output frame processing code where we extract the DX11 texture and copy it out to ANGLE. One change
       here is that DX11 does not provide an automatic way for format conversion for textures. The decoder outputs
       YUV12 textures and ANGLE expects RGB. We can achieve this by setting a shader for conversion. That seemed
       like too much work. Thankfully there is a video processor media foundation transform on Windows which
       does the conversion for us on the GPU. We use this object to convert the output frame and copy it out to
       ANGLE.

    3. We pass the GL context to the decoder to enable us to query ANGLE to see if it is using D3D or DX11.

    BUG=456418

Review URL: https://codereview.chromium.org/922003002

Cr-Commit-Position: refs/heads/master@{#318560}
content/common/BUILD.gn
content/common/gpu/media/dxva_video_decode_accelerator.cc
content/common/gpu/media/dxva_video_decode_accelerator.h
content/common/gpu/media/gpu_video_decode_accelerator.cc
content/common/gpu/media/video_decode_accelerator_unittest.cc
content/content_common.gypi