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
16namespace webrtc {
17
18// Class definitions
19class IVideoRenderWin
20{
21public:
22    /**************************************************************************
23     *
24     *   Constructor/destructor
25     *
26     ***************************************************************************/
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