├── .github ├── ISSUE_TEMPLATE │ └── bug_report.md └── workflows │ └── metrics.yml ├── .gitignore ├── .travis.yml ├── Archiving ├── Archiving.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Archiving.xcscheme ├── Archiving.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Archiving │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── LaunchScreen.xib │ │ └── Main.storyboard │ ├── Config.h │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Info.plist │ ├── ViewController.h │ ├── ViewController.m │ ├── archiving_on-10.png │ └── main.m ├── Podfile └── README.md ├── Audio-Levels ├── Audio-Levels.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Audio-Levels.xcscheme ├── Audio-Levels.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Audio-Levels │ ├── Audio-Levels-Info.plist │ ├── Audio-Levels-Prefix.pch │ ├── Base.lproj │ │ └── Main.storyboard │ ├── Default-568h@2x.png │ ├── Default.png │ ├── Default@2x.png │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── LaunchImage.launchimage │ │ │ └── Contents.json │ ├── OpenTokLogoWhite.png │ ├── OpenTokLogoWhite@2x.png │ ├── TBAppDelegate.h │ ├── TBAppDelegate.m │ ├── TBAudioLevelMeter.h │ ├── TBAudioLevelMeter.m │ ├── TBViewController.h │ ├── TBViewController.m │ ├── TBVoiceViewCell.h │ ├── TBVoiceViewCell.m │ ├── TBVoiceViewCell.xib │ ├── archiving-off-15@2x.png │ ├── archiving_on-10.png │ ├── archiving_on-10@2x.png │ ├── archiving_on-5.png │ ├── archiving_on-5@2x.png │ ├── archiving_pulse-15.png │ ├── circle.png │ ├── circle@2x.png │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── main.m │ ├── microphoneActive.png │ ├── microphoneActive@2x.png │ ├── microphoneMuted.png │ ├── microphoneMuted@2x.png │ ├── silhouette.png │ ├── silhouette@2x.png │ ├── speakerActive.png │ ├── speakerActive@2x.png │ ├── speakerMuted.png │ └── speakerMuted@2x.png ├── Podfile └── README.md ├── Basic-Video-Chat-XCFramework ├── Basic-Video-Chat.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Basic-Video-Chat.xcscheme ├── Basic-Video-Chat.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Basic-Video-Chat │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── Main_iPad.storyboard │ │ └── Main_iPhone.storyboard │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Info.plist │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── Podfile └── README.md ├── Basic-Video-Chat ├── Basic-Video-Chat.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Basic-Video-Chat.xcscheme ├── Basic-Video-Chat.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Basic-Video-Chat │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── Main_iPad.storyboard │ │ └── Main_iPhone.storyboard │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Info.plist │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── Podfile └── README.md ├── Broadcast-Ext ├── Broadcast-Ext.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Broadcast-Ext.xcscheme ├── Broadcast-Ext.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Broadcast-Ext │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── Main_Broadcast_iPhone.storyboard │ │ ├── Main_iPad.storyboard │ │ └── Main_iPhone.storyboard │ ├── Broadcast-Ext.entitlements │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── LaunchImage.launchimage │ │ │ └── Contents.json │ ├── Info.plist │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── OpenTok Live │ ├── Info.plist │ ├── OTBroadcastExtAudioDevice.h │ ├── OTBroadcastExtAudioDevice.m │ ├── OTBroadcastExtHelper.h │ ├── OTBroadcastExtHelper.m │ ├── OpenTokLive.entitlements │ ├── SampleHandler.h │ └── SampleHandler.m ├── OpenTok LiveSetupUI │ ├── BroadcastSetupViewController.h │ ├── BroadcastSetupViewController.m │ └── Info.plist ├── Podfile └── README.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Camera-Controls ├── Camera-Controls.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Basic-Video-Chat.xcscheme ├── Camera-Controls.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Camera-Controls │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── Main_iPad.storyboard │ │ └── Main_iPhone.storyboard │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Info.plist │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── Podfile └── README.md ├── Custom-Audio-Driver ├── Custom-Audio-Driver.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Custom-Audio-Driver.xcscheme ├── Custom-Audio-Driver.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── External-Audio-Device │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── Main_iPad.storyboard │ │ └── Main_iPhone.storyboard │ ├── Custom-Audio-Driver-Info.plist │ ├── Custom-Audio-Driver-Prefix.pch │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── OTDefaultAudioDevice.h │ ├── OTDefaultAudioDevice.mm │ ├── OTDefaultAudioDeviceWithVolumeControl.h │ ├── OTDefaultAudioDeviceWithVolumeControl.m │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── Podfile └── README.md ├── Custom-Video-Driver ├── Custom-Video-Driver.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Custom-Video-Driver.xcscheme ├── Custom-Video-Driver.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Lets-Build-OTPublisher │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── Main_iPad.storyboard │ │ └── Main_iPhone.storyboard │ ├── Custom-Video-Driver-Info.plist │ ├── Custom-Video-Driver-Prefix.pch │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Contents.json │ │ └── LaunchImage.launchimage │ │ │ └── Contents.json │ ├── Multi-Cam-Capturer │ │ ├── TBCaptureMultiCamFactory.h │ │ ├── TBCaptureMultiCamFactory.m │ │ ├── TBExampleMultiCamCapture.h │ │ └── TBExampleMultiCamCapture.m │ ├── Single-Cam-Capturer │ │ ├── TBExampleVideoCapture.h │ │ └── TBExampleVideoCapture.m │ ├── TBExampleVideoRender.h │ ├── TBExampleVideoRender.m │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── Podfile └── README.md ├── FrameMetadata ├── FrameMetadata.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── FrameMetadata.xcscheme ├── FrameMetadata.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── FrameMetadata │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── Main_iPad.storyboard │ │ └── Main_iPhone.storyboard │ ├── FrameMetadata.pch │ ├── FrameMetadata.plist │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── LaunchImage.launchimage │ │ │ └── Contents.json │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── Podfile └── README.md ├── LICENSE ├── Live-Photo-Capture ├── Live-Photo-Capture.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Live-Photo-Capture.xcscheme ├── Live-Photo-Capture.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Live-Photo-Capture │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── Main_iPad.storyboard │ │ └── Main_iPhone.storyboard │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Live-Photo-Capture-Info.plist │ ├── Live-Photo-Capture-Prefix.pch │ ├── TBExamplePhotoVideoCapture.h │ ├── TBExamplePhotoVideoCapture.m │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── Podfile └── README.md ├── Media-Transformers ├── CHANGELOG.md ├── Media-Transformers.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Basic-Video-Chat.xcscheme ├── Media-Transformers.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Media-Transformers │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── Main_iPad.storyboard │ │ └── Main_iPhone.storyboard │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Info.plist │ ├── ViewController.h │ ├── ViewController.m │ ├── Vonage_Logo.png │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── Podfile └── README.md ├── OpenTokSDKVersion.rb ├── Overlay-Graphics ├── Overlay-Graphics.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Overlay-Graphics.xcscheme ├── Overlay-Graphics.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Overlay-Graphics │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── Main_iPad.storyboard │ │ └── Main_iPhone.storyboard │ ├── Headset.png │ ├── Headset@2x.png │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── LaunchImage.launchimage │ │ │ └── Contents.json │ ├── Overlay-Graphics-Info.plist │ ├── Overlay-Graphics-Prefix.pch │ ├── TBAudioLevelMeter.h │ ├── TBAudioLevelMeter.m │ ├── TBExampleOverlayButton.h │ ├── TBExampleOverlayButton.m │ ├── TBExampleOverlayView.h │ ├── TBExampleOverlayView.m │ ├── TBExampleUnderlayView.h │ ├── TBExampleUnderlayView.m │ ├── TBExampleVideoCapture.h │ ├── TBExampleVideoCapture.m │ ├── TBExampleVideoView.h │ ├── TBExampleVideoView.m │ ├── UIBezierPath+Additions.h │ ├── ViewController.h │ ├── ViewController.m │ ├── archiving_off-Small.png │ ├── archiving_off-Small@2x.png │ ├── archiving_on-10.png │ ├── archiving_on-10@2x.png │ ├── archiving_pulse-Small.png │ ├── archiving_pulse-Small@2x.png │ ├── audioOnlyActive.png │ ├── audioOnlyInactive.png │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── highCongestion.png │ ├── libyuv.h │ ├── libyuv │ │ ├── basic_types.h │ │ ├── compare.h │ │ ├── convert.h │ │ ├── convert_argb.h │ │ ├── convert_from.h │ │ ├── convert_from_argb.h │ │ ├── cpu_id.h │ │ ├── format_conversion.h │ │ ├── mjpeg_decoder.h │ │ ├── planar_functions.h │ │ ├── rotate.h │ │ ├── rotate_argb.h │ │ ├── row.h │ │ ├── scale.h │ │ ├── scale_argb.h │ │ ├── scale_row.h │ │ ├── version.h │ │ └── video_common.h │ ├── main.m │ ├── midCongestion.png │ ├── mutePublisher.png │ ├── muteSubscriber.png │ ├── silhouette.png │ ├── swapCamera.png │ ├── unmutePublisher.png │ └── unmuteSubscriber.png ├── Podfile └── README.md ├── README.md ├── Ringtones ├── Podfile ├── README.md ├── Ringtones.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Ringtones.xcscheme ├── Ringtones.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── Ringtones │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ ├── OTAudioDeviceRingtone.h │ ├── OTAudioDeviceRingtone.m │ ├── ViewController.h │ ├── ViewController.m │ ├── bananaphone.mp3 │ └── main.m ├── Screen-Sharing ├── Podfile ├── README.md ├── Screen-Sharing.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Screen-Sharing.xcscheme ├── Screen-Sharing.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── Screen-Sharing │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ ├── Main_iPad.storyboard │ └── Main_iPhone.storyboard │ ├── Images.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── LaunchImage.launchimage │ │ └── Contents.json │ ├── Screen-Sharing-Info.plist │ ├── Screen-Sharing-Prefix.pch │ ├── TBScreenCapture.h │ ├── TBScreenCapture.m │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ └── InfoPlist.strings │ ├── logo_opentok_registered.png │ └── main.m ├── Signaling ├── Podfile ├── README.md ├── Signaling.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Signaling.xcscheme ├── Signaling.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── Signaling │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ ├── LaunchScreen.xib │ └── Main.storyboard │ ├── Config.h │ ├── Images.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json │ ├── Info.plist │ ├── Subscriber-Speaker-35.png │ ├── Subscriber-Speaker-35@2x.png │ ├── Subscriber-Speaker-Mute-35.png │ ├── Subscriber-Speaker-Mute-35@2x.png │ ├── ViewController.h │ ├── ViewController.m │ ├── camera-switch_black-33.png │ ├── camera_switch-33.png │ ├── main.m │ ├── mic-24.png │ └── mic_muted-24.png ├── Simple-Multiparty ├── Multi-Party-Call │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Bandwidth_meter_strong-23.png │ ├── Bandwidth_meter_strong-23@2x.png │ ├── Bandwidth_meter_weak-23.png │ ├── Bandwidth_meter_weak-23@2x.png │ ├── Base.lproj │ │ └── Main_iPhone.storyboard │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Simple-Multiparty-Info.plist │ ├── Simple-Multiparty-Prefix.pch │ ├── Subscriber-Speaker-35.png │ ├── Subscriber-Speaker-35@2x.png │ ├── Subscriber-Speaker-Mute-35.png │ ├── Subscriber-Speaker-Mute-35@2x.png │ ├── TB Bug-30.png │ ├── TB Bug-30@2x.png │ ├── ViewController.h │ ├── ViewController.m │ ├── archiving-off-15@2x.png │ ├── archiving_on-5.png │ ├── archiving_on-5@2x.png │ ├── archiving_pulse-15.png │ ├── camera-switch_black-33.png │ ├── camera-switch_black-33@2x.png │ ├── camera_switch-33.png │ ├── camera_switch-33@2x.png │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── icon_arrowLeft_disabled-28.png │ ├── icon_arrowLeft_disabled-28@2x.png │ ├── icon_arrowLeft_enabled-28.png │ ├── icon_arrowLeft_enabled-28@2x.png │ ├── icon_arrowRight_disabled-28.png │ ├── icon_arrowRight_disabled-28@2x.png │ ├── icon_arrowRight_enabled-28.png │ ├── icon_arrowRight_enabled-28@2x.png │ ├── libyuv.h │ ├── libyuv │ │ ├── basic_types.h │ │ ├── compare.h │ │ ├── convert.h │ │ ├── convert_argb.h │ │ ├── convert_from.h │ │ ├── convert_from_argb.h │ │ ├── cpu_id.h │ │ ├── format_conversion.h │ │ ├── mjpeg_decoder.h │ │ ├── planar_functions.h │ │ ├── rotate.h │ │ ├── rotate_argb.h │ │ ├── row.h │ │ ├── scale.h │ │ ├── scale_argb.h │ │ ├── scale_row.h │ │ ├── version.h │ │ └── video_common.h │ ├── main.m │ ├── mic-24.png │ ├── mic-24@2x.png │ ├── mic_muted-24.png │ ├── mic_muted-24@2x.png │ ├── mic_receiving_data-35.png │ └── mic_receiving_data-35@2x.png ├── Podfile ├── README.md ├── Simple-Multiparty.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Simple-Multiparty.xcscheme └── Simple-Multiparty.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ └── IDEWorkspaceChecks.plist └── travis_build.sh /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 16 | **Expected behavior** 17 | A clear and concise description of what you expected to happen. 18 | 19 | **Screenshots** 20 | If applicable, add screenshots to help explain your problem. 21 | 22 | **Device (please compete the following information):** 23 | - sessionId, if applicable: 24 | - iOS SDK version: 25 | - OS and version: 26 | 27 | **Additional context** 28 | Add any other context about the problem here. 29 | -------------------------------------------------------------------------------- /.github/workflows/metrics.yml: -------------------------------------------------------------------------------- 1 | name: Aggregit 2 | 3 | on: 4 | schedule: 5 | - cron: "0 0 * * *" 6 | 7 | jobs: 8 | recordMetrics: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: michaeljolley/aggregit@v1 12 | with: 13 | githubToken: ${{ secrets.GITHUB_TOKEN }} 14 | project_id: ${{ secrets.project_id }} 15 | private_key: ${{ secrets.private_key }} 16 | client_email: ${{ secrets.client_email }} 17 | firebaseDbUrl: ${{ secrets.firebaseDbUrl }} 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Podfile.lock 2 | OpenTok.framework/ 3 | OpenTok.framework 4 | 5 | # Xcode 6 | .DS_Store 7 | */build/* 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | profile 18 | *.moved-aside 19 | DerivedData 20 | .idea/ 21 | *.hmap 22 | *.xccheckout 23 | 24 | #CocoaPods 25 | Pods 26 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | os: osx 2 | osx_image: xcode13.0 3 | language: objective-c 4 | 5 | cache: 6 | directories: 7 | - $HOME/.cocoapods 8 | 9 | before_install: 10 | - set -x 11 | - gem install cocoapods 12 | - pod repo update > /dev/null 13 | 14 | script: 15 | - ./travis_build.sh 16 | -------------------------------------------------------------------------------- /Archiving/Archiving.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Archiving/Archiving.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Archiving/Archiving.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Archiving/Archiving.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Archiving/Archiving/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Getting Started 4 | // 5 | // Created by Swartz on 11/19/14. 6 | // Copyright (c) 2014 TokBox, Inc. 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 | -------------------------------------------------------------------------------- /Archiving/Archiving/Config.h: -------------------------------------------------------------------------------- 1 | // 2 | // Config.h 3 | // Getting Started 4 | // 5 | // Created by Swartz on 12/1/14. 6 | // Copyright (c) 2014 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #ifndef Getting_Started_Config_h 10 | #define Getting_Started_Config_h 11 | 12 | /* 13 | Set SAMPLE_SERVER_BASE_URL to the base URL of the web server that implements 14 | the OpenTok PHP Getting Started Sample code (see the main README file.) This 15 | web service handles some OpenTok-related API calls, related to obtaining 16 | session IDs and tokens, and for working with archives. 17 | */ 18 | 19 | // If you run the app from a device under localhost, 20 | // the app can connect to your localhost by pointing the url to the localhost's IP address. 21 | #define SAMPLE_SERVER_BASE_URL @"http://localhost:8080" 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /Archiving/Archiving/Images.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 | } -------------------------------------------------------------------------------- /Archiving/Archiving/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Getting Started 4 | // 5 | // Created by Jeff Swartz on 11/19/14. 6 | // Copyright (c) 2014 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Archiving/Archiving/archiving_on-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Archiving/Archiving/archiving_on-10.png -------------------------------------------------------------------------------- /Archiving/Archiving/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LearningOpenTok 4 | // 5 | // Created by Swartz on 4/17/15. 6 | // Copyright (c) 2015 TokBox. 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 | -------------------------------------------------------------------------------- /Archiving/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Archiving' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /Archiving/README.md: -------------------------------------------------------------------------------- 1 | Archiving sample app 2 | ==================== 3 | 4 | This sample app shows how to record an OpenTok session, stop the recording, and view the recording. 5 | For a full description, see the [archiving tutorial at the OpenTok developer 6 | center](https://tokbox.com/developer/tutorials/ios/basic-video-chat/). 7 | 8 | This application provides a completed version of the OpenTok Archiving tutorial for iOS (differing only in some additional validation checks). Upon deploying this sample application, you should be able to start, stop, and play back recordings of your sessions. 9 | 10 | If you aren't familiar with how to set up a basic video chat application, you should do that first. Check out the [Basic-Video-Chat project](https://github.com/opentok/opentok-ios-sdk-samples/tree/develop/Basic-Video-Chat), and [accompanying tutorial](https://tokbox.com/developer/tutorials/ios/basic-video-chat/). 11 | 12 | Note that you will need a valid TokBox account for this and all other TokBox samples and tutorials. 13 | 14 | ## Quick Start 15 | 16 | #### 1. Deploy a sample back end web service 17 | Because the actual archiving is not done on the user's device, but in the OpenTok cloud, you will need to set up a web service that communicates with it to start and stop archiving. 18 | 19 | For the purposes of this tutorial, we'll be using a pre-built sample that we've provided. You can deploy this by going to the [learning-opentok-php](https://github.com/opentok/learning-opentok-php) repository, and clicking on the purple deploy to Heroku button. 20 | 21 | You can look through the details of that tutorial at a later point. For now, you just need to know that the sample web service provides a RESTful interface to interact with Archiving controls. 22 | 23 | #### 2. Configure the app to use your web service 24 | In `Config.h`, configure the `SAMPLE_SERVER_BASE_URL` string to your web service domain. 25 | 26 | #### 3. Use Xcode to build and run the app on an iOS simulator or device. 27 | That's it! 28 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/Audio-Levels-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 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 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | NSCameraUsageDescription 28 | Opentok needs access to the camera to stream your video 29 | NSMicrophoneUsageDescription 30 | Opentok needs access to the microphone to stream your audio 31 | UIBackgroundModes 32 | 33 | audio 34 | 35 | UIMainStoryboardFile 36 | Main 37 | UIRequiredDeviceCapabilities 38 | 39 | armv7 40 | 41 | UIStatusBarTintParameters 42 | 43 | UINavigationBar 44 | 45 | Style 46 | UIBarStyleDefault 47 | Translucent 48 | 49 | 50 | 51 | UISupportedInterfaceOrientations 52 | 53 | UIInterfaceOrientationPortrait 54 | UIInterfaceOrientationLandscapeLeft 55 | UIInterfaceOrientationLandscapeRight 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/Audio-Levels-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/Default-568h@2x.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/Default.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/Default@2x.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/Images.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" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "60x60", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/OpenTokLogoWhite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/OpenTokLogoWhite.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/OpenTokLogoWhite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/OpenTokLogoWhite@2x.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/TBAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // TBAppDelegate.h 3 | // Audio-Levels 4 | // 5 | // Created by Sridhar on 31/07/14. 6 | // Copyright (c) 2014 Tokbox. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TBAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/TBAudioLevelMeter.h: -------------------------------------------------------------------------------- 1 | // 2 | // TBAudioLevelMeter.h 3 | // TestAudioMeter 4 | // 5 | // Created by Sridhar on 02/06/14. 6 | // Copyright (c) 2014 Tokbox. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TBAudioLevelMeter : UIView 12 | { 13 | 14 | } 15 | @property(assign, nonatomic) CGFloat level; 16 | @property(assign, nonatomic) UIView* toucesPassToView; 17 | @end 18 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/TBViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Multi-Party-Call 4 | // 5 | // Created by Sridhar on 07/04/14. 6 | // Copyright (c) 2014 Tokbox. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | #import "TBVoiceViewCell.h" 13 | 14 | @interface TBViewController : UIViewController { 18 | 19 | } 20 | @property (strong, nonatomic) IBOutlet UIScrollView *videoContainerView; 21 | @property (strong, nonatomic) IBOutlet UIView *bottomOverlayView; 22 | @property (retain, nonatomic) IBOutlet UIButton *endCallButton; 23 | @property (retain, nonatomic) IBOutlet UIView *archiveOverlay; 24 | @property (retain, nonatomic) IBOutlet UILabel *archiveStatusLbl; 25 | @property (retain, nonatomic) IBOutlet UIImageView *archiveStatusImgView; 26 | @property (retain, nonatomic) NSString *publisherName; 27 | @property (retain, nonatomic) IBOutlet UIActivityIndicatorView *spinningWheel; 28 | @property (retain, nonatomic) IBOutlet UITableView *tableView; 29 | @property (retain, nonatomic) IBOutlet UIView *publisherView; 30 | @property (retain, nonatomic) IBOutlet UIImageView *publisherProfileImgVIew; 31 | @property (retain, nonatomic) IBOutlet UILabel *publisherNameLbl; 32 | @property (retain, nonatomic) IBOutlet UIView *publisherMicContainerView; 33 | @property (retain, nonatomic) IBOutlet UIButton *publisherMicButton; 34 | @property (retain, nonatomic) TBAudioLevelMeter *publisherAudioLevelMeter; 35 | 36 | - (IBAction)toggleAudioPublish:(id)sender; 37 | - (IBAction)endCallAction:(UIButton *)button; 38 | @end -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/TBVoiceViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TBVoiceViewCell.h 3 | // OpenTokRTC 4 | // 5 | // Created by Sridhar on 28/07/14. 6 | // Copyright (c) 2014 Song Zheng. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TBAudioLevelMeter.h" 11 | #import 12 | 13 | @interface TBVoiceViewCell : UITableViewCell 14 | { 15 | 16 | } 17 | - (IBAction)toggleSubscribeAudio:(id)sender; 18 | 19 | @property (retain, nonatomic) TBAudioLevelMeter *audioLevelMeter; 20 | @property (retain, nonatomic) IBOutlet UIImageView *profileImgView; 21 | @property (retain, nonatomic) IBOutlet UILabel *name; 22 | @property (retain, nonatomic) IBOutlet UIView *spkrContainerView; 23 | @property (retain, nonatomic) IBOutlet UIButton *spkrButtonView; 24 | @property (assign, nonatomic) OTSubscriber *subscriber; 25 | @end 26 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/TBVoiceViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // TBVoiceViewCell.m 3 | // OpenTokRTC 4 | // 5 | // Created by Sridhar on 28/07/14. 6 | // Copyright (c) 2014 Song Zheng. All rights reserved. 7 | // 8 | 9 | #import "TBVoiceViewCell.h" 10 | 11 | @implementation TBVoiceViewCell 12 | 13 | - (void)awakeFromNib 14 | { 15 | // Initialization code 16 | // audio level meter 17 | [super awakeFromNib]; 18 | _audioLevelMeter = [[TBAudioLevelMeter alloc] 19 | initWithFrame:CGRectZero]; 20 | _audioLevelMeter.opaque = false; 21 | _audioLevelMeter.userInteractionEnabled = NO; 22 | CGRect frame = _spkrButtonView.frame; 23 | _audioLevelMeter.frame = frame; 24 | [_spkrContainerView addSubview:_audioLevelMeter]; 25 | } 26 | 27 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated 28 | { 29 | [super setSelected:selected animated:animated]; 30 | 31 | // Configure the view for the selected state 32 | } 33 | 34 | - (void)subscriber:(OTSubscriberKit *)subscriber 35 | audioLevelUpdated:(float)audioLevel{ 36 | float db = 20 * log10(audioLevel); 37 | float floor = -40; 38 | float level = 0; 39 | if (db > floor) { 40 | level = db + fabsf(floor); 41 | level /= fabsf(floor); 42 | } 43 | self.audioLevelMeter.level = level; 44 | } 45 | 46 | - (IBAction)toggleSubscribeAudio:(id)sender { 47 | if (self.subscriber.subscribeToAudio == YES) { 48 | self.audioLevelMeter.level = 0.0f; 49 | self.name.alpha = .75f; 50 | self.subscriber.audioLevelDelegate = nil; 51 | self.subscriber.subscribeToAudio = NO; 52 | self.spkrButtonView.selected = YES; 53 | } else { 54 | self.name.alpha = 1; 55 | self.subscriber.audioLevelDelegate = self; 56 | self.subscriber.subscribeToAudio = YES; 57 | self.spkrButtonView.selected = NO; 58 | } 59 | } 60 | @end 61 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/archiving-off-15@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/archiving-off-15@2x.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/archiving_on-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/archiving_on-10.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/archiving_on-10@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/archiving_on-10@2x.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/archiving_on-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/archiving_on-5.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/archiving_on-5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/archiving_on-5@2x.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/archiving_pulse-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/archiving_pulse-15.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/circle.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/circle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/circle@2x.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Audio-Levels 4 | // 5 | // Created by Sridhar on 31/07/14. 6 | // Copyright (c) 2014 Tokbox. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "TBAppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([TBAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/microphoneActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/microphoneActive.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/microphoneActive@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/microphoneActive@2x.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/microphoneMuted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/microphoneMuted.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/microphoneMuted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/microphoneMuted@2x.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/silhouette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/silhouette.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/silhouette@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/silhouette@2x.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/speakerActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/speakerActive.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/speakerActive@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/speakerActive@2x.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/speakerMuted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/speakerMuted.png -------------------------------------------------------------------------------- /Audio-Levels/Audio-Levels/speakerMuted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Audio-Levels/Audio-Levels/speakerMuted@2x.png -------------------------------------------------------------------------------- /Audio-Levels/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Audio-Levels' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /Audio-Levels/README.md: -------------------------------------------------------------------------------- 1 | Audio Levels 2 | ================================== 3 | 4 | This project shows how to use the OpenTok iOS SDK to develop audio-only calls 5 | with multiple subscribers and audio levels. By the end of a code review, you 6 | should learn how to add audio only calls with the OpenTok iOS SDK. 7 | 8 | *Important:* To use this application, follow the instructions in the 9 | [Quick Start](../README.md#quick-start) section of the main README file 10 | for this repository. 11 | 12 | Application Notes 13 | ================= 14 | 15 | * This sample shows an audio-only session with audio level meter for each 16 | subscriber as well as the publisher. The sample supports multiple audio-only 17 | subscribers. 18 | 19 | * The app sets the `audioLevelDelegate` property of the OTPublisherKit 20 | instance (in the TBViewController.m). As a result, the 21 | `[OTPublisherKitDelegate publisher: audioLevelUpdated:]` message is sent 22 | periodically to report audio levels of the published stream. The level 23 | in the publisher's audio level meter is updated accordingly. 24 | 25 | Similarly, the app sets the `audioLevelDelegate` property of the 26 | OTSubscriberKit instance (in the TBVoiceViewCell.m file). As a result, 27 | the `[OTSubscriberKit subscriber audioLevelUpdated:]` is sent 28 | periodically to report audio levels of the subscribed stream. The level 29 | in the subscriber's audio level meter is updated accordingly. 30 | 31 | * The sample includes mute and unmute buttons for the publisher and subscribers. 32 | -------------------------------------------------------------------------------- /Basic-Video-Chat-XCFramework/Basic-Video-Chat.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Basic-Video-Chat-XCFramework/Basic-Video-Chat.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Basic-Video-Chat-XCFramework/Basic-Video-Chat.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Basic-Video-Chat-XCFramework/Basic-Video-Chat.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Basic-Video-Chat-XCFramework/Basic-Video-Chat/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Hello-World 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Basic-Video-Chat-XCFramework/Basic-Video-Chat/Base.lproj/Main_iPad.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 | -------------------------------------------------------------------------------- /Basic-Video-Chat-XCFramework/Basic-Video-Chat/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Basic-Video-Chat-XCFramework/Basic-Video-Chat/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Hello-World 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface ViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Basic-Video-Chat-XCFramework/Basic-Video-Chat/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Basic-Video-Chat-XCFramework/Basic-Video-Chat/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Hello-World 4 | // 5 | // Created by Charley Robinson on 12/16/13. 6 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Basic-Video-Chat-XCFramework/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Basic-Video-Chat' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /Basic-Video-Chat-XCFramework/README.md: -------------------------------------------------------------------------------- 1 | Basic Video Chat sample app 2 | =========================== 3 | 4 | **NOTE:** *OTXCFramework only exists for versions 2.20.0 and above* 5 | 6 | The Basic Video Chat app is a very simple application meant to get a new developer 7 | started using the OpenTok iOS SDK. For a full description, see the [Basic tutorial at the 8 | OpenTok developer center](https://tokbox.com/developer/tutorials/ios/basic-video-chat/). 9 | -------------------------------------------------------------------------------- /Basic-Video-Chat/Basic-Video-Chat.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Basic-Video-Chat/Basic-Video-Chat.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Basic-Video-Chat/Basic-Video-Chat.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Basic-Video-Chat/Basic-Video-Chat.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Basic-Video-Chat/Basic-Video-Chat/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Hello-World 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Basic-Video-Chat/Basic-Video-Chat/Base.lproj/Main_iPad.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 | -------------------------------------------------------------------------------- /Basic-Video-Chat/Basic-Video-Chat/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /Basic-Video-Chat/Basic-Video-Chat/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Basic-Video-Chat/Basic-Video-Chat/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Hello-World 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface ViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Basic-Video-Chat/Basic-Video-Chat/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Basic-Video-Chat/Basic-Video-Chat/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Hello-World 4 | // 5 | // Created by Charley Robinson on 12/16/13. 6 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Basic-Video-Chat/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Basic-Video-Chat' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /Basic-Video-Chat/README.md: -------------------------------------------------------------------------------- 1 | Basic Video Chat sample app 2 | =========================== 3 | 4 | The Basic Video Chat app is a very simple application meant to get a new developer 5 | started using the OpenTok iOS SDK. For a full description, see the [Basic tutorial at the 6 | OpenTok developer center](https://tokbox.com/developer/tutorials/ios/basic-video-chat/). 7 | 8 | 9 | Adding the OpenTok library 10 | ========================== 11 | In this example the OpenTok iOS SDK was not included as a dependency, 12 | you can do it through Swift Package Manager or Cocoapods. 13 | 14 | 15 | Swift Package Manager 16 | --------------------- 17 | To add a package dependency to your Xcode project, you should select 18 | *File* > *Swift Packages* > *Add Package Dependency* and enter the repository URL: 19 | `https://github.com/opentok/vonage-client-sdk-video.git`. 20 | 21 | 22 | Cocoapods 23 | --------- 24 | To use CocoaPods to add the OpenTok library and its dependencies into this sample app 25 | simply open Terminal, navigate to the root directory of the project and run: `pod install`. 26 | -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Hello-World 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext/Base.lproj/Main_iPad.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 | -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext/Base.lproj/Main_iPhone.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 | -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext/Broadcast-Ext.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.application-groups 6 | 7 | group.opentok.broadcast.live 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | } 88 | ], 89 | "info" : { 90 | "version" : 1, 91 | "author" : "xcode" 92 | } 93 | } -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Hello-World 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // Hello-World 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import "ViewController.h" 9 | #import 10 | 11 | @implementation ViewController 12 | #if !(TARGET_OS_SIMULATOR) 13 | API_AVAILABLE(ios(12.0)) 14 | RPSystemBroadcastPickerView *_broadcastPickerView; 15 | #endif 16 | 17 | #pragma mark - View lifecycle 18 | - (void)viewDidLoad 19 | { 20 | [super viewDidLoad]; 21 | 22 | #if !(TARGET_OS_SIMULATOR) 23 | if (@available(iOS 12.0, *)) { 24 | _broadcastPickerView = [[RPSystemBroadcastPickerView alloc] initWithFrame: 25 | CGRectMake(0, 0, 50, 50)]; 26 | _broadcastPickerView.preferredExtension = @"com.tokbox.Broadcast-Ext-Sample.OpenTok-Live"; 27 | _broadcastPickerView.center = self.view.center; 28 | } else { 29 | // Fallback on earlier versions 30 | } 31 | 32 | if (@available(iOS 12.0, *)) { 33 | [self.view addSubview:_broadcastPickerView]; 34 | } 35 | #endif 36 | 37 | } 38 | 39 | - (BOOL)prefersStatusBarHidden 40 | { 41 | return YES; 42 | } 43 | 44 | - (BOOL)shouldAutorotate { 45 | return UIUserInterfaceIdiomPhone != [[UIDevice currentDevice] userInterfaceIdiom]; 46 | } 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Broadcast-Ext/Broadcast-Ext/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Hello-World 4 | // 5 | // Created by Charley Robinson on 12/16/13. 6 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Broadcast-Ext/OpenTok Live/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | OpenTok Live 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | XPC! 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | NSExtension 24 | 25 | NSExtensionPointIdentifier 26 | com.apple.broadcast-services-upload 27 | NSExtensionPrincipalClass 28 | SampleHandler 29 | RPBroadcastProcessMode 30 | RPBroadcastProcessModeSampleBuffer 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Broadcast-Ext/OpenTok Live/OTBroadcastExtAudioDevice.h: -------------------------------------------------------------------------------- 1 | // 2 | // OTAudioDeviceIOSDefault.h 3 | // 4 | // Copyright (c) 2014 TokBox, Inc. All rights reserved. 5 | // 6 | 7 | #import 8 | #import 9 | 10 | #define kMixerInputBusCount 2 11 | #define kOutputBus 0 12 | #define kInputBus 1 13 | 14 | #define AUDIO_DEVICE_HEADSET @"AudioSessionManagerDevice_Headset" 15 | #define AUDIO_DEVICE_BLUETOOTH @"AudioSessionManagerDevice_Bluetooth" 16 | #define AUDIO_DEVICE_SPEAKER @"AudioSessionManagerDevice_Speaker" 17 | 18 | @interface OTBroadcastExtAudioDevice : NSObject 19 | { 20 | AudioStreamBasicDescription stream_format; 21 | } 22 | 23 | /** 24 | Returns YES if a wired headset is available. 25 | */ 26 | @property (nonatomic, readonly) BOOL headsetDeviceAvailable; 27 | 28 | /** 29 | Returns YES if a bluetooth device is available. 30 | */ 31 | @property (nonatomic, readonly) BOOL bluetoothDeviceAvailable; 32 | 33 | - (BOOL)setAudioBus:(id)audioBus; 34 | 35 | - (OTAudioFormat*)captureFormat; 36 | - (OTAudioFormat*)renderFormat; 37 | 38 | - (BOOL)renderingIsAvailable; 39 | - (BOOL)initializeRendering; 40 | - (BOOL)renderingIsInitialized; 41 | - (BOOL)captureIsAvailable; 42 | - (BOOL)initializeCapture; 43 | - (BOOL)captureIsInitialized; 44 | 45 | - (BOOL)startRendering; 46 | - (BOOL)stopRendering; 47 | - (BOOL)isRendering; 48 | - (BOOL)startCapture; 49 | - (BOOL)stopCapture; 50 | - (BOOL)isCapturing; 51 | 52 | - (uint16_t)estimatedRenderDelay; 53 | - (uint16_t)estimatedCaptureDelay; 54 | 55 | //desired Audio Route can be bluetooth and headset. 56 | //bluetooth has higher priority of all, next headset, next speaker 57 | - (BOOL)configureAudioSessionWithDesiredAudioRoute:(NSString*)desiredAudioRoute; 58 | - (BOOL)detectCurrentRoute; 59 | 60 | - (BOOL)setPlayOutRenderCallback:(AudioUnit)unit; 61 | 62 | -(void)writeAudioSamples:(CMSampleBufferRef)sampleBuffer; 63 | - (void) setupAudioSession; 64 | @end 65 | -------------------------------------------------------------------------------- /Broadcast-Ext/OpenTok Live/OTBroadcastExtHelper.h: -------------------------------------------------------------------------------- 1 | // 2 | // OTBroadcastExtHelper.h 3 | // OpenTok Live 4 | // 5 | // Created by Sridhar Bollam on 8/5/19. 6 | // Copyright © 2019 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface OTBroadcastExtHelper : NSObject 15 | { 16 | 17 | } 18 | 19 | -(instancetype)initWithPartnerId:(NSString *)partnerId 20 | sessionId:(NSString *)sessionId 21 | andToken:(NSString *)token 22 | videoCapturer:(id )videoCapturer; 23 | 24 | -(void)connect; 25 | -(void)disconnect; 26 | - (BOOL)isConnected; 27 | 28 | -(void)writeAudioSamples:(CMSampleBufferRef)sampleBuffer; 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /Broadcast-Ext/OpenTok Live/OpenTokLive.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.application-groups 6 | 7 | group.opentok.broadcast.live 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Broadcast-Ext/OpenTok Live/SampleHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // SampleHandler.h 3 | // OpenTok Live 4 | // 5 | // Created by Sridhar Bollam on 8/4/19. 6 | // Copyright © 2019 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface SampleHandler : RPBroadcastSampleHandler 13 | { 14 | 15 | } 16 | 17 | @property(atomic, weak) id _Nullable videoCaptureConsumer; 18 | @end 19 | -------------------------------------------------------------------------------- /Broadcast-Ext/OpenTok LiveSetupUI/BroadcastSetupViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BroadcastSetupViewController.h 3 | // OpenTok LiveSetupUI 4 | // 5 | // Created by Sridhar Bollam on 8/4/19. 6 | // Copyright © 2019 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface BroadcastSetupViewController : UIViewController 13 | - (IBAction)startSharing:(id)sender; 14 | - (IBAction)cancel:(id)sender; 15 | @property (weak, nonatomic) IBOutlet UIBarButtonItem *startButton; 16 | @property (weak, nonatomic) IBOutlet UIBarButtonItem *cancelButton; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Broadcast-Ext/OpenTok LiveSetupUI/BroadcastSetupViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // BroadcastSetupViewController.m 3 | // OpenTok LiveSetupUI 4 | // 5 | // Created by Sridhar Bollam on 8/4/19. 6 | // Copyright © 2019 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import "BroadcastSetupViewController.h" 10 | 11 | @implementation BroadcastSetupViewController 12 | 13 | // Call this method when the user has finished interacting with the view controller and a broadcast stream can start 14 | - (void)userDidFinishSetup { 15 | 16 | // URL of the resource where broadcast can be viewed that will be returned to the application 17 | NSURL *broadcastURL = [NSURL URLWithString:@"http://apple.com/broadcast/streamID"]; 18 | 19 | // Dictionary with setup information that will be provided to broadcast extension when broadcast is started 20 | NSDictionary *setupInfo = @{ @"streamId" : @"test"}; 21 | 22 | // Tell ReplayKit that the extension is finished setting up and can begin broadcasting 23 | [self.extensionContext completeRequestWithBroadcastURL:broadcastURL setupInfo:setupInfo]; 24 | } 25 | 26 | - (void)userDidCancelSetup { 27 | // Tell ReplayKit that the extension was cancelled by the user 28 | [self.extensionContext cancelRequestWithError:[NSError errorWithDomain:@"YourAppDomain" code:-1 userInfo:nil]]; 29 | } 30 | 31 | - (IBAction)startSharing:(id)sender { 32 | [self userDidFinishSetup]; 33 | } 34 | 35 | - (IBAction)cancel:(id)sender { 36 | [self userDidCancelSetup]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Broadcast-Ext/OpenTok LiveSetupUI/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | OpenTok LiveSetupUI 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | XPC! 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | NSExtension 24 | 25 | NSExtensionAttributes 26 | 27 | NSExtensionActivationRule 28 | 29 | NSExtensionActivationSupportsReplayKitStreaming 30 | 31 | 32 | 33 | NSExtensionMainStoryboard 34 | Main_Broadcast_iPhone 35 | NSExtensionPointIdentifier 36 | com.apple.broadcast-services-setupui 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /Broadcast-Ext/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Broadcast-Ext' do 7 | target 'OpenTok Live' do 8 | pod 'OTXCFramework', OpenTokSDKVersion 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /Camera-Controls/Camera-Controls.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Camera-Controls/Camera-Controls.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Camera-Controls/Camera-Controls.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Camera-Controls/Camera-Controls.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Camera-Controls/Camera-Controls/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Hello-World 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Camera-Controls/Camera-Controls/Base.lproj/Main_iPad.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 | -------------------------------------------------------------------------------- /Camera-Controls/Camera-Controls/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /Camera-Controls/Camera-Controls/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Camera-Controls/Camera-Controls/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Hello-World 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface ViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Camera-Controls/Camera-Controls/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Camera-Controls/Camera-Controls/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Hello-World 4 | // 5 | // Created by Charley Robinson on 12/16/13. 6 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Camera-Controls/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Camera-Controls' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | pod 'VonageClientSDKVideoTransformers', OpenTokSDKVersion 9 | end 10 | -------------------------------------------------------------------------------- /Camera-Controls/README.md: -------------------------------------------------------------------------------- 1 | Camera Controls sample app 2 | =========================== 3 | 4 | This application, built on top of Basic Video Chat, showcases how to set the preferred torch/flashlight mode and zoom factor for the camera. 5 | Note that this is a preference and may not take effect if the active camera does not support the functionality (for example, the front camera typically does not support torch). 6 | 7 | The default value for torch is false. Passing true or false indicates whether the publisher should enable 8 | or disable the camera's torch when available. 9 | 10 | The zoom factor values range from 0.5 to the maximum zoom factor. Values between 0.5 and 1.0 will represent 11 | ultra-wide-angle (zoom out) and values between 1.0 and the maximum zoom factor will represent 12 | zooming in. The actual zoom factor applied will be automatically clamped to the range supported by the active 13 | camera's configuration, meaning if the camera does not support ultra-wide-angle, zoom factors set below 1.0 14 | will not take effect and no zoom will be applied. For values over the maximum zoom factor supported by the 15 | camera, the zoom factor will be set with the max value. The value of 1.0 represents no zoom (the default view). 16 | 17 | ## Code sample - How to Enable Torch 18 | 19 | ```objc 20 | publisher.cameraTorch = YES; 21 | publisher.cameraZoomFactor = 5.0; 22 | ``` 23 | 24 | Adding the OpenTok library 25 | ========================== 26 | In this example the OpenTok iOS SDK was not included as a dependency, 27 | you can do it through Swift Package Manager or Cocoapods. 28 | 29 | 30 | Swift Package Manager 31 | --------------------- 32 | To add a package dependency to your Xcode project, you should select 33 | *File* > *Swift Packages* > *Add Package Dependency* and enter the repository URL: 34 | `https://github.com/opentok/vonage-client-sdk-video.git`. 35 | 36 | 37 | Cocoapods 38 | --------- 39 | To use CocoaPods to add the OpenTok library and its dependencies into this sample app 40 | simply open Terminal, navigate to the root directory of the project and run: `pod install`. 41 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/Custom-Audio-Driver.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/Custom-Audio-Driver.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/Custom-Audio-Driver.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/Custom-Audio-Driver.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/External-Audio-Device/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // External-Audio-Device 4 | // 5 | // Copyright (c) 2014 TokBox Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/External-Audio-Device/Base.lproj/Main_iPad.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 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/External-Audio-Device/Base.lproj/Main_iPhone.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 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/External-Audio-Device/Custom-Audio-Driver-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/External-Audio-Device/Images.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 | "idiom" : "ipad", 65 | "size" : "83.5x83.5", 66 | "scale" : "2x" 67 | } 68 | ], 69 | "info" : { 70 | "version" : 1, 71 | "author" : "xcode" 72 | } 73 | } -------------------------------------------------------------------------------- /Custom-Audio-Driver/External-Audio-Device/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/External-Audio-Device/OTDefaultAudioDevice.h: -------------------------------------------------------------------------------- 1 | // 2 | // OTAudioDeviceIOSDefault.h 3 | // 4 | // Copyright (c) 2014 TokBox, Inc. All rights reserved. 5 | // 6 | 7 | #import 8 | #import 9 | 10 | #define kMixerInputBusCount 2 11 | #define kOutputBus 0 12 | #define kInputBus 1 13 | 14 | #define AUDIO_DEVICE_HEADSET @"AudioSessionManagerDevice_Headset" 15 | #define AUDIO_DEVICE_BLUETOOTH @"AudioSessionManagerDevice_Bluetooth" 16 | #define AUDIO_DEVICE_SPEAKER @"AudioSessionManagerDevice_Speaker" 17 | 18 | @interface OTDefaultAudioDevice : NSObject 19 | { 20 | AudioStreamBasicDescription stream_format; 21 | } 22 | 23 | /** 24 | Returns YES if a wired headset is available. 25 | */ 26 | @property (nonatomic, readonly) BOOL headsetDeviceAvailable; 27 | 28 | /** 29 | Returns YES if a bluetooth device is available. 30 | */ 31 | @property (nonatomic, readonly) BOOL bluetoothDeviceAvailable; 32 | 33 | - (BOOL)setAudioBus:(id)audioBus; 34 | 35 | - (OTAudioFormat*)captureFormat; 36 | - (OTAudioFormat*)renderFormat; 37 | 38 | - (BOOL)renderingIsAvailable; 39 | - (BOOL)initializeRendering; 40 | - (BOOL)renderingIsInitialized; 41 | - (BOOL)captureIsAvailable; 42 | - (BOOL)initializeCapture; 43 | - (BOOL)captureIsInitialized; 44 | 45 | - (BOOL)startRendering; 46 | - (BOOL)stopRendering; 47 | - (BOOL)isRendering; 48 | - (BOOL)startCapture; 49 | - (BOOL)stopCapture; 50 | - (BOOL)isCapturing; 51 | 52 | - (uint16_t)estimatedRenderDelay; 53 | - (uint16_t)estimatedCaptureDelay; 54 | 55 | //desired Audio Route can be bluetooth and headset. 56 | //bluetooth has higher priority of all, next headset, next speaker 57 | - (BOOL)configureAudioSessionWithDesiredAudioRoute:(NSString*)desiredAudioRoute; 58 | - (BOOL)detectCurrentRoute; 59 | 60 | - (BOOL)setPlayOutRenderCallback:(AudioUnit)unit; 61 | 62 | @end 63 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/External-Audio-Device/OTDefaultAudioDeviceWithVolumeControl.h: -------------------------------------------------------------------------------- 1 | // 2 | // OTDefaultAudioDevice+Volume.h 3 | // External-Audio-Device 4 | // 5 | // Created by Sridhar on 08/03/16. 6 | // Copyright © 2016 TokBox Inc. All rights reserved. 7 | // 8 | 9 | #import "OTDefaultAudioDevice.h" 10 | 11 | @interface OTDefaultAudioDeviceWithVolumeControl : OTDefaultAudioDevice 12 | 13 | // value range - 0 (min) and 1 (max) 14 | -(void)setPlayoutVolume:(float)value; 15 | @end 16 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/External-Audio-Device/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // External-Audio-Device 4 | // 5 | // Copyright (c) 2014 TokBox Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface ViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/External-Audio-Device/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/External-Audio-Device/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // External-Audio-Device 4 | // 5 | // Created by Steve McFarlin on 7/7/14. 6 | // Copyright (c) 2014 TokBox Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Custom-Audio-Driver/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Custom-Audio-Driver' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Custom-Video-Driver.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Custom-Video-Driver.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Custom-Video-Driver.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Custom-Video-Driver.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Lets-Build-OTPublisher 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/Base.lproj/Main_iPad.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 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/Base.lproj/Main_iPhone.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 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/Custom-Video-Driver-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/Images.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" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "60x60", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "ipad", 20 | "size" : "29x29", 21 | "scale" : "1x" 22 | }, 23 | { 24 | "idiom" : "ipad", 25 | "size" : "29x29", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "ipad", 30 | "size" : "40x40", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "40x40", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "76x76", 41 | "scale" : "1x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "76x76", 46 | "scale" : "2x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/Multi-Cam-Capturer/TBCaptureMultiCamFactory.h: -------------------------------------------------------------------------------- 1 | // 2 | // OTAVMultiCamSession.h 3 | // Custom-Video-Driver 4 | // 5 | // Created by Sridhar Bollam on 12/17/19. 6 | // Copyright © 2019 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "TBExampleMultiCamCapture.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface TBCaptureMultiCamFactory : NSObject 16 | 17 | 18 | @property(nonatomic, strong) AVCaptureMultiCamSession *avCaptureMultiCamSession; 19 | @property(nonatomic, strong) dispatch_queue_t capturer_queue; 20 | 21 | + (id)sharedInstance; 22 | - (TBExampleMultiCamCapture *)createCapturerForCameraPosition:(AVCaptureDevicePosition)camPosition; 23 | - (void)checkSystemCost; 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/Multi-Cam-Capturer/TBExampleMultiCamCapture.h: -------------------------------------------------------------------------------- 1 | // 2 | // TBExampleMultiCamCapture.h 3 | // Custom-Video-Driver 4 | // 5 | // Created by Sridhar Bollam on 12/17/19. 6 | // Copyright © 2019 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #ifndef TBExampleMultiCamCapture_h 10 | #define TBExampleMultiCamCapture_h 11 | 12 | #import 13 | #import 14 | #import 15 | 16 | @protocol OTVideoCapture; 17 | 18 | @interface TBExampleMultiCamCapture : NSObject 19 | 20 | { 21 | 22 | } 23 | 24 | -(id)initWithCameraPosition:(AVCaptureDevicePosition)camPosition 25 | andAVMultiCamSession:(AVCaptureMultiCamSession *)multiCamSession 26 | useQueue:(dispatch_queue_t)capture_queue; 27 | - (void) setTorchMode:(AVCaptureTorchMode) torchMode; 28 | 29 | @property (nonatomic, weak) AVCaptureSession *captureSession; 30 | @property (nonatomic, retain) AVCaptureVideoDataOutput *videoOutput; 31 | @property (nonatomic, retain) AVCaptureDeviceInput *videoInput; 32 | 33 | @property (nonatomic, assign) AVCaptureDevicePosition cameraPosition; 34 | 35 | @end 36 | 37 | #endif /* TBExampleMultiCamCapture_h */ 38 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/Single-Cam-Capturer/TBExampleVideoCapture.h: -------------------------------------------------------------------------------- 1 | // 2 | // TBExampleVideoCapture.h 3 | // OpenTok iOS SDK 4 | // 5 | // Copyright (c) 2013 Tokbox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | #import 10 | #import 11 | 12 | @protocol OTVideoCapture; 13 | 14 | @protocol TBFrameCapturerMetadataDelegate 15 | - (void)finishPreparingFrame:(OTVideoFrame *)videoFrame; 16 | @end 17 | 18 | @interface TBExampleVideoCapture : NSObject 19 | { } 20 | 21 | @property (nonatomic, retain) AVCaptureSession *captureSession; 22 | @property (nonatomic, retain) AVCaptureVideoDataOutput *videoOutput; 23 | @property (nonatomic, retain) AVCaptureDeviceInput *videoInput; 24 | 25 | @property (nonatomic, assign) NSString* captureSessionPreset; 26 | @property (readonly) NSArray* availableCaptureSessionPresets; 27 | 28 | @property (nonatomic, assign) double activeFrameRate; 29 | - (BOOL)isAvailableActiveFrameRate:(double)frameRate; 30 | 31 | @property (nonatomic, assign) AVCaptureDevicePosition cameraPosition; 32 | @property (readonly) NSArray* availableCameraPositions; 33 | - (BOOL)toggleCameraPosition; 34 | 35 | @property (nonatomic, retain) id delegate; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/TBExampleVideoRender.h: -------------------------------------------------------------------------------- 1 | // 2 | // TBExampleVideoRender.h 3 | // 4 | // Copyright (c) 2014 Tokbox, Inc. All rights reserved. 5 | // 6 | 7 | #import 8 | #import 9 | #import 10 | 11 | @protocol TBRendererDelegate; 12 | 13 | @interface TBExampleVideoRender : UIView 14 | 15 | @property (nonatomic, assign) BOOL mirroring; 16 | @property (nonatomic, assign) BOOL renderingEnabled; 17 | @property (nonatomic, assign) id delegate; 18 | 19 | /* 20 | * Clears the render buffer to a black frame 21 | */ 22 | - (void)clearRenderBuffer; 23 | 24 | @end 25 | 26 | /** 27 | * Used to notify the owner of this renderer that frames are being received. 28 | * For our example, we'll use this to wire a notification to the subscriber's 29 | * delegate that video has arrived. 30 | */ 31 | @protocol TBRendererDelegate 32 | 33 | - (void)renderer:(TBExampleVideoRender*)renderer 34 | didReceiveFrame:(OTVideoFrame*)frame; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Lets-Build-OTPublisher 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface ViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Lets-Build-OTPublisher/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Lets-Build-OTPublisher 4 | // 5 | // Created by Charley Robinson on 12/16/13. 6 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Custom-Video-Driver/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Custom-Video-Driver' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Lets-Build-OTPublisher 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // Lets-Build-OTPublisher 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import "AppDelegate.h" 9 | 10 | @implementation AppDelegate 11 | 12 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 13 | { 14 | return YES; 15 | } 16 | 17 | - (void)applicationWillResignActive:(UIApplication *)application 18 | { 19 | 20 | } 21 | 22 | - (void)applicationDidEnterBackground:(UIApplication *)application 23 | { 24 | } 25 | 26 | - (void)applicationWillEnterForeground:(UIApplication *)application 27 | { 28 | } 29 | 30 | - (void)applicationDidBecomeActive:(UIApplication *)application 31 | { 32 | } 33 | 34 | - (void)applicationWillTerminate:(UIApplication *)application 35 | { 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata/Base.lproj/Main_iPad.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 | -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata/FrameMetadata.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Lets-Build-OTPublisher 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface ViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /FrameMetadata/FrameMetadata/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Lets-Build-OTPublisher 4 | // 5 | // Created by Charley Robinson on 12/16/13. 6 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /FrameMetadata/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'FrameMetadata' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013-2015 TokBox, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Live-Photo-Capture 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture/Base.lproj/Main_iPad.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 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture/Base.lproj/Main_iPhone.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 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture/Images.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" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "60x60", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "ipad", 20 | "size" : "29x29", 21 | "scale" : "1x" 22 | }, 23 | { 24 | "idiom" : "ipad", 25 | "size" : "29x29", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "ipad", 30 | "size" : "40x40", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "40x40", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "76x76", 41 | "scale" : "1x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "76x76", 46 | "scale" : "2x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture/Live-Photo-Capture-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture/TBExamplePhotoVideoCapture.h: -------------------------------------------------------------------------------- 1 | // 2 | // TBExampleVideoCapture+PhotoCapture.h 3 | // Live-Photo-Capture 4 | // 5 | // Created by Charley Robinson on 12/16/13. 6 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import "TBExampleVideoCapture.h" 10 | 11 | @interface TBExamplePhotoVideoCapture : TBExampleVideoCapture 12 | 13 | @property (readonly) BOOL isTakingPhoto; 14 | - (void)takePhotoWithCompletionHandler:(void (^)(UIImage* photo))block; 15 | 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Live-Photo-Capture 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface ViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Live-Photo-Capture/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Live-Photo-Capture 4 | // 5 | // Created by Charley Robinson on 12/16/13. 6 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Live-Photo-Capture/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Live-Photo-Capture' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /Media-Transformers/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Video Transformers Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | ## 2.25.2 6 | 7 | ### Added 8 | 9 | - Support pre-built transformers in the Vonage Media Processor library or create your own custom video transformer to apply to published video. 10 | 11 | ### Known issues 12 | 13 | - When using Vonage's Background Blur, the ML model is not being automatically added to the main bundle. It is required to be added manually: 14 | - Select the target for which you want to add the file. Go to the "Build Phases" tab. 15 | - Expand the "Copy Bundle Resources" section. 16 | - Click the "+" button to add a new file. A file picker dialog will appear. Choose ./Pods/VonageClientSDKVideo/OpenTok.xcframework/ios-arm64/OpenTok.framework/selfie_segmentation.tflite 17 | 18 | ### Fixed 19 | 20 | - NA 21 | 22 | ### Enhancements 23 | 24 | - NA 25 | 26 | ### Changed 27 | 28 | - NA 29 | 30 | ### Deprecated 31 | 32 | - NA 33 | -------------------------------------------------------------------------------- /Media-Transformers/Media-Transformers.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Media-Transformers/Media-Transformers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Media-Transformers/Media-Transformers.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Media-Transformers/Media-Transformers.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Media-Transformers/Media-Transformers/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Hello-World 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Media-Transformers/Media-Transformers/Base.lproj/Main_iPad.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 | -------------------------------------------------------------------------------- /Media-Transformers/Media-Transformers/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Media-Transformers/Media-Transformers/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Hello-World 4 | // 5 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface ViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Media-Transformers/Media-Transformers/Vonage_Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Media-Transformers/Media-Transformers/Vonage_Logo.png -------------------------------------------------------------------------------- /Media-Transformers/Media-Transformers/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Media-Transformers/Media-Transformers/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Hello-World 4 | // 5 | // Created by Charley Robinson on 12/16/13. 6 | // Copyright (c) 2013 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Media-Transformers/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Media-Transformers' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | pod 'VonageClientSDKVideoTransformers', OpenTokSDKVersion 9 | end 10 | -------------------------------------------------------------------------------- /OpenTokSDKVersion.rb: -------------------------------------------------------------------------------- 1 | OpenTokSDKVersion = '2.30.1' 2 | MinIosSdkVersion = '15.0' 3 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Overlay-Graphics 4 | // 5 | // Copyright (c) 2014 Tokbox. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/Base.lproj/Main_iPad.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 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/Base.lproj/Main_iPhone.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 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/Headset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/Headset.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/Headset@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/Headset@2x.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/Images.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" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "60x60", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "ipad", 20 | "size" : "29x29", 21 | "scale" : "1x" 22 | }, 23 | { 24 | "idiom" : "ipad", 25 | "size" : "29x29", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "ipad", 30 | "size" : "40x40", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "40x40", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "76x76", 41 | "scale" : "1x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "76x76", 46 | "scale" : "2x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/Overlay-Graphics-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/TBAudioLevelMeter.h: -------------------------------------------------------------------------------- 1 | // 2 | // TBAudioLevelMeter.h 3 | // TestAudioMeter 4 | // 5 | // Created by Sridhar on 02/06/14. 6 | // Copyright (c) 2014 Tokbox. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TBAudioLevelMeter : UIView 12 | { 13 | 14 | } 15 | @property(assign, nonatomic) CGFloat level; 16 | @property(assign, nonatomic) UIView* toucesPassToView; 17 | @end 18 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/TBExampleOverlayButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // OTOverlayButton.h 3 | // Overlay-Graphics 4 | // 5 | // Copyright (c) 2014 Tokbox, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @protocol TBExampleOverlayButtonDelegate; 11 | 12 | typedef enum { 13 | TBExampleOverlayButtonTypeMuteButton, 14 | TBExampleOverlayButtonTypeVolumeButton, 15 | TBExampleOverlayButtonTypeSwitchCameraButton 16 | } TBExampleOverlayButtonType; 17 | 18 | @interface TBExampleOverlayButton : UIButton 19 | 20 | @property (nonatomic) TBExampleOverlayButtonType type; 21 | @property (nonatomic, assign) id delegate; 22 | 23 | - (id)initWithFrame:(CGRect)frame 24 | overlayButtonType:(TBExampleOverlayButtonType)buttonType 25 | delegate:(id)delegate; 26 | 27 | @end 28 | 29 | @protocol TBExampleOverlayButtonDelegate 30 | 31 | - (void)overlayButtonWasSelected:(TBExampleOverlayButton*)button; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/TBExampleUnderlayView.h: -------------------------------------------------------------------------------- 1 | // 2 | // OTUnderlayView.h 3 | // Overlay-Graphics 4 | // 5 | // Copyright (c) 2014 TokBox. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | typedef enum { 11 | TBExampleUnderlayViewTypeSubscriber = 0, 12 | TBExampleUnderlayViewTypePublisher = 1 13 | } TBExampleUnderlayViewType; 14 | 15 | @interface TBExampleUnderlayView : UIView 16 | 17 | @property (nonatomic) BOOL audioActive; 18 | 19 | - (id)initWithFrame:(CGRect)frame; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/TBExampleVideoCapture.h: -------------------------------------------------------------------------------- 1 | ../../2.Lets-Build-OTPublisher/Lets-Build-OTPublisher/TBExampleVideoCapture.h -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/TBExampleVideoCapture.m: -------------------------------------------------------------------------------- 1 | ../../2.Lets-Build-OTPublisher/Lets-Build-OTPublisher/TBExampleVideoCapture.m -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/UIBezierPath+Additions.h: -------------------------------------------------------------------------------- 1 | /* 2 | Erica Sadun, http://ericasadun.com 3 | iPhone Developer's Cookbook, 6.x Edition 4 | BSD License, Use at your own risk 5 | */ 6 | 7 | #import 8 | 9 | #define POINT(_INDEX_) \ 10 | [(NSValue *)[points objectAtIndex:_INDEX_] CGPointValue] 11 | #define VALUE(_INDEX_) \ 12 | [NSValue valueWithCGPoint:points[_INDEX_]] 13 | 14 | @interface UIBezierPath (Additions) 15 | 16 | - (UIBezierPath *) fitInRect: (CGRect) destRect; 17 | - (NSArray *) points; 18 | + (UIBezierPath *) pathWithPoints: (NSArray *) points; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Overlay-Graphics 4 | // 5 | // Created by Sridhar on 28/02/14. 6 | // Copyright (c) 2014 Tokbox. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface ViewController : UIViewController 13 | { 14 | 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/archiving_off-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/archiving_off-Small.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/archiving_off-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/archiving_off-Small@2x.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/archiving_on-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/archiving_on-10.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/archiving_on-10@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/archiving_on-10@2x.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/archiving_pulse-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/archiving_pulse-Small.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/archiving_pulse-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/archiving_pulse-Small@2x.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/audioOnlyActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/audioOnlyActive.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/audioOnlyInactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/audioOnlyInactive.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/highCongestion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/highCongestion.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/libyuv.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 The LibYuv 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 INCLUDE_LIBYUV_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | #include "libyuv/compare.h" 16 | #include "libyuv/convert.h" 17 | #include "libyuv/convert_argb.h" 18 | #include "libyuv/convert_from.h" 19 | #include "libyuv/convert_from_argb.h" 20 | #include "libyuv/cpu_id.h" 21 | #include "libyuv/format_conversion.h" 22 | #include "libyuv/mjpeg_decoder.h" 23 | #include "libyuv/planar_functions.h" 24 | #include "libyuv/rotate.h" 25 | #include "libyuv/rotate_argb.h" 26 | #include "libyuv/row.h" 27 | #include "libyuv/scale.h" 28 | #include "libyuv/scale_argb.h" 29 | #include "libyuv/version.h" 30 | #include "libyuv/video_common.h" 31 | 32 | #endif // INCLUDE_LIBYUV_H_ NOLINT 33 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/libyuv/rotate_argb.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 The LibYuv 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 INCLUDE_LIBYUV_ROTATE_ARGB_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_ROTATE_ARGB_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | #include "libyuv/rotate.h" // For RotationMode. 16 | 17 | #ifdef __cplusplus 18 | namespace libyuv { 19 | extern "C" { 20 | #endif 21 | 22 | // Rotate ARGB frame 23 | LIBYUV_API 24 | int ARGBRotate(const uint8* src_argb, int src_stride_argb, 25 | uint8* dst_argb, int dst_stride_argb, 26 | int src_width, int src_height, enum RotationMode mode); 27 | 28 | #ifdef __cplusplus 29 | } // extern "C" 30 | } // namespace libyuv 31 | #endif 32 | 33 | #endif // INCLUDE_LIBYUV_ROTATE_ARGB_H_ NOLINT 34 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/libyuv/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 The LibYuv 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 INCLUDE_LIBYUV_VERSION_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_VERSION_H_ 13 | 14 | #define LIBYUV_VERSION 905 15 | 16 | #endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT 17 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Overlay-Graphics 4 | // 5 | // Created by Sridhar on 28/02/14. 6 | // Copyright (c) 2014 Tokbox. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/midCongestion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/midCongestion.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/mutePublisher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/mutePublisher.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/muteSubscriber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/muteSubscriber.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/silhouette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/silhouette.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/swapCamera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/swapCamera.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/unmutePublisher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/unmutePublisher.png -------------------------------------------------------------------------------- /Overlay-Graphics/Overlay-Graphics/unmuteSubscriber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Overlay-Graphics/Overlay-Graphics/unmuteSubscriber.png -------------------------------------------------------------------------------- /Overlay-Graphics/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Overlay-Graphics' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /Ringtones/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Ringtones' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /Ringtones/README.md: -------------------------------------------------------------------------------- 1 | Play a Ringtone 2 | ========================== 3 | 4 | This project extends on the work done in Project 3 (Custom-Audio-Driver) by 5 | extending the sample audio driver with an AVAudioPlayer controller, which will 6 | play a short ringtone while waiting for the subscriber to connect to the client 7 | device. 8 | 9 | The main controller is mostly the same as the previous, with an immediate call 10 | to set the audio device driver. In this sample, we add an additional call to our 11 | new audio device driver to begin playing back an audio file that will act as 12 | a ringtone: 13 | 14 | ``` 15 | NSString* path = [[NSBundle mainBundle] pathForResource:@"bananaphone" 16 | ofType:@"mp3"]; 17 | NSURL* url = [NSURL URLWithString:path]; 18 | [_myAudioDevice playRingtoneFromURL:url]; 19 | ``` 20 | 21 | Additionally, once the device has connected to a subscriber stream, a call is 22 | issued to stop playback of the ringtone: 23 | 24 | ``` 25 | - (void)subscriberDidConnectToStream:(OTSubscriberKit*)subscriber 26 | { 27 | NSLog(@"subscriberDidConnectToStream (%@)", 28 | subscriber.stream.connection.connectionId); 29 | 30 | // Stop ringtone from playing, as the subscriber will connect shortly 31 | [_myAudioDevice stopRingtone]; 32 | // ... 33 | } 34 | ``` 35 | 36 | *Important:* To use this application, follow the instructions in the 37 | [Quick Start](../README.md#quick-start) section of the main README file 38 | for this repository. 39 | 40 | Application Notes 41 | ----------------- 42 | 43 | * There is no timeout for the audio player. If the asset plays to completion or 44 | there is an error, all calls from OTAudioBus will be passed to the audio 45 | driver, and playback/capture for OpenTok will proceed as normal. 46 | 47 | * An additional tap gesture recognizer has been added to this sample to show 48 | and test that this sequence will work through multiple calls. The 49 | `resetSession` method is added to implement this workflow. 50 | -------------------------------------------------------------------------------- /Ringtones/Ringtones.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Ringtones/Ringtones.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Ringtones/Ringtones.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Ringtones/Ringtones.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Ringtones/Ringtones/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Ringtones 4 | // 5 | // Created by Charley Robinson on 2/16/16. 6 | // Copyright © 2016 TokBox, Inc. 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 | -------------------------------------------------------------------------------- /Ringtones/Ringtones/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | } 88 | ], 89 | "info" : { 90 | "version" : 1, 91 | "author" : "xcode" 92 | } 93 | } -------------------------------------------------------------------------------- /Ringtones/Ringtones/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 | -------------------------------------------------------------------------------- /Ringtones/Ringtones/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 | -------------------------------------------------------------------------------- /Ringtones/Ringtones/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UIBackgroundModes 26 | 27 | audio 28 | 29 | UILaunchStoryboardName 30 | LaunchScreen 31 | UIMainStoryboardFile 32 | Main 33 | UIRequiredDeviceCapabilities 34 | 35 | armv7 36 | 37 | UISupportedInterfaceOrientations 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationLandscapeLeft 41 | UIInterfaceOrientationLandscapeRight 42 | 43 | UISupportedInterfaceOrientations~ipad 44 | 45 | UIInterfaceOrientationPortrait 46 | UIInterfaceOrientationPortraitUpsideDown 47 | UIInterfaceOrientationLandscapeLeft 48 | UIInterfaceOrientationLandscapeRight 49 | 50 | NSCameraUsageDescription 51 | Opentok needs access to the camera to stream your video 52 | NSMicrophoneUsageDescription 53 | Opentok needs access to the microphone to stream your audio 54 | 55 | 56 | -------------------------------------------------------------------------------- /Ringtones/Ringtones/OTAudioDeviceRingtone.h: -------------------------------------------------------------------------------- 1 | // 2 | // OTAudioPlayer.h 3 | // Ringtones 4 | // 5 | // Created by Charley Robinson on 2/16/16. 6 | // Copyright © 2016 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | 10 | #import "OTDefaultAudioDevice.h" 11 | 12 | @interface OTAudioDeviceRingtone : OTDefaultAudioDevice 13 | 14 | @property (nonatomic) BOOL vibratesWithRingtone; 15 | 16 | - (instancetype) init __attribute__((unavailable("init not available, useinitWithRingtone:"))); 17 | - (instancetype)initWithRingtone:(NSURL *)url; 18 | 19 | // Immediately stops the ringtone and allows OpenTok audio calls to flow 20 | - (void)stopRingtone; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Ringtones/Ringtones/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Ringtones 4 | // 5 | // Created by Charley Robinson on 2/16/16. 6 | // Copyright © 2016 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Ringtones/Ringtones/bananaphone.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Ringtones/Ringtones/bananaphone.mp3 -------------------------------------------------------------------------------- /Ringtones/Ringtones/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Ringtones 4 | // 5 | // Created by Charley Robinson on 2/16/16. 6 | // Copyright © 2016 TokBox, Inc. 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 | -------------------------------------------------------------------------------- /Screen-Sharing/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Screen-Sharing' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Screen-Sharing 4 | // 5 | // Copyright (c) 2014 TokBox Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing/Screen-Sharing-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing/TBScreenCapture.h: -------------------------------------------------------------------------------- 1 | // 2 | // TBScreenCapture.h 3 | // Screen-Sharing 4 | // 5 | // Copyright (c) 2020 TokBox Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | #import 10 | 11 | @protocol OTVideoCapture; 12 | 13 | /** 14 | * Periodically sends video frames to an OpenTok Publisher by rendering the 15 | * CALayer for a UIView. 16 | */ 17 | @interface TBScreenCapture : NSObject 18 | 19 | @property(readonly) UIView* view; 20 | 21 | /** 22 | * Initializes a video capturer that will grab rendered stills of the view. 23 | */ 24 | - (instancetype)initWithView:(UIView*)view; 25 | 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Screen-Sharing 4 | // 5 | // Copyright (c) 2014 TokBox Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface ViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing/logo_opentok_registered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Screen-Sharing/Screen-Sharing/logo_opentok_registered.png -------------------------------------------------------------------------------- /Screen-Sharing/Screen-Sharing/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Screen-Sharing 4 | // 5 | // Created by Steve McFarlin on 8/27/14. 6 | // Copyright (c) 2014 TokBox Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Signaling/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Signaling' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /Signaling/README.md: -------------------------------------------------------------------------------- 1 | Signaling sample app 2 | ==================== 3 | 4 | This sample app shows how how to implement text chat using the OpenTok signaling API. 5 | For a full description, see the [Text Chat tutorial at the OpenTok developer 6 | center](https://tokbox.com/developer/tutorials/ios/text-chat/). 7 | -------------------------------------------------------------------------------- /Signaling/Signaling.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Signaling/Signaling.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Signaling/Signaling.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Signaling/Signaling.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Signaling/Signaling/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Getting Started 4 | // 5 | // Created by Swartz on 11/19/14. 6 | // Copyright (c) 2014 TokBox, Inc. 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 | -------------------------------------------------------------------------------- /Signaling/Signaling/Config.h: -------------------------------------------------------------------------------- 1 | // 2 | // Config.h 3 | // Getting Started 4 | // 5 | // Created by Swartz on 12/1/14. 6 | // Copyright (c) 2014 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #ifndef Getting_Started_Config_h 10 | #define Getting_Started_Config_h 11 | 12 | /* 13 | Set SAMPLE_SERVER_BASE_URL to the base URL of the web server that implements 14 | the OpenTok PHP Getting Started Sample code (see the main README file.) This 15 | web service handles some OpenTok-related API calls, related to obtaining 16 | session IDs and tokens, and for working with archives. 17 | */ 18 | 19 | #define SAMPLE_SERVER_BASE_URL @"https://YOUR-SERVER-URL" 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /Signaling/Signaling/Images.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 | } -------------------------------------------------------------------------------- /Signaling/Signaling/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | Learn OpenTok 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 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSRequiresIPhoneOS 26 | 27 | NSCameraUsageDescription 28 | This app accesses the camera for video communications. 29 | NSMicrophoneUsageDescription 30 | This app accesses the microphone for audio communications. 31 | UIBackgroundModes 32 | 33 | audio 34 | 35 | UILaunchStoryboardName 36 | LaunchScreen 37 | UIMainStoryboardFile 38 | Main 39 | UIRequiredDeviceCapabilities 40 | 41 | armv7 42 | 43 | UISupportedInterfaceOrientations 44 | 45 | UIInterfaceOrientationPortrait 46 | 47 | UISupportedInterfaceOrientations~ipad 48 | 49 | UIInterfaceOrientationPortrait 50 | UIInterfaceOrientationPortraitUpsideDown 51 | UIInterfaceOrientationLandscapeLeft 52 | UIInterfaceOrientationLandscapeRight 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /Signaling/Signaling/Subscriber-Speaker-35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Signaling/Signaling/Subscriber-Speaker-35.png -------------------------------------------------------------------------------- /Signaling/Signaling/Subscriber-Speaker-35@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Signaling/Signaling/Subscriber-Speaker-35@2x.png -------------------------------------------------------------------------------- /Signaling/Signaling/Subscriber-Speaker-Mute-35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Signaling/Signaling/Subscriber-Speaker-Mute-35.png -------------------------------------------------------------------------------- /Signaling/Signaling/Subscriber-Speaker-Mute-35@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Signaling/Signaling/Subscriber-Speaker-Mute-35@2x.png -------------------------------------------------------------------------------- /Signaling/Signaling/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Getting Started 4 | // 5 | // Created by Jeff Swartz on 11/19/14. 6 | // Copyright (c) 2014 TokBox, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "Config.h" 12 | 13 | @interface ViewController : UIViewController 14 | 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Signaling/Signaling/camera-switch_black-33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Signaling/Signaling/camera-switch_black-33.png -------------------------------------------------------------------------------- /Signaling/Signaling/camera_switch-33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Signaling/Signaling/camera_switch-33.png -------------------------------------------------------------------------------- /Signaling/Signaling/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LearningOpenTok 4 | // 5 | // Created by Swartz on 4/17/15. 6 | // Copyright (c) 2015 TokBox. 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 | -------------------------------------------------------------------------------- /Signaling/Signaling/mic-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Signaling/Signaling/mic-24.png -------------------------------------------------------------------------------- /Signaling/Signaling/mic_muted-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Signaling/Signaling/mic_muted-24.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Multi-Party-Call 4 | // 5 | // Created by Sridhar on 07/04/14. 6 | // Copyright (c) 2014 Tokbox. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/Bandwidth_meter_strong-23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/Bandwidth_meter_strong-23.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/Bandwidth_meter_strong-23@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/Bandwidth_meter_strong-23@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/Bandwidth_meter_weak-23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/Bandwidth_meter_weak-23.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/Bandwidth_meter_weak-23@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/Bandwidth_meter_weak-23@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/Images.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" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "60x60", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "ipad", 20 | "size" : "29x29", 21 | "scale" : "1x" 22 | }, 23 | { 24 | "idiom" : "ipad", 25 | "size" : "29x29", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "ipad", 30 | "size" : "40x40", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "40x40", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "76x76", 41 | "scale" : "1x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "76x76", 46 | "scale" : "2x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/Simple-Multiparty-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/Subscriber-Speaker-35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/Subscriber-Speaker-35.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/Subscriber-Speaker-35@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/Subscriber-Speaker-35@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/Subscriber-Speaker-Mute-35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/Subscriber-Speaker-Mute-35.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/Subscriber-Speaker-Mute-35@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/Subscriber-Speaker-Mute-35@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/TB Bug-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/TB Bug-30.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/TB Bug-30@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/TB Bug-30@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Multi-Party-Call 4 | // 5 | // Created by Sridhar on 07/04/14. 6 | // Copyright (c) 2014 Tokbox. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | @interface ViewController : UIViewController { 14 | 15 | } 16 | @property (strong, nonatomic) IBOutlet UIScrollView *videoContainerView; 17 | @property (strong, nonatomic) IBOutlet UIView *bottomOverlayView; 18 | @property (strong, nonatomic) IBOutlet UIView *topOverlayView; 19 | @property (retain, nonatomic) IBOutlet UIButton *cameraToggleButton; 20 | @property (retain, nonatomic) IBOutlet UIButton *audioPubUnpubButton; 21 | @property (retain, nonatomic) IBOutlet UILabel *userNameLabel; 22 | @property (retain, nonatomic) NSTimer *overlayTimer; 23 | @property (retain, nonatomic) IBOutlet UIButton *audioSubUnsubButton; 24 | @property (retain, nonatomic) IBOutlet UIButton *endCallButton; 25 | @property (retain, nonatomic) IBOutlet UIView *micSeparator; 26 | @property (retain, nonatomic) IBOutlet UIView *cameraSeparator; 27 | @property (retain, nonatomic) IBOutlet UIView *archiveOverlay; 28 | @property (retain, nonatomic) IBOutlet UILabel *archiveStatusLbl; 29 | @property (retain, nonatomic) IBOutlet UIImageView *archiveStatusImgView; 30 | @property (retain, nonatomic) IBOutlet UIImageView *rightArrowImgView; 31 | @property (retain, nonatomic) IBOutlet UIImageView *leftArrowImgView; 32 | @property (retain, nonatomic) IBOutlet UIImageView *archiveStatusImgView2; 33 | 34 | 35 | - (IBAction)toggleAudioSubscribe:(id)sender; 36 | - (IBAction)toggleCameraPosition:(id)sender; 37 | - (IBAction)toggleAudioPublish:(id)sender; 38 | - (IBAction)endCallAction:(UIButton *)button; 39 | @end -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/archiving-off-15@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/archiving-off-15@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/archiving_on-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/archiving_on-5.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/archiving_on-5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/archiving_on-5@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/archiving_pulse-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/archiving_pulse-15.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/camera-switch_black-33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/camera-switch_black-33.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/camera-switch_black-33@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/camera-switch_black-33@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/camera_switch-33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/camera_switch-33.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/camera_switch-33@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/camera_switch-33@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/icon_arrowLeft_disabled-28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/icon_arrowLeft_disabled-28.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/icon_arrowLeft_disabled-28@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/icon_arrowLeft_disabled-28@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/icon_arrowLeft_enabled-28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/icon_arrowLeft_enabled-28.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/icon_arrowLeft_enabled-28@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/icon_arrowLeft_enabled-28@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/icon_arrowRight_disabled-28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/icon_arrowRight_disabled-28.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/icon_arrowRight_disabled-28@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/icon_arrowRight_disabled-28@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/icon_arrowRight_enabled-28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/icon_arrowRight_enabled-28.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/icon_arrowRight_enabled-28@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/icon_arrowRight_enabled-28@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/libyuv.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 The LibYuv 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 INCLUDE_LIBYUV_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | #include "libyuv/compare.h" 16 | #include "libyuv/convert.h" 17 | #include "libyuv/convert_argb.h" 18 | #include "libyuv/convert_from.h" 19 | #include "libyuv/convert_from_argb.h" 20 | #include "libyuv/cpu_id.h" 21 | #include "libyuv/format_conversion.h" 22 | #include "libyuv/mjpeg_decoder.h" 23 | #include "libyuv/planar_functions.h" 24 | #include "libyuv/rotate.h" 25 | #include "libyuv/rotate_argb.h" 26 | #include "libyuv/row.h" 27 | #include "libyuv/scale.h" 28 | #include "libyuv/scale_argb.h" 29 | #include "libyuv/version.h" 30 | #include "libyuv/video_common.h" 31 | 32 | #endif // INCLUDE_LIBYUV_H_ NOLINT 33 | -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/libyuv/rotate_argb.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 The LibYuv 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 INCLUDE_LIBYUV_ROTATE_ARGB_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_ROTATE_ARGB_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | #include "libyuv/rotate.h" // For RotationMode. 16 | 17 | #ifdef __cplusplus 18 | namespace libyuv { 19 | extern "C" { 20 | #endif 21 | 22 | // Rotate ARGB frame 23 | LIBYUV_API 24 | int ARGBRotate(const uint8* src_argb, int src_stride_argb, 25 | uint8* dst_argb, int dst_stride_argb, 26 | int src_width, int src_height, enum RotationMode mode); 27 | 28 | #ifdef __cplusplus 29 | } // extern "C" 30 | } // namespace libyuv 31 | #endif 32 | 33 | #endif // INCLUDE_LIBYUV_ROTATE_ARGB_H_ NOLINT 34 | -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/libyuv/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 The LibYuv 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 INCLUDE_LIBYUV_VERSION_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_VERSION_H_ 13 | 14 | #define LIBYUV_VERSION 905 15 | 16 | #endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT 17 | -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Multi-Party-Call 4 | // 5 | // Created by Sridhar on 07/04/14. 6 | // Copyright (c) 2014 Tokbox. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/mic-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/mic-24.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/mic-24@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/mic-24@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/mic_muted-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/mic_muted-24.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/mic_muted-24@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/mic_muted-24@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/mic_receiving_data-35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/mic_receiving_data-35.png -------------------------------------------------------------------------------- /Simple-Multiparty/Multi-Party-Call/mic_receiving_data-35@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opentok/opentok-ios-sdk-samples/257276c91e2879893b0aaee394e1d3f4e9cc81bf/Simple-Multiparty/Multi-Party-Call/mic_receiving_data-35@2x.png -------------------------------------------------------------------------------- /Simple-Multiparty/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../OpenTokSDKVersion' 2 | 3 | platform :ios, MinIosSdkVersion 4 | use_frameworks! 5 | 6 | target 'Simple-Multiparty' do 7 | pod 'OTXCFramework', OpenTokSDKVersion 8 | end 9 | -------------------------------------------------------------------------------- /Simple-Multiparty/README.md: -------------------------------------------------------------------------------- 1 | Simple Multi Party 2 | ================================== 3 | 4 | This project shows how to use the OpenTok iOS SDK to develop a multi-party call 5 | (one publisher, N subscribers with only one subscriber video enabled at a time). 6 | By the end of a code review, you will learn how to use the OpenTok iOS SDK to 7 | add a multi-party call to an app. 8 | 9 | This example also shows how to display an indicator when the session is being 10 | archived. (See the [Archiving overview][1] documentation.) 11 | 12 | *Important:* To use this application, follow the instructions in the 13 | [Quick Start](../README.md#quick-start) section of the main README file 14 | for this repository. 15 | 16 | Application Notes 17 | ----------------- 18 | 19 | * This sample shows a publisher bar (bottom), subscriber bar (top), and an 20 | archiving overlay. 21 | 22 | * The publisher bar has buttons to toggle the publisher's camera and to 23 | mute and unmute the publisher's audio. 24 | 25 | * The subscriber bar has a button to enable and disable the subscriber's 26 | audio. 27 | 28 | * Swipe right/left to navigate to the next/previous subscriber in the session. 29 | 30 | * Use one of the [OpenTok server SDKs][2] or the [OpenTok REST API][3] to start 31 | archiving the session. Note that you must use a session with the 32 | [media mode][4] set to "routed" in order to use archiving. When archiving 33 | begins the `[OTSessionDelegate session:archiveStartedWithId:name:]` message 34 | is sent. 35 | 36 | [1]: https://tokbox.com/opentok/tutorials/archiving/ 37 | [2]: https://tokbox.com/opentok/libraries/server/ 38 | [3]: https://tokbox.com/opentok/api/ 39 | [4]: https://tokbox.com/opentok/tutorials/create-session/#media-mode 40 | -------------------------------------------------------------------------------- /Simple-Multiparty/Simple-Multiparty.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Simple-Multiparty/Simple-Multiparty.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Simple-Multiparty/Simple-Multiparty.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Simple-Multiparty/Simple-Multiparty.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | --------------------------------------------------------------------------------