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_WINDOWS_I_VIDEO_RENDER_WIN_H_
12 #define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_I_VIDEO_RENDER_WIN_H_
13 
14 #include "webrtc/modules/video_render/video_render.h"
15 
16 namespace webrtc {
17 
18 // Class definitions
19 class IVideoRenderWin
20 {
21 public:
22     /**************************************************************************
23      *
24      *   Constructor/destructor
25      *
26      ***************************************************************************/
~IVideoRenderWin()27     virtual ~IVideoRenderWin()
28     {
29     };
30 
31     virtual int32_t Init() = 0;
32 
33     /**************************************************************************
34      *
35      *   Incoming Streams
36      *
37      ***************************************************************************/
38 
39     virtual VideoRenderCallback
40             * CreateChannel(const uint32_t streamId,
41                             const uint32_t zOrder,
42                             const float left,
43                             const float top,
44                             const float right,
45                             const float bottom) = 0;
46 
47     virtual int32_t DeleteChannel(const uint32_t streamId) = 0;
48 
49     virtual int32_t GetStreamSettings(const uint32_t channel,
50                                       const uint16_t streamId,
51                                       uint32_t& zOrder,
52                                       float& left, float& top,
53                                       float& right, float& bottom) = 0;
54 
55     /**************************************************************************
56      *
57      *   Start/Stop
58      *
59      ***************************************************************************/
60 
61     virtual int32_t StartRender() = 0;
62 
63     virtual int32_t StopRender() = 0;
64 
65     /**************************************************************************
66      *
67      *   Properties
68      *
69      ***************************************************************************/
70 
71     virtual bool IsFullScreen() = 0;
72 
73     virtual int32_t SetCropping(const uint32_t channel,
74                                 const uint16_t streamId,
75                                 const float left, const float top,
76                                 const float right, const float bottom) = 0;
77 
78     virtual int32_t ConfigureRenderer(const uint32_t channel,
79                                       const uint16_t streamId,
80                                       const unsigned int zOrder,
81                                       const float left,
82                                       const float top,
83                                       const float right,
84                                       const float bottom) = 0;
85 
86     virtual int32_t SetTransparentBackground(const bool enable) = 0;
87 
88     virtual int32_t SetText(const uint8_t textId,
89                             const uint8_t* text,
90                             const int32_t textLength,
91                             const uint32_t colorText,
92                             const uint32_t colorBg,
93                             const float left, const float top,
94                             const float rigth, const float bottom) = 0;
95 
96     virtual int32_t SetBitmap(const void* bitMap,
97                               const uint8_t pictureId,
98                               const void* colorKey,
99                               const float left, const float top,
100                               const float right, const float bottom) = 0;
101 
102     virtual int32_t ChangeWindow(void* window) = 0;
103 
104     virtual int32_t GetGraphicsMemory(uint64_t& totalMemory,
105                                       uint64_t& availableMemory) = 0;
106 
107 };
108 
109 }  // namespace webrtc
110 #endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_I_VIDEO_RENDER_WIN_H_
111