1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Use of this source code is governed by a BSD-style license
5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  that can be found in the LICENSE file in the root of the source
6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  tree. An additional intellectual property rights grant can be found
7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  in the file PATENTS.  All contributing project authors may
8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
117e5dc8741fbd5f07a709e6fd4d2cd8b08b7cee94pbos@webrtc.org#include "webrtc/modules/video_render/external/video_render_external_impl.h"
12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgnamespace webrtc {
14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgVideoRenderExternalImpl::VideoRenderExternalImpl(
16e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                 const int32_t id,
17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                 const VideoRenderType videoRenderType,
18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                 void* window,
19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                 const bool fullscreen) :
20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _id(id), _critSect(*CriticalSectionWrapper::CreateCriticalSection()),
21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _fullscreen(fullscreen)
22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgVideoRenderExternalImpl::~VideoRenderExternalImpl()
26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    delete &_critSect;
28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
30e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::Init()
31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
35e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::ChangeUniqueId(const int32_t id)
36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _id = id;
39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
42e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::ChangeWindow(void* window)
43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgVideoRenderCallback*
49e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgVideoRenderExternalImpl::AddIncomingRenderStream(const uint32_t streamId,
50e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                 const uint32_t zOrder,
51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                 const float left,
52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                 const float top,
53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                 const float right,
54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                 const float bottom)
55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return this;
58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
60e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::DeleteIncomingRenderStream(
61e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                                  const uint32_t streamId)
62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
67e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::GetIncomingRenderStreamProperties(
68e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                                         const uint32_t streamId,
69e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                                         uint32_t& zOrder,
70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                                         float& left,
71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                                         float& top,
72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                                         float& right,
73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                                         float& bottom) const
74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    zOrder = 0;
78b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    left = 0;
79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    top = 0;
80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    right = 0;
81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bottom = 0;
82b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
85b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
86e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::StartRender()
87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
90b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
92e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::StopRender()
93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
98b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgVideoRenderType VideoRenderExternalImpl::RenderType()
99b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return kRenderExternal;
101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgRawVideoType VideoRenderExternalImpl::PerferedVideoType()
104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return kVideoI420;
106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgbool VideoRenderExternalImpl::FullScreen()
109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return _fullscreen;
112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
113b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
114e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::GetGraphicsMemory(
115e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                         uint64_t& totalGraphicsMemory,
116e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                         uint64_t& availableGraphicsMemory) const
117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    totalGraphicsMemory = 0;
119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    availableGraphicsMemory = 0;
120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return -1;
121b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
122b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
123e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::GetScreenResolution(
124e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                           uint32_t& screenWidth,
125e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                           uint32_t& screenHeight) const
126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
128b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    screenWidth = 0;
129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    screenHeight = 0;
130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
132b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
133e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orguint32_t VideoRenderExternalImpl::RenderFrameRate(
134e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                        const uint32_t streamId)
135b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
140e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::SetStreamCropping(
141e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                         const uint32_t streamId,
142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                         const float left,
143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                         const float top,
144b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                         const float right,
145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                         const float bottom)
146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
151e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::ConfigureRenderer(
152e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                         const uint32_t streamId,
153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                         const unsigned int zOrder,
154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                         const float left,
155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                         const float top,
156b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                         const float right,
157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                         const float bottom)
158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
163e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::SetTransparentBackground(
164b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                                const bool enable)
165b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
166b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
167b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
168b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
170e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::SetText(
171e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                               const uint8_t textId,
172e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                               const uint8_t* text,
173e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                               const int32_t textLength,
174e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                               const uint32_t textColorRef,
175e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                               const uint32_t backgroundColorRef,
176b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                               const float left,
177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                               const float top,
178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                               const float right,
179b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                               const float bottom)
180b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
181b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
182b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
183b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
185e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::SetBitmap(const void* bitMap,
186e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                           const uint8_t pictureId,
187e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                           const void* colorKey,
188e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                           const float left,
189e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                           const float top,
190e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                           const float right,
191e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                           const float bottom)
192b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
193b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CriticalSectionScoped cs(&_critSect);
194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
195b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
196b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
197b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// VideoRenderCallback
198e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::RenderFrame(
199e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org                                                   const uint32_t streamId,
2003bbed74cdcf1f27ce82104ce645ec0dcdd36902dmikhal@webrtc.org                                                   I420VideoFrame& videoFrame)
201b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
202b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return 0;
203b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2043b89e10f31160da35b408fd00cb8f89d2b08862dpbos@webrtc.org}  // namespace webrtc
205