| /* | 
 |  *  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_channel.h" | 
 |  | 
 | using namespace webrtc; | 
 |  | 
 | VideoRenderIosChannel::VideoRenderIosChannel(VideoRenderIosView* view) | 
 |     : view_(view), | 
 |       current_frame_(new I420VideoFrame()), | 
 |       buffer_is_updated_(false) {} | 
 |  | 
 | VideoRenderIosChannel::~VideoRenderIosChannel() { delete current_frame_; } | 
 |  | 
 | int32_t VideoRenderIosChannel::RenderFrame(const uint32_t stream_id, | 
 |                                            I420VideoFrame& video_frame) { | 
 |   video_frame.set_render_time_ms(0); | 
 |  | 
 |   current_frame_->CopyFrame(video_frame); | 
 |   buffer_is_updated_ = true; | 
 |  | 
 |   return 0; | 
 | } | 
 |  | 
 | bool VideoRenderIosChannel::RenderOffScreenBuffer() { | 
 |   if (![view_ renderFrame:current_frame_]) { | 
 |     return false; | 
 |   } | 
 |  | 
 |   buffer_is_updated_ = false; | 
 |  | 
 |   return true; | 
 | } | 
 |  | 
 | bool VideoRenderIosChannel::IsUpdated() { return buffer_is_updated_; } | 
 |  | 
 | int VideoRenderIosChannel::SetStreamSettings(const float z_order, | 
 |                                              const float left, | 
 |                                              const float top, | 
 |                                              const float right, | 
 |                                              const float bottom) { | 
 |   if (![view_ setCoordinatesForZOrder:z_order | 
 |                                  Left:left | 
 |                                   Top:bottom | 
 |                                 Right:right | 
 |                                Bottom:top]) { | 
 |  | 
 |     return -1; | 
 |   } | 
 |  | 
 |   return 0; | 
 | } |