Index: webrtc/modules/video_render/ios/video_render_ios_impl.mm |
diff --git a/webrtc/modules/video_render/ios/video_render_ios_impl.mm b/webrtc/modules/video_render/ios/video_render_ios_impl.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0ef411d56f80adc1602a7c1965f4144eb3c5134f |
--- /dev/null |
+++ b/webrtc/modules/video_render/ios/video_render_ios_impl.mm |
@@ -0,0 +1,170 @@ |
+/* |
+ * Copyright (c) 2013 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. |
+ */ |
+ |
+#if !defined(__has_feature) || !__has_feature(objc_arc) |
+#error "This file requires ARC support." |
+#endif |
+ |
+#include "webrtc/modules/video_render/ios/video_render_ios_impl.h" |
+#include "webrtc/modules/video_render/ios/video_render_ios_gles20.h" |
+#include "webrtc/system_wrappers/include/critical_section_wrapper.h" |
+#include "webrtc/system_wrappers/include/trace.h" |
+ |
+using namespace webrtc; |
+ |
+#define IOS_UNSUPPORTED() \ |
+ WEBRTC_TRACE(kTraceError, \ |
+ kTraceVideoRenderer, \ |
+ id_, \ |
+ "%s is not supported on the iOS platform.", \ |
+ __FUNCTION__); \ |
+ return -1; |
+ |
+VideoRenderIosImpl::VideoRenderIosImpl(const int32_t id, |
+ void* window, |
+ const bool full_screen) |
+ : id_(id), |
+ ptr_window_(window), |
+ full_screen_(full_screen), |
+ crit_sec_(CriticalSectionWrapper::CreateCriticalSection()) {} |
+ |
+VideoRenderIosImpl::~VideoRenderIosImpl() { |
+ delete crit_sec_; |
+} |
+ |
+int32_t VideoRenderIosImpl::Init() { |
+ CriticalSectionScoped cs(crit_sec_); |
+ |
+ ptr_ios_render_.reset(new VideoRenderIosGles20( |
+ (__bridge VideoRenderIosView*)ptr_window_, full_screen_, id_)); |
+ |
+ return ptr_ios_render_->Init(); |
+ ; |
+} |
+ |
+int32_t VideoRenderIosImpl::ChangeWindow(void* window) { |
+ CriticalSectionScoped cs(crit_sec_); |
+ if (window == NULL) { |
+ return -1; |
+ } |
+ |
+ ptr_window_ = window; |
+ |
+ return ptr_ios_render_->ChangeWindow(ptr_window_); |
+} |
+ |
+VideoRenderCallback* VideoRenderIosImpl::AddIncomingRenderStream( |
+ const uint32_t stream_id, |
+ const uint32_t z_order, |
+ const float left, |
+ const float top, |
+ const float right, |
+ const float bottom) { |
+ CriticalSectionScoped cs(crit_sec_); |
+ if (!ptr_window_) { |
+ return NULL; |
+ } |
+ |
+ return ptr_ios_render_->CreateEaglChannel( |
+ stream_id, z_order, left, top, right, bottom); |
+} |
+ |
+int32_t VideoRenderIosImpl::DeleteIncomingRenderStream( |
+ const uint32_t stream_id) { |
+ CriticalSectionScoped cs(crit_sec_); |
+ |
+ return ptr_ios_render_->DeleteEaglChannel(stream_id); |
+} |
+ |
+int32_t VideoRenderIosImpl::GetIncomingRenderStreamProperties( |
+ const uint32_t stream_id, |
+ uint32_t& z_order, |
+ float& left, |
+ float& top, |
+ float& right, |
+ float& bottom) const { |
+ IOS_UNSUPPORTED(); |
+} |
+ |
+int32_t VideoRenderIosImpl::StartRender() { |
+ return ptr_ios_render_->StartRender(); |
+} |
+ |
+int32_t VideoRenderIosImpl::StopRender() { |
+ return ptr_ios_render_->StopRender(); |
+} |
+ |
+VideoRenderType VideoRenderIosImpl::RenderType() { return kRenderiOS; } |
+ |
+RawVideoType VideoRenderIosImpl::PerferedVideoType() { return kVideoI420; } |
+ |
+bool VideoRenderIosImpl::FullScreen() { IOS_UNSUPPORTED(); } |
+ |
+int32_t VideoRenderIosImpl::GetGraphicsMemory( |
+ uint64_t& totalGraphicsMemory, |
+ uint64_t& availableGraphicsMemory) const { |
+ IOS_UNSUPPORTED(); |
+} |
+ |
+int32_t VideoRenderIosImpl::GetScreenResolution(uint32_t& screenWidth, |
+ uint32_t& screenHeight) const { |
+ return ptr_ios_render_->GetScreenResolution(screenWidth, screenHeight); |
+} |
+ |
+uint32_t VideoRenderIosImpl::RenderFrameRate(const uint32_t streamId) { |
+ IOS_UNSUPPORTED(); |
+} |
+ |
+int32_t VideoRenderIosImpl::SetStreamCropping(const uint32_t streamId, |
+ const float left, |
+ const float top, |
+ const float right, |
+ const float bottom) { |
+ return ptr_ios_render_->SetStreamCropping(streamId, left, top, right, bottom); |
+} |
+ |
+int32_t VideoRenderIosImpl::ConfigureRenderer(const uint32_t streamId, |
+ const unsigned int zOrder, |
+ const float left, |
+ const float top, |
+ const float right, |
+ const float bottom) { |
+ IOS_UNSUPPORTED(); |
+} |
+ |
+int32_t VideoRenderIosImpl::SetTransparentBackground(const bool enable) { |
+ IOS_UNSUPPORTED(); |
+} |
+ |
+int32_t VideoRenderIosImpl::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) { |
+ IOS_UNSUPPORTED(); |
+} |
+ |
+int32_t VideoRenderIosImpl::SetBitmap(const void* bitMap, |
+ const uint8_t pictureId, |
+ const void* colorKey, |
+ const float left, |
+ const float top, |
+ const float right, |
+ const float bottom) { |
+ IOS_UNSUPPORTED(); |
+} |
+ |
+int32_t VideoRenderIosImpl::FullScreenRender(void* window, const bool enable) { |
+ IOS_UNSUPPORTED(); |
+} |