The rotation is currently always applied by AVFoundation by reconfiguring the capture connection video orientation. This CL sets the rotation field in the frame instead. This avoids the current flash in the video when the device is rotated, and also avoids reconfiguring the local encoder and remote decoder when the device is rotated. BUG=b/30651939 Review-Url: https://codereview.webrtc.org/2271583003 Cr-Commit-Position: refs/heads/master@{#13916}
335 lines
16 KiB
Python
335 lines
16 KiB
Python
# Copyright 2016 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.
|
|
|
|
{
|
|
'includes': [
|
|
'../build/common.gypi',
|
|
'sdk.gypi',
|
|
],
|
|
'conditions': [
|
|
['OS=="ios" or (OS=="mac" and mac_deployment_target=="10.7")', {
|
|
'targets': [
|
|
{
|
|
'target_name': 'rtc_sdk_common_objc',
|
|
'type': 'static_library',
|
|
'includes': [ '../build/objc_common.gypi' ],
|
|
'dependencies': [
|
|
'../base/base.gyp:rtc_base',
|
|
],
|
|
'include_dirs': [
|
|
'objc/Framework/Classes',
|
|
'objc/Framework/Headers',
|
|
],
|
|
'direct_dependent_settings': {
|
|
'include_dirs': [
|
|
'objc/Framework/Classes',
|
|
'objc/Framework/Headers',
|
|
],
|
|
},
|
|
'sources': [
|
|
'objc/Framework/Classes/NSString+StdString.h',
|
|
'objc/Framework/Classes/NSString+StdString.mm',
|
|
'objc/Framework/Classes/RTCDispatcher.m',
|
|
'objc/Framework/Classes/RTCFieldTrials.mm',
|
|
'objc/Framework/Classes/RTCLogging.mm',
|
|
'objc/Framework/Classes/RTCMetrics.mm',
|
|
'objc/Framework/Classes/RTCMetricsSampleInfo+Private.h',
|
|
'objc/Framework/Classes/RTCMetricsSampleInfo.mm',
|
|
'objc/Framework/Classes/RTCSSLAdapter.mm',
|
|
'objc/Framework/Classes/RTCTracing.mm',
|
|
'objc/Framework/Headers/WebRTC/RTCDispatcher.h',
|
|
'objc/Framework/Headers/WebRTC/RTCFieldTrials.h',
|
|
'objc/Framework/Headers/WebRTC/RTCLogging.h',
|
|
'objc/Framework/Headers/WebRTC/RTCMacros.h',
|
|
'objc/Framework/Headers/WebRTC/RTCMetrics.h',
|
|
'objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h',
|
|
'objc/Framework/Headers/WebRTC/RTCSSLAdapter.h',
|
|
'objc/Framework/Headers/WebRTC/RTCTracing.h',
|
|
],
|
|
'conditions': [
|
|
['OS=="ios"', {
|
|
'sources': [
|
|
'objc/Framework/Classes/RTCCameraPreviewView.m',
|
|
'objc/Framework/Classes/RTCUIApplication.h',
|
|
'objc/Framework/Classes/RTCUIApplication.mm',
|
|
'objc/Framework/Classes/UIDevice+RTCDevice.mm',
|
|
'objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h',
|
|
'objc/Framework/Headers/WebRTC/UIDevice+RTCDevice.h',
|
|
],
|
|
'link_settings': {
|
|
'xcode_settings': {
|
|
'OTHER_LDFLAGS': [
|
|
'-framework AVFoundation',
|
|
],
|
|
},
|
|
},
|
|
}], # OS=="ios"
|
|
['build_with_chromium==0', {
|
|
'sources': [
|
|
'objc/Framework/Classes/RTCFileLogger.mm',
|
|
'objc/Framework/Headers/WebRTC/RTCFileLogger.h',
|
|
],
|
|
}],
|
|
],
|
|
},
|
|
{
|
|
'target_name': 'rtc_sdk_peerconnection_objc',
|
|
'type': 'static_library',
|
|
'includes': [ '../build/objc_common.gypi' ],
|
|
'dependencies': [
|
|
'<(webrtc_root)/api/api.gyp:libjingle_peerconnection',
|
|
'rtc_sdk_common_objc',
|
|
],
|
|
'include_dirs': [
|
|
'objc/Framework/Classes',
|
|
'objc/Framework/Headers',
|
|
],
|
|
'direct_dependent_settings': {
|
|
'include_dirs': [
|
|
'objc/Framework/Classes',
|
|
'objc/Framework/Headers',
|
|
],
|
|
},
|
|
'link_settings': {
|
|
'xcode_settings': {
|
|
'OTHER_LDFLAGS': [
|
|
'-framework AVFoundation',
|
|
],
|
|
},
|
|
'libraries': [
|
|
'-lstdc++',
|
|
],
|
|
}, # link_settings
|
|
'sources': [
|
|
'objc/Framework/Classes/RTCAVFoundationVideoSource+Private.h',
|
|
'objc/Framework/Classes/RTCAVFoundationVideoSource.mm',
|
|
'objc/Framework/Classes/RTCAudioTrack+Private.h',
|
|
'objc/Framework/Classes/RTCAudioTrack.mm',
|
|
'objc/Framework/Classes/RTCConfiguration+Private.h',
|
|
'objc/Framework/Classes/RTCConfiguration.mm',
|
|
'objc/Framework/Classes/RTCDataChannel+Private.h',
|
|
'objc/Framework/Classes/RTCDataChannel.mm',
|
|
'objc/Framework/Classes/RTCDataChannelConfiguration+Private.h',
|
|
'objc/Framework/Classes/RTCDataChannelConfiguration.mm',
|
|
'objc/Framework/Classes/RTCI420Shader.mm',
|
|
'objc/Framework/Classes/RTCIceCandidate+Private.h',
|
|
'objc/Framework/Classes/RTCIceCandidate.mm',
|
|
'objc/Framework/Classes/RTCIceServer+Private.h',
|
|
'objc/Framework/Classes/RTCIceServer.mm',
|
|
'objc/Framework/Classes/RTCMediaConstraints+Private.h',
|
|
'objc/Framework/Classes/RTCMediaConstraints.mm',
|
|
'objc/Framework/Classes/RTCMediaStream+Private.h',
|
|
'objc/Framework/Classes/RTCMediaStream.mm',
|
|
'objc/Framework/Classes/RTCMediaStreamTrack+Private.h',
|
|
'objc/Framework/Classes/RTCMediaStreamTrack.mm',
|
|
'objc/Framework/Classes/RTCOpenGLDefines.h',
|
|
'objc/Framework/Classes/RTCOpenGLVideoRenderer.h',
|
|
'objc/Framework/Classes/RTCOpenGLVideoRenderer.mm',
|
|
'objc/Framework/Classes/RTCPeerConnection+DataChannel.mm',
|
|
'objc/Framework/Classes/RTCPeerConnection+Private.h',
|
|
'objc/Framework/Classes/RTCPeerConnection+Stats.mm',
|
|
'objc/Framework/Classes/RTCPeerConnection.mm',
|
|
'objc/Framework/Classes/RTCPeerConnectionFactory+Private.h',
|
|
'objc/Framework/Classes/RTCPeerConnectionFactory.mm',
|
|
'objc/Framework/Classes/RTCRtpCodecParameters+Private.h',
|
|
'objc/Framework/Classes/RTCRtpCodecParameters.mm',
|
|
'objc/Framework/Classes/RTCRtpEncodingParameters+Private.h',
|
|
'objc/Framework/Classes/RTCRtpEncodingParameters.mm',
|
|
'objc/Framework/Classes/RTCRtpParameters+Private.h',
|
|
'objc/Framework/Classes/RTCRtpParameters.mm',
|
|
'objc/Framework/Classes/RTCRtpReceiver+Private.h',
|
|
'objc/Framework/Classes/RTCRtpReceiver.mm',
|
|
'objc/Framework/Classes/RTCRtpSender+Private.h',
|
|
'objc/Framework/Classes/RTCRtpSender.mm',
|
|
'objc/Framework/Classes/RTCSessionDescription+Private.h',
|
|
'objc/Framework/Classes/RTCSessionDescription.mm',
|
|
'objc/Framework/Classes/RTCShader+Private.h',
|
|
'objc/Framework/Classes/RTCShader.h',
|
|
'objc/Framework/Classes/RTCShader.mm',
|
|
'objc/Framework/Classes/RTCStatsReport+Private.h',
|
|
'objc/Framework/Classes/RTCStatsReport.mm',
|
|
'objc/Framework/Classes/RTCVideoFrame+Private.h',
|
|
'objc/Framework/Classes/RTCVideoFrame.mm',
|
|
'objc/Framework/Classes/RTCVideoRendererAdapter+Private.h',
|
|
'objc/Framework/Classes/RTCVideoRendererAdapter.h',
|
|
'objc/Framework/Classes/RTCVideoRendererAdapter.mm',
|
|
'objc/Framework/Classes/RTCVideoSource+Private.h',
|
|
'objc/Framework/Classes/RTCVideoSource.mm',
|
|
'objc/Framework/Classes/RTCVideoTrack+Private.h',
|
|
'objc/Framework/Classes/RTCVideoTrack.mm',
|
|
'objc/Framework/Classes/avfoundationvideocapturer.h',
|
|
'objc/Framework/Classes/avfoundationvideocapturer.mm',
|
|
'objc/Framework/Headers/WebRTC/RTCAVFoundationVideoSource.h',
|
|
'objc/Framework/Headers/WebRTC/RTCAudioTrack.h',
|
|
'objc/Framework/Headers/WebRTC/RTCConfiguration.h',
|
|
'objc/Framework/Headers/WebRTC/RTCDataChannel.h',
|
|
'objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h',
|
|
'objc/Framework/Headers/WebRTC/RTCIceCandidate.h',
|
|
'objc/Framework/Headers/WebRTC/RTCIceServer.h',
|
|
'objc/Framework/Headers/WebRTC/RTCMediaConstraints.h',
|
|
'objc/Framework/Headers/WebRTC/RTCMediaStream.h',
|
|
'objc/Framework/Headers/WebRTC/RTCMediaStreamTrack.h',
|
|
'objc/Framework/Headers/WebRTC/RTCPeerConnection.h',
|
|
'objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h',
|
|
'objc/Framework/Headers/WebRTC/RTCRtpCodecParameters.h',
|
|
'objc/Framework/Headers/WebRTC/RTCRtpEncodingParameters.h',
|
|
'objc/Framework/Headers/WebRTC/RTCRtpParameters.h',
|
|
'objc/Framework/Headers/WebRTC/RTCRtpReceiver.h',
|
|
'objc/Framework/Headers/WebRTC/RTCRtpSender.h',
|
|
'objc/Framework/Headers/WebRTC/RTCSessionDescription.h',
|
|
'objc/Framework/Headers/WebRTC/RTCStatsReport.h',
|
|
'objc/Framework/Headers/WebRTC/RTCVideoFrame.h',
|
|
'objc/Framework/Headers/WebRTC/RTCVideoRenderer.h',
|
|
'objc/Framework/Headers/WebRTC/RTCVideoSource.h',
|
|
'objc/Framework/Headers/WebRTC/RTCVideoTrack.h',
|
|
], # sources
|
|
'conditions': [
|
|
['build_libyuv==1', {
|
|
'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv'],
|
|
}],
|
|
['OS=="ios"', {
|
|
'sources': [
|
|
'objc/Framework/Classes/RTCEAGLVideoView.m',
|
|
'objc/Framework/Classes/RTCNativeNV12Shader.mm',
|
|
'objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h',
|
|
],
|
|
'link_settings': {
|
|
'xcode_settings': {
|
|
'OTHER_LDFLAGS': [
|
|
'-framework CoreGraphics',
|
|
'-framework GLKit',
|
|
'-framework OpenGLES',
|
|
'-framework QuartzCore',
|
|
],
|
|
},
|
|
}, # link_settings
|
|
}], # OS=="ios"
|
|
['OS=="mac"', {
|
|
'sources': [
|
|
'objc/Framework/Classes/RTCNSGLVideoView.m',
|
|
'objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h',
|
|
],
|
|
'link_settings': {
|
|
'xcode_settings': {
|
|
'OTHER_LDFLAGS': [
|
|
'-framework CoreMedia',
|
|
'-framework OpenGL',
|
|
],
|
|
},
|
|
},
|
|
}],
|
|
], # conditions
|
|
}, # rtc_sdk_peerconnection_objc
|
|
{
|
|
'target_name': 'rtc_sdk_framework_objc',
|
|
'type': 'shared_library',
|
|
'product_name': 'WebRTC',
|
|
'mac_bundle': 1,
|
|
'includes': [ '../build/objc_common.gypi' ],
|
|
# Slightly hacky, but we need to re-declare files here that are C
|
|
# interfaces because otherwise they will be dead-stripped during
|
|
# linking (ObjC classes cannot be dead-stripped). We might consider
|
|
# just only using ObjC interfaces.
|
|
'sources': [
|
|
'objc/Framework/Classes/RTCFieldTrials.mm',
|
|
'objc/Framework/Classes/RTCLogging.mm',
|
|
'objc/Framework/Classes/RTCMetrics.mm',
|
|
'objc/Framework/Classes/RTCSSLAdapter.mm',
|
|
'objc/Framework/Classes/RTCTracing.mm',
|
|
'objc/Framework/Headers/WebRTC/RTCFieldTrials.h',
|
|
'objc/Framework/Headers/WebRTC/RTCLogging.h',
|
|
'objc/Framework/Headers/WebRTC/RTCSSLAdapter.h',
|
|
'objc/Framework/Headers/WebRTC/RTCTracing.h',
|
|
'objc/Framework/Headers/WebRTC/WebRTC.h',
|
|
'objc/Framework/Modules/module.modulemap',
|
|
],
|
|
'mac_framework_headers': [
|
|
'objc/Framework/Headers/WebRTC/RTCAudioTrack.h',
|
|
'objc/Framework/Headers/WebRTC/RTCAVFoundationVideoSource.h',
|
|
'objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h',
|
|
'objc/Framework/Headers/WebRTC/RTCConfiguration.h',
|
|
'objc/Framework/Headers/WebRTC/RTCDataChannel.h',
|
|
'objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h',
|
|
'objc/Framework/Headers/WebRTC/RTCDispatcher.h',
|
|
'objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h',
|
|
'objc/Framework/Headers/WebRTC/RTCFieldTrials.h',
|
|
'objc/Framework/Headers/WebRTC/RTCFileLogger.h',
|
|
'objc/Framework/Headers/WebRTC/RTCIceCandidate.h',
|
|
'objc/Framework/Headers/WebRTC/RTCIceServer.h',
|
|
'objc/Framework/Headers/WebRTC/RTCLogging.h',
|
|
'objc/Framework/Headers/WebRTC/RTCMacros.h',
|
|
'objc/Framework/Headers/WebRTC/RTCMediaConstraints.h',
|
|
'objc/Framework/Headers/WebRTC/RTCMediaStream.h',
|
|
'objc/Framework/Headers/WebRTC/RTCMediaStreamTrack.h',
|
|
'objc/Framework/Headers/WebRTC/RTCMetrics.h',
|
|
'objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h',
|
|
'objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h',
|
|
'objc/Framework/Headers/WebRTC/RTCPeerConnection.h',
|
|
'objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h',
|
|
'objc/Framework/Headers/WebRTC/RTCRtpCodecParameters.h',
|
|
'objc/Framework/Headers/WebRTC/RTCRtpEncodingParameters.h',
|
|
'objc/Framework/Headers/WebRTC/RTCRtpParameters.h',
|
|
'objc/Framework/Headers/WebRTC/RTCRtpReceiver.h',
|
|
'objc/Framework/Headers/WebRTC/RTCRtpSender.h',
|
|
'objc/Framework/Headers/WebRTC/RTCSessionDescription.h',
|
|
'objc/Framework/Headers/WebRTC/RTCSSLAdapter.h',
|
|
'objc/Framework/Headers/WebRTC/RTCStatsReport.h',
|
|
'objc/Framework/Headers/WebRTC/RTCTracing.h',
|
|
'objc/Framework/Headers/WebRTC/RTCVideoFrame.h',
|
|
'objc/Framework/Headers/WebRTC/RTCVideoRenderer.h',
|
|
'objc/Framework/Headers/WebRTC/RTCVideoSource.h',
|
|
'objc/Framework/Headers/WebRTC/RTCVideoTrack.h',
|
|
'objc/Framework/Headers/WebRTC/UIDevice+RTCDevice.h',
|
|
'objc/Framework/Headers/WebRTC/WebRTC.h',
|
|
],
|
|
'dependencies': [
|
|
'<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default',
|
|
'<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default',
|
|
'rtc_sdk_peerconnection_objc',
|
|
],
|
|
'xcode_settings': {
|
|
'CODE_SIGNING_REQUIRED': 'NO',
|
|
'CODE_SIGN_IDENTITY': '',
|
|
'DEFINES_MODULE': 'YES',
|
|
'INFOPLIST_FILE': 'objc/Framework/Info.plist',
|
|
'LD_DYLIB_INSTALL_NAME': '@rpath/WebRTC.framework/WebRTC',
|
|
'MODULEMAP_FILE': '<(webrtc_root)/sdk/Framework/Modules/module.modulemap',
|
|
},
|
|
'link_settings': {
|
|
'xcode_settings': {
|
|
'OTHER_LDFLAGS': [
|
|
'-framework AVFoundation',
|
|
'-framework AudioToolbox',
|
|
'-framework CoreGraphics',
|
|
'-framework CoreMedia',
|
|
'-framework GLKit',
|
|
'-framework VideoToolbox',
|
|
],
|
|
},
|
|
}, # link_settings
|
|
'conditions': [
|
|
# TODO(tkchin): Generate WebRTC.h based off of
|
|
# mac_framework_headers instead of hard-coding. Ok for now since we
|
|
# only really care about dynamic lib on iOS outside of chromium.
|
|
['OS!="mac"', {
|
|
'mac_framework_headers!': [
|
|
'objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h',
|
|
],
|
|
}],
|
|
['build_with_chromium==1', {
|
|
'mac_framework_headers!': [
|
|
'objc/Framework/Headers/WebRTC/RTCFileLogger.h',
|
|
],
|
|
}],
|
|
], # conditions
|
|
}, # rtc_sdk_framework_objc
|
|
], # targets
|
|
}], # OS=="ios" or (OS=="mac" and mac_deployment_target=="10.7")
|
|
],
|
|
}
|