| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 #include "webrtc/test/win/d3d_renderer.h" | 10 #include "webrtc/test/win/d3d_renderer.h" |
| 11 | 11 |
| 12 #include "webrtc/base/checks.h" |
| 12 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" | 13 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" |
| 13 | 14 |
| 14 namespace webrtc { | 15 namespace webrtc { |
| 15 namespace test { | 16 namespace test { |
| 16 | 17 |
| 17 #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_TEX1) | 18 #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_TEX1) |
| 18 | 19 |
| 19 struct D3dCustomVertex { | 20 struct D3dCustomVertex { |
| 20 float x, y, z; | 21 float x, y, z; |
| 21 float u, v; | 22 float u, v; |
| 22 }; | 23 }; |
| 23 | 24 |
| 24 const char kD3DClassName[] = "d3d_renderer"; | 25 const char kD3DClassName[] = "d3d_renderer"; |
| 25 | 26 |
| 26 VideoRenderer* VideoRenderer::CreatePlatformRenderer(const char* window_title, | 27 VideoRenderer* VideoRenderer::CreatePlatformRenderer(const char* window_title, |
| 27 size_t width, | 28 size_t width, |
| 28 size_t height) { | 29 size_t height) { |
| 29 return D3dRenderer::Create(window_title, width, height); | 30 return D3dRenderer::Create(window_title, width, height); |
| 30 } | 31 } |
| 31 | 32 |
| 32 D3dRenderer::D3dRenderer(size_t width, size_t height) | 33 D3dRenderer::D3dRenderer(size_t width, size_t height) |
| 33 : width_(width), | 34 : width_(width), |
| 34 height_(height), | 35 height_(height), |
| 35 hwnd_(NULL), | 36 hwnd_(NULL), |
| 36 d3d_(NULL), | 37 d3d_(NULL), |
| 37 d3d_device_(NULL), | 38 d3d_device_(NULL), |
| 38 texture_(NULL), | 39 texture_(NULL), |
| 39 vertex_buffer_(NULL) { | 40 vertex_buffer_(NULL) { |
| 40 assert(width > 0); | 41 RTC_DCHECK_GT(width, 0); |
| 41 assert(height > 0); | 42 RTC_DCHECK_GT(height, 0); |
| 42 } | 43 } |
| 43 | 44 |
| 44 D3dRenderer::~D3dRenderer() { Destroy(); } | 45 D3dRenderer::~D3dRenderer() { Destroy(); } |
| 45 | 46 |
| 46 LRESULT WINAPI D3dRenderer::WindowProc(HWND hwnd, UINT msg, WPARAM wparam, | 47 LRESULT WINAPI D3dRenderer::WindowProc(HWND hwnd, UINT msg, WPARAM wparam, |
| 47 LPARAM lparam) { | 48 LPARAM lparam) { |
| 48 if (msg == WM_DESTROY || (msg == WM_CHAR && wparam == VK_RETURN)) { | 49 if (msg == WM_DESTROY || (msg == WM_CHAR && wparam == VK_RETURN)) { |
| 49 PostQuitMessage(0); | 50 PostQuitMessage(0); |
| 50 return 0; | 51 return 0; |
| 51 } | 52 } |
| 52 | 53 |
| 53 return DefWindowProcA(hwnd, msg, wparam, lparam); | 54 return DefWindowProcA(hwnd, msg, wparam, lparam); |
| 54 } | 55 } |
| 55 | 56 |
| 56 void D3dRenderer::Destroy() { | 57 void D3dRenderer::Destroy() { |
| 57 texture_ = NULL; | 58 texture_ = NULL; |
| 58 vertex_buffer_ = NULL; | 59 vertex_buffer_ = NULL; |
| 59 d3d_device_ = NULL; | 60 d3d_device_ = NULL; |
| 60 d3d_ = NULL; | 61 d3d_ = NULL; |
| 61 | 62 |
| 62 if (hwnd_ != NULL) { | 63 if (hwnd_ != NULL) { |
| 63 DestroyWindow(hwnd_); | 64 DestroyWindow(hwnd_); |
| 64 assert(!IsWindow(hwnd_)); | 65 RTC_DCHECK(!IsWindow(hwnd_)); |
| 65 hwnd_ = NULL; | 66 hwnd_ = NULL; |
| 66 } | 67 } |
| 67 } | 68 } |
| 68 | 69 |
| 69 bool D3dRenderer::Init(const char* window_title) { | 70 bool D3dRenderer::Init(const char* window_title) { |
| 70 hwnd_ = CreateWindowA(kD3DClassName, | 71 hwnd_ = CreateWindowA(kD3DClassName, |
| 71 window_title, | 72 window_title, |
| 72 WS_OVERLAPPEDWINDOW, | 73 WS_OVERLAPPEDWINDOW, |
| 73 0, | 74 0, |
| 74 0, | 75 0, |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 d3d_device_->SetFVF(D3DFVF_CUSTOMVERTEX); | 210 d3d_device_->SetFVF(D3DFVF_CUSTOMVERTEX); |
| 210 d3d_device_->SetStreamSource(0, vertex_buffer_, 0, sizeof(D3dCustomVertex)); | 211 d3d_device_->SetStreamSource(0, vertex_buffer_, 0, sizeof(D3dCustomVertex)); |
| 211 d3d_device_->SetTexture(0, texture_); | 212 d3d_device_->SetTexture(0, texture_); |
| 212 d3d_device_->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); | 213 d3d_device_->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); |
| 213 d3d_device_->EndScene(); | 214 d3d_device_->EndScene(); |
| 214 | 215 |
| 215 d3d_device_->Present(NULL, NULL, NULL, NULL); | 216 d3d_device_->Present(NULL, NULL, NULL, NULL); |
| 216 } | 217 } |
| 217 } // namespace test | 218 } // namespace test |
| 218 } // namespace webrtc | 219 } // namespace webrtc |
| OLD | NEW |