1470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/*
2470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *
4470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *  Use of this source code is governed by a BSD-style license
5470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *  that can be found in the LICENSE file in the root of the source
6470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *  tree. An additional intellectual property rights grant can be found
7470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *  in the file PATENTS.  All contributing project authors may
8470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *  be found in the AUTHORS file in the root of the source tree.
9470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */
10470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
11470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_I_VIDEO_RENDER_WIN_H_
12470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_I_VIDEO_RENDER_WIN_H_
13470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
145dda80abea311731144b1d544aff61c408412f12Henrik Kjellander#include "webrtc/modules/video_render/video_render.h"
15470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
16470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comnamespace webrtc {
17470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
18470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com// Class definitions
19470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass IVideoRenderWin
20470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
21470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.compublic:
22470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    /**************************************************************************
23470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     *
24470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     *   Constructor/destructor
25470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     *
26470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     ***************************************************************************/
27470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    virtual ~IVideoRenderWin()
28470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    {
29470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    };
30470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
31ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org    virtual int32_t Init() = 0;
32470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
33470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    /**************************************************************************
34470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     *
35470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     *   Incoming Streams
36470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     *
37470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     ***************************************************************************/
38470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
39470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    virtual VideoRenderCallback
40ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org            * CreateChannel(const uint32_t streamId,
41ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                            const uint32_t zOrder,
42470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com                            const float left,
43470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com                            const float top,
44470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com                            const float right,
45470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com                            const float bottom) = 0;
46470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
47ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org    virtual int32_t DeleteChannel(const uint32_t streamId) = 0;
48470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
49ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org    virtual int32_t GetStreamSettings(const uint32_t channel,
50ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                      const uint16_t streamId,
51ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                      uint32_t& zOrder,
52ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                      float& left, float& top,
53ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                      float& right, float& bottom) = 0;
54470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
55470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    /**************************************************************************
56470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     *
57470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     *   Start/Stop
58470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     *
59470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     ***************************************************************************/
60470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
61ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org    virtual int32_t StartRender() = 0;
62470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
63ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org    virtual int32_t StopRender() = 0;
64470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
65470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    /**************************************************************************
66470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     *
67470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     *   Properties
68470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     *
69470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com     ***************************************************************************/
70470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
71470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    virtual bool IsFullScreen() = 0;
72470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
73ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org    virtual int32_t SetCropping(const uint32_t channel,
74ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                const uint16_t streamId,
75ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                const float left, const float top,
76ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                const float right, const float bottom) = 0;
77ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org
78ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org    virtual int32_t ConfigureRenderer(const uint32_t channel,
79ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                      const uint16_t streamId,
80ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                      const unsigned int zOrder,
81470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com                                      const float left,
82470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com                                      const float top,
83470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com                                      const float right,
84470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com                                      const float bottom) = 0;
85470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
86ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org    virtual int32_t SetTransparentBackground(const bool enable) = 0;
87ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org
88ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org    virtual int32_t SetText(const uint8_t textId,
89ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                            const uint8_t* text,
90ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                            const int32_t textLength,
91ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                            const uint32_t colorText,
92ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                            const uint32_t colorBg,
93ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                            const float left, const float top,
94ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                            const float rigth, const float bottom) = 0;
95ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org
96ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org    virtual int32_t SetBitmap(const void* bitMap,
97ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                              const uint8_t pictureId,
98ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                              const void* colorKey,
99ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                              const float left, const float top,
100ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                              const float right, const float bottom) = 0;
101ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org
102ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org    virtual int32_t ChangeWindow(void* window) = 0;
103ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org
104ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org    virtual int32_t GetGraphicsMemory(uint64_t& totalMemory,
105ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                      uint64_t& availableMemory) = 0;
106470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
107470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com};
108470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
109d900e8bea84c474696bf0219aed1353ce65ffd8epbos@webrtc.org}  // namespace webrtc
110470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_I_VIDEO_RENDER_WIN_H_
111