1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 117e5dc8741fbd5f07a709e6fd4d2cd8b08b7cee94pbos@webrtc.org#include "webrtc/modules/video_render/external/video_render_external_impl.h" 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgnamespace webrtc { 14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgVideoRenderExternalImpl::VideoRenderExternalImpl( 16e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const int32_t id, 17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const VideoRenderType videoRenderType, 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void* window, 19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const bool fullscreen) : 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org _id(id), _critSect(*CriticalSectionWrapper::CreateCriticalSection()), 21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org _fullscreen(fullscreen) 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgVideoRenderExternalImpl::~VideoRenderExternalImpl() 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org delete &_critSect; 28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 30e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::Init() 31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 35e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::ChangeUniqueId(const int32_t id) 36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org _id = id; 39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 42e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::ChangeWindow(void* window) 43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgVideoRenderCallback* 49e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgVideoRenderExternalImpl::AddIncomingRenderStream(const uint32_t streamId, 50e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t zOrder, 51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float left, 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float top, 53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float right, 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float bottom) 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return this; 58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 60e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::DeleteIncomingRenderStream( 61e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t streamId) 62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 67e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::GetIncomingRenderStreamProperties( 68e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t streamId, 69e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org uint32_t& zOrder, 70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org float& left, 71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org float& top, 72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org float& right, 73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org float& bottom) const 74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org zOrder = 0; 78b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org left = 0; 79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org top = 0; 80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org right = 0; 81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bottom = 0; 82b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 85b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 86e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::StartRender() 87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 90b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 92e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::StopRender() 93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 98b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgVideoRenderType VideoRenderExternalImpl::RenderType() 99b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return kRenderExternal; 101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgRawVideoType VideoRenderExternalImpl::PerferedVideoType() 104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return kVideoI420; 106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgbool VideoRenderExternalImpl::FullScreen() 109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return _fullscreen; 112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 113b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 114e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::GetGraphicsMemory( 115e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org uint64_t& totalGraphicsMemory, 116e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org uint64_t& availableGraphicsMemory) const 117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org totalGraphicsMemory = 0; 119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org availableGraphicsMemory = 0; 120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return -1; 121b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 122b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 123e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::GetScreenResolution( 124e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org uint32_t& screenWidth, 125e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org uint32_t& screenHeight) const 126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 128b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org screenWidth = 0; 129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org screenHeight = 0; 130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 132b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 133e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orguint32_t VideoRenderExternalImpl::RenderFrameRate( 134e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t streamId) 135b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 140e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::SetStreamCropping( 141e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t streamId, 142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float left, 143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float top, 144b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float right, 145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float bottom) 146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 151e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::ConfigureRenderer( 152e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t streamId, 153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const unsigned int zOrder, 154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float left, 155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float top, 156b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float right, 157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float bottom) 158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 163e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::SetTransparentBackground( 164b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const bool enable) 165b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 166b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 167b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 168b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 170e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::SetText( 171e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint8_t textId, 172e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint8_t* text, 173e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const int32_t textLength, 174e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t textColorRef, 175e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t backgroundColorRef, 176b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float left, 177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float top, 178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float right, 179b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float bottom) 180b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 181b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 182b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 183b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 185e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::SetBitmap(const void* bitMap, 186e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint8_t pictureId, 187e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const void* colorKey, 188e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const float left, 189e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const float top, 190e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const float right, 191e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const float bottom) 192b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 193b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionScoped cs(&_critSect); 194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 195b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 196b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 197b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// VideoRenderCallback 198e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.orgint32_t VideoRenderExternalImpl::RenderFrame( 199e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t streamId, 2003bbed74cdcf1f27ce82104ce645ec0dcdd36902dmikhal@webrtc.org I420VideoFrame& videoFrame) 201b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 202b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0; 203b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 2043b89e10f31160da35b408fd00cb8f89d2b08862dpbos@webrtc.org} // namespace webrtc 205