1/*
2 *  Copyright (c) 2012 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_INTERFACE_VIDEO_RENDER_DEFINES_H_
12#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_INTERFACE_VIDEO_RENDER_DEFINES_H_
13
14// Includes
15#include "webrtc/common_types.h"
16#include "webrtc/common_video/interface/i420_video_frame.h"
17#include "webrtc/modules/interface/module_common_types.h"
18
19namespace webrtc
20{
21// Defines
22#ifndef NULL
23#define NULL    0
24#endif
25
26// Enums
27enum VideoRenderType
28{
29    kRenderExternal = 0, // External
30    kRenderWindows = 1, // Windows
31    kRenderCocoa = 2, // Mac
32    kRenderCarbon = 3,
33    kRenderiOS = 4, // iPhone
34    kRenderAndroid = 5, // Android
35    kRenderX11 = 6, // Linux
36    kRenderDefault
37};
38
39// Runtime errors
40enum VideoRenderError
41{
42    kRenderShutDown = 0,
43    kRenderPerformanceAlarm = 1
44};
45
46// The object a module user uses to send new frames to the renderer
47// One object is used for each incoming stream
48class VideoRenderCallback
49{
50public:
51    virtual int32_t RenderFrame(const uint32_t streamId,
52                                I420VideoFrame& videoFrame) = 0;
53
54protected:
55    virtual ~VideoRenderCallback()
56    {
57    }
58};
59
60// Feedback class to be implemented by module user
61class VideoRenderFeedback
62{
63public:
64    virtual void OnRenderError(const int32_t streamId,
65                               const VideoRenderError error) = 0;
66
67protected:
68    virtual ~VideoRenderFeedback()
69    {
70    }
71};
72
73// Mobile enums
74enum StretchMode
75{
76    kStretchToInsideEdge = 1,
77    kStretchToOutsideEdge = 2,
78    kStretchMatchWidth = 3,
79    kStretchMatchHeight = 4,
80    kStretchNone = 5
81};
82
83enum Rotation
84{
85    kRotation0 = 0,
86    kRotation90 = 1,
87    kRotation180 = 2,
88    kRotation270 = 3
89};
90
91}  // namespace webrtc
92
93#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_INTERFACE_VIDEO_RENDER_DEFINES_H_
94