Index: media/mf/d3d_util.cc |
=================================================================== |
--- media/mf/d3d_util.cc (revision 57106) |
+++ media/mf/d3d_util.cc (working copy) |
@@ -1,89 +0,0 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "media/mf/d3d_util.h" |
- |
-#include <d3d9.h> |
-#include <dxva2api.h> |
- |
-#include "base/scoped_comptr_win.h" |
- |
-namespace media { |
- |
-IDirect3DDeviceManager9* CreateD3DDevManager(HWND video_window, |
- IDirect3D9** direct3d, |
- IDirect3DDevice9** device) { |
- ScopedComPtr<IDirect3DDeviceManager9> dev_manager; |
- ScopedComPtr<IDirect3D9> d3d; |
- d3d.Attach(Direct3DCreate9(D3D_SDK_VERSION)); |
- if (d3d == NULL) { |
- LOG(ERROR) << "Failed to create D3D9"; |
- return NULL; |
- } |
- D3DPRESENT_PARAMETERS present_params = {0}; |
- |
- // Once we know the dimensions, we need to reset using |
- // AdjustD3DDeviceBackBufferDimensions(). |
- present_params.BackBufferWidth = 0; |
- present_params.BackBufferHeight = 0; |
- present_params.BackBufferFormat = D3DFMT_UNKNOWN; |
- present_params.BackBufferCount = 1; |
- present_params.SwapEffect = D3DSWAPEFFECT_DISCARD; |
- present_params.hDeviceWindow = video_window; |
- present_params.Windowed = TRUE; |
- present_params.Flags = D3DPRESENTFLAG_VIDEO; |
- present_params.FullScreen_RefreshRateInHz = 0; |
- present_params.PresentationInterval = 0; |
- |
- ScopedComPtr<IDirect3DDevice9> temp_device; |
- |
- // D3DCREATE_HARDWARE_VERTEXPROCESSING specifies hardware vertex processing. |
- // (Is it even needed for just video decoding?) |
- HRESULT hr = d3d->CreateDevice(D3DADAPTER_DEFAULT, |
- D3DDEVTYPE_HAL, |
- NULL, |
- D3DCREATE_HARDWARE_VERTEXPROCESSING, |
- &present_params, |
- temp_device.Receive()); |
- if (FAILED(hr)) { |
- LOG(ERROR) << "Failed to create D3D Device"; |
- return NULL; |
- } |
- UINT dev_manager_reset_token = 0; |
- hr = DXVA2CreateDirect3DDeviceManager9(&dev_manager_reset_token, |
- dev_manager.Receive()); |
- if (FAILED(hr)) { |
- LOG(ERROR) << "Couldn't create D3D Device manager"; |
- return NULL; |
- } |
- hr = dev_manager->ResetDevice(temp_device.get(), dev_manager_reset_token); |
- if (FAILED(hr)) { |
- LOG(ERROR) << "Failed to set device to device manager"; |
- return NULL; |
- } |
- *direct3d = d3d.Detach(); |
- *device = temp_device.Detach(); |
- return dev_manager.Detach(); |
-} |
- |
-bool AdjustD3DDeviceBackBufferDimensions(IDirect3DDevice9* device, |
- HWND video_window, |
- int width, |
- int height) { |
- D3DPRESENT_PARAMETERS present_params = {0}; |
- present_params.BackBufferWidth = width; |
- present_params.BackBufferHeight = height; |
- present_params.BackBufferFormat = D3DFMT_UNKNOWN; |
- present_params.BackBufferCount = 1; |
- present_params.SwapEffect = D3DSWAPEFFECT_DISCARD; |
- present_params.hDeviceWindow = video_window; |
- present_params.Windowed = TRUE; |
- present_params.Flags = D3DPRESENTFLAG_VIDEO; |
- present_params.FullScreen_RefreshRateInHz = 0; |
- present_params.PresentationInterval = 0; |
- |
- return SUCCEEDED(device->Reset(&present_params)) ? true : false; |
-} |
- |
-} // namespace media |