Index: webrtc/modules/video_render/video_render_impl.h |
diff --git a/webrtc/modules/video_render/video_render_impl.h b/webrtc/modules/video_render/video_render_impl.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8dfa57d25b489e2c54669fa425e239063e0f088d |
--- /dev/null |
+++ b/webrtc/modules/video_render/video_render_impl.h |
@@ -0,0 +1,208 @@ |
+/* |
+ * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. |
+ * |
+ * Use of this source code is governed by a BSD-style license |
+ * that can be found in the LICENSE file in the root of the source |
+ * tree. An additional intellectual property rights grant can be found |
+ * in the file PATENTS. All contributing project authors may |
+ * be found in the AUTHORS file in the root of the source tree. |
+ */ |
+ |
+#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_IMPL_H_ |
+#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_IMPL_H_ |
+ |
+#include <map> |
+ |
+#include "webrtc/engine_configurations.h" |
+#include "webrtc/modules/video_render/video_render.h" |
+ |
+namespace webrtc { |
+class CriticalSectionWrapper; |
+class IncomingVideoStream; |
+class IVideoRender; |
+ |
+// Class definitions |
+class ModuleVideoRenderImpl: public VideoRender |
+{ |
+public: |
+ /* |
+ * VideoRenderer constructor/destructor |
+ */ |
+ ModuleVideoRenderImpl(const int32_t id, |
+ const VideoRenderType videoRenderType, |
+ void* window, const bool fullscreen); |
+ |
+ virtual ~ModuleVideoRenderImpl(); |
+ |
+ virtual int64_t TimeUntilNextProcess(); |
+ virtual void Process(); |
+ |
+ /* |
+ * Returns the render window |
+ */ |
+ virtual void* Window(); |
+ |
+ /* |
+ * Change render window |
+ */ |
+ virtual int32_t ChangeWindow(void* window); |
+ |
+ /* |
+ * Returns module id |
+ */ |
+ int32_t Id(); |
+ |
+ /************************************************************************** |
+ * |
+ * Incoming Streams |
+ * |
+ ***************************************************************************/ |
+ |
+ /* |
+ * Add incoming render stream |
+ */ |
+ virtual VideoRenderCallback |
+ * AddIncomingRenderStream(const uint32_t streamId, |
+ const uint32_t zOrder, |
+ const float left, const float top, |
+ const float right, const float bottom); |
+ /* |
+ * Delete incoming render stream |
+ */ |
+ virtual int32_t |
+ DeleteIncomingRenderStream(const uint32_t streamId); |
+ |
+ /* |
+ * Add incoming render callback, used for external rendering |
+ */ |
+ virtual int32_t |
+ AddExternalRenderCallback(const uint32_t streamId, |
+ VideoRenderCallback* renderObject); |
+ |
+ /* |
+ * Get the porperties for an incoming render stream |
+ */ |
+ virtual int32_t |
+ GetIncomingRenderStreamProperties(const uint32_t streamId, |
+ uint32_t& zOrder, |
+ float& left, float& top, |
+ float& right, float& bottom) const; |
+ /* |
+ * Incoming frame rate for the specified stream. |
+ */ |
+ virtual uint32_t GetIncomingFrameRate(const uint32_t streamId); |
+ |
+ /* |
+ * Returns the number of incoming streams added to this render module |
+ */ |
+ virtual uint32_t GetNumIncomingRenderStreams() const; |
+ |
+ /* |
+ * Returns true if this render module has the streamId added, false otherwise. |
+ */ |
+ virtual bool HasIncomingRenderStream(const uint32_t streamId) const; |
+ |
+ /* |
+ * |
+ */ |
+ virtual int32_t |
+ RegisterRawFrameCallback(const uint32_t streamId, |
+ VideoRenderCallback* callbackObj); |
+ |
+ virtual int32_t SetExpectedRenderDelay(uint32_t stream_id, |
+ int32_t delay_ms); |
+ |
+ /************************************************************************** |
+ * |
+ * Start/Stop |
+ * |
+ ***************************************************************************/ |
+ |
+ /* |
+ * Starts rendering the specified stream |
+ */ |
+ virtual int32_t StartRender(const uint32_t streamId); |
+ |
+ /* |
+ * Stops the renderer |
+ */ |
+ virtual int32_t StopRender(const uint32_t streamId); |
+ |
+ /* |
+ * Sets the renderer in start state, no streams removed. |
+ */ |
+ virtual int32_t ResetRender(); |
+ |
+ /************************************************************************** |
+ * |
+ * Properties |
+ * |
+ ***************************************************************************/ |
+ |
+ /* |
+ * Returns the prefered render video type |
+ */ |
+ virtual RawVideoType PreferredVideoType() const; |
+ |
+ /* |
+ * Returns true if the renderer is in fullscreen mode, otherwise false. |
+ */ |
+ virtual bool IsFullScreen(); |
+ |
+ /* |
+ * Gets screen resolution in pixels |
+ */ |
+ virtual int32_t |
+ GetScreenResolution(uint32_t& screenWidth, |
+ uint32_t& screenHeight) const; |
+ |
+ /* |
+ * Get the actual render rate for this stream. I.e rendered frame rate, |
+ * not frames delivered to the renderer. |
+ */ |
+ virtual uint32_t RenderFrameRate(const uint32_t streamId); |
+ |
+ /* |
+ * Set cropping of incoming stream |
+ */ |
+ virtual int32_t SetStreamCropping(const uint32_t streamId, |
+ const float left, const float top, |
+ const float right, const float bottom); |
+ |
+ virtual int32_t ConfigureRenderer(const uint32_t streamId, |
+ const unsigned int zOrder, |
+ const float left, const float top, |
+ const float right, const float bottom); |
+ |
+ virtual int32_t SetTransparentBackground(const bool enable); |
+ |
+ virtual int32_t FullScreenRender(void* window, const bool enable); |
+ |
+ virtual int32_t SetBitmap(const void* bitMap, |
+ const uint8_t pictureId, |
+ const void* colorKey, |
+ const float left, const float top, |
+ const float right, const float bottom); |
+ |
+ virtual int32_t SetText(const uint8_t textId, |
+ const uint8_t* text, |
+ const int32_t textLength, |
+ const uint32_t textColorRef, |
+ const uint32_t backgroundColorRef, |
+ const float left, const float top, |
+ const float right, const float bottom); |
+ |
+private: |
+ int32_t _id; |
+ CriticalSectionWrapper& _moduleCrit; |
+ void* _ptrWindow; |
+ bool _fullScreen; |
+ |
+ IVideoRender* _ptrRenderer; |
+ typedef std::map<uint32_t, IncomingVideoStream*> IncomingVideoStreamMap; |
+ IncomingVideoStreamMap _streamRenderMap; |
+}; |
+ |
+} // namespace webrtc |
+ |
+#endif // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_IMPL_H_ |