Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Side by Side Diff: webrtc/modules/video_render/mac/video_render_agl.h

Issue 1912143002: Delete video_render module. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Move -framework flags from legacy_objc_api_tests.gyp to legacy_objc_api.gyp. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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 #include "webrtc/engine_configurations.h"
12
13 #if defined(CARBON_RENDERING)
14
15 #ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_AGL_H_
16 #define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_AGL_H_
17
18 #include "webrtc/base/platform_thread.h"
19 #include "webrtc/modules/video_render/video_render_defines.h"
20
21 #define NEW_HIVIEW_PARENT_EVENT_HANDLER 1
22 #define NEW_HIVIEW_EVENT_HANDLER 1
23 #define USE_STRUCT_RGN
24
25 #include <AGL/agl.h>
26 #include <Carbon/Carbon.h>
27 #include <OpenGL/OpenGL.h>
28 #include <OpenGL/glext.h>
29 #include <OpenGL/glu.h>
30 #include <list>
31 #include <map>
32 #include <memory>
33
34 class VideoRenderAGL;
35
36 namespace webrtc {
37 class CriticalSectionWrapper;
38 class EventWrapper;
39
40 class VideoChannelAGL : public VideoRenderCallback {
41 public:
42
43 VideoChannelAGL(AGLContext& aglContext, int iId, VideoRenderAGL* owner);
44 virtual ~VideoChannelAGL();
45 virtual int FrameSizeChange(int width, int height, int numberOfStreams);
46 virtual int DeliverFrame(const VideoFrame& videoFrame);
47 virtual int UpdateSize(int width, int height);
48 int SetStreamSettings(int streamId, float startWidth, float startHeight,
49 float stopWidth, float stopHeight);
50 int SetStreamCropSettings(int streamId, float startWidth, float startHeight,
51 float stopWidth, float stopHeight);
52 int RenderOffScreenBuffer();
53 int IsUpdated(bool& isUpdated);
54 virtual int UpdateStretchSize(int stretchHeight, int stretchWidth);
55 virtual int32_t RenderFrame(const uint32_t streamId, VideoFrame& videoFrame);
56
57 private:
58
59 AGLContext _aglContext;
60 int _id;
61 VideoRenderAGL* _owner;
62 int _width;
63 int _height;
64 int _stretchedWidth;
65 int _stretchedHeight;
66 float _startHeight;
67 float _startWidth;
68 float _stopWidth;
69 float _stopHeight;
70 int _xOldWidth;
71 int _yOldHeight;
72 int _oldStretchedHeight;
73 int _oldStretchedWidth;
74 unsigned char* _buffer;
75 size_t _bufferSize;
76 size_t _incomingBufferSize;
77 bool _bufferIsUpdated;
78 bool _sizeInitialized;
79 int _numberOfStreams;
80 bool _bVideoSizeStartedChanging;
81 GLenum _pixelFormat;
82 GLenum _pixelDataType;
83 unsigned int _texture;
84 };
85
86 class VideoRenderAGL {
87 public:
88 VideoRenderAGL(WindowRef windowRef, bool fullscreen, int iId);
89 VideoRenderAGL(HIViewRef windowRef, bool fullscreen, int iId);
90 ~VideoRenderAGL();
91
92 int Init();
93 VideoChannelAGL* CreateAGLChannel(int channel, int zOrder, float startWidth,
94 float startHeight, float stopWidth,
95 float stopHeight);
96 VideoChannelAGL* ConfigureAGLChannel(int channel, int zOrder,
97 float startWidth, float startHeight,
98 float stopWidth, float stopHeight);
99 int DeleteAGLChannel(int channel);
100 int DeleteAllAGLChannels();
101 int StopThread();
102 bool IsFullScreen();
103 bool HasChannels();
104 bool HasChannel(int channel);
105 int GetChannels(std::list<int>& channelList);
106 void LockAGLCntx();
107 void UnlockAGLCntx();
108
109 static int GetOpenGLVersion(int& aglMajor, int& aglMinor);
110
111 // ********** new module functions ************ //
112 int ChangeWindow(void* newWindowRef);
113 int32_t StartRender();
114 int32_t StopRender();
115 int32_t DeleteAGLChannel(const uint32_t streamID);
116 int32_t GetChannelProperties(const uint16_t streamId, uint32_t& zOrder,
117 float& left, float& top, float& right,
118 float& bottom);
119
120 protected:
121 static bool ScreenUpdateThreadProc(void* obj);
122 bool ScreenUpdateProcess();
123 int GetWindowRect(Rect& rect);
124
125 private:
126 int CreateMixingContext();
127 int RenderOffScreenBuffers();
128 int SwapAndDisplayBuffers();
129 int UpdateClipping();
130 int CalculateVisibleRegion(ControlRef control, RgnHandle& visibleRgn,
131 bool clipChildren);
132 bool CheckValidRegion(RgnHandle rHandle);
133 void ParentWindowResized(WindowRef window);
134
135 // Carbon GUI event handlers
136 static pascal OSStatus sHandleWindowResized(
137 EventHandlerCallRef nextHandler, EventRef theEvent, void* userData);
138 static pascal OSStatus sHandleHiViewResized(
139 EventHandlerCallRef nextHandler, EventRef theEvent, void* userData);
140
141 HIViewRef _hiviewRef;
142 WindowRef _windowRef;
143 bool _fullScreen;
144 int _id;
145 webrtc::CriticalSectionWrapper& _renderCritSec;
146 // TODO(pbos): Remove unique_ptr and use PlatformThread directly.
147 std::unique_ptr<rtc::PlatformThread> _screenUpdateThread;
148 webrtc::EventWrapper* _screenUpdateEvent;
149 bool _isHIViewRef;
150 AGLContext _aglContext;
151 int _windowWidth;
152 int _windowHeight;
153 int _lastWindowWidth;
154 int _lastWindowHeight;
155 int _lastHiViewWidth;
156 int _lastHiViewHeight;
157 int _currentParentWindowHeight;
158 int _currentParentWindowWidth;
159 Rect _currentParentWindowBounds;
160 bool _windowHasResized;
161 Rect _lastParentWindowBounds;
162 Rect _currentHIViewBounds;
163 Rect _lastHIViewBounds;
164 Rect _windowRect;
165 std::map<int, VideoChannelAGL*> _aglChannels;
166 std::multimap<int, int> _zOrderToChannel;
167 EventHandlerRef _hiviewEventHandlerRef;
168 EventHandlerRef _windowEventHandlerRef;
169 HIRect _currentViewBounds;
170 HIRect _lastViewBounds;
171 bool _renderingIsPaused;
172 };
173
174 } // namespace webrtc
175
176 #endif // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_AGL_H_
177
178 #endif // CARBON_RENDERING
OLDNEW
« no previous file with comments | « webrtc/modules/video_render/mac/cocoa_render_view.mm ('k') | webrtc/modules/video_render/mac/video_render_agl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698