| Index: webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm
|
| diff --git a/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm b/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm
|
| index 0d510fb26d899fe44160dbf9fa84997fd456620e..4a0ecea5fbb42a53e132c83d9473ab889984d5c2 100644
|
| --- a/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm
|
| +++ b/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm
|
| @@ -12,7 +12,9 @@
|
|
|
| #import <AVFoundation/AVFoundation.h>
|
| #import <Foundation/Foundation.h>
|
| +#if TARGET_OS_IPHONE
|
| #import <UIKit/UIKit.h>
|
| +#endif
|
|
|
| #import "RTCDispatcher+Private.h"
|
| #import "WebRTC/RTCLogging.h"
|
| @@ -88,6 +90,7 @@ - (instancetype)initWithCapturer:(webrtc::AVFoundationVideoCapturer *)capturer {
|
| return nil;
|
| }
|
| NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
|
| +#if TARGET_OS_IPHONE
|
| [center addObserver:self
|
| selector:@selector(deviceOrientationDidChange:)
|
| name:UIDeviceOrientationDidChangeNotification
|
| @@ -100,6 +103,7 @@ - (instancetype)initWithCapturer:(webrtc::AVFoundationVideoCapturer *)capturer {
|
| selector:@selector(handleCaptureSessionInterruptionEnded:)
|
| name:AVCaptureSessionInterruptionEndedNotification
|
| object:_captureSession];
|
| +#endif
|
| [center addObserver:self
|
| selector:@selector(handleCaptureSessionRuntimeError:)
|
| name:AVCaptureSessionRuntimeErrorNotification
|
| @@ -188,7 +192,9 @@ - (void)start {
|
| block:^{
|
| _orientationHasChanged = NO;
|
| [self updateOrientation];
|
| +#if TARGET_OS_IPHONE
|
| [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
|
| +#endif
|
| AVCaptureSession *captureSession = self.captureSession;
|
| [captureSession startRunning];
|
| }];
|
| @@ -207,12 +213,15 @@ - (void)stop {
|
| block:^{
|
| [_videoDataOutput setSampleBufferDelegate:nil queue:nullptr];
|
| [_captureSession stopRunning];
|
| +#if TARGET_OS_IPHONE
|
| [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
|
| +#endif
|
| }];
|
| }
|
|
|
| #pragma mark iOS notifications
|
|
|
| +#if TARGET_OS_IPHONE
|
| - (void)deviceOrientationDidChange:(NSNotification *)notification {
|
| [RTCDispatcher dispatchAsyncOnType:RTCDispatcherTypeCaptureSession
|
| block:^{
|
| @@ -220,6 +229,7 @@ - (void)deviceOrientationDidChange:(NSNotification *)notification {
|
| [self updateOrientation];
|
| }];
|
| }
|
| +#endif
|
|
|
| #pragma mark AVCaptureVideoDataOutputSampleBufferDelegate
|
|
|
| @@ -273,16 +283,21 @@ - (void)handleCaptureSessionInterruptionEnded:(NSNotification *)notification {
|
| }
|
|
|
| - (void)handleCaptureSessionRuntimeError:(NSNotification *)notification {
|
| - NSError *error = notification.userInfo[AVCaptureSessionErrorKey];
|
| + NSError *error =
|
| + [notification.userInfo objectForKey:AVCaptureSessionErrorKey];
|
| RTCLogError(@"Capture session runtime error: %@", error.localizedDescription);
|
|
|
| [RTCDispatcher dispatchAsyncOnType:RTCDispatcherTypeCaptureSession
|
| block:^{
|
| +#if TARGET_OS_IPHONE
|
| if (error.code == AVErrorMediaServicesWereReset) {
|
| [self handleNonFatalError];
|
| } else {
|
| [self handleFatalError];
|
| }
|
| +#else
|
| + [self handleFatalError];
|
| +#endif
|
| }];
|
| }
|
|
|
| @@ -402,8 +417,13 @@ - (AVCaptureDevice *)videoCaptureDeviceForPosition:
|
|
|
| - (AVCaptureDeviceInput *)frontCameraInput {
|
| if (!_frontCameraInput) {
|
| +#if TARGET_OS_IPHONE
|
| AVCaptureDevice *frontCameraDevice =
|
| [self videoCaptureDeviceForPosition:AVCaptureDevicePositionFront];
|
| +#else
|
| + AVCaptureDevice *frontCameraDevice =
|
| + [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
|
| +#endif
|
| if (!frontCameraDevice) {
|
| RTCLogWarning(@"Failed to find front capture device.");
|
| return nil;
|
| @@ -452,6 +472,7 @@ - (void)updateOrientation {
|
| // TODO(tkchin): set rotation bit on frames.
|
| return;
|
| }
|
| +#if TARGET_OS_IPHONE
|
| AVCaptureVideoOrientation orientation = AVCaptureVideoOrientationPortrait;
|
| switch ([UIDevice currentDevice].orientation) {
|
| case UIDeviceOrientationPortrait:
|
| @@ -475,6 +496,7 @@ - (void)updateOrientation {
|
| return;
|
| }
|
| connection.videoOrientation = orientation;
|
| +#endif
|
| }
|
|
|
| // Update the current session input to match what's stored in _useBackCamera.
|
|
|