OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (c) 2011 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 #ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_IMPL_H_ | |
12 #define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_IMPL_H_ | |
13 | |
14 #include <map> | |
15 | |
16 #include "webrtc/engine_configurations.h" | |
17 #include "webrtc/modules/video_render/video_render.h" | |
18 | |
19 namespace webrtc { | |
20 class CriticalSectionWrapper; | |
21 class IncomingVideoStream; | |
22 class IVideoRender; | |
23 | |
24 // Class definitions | |
25 class ModuleVideoRenderImpl: public VideoRender | |
26 { | |
27 public: | |
28 /* | |
29 * VideoRenderer constructor/destructor | |
30 */ | |
31 ModuleVideoRenderImpl(const int32_t id, | |
32 const VideoRenderType videoRenderType, | |
33 void* window, const bool fullscreen); | |
34 | |
35 virtual ~ModuleVideoRenderImpl(); | |
36 | |
37 virtual int64_t TimeUntilNextProcess(); | |
38 virtual void Process(); | |
39 | |
40 /* | |
41 * Returns the render window | |
42 */ | |
43 virtual void* Window(); | |
44 | |
45 /* | |
46 * Change render window | |
47 */ | |
48 virtual int32_t ChangeWindow(void* window); | |
49 | |
50 /* | |
51 * Returns module id | |
52 */ | |
53 int32_t Id(); | |
54 | |
55 /************************************************************************** | |
56 * | |
57 * Incoming Streams | |
58 * | |
59 ***************************************************************************
/ | |
60 | |
61 /* | |
62 * Add incoming render stream | |
63 */ | |
64 virtual VideoRenderCallback | |
65 * AddIncomingRenderStream(const uint32_t streamId, | |
66 const uint32_t zOrder, | |
67 const float left, const float top, | |
68 const float right, const float bottom); | |
69 /* | |
70 * Delete incoming render stream | |
71 */ | |
72 virtual int32_t | |
73 DeleteIncomingRenderStream(const uint32_t streamId); | |
74 | |
75 /* | |
76 * Add incoming render callback, used for external rendering | |
77 */ | |
78 virtual int32_t | |
79 AddExternalRenderCallback(const uint32_t streamId, | |
80 VideoRenderCallback* renderObject); | |
81 | |
82 /* | |
83 * Get the porperties for an incoming render stream | |
84 */ | |
85 virtual int32_t | |
86 GetIncomingRenderStreamProperties(const uint32_t streamId, | |
87 uint32_t& zOrder, | |
88 float& left, float& top, | |
89 float& right, float& bottom) const
; | |
90 /* | |
91 * Incoming frame rate for the specified stream. | |
92 */ | |
93 virtual uint32_t GetIncomingFrameRate(const uint32_t streamId); | |
94 | |
95 /* | |
96 * Returns the number of incoming streams added to this render module | |
97 */ | |
98 virtual uint32_t GetNumIncomingRenderStreams() const; | |
99 | |
100 /* | |
101 * Returns true if this render module has the streamId added, false otherw
ise. | |
102 */ | |
103 virtual bool HasIncomingRenderStream(const uint32_t streamId) const; | |
104 | |
105 /* | |
106 * | |
107 */ | |
108 virtual int32_t | |
109 RegisterRawFrameCallback(const uint32_t streamId, | |
110 VideoRenderCallback* callbackObj); | |
111 | |
112 virtual int32_t SetExpectedRenderDelay(uint32_t stream_id, | |
113 int32_t delay_ms); | |
114 | |
115 /************************************************************************** | |
116 * | |
117 * Start/Stop | |
118 * | |
119 ***************************************************************************
/ | |
120 | |
121 /* | |
122 * Starts rendering the specified stream | |
123 */ | |
124 virtual int32_t StartRender(const uint32_t streamId); | |
125 | |
126 /* | |
127 * Stops the renderer | |
128 */ | |
129 virtual int32_t StopRender(const uint32_t streamId); | |
130 | |
131 /* | |
132 * Sets the renderer in start state, no streams removed. | |
133 */ | |
134 virtual int32_t ResetRender(); | |
135 | |
136 /************************************************************************** | |
137 * | |
138 * Properties | |
139 * | |
140 ***************************************************************************
/ | |
141 | |
142 /* | |
143 * Returns the prefered render video type | |
144 */ | |
145 virtual RawVideoType PreferredVideoType() const; | |
146 | |
147 /* | |
148 * Returns true if the renderer is in fullscreen mode, otherwise false. | |
149 */ | |
150 virtual bool IsFullScreen(); | |
151 | |
152 /* | |
153 * Gets screen resolution in pixels | |
154 */ | |
155 virtual int32_t | |
156 GetScreenResolution(uint32_t& screenWidth, | |
157 uint32_t& screenHeight) const; | |
158 | |
159 /* | |
160 * Get the actual render rate for this stream. I.e rendered frame rate, | |
161 * not frames delivered to the renderer. | |
162 */ | |
163 virtual uint32_t RenderFrameRate(const uint32_t streamId); | |
164 | |
165 /* | |
166 * Set cropping of incoming stream | |
167 */ | |
168 virtual int32_t SetStreamCropping(const uint32_t streamId, | |
169 const float left, const float top, | |
170 const float right, const float bottom); | |
171 | |
172 virtual int32_t ConfigureRenderer(const uint32_t streamId, | |
173 const unsigned int zOrder, | |
174 const float left, const float top, | |
175 const float right, const float bottom); | |
176 | |
177 virtual int32_t SetTransparentBackground(const bool enable); | |
178 | |
179 virtual int32_t FullScreenRender(void* window, const bool enable); | |
180 | |
181 virtual int32_t SetBitmap(const void* bitMap, | |
182 const uint8_t pictureId, | |
183 const void* colorKey, | |
184 const float left, const float top, | |
185 const float right, const float bottom); | |
186 | |
187 virtual int32_t SetText(const uint8_t textId, | |
188 const uint8_t* text, | |
189 const int32_t textLength, | |
190 const uint32_t textColorRef, | |
191 const uint32_t backgroundColorRef, | |
192 const float left, const float top, | |
193 const float right, const float bottom); | |
194 | |
195 private: | |
196 int32_t _id; | |
197 CriticalSectionWrapper& _moduleCrit; | |
198 void* _ptrWindow; | |
199 bool _fullScreen; | |
200 | |
201 IVideoRender* _ptrRenderer; | |
202 typedef std::map<uint32_t, IncomingVideoStream*> IncomingVideoStreamMap; | |
203 IncomingVideoStreamMap _streamRenderMap; | |
204 }; | |
205 | |
206 } // namespace webrtc | |
207 | |
208 #endif // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_IMPL_H_ | |
OLD | NEW |