├── .gitignore ├── README.md └── janus-gateway-ios ├── Janus ├── AppDelegate.h ├── AppDelegate.m ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Info.plist ├── JanusConnection.h ├── JanusConnection.m ├── JanusHandle.h ├── JanusHandle.m ├── JanusTransaction.h ├── JanusTransaction.m ├── RTCSessionDescription+JSON.h ├── RTCSessionDescription+JSON.m ├── ViewController.h ├── ViewController.m ├── WebRTC.framework │ ├── Headers │ │ ├── RTCAVFoundationVideoSource.h │ │ ├── RTCAudioSource.h │ │ ├── RTCAudioTrack.h │ │ ├── RTCCameraPreviewView.h │ │ ├── RTCConfiguration.h │ │ ├── RTCDataChannel.h │ │ ├── RTCDataChannelConfiguration.h │ │ ├── RTCDispatcher.h │ │ ├── RTCEAGLVideoView.h │ │ ├── RTCFieldTrials.h │ │ ├── RTCFileLogger.h │ │ ├── RTCIceCandidate.h │ │ ├── RTCIceServer.h │ │ ├── RTCLegacyStatsReport.h │ │ ├── RTCLogging.h │ │ ├── RTCMTLVideoView.h │ │ ├── RTCMacros.h │ │ ├── RTCMediaConstraints.h │ │ ├── RTCMediaSource.h │ │ ├── RTCMediaStream.h │ │ ├── RTCMediaStreamTrack.h │ │ ├── RTCMetrics.h │ │ ├── RTCMetricsSampleInfo.h │ │ ├── RTCPeerConnection.h │ │ ├── RTCPeerConnectionFactory.h │ │ ├── RTCRtpCodecParameters.h │ │ ├── RTCRtpEncodingParameters.h │ │ ├── RTCRtpParameters.h │ │ ├── RTCRtpReceiver.h │ │ ├── RTCRtpSender.h │ │ ├── RTCSSLAdapter.h │ │ ├── RTCSessionDescription.h │ │ ├── RTCTracing.h │ │ ├── RTCVideoCapturer.h │ │ ├── RTCVideoFrame.h │ │ ├── RTCVideoRenderer.h │ │ ├── RTCVideoSource.h │ │ ├── RTCVideoTrack.h │ │ ├── UIDevice+RTCDevice.h │ │ └── WebRTC.h │ ├── Info.plist │ ├── LICENSE.html │ ├── Modules │ │ └── module.modulemap │ └── WebRTC ├── WebSocketChannel.h ├── WebSocketChannel.m └── main.m ├── Podfile ├── Podfile.lock └── janus-gateway-ios.xcodeproj └── project.pbxproj /.gitignore: -------------------------------------------------------------------------------- 1 | ##### 2 | # OS X temporary files that should never be committed 3 | # 4 | # c.f. http://www.westwind.com/reference/os-x/invisibles.html 5 | .DS_Store 6 | 7 | # c.f. http://www.westwind.com/reference/os-x/invisibles.html 8 | .Trashes 9 | 10 | # c.f. http://www.westwind.com/reference/os-x/invisibles.html 11 | *.swp 12 | 13 | # *.lock - this is used and abused by many editors for many different things. 14 | # For the main ones I use (e.g. Eclipse), it should be excluded 15 | # from source-control, but YMMV 16 | # *.lock 17 | 18 | # 19 | # profile - REMOVED temporarily (on double-checking, this seems incorrect; I can't find it in OS X docs?) 20 | #profile 21 | 22 | #### 23 | # Xcode temporary files that should never be committed 24 | # 25 | # NB: NIB/XIB files still exist even on Storyboard projects, so we want this... 26 | *~.nib 27 | 28 | #### 29 | # Xcode build files - 30 | # 31 | # NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "DerivedData" 32 | DerivedData/ 33 | 34 | # NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "build" 35 | build/ 36 | 37 | ##### 38 | # Xcode private settings (window sizes, bookmarks, breakpoints, custom executables, smart groups) 39 | # 40 | # This is complicated: 41 | # 42 | # SOMETIMES you need to put this file in version control. 43 | # Apple designed it poorly - if you use "custom executables", they are 44 | # saved in this file. 45 | # 99% of projects do NOT use those, so they do NOT want to version control this file. 46 | # ..but if you're in the 1%, comment out the line "*.pbxuser" 47 | 48 | # .pbxuser: http://lists.apple.com/archives/xcode-users/2004/Jan/msg00193.html 49 | 50 | *.pbxuser 51 | 52 | # .mode1v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html 53 | 54 | *.mode1v3 55 | 56 | # .mode2v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html 57 | 58 | *.mode2v3 59 | 60 | # .perspectivev3: http://stackoverflow.com/questions/5223297/xcode-projects-what-is-a-perspectivev3-file 61 | 62 | *.perspectivev3 63 | 64 | # NB: also, whitelist the default ones, some projects need to use these 65 | !default.pbxuser 66 | !default.mode1v3 67 | !default.mode2v3 68 | !default.perspectivev3 69 | 70 | 71 | #### 72 | # Xcode 4 - semi-personal settings 73 | # 74 | # 75 | # OPTION 1: --------------------------------- 76 | # throw away ALL personal settings (including custom schemes! 77 | # - unless they are "shared") 78 | # 79 | # NB: this is exclusive with OPTION 2 below 80 | xcuserdata 81 | 82 | # OPTION 2: --------------------------------- 83 | # get rid of ALL personal settings, but KEEP SOME OF THEM 84 | # - NB: you must manually uncomment the bits you want to keep 85 | # 86 | # NB: this is exclusive with OPTION 1 above 87 | # 88 | #xcuserdata/**/* 89 | 90 | # (requires option 2 above): Personal Schemes 91 | # 92 | #!xcuserdata/**/xcschemes/* 93 | 94 | #### 95 | # XCode 4 workspaces - more detailed 96 | # 97 | # Workspaces are important! They are a core feature of Xcode - don't exclude them :) 98 | # 99 | # Workspace layout is quite spammy. For reference: 100 | # 101 | # /(root)/ 102 | # /(project-name).xcodeproj/ 103 | # project.pbxproj 104 | # /project.xcworkspace/ 105 | # contents.xcworkspacedata 106 | # /xcuserdata/ 107 | # /(your name)/xcuserdatad/ 108 | # UserInterfaceState.xcuserstate 109 | # /xcsshareddata/ 110 | # /xcschemes/ 111 | # (shared scheme name).xcscheme 112 | # /xcuserdata/ 113 | # /(your name)/xcuserdatad/ 114 | # (private scheme).xcscheme 115 | # xcschememanagement.plist 116 | # 117 | # 118 | 119 | #### 120 | # Xcode 4 - Deprecated classes 121 | # 122 | # Allegedly, if you manually "deprecate" your classes, they get moved here. 123 | # 124 | # We're using source-control, so this is a "feature" that we do not want! 125 | 126 | *.moved-aside 127 | 128 | Pods/ 129 | 130 | .svn 131 | 132 | .todo 133 | *.xcworkspace 134 | *.xccheckout 135 | *.xcuserstate 136 | *.playground/ 137 | */xcshareddata/ 138 | xcuserdata/* 139 | L10N 140 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | janus-gateway-ios 2 | ================= 3 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Janus 4 | // 5 | // Created by crossle on 3/1/2017. 6 | // Copyright © 2017 MineWave. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // Janus 4 | // 5 | // Created by crossle on 3/1/2017. 6 | // Copyright © 2017 MineWave. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "WebRTC/WebRTC.h" 11 | 12 | @interface AppDelegate () 13 | 14 | @end 15 | 16 | @implementation AppDelegate 17 | 18 | 19 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 20 | // Override point for customization after application launch. 21 | RTCInitializeSSL(); 22 | RTCSetupInternalTracer(); 23 | // RTCSetMinDebugLogLevel(RTCLoggingSeverityVerbose); 24 | 25 | return YES; 26 | } 27 | 28 | 29 | - (void)applicationWillResignActive:(UIApplication *)application { 30 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 31 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 32 | } 33 | 34 | 35 | - (void)applicationDidEnterBackground:(UIApplication *)application { 36 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 37 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 38 | } 39 | 40 | 41 | - (void)applicationWillEnterForeground:(UIApplication *)application { 42 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 43 | } 44 | 45 | 46 | - (void)applicationDidBecomeActive:(UIApplication *)application { 47 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 48 | } 49 | 50 | 51 | - (void)applicationWillTerminate:(UIApplication *)application { 52 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 53 | RTCShutdownInternalTracer(); 54 | RTCCleanupSSL(); 55 | } 56 | 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | Janus 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | NSCameraUsageDescription 26 | camera 27 | NSMicrophoneUsageDescription 28 | Allow microhpone 29 | UIBackgroundModes 30 | 31 | audio 32 | 33 | UILaunchStoryboardName 34 | LaunchScreen 35 | UIMainStoryboardFile 36 | Main 37 | UIRequiredDeviceCapabilities 38 | 39 | armv7 40 | 41 | UISupportedInterfaceOrientations 42 | 43 | UIInterfaceOrientationPortrait 44 | UIInterfaceOrientationLandscapeLeft 45 | UIInterfaceOrientationLandscapeRight 46 | 47 | UISupportedInterfaceOrientations~ipad 48 | 49 | UIInterfaceOrientationPortrait 50 | UIInterfaceOrientationPortraitUpsideDown 51 | UIInterfaceOrientationLandscapeLeft 52 | UIInterfaceOrientationLandscapeRight 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/JanusConnection.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | #import 4 | 5 | @interface JanusConnection : NSObject 6 | 7 | @property (readwrite, nonatomic) NSNumber *handleId; 8 | @property (readwrite, nonatomic) RTCPeerConnection *connection; 9 | @property (readwrite, nonatomic) RTCVideoTrack *videoTrack; 10 | @property (readwrite, nonatomic) RTCEAGLVideoView *videoView; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/JanusConnection.m: -------------------------------------------------------------------------------- 1 | #import "JanusConnection.h" 2 | 3 | 4 | @implementation JanusConnection 5 | 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/JanusHandle.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @class JanusHandle; 4 | 5 | typedef void (^OnJoined)(JanusHandle *handle); 6 | typedef void (^OnRemoteJsep)(JanusHandle *handle, NSDictionary *jsep); 7 | 8 | @interface JanusHandle : NSObject 9 | 10 | @property (readwrite, nonatomic) NSNumber *handleId; 11 | @property (readwrite, nonatomic) NSNumber *feedId; 12 | @property (readwrite, nonatomic) NSString *display; 13 | 14 | @property (copy) OnJoined onJoined; 15 | @property (copy) OnRemoteJsep onRemoteJsep; 16 | @property (copy) OnJoined onLeaving; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/JanusHandle.m: -------------------------------------------------------------------------------- 1 | #import "JanusHandle.h" 2 | 3 | @implementation JanusHandle 4 | 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/JanusTransaction.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | typedef void (^TransactionSuccessBlock)(NSDictionary *data); 4 | typedef void (^TransactionErrorBlock)(NSDictionary *data); 5 | 6 | @interface JanusTransaction : NSObject 7 | 8 | @property (nonatomic, readwrite) NSString *tid; 9 | @property (copy) TransactionSuccessBlock success; 10 | @property (copy) TransactionErrorBlock error; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/JanusTransaction.m: -------------------------------------------------------------------------------- 1 | #import "JanusTransaction.h" 2 | 3 | @implementation JanusTransaction 4 | 5 | @end 6 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/RTCSessionDescription+JSON.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 The WebRTC Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import "WebRTC/RTCSessionDescription.h" 12 | 13 | @interface RTCSessionDescription (JSON) 14 | 15 | + (RTCSessionDescription *)descriptionFromJSONDictionary: 16 | (NSDictionary *)dictionary; 17 | - (NSData *)JSONData; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/RTCSessionDescription+JSON.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 The WebRTC Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import "RTCSessionDescription+JSON.h" 12 | 13 | static NSString const *kRTCSessionDescriptionTypeKey = @"type"; 14 | static NSString const *kRTCSessionDescriptionSdpKey = @"sdp"; 15 | 16 | @implementation RTCSessionDescription (JSON) 17 | 18 | + (RTCSessionDescription *)descriptionFromJSONDictionary: 19 | (NSDictionary *)dictionary { 20 | NSString *typeString = dictionary[kRTCSessionDescriptionTypeKey]; 21 | RTCSdpType type = [[self class] typeForString:typeString]; 22 | NSString *sdp = dictionary[kRTCSessionDescriptionSdpKey]; 23 | return [[RTCSessionDescription alloc] initWithType:type sdp:sdp]; 24 | } 25 | 26 | - (NSData *)JSONData { 27 | NSString *type = [[self class] stringForType:self.type]; 28 | NSDictionary *json = @{ 29 | kRTCSessionDescriptionTypeKey : type, 30 | kRTCSessionDescriptionSdpKey : self.sdp 31 | }; 32 | return [NSJSONSerialization dataWithJSONObject:json options:0 error:nil]; 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/ViewController.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "WebSocketChannel.h" 3 | #import "WebRTC/WebRTC.h" 4 | 5 | 6 | @protocol WebSocketDelegate 7 | - (void)onPublisherJoined:(NSNumber *)handleId; 8 | - (void)onPublisherRemoteJsep:(NSNumber *)handleId dict:(NSDictionary *)jsep; 9 | - (void)subscriberHandleRemoteJsep: (NSNumber *)handleId dict:(NSDictionary *)jsep; 10 | - (void)onLeaving:(NSNumber *)handleId; 11 | @end 12 | 13 | 14 | @interface ViewController : UIViewController 15 | 16 | @property(nonatomic, strong) RTCPeerConnectionFactory *factory; 17 | 18 | @end 19 | 20 | 21 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/ViewController.m: -------------------------------------------------------------------------------- 1 | 2 | #import "ViewController.h" 3 | #import "WebSocketChannel.h" 4 | #import "WebRTC/WebRTC.h" 5 | #import "RTCSessionDescription+JSON.h" 6 | #import "JanusConnection.h" 7 | 8 | static NSString * const kARDMediaStreamId = @"ARDAMS"; 9 | static NSString * const kARDAudioTrackId = @"ARDAMSa0"; 10 | static NSString * const kARDVideoTrackId = @"ARDAMSv0"; 11 | 12 | @interface ViewController () 13 | @property (strong, nonatomic) RTCCameraPreviewView *localView; 14 | 15 | @end 16 | 17 | @implementation ViewController 18 | WebSocketChannel *websocket; 19 | NSMutableDictionary *peerConnectionDict; 20 | RTCPeerConnection *publisherPeerConnection; 21 | RTCVideoTrack *localTrack; 22 | RTCAudioTrack *localAudioTrack; 23 | 24 | int height = 0; 25 | 26 | @synthesize factory = _factory; 27 | @synthesize localView = _localView; 28 | 29 | - (void)viewDidLoad { 30 | [super viewDidLoad]; 31 | 32 | _localView = [[RTCCameraPreviewView alloc] initWithFrame:CGRectMake(0, 0, 480, 360)]; 33 | [self.view addSubview:_localView]; 34 | 35 | NSURL *url = [[NSURL alloc] initWithString:@"ws://127.0.0.1:8088"]; 36 | websocket = [[WebSocketChannel alloc] initWithURL: url]; 37 | websocket.delegate = self; 38 | 39 | peerConnectionDict = [NSMutableDictionary dictionary]; 40 | _factory = [[RTCPeerConnectionFactory alloc] init]; 41 | localTrack = [self createLocalVideoTrack]; 42 | localAudioTrack = [self createLocalAudioTrack]; 43 | } 44 | 45 | - (RTCEAGLVideoView *)createRemoteView { 46 | height += 360; 47 | RTCEAGLVideoView *remoteView = [[RTCEAGLVideoView alloc] initWithFrame:CGRectMake(0, height, 480, 360)]; 48 | remoteView.delegate = self; 49 | [self.view addSubview:remoteView]; 50 | return remoteView; 51 | } 52 | 53 | - (void)createPublisherPeerConnection { 54 | publisherPeerConnection = [self createPeerConnection]; 55 | [self createAudioSender:publisherPeerConnection]; 56 | [self createVideoSender:publisherPeerConnection]; 57 | } 58 | 59 | - (RTCMediaConstraints *)defaultPeerConnectionConstraints { 60 | NSDictionary *optionalConstraints = @{ @"DtlsSrtpKeyAgreement" : @"true" }; 61 | RTCMediaConstraints* constraints = [[RTCMediaConstraints alloc] initWithMandatoryConstraints:nil optionalConstraints:optionalConstraints]; 62 | return constraints; 63 | } 64 | 65 | - (RTCIceServer *)defaultSTUNServer { 66 | NSArray *array = [NSArray arrayWithObject:@"turn:12.205.13.145:xx"]; 67 | return [[RTCIceServer alloc] initWithURLStrings:array 68 | username:@"ling" 69 | credential:@"ling1234"]; 70 | } 71 | 72 | - (RTCPeerConnection *)createPeerConnection { 73 | RTCMediaConstraints *constraints = [self defaultPeerConnectionConstraints]; 74 | RTCConfiguration *config = [[RTCConfiguration alloc] init]; 75 | NSMutableArray *iceServers = [NSMutableArray arrayWithObject:[self defaultSTUNServer]]; 76 | config.iceServers = iceServers; 77 | config.iceTransportPolicy = RTCIceTransportPolicyRelay; 78 | RTCPeerConnection *peerConnection = [_factory peerConnectionWithConfiguration:config 79 | constraints:constraints 80 | delegate:self]; 81 | return peerConnection; 82 | } 83 | 84 | - (void)offerPeerConnection: (NSNumber*) handleId { 85 | [self createPublisherPeerConnection]; 86 | JanusConnection *jc = [[JanusConnection alloc] init]; 87 | jc.connection = publisherPeerConnection; 88 | jc.handleId = handleId; 89 | peerConnectionDict[handleId] = jc; 90 | 91 | [publisherPeerConnection offerForConstraints:[self defaultOfferConstraints] 92 | completionHandler:^(RTCSessionDescription *sdp, 93 | NSError *error) { 94 | [publisherPeerConnection setLocalDescription:sdp completionHandler:^(NSError * _Nullable error) { 95 | [websocket publisherCreateOffer: handleId sdp:sdp]; 96 | }]; 97 | }]; 98 | } 99 | 100 | - (RTCMediaConstraints *)defaultMediaAudioConstraints { 101 | NSDictionary *mandatoryConstraints = @{ kRTCMediaConstraintsLevelControl : kRTCMediaConstraintsValueFalse }; 102 | RTCMediaConstraints *constraints = 103 | [[RTCMediaConstraints alloc] initWithMandatoryConstraints:mandatoryConstraints 104 | optionalConstraints:nil]; 105 | return constraints; 106 | } 107 | 108 | 109 | - (RTCMediaConstraints *)defaultOfferConstraints { 110 | NSDictionary *mandatoryConstraints = @{ 111 | @"OfferToReceiveAudio" : @"false", 112 | @"OfferToReceiveVideo" : @"false" 113 | }; 114 | RTCMediaConstraints* constraints = [[RTCMediaConstraints alloc] initWithMandatoryConstraints:mandatoryConstraints optionalConstraints:nil]; 115 | return constraints; 116 | } 117 | 118 | - (RTCAudioTrack *)createLocalAudioTrack { 119 | 120 | RTCMediaConstraints *constraints = [self defaultMediaAudioConstraints]; 121 | RTCAudioSource *source = [_factory audioSourceWithConstraints:constraints]; 122 | RTCAudioTrack *track = [_factory audioTrackWithSource:source trackId:kARDAudioTrackId]; 123 | 124 | return track; 125 | } 126 | 127 | - (RTCRtpSender *)createAudioSender:(RTCPeerConnection *)peerConnection { 128 | RTCRtpSender *sender = [peerConnection senderWithKind:kRTCMediaStreamTrackKindAudio streamId:kARDMediaStreamId]; 129 | if (localAudioTrack) { 130 | sender.track = localAudioTrack; 131 | } 132 | return sender; 133 | } 134 | 135 | - (RTCVideoTrack *)createLocalVideoTrack { 136 | RTCMediaConstraints *cameraConstraints = [[RTCMediaConstraints alloc] 137 | initWithMandatoryConstraints:[self currentMediaConstraint] 138 | optionalConstraints: nil]; 139 | 140 | RTCAVFoundationVideoSource *source = [_factory avFoundationVideoSourceWithConstraints:cameraConstraints]; 141 | RTCVideoTrack *localVideoTrack = [_factory videoTrackWithSource:source trackId:kARDVideoTrackId]; 142 | _localView.captureSession = source.captureSession; 143 | 144 | return localVideoTrack; 145 | } 146 | 147 | - (RTCRtpSender *)createVideoSender:(RTCPeerConnection *)peerConnection { 148 | RTCRtpSender *sender = [peerConnection senderWithKind:kRTCMediaStreamTrackKindVideo 149 | streamId:kARDMediaStreamId]; 150 | if (localTrack) { 151 | sender.track = localTrack; 152 | } 153 | 154 | return sender; 155 | } 156 | 157 | - (nullable NSDictionary *)currentMediaConstraint { 158 | NSDictionary *mediaConstraintsDictionary = nil; 159 | 160 | NSString *widthConstraint = @"480"; 161 | NSString *heightConstraint = @"360"; 162 | NSString *frameRateConstrait = @"20"; 163 | if (widthConstraint && heightConstraint) { 164 | mediaConstraintsDictionary = @{ 165 | kRTCMediaConstraintsMinWidth : widthConstraint, 166 | kRTCMediaConstraintsMaxWidth : widthConstraint, 167 | kRTCMediaConstraintsMinHeight : heightConstraint, 168 | kRTCMediaConstraintsMaxHeight : heightConstraint, 169 | kRTCMediaConstraintsMaxFrameRate: frameRateConstrait, 170 | }; 171 | } 172 | return mediaConstraintsDictionary; 173 | } 174 | 175 | - (void)videoView:(RTCEAGLVideoView *)videoView didChangeVideoSize:(CGSize)size { 176 | CGRect rect = videoView.frame; 177 | rect.size = size; 178 | NSLog(@"========didChangeVideiSize %fx%f", size.width, size.height); 179 | videoView.frame = rect; 180 | } 181 | 182 | 183 | - (void)peerConnection:(RTCPeerConnection *)peerConnection didAddStream:(RTCMediaStream *)stream { 184 | NSLog(@"=========didAddStream"); 185 | JanusConnection *janusConnection; 186 | 187 | for (NSNumber *key in peerConnectionDict) { 188 | JanusConnection *jc = peerConnectionDict[key]; 189 | if (peerConnection == jc.connection) { 190 | janusConnection = jc; 191 | break; 192 | } 193 | } 194 | 195 | dispatch_async(dispatch_get_main_queue(), ^{ 196 | if (stream.videoTracks.count) { 197 | RTCVideoTrack *remoteVideoTrack = stream.videoTracks[0]; 198 | 199 | RTCEAGLVideoView *remoteView = [self createRemoteView]; 200 | [remoteVideoTrack addRenderer:remoteView]; 201 | janusConnection.videoTrack = remoteVideoTrack; 202 | janusConnection.videoView = remoteView; 203 | } 204 | }); 205 | } 206 | 207 | - (void)peerConnection:(RTCPeerConnection *)peerConnection didRemoveStream:(RTCMediaStream *)stream { 208 | NSLog(@"=========didRemoveStream"); 209 | } 210 | 211 | - (void)peerConnection:(RTCPeerConnection *)peerConnection didOpenDataChannel:(RTCDataChannel *)dataChannel { 212 | 213 | } 214 | 215 | - (void)peerConnection:(RTCPeerConnection *)peerConnection didChangeSignalingState:(RTCSignalingState)stateChanged { 216 | 217 | } 218 | 219 | - (void)peerConnection:(RTCPeerConnection *)peerConnection didGenerateIceCandidate:(RTCIceCandidate *)candidate { 220 | NSLog(@"=========didGenerateIceCandidate==%@", candidate.sdp); 221 | 222 | NSNumber *handleId; 223 | for (NSNumber *key in peerConnectionDict) { 224 | JanusConnection *jc = peerConnectionDict[key]; 225 | if (peerConnection == jc.connection) { 226 | handleId = jc.handleId; 227 | break; 228 | } 229 | } 230 | if (candidate != nil) { 231 | [websocket trickleCandidate:handleId candidate:candidate]; 232 | } else { 233 | [websocket trickleCandidateComplete: handleId]; 234 | } 235 | } 236 | 237 | - (void)peerConnection:(RTCPeerConnection *)peerConnection didChangeIceGatheringState:(RTCIceGatheringState)newState { 238 | 239 | } 240 | 241 | - (void)peerConnectionShouldNegotiate:(RTCPeerConnection *)peerConnection { 242 | 243 | } 244 | 245 | - (void)peerConnection:(RTCPeerConnection *)peerConnection didChangeIceConnectionState:(RTCIceConnectionState)newState { 246 | 247 | } 248 | 249 | - (void)peerConnection:(RTCPeerConnection *)peerConnection didRemoveIceCandidates:(NSArray *)candidates { 250 | NSLog(@"=========didRemoveIceCandidates"); 251 | } 252 | 253 | 254 | // mark: delegate 255 | 256 | - (void)onPublisherJoined: (NSNumber*) handleId { 257 | [self offerPeerConnection:handleId]; 258 | } 259 | 260 | - (void)onPublisherRemoteJsep:(NSNumber *)handleId dict:(NSDictionary *)jsep { 261 | JanusConnection *jc = peerConnectionDict[handleId]; 262 | RTCSessionDescription *answerDescription = [RTCSessionDescription descriptionFromJSONDictionary:jsep]; 263 | [jc.connection setRemoteDescription:answerDescription completionHandler:^(NSError * _Nullable error) { 264 | }]; 265 | } 266 | 267 | - (void)subscriberHandleRemoteJsep: (NSNumber *)handleId dict:(NSDictionary *)jsep { 268 | RTCPeerConnection *peerConnection = [self createPeerConnection]; 269 | 270 | JanusConnection *jc = [[JanusConnection alloc] init]; 271 | jc.connection = peerConnection; 272 | jc.handleId = handleId; 273 | peerConnectionDict[handleId] = jc; 274 | 275 | RTCSessionDescription *answerDescription = [RTCSessionDescription descriptionFromJSONDictionary:jsep]; 276 | [peerConnection setRemoteDescription:answerDescription completionHandler:^(NSError * _Nullable error) { 277 | }]; 278 | NSDictionary *mandatoryConstraints = @{ 279 | @"OfferToReceiveAudio" : @"true", 280 | @"OfferToReceiveVideo" : @"true", 281 | }; 282 | RTCMediaConstraints* constraints = [[RTCMediaConstraints alloc] initWithMandatoryConstraints:mandatoryConstraints optionalConstraints:nil]; 283 | 284 | [peerConnection answerForConstraints:constraints completionHandler:^(RTCSessionDescription * _Nullable sdp, NSError * _Nullable error) { 285 | [peerConnection setLocalDescription:sdp completionHandler:^(NSError * _Nullable error) { 286 | }]; 287 | [websocket subscriberCreateAnswer:handleId sdp:sdp]; 288 | }]; 289 | 290 | } 291 | 292 | - (void)onLeaving:(NSNumber *)handleId { 293 | JanusConnection *jc = peerConnectionDict[handleId]; 294 | [jc.connection close]; 295 | jc.connection = nil; 296 | RTCVideoTrack *videoTrack = jc.videoTrack; 297 | [videoTrack removeRenderer: jc.videoView]; 298 | videoTrack = nil; 299 | [jc.videoView renderFrame:nil]; 300 | [jc.videoView removeFromSuperview]; 301 | 302 | [peerConnectionDict removeObjectForKey:handleId]; 303 | } 304 | 305 | @end 306 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCAVFoundationVideoSource.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | #import 13 | 14 | @class AVCaptureSession; 15 | @class RTCMediaConstraints; 16 | @class RTCPeerConnectionFactory; 17 | 18 | NS_ASSUME_NONNULL_BEGIN 19 | 20 | /** 21 | * RTCAVFoundationVideoSource is a video source that uses 22 | * webrtc::AVFoundationVideoCapturer. We do not currently provide a wrapper for 23 | * that capturer because cricket::VideoCapturer is not ref counted and we cannot 24 | * guarantee its lifetime. Instead, we expose its properties through the ref 25 | * counted video source interface. 26 | */ 27 | RTC_EXPORT 28 | @interface RTCAVFoundationVideoSource : RTCVideoSource 29 | 30 | - (instancetype)init NS_UNAVAILABLE; 31 | 32 | /** 33 | * Calling this function will cause frames to be scaled down to the 34 | * requested resolution. Also, frames will be cropped to match the 35 | * requested aspect ratio, and frames will be dropped to match the 36 | * requested fps. The requested aspect ratio is orientation agnostic and 37 | * will be adjusted to maintain the input orientation, so it doesn't 38 | * matter if e.g. 1280x720 or 720x1280 is requested. 39 | */ 40 | - (void)adaptOutputFormatToWidth:(int)width height:(int)height fps:(int)fps; 41 | 42 | /** Returns whether rear-facing camera is available for use. */ 43 | @property(nonatomic, readonly) BOOL canUseBackCamera; 44 | 45 | /** Switches the camera being used (either front or back). */ 46 | @property(nonatomic, assign) BOOL useBackCamera; 47 | 48 | /** Returns the active capture session. */ 49 | @property(nonatomic, readonly) AVCaptureSession *captureSession; 50 | 51 | @end 52 | 53 | NS_ASSUME_NONNULL_END 54 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCAudioSource.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | #import 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | RTC_EXPORT 19 | @interface RTCAudioSource : RTCMediaSource 20 | 21 | - (instancetype)init NS_UNAVAILABLE; 22 | 23 | // Sets the volume for the RTCMediaSource. |volume| is a gain value in the range 24 | // [0, 10]. 25 | // Temporary fix to be able to modify volume of remote audio tracks. 26 | // TODO(kthelgason): Property stays here temporarily until a proper volume-api 27 | // is available on the surface exposed by webrtc. 28 | @property(nonatomic, assign) double volume; 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCAudioTrack.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | #import 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | @class RTCAudioSource; 17 | 18 | RTC_EXPORT 19 | @interface RTCAudioTrack : RTCMediaStreamTrack 20 | 21 | - (instancetype)init NS_UNAVAILABLE; 22 | 23 | /** The audio source for this audio track. */ 24 | @property(nonatomic, readonly) RTCAudioSource *source; 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCCameraPreviewView.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | #import 13 | 14 | #import 15 | 16 | @class AVCaptureSession; 17 | @class RTCAVFoundationVideoSource; 18 | 19 | /** RTCCameraPreviewView is a view that renders local video from an 20 | * AVCaptureSession. 21 | */ 22 | RTC_EXPORT 23 | @interface RTCCameraPreviewView : UIView 24 | 25 | /** The capture session being rendered in the view. Capture session 26 | * is assigned to AVCaptureVideoPreviewLayer async in the same 27 | * queue that the AVCaptureSession is started/stopped. 28 | */ 29 | @property(nonatomic, strong) AVCaptureSession *captureSession; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCConfiguration.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | @class RTCIceServer; 16 | 17 | /** 18 | * Represents the ice transport policy. This exposes the same states in C++, 19 | * which include one more state than what exists in the W3C spec. 20 | */ 21 | typedef NS_ENUM(NSInteger, RTCIceTransportPolicy) { 22 | RTCIceTransportPolicyNone, 23 | RTCIceTransportPolicyRelay, 24 | RTCIceTransportPolicyNoHost, 25 | RTCIceTransportPolicyAll 26 | }; 27 | 28 | /** Represents the bundle policy. */ 29 | typedef NS_ENUM(NSInteger, RTCBundlePolicy) { 30 | RTCBundlePolicyBalanced, 31 | RTCBundlePolicyMaxCompat, 32 | RTCBundlePolicyMaxBundle 33 | }; 34 | 35 | /** Represents the rtcp mux policy. */ 36 | typedef NS_ENUM(NSInteger, RTCRtcpMuxPolicy) { 37 | RTCRtcpMuxPolicyNegotiate, 38 | RTCRtcpMuxPolicyRequire 39 | }; 40 | 41 | /** Represents the tcp candidate policy. */ 42 | typedef NS_ENUM(NSInteger, RTCTcpCandidatePolicy) { 43 | RTCTcpCandidatePolicyEnabled, 44 | RTCTcpCandidatePolicyDisabled 45 | }; 46 | 47 | /** Represents the candidate network policy. */ 48 | typedef NS_ENUM(NSInteger, RTCCandidateNetworkPolicy) { 49 | RTCCandidateNetworkPolicyAll, 50 | RTCCandidateNetworkPolicyLowCost 51 | }; 52 | 53 | /** Represents the continual gathering policy. */ 54 | typedef NS_ENUM(NSInteger, RTCContinualGatheringPolicy) { 55 | RTCContinualGatheringPolicyGatherOnce, 56 | RTCContinualGatheringPolicyGatherContinually 57 | }; 58 | 59 | /** Represents the encryption key type. */ 60 | typedef NS_ENUM(NSInteger, RTCEncryptionKeyType) { 61 | RTCEncryptionKeyTypeRSA, 62 | RTCEncryptionKeyTypeECDSA, 63 | }; 64 | 65 | NS_ASSUME_NONNULL_BEGIN 66 | 67 | RTC_EXPORT 68 | @interface RTCConfiguration : NSObject 69 | 70 | /** An array of Ice Servers available to be used by ICE. */ 71 | @property(nonatomic, copy) NSArray *iceServers; 72 | 73 | /** Which candidates the ICE agent is allowed to use. The W3C calls it 74 | * |iceTransportPolicy|, while in C++ it is called |type|. */ 75 | @property(nonatomic, assign) RTCIceTransportPolicy iceTransportPolicy; 76 | 77 | /** The media-bundling policy to use when gathering ICE candidates. */ 78 | @property(nonatomic, assign) RTCBundlePolicy bundlePolicy; 79 | 80 | /** The rtcp-mux policy to use when gathering ICE candidates. */ 81 | @property(nonatomic, assign) RTCRtcpMuxPolicy rtcpMuxPolicy; 82 | @property(nonatomic, assign) RTCTcpCandidatePolicy tcpCandidatePolicy; 83 | @property(nonatomic, assign) RTCCandidateNetworkPolicy candidateNetworkPolicy; 84 | @property(nonatomic, assign) 85 | RTCContinualGatheringPolicy continualGatheringPolicy; 86 | @property(nonatomic, assign) int audioJitterBufferMaxPackets; 87 | @property(nonatomic, assign) BOOL audioJitterBufferFastAccelerate; 88 | @property(nonatomic, assign) int iceConnectionReceivingTimeout; 89 | @property(nonatomic, assign) int iceBackupCandidatePairPingInterval; 90 | 91 | /** Key type used to generate SSL identity. Default is ECDSA. */ 92 | @property(nonatomic, assign) RTCEncryptionKeyType keyType; 93 | 94 | /** ICE candidate pool size as defined in JSEP. Default is 0. */ 95 | @property(nonatomic, assign) int iceCandidatePoolSize; 96 | 97 | /** Prune turn ports on the same network to the same turn server. 98 | * Default is NO. 99 | */ 100 | @property(nonatomic, assign) BOOL shouldPruneTurnPorts; 101 | 102 | /** If set to YES, this means the ICE transport should presume TURN-to-TURN 103 | * candidate pairs will succeed, even before a binding response is received. 104 | */ 105 | @property(nonatomic, assign) BOOL shouldPresumeWritableWhenFullyRelayed; 106 | 107 | /** If set to non-nil, controls the minimal interval between consecutive ICE 108 | * check packets. 109 | */ 110 | @property(nonatomic, copy, nullable) NSNumber *iceCheckMinInterval; 111 | 112 | - (instancetype)init; 113 | 114 | @end 115 | 116 | NS_ASSUME_NONNULL_END 117 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCDataChannel.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | #import 13 | 14 | #import 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | RTC_EXPORT 19 | @interface RTCDataBuffer : NSObject 20 | 21 | /** NSData representation of the underlying buffer. */ 22 | @property(nonatomic, readonly) NSData *data; 23 | 24 | /** Indicates whether |data| contains UTF-8 or binary data. */ 25 | @property(nonatomic, readonly) BOOL isBinary; 26 | 27 | - (instancetype)init NS_UNAVAILABLE; 28 | 29 | /** 30 | * Initialize an RTCDataBuffer from NSData. |isBinary| indicates whether |data| 31 | * contains UTF-8 or binary data. 32 | */ 33 | - (instancetype)initWithData:(NSData *)data isBinary:(BOOL)isBinary; 34 | 35 | @end 36 | 37 | 38 | @class RTCDataChannel; 39 | RTC_EXPORT 40 | @protocol RTCDataChannelDelegate 41 | 42 | /** The data channel state changed. */ 43 | - (void)dataChannelDidChangeState:(RTCDataChannel *)dataChannel; 44 | 45 | /** The data channel successfully received a data buffer. */ 46 | - (void)dataChannel:(RTCDataChannel *)dataChannel 47 | didReceiveMessageWithBuffer:(RTCDataBuffer *)buffer; 48 | 49 | @optional 50 | /** The data channel's |bufferedAmount| changed. */ 51 | - (void)dataChannel:(RTCDataChannel *)dataChannel 52 | didChangeBufferedAmount:(uint64_t)amount; 53 | 54 | @end 55 | 56 | 57 | /** Represents the state of the data channel. */ 58 | typedef NS_ENUM(NSInteger, RTCDataChannelState) { 59 | RTCDataChannelStateConnecting, 60 | RTCDataChannelStateOpen, 61 | RTCDataChannelStateClosing, 62 | RTCDataChannelStateClosed, 63 | }; 64 | 65 | RTC_EXPORT 66 | @interface RTCDataChannel : NSObject 67 | 68 | /** 69 | * A label that can be used to distinguish this data channel from other data 70 | * channel objects. 71 | */ 72 | @property(nonatomic, readonly) NSString *label; 73 | 74 | /** Whether the data channel can send messages in unreliable mode. */ 75 | @property(nonatomic, readonly) BOOL isReliable DEPRECATED_ATTRIBUTE; 76 | 77 | /** Returns whether this data channel is ordered or not. */ 78 | @property(nonatomic, readonly) BOOL isOrdered; 79 | 80 | /** Deprecated. Use maxPacketLifeTime. */ 81 | @property(nonatomic, readonly) NSUInteger maxRetransmitTime 82 | DEPRECATED_ATTRIBUTE; 83 | 84 | /** 85 | * The length of the time window (in milliseconds) during which transmissions 86 | * and retransmissions may occur in unreliable mode. 87 | */ 88 | @property(nonatomic, readonly) uint16_t maxPacketLifeTime; 89 | 90 | /** 91 | * The maximum number of retransmissions that are attempted in unreliable mode. 92 | */ 93 | @property(nonatomic, readonly) uint16_t maxRetransmits; 94 | 95 | /** 96 | * The name of the sub-protocol used with this data channel, if any. Otherwise 97 | * this returns an empty string. 98 | */ 99 | @property(nonatomic, readonly) NSString *protocol; 100 | 101 | /** 102 | * Returns whether this data channel was negotiated by the application or not. 103 | */ 104 | @property(nonatomic, readonly) BOOL isNegotiated; 105 | 106 | /** Deprecated. Use channelId. */ 107 | @property(nonatomic, readonly) NSInteger streamId DEPRECATED_ATTRIBUTE; 108 | 109 | /** The identifier for this data channel. */ 110 | @property(nonatomic, readonly) int channelId; 111 | 112 | /** The state of the data channel. */ 113 | @property(nonatomic, readonly) RTCDataChannelState readyState; 114 | 115 | /** 116 | * The number of bytes of application data that have been queued using 117 | * |sendData:| but that have not yet been transmitted to the network. 118 | */ 119 | @property(nonatomic, readonly) uint64_t bufferedAmount; 120 | 121 | /** The delegate for this data channel. */ 122 | @property(nonatomic, weak) id delegate; 123 | 124 | - (instancetype)init NS_UNAVAILABLE; 125 | 126 | /** Closes the data channel. */ 127 | - (void)close; 128 | 129 | /** Attempt to send |data| on this data channel's underlying data transport. */ 130 | - (BOOL)sendData:(RTCDataBuffer *)data; 131 | 132 | @end 133 | 134 | NS_ASSUME_NONNULL_END 135 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCDataChannelConfiguration.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | #import 13 | 14 | #import 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | RTC_EXPORT 19 | @interface RTCDataChannelConfiguration : NSObject 20 | 21 | /** Set to YES if ordered delivery is required. */ 22 | @property(nonatomic, assign) BOOL isOrdered; 23 | 24 | /** Deprecated. Use maxPacketLifeTime. */ 25 | @property(nonatomic, assign) NSInteger maxRetransmitTimeMs DEPRECATED_ATTRIBUTE; 26 | 27 | /** 28 | * Max period in milliseconds in which retransmissions will be sent. After this 29 | * time, no more retransmissions will be sent. -1 if unset. 30 | */ 31 | @property(nonatomic, assign) int maxPacketLifeTime; 32 | 33 | /** The max number of retransmissions. -1 if unset. */ 34 | @property(nonatomic, assign) int maxRetransmits; 35 | 36 | /** Set to YES if the channel has been externally negotiated and we do not send 37 | * an in-band signalling in the form of an "open" message. 38 | */ 39 | @property(nonatomic, assign) BOOL isNegotiated; 40 | 41 | /** Deprecated. Use channelId. */ 42 | @property(nonatomic, assign) int streamId DEPRECATED_ATTRIBUTE; 43 | 44 | /** The id of the data channel. */ 45 | @property(nonatomic, assign) int channelId; 46 | 47 | /** Set by the application and opaque to the WebRTC implementation. */ 48 | @property(nonatomic) NSString *protocol; 49 | 50 | @end 51 | 52 | NS_ASSUME_NONNULL_END 53 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCDispatcher.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | typedef NS_ENUM(NSInteger, RTCDispatcherQueueType) { 16 | // Main dispatcher queue. 17 | RTCDispatcherTypeMain, 18 | // Used for starting/stopping AVCaptureSession, and assigning 19 | // capture session to AVCaptureVideoPreviewLayer. 20 | RTCDispatcherTypeCaptureSession, 21 | // Used for operations on AVAudioSession. 22 | RTCDispatcherTypeAudioSession, 23 | }; 24 | 25 | /** Dispatcher that asynchronously dispatches blocks to a specific 26 | * shared dispatch queue. 27 | */ 28 | RTC_EXPORT 29 | @interface RTCDispatcher : NSObject 30 | 31 | - (instancetype)init NS_UNAVAILABLE; 32 | 33 | /** Dispatch the block asynchronously on the queue for dispatchType. 34 | * @param dispatchType The queue type to dispatch on. 35 | * @param block The block to dispatch asynchronously. 36 | */ 37 | + (void)dispatchAsyncOnType:(RTCDispatcherQueueType)dispatchType 38 | block:(dispatch_block_t)block; 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCEAGLVideoView.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | #import 13 | 14 | #import 15 | #import 16 | 17 | NS_ASSUME_NONNULL_BEGIN 18 | 19 | @class RTCEAGLVideoView; 20 | RTC_EXPORT 21 | @protocol RTCEAGLVideoViewDelegate 22 | 23 | - (void)videoView:(RTCEAGLVideoView *)videoView didChangeVideoSize:(CGSize)size; 24 | 25 | @end 26 | 27 | /** 28 | * RTCEAGLVideoView is an RTCVideoRenderer which renders video frames in its 29 | * bounds using OpenGLES 2.0. 30 | */ 31 | RTC_EXPORT 32 | @interface RTCEAGLVideoView : UIView 33 | 34 | @property(nonatomic, weak) id delegate; 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCFieldTrials.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | /** The only valid value for the following if set is kRTCFieldTrialEnabledValue. */ 16 | RTC_EXTERN NSString * const kRTCFieldTrialAudioSendSideBweKey; 17 | RTC_EXTERN NSString * const kRTCFieldTrialSendSideBweWithOverheadKey; 18 | RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03AdvertisedKey; 19 | RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03Key; 20 | RTC_EXTERN NSString * const kRTCFieldTrialImprovedBitrateEstimateKey; 21 | RTC_EXTERN NSString * const kRTCFieldTrialH264HighProfileKey; 22 | 23 | /** The valid value for field trials above. */ 24 | RTC_EXTERN NSString * const kRTCFieldTrialEnabledValue; 25 | 26 | /** Use a string returned by RTCFieldTrialMedianSlopeFilterValue as the value. */ 27 | RTC_EXTERN NSString * const kRTCFieldTrialMedianSlopeFilterKey; 28 | RTC_EXTERN NSString *RTCFieldTrialMedianSlopeFilterValue( 29 | size_t windowSize, double thresholdGain); 30 | 31 | /** Use a string returned by RTCFieldTrialTrendlineFilterValue as the value. */ 32 | RTC_EXTERN NSString * const kRTCFieldTrialTrendlineFilterKey; 33 | /** Returns a valid value for kRTCFieldTrialTrendlineFilterKey. */ 34 | RTC_EXTERN NSString *RTCFieldTrialTrendlineFilterValue( 35 | size_t windowSize, double smoothingCoeff, double thresholdGain); 36 | 37 | /** Initialize field trials using a dictionary mapping field trial keys to their values. See above 38 | * for valid keys and values. 39 | * Must be called before any other call into WebRTC. See: 40 | * webrtc/system_wrappers/include/field_trial_default.h 41 | */ 42 | RTC_EXTERN void RTCInitFieldTrialDictionary(NSDictionary *fieldTrials); 43 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCFileLogger.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | typedef NS_ENUM(NSUInteger, RTCFileLoggerSeverity) { 16 | RTCFileLoggerSeverityVerbose, 17 | RTCFileLoggerSeverityInfo, 18 | RTCFileLoggerSeverityWarning, 19 | RTCFileLoggerSeverityError 20 | }; 21 | 22 | typedef NS_ENUM(NSUInteger, RTCFileLoggerRotationType) { 23 | RTCFileLoggerTypeCall, 24 | RTCFileLoggerTypeApp, 25 | }; 26 | 27 | NS_ASSUME_NONNULL_BEGIN 28 | 29 | // This class intercepts WebRTC logs and saves them to a file. The file size 30 | // will not exceed the given maximum bytesize. When the maximum bytesize is 31 | // reached, logs are rotated according to the rotationType specified. 32 | // For kRTCFileLoggerTypeCall, logs from the beginning and the end 33 | // are preserved while the middle section is overwritten instead. 34 | // For kRTCFileLoggerTypeApp, the oldest log is overwritten. 35 | // This class is not threadsafe. 36 | RTC_EXPORT 37 | @interface RTCFileLogger : NSObject 38 | 39 | // The severity level to capture. The default is kRTCFileLoggerSeverityInfo. 40 | @property(nonatomic, assign) RTCFileLoggerSeverity severity; 41 | 42 | // The rotation type for this file logger. The default is 43 | // kRTCFileLoggerTypeCall. 44 | @property(nonatomic, readonly) RTCFileLoggerRotationType rotationType; 45 | 46 | // Disables buffering disk writes. Should be set before |start|. Buffering 47 | // is enabled by default for performance. 48 | @property(nonatomic, assign) BOOL shouldDisableBuffering; 49 | 50 | // Default constructor provides default settings for dir path, file size and 51 | // rotation type. 52 | - (instancetype)init; 53 | 54 | // Create file logger with default rotation type. 55 | - (instancetype)initWithDirPath:(NSString *)dirPath 56 | maxFileSize:(NSUInteger)maxFileSize; 57 | 58 | - (instancetype)initWithDirPath:(NSString *)dirPath 59 | maxFileSize:(NSUInteger)maxFileSize 60 | rotationType:(RTCFileLoggerRotationType)rotationType 61 | NS_DESIGNATED_INITIALIZER; 62 | 63 | // Starts writing WebRTC logs to disk if not already started. Overwrites any 64 | // existing file(s). 65 | - (void)start; 66 | 67 | // Stops writing WebRTC logs to disk. This method is also called on dealloc. 68 | - (void)stop; 69 | 70 | // Returns the current contents of the logs, or nil if start has been called 71 | // without a stop. 72 | - (NSData *)logData; 73 | 74 | @end 75 | 76 | NS_ASSUME_NONNULL_END 77 | 78 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCIceCandidate.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | RTC_EXPORT 18 | @interface RTCIceCandidate : NSObject 19 | 20 | /** 21 | * If present, the identifier of the "media stream identification" for the media 22 | * component this candidate is associated with. 23 | */ 24 | @property(nonatomic, readonly, nullable) NSString *sdpMid; 25 | 26 | /** 27 | * The index (starting at zero) of the media description this candidate is 28 | * associated with in the SDP. 29 | */ 30 | @property(nonatomic, readonly) int sdpMLineIndex; 31 | 32 | /** The SDP string for this candidate. */ 33 | @property(nonatomic, readonly) NSString *sdp; 34 | 35 | /** The URL of the ICE server which this candidate is gathered from. */ 36 | @property(nonatomic, readonly, nullable) NSString *serverUrl; 37 | 38 | - (instancetype)init NS_UNAVAILABLE; 39 | 40 | /** 41 | * Initialize an RTCIceCandidate from SDP. 42 | */ 43 | - (instancetype)initWithSdp:(NSString *)sdp 44 | sdpMLineIndex:(int)sdpMLineIndex 45 | sdpMid:(nullable NSString *)sdpMid 46 | NS_DESIGNATED_INITIALIZER; 47 | 48 | @end 49 | 50 | NS_ASSUME_NONNULL_END 51 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCIceServer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | typedef NS_ENUM(NSUInteger, RTCTlsCertPolicy) { 16 | RTCTlsCertPolicySecure, 17 | RTCTlsCertPolicyInsecureNoCheck 18 | }; 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | RTC_EXPORT 23 | @interface RTCIceServer : NSObject 24 | 25 | /** URI(s) for this server represented as NSStrings. */ 26 | @property(nonatomic, readonly) NSArray *urlStrings; 27 | 28 | /** Username to use if this RTCIceServer object is a TURN server. */ 29 | @property(nonatomic, readonly, nullable) NSString *username; 30 | 31 | /** Credential to use if this RTCIceServer object is a TURN server. */ 32 | @property(nonatomic, readonly, nullable) NSString *credential; 33 | 34 | /** 35 | * TLS certificate policy to use if this RTCIceServer object is a TURN server. 36 | */ 37 | @property(nonatomic, readonly) RTCTlsCertPolicy tlsCertPolicy; 38 | 39 | - (nonnull instancetype)init NS_UNAVAILABLE; 40 | 41 | /** Convenience initializer for a server with no authentication (e.g. STUN). */ 42 | - (instancetype)initWithURLStrings:(NSArray *)urlStrings; 43 | 44 | /** 45 | * Initialize an RTCIceServer with its associated URLs, optional username, 46 | * optional credential, and credentialType. 47 | */ 48 | - (instancetype)initWithURLStrings:(NSArray *)urlStrings 49 | username:(nullable NSString *)username 50 | credential:(nullable NSString *)credential; 51 | 52 | /** 53 | * Initialize an RTCIceServer with its associated URLs, optional username, 54 | * optional credential, and TLS cert policy. 55 | */ 56 | - (instancetype)initWithURLStrings:(NSArray *)urlStrings 57 | username:(nullable NSString *)username 58 | credential:(nullable NSString *)credential 59 | tlsCertPolicy:(RTCTlsCertPolicy)tlsCertPolicy 60 | NS_DESIGNATED_INITIALIZER; 61 | 62 | @end 63 | 64 | NS_ASSUME_NONNULL_END 65 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCLegacyStatsReport.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | /** This does not currently conform to the spec. */ 18 | RTC_EXPORT 19 | @interface RTCLegacyStatsReport : NSObject 20 | 21 | /** Time since 1970-01-01T00:00:00Z in milliseconds. */ 22 | @property(nonatomic, readonly) CFTimeInterval timestamp; 23 | 24 | /** The type of stats held by this object. */ 25 | @property(nonatomic, readonly) NSString *type; 26 | 27 | /** The identifier for this object. */ 28 | @property(nonatomic, readonly) NSString *reportId; 29 | 30 | /** A dictionary holding the actual stats. */ 31 | @property(nonatomic, readonly) NSDictionary *values; 32 | 33 | - (instancetype)init NS_UNAVAILABLE; 34 | 35 | @end 36 | 37 | NS_ASSUME_NONNULL_END 38 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCLogging.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | // Subset of rtc::LoggingSeverity. 16 | typedef NS_ENUM(NSInteger, RTCLoggingSeverity) { 17 | RTCLoggingSeverityVerbose, 18 | RTCLoggingSeverityInfo, 19 | RTCLoggingSeverityWarning, 20 | RTCLoggingSeverityError, 21 | }; 22 | 23 | // Wrapper for C++ LOG(sev) macros. 24 | // Logs the log string to the webrtc logstream for the given severity. 25 | RTC_EXTERN void RTCLogEx(RTCLoggingSeverity severity, NSString* log_string); 26 | 27 | // Wrapper for rtc::LogMessage::LogToDebug. 28 | // Sets the minimum severity to be logged to console. 29 | RTC_EXTERN void RTCSetMinDebugLogLevel(RTCLoggingSeverity severity); 30 | 31 | // Returns the filename with the path prefix removed. 32 | RTC_EXTERN NSString* RTCFileName(const char* filePath); 33 | 34 | // Some convenience macros. 35 | 36 | #define RTCLogString(format, ...) \ 37 | [NSString stringWithFormat:@"(%@:%d %s): " format, \ 38 | RTCFileName(__FILE__), \ 39 | __LINE__, \ 40 | __FUNCTION__, \ 41 | ##__VA_ARGS__] 42 | 43 | #define RTCLogFormat(severity, format, ...) \ 44 | do { \ 45 | NSString* log_string = RTCLogString(format, ##__VA_ARGS__); \ 46 | RTCLogEx(severity, log_string); \ 47 | } while (false) 48 | 49 | #define RTCLogVerbose(format, ...) \ 50 | RTCLogFormat(RTCLoggingSeverityVerbose, format, ##__VA_ARGS__) \ 51 | 52 | #define RTCLogInfo(format, ...) \ 53 | RTCLogFormat(RTCLoggingSeverityInfo, format, ##__VA_ARGS__) \ 54 | 55 | #define RTCLogWarning(format, ...) \ 56 | RTCLogFormat(RTCLoggingSeverityWarning, format, ##__VA_ARGS__) \ 57 | 58 | #define RTCLogError(format, ...) \ 59 | RTCLogFormat(RTCLoggingSeverityError, format, ##__VA_ARGS__) \ 60 | 61 | #if !defined(NDEBUG) 62 | #define RTCLogDebug(format, ...) RTCLogInfo(format, ##__VA_ARGS__) 63 | #else 64 | #define RTCLogDebug(format, ...) \ 65 | do { \ 66 | } while (false) 67 | #endif 68 | 69 | #define RTCLog(format, ...) RTCLogInfo(format, ##__VA_ARGS__) 70 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCMTLVideoView.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import "WebRTC/RTCVideoRenderer.h" 14 | 15 | // Check if metal is supported in WebRTC. 16 | // NOTE: Currently arm64 == Metal. 17 | #if defined(__aarch64__) 18 | #define RTC_SUPPORTS_METAL 19 | #endif 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | /** 24 | * RTCMTLVideoView is thin wrapper around MTKView. 25 | * 26 | * It has id property that renders video frames in the view's 27 | * bounds using Metal. 28 | */ 29 | NS_CLASS_AVAILABLE_IOS(9) 30 | 31 | RTC_EXPORT 32 | @interface RTCMTLVideoView : UIView 33 | 34 | @end 35 | NS_ASSUME_NONNULL_END 36 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCMacros.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef WEBRTC_BASE_OBJC_RTC_MACROS_H_ 12 | #define WEBRTC_BASE_OBJC_RTC_MACROS_H_ 13 | 14 | #define RTC_EXPORT __attribute__((visibility("default"))) 15 | 16 | #if defined(__cplusplus) 17 | #define RTC_EXTERN extern "C" RTC_EXPORT 18 | #else 19 | #define RTC_EXTERN extern RTC_EXPORT 20 | #endif 21 | 22 | #ifdef __OBJC__ 23 | #define RTC_FWD_DECL_OBJC_CLASS(classname) @class classname 24 | #else 25 | #define RTC_FWD_DECL_OBJC_CLASS(classname) typedef struct objc_object classname 26 | #endif 27 | 28 | #endif // WEBRTC_BASE_OBJC_RTC_MACROS_H_ 29 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCMediaConstraints.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | RTC_EXTERN NSString * const kRTCMediaConstraintsMinAspectRatio; 18 | RTC_EXTERN NSString * const kRTCMediaConstraintsMaxAspectRatio; 19 | RTC_EXTERN NSString * const kRTCMediaConstraintsMaxWidth; 20 | RTC_EXTERN NSString * const kRTCMediaConstraintsMinWidth; 21 | RTC_EXTERN NSString * const kRTCMediaConstraintsMaxHeight; 22 | RTC_EXTERN NSString * const kRTCMediaConstraintsMinHeight; 23 | RTC_EXTERN NSString * const kRTCMediaConstraintsMaxFrameRate; 24 | RTC_EXTERN NSString * const kRTCMediaConstraintsMinFrameRate; 25 | RTC_EXTERN NSString * const kRTCMediaConstraintsLevelControl; 26 | /** The value for this key should be a base64 encoded string containing 27 | * the data from the serialized configuration proto. 28 | */ 29 | RTC_EXTERN NSString * const kRTCMediaConstraintsAudioNetworkAdaptorConfig; 30 | 31 | RTC_EXTERN NSString * const kRTCMediaConstraintsValueTrue; 32 | RTC_EXTERN NSString * const kRTCMediaConstraintsValueFalse; 33 | 34 | RTC_EXPORT 35 | @interface RTCMediaConstraints : NSObject 36 | 37 | - (instancetype)init NS_UNAVAILABLE; 38 | 39 | /** Initialize with mandatory and/or optional constraints. */ 40 | - (instancetype)initWithMandatoryConstraints: 41 | (nullable NSDictionary *)mandatory 42 | optionalConstraints: 43 | (nullable NSDictionary *)optional 44 | NS_DESIGNATED_INITIALIZER; 45 | 46 | @end 47 | 48 | NS_ASSUME_NONNULL_END 49 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCMediaSource.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | typedef NS_ENUM(NSInteger, RTCSourceState) { 16 | RTCSourceStateInitializing, 17 | RTCSourceStateLive, 18 | RTCSourceStateEnded, 19 | RTCSourceStateMuted, 20 | }; 21 | 22 | NS_ASSUME_NONNULL_BEGIN 23 | 24 | RTC_EXPORT 25 | @interface RTCMediaSource : NSObject 26 | 27 | /** The current state of the RTCMediaSource. */ 28 | @property(nonatomic, readonly) RTCSourceState state; 29 | 30 | - (instancetype)init NS_UNAVAILABLE; 31 | 32 | @end 33 | 34 | NS_ASSUME_NONNULL_END 35 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCMediaStream.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | @class RTCAudioTrack; 18 | @class RTCPeerConnectionFactory; 19 | @class RTCVideoTrack; 20 | 21 | RTC_EXPORT 22 | @interface RTCMediaStream : NSObject 23 | 24 | /** The audio tracks in this stream. */ 25 | @property(nonatomic, strong, readonly) NSArray *audioTracks; 26 | 27 | /** The video tracks in this stream. */ 28 | @property(nonatomic, strong, readonly) NSArray *videoTracks; 29 | 30 | /** An identifier for this media stream. */ 31 | @property(nonatomic, readonly) NSString *streamId; 32 | 33 | - (instancetype)init NS_UNAVAILABLE; 34 | 35 | /** Adds the given audio track to this media stream. */ 36 | - (void)addAudioTrack:(RTCAudioTrack *)audioTrack; 37 | 38 | /** Adds the given video track to this media stream. */ 39 | - (void)addVideoTrack:(RTCVideoTrack *)videoTrack; 40 | 41 | /** Removes the given audio track to this media stream. */ 42 | - (void)removeAudioTrack:(RTCAudioTrack *)audioTrack; 43 | 44 | /** Removes the given video track to this media stream. */ 45 | - (void)removeVideoTrack:(RTCVideoTrack *)videoTrack; 46 | 47 | @end 48 | 49 | NS_ASSUME_NONNULL_END 50 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCMediaStreamTrack.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | /** 16 | * Represents the state of the track. This exposes the same states in C++. 17 | */ 18 | typedef NS_ENUM(NSInteger, RTCMediaStreamTrackState) { 19 | RTCMediaStreamTrackStateLive, 20 | RTCMediaStreamTrackStateEnded 21 | }; 22 | 23 | NS_ASSUME_NONNULL_BEGIN 24 | 25 | RTC_EXTERN NSString * const kRTCMediaStreamTrackKindAudio; 26 | RTC_EXTERN NSString * const kRTCMediaStreamTrackKindVideo; 27 | 28 | RTC_EXPORT 29 | @interface RTCMediaStreamTrack : NSObject 30 | 31 | /** 32 | * The kind of track. For example, "audio" if this track represents an audio 33 | * track and "video" if this track represents a video track. 34 | */ 35 | @property(nonatomic, readonly) NSString *kind; 36 | 37 | /** An identifier string. */ 38 | @property(nonatomic, readonly) NSString *trackId; 39 | 40 | /** The enabled state of the track. */ 41 | @property(nonatomic, assign) BOOL isEnabled; 42 | 43 | /** The state of the track. */ 44 | @property(nonatomic, readonly) RTCMediaStreamTrackState readyState; 45 | 46 | - (instancetype)init NS_UNAVAILABLE; 47 | 48 | @end 49 | 50 | NS_ASSUME_NONNULL_END 51 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCMetrics.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | #import 15 | 16 | /** 17 | * Enables gathering of metrics (which can be fetched with 18 | * RTCGetAndResetMetrics). Must be called before any other call into WebRTC. 19 | */ 20 | RTC_EXTERN void RTCEnableMetrics(); 21 | 22 | /** Gets and clears native histograms. */ 23 | RTC_EXTERN NSArray *RTCGetAndResetMetrics(); 24 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCMetricsSampleInfo.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | RTC_EXPORT 18 | @interface RTCMetricsSampleInfo : NSObject 19 | 20 | /** 21 | * Example of RTCMetricsSampleInfo: 22 | * name: "WebRTC.Video.InputFramesPerSecond" 23 | * min: 1 24 | * max: 100 25 | * bucketCount: 50 26 | * samples: [29]:2 [30]:1 27 | */ 28 | 29 | /** The name of the histogram. */ 30 | @property(nonatomic, readonly) NSString *name; 31 | 32 | /** The minimum bucket value. */ 33 | @property(nonatomic, readonly) int min; 34 | 35 | /** The maximum bucket value. */ 36 | @property(nonatomic, readonly) int max; 37 | 38 | /** The number of buckets. */ 39 | @property(nonatomic, readonly) int bucketCount; 40 | 41 | /** A dictionary holding the samples . */ 42 | @property(nonatomic, readonly) NSDictionary *samples; 43 | 44 | - (instancetype)init NS_UNAVAILABLE; 45 | 46 | @end 47 | 48 | NS_ASSUME_NONNULL_END 49 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCPeerConnection.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | @class RTCConfiguration; 16 | @class RTCDataChannel; 17 | @class RTCDataChannelConfiguration; 18 | @class RTCIceCandidate; 19 | @class RTCMediaConstraints; 20 | @class RTCMediaStream; 21 | @class RTCMediaStreamTrack; 22 | @class RTCPeerConnectionFactory; 23 | @class RTCRtpReceiver; 24 | @class RTCRtpSender; 25 | @class RTCSessionDescription; 26 | @class RTCLegacyStatsReport; 27 | 28 | NS_ASSUME_NONNULL_BEGIN 29 | 30 | extern NSString * const kRTCPeerConnectionErrorDomain; 31 | extern int const kRTCSessionDescriptionErrorCode; 32 | 33 | /** Represents the signaling state of the peer connection. */ 34 | typedef NS_ENUM(NSInteger, RTCSignalingState) { 35 | RTCSignalingStateStable, 36 | RTCSignalingStateHaveLocalOffer, 37 | RTCSignalingStateHaveLocalPrAnswer, 38 | RTCSignalingStateHaveRemoteOffer, 39 | RTCSignalingStateHaveRemotePrAnswer, 40 | // Not an actual state, represents the total number of states. 41 | RTCSignalingStateClosed, 42 | }; 43 | 44 | /** Represents the ice connection state of the peer connection. */ 45 | typedef NS_ENUM(NSInteger, RTCIceConnectionState) { 46 | RTCIceConnectionStateNew, 47 | RTCIceConnectionStateChecking, 48 | RTCIceConnectionStateConnected, 49 | RTCIceConnectionStateCompleted, 50 | RTCIceConnectionStateFailed, 51 | RTCIceConnectionStateDisconnected, 52 | RTCIceConnectionStateClosed, 53 | RTCIceConnectionStateCount, 54 | }; 55 | 56 | /** Represents the ice gathering state of the peer connection. */ 57 | typedef NS_ENUM(NSInteger, RTCIceGatheringState) { 58 | RTCIceGatheringStateNew, 59 | RTCIceGatheringStateGathering, 60 | RTCIceGatheringStateComplete, 61 | }; 62 | 63 | /** Represents the stats output level. */ 64 | typedef NS_ENUM(NSInteger, RTCStatsOutputLevel) { 65 | RTCStatsOutputLevelStandard, 66 | RTCStatsOutputLevelDebug, 67 | }; 68 | 69 | @class RTCPeerConnection; 70 | 71 | RTC_EXPORT 72 | @protocol RTCPeerConnectionDelegate 73 | 74 | /** Called when the SignalingState changed. */ 75 | - (void)peerConnection:(RTCPeerConnection *)peerConnection 76 | didChangeSignalingState:(RTCSignalingState)stateChanged; 77 | 78 | /** Called when media is received on a new stream from remote peer. */ 79 | - (void)peerConnection:(RTCPeerConnection *)peerConnection 80 | didAddStream:(RTCMediaStream *)stream; 81 | 82 | /** Called when a remote peer closes a stream. */ 83 | - (void)peerConnection:(RTCPeerConnection *)peerConnection 84 | didRemoveStream:(RTCMediaStream *)stream; 85 | 86 | /** Called when negotiation is needed, for example ICE has restarted. */ 87 | - (void)peerConnectionShouldNegotiate:(RTCPeerConnection *)peerConnection; 88 | 89 | /** Called any time the IceConnectionState changes. */ 90 | - (void)peerConnection:(RTCPeerConnection *)peerConnection 91 | didChangeIceConnectionState:(RTCIceConnectionState)newState; 92 | 93 | /** Called any time the IceGatheringState changes. */ 94 | - (void)peerConnection:(RTCPeerConnection *)peerConnection 95 | didChangeIceGatheringState:(RTCIceGatheringState)newState; 96 | 97 | /** New ice candidate has been found. */ 98 | - (void)peerConnection:(RTCPeerConnection *)peerConnection 99 | didGenerateIceCandidate:(RTCIceCandidate *)candidate; 100 | 101 | /** Called when a group of local Ice candidates have been removed. */ 102 | - (void)peerConnection:(RTCPeerConnection *)peerConnection 103 | didRemoveIceCandidates:(NSArray *)candidates; 104 | 105 | /** New data channel has been opened. */ 106 | - (void)peerConnection:(RTCPeerConnection *)peerConnection 107 | didOpenDataChannel:(RTCDataChannel *)dataChannel; 108 | 109 | @end 110 | 111 | RTC_EXPORT 112 | @interface RTCPeerConnection : NSObject 113 | 114 | /** The object that will be notifed about events such as state changes and 115 | * streams being added or removed. 116 | */ 117 | @property(nonatomic, weak, nullable) id delegate; 118 | @property(nonatomic, readonly) NSArray *localStreams; 119 | @property(nonatomic, readonly, nullable) 120 | RTCSessionDescription *localDescription; 121 | @property(nonatomic, readonly, nullable) 122 | RTCSessionDescription *remoteDescription; 123 | @property(nonatomic, readonly) RTCSignalingState signalingState; 124 | @property(nonatomic, readonly) RTCIceConnectionState iceConnectionState; 125 | @property(nonatomic, readonly) RTCIceGatheringState iceGatheringState; 126 | @property(nonatomic, readonly, copy) RTCConfiguration *configuration; 127 | 128 | /** Gets all RTCRtpSenders associated with this peer connection. 129 | * Note: reading this property returns different instances of RTCRtpSender. 130 | * Use isEqual: instead of == to compare RTCRtpSender instances. 131 | */ 132 | @property(nonatomic, readonly) NSArray *senders; 133 | 134 | /** Gets all RTCRtpReceivers associated with this peer connection. 135 | * Note: reading this property returns different instances of RTCRtpReceiver. 136 | * Use isEqual: instead of == to compare RTCRtpReceiver instances. 137 | */ 138 | @property(nonatomic, readonly) NSArray *receivers; 139 | 140 | - (instancetype)init NS_UNAVAILABLE; 141 | 142 | /** Sets the PeerConnection's global configuration to |configuration|. 143 | * Any changes to STUN/TURN servers or ICE candidate policy will affect the 144 | * next gathering phase, and cause the next call to createOffer to generate 145 | * new ICE credentials. Note that the BUNDLE and RTCP-multiplexing policies 146 | * cannot be changed with this method. 147 | */ 148 | - (BOOL)setConfiguration:(RTCConfiguration *)configuration; 149 | 150 | /** Terminate all media and close the transport. */ 151 | - (void)close; 152 | 153 | /** Provide a remote candidate to the ICE Agent. */ 154 | - (void)addIceCandidate:(RTCIceCandidate *)candidate; 155 | 156 | /** Remove a group of remote candidates from the ICE Agent. */ 157 | - (void)removeIceCandidates:(NSArray *)candidates; 158 | 159 | /** Add a new media stream to be sent on this peer connection. */ 160 | - (void)addStream:(RTCMediaStream *)stream; 161 | 162 | /** Remove the given media stream from this peer connection. */ 163 | - (void)removeStream:(RTCMediaStream *)stream; 164 | 165 | /** Generate an SDP offer. */ 166 | - (void)offerForConstraints:(RTCMediaConstraints *)constraints 167 | completionHandler:(nullable void (^) 168 | (RTCSessionDescription * _Nullable sdp, 169 | NSError * _Nullable error))completionHandler; 170 | 171 | /** Generate an SDP answer. */ 172 | - (void)answerForConstraints:(RTCMediaConstraints *)constraints 173 | completionHandler:(nullable void (^) 174 | (RTCSessionDescription * _Nullable sdp, 175 | NSError * _Nullable error))completionHandler; 176 | 177 | /** Apply the supplied RTCSessionDescription as the local description. */ 178 | - (void)setLocalDescription:(RTCSessionDescription *)sdp 179 | completionHandler: 180 | (nullable void (^)(NSError * _Nullable error))completionHandler; 181 | 182 | /** Apply the supplied RTCSessionDescription as the remote description. */ 183 | - (void)setRemoteDescription:(RTCSessionDescription *)sdp 184 | completionHandler: 185 | (nullable void (^)(NSError * _Nullable error))completionHandler; 186 | 187 | /** Start or stop recording an Rtc EventLog. */ 188 | - (BOOL)startRtcEventLogWithFilePath:(NSString *)filePath 189 | maxSizeInBytes:(int64_t)maxSizeInBytes; 190 | - (void)stopRtcEventLog; 191 | 192 | @end 193 | 194 | @interface RTCPeerConnection (Media) 195 | 196 | /** 197 | * Create an RTCRtpSender with the specified kind and media stream ID. 198 | * See RTCMediaStreamTrack.h for available kinds. 199 | */ 200 | - (RTCRtpSender *)senderWithKind:(NSString *)kind streamId:(NSString *)streamId; 201 | 202 | @end 203 | 204 | @interface RTCPeerConnection (DataChannel) 205 | 206 | /** Create a new data channel with the given label and configuration. */ 207 | - (RTCDataChannel *)dataChannelForLabel:(NSString *)label 208 | configuration:(RTCDataChannelConfiguration *)configuration; 209 | 210 | @end 211 | 212 | @interface RTCPeerConnection (Stats) 213 | 214 | /** Gather stats for the given RTCMediaStreamTrack. If |mediaStreamTrack| is nil 215 | * statistics are gathered for all tracks. 216 | */ 217 | - (void)statsForTrack: 218 | (nullable RTCMediaStreamTrack *)mediaStreamTrack 219 | statsOutputLevel:(RTCStatsOutputLevel)statsOutputLevel 220 | completionHandler: 221 | (nullable void (^)(NSArray *stats))completionHandler; 222 | 223 | @end 224 | 225 | NS_ASSUME_NONNULL_END 226 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCPeerConnectionFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | @class RTCAVFoundationVideoSource; 18 | @class RTCAudioSource; 19 | @class RTCAudioTrack; 20 | @class RTCConfiguration; 21 | @class RTCMediaConstraints; 22 | @class RTCMediaStream; 23 | @class RTCPeerConnection; 24 | @class RTCVideoSource; 25 | @class RTCVideoTrack; 26 | @protocol RTCPeerConnectionDelegate; 27 | 28 | RTC_EXPORT 29 | @interface RTCPeerConnectionFactory : NSObject 30 | 31 | - (instancetype)init NS_DESIGNATED_INITIALIZER; 32 | 33 | /** Initialize an RTCAudioSource with constraints. */ 34 | - (RTCAudioSource *)audioSourceWithConstraints:(nullable RTCMediaConstraints *)constraints; 35 | 36 | /** Initialize an RTCAudioTrack with an id. Convenience ctor to use an audio source with no 37 | * constraints. 38 | */ 39 | - (RTCAudioTrack *)audioTrackWithTrackId:(NSString *)trackId; 40 | 41 | /** Initialize an RTCAudioTrack with a source and an id. */ 42 | - (RTCAudioTrack *)audioTrackWithSource:(RTCAudioSource *)source 43 | trackId:(NSString *)trackId; 44 | 45 | /** Initialize an RTCAVFoundationVideoSource with constraints. */ 46 | - (RTCAVFoundationVideoSource *)avFoundationVideoSourceWithConstraints: 47 | (nullable RTCMediaConstraints *)constraints; 48 | 49 | /** Initialize a generic RTCVideoSource. The RTCVideoSource should be passed to a RTCVideoCapturer 50 | * implementation, e.g. RTCCameraVideoCapturer, in order to produce frames. 51 | */ 52 | - (RTCVideoSource *)videoSource; 53 | 54 | /** Initialize an RTCVideoTrack with a source and an id. */ 55 | - (RTCVideoTrack *)videoTrackWithSource:(RTCVideoSource *)source 56 | trackId:(NSString *)trackId; 57 | 58 | /** Initialize an RTCMediaStream with an id. */ 59 | - (RTCMediaStream *)mediaStreamWithStreamId:(NSString *)streamId; 60 | 61 | /** Initialize an RTCPeerConnection with a configuration, constraints, and 62 | * delegate. 63 | */ 64 | - (RTCPeerConnection *)peerConnectionWithConfiguration: 65 | (RTCConfiguration *)configuration 66 | constraints: 67 | (RTCMediaConstraints *)constraints 68 | delegate: 69 | (nullable id)delegate; 70 | 71 | /** Start an AecDump recording. This API call will likely change in the future. */ 72 | - (BOOL)startAecDumpWithFilePath:(NSString *)filePath 73 | maxSizeInBytes:(int64_t)maxSizeInBytes; 74 | 75 | /* Stop an active AecDump recording */ 76 | - (void)stopAecDump; 77 | 78 | @end 79 | 80 | NS_ASSUME_NONNULL_END 81 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCRtpCodecParameters.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | RTC_EXTERN const NSString * const kRTCRtxCodecName; 18 | RTC_EXTERN const NSString * const kRTCRedCodecName; 19 | RTC_EXTERN const NSString * const kRTCUlpfecCodecName; 20 | RTC_EXTERN const NSString * const kRTCFlexfecCodecName; 21 | RTC_EXTERN const NSString * const kRTCOpusCodecName; 22 | RTC_EXTERN const NSString * const kRTCIsacCodecName; 23 | RTC_EXTERN const NSString * const kRTCL16CodecName; 24 | RTC_EXTERN const NSString * const kRTCG722CodecName; 25 | RTC_EXTERN const NSString * const kRTCIlbcCodecName; 26 | RTC_EXTERN const NSString * const kRTCPcmuCodecName; 27 | RTC_EXTERN const NSString * const kRTCPcmaCodecName; 28 | RTC_EXTERN const NSString * const kRTCDtmfCodecName; 29 | RTC_EXTERN const NSString * const kRTCComfortNoiseCodecName; 30 | RTC_EXTERN const NSString * const kRTCVp8CodecName; 31 | RTC_EXTERN const NSString * const kRTCVp9CodecName; 32 | RTC_EXTERN const NSString * const kRTCH264CodecName; 33 | 34 | /** Defined in http://w3c.github.io/webrtc-pc/#idl-def-RTCRtpCodecParameters */ 35 | RTC_EXPORT 36 | @interface RTCRtpCodecParameters : NSObject 37 | 38 | /** The RTP payload type. */ 39 | @property(nonatomic, assign) int payloadType; 40 | 41 | /** 42 | * The codec MIME subtype. Valid types are listed in: 43 | * http://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-2 44 | * 45 | * Several supported types are represented by the constants above. 46 | */ 47 | @property(nonatomic, readonly, nonnull) NSString *name; 48 | 49 | /** 50 | * The media type of this codec. Equivalent to MIME top-level type. 51 | * 52 | * Valid values are kRTCMediaStreamTrackKindAudio and 53 | * kRTCMediaStreamTrackKindVideo. 54 | */ 55 | @property(nonatomic, readonly, nonnull) NSString *kind; 56 | 57 | /** The codec clock rate expressed in Hertz. */ 58 | @property(nonatomic, readonly, nullable) NSNumber *clockRate; 59 | 60 | /** 61 | * The number of channels (mono=1, stereo=2). 62 | * Set to null for video codecs. 63 | **/ 64 | @property(nonatomic, readonly, nullable) NSNumber *numChannels; 65 | 66 | - (instancetype)init NS_DESIGNATED_INITIALIZER; 67 | 68 | @end 69 | 70 | NS_ASSUME_NONNULL_END 71 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCRtpEncodingParameters.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | RTC_EXPORT 18 | @interface RTCRtpEncodingParameters : NSObject 19 | 20 | /** Controls whether the encoding is currently transmitted. */ 21 | @property(nonatomic, assign) BOOL isActive; 22 | 23 | /** The maximum bitrate to use for the encoding, or nil if there is no 24 | * limit. 25 | */ 26 | @property(nonatomic, copy, nullable) NSNumber *maxBitrateBps; 27 | 28 | /** The SSRC being used by this encoding. */ 29 | @property(nonatomic, readonly, nullable) NSNumber *ssrc; 30 | 31 | - (instancetype)init NS_DESIGNATED_INITIALIZER; 32 | 33 | @end 34 | 35 | NS_ASSUME_NONNULL_END 36 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCRtpParameters.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | #import 15 | #import 16 | 17 | NS_ASSUME_NONNULL_BEGIN 18 | 19 | RTC_EXPORT 20 | @interface RTCRtpParameters : NSObject 21 | 22 | /** The currently active encodings in the order of preference. */ 23 | @property(nonatomic, copy) NSArray *encodings; 24 | 25 | /** The negotiated set of send codecs in order of preference. */ 26 | @property(nonatomic, copy) NSArray *codecs; 27 | 28 | - (instancetype)init NS_DESIGNATED_INITIALIZER; 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCRtpReceiver.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | #import 15 | #import 16 | 17 | NS_ASSUME_NONNULL_BEGIN 18 | 19 | /** Represents the media type of the RtpReceiver. */ 20 | typedef NS_ENUM(NSInteger, RTCRtpMediaType) { 21 | RTCRtpMediaTypeAudio, 22 | RTCRtpMediaTypeVideo, 23 | RTCRtpMediaTypeData, 24 | }; 25 | 26 | @class RTCRtpReceiver; 27 | 28 | RTC_EXPORT 29 | @protocol RTCRtpReceiverDelegate 30 | 31 | /** Called when the first RTP packet is received. 32 | * 33 | * Note: Currently if there are multiple RtpReceivers of the same media type, 34 | * they will all call OnFirstPacketReceived at once. 35 | * 36 | * For example, if we create three audio receivers, A/B/C, they will listen to 37 | * the same signal from the underneath network layer. Whenever the first audio packet 38 | * is received, the underneath signal will be fired. All the receivers A/B/C will be 39 | * notified and the callback of the receiver's delegate will be called. 40 | * 41 | * The process is the same for video receivers. 42 | */ 43 | - (void)rtpReceiver:(RTCRtpReceiver *)rtpReceiver 44 | didReceiveFirstPacketForMediaType:(RTCRtpMediaType)mediaType; 45 | 46 | @end 47 | 48 | RTC_EXPORT 49 | @protocol RTCRtpReceiver 50 | 51 | /** A unique identifier for this receiver. */ 52 | @property(nonatomic, readonly) NSString *receiverId; 53 | 54 | /** The currently active RTCRtpParameters, as defined in 55 | * https://www.w3.org/TR/webrtc/#idl-def-RTCRtpParameters. 56 | * 57 | * The WebRTC specification only defines RTCRtpParameters in terms of senders, 58 | * but this API also applies them to receivers, similar to ORTC: 59 | * http://ortc.org/wp-content/uploads/2016/03/ortc.html#rtcrtpparameters*. 60 | */ 61 | @property(nonatomic, readonly) RTCRtpParameters *parameters; 62 | 63 | /** The RTCMediaStreamTrack associated with the receiver. 64 | * Note: reading this property returns a new instance of 65 | * RTCMediaStreamTrack. Use isEqual: instead of == to compare 66 | * RTCMediaStreamTrack instances. 67 | */ 68 | @property(nonatomic, readonly) RTCMediaStreamTrack *track; 69 | 70 | /** The delegate for this RtpReceiver. */ 71 | @property(nonatomic, weak) id delegate; 72 | 73 | @end 74 | 75 | RTC_EXPORT 76 | @interface RTCRtpReceiver : NSObject 77 | 78 | - (instancetype)init NS_UNAVAILABLE; 79 | 80 | @end 81 | 82 | NS_ASSUME_NONNULL_END 83 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCRtpSender.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | #import 15 | #import 16 | 17 | NS_ASSUME_NONNULL_BEGIN 18 | 19 | RTC_EXPORT 20 | @protocol RTCRtpSender 21 | 22 | /** A unique identifier for this sender. */ 23 | @property(nonatomic, readonly) NSString *senderId; 24 | 25 | /** The currently active RTCRtpParameters, as defined in 26 | * https://www.w3.org/TR/webrtc/#idl-def-RTCRtpParameters. 27 | */ 28 | @property(nonatomic, copy) RTCRtpParameters *parameters; 29 | 30 | /** The RTCMediaStreamTrack associated with the sender. 31 | * Note: reading this property returns a new instance of 32 | * RTCMediaStreamTrack. Use isEqual: instead of == to compare 33 | * RTCMediaStreamTrack instances. 34 | */ 35 | @property(nonatomic, copy, nullable) RTCMediaStreamTrack *track; 36 | 37 | @end 38 | 39 | RTC_EXPORT 40 | @interface RTCRtpSender : NSObject 41 | 42 | - (instancetype)init NS_UNAVAILABLE; 43 | 44 | @end 45 | 46 | NS_ASSUME_NONNULL_END 47 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCSSLAdapter.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | /** 16 | * Initialize and clean up the SSL library. Failure is fatal. These call the 17 | * corresponding functions in webrtc/base/ssladapter.h. 18 | */ 19 | RTC_EXTERN BOOL RTCInitializeSSL(); 20 | RTC_EXTERN BOOL RTCCleanupSSL(); 21 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCSessionDescription.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | /** 16 | * Represents the session description type. This exposes the same types that are 17 | * in C++, which doesn't include the rollback type that is in the W3C spec. 18 | */ 19 | typedef NS_ENUM(NSInteger, RTCSdpType) { 20 | RTCSdpTypeOffer, 21 | RTCSdpTypePrAnswer, 22 | RTCSdpTypeAnswer, 23 | }; 24 | 25 | NS_ASSUME_NONNULL_BEGIN 26 | 27 | RTC_EXPORT 28 | @interface RTCSessionDescription : NSObject 29 | 30 | /** The type of session description. */ 31 | @property(nonatomic, readonly) RTCSdpType type; 32 | 33 | /** The SDP string representation of this session description. */ 34 | @property(nonatomic, readonly) NSString *sdp; 35 | 36 | - (instancetype)init NS_UNAVAILABLE; 37 | 38 | /** Initialize a session description with a type and SDP string. */ 39 | - (instancetype)initWithType:(RTCSdpType)type sdp:(NSString *)sdp 40 | NS_DESIGNATED_INITIALIZER; 41 | 42 | + (NSString *)stringForType:(RTCSdpType)type; 43 | 44 | + (RTCSdpType)typeForString:(NSString *)string; 45 | 46 | @end 47 | 48 | NS_ASSUME_NONNULL_END 49 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCTracing.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | RTC_EXTERN void RTCSetupInternalTracer(); 16 | /** Starts capture to specified file. Must be a valid writable path. 17 | * Returns YES if capture starts. 18 | */ 19 | RTC_EXTERN BOOL RTCStartInternalCapture(NSString *filePath); 20 | RTC_EXTERN void RTCStopInternalCapture(); 21 | RTC_EXTERN void RTCShutdownInternalTracer(); 22 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCVideoCapturer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @class RTCVideoCapturer; 16 | 17 | RTC_EXPORT 18 | @protocol RTCVideoCapturerDelegate 19 | - (void)capturer:(RTCVideoCapturer *)capturer didCaptureVideoFrame:(RTCVideoFrame *)frame; 20 | @end 21 | 22 | RTC_EXPORT 23 | @interface RTCVideoCapturer : NSObject 24 | 25 | @property(nonatomic, readonly, weak) id delegate; 26 | 27 | - (instancetype)initWithDelegate:(id)delegate; 28 | 29 | @end 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCVideoFrame.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | #import 13 | 14 | #import 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | typedef NS_ENUM(NSInteger, RTCVideoRotation) { 19 | RTCVideoRotation_0 = 0, 20 | RTCVideoRotation_90 = 90, 21 | RTCVideoRotation_180 = 180, 22 | RTCVideoRotation_270 = 270, 23 | }; 24 | 25 | // RTCVideoFrame is an ObjectiveC version of webrtc::VideoFrame. 26 | RTC_EXPORT 27 | @interface RTCVideoFrame : NSObject 28 | 29 | /** Width without rotation applied. */ 30 | @property(nonatomic, readonly) int width; 31 | 32 | /** Height without rotation applied. */ 33 | @property(nonatomic, readonly) int height; 34 | @property(nonatomic, readonly) RTCVideoRotation rotation; 35 | /** Accessing YUV data should only be done for I420 frames, i.e. if nativeHandle 36 | * is null. It is always possible to get such a frame by calling 37 | * newI420VideoFrame. 38 | */ 39 | @property(nonatomic, readonly, nullable) const uint8_t *dataY; 40 | @property(nonatomic, readonly, nullable) const uint8_t *dataU; 41 | @property(nonatomic, readonly, nullable) const uint8_t *dataV; 42 | @property(nonatomic, readonly) int strideY; 43 | @property(nonatomic, readonly) int strideU; 44 | @property(nonatomic, readonly) int strideV; 45 | 46 | /** Timestamp in nanoseconds. */ 47 | @property(nonatomic, readonly) int64_t timeStampNs; 48 | 49 | /** The native handle should be a pixel buffer on iOS. */ 50 | @property(nonatomic, readonly) CVPixelBufferRef nativeHandle; 51 | 52 | - (instancetype)init NS_UNAVAILABLE; 53 | - (instancetype)new NS_UNAVAILABLE; 54 | 55 | /** Initialize an RTCVideoFrame from a pixel buffer, rotation, and timestamp. 56 | */ 57 | - (instancetype)initWithPixelBuffer:(CVPixelBufferRef)pixelBuffer 58 | rotation:(RTCVideoRotation)rotation 59 | timeStampNs:(int64_t)timeStampNs; 60 | 61 | /** Initialize an RTCVideoFrame from a pixel buffer combined with cropping and 62 | * scaling. Cropping will be applied first on the pixel buffer, followed by 63 | * scaling to the final resolution of scaledWidth x scaledHeight. 64 | */ 65 | - (instancetype)initWithPixelBuffer:(CVPixelBufferRef)pixelBuffer 66 | scaledWidth:(int)scaledWidth 67 | scaledHeight:(int)scaledHeight 68 | cropWidth:(int)cropWidth 69 | cropHeight:(int)cropHeight 70 | cropX:(int)cropX 71 | cropY:(int)cropY 72 | rotation:(RTCVideoRotation)rotation 73 | timeStampNs:(int64_t)timeStampNs; 74 | 75 | /** Return a frame that is guaranteed to be I420, i.e. it is possible to access 76 | * the YUV data on it. 77 | */ 78 | - (RTCVideoFrame *)newI420VideoFrame; 79 | 80 | @end 81 | 82 | NS_ASSUME_NONNULL_END 83 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCVideoRenderer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | #if TARGET_OS_IPHONE 13 | #import 14 | #endif 15 | 16 | #import 17 | 18 | NS_ASSUME_NONNULL_BEGIN 19 | 20 | @class RTCVideoFrame; 21 | 22 | RTC_EXPORT 23 | @protocol RTCVideoRenderer 24 | 25 | /** The size of the frame. */ 26 | - (void)setSize:(CGSize)size; 27 | 28 | /** The frame to be displayed. */ 29 | - (void)renderFrame:(nullable RTCVideoFrame *)frame; 30 | 31 | @end 32 | 33 | NS_ASSUME_NONNULL_END 34 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCVideoSource.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | #import 15 | #import 16 | 17 | NS_ASSUME_NONNULL_BEGIN 18 | 19 | RTC_EXPORT 20 | 21 | @interface RTCVideoSource : RTCMediaSource 22 | 23 | - (instancetype)init NS_UNAVAILABLE; 24 | 25 | /** 26 | * Calling this function will cause frames to be scaled down to the 27 | * requested resolution. Also, frames will be cropped to match the 28 | * requested aspect ratio, and frames will be dropped to match the 29 | * requested fps. The requested aspect ratio is orientation agnostic and 30 | * will be adjusted to maintain the input orientation, so it doesn't 31 | * matter if e.g. 1280x720 or 720x1280 is requested. 32 | */ 33 | - (void)adaptOutputFormatToWidth:(int)width height:(int)height fps:(int)fps; 34 | 35 | @end 36 | 37 | NS_ASSUME_NONNULL_END 38 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/RTCVideoTrack.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | #import 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | @protocol RTCVideoRenderer; 18 | @class RTCPeerConnectionFactory; 19 | @class RTCVideoSource; 20 | 21 | RTC_EXPORT 22 | @interface RTCVideoTrack : RTCMediaStreamTrack 23 | 24 | /** The video source for this video track. */ 25 | @property(nonatomic, readonly) RTCVideoSource *source; 26 | 27 | - (instancetype)init NS_UNAVAILABLE; 28 | 29 | /** Register a renderer that will render all frames received on this track. */ 30 | - (void)addRenderer:(id)renderer; 31 | 32 | /** Deregister a renderer. */ 33 | - (void)removeRenderer:(id)renderer; 34 | 35 | @end 36 | 37 | NS_ASSUME_NONNULL_END 38 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/UIDevice+RTCDevice.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | 13 | typedef NS_ENUM(NSInteger, RTCDeviceType) { 14 | RTCDeviceTypeUnknown, 15 | RTCDeviceTypeIPhone1G, 16 | RTCDeviceTypeIPhone3G, 17 | RTCDeviceTypeIPhone3GS, 18 | RTCDeviceTypeIPhone4, 19 | RTCDeviceTypeIPhone4Verizon, 20 | RTCDeviceTypeIPhone4S, 21 | RTCDeviceTypeIPhone5GSM, 22 | RTCDeviceTypeIPhone5GSM_CDMA, 23 | RTCDeviceTypeIPhone5CGSM, 24 | RTCDeviceTypeIPhone5CGSM_CDMA, 25 | RTCDeviceTypeIPhone5SGSM, 26 | RTCDeviceTypeIPhone5SGSM_CDMA, 27 | RTCDeviceTypeIPhone6Plus, 28 | RTCDeviceTypeIPhone6, 29 | RTCDeviceTypeIPhone6S, 30 | RTCDeviceTypeIPhone6SPlus, 31 | RTCDeviceTypeIPodTouch1G, 32 | RTCDeviceTypeIPodTouch2G, 33 | RTCDeviceTypeIPodTouch3G, 34 | RTCDeviceTypeIPodTouch4G, 35 | RTCDeviceTypeIPodTouch5G, 36 | RTCDeviceTypeIPad, 37 | RTCDeviceTypeIPad2Wifi, 38 | RTCDeviceTypeIPad2GSM, 39 | RTCDeviceTypeIPad2CDMA, 40 | RTCDeviceTypeIPad2Wifi2, 41 | RTCDeviceTypeIPadMiniWifi, 42 | RTCDeviceTypeIPadMiniGSM, 43 | RTCDeviceTypeIPadMiniGSM_CDMA, 44 | RTCDeviceTypeIPad3Wifi, 45 | RTCDeviceTypeIPad3GSM_CDMA, 46 | RTCDeviceTypeIPad3GSM, 47 | RTCDeviceTypeIPad4Wifi, 48 | RTCDeviceTypeIPad4GSM, 49 | RTCDeviceTypeIPad4GSM_CDMA, 50 | RTCDeviceTypeIPadAirWifi, 51 | RTCDeviceTypeIPadAirCellular, 52 | RTCDeviceTypeIPadMini2GWifi, 53 | RTCDeviceTypeIPadMini2GCellular, 54 | RTCDeviceTypeSimulatori386, 55 | RTCDeviceTypeSimulatorx86_64, 56 | }; 57 | 58 | @interface UIDevice (RTCDevice) 59 | 60 | + (RTCDeviceType)deviceType; 61 | + (NSString *)stringForDeviceType:(RTCDeviceType)deviceType; 62 | + (BOOL)isIOS9OrLater; 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Headers/WebRTC.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 The WebRTC project authors. All Rights Reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #import 12 | #import 13 | #import 14 | #if TARGET_OS_IPHONE 15 | #import 16 | #endif 17 | #import 18 | #import 19 | #import 20 | #import 21 | #if TARGET_OS_IPHONE 22 | #import 23 | #endif 24 | #import 25 | #import 26 | #import 27 | #import 28 | #import 29 | #import 30 | #import 31 | #import 32 | #import 33 | #import 34 | #import 35 | #import 36 | #import 37 | #import 38 | #import 39 | #import 40 | #import 41 | #import 42 | #import 43 | #import 44 | #import 45 | #import 46 | #import 47 | #import 48 | #import 49 | #import 50 | #import 51 | #if TARGET_OS_IPHONE 52 | #import 53 | #endif 54 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crossle/janus-gateway-ios/db5460bd998f350c741fcf3800c9adc2eab29c6a/janus-gateway-ios/Janus/WebRTC.framework/Info.plist -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/LICENSE.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Licenses 6 | 11 | 12 |

webrtc

13 |
  14 | Copyright (c) 2011, The WebRTC project authors. All rights reserved.
  15 | 
  16 | Redistribution and use in source and binary forms, with or without
  17 | modification, are permitted provided that the following conditions are
  18 | met:
  19 | 
  20 |   * Redistributions of source code must retain the above copyright
  21 |     notice, this list of conditions and the following disclaimer.
  22 | 
  23 |   * Redistributions in binary form must reproduce the above copyright
  24 |     notice, this list of conditions and the following disclaimer in
  25 |     the documentation and/or other materials provided with the
  26 |     distribution.
  27 | 
  28 |   * Neither the name of Google nor the names of its contributors may
  29 |     be used to endorse or promote products derived from this software
  30 |     without specific prior written permission.
  31 | 
  32 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  33 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  34 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  35 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  36 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  37 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  38 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  39 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  40 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  41 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  42 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  43 | 
  44 | This source tree contains third party source code which is governed by third
  45 | party licenses. Paths to the files and associated licenses are collected here.
  46 | 
  47 | Files governed by third party licenses:
  48 | base/base64.cc
  49 | base/base64.h
  50 | base/md5.cc
  51 | base/md5.h
  52 | base/sha1.cc
  53 | base/sha1.h
  54 | base/sigslot.cc
  55 | base/sigslot.h
  56 | common_audio/fft4g.c
  57 | common_audio/signal_processing/spl_sqrt_floor.c
  58 | common_audio/signal_processing/spl_sqrt_floor_arm.S
  59 | modules/audio_coding/codecs/g711/main/source/g711.c
  60 | modules/audio_coding/codecs/g711/main/source/g711.h
  61 | modules/audio_coding/codecs/g722/main/source/g722_decode.c
  62 | modules/audio_coding/codecs/g722/main/source/g722_enc_dec.h
  63 | modules/audio_coding/codecs/g722/main/source/g722_encode.c
  64 | modules/audio_coding/codecs/isac/main/source/fft.c
  65 | modules/audio_device/mac/portaudio/pa_memorybarrier.h
  66 | modules/audio_device/mac/portaudio/pa_ringbuffer.c
  67 | modules/audio_device/mac/portaudio/pa_ringbuffer.h
  68 | modules/audio_processing/aec/aec_rdft.c
  69 | system_wrappers/source/condition_variable_event_win.cc
  70 | system_wrappers/source/set_thread_name_win.h
  71 | 
  72 | Individual licenses for each file:
  73 | -------------------------------------------------------------------------------
  74 | Files:
  75 | base/base64.cc
  76 | base/base64.h
  77 | 
  78 | License:
  79 | //*********************************************************************
  80 | //* Base64 - a simple base64 encoder and decoder.
  81 | //*
  82 | //*     Copyright (c) 1999, Bob Withers - bwit@pobox.com
  83 | //*
  84 | //* This code may be freely used for any purpose, either personal
  85 | //* or commercial, provided the authors copyright notice remains
  86 | //* intact.
  87 | //*
  88 | //* Enhancements by Stanley Yamane:
  89 | //*     o reverse lookup table for the decode function
  90 | //*     o reserve string buffer space in advance
  91 | //*
  92 | //*********************************************************************
  93 | -------------------------------------------------------------------------------
  94 | Files:
  95 | base/md5.cc
  96 | base/md5.h
  97 | 
  98 | License:
  99 | /*
 100 |  * This code implements the MD5 message-digest algorithm.
 101 |  * The algorithm is due to Ron Rivest.  This code was
 102 |  * written by Colin Plumb in 1993, no copyright is claimed.
 103 |  * This code is in the public domain; do with it what you wish.
 104 |  *
 105 | -------------------------------------------------------------------------------
 106 | Files:
 107 | base/sha1.cc
 108 | base/sha1.h
 109 | 
 110 | License:
 111 | /*
 112 |  * SHA-1 in C
 113 |  * By Steve Reid <sreid@sea-to-sky.net>
 114 |  * 100% Public Domain
 115 |  *
 116 |  * -----------------
 117 |  * Modified 7/98
 118 |  * By James H. Brown <jbrown@burgoyne.com>
 119 |  * Still 100% Public Domain
 120 |  *
 121 | -------------------------------------------------------------------------------
 122 | Files:
 123 | base/sigslot.cc
 124 | base/sigslot.h
 125 | 
 126 | License:
 127 | // sigslot.h: Signal/Slot classes
 128 | //
 129 | // Written by Sarah Thompson (sarah@telergy.com) 2002.
 130 | //
 131 | // License: Public domain. You are free to use this code however you like, with
 132 | // the proviso that the author takes on no responsibility or liability for any
 133 | // use.
 134 | -------------------------------------------------------------------------------
 135 | Files:
 136 | common_audio/signal_processing/spl_sqrt_floor.c
 137 | common_audio/signal_processing/spl_sqrt_floor_arm.S
 138 | 
 139 | License:
 140 | /*
 141 |  * Written by Wilco Dijkstra, 1996. The following email exchange establishes the
 142 |  * license.
 143 |  *
 144 |  * From: Wilco Dijkstra <Wilco.Dijkstra@ntlworld.com>
 145 |  * Date: Fri, Jun 24, 2011 at 3:20 AM
 146 |  * Subject: Re: sqrt routine
 147 |  * To: Kevin Ma <kma@google.com>
 148 |  * Hi Kevin,
 149 |  * Thanks for asking. Those routines are public domain (originally posted to
 150 |  * comp.sys.arm a long time ago), so you can use them freely for any purpose.
 151 |  * Cheers,
 152 |  * Wilco
 153 |  *
 154 |  * ----- Original Message -----
 155 |  * From: "Kevin Ma" <kma@google.com>
 156 |  * To: <Wilco.Dijkstra@ntlworld.com>
 157 |  * Sent: Thursday, June 23, 2011 11:44 PM
 158 |  * Subject: Fwd: sqrt routine
 159 |  * Hi Wilco,
 160 |  * I saw your sqrt routine from several web sites, including
 161 |  * http://www.finesse.demon.co.uk/steven/sqrt.html.
 162 |  * Just wonder if there's any copyright information with your Successive
 163 |  * approximation routines, or if I can freely use it for any purpose.
 164 |  * Thanks.
 165 |  * Kevin
 166 |  */
 167 | -------------------------------------------------------------------------------
 168 | Files:
 169 | modules/audio_coding/codecs/g711/main/source/g711.c
 170 | modules/audio_coding/codecs/g711/main/source/g711.h
 171 | 
 172 | License:
 173 | /*
 174 |  * SpanDSP - a series of DSP components for telephony
 175 |  *
 176 |  * g711.h - In line A-law and u-law conversion routines
 177 |  *
 178 |  * Written by Steve Underwood <steveu@coppice.org>
 179 |  *
 180 |  * Copyright (C) 2001 Steve Underwood
 181 |  *
 182 |  *  Despite my general liking of the GPL, I place this code in the
 183 |  *  public domain for the benefit of all mankind - even the slimy
 184 |  *  ones who might try to proprietize my work and use it to my
 185 |  *  detriment.
 186 |  */
 187 | -------------------------------------------------------------------------------
 188 | Files:
 189 | modules/audio_coding/codecs/g722/main/source/g722_decode.c
 190 | modules/audio_coding/codecs/g722/main/source/g722_enc_dec.h
 191 | modules/audio_coding/codecs/g722/main/source/g722_encode.c
 192 | 
 193 | License:
 194 | /*
 195 |  * SpanDSP - a series of DSP components for telephony
 196 |  *
 197 |  * g722_decode.c - The ITU G.722 codec, decode part.
 198 |  *
 199 |  * Written by Steve Underwood <steveu@coppice.org>
 200 |  *
 201 |  * Copyright (C) 2005 Steve Underwood
 202 |  *
 203 |  *  Despite my general liking of the GPL, I place my own contributions
 204 |  *  to this code in the public domain for the benefit of all mankind -
 205 |  *  even the slimy ones who might try to proprietize my work and use it
 206 |  *  to my detriment.
 207 |  *
 208 |  * Based in part on a single channel G.722 codec which is:
 209 |  *
 210 |  * Copyright (c) CMU 1993
 211 |  * Computer Science, Speech Group
 212 |  * Chengxiang Lu and Alex Hauptmann
 213 |  */
 214 | -------------------------------------------------------------------------------
 215 | Files:
 216 | modules/audio_coding/codecs/isac/main/source/fft.c
 217 | 
 218 | License:
 219 | /*
 220 |  * Copyright(c)1995,97 Mark Olesen <olesen@me.QueensU.CA>
 221 |  *    Queen's Univ at Kingston (Canada)
 222 |  *
 223 |  * Permission to use, copy, modify, and distribute this software for
 224 |  * any purpose without fee is hereby granted, provided that this
 225 |  * entire notice is included in all copies of any software which is
 226 |  * or includes a copy or modification of this software and in all
 227 |  * copies of the supporting documentation for such software.
 228 |  *
 229 |  * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR
 230 |  * IMPLIED WARRANTY.  IN PARTICULAR, NEITHER THE AUTHOR NOR QUEEN'S
 231 |  * UNIVERSITY AT KINGSTON MAKES ANY REPRESENTATION OR WARRANTY OF ANY
 232 |  * KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS
 233 |  * FITNESS FOR ANY PARTICULAR PURPOSE.
 234 |  *
 235 |  * All of which is to say that you can do what you like with this
 236 |  * source code provided you don't try to sell it as your own and you
 237 |  * include an unaltered copy of this message (including the
 238 |  * copyright).
 239 |  *
 240 |  * It is also implicitly understood that bug fixes and improvements
 241 |  * should make their way back to the general Internet community so
 242 |  * that everyone benefits.
 243 |  */
 244 | -------------------------------------------------------------------------------
 245 | Files:
 246 | modules/audio_device/mac/portaudio/pa_memorybarrier.h
 247 | modules/audio_device/mac/portaudio/pa_ringbuffer.c
 248 | modules/audio_device/mac/portaudio/pa_ringbuffer.h
 249 | 
 250 | License:
 251 | /*
 252 |  * $Id: pa_memorybarrier.h 1240 2007-07-17 13:05:07Z bjornroche $
 253 |  * Portable Audio I/O Library
 254 |  * Memory barrier utilities
 255 |  *
 256 |  * Author: Bjorn Roche, XO Audio, LLC
 257 |  *
 258 |  * This program uses the PortAudio Portable Audio Library.
 259 |  * For more information see: http://www.portaudio.com
 260 |  * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
 261 |  *
 262 |  * Permission is hereby granted, free of charge, to any person obtaining
 263 |  * a copy of this software and associated documentation files
 264 |  * (the "Software"), to deal in the Software without restriction,
 265 |  * including without limitation the rights to use, copy, modify, merge,
 266 |  * publish, distribute, sublicense, and/or sell copies of the Software,
 267 |  * and to permit persons to whom the Software is furnished to do so,
 268 |  * subject to the following conditions:
 269 |  *
 270 |  * The above copyright notice and this permission notice shall be
 271 |  * included in all copies or substantial portions of the Software.
 272 |  *
 273 |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 274 |  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 275 |  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 276 |  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
 277 |  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 278 |  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 279 |  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 280 |  */
 281 | 
 282 | /*
 283 |  * The text above constitutes the entire PortAudio license; however,
 284 |  * the PortAudio community also makes the following non-binding requests:
 285 |  *
 286 |  * Any person wishing to distribute modifications to the Software is
 287 |  * requested to send the modifications to the original developer so that
 288 |  * they can be incorporated into the canonical version. It is also
 289 |  * requested that these non-binding requests be included along with the
 290 |  * license above.
 291 |  */
 292 | 
 293 | /*
 294 |  * $Id: pa_ringbuffer.c 1421 2009-11-18 16:09:05Z bjornroche $
 295 |  * Portable Audio I/O Library
 296 |  * Ring Buffer utility.
 297 |  *
 298 |  * Author: Phil Burk, http://www.softsynth.com
 299 |  * modified for SMP safety on Mac OS X by Bjorn Roche
 300 |  * modified for SMP safety on Linux by Leland Lucius
 301 |  * also, allowed for const where possible
 302 |  * modified for multiple-byte-sized data elements by Sven Fischer
 303 |  *
 304 |  * Note that this is safe only for a single-thread reader and a
 305 |  * single-thread writer.
 306 |  *
 307 |  * This program uses the PortAudio Portable Audio Library.
 308 |  * For more information see: http://www.portaudio.com
 309 |  * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
 310 |  *
 311 |  * Permission is hereby granted, free of charge, to any person obtaining
 312 |  * a copy of this software and associated documentation files
 313 |  * (the "Software"), to deal in the Software without restriction,
 314 |  * including without limitation the rights to use, copy, modify, merge,
 315 |  * publish, distribute, sublicense, and/or sell copies of the Software,
 316 |  * and to permit persons to whom the Software is furnished to do so,
 317 |  * subject to the following conditions:
 318 |  *
 319 |  * The above copyright notice and this permission notice shall be
 320 |  * included in all copies or substantial portions of the Software.
 321 |  *
 322 |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 323 |  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 324 |  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 325 |  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
 326 |  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 327 |  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 328 |  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 329 |  */
 330 | 
 331 | /*
 332 |  * The text above constitutes the entire PortAudio license; however,
 333 |  * the PortAudio community also makes the following non-binding requests:
 334 |  *
 335 |  * Any person wishing to distribute modifications to the Software is
 336 |  * requested to send the modifications to the original developer so that
 337 |  * they can be incorporated into the canonical version. It is also
 338 |  * requested that these non-binding requests be included along with the
 339 |  * license above.
 340 |  */
 341 | -------------------------------------------------------------------------------
 342 | Files:
 343 | common_audio/fft4g.c
 344 | modules/audio_processing/aec/aec_rdft.c
 345 | 
 346 | License:
 347 | /*
 348 |  * http://www.kurims.kyoto-u.ac.jp/~ooura/fft.html
 349 |  * Copyright Takuya OOURA, 1996-2001
 350 |  *
 351 |  * You may use, copy, modify and distribute this code for any purpose (include
 352 |  * commercial use) and without fee. Please refer to this package when you modify
 353 |  * this code.
 354 |  */
 355 | -------------------------------------------------------------------------------
 356 | Files:
 357 | system_wrappers/source/condition_variable_event_win.cc
 358 | 
 359 | Source:
 360 | http://www1.cse.wustl.edu/~schmidt/ACE-copying.html
 361 | 
 362 | License:
 363 | Copyright and Licensing Information for ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM),
 364 | and CoSMIC(TM)
 365 | 
 366 | ACE(TM), TAO(TM), CIAO(TM), DAnCE>(TM), and CoSMIC(TM) (henceforth referred to
 367 | as "DOC software") are copyrighted by Douglas C. Schmidt and his research
 368 | group at Washington University, University of California, Irvine, and
 369 | Vanderbilt University, Copyright (c) 1993-2009, all rights reserved. Since DOC
 370 | software is open-source, freely available software, you are free to use,
 371 | modify, copy, and distribute--perpetually and irrevocably--the DOC software
 372 | source code and object code produced from the source, as well as copy and
 373 | distribute modified versions of this software. You must, however, include this
 374 | copyright statement along with any code built using DOC software that you
 375 | release. No copyright statement needs to be provided if you just ship binary
 376 | executables of your software products.
 377 | You can use DOC software in commercial and/or binary software releases and are
 378 | under no obligation to redistribute any of your source code that is built
 379 | using DOC software. Note, however, that you may not misappropriate the DOC
 380 | software code, such as copyrighting it yourself or claiming authorship of the
 381 | DOC software code, in a way that will prevent DOC software from being
 382 | distributed freely using an open-source development model. You needn't inform
 383 | anyone that you're using DOC software in your software, though we encourage
 384 | you to let us know so we can promote your project in the DOC software success
 385 | stories.
 386 | 
 387 | The ACE, TAO, CIAO, DAnCE, and CoSMIC web sites are maintained by the DOC
 388 | Group at the Institute for Software Integrated Systems (ISIS) and the Center
 389 | for Distributed Object Computing of Washington University, St. Louis for the
 390 | development of open-source software as part of the open-source software
 391 | community. Submissions are provided by the submitter ``as is'' with no
 392 | warranties whatsoever, including any warranty of merchantability,
 393 | noninfringement of third party intellectual property, or fitness for any
 394 | particular purpose. In no event shall the submitter be liable for any direct,
 395 | indirect, special, exemplary, punitive, or consequential damages, including
 396 | without limitation, lost profits, even if advised of the possibility of such
 397 | damages. Likewise, DOC software is provided as is with no warranties of any
 398 | kind, including the warranties of design, merchantability, and fitness for a
 399 | particular purpose, noninfringement, or arising from a course of dealing,
 400 | usage or trade practice. Washington University, UC Irvine, Vanderbilt
 401 | University, their employees, and students shall have no liability with respect
 402 | to the infringement of copyrights, trade secrets or any patents by DOC
 403 | software or any part thereof. Moreover, in no event will Washington
 404 | University, UC Irvine, or Vanderbilt University, their employees, or students
 405 | be liable for any lost revenue or profits or other special, indirect and
 406 | consequential damages.
 407 | 
 408 | DOC software is provided with no support and without any obligation on the
 409 | part of Washington University, UC Irvine, Vanderbilt University, their
 410 | employees, or students to assist in its use, correction, modification, or
 411 | enhancement. A number of companies around the world provide commercial support
 412 | for DOC software, however. DOC software is Y2K-compliant, as long as the
 413 | underlying OS platform is Y2K-compliant. Likewise, DOC software is compliant
 414 | with the new US daylight savings rule passed by Congress as "The Energy Policy
 415 | Act of 2005," which established new daylight savings times (DST) rules for the
 416 | United States that expand DST as of March 2007. Since DOC software obtains
 417 | time/date and calendaring information from operating systems users will not be
 418 | affected by the new DST rules as long as they upgrade their operating systems
 419 | accordingly.
 420 | 
 421 | The names ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM), CoSMIC(TM), Washington
 422 | University, UC Irvine, and Vanderbilt University, may not be used to endorse
 423 | or promote products or services derived from this source without express
 424 | written permission from Washington University, UC Irvine, or Vanderbilt
 425 | University. This license grants no permission to call products or services
 426 | derived from this source ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM), or CoSMIC(TM),
 427 | nor does it grant permission for the name Washington University, UC Irvine, or
 428 | Vanderbilt University to appear in their names.
 429 | -------------------------------------------------------------------------------
 430 | Files:
 431 | system_wrappers/source/set_thread_name_win.h
 432 | 
 433 | Source:
 434 | http://msdn.microsoft.com/en-us/cc300389.aspx#P
 435 | 
 436 | License:
 437 | This license governs use of code marked as “sample” or “example” available on
 438 | this web site without a license agreement, as provided under the section above
 439 | titled “NOTICE SPECIFIC TO SOFTWARE AVAILABLE ON THIS WEB SITE.” If you use
 440 | such code (the “software”), you accept this license. If you do not accept the
 441 | license, do not use the software.
 442 | 
 443 | 1. Definitions
 444 | 
 445 | The terms “reproduce,” “reproduction,” “derivative works,” and “distribution”
 446 | have the same meaning here as under U.S. copyright law.
 447 | 
 448 | A “contribution” is the original software, or any additions or changes to the
 449 | software.
 450 | 
 451 | A “contributor” is any person that distributes its contribution under this
 452 | license.
 453 | 
 454 | “Licensed patents” are a contributor’s patent claims that read directly on its
 455 | contribution.
 456 | 
 457 | 2. Grant of Rights
 458 | 
 459 | (A) Copyright Grant - Subject to the terms of this license, including the
 460 | license conditions and limitations in section 3, each contributor grants you a
 461 | non-exclusive, worldwide, royalty-free copyright license to reproduce its
 462 | contribution, prepare derivative works of its contribution, and distribute its
 463 | contribution or any derivative works that you create.
 464 | 
 465 | (B) Patent Grant - Subject to the terms of this license, including the license
 466 | conditions and limitations in section 3, each contributor grants you a
 467 | non-exclusive, worldwide, royalty-free license under its licensed patents to
 468 | make, have made, use, sell, offer for sale, import, and/or otherwise dispose
 469 | of its contribution in the software or derivative works of the contribution in
 470 | the software.
 471 | 
 472 | 3. Conditions and Limitations
 473 | 
 474 | (A) No Trademark License- This license does not grant you rights to use any
 475 | contributors’ name, logo, or trademarks.
 476 | 
 477 | (B) If you bring a patent claim against any contributor over patents that you
 478 | claim are infringed by the software, your patent license from such contributor
 479 | to the software ends automatically.
 480 | 
 481 | (C) If you distribute any portion of the software, you must retain all
 482 | copyright, patent, trademark, and attribution notices that are present in the
 483 | software.
 484 | 
 485 | (D) If you distribute any portion of the software in source code form, you may
 486 | do so only under this license by including a complete copy of this license
 487 | with your distribution. If you distribute any portion of the software in
 488 | compiled or object code form, you may only do so under a license that complies
 489 | with this license.
 490 | 
 491 | (E) The software is licensed “as-is.” You bear the risk of using it. The
 492 | contributors give no express warranties, guarantees or conditions. You may
 493 | have additional consumer rights under your local laws which this license
 494 | cannot change. To the extent permitted under your local laws, the contributors
 495 | exclude the implied warranties of merchantability, fitness for a particular
 496 | purpose and non-infringement.
 497 | 
 498 | (F) Platform Limitation - The licenses granted in sections 2(A) and 2(B)
 499 | extend only to the software or derivative works that you create that run on a
 500 | Microsoft Windows operating system product.
 501 | 
 502 | 
 503 | 
504 |

boringssl

505 |
 506 | BoringSSL is a fork of OpenSSL. As such, large parts of it fall under OpenSSL
 507 | licensing. Files that are completely new have a Google copyright and an ISC
 508 | license. This license is reproduced at the bottom of this file.
 509 | 
 510 | Contributors to BoringSSL are required to follow the CLA rules for Chromium:
 511 | https://cla.developers.google.com/clas
 512 | 
 513 | Some files from Intel are under yet another license, which is also included
 514 | underneath.
 515 | 
 516 | The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the
 517 | OpenSSL License and the original SSLeay license apply to the toolkit. See below
 518 | for the actual license texts. Actually both licenses are BSD-style Open Source
 519 | licenses. In case of any license issues related to OpenSSL please contact
 520 | openssl-core@openssl.org.
 521 | 
 522 | The following are Google-internal bug numbers where explicit permission from
 523 | some authors is recorded for use of their work. (This is purely for our own
 524 | record keeping.)
 525 |   27287199
 526 |   27287880
 527 |   27287883
 528 | 
 529 |   OpenSSL License
 530 |   ---------------
 531 | 
 532 | /* ====================================================================
 533 |  * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
 534 |  *
 535 |  * Redistribution and use in source and binary forms, with or without
 536 |  * modification, are permitted provided that the following conditions
 537 |  * are met:
 538 |  *
 539 |  * 1. Redistributions of source code must retain the above copyright
 540 |  *    notice, this list of conditions and the following disclaimer. 
 541 |  *
 542 |  * 2. Redistributions in binary form must reproduce the above copyright
 543 |  *    notice, this list of conditions and the following disclaimer in
 544 |  *    the documentation and/or other materials provided with the
 545 |  *    distribution.
 546 |  *
 547 |  * 3. All advertising materials mentioning features or use of this
 548 |  *    software must display the following acknowledgment:
 549 |  *    "This product includes software developed by the OpenSSL Project
 550 |  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
 551 |  *
 552 |  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 553 |  *    endorse or promote products derived from this software without
 554 |  *    prior written permission. For written permission, please contact
 555 |  *    openssl-core@openssl.org.
 556 |  *
 557 |  * 5. Products derived from this software may not be called "OpenSSL"
 558 |  *    nor may "OpenSSL" appear in their names without prior written
 559 |  *    permission of the OpenSSL Project.
 560 |  *
 561 |  * 6. Redistributions of any form whatsoever must retain the following
 562 |  *    acknowledgment:
 563 |  *    "This product includes software developed by the OpenSSL Project
 564 |  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
 565 |  *
 566 |  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 567 |  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 568 |  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 569 |  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
 570 |  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 571 |  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 572 |  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 573 |  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 574 |  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 575 |  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 576 |  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 577 |  * OF THE POSSIBILITY OF SUCH DAMAGE.
 578 |  * ====================================================================
 579 |  *
 580 |  * This product includes cryptographic software written by Eric Young
 581 |  * (eay@cryptsoft.com).  This product includes software written by Tim
 582 |  * Hudson (tjh@cryptsoft.com).
 583 |  *
 584 |  */
 585 | 
 586 |  Original SSLeay License
 587 |  -----------------------
 588 | 
 589 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
 590 |  * All rights reserved.
 591 |  *
 592 |  * This package is an SSL implementation written
 593 |  * by Eric Young (eay@cryptsoft.com).
 594 |  * The implementation was written so as to conform with Netscapes SSL.
 595 |  * 
 596 |  * This library is free for commercial and non-commercial use as long as
 597 |  * the following conditions are aheared to.  The following conditions
 598 |  * apply to all code found in this distribution, be it the RC4, RSA,
 599 |  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
 600 |  * included with this distribution is covered by the same copyright terms
 601 |  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
 602 |  * 
 603 |  * Copyright remains Eric Young's, and as such any Copyright notices in
 604 |  * the code are not to be removed.
 605 |  * If this package is used in a product, Eric Young should be given attribution
 606 |  * as the author of the parts of the library used.
 607 |  * This can be in the form of a textual message at program startup or
 608 |  * in documentation (online or textual) provided with the package.
 609 |  * 
 610 |  * Redistribution and use in source and binary forms, with or without
 611 |  * modification, are permitted provided that the following conditions
 612 |  * are met:
 613 |  * 1. Redistributions of source code must retain the copyright
 614 |  *    notice, this list of conditions and the following disclaimer.
 615 |  * 2. Redistributions in binary form must reproduce the above copyright
 616 |  *    notice, this list of conditions and the following disclaimer in the
 617 |  *    documentation and/or other materials provided with the distribution.
 618 |  * 3. All advertising materials mentioning features or use of this software
 619 |  *    must display the following acknowledgement:
 620 |  *    "This product includes cryptographic software written by
 621 |  *     Eric Young (eay@cryptsoft.com)"
 622 |  *    The word 'cryptographic' can be left out if the rouines from the library
 623 |  *    being used are not cryptographic related :-).
 624 |  * 4. If you include any Windows specific code (or a derivative thereof) from 
 625 |  *    the apps directory (application code) you must include an acknowledgement:
 626 |  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
 627 |  * 
 628 |  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
 629 |  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 630 |  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 631 |  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 632 |  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 633 |  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 634 |  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 635 |  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 636 |  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 637 |  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 638 |  * SUCH DAMAGE.
 639 |  * 
 640 |  * The licence and distribution terms for any publically available version or
 641 |  * derivative of this code cannot be changed.  i.e. this code cannot simply be
 642 |  * copied and put under another distribution licence
 643 |  * [including the GNU Public Licence.]
 644 |  */
 645 | 
 646 | 
 647 | ISC license used for completely new code in BoringSSL:
 648 | 
 649 | /* Copyright (c) 2015, Google Inc.
 650 |  *
 651 |  * Permission to use, copy, modify, and/or distribute this software for any
 652 |  * purpose with or without fee is hereby granted, provided that the above
 653 |  * copyright notice and this permission notice appear in all copies.
 654 |  *
 655 |  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 656 |  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 657 |  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 658 |  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 659 |  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
 660 |  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 661 |  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
 662 | 
 663 | 
 664 | Some files from Intel carry the following license:
 665 | 
 666 | # Copyright (c) 2012, Intel Corporation
 667 | #
 668 | # All rights reserved.
 669 | #
 670 | # Redistribution and use in source and binary forms, with or without
 671 | # modification, are permitted provided that the following conditions are
 672 | # met:
 673 | #
 674 | # *  Redistributions of source code must retain the above copyright
 675 | #    notice, this list of conditions and the following disclaimer.
 676 | #
 677 | # *  Redistributions in binary form must reproduce the above copyright
 678 | #    notice, this list of conditions and the following disclaimer in the
 679 | #    documentation and/or other materials provided with the
 680 | #    distribution.
 681 | #
 682 | # *  Neither the name of the Intel Corporation nor the names of its
 683 | #    contributors may be used to endorse or promote products derived from
 684 | #    this software without specific prior written permission.
 685 | #
 686 | #
 687 | # THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION ""AS IS"" AND ANY
 688 | # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 689 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 690 | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR
 691 | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 692 | # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 693 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 694 | # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 695 | # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 696 | # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 697 | # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 698 | 
 699 | 
700 |

expat

701 |
 702 | Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper
 703 | Copyright (c) 2001-2016 Expat maintainers
 704 | 
 705 | Permission is hereby granted, free of charge, to any person obtaining
 706 | a copy of this software and associated documentation files (the
 707 | "Software"), to deal in the Software without restriction, including
 708 | without limitation the rights to use, copy, modify, merge, publish,
 709 | distribute, sublicense, and/or sell copies of the Software, and to
 710 | permit persons to whom the Software is furnished to do so, subject to
 711 | the following conditions:
 712 | 
 713 | The above copyright notice and this permission notice shall be included
 714 | in all copies or substantial portions of the Software.
 715 | 
 716 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 717 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 718 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 719 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 720 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 721 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 722 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 723 | 
 724 | 
725 |

jsoncpp

726 |
 727 | The JsonCpp library's source code, including accompanying documentation, 
 728 | tests and demonstration applications, are licensed under the following
 729 | conditions...
 730 | 
 731 | The author (Baptiste Lepilleur) explicitly disclaims copyright in all 
 732 | jurisdictions which recognize such a disclaimer. In such jurisdictions, 
 733 | this software is released into the Public Domain.
 734 | 
 735 | In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
 736 | 2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is
 737 | released under the terms of the MIT License (see below).
 738 | 
 739 | In jurisdictions which recognize Public Domain property, the user of this 
 740 | software may choose to accept it either as 1) Public Domain, 2) under the 
 741 | conditions of the MIT License (see below), or 3) under the terms of dual 
 742 | Public Domain/MIT License conditions described here, as they choose.
 743 | 
 744 | The MIT License is about as close to Public Domain as a license can get, and is
 745 | described in clear, concise terms at:
 746 | 
 747 |    http://en.wikipedia.org/wiki/MIT_License
 748 |    
 749 | The full text of the MIT License follows:
 750 | 
 751 | ========================================================================
 752 | Copyright (c) 2007-2010 Baptiste Lepilleur
 753 | 
 754 | Permission is hereby granted, free of charge, to any person
 755 | obtaining a copy of this software and associated documentation
 756 | files (the "Software"), to deal in the Software without
 757 | restriction, including without limitation the rights to use, copy,
 758 | modify, merge, publish, distribute, sublicense, and/or sell copies
 759 | of the Software, and to permit persons to whom the Software is
 760 | furnished to do so, subject to the following conditions:
 761 | 
 762 | The above copyright notice and this permission notice shall be
 763 | included in all copies or substantial portions of the Software.
 764 | 
 765 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 766 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 767 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 768 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 769 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 770 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 771 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 772 | SOFTWARE.
 773 | ========================================================================
 774 | (END LICENSE TEXT)
 775 | 
 776 | The MIT license is compatible with both the GPL and commercial
 777 | software, affording one all of the rights of Public Domain with the
 778 | minor nuisance of being required to keep the above copyright notice
 779 | and license text in the source code. Note also that by accepting the
 780 | Public Domain "license" you can re-license your copy using whatever
 781 | license you like.
 782 | 
 783 | 
784 |

libsrtp

785 |
 786 | /*
 787 |  *	
 788 |  * Copyright (c) 2001-2006 Cisco Systems, Inc.
 789 |  * All rights reserved.
 790 |  * 
 791 |  * Redistribution and use in source and binary forms, with or without
 792 |  * modification, are permitted provided that the following conditions
 793 |  * are met:
 794 |  * 
 795 |  *   Redistributions of source code must retain the above copyright
 796 |  *   notice, this list of conditions and the following disclaimer.
 797 |  * 
 798 |  *   Redistributions in binary form must reproduce the above
 799 |  *   copyright notice, this list of conditions and the following
 800 |  *   disclaimer in the documentation and/or other materials provided
 801 |  *   with the distribution.
 802 |  * 
 803 |  *   Neither the name of the Cisco Systems, Inc. nor the names of its
 804 |  *   contributors may be used to endorse or promote products derived
 805 |  *   from this software without specific prior written permission.
 806 |  * 
 807 |  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 808 |  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 809 |  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 810 |  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 811 |  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 812 |  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 813 |  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 814 |  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 815 |  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 816 |  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 817 |  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 818 |  * OF THE POSSIBILITY OF SUCH DAMAGE.
 819 |  *
 820 |  */
 821 | 
 822 | 
823 |

libvpx

824 |
 825 | Copyright (c) 2010, The WebM Project authors. All rights reserved.
 826 | 
 827 | Redistribution and use in source and binary forms, with or without
 828 | modification, are permitted provided that the following conditions are
 829 | met:
 830 | 
 831 |   * Redistributions of source code must retain the above copyright
 832 |     notice, this list of conditions and the following disclaimer.
 833 | 
 834 |   * Redistributions in binary form must reproduce the above copyright
 835 |     notice, this list of conditions and the following disclaimer in
 836 |     the documentation and/or other materials provided with the
 837 |     distribution.
 838 | 
 839 |   * Neither the name of Google, nor the WebM Project, nor the names
 840 |     of its contributors may be used to endorse or promote products
 841 |     derived from this software without specific prior written
 842 |     permission.
 843 | 
 844 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 845 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 846 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 847 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 848 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 849 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 850 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 851 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 852 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 853 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 854 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 855 | 
 856 | 
 857 | 
858 |

libyuv

859 |
 860 | Copyright 2011 The LibYuv Project Authors. All rights reserved.
 861 | 
 862 | Redistribution and use in source and binary forms, with or without
 863 | modification, are permitted provided that the following conditions are
 864 | met:
 865 | 
 866 |   * Redistributions of source code must retain the above copyright
 867 |     notice, this list of conditions and the following disclaimer.
 868 | 
 869 |   * Redistributions in binary form must reproduce the above copyright
 870 |     notice, this list of conditions and the following disclaimer in
 871 |     the documentation and/or other materials provided with the
 872 |     distribution.
 873 | 
 874 |   * Neither the name of Google nor the names of its contributors may
 875 |     be used to endorse or promote products derived from this software
 876 |     without specific prior written permission.
 877 | 
 878 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 879 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 880 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 881 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 882 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 883 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 884 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 885 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 886 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 887 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 888 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 889 | 
 890 | 
891 |

opus

892 |
 893 | Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic,
 894 |                     Jean-Marc Valin, Timothy B. Terriberry,
 895 |                     CSIRO, Gregory Maxwell, Mark Borgerding,
 896 |                     Erik de Castro Lopo
 897 | 
 898 | Redistribution and use in source and binary forms, with or without
 899 | modification, are permitted provided that the following conditions
 900 | are met:
 901 | 
 902 | - Redistributions of source code must retain the above copyright
 903 | notice, this list of conditions and the following disclaimer.
 904 | 
 905 | - Redistributions in binary form must reproduce the above copyright
 906 | notice, this list of conditions and the following disclaimer in the
 907 | documentation and/or other materials provided with the distribution.
 908 | 
 909 | - Neither the name of Internet Society, IETF or IETF Trust, nor the
 910 | names of specific contributors, may be used to endorse or promote
 911 | products derived from this software without specific prior written
 912 | permission.
 913 | 
 914 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 915 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 916 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 917 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
 918 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 919 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 920 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 921 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 922 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 923 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 924 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 925 | 
 926 | Opus is subject to the royalty-free patent licenses which are
 927 | specified at:
 928 | 
 929 | Xiph.Org Foundation:
 930 | https://datatracker.ietf.org/ipr/1524/
 931 | 
 932 | Microsoft Corporation:
 933 | https://datatracker.ietf.org/ipr/1914/
 934 | 
 935 | Broadcom Corporation:
 936 | https://datatracker.ietf.org/ipr/1526/
 937 | 
 938 | 
939 |

protobuf

940 |
 941 | This license applies to all parts of Protocol Buffers except the following:
 942 | 
 943 |   - Atomicops support for generic gcc, located in
 944 |     src/google/protobuf/stubs/atomicops_internals_generic_gcc.h.
 945 |     This file is copyrighted by Red Hat Inc.
 946 | 
 947 |   - Atomicops support for AIX/POWER, located in
 948 |     src/google/protobuf/stubs/atomicops_internals_power.h.
 949 |     This file is copyrighted by Bloomberg Finance LP.
 950 | 
 951 | Copyright 2014, Google Inc.  All rights reserved.
 952 | 
 953 | Redistribution and use in source and binary forms, with or without
 954 | modification, are permitted provided that the following conditions are
 955 | met:
 956 | 
 957 |     * Redistributions of source code must retain the above copyright
 958 | notice, this list of conditions and the following disclaimer.
 959 |     * Redistributions in binary form must reproduce the above
 960 | copyright notice, this list of conditions and the following disclaimer
 961 | in the documentation and/or other materials provided with the
 962 | distribution.
 963 |     * Neither the name of Google Inc. nor the names of its
 964 | contributors may be used to endorse or promote products derived from
 965 | this software without specific prior written permission.
 966 | 
 967 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 968 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 969 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 970 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 971 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 972 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 973 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 974 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 975 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 976 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 977 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 978 | 
 979 | Code generated by the Protocol Buffer compiler is owned by the owner
 980 | of the input file used when generating it.  This code is not
 981 | standalone and requires a support library to be linked with it.  This
 982 | support library is itself covered by the above license.
 983 | 
 984 | 
985 |

usrsctp

986 |
 987 | (Copied from the COPYRIGHT file of
 988 | https://code.google.com/p/sctp-refimpl/source/browse/trunk/COPYRIGHT)
 989 | --------------------------------------------------------------------------------
 990 | 
 991 | Copyright (c) 2001, 2002 Cisco Systems, Inc.
 992 | Copyright (c) 2002-12 Randall R. Stewart
 993 | Copyright (c) 2002-12 Michael Tuexen
 994 | All rights reserved.
 995 | 
 996 | Redistribution and use in source and binary forms, with or without
 997 | modification, are permitted provided that the following conditions
 998 | are met:
 999 | 
1000 | 1. Redistributions of source code must retain the above copyright
1001 |    notice, this list of conditions and the following disclaimer.
1002 | 2. Redistributions in binary form must reproduce the above copyright
1003 |    notice, this list of conditions and the following disclaimer in the
1004 |    documentation and/or other materials provided with the distribution.
1005 | 
1006 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1007 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1008 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1009 | ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1010 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1011 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
1012 | OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1013 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
1014 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
1015 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
1016 | SUCH DAMAGE.
1017 | 
1018 | 
1019 | 1020 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module WebRTC { 2 | umbrella header "WebRTC.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebRTC.framework/WebRTC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crossle/janus-gateway-ios/db5460bd998f350c741fcf3800c9adc2eab29c6a/janus-gateway-ios/Janus/WebRTC.framework/WebRTC -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebSocketChannel.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | #import "WebRTC/WebRTC.h" 4 | #import "ViewController.h" 5 | 6 | 7 | @protocol WebSocketDelegate; 8 | 9 | typedef NS_ENUM(NSInteger, ARDSignalingChannelState) { 10 | kARDSignalingChannelStateClosed, 11 | kARDSignalingChannelStateOpen, 12 | kARDSignalingChannelStateCreate, 13 | kARDSignalingChannelStateAttach, 14 | kARDSignalingChannelStateJoin, 15 | kARDSignalingChannelStateOffer, 16 | kARDSignalingChannelStateError 17 | }; 18 | 19 | @interface WebSocketChannel : NSObject 20 | 21 | @property(nonatomic, weak) id delegate; 22 | 23 | - (instancetype)initWithURL:(NSURL *)url; 24 | 25 | - (void)publisherCreateOffer:(NSNumber *)handleId sdp:(RTCSessionDescription *)sdp; 26 | 27 | - (void)subscriberCreateAnswer:(NSNumber *)handleId sdp: (RTCSessionDescription *)sdp; 28 | 29 | - (void)trickleCandidate:(NSNumber *)handleId candidate: (RTCIceCandidate *)candidate; 30 | 31 | - (void)trickleCandidateComplete:(NSNumber *)handleId; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/WebSocketChannel.m: -------------------------------------------------------------------------------- 1 | #import "WebSocketChannel.h" 2 | #import 3 | 4 | #import "WebRTC/RTCLogging.h" 5 | #import "SRWebSocket.h" 6 | #import "JanusTransaction.h" 7 | #import "JanusHandle.h" 8 | 9 | 10 | static NSString const *kJanus = @"janus"; 11 | static NSString const *kJanusData = @"data"; 12 | 13 | 14 | @interface WebSocketChannel () 15 | @property(nonatomic, readonly) ARDSignalingChannelState state; 16 | 17 | @end 18 | 19 | @implementation WebSocketChannel { 20 | NSURL *_url; 21 | SRWebSocket *_socket; 22 | NSNumber *sessionId; 23 | NSTimer *keepAliveTimer; 24 | NSMutableDictionary *transDict; 25 | NSMutableDictionary *handleDict; 26 | NSMutableDictionary *feedDict; 27 | } 28 | 29 | @synthesize state = _state; 30 | 31 | 32 | - (instancetype)initWithURL:(NSURL *)url { 33 | if (self = [super init]) { 34 | _url = url; 35 | NSArray *protocols = [NSArray arrayWithObject:@"janus-protocol"]; 36 | _socket = [[SRWebSocket alloc] initWithURL:url protocols:(NSArray *)protocols]; 37 | _socket.delegate = self; 38 | keepAliveTimer = [NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(keepAlive) userInfo:nil repeats:YES]; 39 | transDict = [NSMutableDictionary dictionary]; 40 | handleDict = [NSMutableDictionary dictionary]; 41 | feedDict = [NSMutableDictionary dictionary]; 42 | 43 | RTCLog(@"Opening WebSocket."); 44 | [_socket open]; 45 | } 46 | return self; 47 | } 48 | 49 | - (void)dealloc { 50 | [self disconnect]; 51 | } 52 | 53 | - (void)setState:(ARDSignalingChannelState)state { 54 | if (_state == state) { 55 | return; 56 | } 57 | _state = state; 58 | } 59 | 60 | - (void)disconnect { 61 | if (_state == kARDSignalingChannelStateClosed || 62 | _state == kARDSignalingChannelStateError) { 63 | return; 64 | } 65 | [_socket close]; 66 | RTCLog(@"C->WSS DELETE close"); 67 | } 68 | 69 | #pragma mark - SRWebSocketDelegate 70 | 71 | - (void)webSocketDidOpen:(SRWebSocket *)webSocket { 72 | RTCLog(@"WebSocket connection opened."); 73 | self.state = kARDSignalingChannelStateOpen; 74 | [self createSession]; 75 | } 76 | 77 | - (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message { 78 | NSLog(@"====onMessage=%@", message); 79 | NSData *messageData = [message dataUsingEncoding:NSUTF8StringEncoding]; 80 | id jsonObject = [NSJSONSerialization JSONObjectWithData:messageData options:0 error:nil]; 81 | if (![jsonObject isKindOfClass:[NSDictionary class]]) { 82 | NSLog(@"Unexpected message: %@", jsonObject); 83 | return; 84 | } 85 | NSDictionary *wssMessage = jsonObject; 86 | NSString *janus = wssMessage[kJanus]; 87 | if ([janus isEqualToString:@"success"]) { 88 | NSString *transaction = wssMessage[@"transaction"]; 89 | 90 | JanusTransaction *jt = transDict[transaction]; 91 | if (jt.success != nil) { 92 | jt.success(wssMessage); 93 | } 94 | [transDict removeObjectForKey:transaction]; 95 | } else if ([janus isEqualToString:@"error"]) { 96 | NSString *transaction = wssMessage[@"transaction"]; 97 | JanusTransaction *jt = transDict[transaction]; 98 | if (jt.error != nil) { 99 | jt.error(wssMessage); 100 | } 101 | [transDict removeObjectForKey:transaction]; 102 | } else if ([janus isEqualToString:@"ack"]) { 103 | NSLog(@"Just an ack"); 104 | } else { 105 | JanusHandle *handle = handleDict[wssMessage[@"sender"]]; 106 | if (handle == nil) { 107 | NSLog(@"missing handle?"); 108 | } else if ([janus isEqualToString:@"event"]) { 109 | NSDictionary *plugin = wssMessage[@"plugindata"][@"data"]; 110 | if ([plugin[@"videoroom"] isEqualToString:@"joined"]) { 111 | handle.onJoined(handle); 112 | } 113 | 114 | NSArray *arrays = plugin[@"publishers"]; 115 | if (arrays != nil && [arrays count] > 0) { 116 | for (NSDictionary *publisher in arrays) { 117 | NSNumber *feed = publisher[@"id"]; 118 | NSString *display = publisher[@"display"]; 119 | [self subscriberCreateHandle:feed display:display]; 120 | } 121 | } 122 | 123 | if (plugin[@"leaving"] != nil) { 124 | JanusHandle *jHandle = feedDict[plugin[@"leaving"]]; 125 | if (jHandle) { 126 | jHandle.onLeaving(jHandle); 127 | } 128 | } 129 | 130 | if (wssMessage[@"jsep"] != nil) { 131 | handle.onRemoteJsep(handle, wssMessage[@"jsep"]); 132 | } 133 | } else if ([janus isEqualToString:@"detached"]) { 134 | handle.onLeaving(handle); 135 | } 136 | } 137 | } 138 | 139 | 140 | - (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error { 141 | RTCLogError(@"WebSocket error: %@", error); 142 | self.state = kARDSignalingChannelStateError; 143 | } 144 | 145 | - (void)webSocket:(SRWebSocket *)webSocket 146 | didCloseWithCode:(NSInteger)code 147 | reason:(NSString *)reason 148 | wasClean:(BOOL)wasClean { 149 | RTCLog(@"WebSocket closed with code: %ld reason:%@ wasClean:%d", 150 | (long)code, reason, wasClean); 151 | NSParameterAssert(_state != kARDSignalingChannelStateError); 152 | self.state = kARDSignalingChannelStateClosed; 153 | [keepAliveTimer invalidate]; 154 | } 155 | 156 | #pragma mark - Private 157 | 158 | NSString *letters = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 159 | 160 | - (NSString *)randomStringWithLength: (int)len { 161 | NSMutableString *randomString = [NSMutableString stringWithCapacity: len]; 162 | for (int i = 0; i< len; i++) { 163 | uint32_t data = arc4random_uniform((uint32_t)[letters length]); 164 | [randomString appendFormat: @"%C", [letters characterAtIndex: data]]; 165 | } 166 | return randomString; 167 | } 168 | 169 | - (void)createSession { 170 | NSString *transaction = [self randomStringWithLength:12]; 171 | 172 | JanusTransaction *jt = [[JanusTransaction alloc] init]; 173 | jt.tid = transaction; 174 | jt.success = ^(NSDictionary *data) { 175 | sessionId = data[@"data"][@"id"]; 176 | [keepAliveTimer fire]; 177 | [self publisherCreateHandle]; 178 | }; 179 | jt.error = ^(NSDictionary *data) { 180 | }; 181 | transDict[transaction] = jt; 182 | 183 | NSDictionary *createMessage = @{ 184 | @"janus": @"create", 185 | @"transaction" : transaction, 186 | }; 187 | [_socket send:[self jsonMessage:createMessage]]; 188 | } 189 | 190 | - (void)publisherCreateHandle { 191 | NSString *transaction = [self randomStringWithLength:12]; 192 | JanusTransaction *jt = [[JanusTransaction alloc] init]; 193 | jt.tid = transaction; 194 | jt.success = ^(NSDictionary *data){ 195 | JanusHandle *handle = [[JanusHandle alloc] init]; 196 | handle.handleId = data[@"data"][@"id"]; 197 | handle.onJoined = ^(JanusHandle *handle) { 198 | [self.delegate onPublisherJoined: handle.handleId]; 199 | }; 200 | handle.onRemoteJsep = ^(JanusHandle *handle, NSDictionary *jsep) { 201 | [self.delegate onPublisherRemoteJsep:handle.handleId dict:jsep]; 202 | }; 203 | 204 | handleDict[handle.handleId] = handle; 205 | [self publisherJoinRoom: handle]; 206 | }; 207 | jt.error = ^(NSDictionary *data) { 208 | }; 209 | transDict[transaction] = jt; 210 | 211 | NSDictionary *attachMessage = @{ 212 | @"janus": @"attach", 213 | @"plugin": @"janus.plugin.videoroom", 214 | @"transaction": transaction, 215 | @"session_id": sessionId, 216 | }; 217 | [_socket send:[self jsonMessage:attachMessage]]; 218 | } 219 | 220 | - (void)createHandle: (NSString *) transValue dict:(NSDictionary *)publisher { 221 | } 222 | 223 | - (void)publisherJoinRoom : (JanusHandle *)handle { 224 | NSString *transaction = [self randomStringWithLength:12]; 225 | 226 | NSDictionary *body = @{ 227 | @"request": @"join", 228 | @"room": @1234, 229 | @"ptype": @"publisher", 230 | @"display": @"ios webrtc", 231 | }; 232 | NSDictionary *joinMessage = @{ 233 | @"janus": @"message", 234 | @"transaction": transaction, 235 | @"session_id":sessionId, 236 | @"handle_id":handle.handleId, 237 | @"body": body 238 | }; 239 | 240 | [_socket send:[self jsonMessage:joinMessage]]; 241 | } 242 | 243 | - (void)publisherCreateOffer:(NSNumber *)handleId sdp: (RTCSessionDescription *)sdp { 244 | NSString *transaction = [self randomStringWithLength:12]; 245 | 246 | NSDictionary *publish = @{ 247 | @"request": @"configure", 248 | @"audio": @YES, 249 | @"video": @YES, 250 | }; 251 | 252 | NSString *type = [RTCSessionDescription stringForType:sdp.type]; 253 | 254 | NSDictionary *jsep = @{ 255 | @"type": type, 256 | @"sdp": [sdp sdp], 257 | }; 258 | NSDictionary *offerMessage = @{ 259 | @"janus": @"message", 260 | @"body": publish, 261 | @"jsep": jsep, 262 | @"transaction": transaction, 263 | @"session_id": sessionId, 264 | @"handle_id": handleId, 265 | }; 266 | 267 | 268 | [_socket send:[self jsonMessage:offerMessage]]; 269 | } 270 | 271 | - (void)trickleCandidate:(NSNumber *) handleId candidate: (RTCIceCandidate *)candidate { 272 | NSDictionary *candidateDict = @{ 273 | @"candidate": candidate.sdp, 274 | @"sdpMid": candidate.sdpMid, 275 | @"sdpMLineIndex": [NSNumber numberWithInt: candidate.sdpMLineIndex], 276 | }; 277 | 278 | NSDictionary *trickleMessage = @{ 279 | @"janus": @"trickle", 280 | @"candidate": candidateDict, 281 | @"transaction": [self randomStringWithLength:12], 282 | @"session_id":sessionId, 283 | @"handle_id":handleId, 284 | }; 285 | 286 | NSLog(@"===trickle==%@", trickleMessage); 287 | [_socket send:[self jsonMessage:trickleMessage]]; 288 | } 289 | 290 | - (void)trickleCandidateComplete:(NSNumber *) handleId { 291 | NSDictionary *candidateDict = @{ 292 | @"completed": @YES, 293 | }; 294 | NSDictionary *trickleMessage = @{ 295 | @"janus": @"trickle", 296 | @"candidate": candidateDict, 297 | @"transaction": [self randomStringWithLength:12], 298 | @"session_id":sessionId, 299 | @"handle_id":handleId, 300 | }; 301 | 302 | [_socket send:[self jsonMessage:trickleMessage]]; 303 | } 304 | 305 | 306 | - (void)subscriberCreateHandle: (NSNumber *)feed display:(NSString *)display { 307 | NSString *transaction = [self randomStringWithLength:12]; 308 | JanusTransaction *jt = [[JanusTransaction alloc] init]; 309 | jt.tid = transaction; 310 | jt.success = ^(NSDictionary *data){ 311 | JanusHandle *handle = [[JanusHandle alloc] init]; 312 | handle.handleId = data[@"data"][@"id"]; 313 | handle.feedId = feed; 314 | handle.display = display; 315 | 316 | handle.onRemoteJsep = ^(JanusHandle *handle, NSDictionary *jsep) { 317 | [self.delegate subscriberHandleRemoteJsep:handle.handleId dict:jsep]; 318 | }; 319 | 320 | handle.onLeaving = ^(JanusHandle *handle) { 321 | [self subscriberOnLeaving:handle]; 322 | }; 323 | handleDict[handle.handleId] = handle; 324 | feedDict[handle.feedId] = handle; 325 | [self subscriberJoinRoom: handle]; 326 | }; 327 | jt.error = ^(NSDictionary *data) { 328 | }; 329 | transDict[transaction] = jt; 330 | 331 | NSDictionary *attachMessage = @{ 332 | @"janus": @"attach", 333 | @"plugin": @"janus.plugin.videoroom", 334 | @"transaction": transaction, 335 | @"session_id": sessionId, 336 | }; 337 | [_socket send:[self jsonMessage:attachMessage]]; 338 | } 339 | 340 | 341 | - (void)subscriberJoinRoom:(JanusHandle*)handle { 342 | 343 | NSString *transaction = [self randomStringWithLength:12]; 344 | transDict[transaction] = @"subscriber"; 345 | 346 | NSDictionary *body = @{ 347 | @"request": @"join", 348 | @"room": @1234, 349 | @"ptype": @"listener", 350 | @"feed": handle.feedId, 351 | }; 352 | 353 | NSDictionary *message = @{ 354 | @"janus": @"message", 355 | @"transaction": transaction, 356 | @"session_id": sessionId, 357 | @"handle_id": handle.handleId, 358 | @"body": body, 359 | }; 360 | 361 | [_socket send:[self jsonMessage:message]]; 362 | } 363 | 364 | - (void)subscriberCreateAnswer:(NSNumber *)handleId sdp: (RTCSessionDescription *)sdp { 365 | NSString *transaction = [self randomStringWithLength:12]; 366 | 367 | NSDictionary *body = @{ 368 | @"request": @"start", 369 | @"room": @1234, 370 | }; 371 | 372 | NSString *type = [RTCSessionDescription stringForType:sdp.type]; 373 | 374 | NSDictionary *jsep = @{ 375 | @"type": type, 376 | @"sdp": [sdp sdp], 377 | }; 378 | NSDictionary *offerMessage = @{ 379 | @"janus": @"message", 380 | @"body": body, 381 | @"jsep": jsep, 382 | @"transaction": transaction, 383 | @"session_id": sessionId, 384 | @"handle_id": handleId, 385 | }; 386 | 387 | [_socket send:[self jsonMessage:offerMessage]]; 388 | } 389 | 390 | - (void)subscriberOnLeaving:(JanusHandle *) handle { 391 | NSString *transaction = [self randomStringWithLength:12]; 392 | 393 | JanusTransaction *jt = [[JanusTransaction alloc] init]; 394 | jt.tid = transaction; 395 | jt.success = ^(NSDictionary *data) { 396 | [self.delegate onLeaving:handle.handleId]; 397 | [handleDict removeObjectForKey:handle.handleId]; 398 | [feedDict removeObjectForKey:handle.feedId]; 399 | }; 400 | jt.error = ^(NSDictionary *data) { 401 | }; 402 | transDict[transaction] = jt; 403 | 404 | NSDictionary *message = @{ 405 | @"janus": @"detach", 406 | @"transaction": transaction, 407 | @"session_id": sessionId, 408 | @"handle_id": handle.handleId, 409 | }; 410 | 411 | [_socket send:[self jsonMessage:message]]; 412 | } 413 | 414 | - (void)keepAlive { 415 | NSDictionary *dict = @{ 416 | @"janus": @"keepalive", 417 | @"session_id": sessionId, 418 | @"transaction": [self randomStringWithLength:12], 419 | }; 420 | [_socket send:[self jsonMessage:dict]]; 421 | } 422 | 423 | - (NSString *)jsonMessage:(NSDictionary *)dict { 424 | NSData *message = [NSJSONSerialization dataWithJSONObject:dict 425 | options:NSJSONWritingPrettyPrinted 426 | error:nil]; 427 | NSString *messageString = [[NSString alloc] initWithData:message encoding:NSUTF8StringEncoding]; 428 | return messageString; 429 | } 430 | 431 | 432 | @end 433 | 434 | 435 | -------------------------------------------------------------------------------- /janus-gateway-ios/Janus/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Janus 4 | // 5 | // Created by crossle on 3/1/2017. 6 | // Copyright © 2017 MineWave. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /janus-gateway-ios/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | platform :ios, '9.0' 3 | 4 | target 'janus-gateway-ios' do 5 | # Uncomment the next line if you're using Swift or would like to use dynamic frameworks 6 | # use_frameworks! 7 | 8 | # Pods for Janus 9 | # 10 | pod 'SocketRocket' 11 | 12 | end 13 | -------------------------------------------------------------------------------- /janus-gateway-ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SocketRocket (0.5.1) 3 | 4 | DEPENDENCIES: 5 | - SocketRocket 6 | 7 | SPEC CHECKSUMS: 8 | SocketRocket: d57c7159b83c3c6655745cd15302aa24b6bae531 9 | 10 | PODFILE CHECKSUM: 293b6930097d00872508e3a449c2f72f9e7f3b4d 11 | 12 | COCOAPODS: 1.3.1 13 | -------------------------------------------------------------------------------- /janus-gateway-ios/janus-gateway-ios.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1B68AE20884D179BD06D1F20 /* libPods-janus-gateway-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DBB9CB144A52379C61B832DF /* libPods-janus-gateway-ios.a */; }; 11 | 27078DA41E1BC8D0002199B5 /* WebSocketChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 27078DA21E1BC8D0002199B5 /* WebSocketChannel.m */; }; 12 | 27078DA81E1C0D0C002199B5 /* RTCSessionDescription+JSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 27078DA71E1C0D0C002199B5 /* RTCSessionDescription+JSON.m */; }; 13 | 27078DB91E1E10DB002199B5 /* JanusHandle.m in Sources */ = {isa = PBXBuildFile; fileRef = 27078DB81E1E10DB002199B5 /* JanusHandle.m */; }; 14 | 27078DBF1E1E1932002199B5 /* JanusTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 27078DBE1E1E1932002199B5 /* JanusTransaction.m */; }; 15 | 27078DC21E1E3E3E002199B5 /* JanusConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 27078DC11E1E3E3E002199B5 /* JanusConnection.m */; }; 16 | 2793874F1E9E93FA001060A2 /* WebRTC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 279F89AA1E1BBFD300B651E7 /* WebRTC.framework */; }; 17 | 279387501E9E93FA001060A2 /* WebRTC.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 279F89AA1E1BBFD300B651E7 /* WebRTC.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 18 | 279F89951E1BBECE00B651E7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 279F89941E1BBECE00B651E7 /* main.m */; }; 19 | 279F89981E1BBECE00B651E7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 279F89971E1BBECE00B651E7 /* AppDelegate.m */; }; 20 | 279F899B1E1BBECE00B651E7 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 279F899A1E1BBECE00B651E7 /* ViewController.m */; }; 21 | 279F899E1E1BBECE00B651E7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 279F899C1E1BBECE00B651E7 /* Main.storyboard */; }; 22 | 279F89A01E1BBECE00B651E7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 279F899F1E1BBECE00B651E7 /* Assets.xcassets */; }; 23 | 279F89A31E1BBECE00B651E7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 279F89A11E1BBECE00B651E7 /* LaunchScreen.storyboard */; }; 24 | /* End PBXBuildFile section */ 25 | 26 | /* Begin PBXCopyFilesBuildPhase section */ 27 | 279387511E9E93FA001060A2 /* Embed Frameworks */ = { 28 | isa = PBXCopyFilesBuildPhase; 29 | buildActionMask = 2147483647; 30 | dstPath = ""; 31 | dstSubfolderSpec = 10; 32 | files = ( 33 | 279387501E9E93FA001060A2 /* WebRTC.framework in Embed Frameworks */, 34 | ); 35 | name = "Embed Frameworks"; 36 | runOnlyForDeploymentPostprocessing = 0; 37 | }; 38 | /* End PBXCopyFilesBuildPhase section */ 39 | 40 | /* Begin PBXFileReference section */ 41 | 0113F09BBDF970E793971334 /* Pods-Janus.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Janus.release.xcconfig"; path = "Pods/Target Support Files/Pods-Janus/Pods-Janus.release.xcconfig"; sourceTree = ""; }; 42 | 0F29BBA87E5964CEE3CB5EC7 /* Pods-janus-gateway-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-janus-gateway-ios.debug.xcconfig"; path = "Pods/Target Support Files/Pods-janus-gateway-ios/Pods-janus-gateway-ios.debug.xcconfig"; sourceTree = ""; }; 43 | 27078DA21E1BC8D0002199B5 /* WebSocketChannel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebSocketChannel.m; sourceTree = ""; }; 44 | 27078DA31E1BC8D0002199B5 /* WebSocketChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSocketChannel.h; sourceTree = ""; }; 45 | 27078DA61E1C0D0C002199B5 /* RTCSessionDescription+JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RTCSessionDescription+JSON.h"; sourceTree = ""; }; 46 | 27078DA71E1C0D0C002199B5 /* RTCSessionDescription+JSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RTCSessionDescription+JSON.m"; sourceTree = ""; }; 47 | 27078DA91E1D04ED002199B5 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 48 | 27078DAB1E1D1BA2002199B5 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 49 | 27078DAD1E1D1BAF002199B5 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; 50 | 27078DAF1E1D1BBC002199B5 /* libicucore.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libicucore.tbd; path = usr/lib/libicucore.tbd; sourceTree = SDKROOT; }; 51 | 27078DB11E1D4B84002199B5 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; }; 52 | 27078DB31E1D4B8B002199B5 /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; 53 | 27078DB51E1D4B95002199B5 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; 54 | 27078DB71E1E10C2002199B5 /* JanusHandle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JanusHandle.h; sourceTree = ""; }; 55 | 27078DB81E1E10DB002199B5 /* JanusHandle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JanusHandle.m; sourceTree = ""; }; 56 | 27078DBD1E1E1932002199B5 /* JanusTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JanusTransaction.h; sourceTree = ""; }; 57 | 27078DBE1E1E1932002199B5 /* JanusTransaction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JanusTransaction.m; sourceTree = ""; }; 58 | 27078DC01E1E3E2C002199B5 /* JanusConnection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JanusConnection.h; sourceTree = ""; }; 59 | 27078DC11E1E3E3E002199B5 /* JanusConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JanusConnection.m; sourceTree = ""; }; 60 | 279F89901E1BBECE00B651E7 /* janus-gateway-ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "janus-gateway-ios.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 61 | 279F89941E1BBECE00B651E7 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 62 | 279F89961E1BBECE00B651E7 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 63 | 279F89971E1BBECE00B651E7 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 64 | 279F89991E1BBECE00B651E7 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 65 | 279F899A1E1BBECE00B651E7 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 66 | 279F899D1E1BBECE00B651E7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 67 | 279F899F1E1BBECE00B651E7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 68 | 279F89A21E1BBECE00B651E7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 69 | 279F89A41E1BBECE00B651E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 70 | 279F89AA1E1BBFD300B651E7 /* WebRTC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebRTC.framework; sourceTree = ""; }; 71 | 639F7C4E4E0B1E1FBC672BD9 /* Pods-Janus.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Janus.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Janus/Pods-Janus.debug.xcconfig"; sourceTree = ""; }; 72 | B0EDAAEFD9A7DD4C14599CFA /* libPods-Janus.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Janus.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 73 | D10966B05AAC6A5B5314B7E0 /* Pods-janus-gateway-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-janus-gateway-ios.release.xcconfig"; path = "Pods/Target Support Files/Pods-janus-gateway-ios/Pods-janus-gateway-ios.release.xcconfig"; sourceTree = ""; }; 74 | DBB9CB144A52379C61B832DF /* libPods-janus-gateway-ios.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-janus-gateway-ios.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 75 | /* End PBXFileReference section */ 76 | 77 | /* Begin PBXFrameworksBuildPhase section */ 78 | 279F898D1E1BBECE00B651E7 /* Frameworks */ = { 79 | isa = PBXFrameworksBuildPhase; 80 | buildActionMask = 2147483647; 81 | files = ( 82 | 1B68AE20884D179BD06D1F20 /* libPods-janus-gateway-ios.a in Frameworks */, 83 | 2793874F1E9E93FA001060A2 /* WebRTC.framework in Frameworks */, 84 | ); 85 | runOnlyForDeploymentPostprocessing = 0; 86 | }; 87 | /* End PBXFrameworksBuildPhase section */ 88 | 89 | /* Begin PBXGroup section */ 90 | 05AB83D58B3374CB2DF2921C /* Pods */ = { 91 | isa = PBXGroup; 92 | children = ( 93 | 639F7C4E4E0B1E1FBC672BD9 /* Pods-Janus.debug.xcconfig */, 94 | 0113F09BBDF970E793971334 /* Pods-Janus.release.xcconfig */, 95 | 0F29BBA87E5964CEE3CB5EC7 /* Pods-janus-gateway-ios.debug.xcconfig */, 96 | D10966B05AAC6A5B5314B7E0 /* Pods-janus-gateway-ios.release.xcconfig */, 97 | ); 98 | name = Pods; 99 | sourceTree = ""; 100 | }; 101 | 279F89871E1BBECE00B651E7 = { 102 | isa = PBXGroup; 103 | children = ( 104 | 279F89921E1BBECE00B651E7 /* Janus */, 105 | 279F89911E1BBECE00B651E7 /* Products */, 106 | 05AB83D58B3374CB2DF2921C /* Pods */, 107 | 62199768F2ED0399B2F8C11D /* Frameworks */, 108 | ); 109 | sourceTree = ""; 110 | }; 111 | 279F89911E1BBECE00B651E7 /* Products */ = { 112 | isa = PBXGroup; 113 | children = ( 114 | 279F89901E1BBECE00B651E7 /* janus-gateway-ios.app */, 115 | ); 116 | name = Products; 117 | sourceTree = ""; 118 | }; 119 | 279F89921E1BBECE00B651E7 /* Janus */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | 27078DC01E1E3E2C002199B5 /* JanusConnection.h */, 123 | 27078DC11E1E3E3E002199B5 /* JanusConnection.m */, 124 | 27078DB71E1E10C2002199B5 /* JanusHandle.h */, 125 | 27078DB81E1E10DB002199B5 /* JanusHandle.m */, 126 | 27078DBD1E1E1932002199B5 /* JanusTransaction.h */, 127 | 27078DBE1E1E1932002199B5 /* JanusTransaction.m */, 128 | 27078DA61E1C0D0C002199B5 /* RTCSessionDescription+JSON.h */, 129 | 27078DA71E1C0D0C002199B5 /* RTCSessionDescription+JSON.m */, 130 | 27078DA21E1BC8D0002199B5 /* WebSocketChannel.m */, 131 | 27078DA31E1BC8D0002199B5 /* WebSocketChannel.h */, 132 | 279F89961E1BBECE00B651E7 /* AppDelegate.h */, 133 | 279F89971E1BBECE00B651E7 /* AppDelegate.m */, 134 | 279F89991E1BBECE00B651E7 /* ViewController.h */, 135 | 279F899A1E1BBECE00B651E7 /* ViewController.m */, 136 | 279F899C1E1BBECE00B651E7 /* Main.storyboard */, 137 | 279F899F1E1BBECE00B651E7 /* Assets.xcassets */, 138 | 279F89A11E1BBECE00B651E7 /* LaunchScreen.storyboard */, 139 | 279F89A41E1BBECE00B651E7 /* Info.plist */, 140 | 279F89AA1E1BBFD300B651E7 /* WebRTC.framework */, 141 | 279F89931E1BBECE00B651E7 /* Supporting Files */, 142 | ); 143 | path = Janus; 144 | sourceTree = ""; 145 | }; 146 | 279F89931E1BBECE00B651E7 /* Supporting Files */ = { 147 | isa = PBXGroup; 148 | children = ( 149 | 279F89941E1BBECE00B651E7 /* main.m */, 150 | ); 151 | name = "Supporting Files"; 152 | sourceTree = ""; 153 | }; 154 | 62199768F2ED0399B2F8C11D /* Frameworks */ = { 155 | isa = PBXGroup; 156 | children = ( 157 | 27078DB51E1D4B95002199B5 /* libc++.tbd */, 158 | 27078DB31E1D4B8B002199B5 /* VideoToolbox.framework */, 159 | 27078DB11E1D4B84002199B5 /* GLKit.framework */, 160 | 27078DAF1E1D1BBC002199B5 /* libicucore.tbd */, 161 | 27078DAD1E1D1BAF002199B5 /* CFNetwork.framework */, 162 | 27078DAB1E1D1BA2002199B5 /* Security.framework */, 163 | 27078DA91E1D04ED002199B5 /* OpenGLES.framework */, 164 | B0EDAAEFD9A7DD4C14599CFA /* libPods-Janus.a */, 165 | DBB9CB144A52379C61B832DF /* libPods-janus-gateway-ios.a */, 166 | ); 167 | name = Frameworks; 168 | sourceTree = ""; 169 | }; 170 | /* End PBXGroup section */ 171 | 172 | /* Begin PBXNativeTarget section */ 173 | 279F898F1E1BBECE00B651E7 /* janus-gateway-ios */ = { 174 | isa = PBXNativeTarget; 175 | buildConfigurationList = 279F89A71E1BBECE00B651E7 /* Build configuration list for PBXNativeTarget "janus-gateway-ios" */; 176 | buildPhases = ( 177 | C9C675CE91F18F5109254B28 /* [CP] Check Pods Manifest.lock */, 178 | 279F898C1E1BBECE00B651E7 /* Sources */, 179 | 279F898D1E1BBECE00B651E7 /* Frameworks */, 180 | 279F898E1E1BBECE00B651E7 /* Resources */, 181 | 92B5C3D9756BB2683E2A3C75 /* [CP] Embed Pods Frameworks */, 182 | 2E82071DF39780DFA77162DC /* [CP] Copy Pods Resources */, 183 | 279387511E9E93FA001060A2 /* Embed Frameworks */, 184 | ); 185 | buildRules = ( 186 | ); 187 | dependencies = ( 188 | ); 189 | name = "janus-gateway-ios"; 190 | productName = Janus; 191 | productReference = 279F89901E1BBECE00B651E7 /* janus-gateway-ios.app */; 192 | productType = "com.apple.product-type.application"; 193 | }; 194 | /* End PBXNativeTarget section */ 195 | 196 | /* Begin PBXProject section */ 197 | 279F89881E1BBECE00B651E7 /* Project object */ = { 198 | isa = PBXProject; 199 | attributes = { 200 | LastUpgradeCheck = 0820; 201 | ORGANIZATIONNAME = MineWave; 202 | TargetAttributes = { 203 | 279F898F1E1BBECE00B651E7 = { 204 | CreatedOnToolsVersion = 8.2.1; 205 | ProvisioningStyle = Automatic; 206 | SystemCapabilities = { 207 | com.apple.BackgroundModes = { 208 | enabled = 1; 209 | }; 210 | }; 211 | }; 212 | }; 213 | }; 214 | buildConfigurationList = 279F898B1E1BBECE00B651E7 /* Build configuration list for PBXProject "janus-gateway-ios" */; 215 | compatibilityVersion = "Xcode 3.2"; 216 | developmentRegion = English; 217 | hasScannedForEncodings = 0; 218 | knownRegions = ( 219 | en, 220 | Base, 221 | ); 222 | mainGroup = 279F89871E1BBECE00B651E7; 223 | productRefGroup = 279F89911E1BBECE00B651E7 /* Products */; 224 | projectDirPath = ""; 225 | projectRoot = ""; 226 | targets = ( 227 | 279F898F1E1BBECE00B651E7 /* janus-gateway-ios */, 228 | ); 229 | }; 230 | /* End PBXProject section */ 231 | 232 | /* Begin PBXResourcesBuildPhase section */ 233 | 279F898E1E1BBECE00B651E7 /* Resources */ = { 234 | isa = PBXResourcesBuildPhase; 235 | buildActionMask = 2147483647; 236 | files = ( 237 | 279F89A31E1BBECE00B651E7 /* LaunchScreen.storyboard in Resources */, 238 | 279F89A01E1BBECE00B651E7 /* Assets.xcassets in Resources */, 239 | 279F899E1E1BBECE00B651E7 /* Main.storyboard in Resources */, 240 | ); 241 | runOnlyForDeploymentPostprocessing = 0; 242 | }; 243 | /* End PBXResourcesBuildPhase section */ 244 | 245 | /* Begin PBXShellScriptBuildPhase section */ 246 | 2E82071DF39780DFA77162DC /* [CP] Copy Pods Resources */ = { 247 | isa = PBXShellScriptBuildPhase; 248 | buildActionMask = 2147483647; 249 | files = ( 250 | ); 251 | inputPaths = ( 252 | ); 253 | name = "[CP] Copy Pods Resources"; 254 | outputPaths = ( 255 | ); 256 | runOnlyForDeploymentPostprocessing = 0; 257 | shellPath = /bin/sh; 258 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-janus-gateway-ios/Pods-janus-gateway-ios-resources.sh\"\n"; 259 | showEnvVarsInLog = 0; 260 | }; 261 | 92B5C3D9756BB2683E2A3C75 /* [CP] Embed Pods Frameworks */ = { 262 | isa = PBXShellScriptBuildPhase; 263 | buildActionMask = 2147483647; 264 | files = ( 265 | ); 266 | inputPaths = ( 267 | ); 268 | name = "[CP] Embed Pods Frameworks"; 269 | outputPaths = ( 270 | ); 271 | runOnlyForDeploymentPostprocessing = 0; 272 | shellPath = /bin/sh; 273 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-janus-gateway-ios/Pods-janus-gateway-ios-frameworks.sh\"\n"; 274 | showEnvVarsInLog = 0; 275 | }; 276 | C9C675CE91F18F5109254B28 /* [CP] Check Pods Manifest.lock */ = { 277 | isa = PBXShellScriptBuildPhase; 278 | buildActionMask = 2147483647; 279 | files = ( 280 | ); 281 | inputPaths = ( 282 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 283 | "${PODS_ROOT}/Manifest.lock", 284 | ); 285 | name = "[CP] Check Pods Manifest.lock"; 286 | outputPaths = ( 287 | "$(DERIVED_FILE_DIR)/Pods-janus-gateway-ios-checkManifestLockResult.txt", 288 | ); 289 | runOnlyForDeploymentPostprocessing = 0; 290 | shellPath = /bin/sh; 291 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 292 | showEnvVarsInLog = 0; 293 | }; 294 | /* End PBXShellScriptBuildPhase section */ 295 | 296 | /* Begin PBXSourcesBuildPhase section */ 297 | 279F898C1E1BBECE00B651E7 /* Sources */ = { 298 | isa = PBXSourcesBuildPhase; 299 | buildActionMask = 2147483647; 300 | files = ( 301 | 279F899B1E1BBECE00B651E7 /* ViewController.m in Sources */, 302 | 27078DBF1E1E1932002199B5 /* JanusTransaction.m in Sources */, 303 | 27078DA81E1C0D0C002199B5 /* RTCSessionDescription+JSON.m in Sources */, 304 | 27078DA41E1BC8D0002199B5 /* WebSocketChannel.m in Sources */, 305 | 27078DB91E1E10DB002199B5 /* JanusHandle.m in Sources */, 306 | 27078DC21E1E3E3E002199B5 /* JanusConnection.m in Sources */, 307 | 279F89981E1BBECE00B651E7 /* AppDelegate.m in Sources */, 308 | 279F89951E1BBECE00B651E7 /* main.m in Sources */, 309 | ); 310 | runOnlyForDeploymentPostprocessing = 0; 311 | }; 312 | /* End PBXSourcesBuildPhase section */ 313 | 314 | /* Begin PBXVariantGroup section */ 315 | 279F899C1E1BBECE00B651E7 /* Main.storyboard */ = { 316 | isa = PBXVariantGroup; 317 | children = ( 318 | 279F899D1E1BBECE00B651E7 /* Base */, 319 | ); 320 | name = Main.storyboard; 321 | sourceTree = ""; 322 | }; 323 | 279F89A11E1BBECE00B651E7 /* LaunchScreen.storyboard */ = { 324 | isa = PBXVariantGroup; 325 | children = ( 326 | 279F89A21E1BBECE00B651E7 /* Base */, 327 | ); 328 | name = LaunchScreen.storyboard; 329 | sourceTree = ""; 330 | }; 331 | /* End PBXVariantGroup section */ 332 | 333 | /* Begin XCBuildConfiguration section */ 334 | 279F89A51E1BBECE00B651E7 /* Debug */ = { 335 | isa = XCBuildConfiguration; 336 | buildSettings = { 337 | ALWAYS_SEARCH_USER_PATHS = NO; 338 | CLANG_ANALYZER_NONNULL = YES; 339 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 340 | CLANG_CXX_LIBRARY = "libc++"; 341 | CLANG_ENABLE_MODULES = YES; 342 | CLANG_ENABLE_OBJC_ARC = YES; 343 | CLANG_WARN_BOOL_CONVERSION = YES; 344 | CLANG_WARN_CONSTANT_CONVERSION = YES; 345 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 346 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 347 | CLANG_WARN_EMPTY_BODY = YES; 348 | CLANG_WARN_ENUM_CONVERSION = YES; 349 | CLANG_WARN_INFINITE_RECURSION = YES; 350 | CLANG_WARN_INT_CONVERSION = YES; 351 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 352 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 353 | CLANG_WARN_UNREACHABLE_CODE = YES; 354 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 355 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 356 | COPY_PHASE_STRIP = NO; 357 | DEBUG_INFORMATION_FORMAT = dwarf; 358 | ENABLE_STRICT_OBJC_MSGSEND = YES; 359 | ENABLE_TESTABILITY = YES; 360 | GCC_C_LANGUAGE_STANDARD = gnu99; 361 | GCC_DYNAMIC_NO_PIC = NO; 362 | GCC_NO_COMMON_BLOCKS = YES; 363 | GCC_OPTIMIZATION_LEVEL = 0; 364 | GCC_PREPROCESSOR_DEFINITIONS = ( 365 | "DEBUG=1", 366 | "$(inherited)", 367 | ); 368 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 369 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 370 | GCC_WARN_UNDECLARED_SELECTOR = YES; 371 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 372 | GCC_WARN_UNUSED_FUNCTION = YES; 373 | GCC_WARN_UNUSED_VARIABLE = YES; 374 | IPHONEOS_DEPLOYMENT_TARGET = 10.2; 375 | MTL_ENABLE_DEBUG_INFO = YES; 376 | ONLY_ACTIVE_ARCH = YES; 377 | SDKROOT = iphoneos; 378 | TARGETED_DEVICE_FAMILY = "1,2"; 379 | }; 380 | name = Debug; 381 | }; 382 | 279F89A61E1BBECE00B651E7 /* Release */ = { 383 | isa = XCBuildConfiguration; 384 | buildSettings = { 385 | ALWAYS_SEARCH_USER_PATHS = NO; 386 | CLANG_ANALYZER_NONNULL = YES; 387 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 388 | CLANG_CXX_LIBRARY = "libc++"; 389 | CLANG_ENABLE_MODULES = YES; 390 | CLANG_ENABLE_OBJC_ARC = YES; 391 | CLANG_WARN_BOOL_CONVERSION = YES; 392 | CLANG_WARN_CONSTANT_CONVERSION = YES; 393 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 394 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 395 | CLANG_WARN_EMPTY_BODY = YES; 396 | CLANG_WARN_ENUM_CONVERSION = YES; 397 | CLANG_WARN_INFINITE_RECURSION = YES; 398 | CLANG_WARN_INT_CONVERSION = YES; 399 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 400 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 401 | CLANG_WARN_UNREACHABLE_CODE = YES; 402 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 403 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 404 | COPY_PHASE_STRIP = NO; 405 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 406 | ENABLE_NS_ASSERTIONS = NO; 407 | ENABLE_STRICT_OBJC_MSGSEND = YES; 408 | GCC_C_LANGUAGE_STANDARD = gnu99; 409 | GCC_NO_COMMON_BLOCKS = YES; 410 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 411 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 412 | GCC_WARN_UNDECLARED_SELECTOR = YES; 413 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 414 | GCC_WARN_UNUSED_FUNCTION = YES; 415 | GCC_WARN_UNUSED_VARIABLE = YES; 416 | IPHONEOS_DEPLOYMENT_TARGET = 10.2; 417 | MTL_ENABLE_DEBUG_INFO = NO; 418 | SDKROOT = iphoneos; 419 | TARGETED_DEVICE_FAMILY = "1,2"; 420 | VALIDATE_PRODUCT = YES; 421 | }; 422 | name = Release; 423 | }; 424 | 279F89A81E1BBECE00B651E7 /* Debug */ = { 425 | isa = XCBuildConfiguration; 426 | baseConfigurationReference = 0F29BBA87E5964CEE3CB5EC7 /* Pods-janus-gateway-ios.debug.xcconfig */; 427 | buildSettings = { 428 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 429 | DEVELOPMENT_TEAM = ""; 430 | ENABLE_BITCODE = NO; 431 | FRAMEWORK_SEARCH_PATHS = ( 432 | "$(inherited)", 433 | "$(PROJECT_DIR)/Janus", 434 | ); 435 | INFOPLIST_FILE = Janus/Info.plist; 436 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 437 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 438 | ONLY_ACTIVE_ARCH = YES; 439 | PRODUCT_BUNDLE_IDENTIFIER = in.minewave.webrtc.Janus; 440 | PRODUCT_NAME = "$(TARGET_NAME)"; 441 | }; 442 | name = Debug; 443 | }; 444 | 279F89A91E1BBECE00B651E7 /* Release */ = { 445 | isa = XCBuildConfiguration; 446 | baseConfigurationReference = D10966B05AAC6A5B5314B7E0 /* Pods-janus-gateway-ios.release.xcconfig */; 447 | buildSettings = { 448 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 449 | DEVELOPMENT_TEAM = ""; 450 | ENABLE_BITCODE = NO; 451 | FRAMEWORK_SEARCH_PATHS = ( 452 | "$(inherited)", 453 | "$(PROJECT_DIR)/Janus", 454 | ); 455 | INFOPLIST_FILE = Janus/Info.plist; 456 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 457 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 458 | PRODUCT_BUNDLE_IDENTIFIER = in.minewave.webrtc.Janus; 459 | PRODUCT_NAME = "$(TARGET_NAME)"; 460 | }; 461 | name = Release; 462 | }; 463 | /* End XCBuildConfiguration section */ 464 | 465 | /* Begin XCConfigurationList section */ 466 | 279F898B1E1BBECE00B651E7 /* Build configuration list for PBXProject "janus-gateway-ios" */ = { 467 | isa = XCConfigurationList; 468 | buildConfigurations = ( 469 | 279F89A51E1BBECE00B651E7 /* Debug */, 470 | 279F89A61E1BBECE00B651E7 /* Release */, 471 | ); 472 | defaultConfigurationIsVisible = 0; 473 | defaultConfigurationName = Release; 474 | }; 475 | 279F89A71E1BBECE00B651E7 /* Build configuration list for PBXNativeTarget "janus-gateway-ios" */ = { 476 | isa = XCConfigurationList; 477 | buildConfigurations = ( 478 | 279F89A81E1BBECE00B651E7 /* Debug */, 479 | 279F89A91E1BBECE00B651E7 /* Release */, 480 | ); 481 | defaultConfigurationIsVisible = 0; 482 | defaultConfigurationName = Release; 483 | }; 484 | /* End XCConfigurationList section */ 485 | }; 486 | rootObject = 279F89881E1BBECE00B651E7 /* Project object */; 487 | } 488 | --------------------------------------------------------------------------------