Add local capturer on mac
BUG=webrtc:3417 Review-Url: https://codereview.webrtc.org/2283743003 Cr-Commit-Position: refs/heads/master@{#14004}
This commit is contained in:
parent
20fcbf15f0
commit
314bc5f8e4
@ -10,9 +10,7 @@
|
||||
|
||||
#import "ARDAppClient+Internal.h"
|
||||
|
||||
#if defined(WEBRTC_IOS)
|
||||
#import "WebRTC/RTCAVFoundationVideoSource.h"
|
||||
#endif
|
||||
#import "WebRTC/RTCAudioTrack.h"
|
||||
#import "WebRTC/RTCConfiguration.h"
|
||||
#import "WebRTC/RTCFileLogger.h"
|
||||
@ -53,14 +51,11 @@ static NSString * const kARDMediaStreamId = @"ARDAMS";
|
||||
static NSString * const kARDAudioTrackId = @"ARDAMSa0";
|
||||
static NSString * const kARDVideoTrackId = @"ARDAMSv0";
|
||||
|
||||
// TODO(tkchin): Remove guard once rtc_sdk_common_objc compiles on Mac.
|
||||
#if defined(WEBRTC_IOS)
|
||||
// TODO(tkchin): Add these as UI options.
|
||||
static BOOL const kARDAppClientEnableTracing = NO;
|
||||
static BOOL const kARDAppClientEnableRtcEventLog = YES;
|
||||
static int64_t const kARDAppClientAecDumpMaxSizeInBytes = 5e6; // 5 MB.
|
||||
static int64_t const kARDAppClientRtcEventLogMaxSizeInBytes = 5e6; // 5 MB.
|
||||
#endif
|
||||
|
||||
// We need a proxy to NSTimer because it causes a strong retain cycle. When
|
||||
// using the proxy, |invalidate| must be called before it properly deallocs.
|
||||
@ -698,9 +693,7 @@ static int64_t const kARDAppClientRtcEventLogMaxSizeInBytes = 5e6; // 5 MB.
|
||||
// The iOS simulator doesn't provide any sort of camera capture
|
||||
// support or emulation (http://goo.gl/rHAnC1) so don't bother
|
||||
// trying to open a local stream.
|
||||
// TODO(tkchin): local video capture for OSX. See
|
||||
// https://code.google.com/p/webrtc/issues/detail?id=3417.
|
||||
#if !TARGET_IPHONE_SIMULATOR && TARGET_OS_IPHONE
|
||||
#if !TARGET_IPHONE_SIMULATOR
|
||||
if (!_isAudioOnly) {
|
||||
RTCMediaConstraints *mediaConstraints =
|
||||
[self defaultMediaStreamConstraints];
|
||||
|
||||
@ -13,10 +13,8 @@
|
||||
#endif
|
||||
|
||||
#import "APPRTCAppDelegate.h"
|
||||
|
||||
#import "WebRTC/RTCSSLAdapter.h"
|
||||
|
||||
#import "APPRTCViewController.h"
|
||||
#import "WebRTC/RTCSSLAdapter.h"
|
||||
|
||||
@interface APPRTCAppDelegate () <NSWindowDelegate>
|
||||
@end
|
||||
|
||||
@ -21,6 +21,7 @@ static NSUInteger const kContentWidth = 1280;
|
||||
static NSUInteger const kContentHeight = 720;
|
||||
static NSUInteger const kRoomFieldWidth = 80;
|
||||
static NSUInteger const kLogViewHeight = 280;
|
||||
static NSUInteger const kPreviewWidth = 490;
|
||||
|
||||
@class APPRTCMainView;
|
||||
@protocol APPRTCMainViewDelegate
|
||||
@ -74,14 +75,18 @@ static NSUInteger const kLogViewHeight = 280;
|
||||
NSDictionaryOfVariableBindings(_roomLabel,
|
||||
_roomField,
|
||||
_scrollView,
|
||||
_remoteVideoView);
|
||||
_remoteVideoView,
|
||||
_localVideoView);
|
||||
|
||||
NSSize remoteViewSize = [self remoteVideoViewSize];
|
||||
NSDictionary* metrics = @{
|
||||
@"kLogViewHeight" : @(kLogViewHeight),
|
||||
@"kPreviewWidth" : @(kPreviewWidth),
|
||||
@"kRoomFieldWidth" : @(kRoomFieldWidth),
|
||||
@"remoteViewWidth" : @(remoteViewSize.width),
|
||||
@"remoteViewHeight" : @(remoteViewSize.height),
|
||||
@"localViewHeight" : @(remoteViewSize.height),
|
||||
@"scrollViewWidth" : @(kContentWidth - kPreviewWidth),
|
||||
};
|
||||
// Declare this separately to avoid compiler warning about splitting string
|
||||
// within an NSArray expression.
|
||||
@ -90,10 +95,14 @@ static NSUInteger const kLogViewHeight = 280;
|
||||
"-[_remoteVideoView(remoteViewHeight)]-|";
|
||||
NSArray* constraintFormats = @[
|
||||
verticalConstraint,
|
||||
@"V:[_localVideoView]-[_remoteVideoView]",
|
||||
@"V:[_localVideoView(kLogViewHeight)]",
|
||||
@"|-[_roomLabel]",
|
||||
@"|-[_roomField(kRoomFieldWidth)]",
|
||||
@"|-[_scrollView(remoteViewWidth)]-|",
|
||||
@"|-[_scrollView(scrollViewWidth)]",
|
||||
@"[_scrollView]-[_localVideoView]",
|
||||
@"|-[_remoteVideoView(remoteViewWidth)]-|",
|
||||
@"[_localVideoView(kPreviewWidth)]-|",
|
||||
];
|
||||
for (NSString* constraintFormat in constraintFormats) {
|
||||
NSArray* constraints =
|
||||
@ -190,20 +199,17 @@ static NSUInteger const kLogViewHeight = 280;
|
||||
_remoteVideoView.delegate = self;
|
||||
[self addSubview:_remoteVideoView];
|
||||
|
||||
// TODO(tkchin): create local video view.
|
||||
// https://code.google.com/p/webrtc/issues/detail?id=3417.
|
||||
_localVideoView = [[RTCNSGLVideoView alloc] initWithFrame:NSZeroRect
|
||||
pixelFormat:pixelFormat];
|
||||
[_localVideoView setTranslatesAutoresizingMaskIntoConstraints:NO];
|
||||
_localVideoView.delegate = self;
|
||||
[self addSubview:_localVideoView];
|
||||
}
|
||||
|
||||
- (NSSize)remoteVideoViewSize {
|
||||
if (_remoteVideoSize.width > 0 && _remoteVideoSize.height > 0) {
|
||||
return _remoteVideoSize;
|
||||
} else {
|
||||
return NSMakeSize(kContentWidth, kContentHeight);
|
||||
}
|
||||
}
|
||||
|
||||
- (NSSize)localVideoViewSize {
|
||||
return NSZeroSize;
|
||||
NSInteger width = MAX(_remoteVideoSize.width, kContentWidth);
|
||||
NSInteger height = (width/16) * 9;
|
||||
return NSMakeSize(width, height);
|
||||
}
|
||||
|
||||
@end
|
||||
@ -260,6 +266,7 @@ static NSUInteger const kLogViewHeight = 280;
|
||||
- (void)appClient:(ARDAppClient *)client
|
||||
didReceiveLocalVideoTrack:(RTCVideoTrack *)localVideoTrack {
|
||||
_localVideoTrack = localVideoTrack;
|
||||
[_localVideoTrack addRenderer:self.mainView.localVideoView];
|
||||
}
|
||||
|
||||
- (void)appClient:(ARDAppClient *)client
|
||||
@ -306,8 +313,11 @@ static NSUInteger const kLogViewHeight = 280;
|
||||
|
||||
- (void)resetUI {
|
||||
[_remoteVideoTrack removeRenderer:self.mainView.remoteVideoView];
|
||||
[_localVideoTrack removeRenderer:self.mainView.localVideoView];
|
||||
_remoteVideoTrack = nil;
|
||||
_localVideoTrack = nil;
|
||||
[self.mainView.remoteVideoView renderFrame:nil];
|
||||
[self.mainView.localVideoView renderFrame:nil];
|
||||
}
|
||||
|
||||
- (void)disconnect {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user