1470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/*
2843c8c78ff74f2ea11c5eb6384255d11ebe68b6dxians@webrtc.org *  Copyright (c) 2012 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
1157eb8586986a2c77b99124c270bc6caa11165f7fpbos@webrtc.org#include "webrtc/engine_configurations.h"
12470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#if defined(COCOA_RENDERING)
13470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
14d2cf48de1adfc35cfefde04f62a607f848ca3c1dandresp@webrtc.org#include "webrtc/modules/video_render/mac/cocoa_render_view.h"
15d2cf48de1adfc35cfefde04f62a607f848ca3c1dandresp@webrtc.org#include "webrtc/modules/video_render/mac/video_render_mac_cocoa_impl.h"
16d2cf48de1adfc35cfefde04f62a607f848ca3c1dandresp@webrtc.org#include "webrtc/modules/video_render/mac/video_render_nsopengl.h"
1798f53510b222f71fdd8b799b2f33737ceeb28c61Henrik Kjellander#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
1898f53510b222f71fdd8b799b2f33737ceeb28c61Henrik Kjellander#include "webrtc/system_wrappers/include/trace.h"
19470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
20470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comnamespace webrtc {
21470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
22ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgVideoRenderMacCocoaImpl::VideoRenderMacCocoaImpl(const int32_t id,
23470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        const VideoRenderType videoRenderType,
24470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        void* window,
25470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        const bool fullscreen) :
26470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com_id(id),
27470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com_renderMacCocoaCritsect(*CriticalSectionWrapper::CreateCriticalSection()),
28470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com_fullScreen(fullscreen),
29470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com_ptrWindow(window)
30470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
31470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
32470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "Constructor %s:%d", __FUNCTION__, __LINE__);
33470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
34470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
35470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comVideoRenderMacCocoaImpl::~VideoRenderMacCocoaImpl()
36470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
37470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "Destructor %s:%d", __FUNCTION__, __LINE__);
38470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    delete &_renderMacCocoaCritsect;
39470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    if (_ptrCocoaRender)
40470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    {
41470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        delete _ptrCocoaRender;
42470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        _ptrCocoaRender = NULL;
43470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    }
44470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
45470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
46ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t
47470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comVideoRenderMacCocoaImpl::Init()
48470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
49470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
500e703f4d0dc1616d11f1620aabff16cd7430406bmflodman@webrtc.org    CriticalSectionScoped cs(&_renderMacCocoaCritsect);
51470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:%d", __FUNCTION__, __LINE__);
52470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
53470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    // cast ptrWindow from void* to CocoaRenderer. Void* was once NSOpenGLView, and CocoaRenderer is NSOpenGLView.
54470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    _ptrCocoaRender = new VideoRenderNSOpenGL((CocoaRenderView*)_ptrWindow, _fullScreen, _id);
55470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    if (!_ptrWindow)
56470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    {
57470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id, "Constructor %s:%d", __FUNCTION__, __LINE__);
58470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        return -1;
59470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    }
60470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    int retVal = _ptrCocoaRender->Init();
61470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    if (retVal == -1)
62470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    {
63470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "Failed to init %s:%d", __FUNCTION__, __LINE__);
64470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        return -1;
65470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    }
66470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
67470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return 0;
68470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
69470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
70ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t
71470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comVideoRenderMacCocoaImpl::ChangeWindow(void* window)
72470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
73470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
740e703f4d0dc1616d11f1620aabff16cd7430406bmflodman@webrtc.org    CriticalSectionScoped cs(&_renderMacCocoaCritsect);
75470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s changing ID to ", __FUNCTION__, window);
76470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
77470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    if (window == NULL)
78470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    {
79470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        return -1;
80470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    }
81470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    _ptrWindow = window;
82470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
83470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
84470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    _ptrWindow = window;
85470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    _ptrCocoaRender->ChangeWindow((CocoaRenderView*)_ptrWindow);
86470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
87470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return 0;
88470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
89470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
90470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comVideoRenderCallback*
91ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgVideoRenderMacCocoaImpl::AddIncomingRenderStream(const uint32_t streamId,
92ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org        const uint32_t zOrder,
93470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        const float left,
94470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        const float top,
95470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        const float right,
96470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        const float bottom)
97470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
980e703f4d0dc1616d11f1620aabff16cd7430406bmflodman@webrtc.org    CriticalSectionScoped cs(&_renderMacCocoaCritsect);
99470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s", __FUNCTION__);
100470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    VideoChannelNSOpenGL* nsOpenGLChannel = NULL;
101470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
102470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    if(!_ptrWindow)
103470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    {
104470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    }
105470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
106470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    if(!nsOpenGLChannel)
107470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    {
108470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        nsOpenGLChannel = _ptrCocoaRender->CreateNSGLChannel(streamId, zOrder, left, top, right, bottom);
109470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    }
110470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
111470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return nsOpenGLChannel;
112470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
113470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
114470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
115ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t
116ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgVideoRenderMacCocoaImpl::DeleteIncomingRenderStream(const uint32_t streamId)
117470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
118470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "Constructor %s:%d", __FUNCTION__, __LINE__);
1190e703f4d0dc1616d11f1620aabff16cd7430406bmflodman@webrtc.org    CriticalSectionScoped cs(&_renderMacCocoaCritsect);
120470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    _ptrCocoaRender->DeleteNSGLChannel(streamId);
121470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
122470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return 0;
123470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
124470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
125ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t
126ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgVideoRenderMacCocoaImpl::GetIncomingRenderStreamProperties(const uint32_t streamId,
127ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org        uint32_t& zOrder,
128470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        float& left,
129470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        float& top,
130470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        float& right,
131470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        float& bottom) const
132470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
133470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return _ptrCocoaRender->GetChannelProperties(streamId, zOrder, left, top, right, bottom);
134470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
135470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
136ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t
137470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comVideoRenderMacCocoaImpl::StartRender()
138470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
139470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return _ptrCocoaRender->StartRender();
140470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
141470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
142ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t
143470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comVideoRenderMacCocoaImpl::StopRender()
144470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
145470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return _ptrCocoaRender->StopRender();
146470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
147470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
148470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comVideoRenderType
149470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comVideoRenderMacCocoaImpl::RenderType()
150470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
151470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return kRenderCocoa;
152470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
153470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
154470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comRawVideoType
155470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comVideoRenderMacCocoaImpl::PerferedVideoType()
156470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
157470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return kVideoI420;
158470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
159470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
160470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.combool
161470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comVideoRenderMacCocoaImpl::FullScreen()
162470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
163470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return false;
164470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
165470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
166ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t
167ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgVideoRenderMacCocoaImpl::GetGraphicsMemory(uint64_t& totalGraphicsMemory,
168ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org        uint64_t& availableGraphicsMemory) const
169470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
170470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    totalGraphicsMemory = 0;
171470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    availableGraphicsMemory = 0;
172470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return 0;
173470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
174470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
175ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t
176ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgVideoRenderMacCocoaImpl::GetScreenResolution(uint32_t& screenWidth,
177ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org        uint32_t& screenHeight) const
178470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
1790e703f4d0dc1616d11f1620aabff16cd7430406bmflodman@webrtc.org    CriticalSectionScoped cs(&_renderMacCocoaCritsect);
180470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    NSScreen* mainScreen = [NSScreen mainScreen];
181470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
182470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    NSRect frame = [mainScreen frame];
183470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
184470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    screenWidth = frame.size.width;
185470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    screenHeight = frame.size.height;
186470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return 0;
187470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
188470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
189ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orguint32_t
190ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgVideoRenderMacCocoaImpl::RenderFrameRate(const uint32_t streamId)
191470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
1920e703f4d0dc1616d11f1620aabff16cd7430406bmflodman@webrtc.org    CriticalSectionScoped cs(&_renderMacCocoaCritsect);
193470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return 0;
194470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
195470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
196ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t
197ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgVideoRenderMacCocoaImpl::SetStreamCropping(const uint32_t streamId,
198470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        const float left,
199470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        const float top,
200470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        const float right,
201470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        const float bottom)
202470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
203470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return 0;
204470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
205470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
206ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t VideoRenderMacCocoaImpl::ConfigureRenderer(const uint32_t streamId,
207ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                                   const unsigned int zOrder,
208ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                                   const float left,
209ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                                   const float top,
210ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                                   const float right,
211ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                                   const float bottom)
212470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
213470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return 0;
214470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
215470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
216ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t
217470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comVideoRenderMacCocoaImpl::SetTransparentBackground(const bool enable)
218470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
219470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return 0;
220470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
221470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
222ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t VideoRenderMacCocoaImpl::SetText(const uint8_t textId,
223ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                         const uint8_t* text,
224ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                         const int32_t textLength,
225ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                         const uint32_t textColorRef,
226ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                         const uint32_t backgroundColorRef,
227ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                         const float left,
228ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                         const float top,
229ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                         const float right,
230ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                         const float bottom)
231470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
232470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return _ptrCocoaRender->SetText(textId, text, textLength, textColorRef, backgroundColorRef, left, top, right, bottom);
233470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
234470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
235ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t VideoRenderMacCocoaImpl::SetBitmap(const void* bitMap,
236ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                           const uint8_t pictureId,
237ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                           const void* colorKey,
238ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                           const float left,
239ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                           const float top,
240ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                           const float right,
241ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.org                                           const float bottom)
242470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
243470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return 0;
244470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
245470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
246ddf94e71e524371f0cc2f6bcfed9ee5a972f11e9pbos@webrtc.orgint32_t VideoRenderMacCocoaImpl::FullScreenRender(void* window, const bool enable)
247470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{
248470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    return -1;
249470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}
250470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
251d900e8bea84c474696bf0219aed1353ce65ffd8epbos@webrtc.org}  // namespace webrtc
252470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
253470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#endif // COCOA_RENDERING
254