| /* |
| * Copyright 2015 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. |
| */ |
| |
| #import "RTCAVFoundationVideoSource+Private.h" |
| |
| #import "RTCMediaConstraints+Private.h" |
| #import "RTCPeerConnectionFactory+Private.h" |
| #import "RTCVideoSource+Private.h" |
| |
| @implementation RTCAVFoundationVideoSource { |
| webrtc::AVFoundationVideoCapturer *_capturer; |
| } |
| |
| - (instancetype)initWithFactory:(RTCPeerConnectionFactory *)factory |
| constraints:(RTCMediaConstraints *)constraints { |
| NSParameterAssert(factory); |
| // We pass ownership of the capturer to the source, but since we own |
| // the source, it should be ok to keep a raw pointer to the |
| // capturer. |
| _capturer = new webrtc::AVFoundationVideoCapturer(); |
| rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> source = |
| factory.nativeFactory->CreateVideoSource( |
| std::unique_ptr<cricket::VideoCapturer>(_capturer), |
| constraints.nativeConstraints.get()); |
| |
| return [super initWithNativeVideoSource:source]; |
| } |
| |
| - (void)adaptOutputFormatToWidth:(int)width |
| height:(int)height |
| fps:(int)fps { |
| self.capturer->AdaptOutputFormat(width, height, fps); |
| } |
| |
| - (BOOL)canUseBackCamera { |
| return self.capturer->CanUseBackCamera(); |
| } |
| |
| - (BOOL)useBackCamera { |
| return self.capturer->GetUseBackCamera(); |
| } |
| |
| - (void)setUseBackCamera:(BOOL)useBackCamera { |
| self.capturer->SetUseBackCamera(useBackCamera); |
| } |
| |
| - (AVCaptureSession *)captureSession { |
| return self.capturer->GetCaptureSession(); |
| } |
| |
| - (webrtc::AVFoundationVideoCapturer *)capturer { |
| return _capturer; |
| } |
| |
| @end |