blob: a43be447f696b30a2b5345101c840c7e3ae4d5c0 [file] [log] [blame]
pbos@webrtc.orgadf23a52013-07-10 14:07:56 +00001/*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020010#ifndef TEST_WIN_D3D_RENDERER_H_
11#define TEST_WIN_D3D_RENDERER_H_
pbos@webrtc.orgadf23a52013-07-10 14:07:56 +000012
13#include <Windows.h>
14#include <d3d9.h>
Yves Gerey665174f2018-06-19 15:03:05 +020015#pragma comment(lib, "d3d9.lib") // located in DirectX SDK
pbos@webrtc.orgadf23a52013-07-10 14:07:56 +000016
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020017#include "rtc_base/scoped_ref_ptr.h"
18#include "test/video_renderer.h"
pbos@webrtc.orgadf23a52013-07-10 14:07:56 +000019
20namespace webrtc {
21namespace test {
22
23class D3dRenderer : public VideoRenderer {
24 public:
Yves Gerey665174f2018-06-19 15:03:05 +020025 static D3dRenderer* Create(const char* window_title,
26 size_t width,
pbos@webrtc.orgadf23a52013-07-10 14:07:56 +000027 size_t height);
28 virtual ~D3dRenderer();
29
nisseeb83a1a2016-03-21 01:27:56 -070030 void OnFrame(const webrtc::VideoFrame& frame) override;
pbos@webrtc.org0d852d52015-02-09 15:14:36 +000031
pbos@webrtc.orgadf23a52013-07-10 14:07:56 +000032 private:
33 D3dRenderer(size_t width, size_t height);
34
Yves Gerey665174f2018-06-19 15:03:05 +020035 static LRESULT WINAPI WindowProc(HWND hwnd,
36 UINT msg,
37 WPARAM wparam,
pbos@webrtc.orgadf23a52013-07-10 14:07:56 +000038 LPARAM lparam);
39 bool Init(const char* window_title);
40 void Resize(size_t width, size_t height);
41 void Destroy();
42
43 size_t width_, height_;
44
45 HWND hwnd_;
Peter Boström26b08602015-06-04 15:18:17 +020046 rtc::scoped_refptr<IDirect3D9> d3d_;
47 rtc::scoped_refptr<IDirect3DDevice9> d3d_device_;
pbos@webrtc.orgadf23a52013-07-10 14:07:56 +000048
Peter Boström26b08602015-06-04 15:18:17 +020049 rtc::scoped_refptr<IDirect3DTexture9> texture_;
50 rtc::scoped_refptr<IDirect3DVertexBuffer9> vertex_buffer_;
pbos@webrtc.orgadf23a52013-07-10 14:07:56 +000051};
52} // namespace test
53} // namespace webrtc
54
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020055#endif // TEST_WIN_D3D_RENDERER_H_