blob: bc53fa793670590a40436c35574c72d2055392e7 [file] [log] [blame]
pbos@webrtc.orgdc8c8832013-05-16 12:08:03 +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 */
10
11#include "webrtc/video_engine/test/common/video_renderer.h"
12
13#include "webrtc/modules/video_capture/include/video_capture_factory.h"
14#include "webrtc/video_engine/new_include/video_send_stream.h"
15
16#ifdef WEBRTC_TEST_XV
17#include "webrtc/video_engine/test/common/linux/xv_renderer.h"
18#endif // WEBRTC_TEST_XV
19
20// Platform-specific renderers preferred over NullRenderer
21#ifdef WEBRTC_TEST_GLX
22#include "webrtc/video_engine/test/common/linux/glx_renderer.h"
23#endif // WEBRTC_TEST_GLX
24
25// TODO(pbos): Mac renderer
26// TODO(pbos): Windows renderer
27// TODO(pbos): Android renderer
28
29namespace webrtc {
30namespace test {
31
32class NullRenderer : public VideoRenderer {
33 virtual void RenderFrame(const I420VideoFrame& video_frame,
34 int time_to_render_ms) OVERRIDE {}
35};
36
37VideoRenderer* VideoRenderer::Create(const char* window_title) {
38 // TODO(pbos): Get these from command-line parameters.
39 int width = 640;
40 int height = 480;
41
42#ifdef WEBRTC_TEST_XV
43 XvRenderer* xv_renderer = XvRenderer::Create(window_title, width, height);
44 if (xv_renderer != NULL) {
45 return xv_renderer;
46 }
47#endif // WEBRTC_TEST_XV
48#ifdef WEBRTC_TEST_GLX
49 GlxRenderer* glx_renderer = GlxRenderer::Create(window_title, width, height);
50 if (glx_renderer != NULL) {
51 return glx_renderer;
52 }
53#endif // WEBRTC_TEST_GLX
54
55 // Avoid initialized-but-not-referenced errors when only building a
56 // NullRenderer
57 (void) width;
58 (void) height;
59
60 return new NullRenderer();
61}
62} // test
63} // webrtc