| Index: webrtc/modules/video_render/video_render_internal_impl.cc
|
| diff --git a/webrtc/modules/video_render/video_render_internal_impl.cc b/webrtc/modules/video_render/video_render_internal_impl.cc
|
| deleted file mode 100644
|
| index ac89e7f2c996635d4eb0a07598fd44837177f69f..0000000000000000000000000000000000000000
|
| --- a/webrtc/modules/video_render/video_render_internal_impl.cc
|
| +++ /dev/null
|
| @@ -1,773 +0,0 @@
|
| -/*
|
| - * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license
|
| - * that can be found in the LICENSE file in the root of the source
|
| - * tree. An additional intellectual property rights grant can be found
|
| - * in the file PATENTS. All contributing project authors may
|
| - * be found in the AUTHORS file in the root of the source tree.
|
| - */
|
| -
|
| -#include <assert.h>
|
| -
|
| -#include "webrtc/common_video/include/incoming_video_stream.h"
|
| -#include "webrtc/engine_configurations.h"
|
| -#include "webrtc/modules/video_render/i_video_render.h"
|
| -#include "webrtc/modules/video_render/video_render_defines.h"
|
| -#include "webrtc/modules/video_render/video_render_impl.h"
|
| -#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
|
| -#include "webrtc/system_wrappers/include/trace.h"
|
| -
|
| -#if defined (_WIN32)
|
| -#include "webrtc/modules/video_render/windows/video_render_windows_impl.h"
|
| -#define STANDARD_RENDERING kRenderWindows
|
| -
|
| -// WEBRTC_IOS should go before WEBRTC_MAC because WEBRTC_MAC
|
| -// gets defined if WEBRTC_IOS is defined
|
| -#elif defined(WEBRTC_IOS)
|
| -#define STANDARD_RENDERING kRenderiOS
|
| -#include "webrtc/modules/video_render/ios/video_render_ios_impl.h"
|
| -#elif defined(WEBRTC_MAC)
|
| -#if defined(COCOA_RENDERING)
|
| -#define STANDARD_RENDERING kRenderCocoa
|
| -#include "webrtc/modules/video_render/mac/video_render_mac_cocoa_impl.h"
|
| -#elif defined(CARBON_RENDERING)
|
| -#define STANDARD_RENDERING kRenderCarbon
|
| -#include "webrtc/modules/video_render/mac/video_render_mac_carbon_impl.h"
|
| -#endif
|
| -
|
| -#elif defined(WEBRTC_ANDROID)
|
| -#include "webrtc/modules/video_render/android/video_render_android_impl.h"
|
| -#include "webrtc/modules/video_render/android/video_render_android_native_opengl2.h"
|
| -#include "webrtc/modules/video_render/android/video_render_android_surface_view.h"
|
| -#define STANDARD_RENDERING kRenderAndroid
|
| -
|
| -#elif defined(WEBRTC_LINUX)
|
| -#include "webrtc/modules/video_render/linux/video_render_linux_impl.h"
|
| -#define STANDARD_RENDERING kRenderX11
|
| -
|
| -#else
|
| -//Other platforms
|
| -#endif
|
| -
|
| -// For external rendering
|
| -#include "webrtc/modules/video_render/external/video_render_external_impl.h"
|
| -#ifndef STANDARD_RENDERING
|
| -#define STANDARD_RENDERING kRenderExternal
|
| -#endif // STANDARD_RENDERING
|
| -
|
| -namespace webrtc {
|
| -
|
| -VideoRender*
|
| -VideoRender::CreateVideoRender(const int32_t id,
|
| - void* window,
|
| - const bool fullscreen,
|
| - const VideoRenderType videoRenderType/*=kRenderDefault*/)
|
| -{
|
| - VideoRenderType resultVideoRenderType = videoRenderType;
|
| - if (videoRenderType == kRenderDefault)
|
| - {
|
| - resultVideoRenderType = STANDARD_RENDERING;
|
| - }
|
| - return new ModuleVideoRenderImpl(id, resultVideoRenderType, window,
|
| - fullscreen);
|
| -}
|
| -
|
| -void VideoRender::DestroyVideoRender(
|
| - VideoRender* module)
|
| -{
|
| - if (module)
|
| - {
|
| - delete module;
|
| - }
|
| -}
|
| -
|
| -ModuleVideoRenderImpl::ModuleVideoRenderImpl(
|
| - const int32_t id,
|
| - const VideoRenderType videoRenderType,
|
| - void* window,
|
| - const bool fullscreen) :
|
| - _id(id), _moduleCrit(*CriticalSectionWrapper::CreateCriticalSection()),
|
| - _ptrWindow(window), _fullScreen(fullscreen), _ptrRenderer(NULL)
|
| -{
|
| -
|
| - // Create platform specific renderer
|
| - switch (videoRenderType)
|
| - {
|
| -#if defined(_WIN32)
|
| - case kRenderWindows:
|
| - {
|
| - VideoRenderWindowsImpl* ptrRenderer;
|
| - ptrRenderer = new VideoRenderWindowsImpl(_id, videoRenderType, window, _fullScreen);
|
| - if (ptrRenderer)
|
| - {
|
| - _ptrRenderer = reinterpret_cast<IVideoRender*>(ptrRenderer);
|
| - }
|
| - }
|
| - break;
|
| -
|
| -#elif defined(WEBRTC_IOS)
|
| - case kRenderiOS:
|
| - {
|
| - VideoRenderIosImpl* ptrRenderer = new VideoRenderIosImpl(_id, window, _fullScreen);
|
| - if(ptrRenderer)
|
| - {
|
| - _ptrRenderer = reinterpret_cast<IVideoRender*>(ptrRenderer);
|
| - }
|
| - }
|
| - break;
|
| -
|
| -#elif defined(WEBRTC_MAC)
|
| -
|
| -#if defined(COCOA_RENDERING)
|
| - case kRenderCocoa:
|
| - {
|
| - VideoRenderMacCocoaImpl* ptrRenderer = new VideoRenderMacCocoaImpl(_id, videoRenderType, window, _fullScreen);
|
| - if(ptrRenderer)
|
| - {
|
| - _ptrRenderer = reinterpret_cast<IVideoRender*>(ptrRenderer);
|
| - }
|
| - }
|
| -
|
| - break;
|
| -#elif defined(CARBON_RENDERING)
|
| - case kRenderCarbon:
|
| - {
|
| - VideoRenderMacCarbonImpl* ptrRenderer = new VideoRenderMacCarbonImpl(_id, videoRenderType, window, _fullScreen);
|
| - if(ptrRenderer)
|
| - {
|
| - _ptrRenderer = reinterpret_cast<IVideoRender*>(ptrRenderer);
|
| - }
|
| - }
|
| - break;
|
| -#endif
|
| -
|
| -#elif defined(WEBRTC_ANDROID)
|
| - case kRenderAndroid:
|
| - {
|
| - if(AndroidNativeOpenGl2Renderer::UseOpenGL2(window))
|
| - {
|
| - AndroidNativeOpenGl2Renderer* ptrRenderer = NULL;
|
| - ptrRenderer = new AndroidNativeOpenGl2Renderer(_id, videoRenderType, window, _fullScreen);
|
| - if (ptrRenderer)
|
| - {
|
| - _ptrRenderer = reinterpret_cast<IVideoRender*> (ptrRenderer);
|
| - }
|
| - }
|
| - else
|
| - {
|
| - AndroidSurfaceViewRenderer* ptrRenderer = NULL;
|
| - ptrRenderer = new AndroidSurfaceViewRenderer(_id, videoRenderType, window, _fullScreen);
|
| - if (ptrRenderer)
|
| - {
|
| - _ptrRenderer = reinterpret_cast<IVideoRender*> (ptrRenderer);
|
| - }
|
| - }
|
| -
|
| - }
|
| - break;
|
| -#elif defined(WEBRTC_LINUX)
|
| - case kRenderX11:
|
| - {
|
| - VideoRenderLinuxImpl* ptrRenderer = NULL;
|
| - ptrRenderer = new VideoRenderLinuxImpl(_id, videoRenderType, window, _fullScreen);
|
| - if ( ptrRenderer )
|
| - {
|
| - _ptrRenderer = reinterpret_cast<IVideoRender*> (ptrRenderer);
|
| - }
|
| - }
|
| - break;
|
| -
|
| -#else
|
| - // Other platforms
|
| -#endif
|
| - case kRenderExternal:
|
| - {
|
| - VideoRenderExternalImpl* ptrRenderer(NULL);
|
| - ptrRenderer = new VideoRenderExternalImpl(_id, videoRenderType,
|
| - window, _fullScreen);
|
| - if (ptrRenderer)
|
| - {
|
| - _ptrRenderer = reinterpret_cast<IVideoRender*> (ptrRenderer);
|
| - }
|
| - }
|
| - break;
|
| - default:
|
| - // Error...
|
| - break;
|
| - }
|
| - if (_ptrRenderer)
|
| - {
|
| - if (_ptrRenderer->Init() == -1)
|
| - {
|
| - }
|
| - }
|
| -}
|
| -
|
| -ModuleVideoRenderImpl::~ModuleVideoRenderImpl()
|
| -{
|
| - delete &_moduleCrit;
|
| -
|
| - for (IncomingVideoStreamMap::iterator it = _streamRenderMap.begin();
|
| - it != _streamRenderMap.end();
|
| - ++it) {
|
| - delete it->second;
|
| - }
|
| -
|
| - // Delete platform specific renderer
|
| - if (_ptrRenderer)
|
| - {
|
| - VideoRenderType videoRenderType = _ptrRenderer->RenderType();
|
| -
|
| - switch (videoRenderType)
|
| - {
|
| - case kRenderExternal:
|
| - {
|
| - VideoRenderExternalImpl
|
| - * ptrRenderer =
|
| - reinterpret_cast<VideoRenderExternalImpl*> (_ptrRenderer);
|
| - _ptrRenderer = NULL;
|
| - delete ptrRenderer;
|
| - }
|
| - break;
|
| -#if defined(_WIN32)
|
| - case kRenderWindows:
|
| - {
|
| - VideoRenderWindowsImpl* ptrRenderer = reinterpret_cast<VideoRenderWindowsImpl*>(_ptrRenderer);
|
| - _ptrRenderer = NULL;
|
| - delete ptrRenderer;
|
| - }
|
| - break;
|
| -#elif defined(WEBRTC_IOS)
|
| - case kRenderiOS:
|
| - {
|
| - VideoRenderIosImpl* ptrRenderer = reinterpret_cast<VideoRenderIosImpl*> (_ptrRenderer);
|
| - _ptrRenderer = NULL;
|
| - delete ptrRenderer;
|
| - }
|
| - break;
|
| -#elif defined(WEBRTC_MAC)
|
| -
|
| -#if defined(COCOA_RENDERING)
|
| - case kRenderCocoa:
|
| - {
|
| - VideoRenderMacCocoaImpl* ptrRenderer = reinterpret_cast<VideoRenderMacCocoaImpl*> (_ptrRenderer);
|
| - _ptrRenderer = NULL;
|
| - delete ptrRenderer;
|
| - }
|
| - break;
|
| -#elif defined(CARBON_RENDERING)
|
| - case kRenderCarbon:
|
| - {
|
| - VideoRenderMacCarbonImpl* ptrRenderer = reinterpret_cast<VideoRenderMacCarbonImpl*> (_ptrRenderer);
|
| - _ptrRenderer = NULL;
|
| - delete ptrRenderer;
|
| - }
|
| - break;
|
| -#endif
|
| -
|
| -#elif defined(WEBRTC_ANDROID)
|
| - case kRenderAndroid:
|
| - {
|
| - VideoRenderAndroid* ptrRenderer = reinterpret_cast<VideoRenderAndroid*> (_ptrRenderer);
|
| - _ptrRenderer = NULL;
|
| - delete ptrRenderer;
|
| - }
|
| - break;
|
| -
|
| -#elif defined(WEBRTC_LINUX)
|
| - case kRenderX11:
|
| - {
|
| - VideoRenderLinuxImpl* ptrRenderer = reinterpret_cast<VideoRenderLinuxImpl*> (_ptrRenderer);
|
| - _ptrRenderer = NULL;
|
| - delete ptrRenderer;
|
| - }
|
| - break;
|
| -#else
|
| - //other platforms
|
| -#endif
|
| -
|
| - default:
|
| - // Error...
|
| - break;
|
| - }
|
| - }
|
| -}
|
| -
|
| -int64_t ModuleVideoRenderImpl::TimeUntilNextProcess()
|
| -{
|
| - // Not used
|
| - return 50;
|
| -}
|
| -void ModuleVideoRenderImpl::Process() {}
|
| -
|
| -void*
|
| -ModuleVideoRenderImpl::Window()
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| - return _ptrWindow;
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::ChangeWindow(void* window)
|
| -{
|
| -
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| -#if defined(WEBRTC_IOS) // WEBRTC_IOS must go before WEBRTC_MAC
|
| - _ptrRenderer = NULL;
|
| - delete _ptrRenderer;
|
| -
|
| - VideoRenderIosImpl* ptrRenderer;
|
| - ptrRenderer = new VideoRenderIosImpl(_id, window, _fullScreen);
|
| - if (!ptrRenderer)
|
| - {
|
| - return -1;
|
| - }
|
| - _ptrRenderer = reinterpret_cast<IVideoRender*>(ptrRenderer);
|
| - return _ptrRenderer->ChangeWindow(window);
|
| -#elif defined(WEBRTC_MAC)
|
| -
|
| - _ptrRenderer = NULL;
|
| - delete _ptrRenderer;
|
| -
|
| -#if defined(COCOA_RENDERING)
|
| - VideoRenderMacCocoaImpl* ptrRenderer;
|
| - ptrRenderer = new VideoRenderMacCocoaImpl(_id, kRenderCocoa, window, _fullScreen);
|
| -#elif defined(CARBON_RENDERING)
|
| - VideoRenderMacCarbonImpl* ptrRenderer;
|
| - ptrRenderer = new VideoRenderMacCarbonImpl(_id, kRenderCarbon, window, _fullScreen);
|
| -#endif
|
| - if (!ptrRenderer)
|
| - {
|
| - return -1;
|
| - }
|
| - _ptrRenderer = reinterpret_cast<IVideoRender*>(ptrRenderer);
|
| - return _ptrRenderer->ChangeWindow(window);
|
| -
|
| -#else
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return -1;
|
| - }
|
| - return _ptrRenderer->ChangeWindow(window);
|
| -
|
| -#endif
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::Id()
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| - return _id;
|
| -}
|
| -
|
| -uint32_t ModuleVideoRenderImpl::GetIncomingFrameRate(const uint32_t streamId) {
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - IncomingVideoStreamMap::iterator it = _streamRenderMap.find(streamId);
|
| -
|
| - if (it == _streamRenderMap.end()) {
|
| - // This stream doesn't exist
|
| - WEBRTC_TRACE(kTraceError,
|
| - kTraceVideoRenderer,
|
| - _id,
|
| - "%s: stream doesn't exist",
|
| - __FUNCTION__);
|
| - return 0;
|
| - }
|
| - assert(it->second != NULL);
|
| - return it->second->IncomingRate();
|
| -}
|
| -
|
| -VideoRenderCallback*
|
| -ModuleVideoRenderImpl::AddIncomingRenderStream(const uint32_t streamId,
|
| - const uint32_t zOrder,
|
| - const float left,
|
| - const float top,
|
| - const float right,
|
| - const float bottom)
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return NULL;
|
| - }
|
| -
|
| - if (_streamRenderMap.find(streamId) != _streamRenderMap.end()) {
|
| - // The stream already exists...
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: stream already exists", __FUNCTION__);
|
| - return NULL;
|
| - }
|
| -
|
| - VideoRenderCallback* ptrRenderCallback =
|
| - _ptrRenderer->AddIncomingRenderStream(streamId, zOrder, left, top,
|
| - right, bottom);
|
| - if (ptrRenderCallback == NULL)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: Can't create incoming stream in renderer",
|
| - __FUNCTION__);
|
| - return NULL;
|
| - }
|
| -
|
| - // Create platform independant code
|
| - IncomingVideoStream* ptrIncomingStream =
|
| - new IncomingVideoStream(streamId, false);
|
| - ptrIncomingStream->SetRenderCallback(ptrRenderCallback);
|
| - VideoRenderCallback* moduleCallback = ptrIncomingStream->ModuleCallback();
|
| -
|
| - // Store the stream
|
| - _streamRenderMap[streamId] = ptrIncomingStream;
|
| -
|
| - return moduleCallback;
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::DeleteIncomingRenderStream(
|
| - const uint32_t streamId)
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return -1;
|
| - }
|
| -
|
| - IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
|
| - if (item == _streamRenderMap.end())
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: stream doesn't exist", __FUNCTION__);
|
| - return -1;
|
| - }
|
| -
|
| - delete item->second;
|
| -
|
| - _ptrRenderer->DeleteIncomingRenderStream(streamId);
|
| -
|
| - _streamRenderMap.erase(item);
|
| -
|
| - return 0;
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::AddExternalRenderCallback(
|
| - const uint32_t streamId,
|
| - VideoRenderCallback* renderObject) {
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
|
| -
|
| - if (item == _streamRenderMap.end())
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: stream doesn't exist", __FUNCTION__);
|
| - return -1;
|
| - }
|
| -
|
| - if (item->second == NULL) {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: could not get stream", __FUNCTION__);
|
| - return -1;
|
| - }
|
| - item->second->SetExternalCallback(renderObject);
|
| - return 0;
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::GetIncomingRenderStreamProperties(
|
| - const uint32_t streamId,
|
| - uint32_t& zOrder,
|
| - float& left,
|
| - float& top,
|
| - float& right,
|
| - float& bottom) const {
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return -1;
|
| - }
|
| -
|
| - return _ptrRenderer->GetIncomingRenderStreamProperties(streamId, zOrder,
|
| - left, top, right,
|
| - bottom);
|
| -}
|
| -
|
| -uint32_t ModuleVideoRenderImpl::GetNumIncomingRenderStreams() const
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - return static_cast<uint32_t>(_streamRenderMap.size());
|
| -}
|
| -
|
| -bool ModuleVideoRenderImpl::HasIncomingRenderStream(
|
| - const uint32_t streamId) const {
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - return _streamRenderMap.find(streamId) != _streamRenderMap.end();
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::RegisterRawFrameCallback(
|
| - const uint32_t streamId,
|
| - VideoRenderCallback* callbackObj) {
|
| - return -1;
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::StartRender(const uint32_t streamId)
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return -1;
|
| - }
|
| -
|
| - // Start the stream
|
| - IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
|
| -
|
| - if (item == _streamRenderMap.end())
|
| - {
|
| - return -1;
|
| - }
|
| -
|
| - if (item->second->Start() == -1)
|
| - {
|
| - return -1;
|
| - }
|
| -
|
| - // Start the HW renderer
|
| - if (_ptrRenderer->StartRender() == -1)
|
| - {
|
| - return -1;
|
| - }
|
| - return 0;
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::StopRender(const uint32_t streamId)
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s(%d): No renderer", __FUNCTION__, streamId);
|
| - return -1;
|
| - }
|
| -
|
| - // Stop the incoming stream
|
| - IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
|
| -
|
| - if (item == _streamRenderMap.end())
|
| - {
|
| - return -1;
|
| - }
|
| -
|
| - if (item->second->Stop() == -1)
|
| - {
|
| - return -1;
|
| - }
|
| -
|
| - return 0;
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::ResetRender()
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - int32_t ret = 0;
|
| - // Loop through all incoming streams and reset them
|
| - for (IncomingVideoStreamMap::iterator it = _streamRenderMap.begin();
|
| - it != _streamRenderMap.end();
|
| - ++it) {
|
| - if (it->second->Reset() == -1)
|
| - ret = -1;
|
| - }
|
| - return ret;
|
| -}
|
| -
|
| -RawVideoType ModuleVideoRenderImpl::PreferredVideoType() const
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (_ptrRenderer == NULL)
|
| - {
|
| - return kVideoI420;
|
| - }
|
| -
|
| - return _ptrRenderer->PerferedVideoType();
|
| -}
|
| -
|
| -bool ModuleVideoRenderImpl::IsFullScreen()
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return false;
|
| - }
|
| - return _ptrRenderer->FullScreen();
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::GetScreenResolution(
|
| - uint32_t& screenWidth,
|
| - uint32_t& screenHeight) const
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return false;
|
| - }
|
| - return _ptrRenderer->GetScreenResolution(screenWidth, screenHeight);
|
| -}
|
| -
|
| -uint32_t ModuleVideoRenderImpl::RenderFrameRate(
|
| - const uint32_t streamId)
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return false;
|
| - }
|
| - return _ptrRenderer->RenderFrameRate(streamId);
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::SetStreamCropping(
|
| - const uint32_t streamId,
|
| - const float left,
|
| - const float top,
|
| - const float right,
|
| - const float bottom)
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return false;
|
| - }
|
| - return _ptrRenderer->SetStreamCropping(streamId, left, top, right, bottom);
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::SetTransparentBackground(const bool enable)
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return false;
|
| - }
|
| - return _ptrRenderer->SetTransparentBackground(enable);
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::FullScreenRender(void* window, const bool enable)
|
| -{
|
| - return -1;
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::SetText(
|
| - const uint8_t textId,
|
| - const uint8_t* text,
|
| - const int32_t textLength,
|
| - const uint32_t textColorRef,
|
| - const uint32_t backgroundColorRef,
|
| - const float left, const float top,
|
| - const float right,
|
| - const float bottom)
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return -1;
|
| - }
|
| - return _ptrRenderer->SetText(textId, text, textLength, textColorRef,
|
| - backgroundColorRef, left, top, right, bottom);
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::SetBitmap(const void* bitMap,
|
| - const uint8_t pictureId,
|
| - const void* colorKey,
|
| - const float left,
|
| - const float top,
|
| - const float right,
|
| - const float bottom)
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return -1;
|
| - }
|
| - return _ptrRenderer->SetBitmap(bitMap, pictureId, colorKey, left, top,
|
| - right, bottom);
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::SetExpectedRenderDelay(
|
| - uint32_t stream_id, int32_t delay_ms) {
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer) {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return false;
|
| - }
|
| -
|
| - IncomingVideoStreamMap::const_iterator item =
|
| - _streamRenderMap.find(stream_id);
|
| - if (item == _streamRenderMap.end()) {
|
| - // This stream doesn't exist
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s(%u, %d): stream doesn't exist", __FUNCTION__, stream_id,
|
| - delay_ms);
|
| - return -1;
|
| - }
|
| -
|
| - assert(item->second != NULL);
|
| - return item->second->SetExpectedRenderDelay(delay_ms);
|
| -}
|
| -
|
| -int32_t ModuleVideoRenderImpl::ConfigureRenderer(
|
| - const uint32_t streamId,
|
| - const unsigned int zOrder,
|
| - const float left,
|
| - const float top,
|
| - const float right,
|
| - const float bottom)
|
| -{
|
| - CriticalSectionScoped cs(&_moduleCrit);
|
| -
|
| - if (!_ptrRenderer)
|
| - {
|
| - WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
|
| - "%s: No renderer", __FUNCTION__);
|
| - return false;
|
| - }
|
| - return _ptrRenderer->ConfigureRenderer(streamId, zOrder, left, top, right,
|
| - bottom);
|
| -}
|
| -
|
| -} // namespace webrtc
|
|
|