Git Product home page Git Product logo

twilio-video-ios's Introduction

Twilio Programmable Video for iOS

Warning

We are no longer allowing new customers to onboard to Twilio Video. Effective December 5th, 2024, Twilio Video will End of Life (EOL) and will cease to function for all customers. Customers may transition to any video provider they choose, however, we are recommending customers migrate to the Zoom Video SDK and we have prepared a Migration Guide. Additional information on this EOL is available in our Help Center here.

This repository contains releases of Twilio's Programmable Video SDK for iOS. These releases can be consumed using Swift Package Manager, CocoaPods or manual integration into your project.

Swift Package Manager

You can add Programmable Video for iOS by adding the https://github.com/twilio/twilio-video-ios repository as a Swift Package.

In your Build Settings, you will also need to modify Other Linker Flags to include -ObjC.

As of the latest release of Xcode (currently 12.3), there is a known issue with consuming binary frameworks distributed via Swift Package Manager. The current workaround to this issue is to add a Run Script Phase to the Build Phases of your Xcode project. This Run Script Phase should come after the Embed Frameworks build phase. This new Run Script Phase should contain the following code:

find "${CODESIGNING_FOLDER_PATH}" -name '*.framework' -print0 | while read -d $'\0' framework
do
    codesign --force --deep --sign "${EXPANDED_CODE_SIGN_IDENTITY}" --preserve-metadata=identifier,entitlements --timestamp=none "${framework}"
done

CocoaPods Integration

We support integration using CocoaPods as well. You can add Programmable Video to your project using the following example Podfile:

source 'https://github.com/CocoaPods/Specs'

platform :ios, '12.2'

target 'TARGET_NAME' do
    pod 'TwilioVideo', '~> 5.8'
end

Then run pod install to install the dependencies for your project.

Manual Integration

See manual installation steps.

Carthage Integration

Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with .xcframeworks as documented here. Once Carthage supports binary .xcframeworks, Carthage distribution will be re-added.

Issues and Support

Please file any issues you find here on Github.

Please ensure that you are not sharing any Personally Identifiable Information(PII) or sensitive account information (API keys, credentials, etc.) when reporting an issue.

For general inquiries related to the Video SDK you can file a support ticket.

License

Twilio Programmable Video for iOS is distributed under TWILIO-TOS.

twilio-video-ios's People

Contributors

alanscarpa avatar ceaglest avatar chpatelv avatar dipankadas avatar idelgado avatar paynerc avatar piyushtank avatar wolfspy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

twilio-video-ios's Issues

`UI API called from background thread Group` has occurred in Twilio Video 2.0.0

Hi! Thank you for your SDK!

I use your SDK in my iOS app that using ARKit in Japan.

When I use Twilio Video 2.0.0, The following alert has occurred!
Please check.

Description

When participantDidDisconnect , The alert (UI API called from background thread Group) has occurred.

Steps to Reproduce

  1. connect to twilio room
room = TwilioVideo.connect(with: options, delegate: self)
  1. disconnected by partner exited
func room(_ room: TVIRoom, participantDidDisconnect participant: TVIRemoteParticipant) {
    delegate?.participantDidDisconnect(participant.identity)
}
  1. Then, alert about Main Thread has occurred.

Expected Behavior

UI API should be called from background thread

Actual Behavior

These alert.

runtime: UI API called from background thread: -[UIView setTransform:] must be used from main thread only

runtime: UI API called from background thread: -[UIView setNeedsLayout] must be used from main thread only

Logs

2018-04-29 20 50 14

Video iOS SDK

2.0.0 via CocoaPods

Xcode

9.3

iOS Version

11.3

iOS Device

iPhone 8, iPhoneX

It's possible for user to connect to completed room

Description

It's possible for iOS to connect to completed room.

Steps to Reproduce

  1. Create room
  2. Complete it with rest api
  3. Try connecting to completed room.

Expected Behavior

User is not connected with error.

Actual Behavior

User is connected.
- (void)didConnectToRoom:(nonnull TVIRoom *)room; is called

Reproduces How Often

100%. Easy to reproduce.

Logs

There are no logs from Twilio at all.

Versions

All relevant version information for the issue.

Video iOS SDK

2.10.0

Xcode

10.2

iOS Version

iOS10, iOS12

iOS Device

iPhone 5, iPhone 6

Memory issues in broadcast upload extensions when using VP8

Description

We are encountering memory issues in broadcast extensions when trying to create P2P rooms with:

  • an iOS participant providing the video track through a broadcast extension
  • a couple of participants just viewing the video track (all participants have preferred video codecs set to H.264)
  • at least one participant subscribing to the video track on an Android device which does not support H.264 hardware support

We are already downscaling the video quality to reduce memory usage, and also downscaling dynamically based on system memory warnings, but when a participant joins a multi-person P2P room requiring a VP8 codec for video, the broadcast extension crashes fairly quickly due to exceeding memory limits.

We were hoping this was an edge case, but did some testing and found there are quite a few devices which don't have hardware support for H.264 (a few we personally tested are listed below).

Questions

  1. Am I correct in assuming there is an encoder created per participant, even if multiple participant connections are using the same codecs?
  2. Are there any plans/technical barriers to making use of shared encoders on a video track provider?
  3. Is there anything you recommend we do to optimise memory usage in a P2P room?

Memory stats

It looks like each H.264 compatible participant added to the room increases memory usage by about 2.5MB (an encoder per participant?), but when a participant without this capability joins, it falls back to using VP8 which requires upto 15MB of memory to encode.

Android problem devices

Encountered devices which do not have H.264 hardware support (mid-level devices from manufacturers based in China/East-Asia seem to especially not provide H.264 hardware support):

  • Leagoo Kiicaa Power
  • Elephone P8 mini
  • HomTom S8 (though the spec sheet suggests it does?)

Versions

Video iOS SDK

TwilioVideo v2.1 via CocoaPods

Xcode

Xcode v9.4.1

iOS Version

iOS 11.4

iOS Device

iPhone 7
iPhone X

ReplayKit ending a streaming session leaves the last frame frozen.

Description

I am trying to share the devices screen to a twilio chat room via a broadcast extension. The stream starts but when I stop it from the control centre UI the last frame of the stream is still being presented.

Steps to Reproduce

  1. Share screen via broadcast extension to other users (they are connected to the room via web)
  2. Stop broadcast extension streaming

Expected Behavior

The video stream stops and the default UI is restored.

Actual Behavior

The video stream stops and the last frame in the stream is presented indefinitely.

Reproduces How Often

Seem to reproduce 100%

Versions

I have reproduced this issue with the code in the ReplayKit Example.

Xcode

10.2

iOS Version

12.2

iOS Device

All iPhone

Twilio in Broadcast Upload Extension

Hi,

I'm trying to implement a Broadcast Upload Extension using Twilio and I seem to be having issues with memory usage causing the extension to crash due to memory pressure.

I've created a custom TVIVideoCapturer class based off your example, with the main difference being that since this is an upload extension, I'm being provided with sample buffers, rather than having to grab frames off a view myself.

So, my (simplified) general approach is:

  1. Receive CMSampleBuffer from extension's processSampleBuffer() method
  2. convert CMSampleBuffer to CVImageBuffer
  3. create TVIVideoFrame from CVImageBuffer
  4. call consumeCapturedFrame() on my capture consumer

The conversion from CMSampleBuffer to CVImageBuffer seems to be working as expected, but after consuming a few frames my extension receives memory warnings and crashes. I've tried tweaking the resolution and frame rate of the supported format in my capturer, but it doesn't seem to make a difference.

Do you have any ideas or advice?

Thanks

TVIRoom object deallocs too long(2-6 seconds) and blocks UI thread.

Description

TVIRoom object deallocs too long(2-6 seconds) and blocks UI thread in case user disconnects right after connect.

Code

        room = TwilioVideo.connect(with: connectOptions, delegate: self)
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .milliseconds(500)) {
            self.room?.disconnect() - // this string can be commented, result is the same
            NSLog("Start")
            self.room = nil
            NSLog("End")
        }

Expected Behavior

self.room = nil //happens instantly

Actual Behavior

self.room = nil //takes too much time 2-6 seconds

Reproduces How Often

Something like 30%

Logs

Please take a look at timestamps here

2019-05-16 13:36:09.246784+0300 VideoQuickStart[10011:2805617] Start
2019-05-16 13:36:13.789122+0300 VideoQuickStart[10011:2805617] End

Versions

All relevant version information for the issue.

Video iOS SDK

2.1.0 via CocoaPods

Xcode

10.2

iOS Version

10.3.3, 11.3.1

iOS Device

iPhone 5, iPhone 7

Peer-to-Peer Rooms: Mic Capture in background gets disabled when Room is empty

Description

When capturing the mic in an app that supports background audio connected to a Twilio room, the mic will be deactivated as soon as the app goes to the background if no one else is currently in the room.

Steps to Reproduce

  1. Enable Background Audio modes in the app
  2. Connect to a Twilio room on device A
  3. Connect on another device (device B) and verify that device A's mic is being captured
  4. Background the app on device A, verify that the mic is still being sent to device B
  5. Leave the room on device B, note that the red mic indicator disappears on device A
  6. Reconnect to the room with device B.

Code

This can be reproduced on the video-quickstart app with no code changes, just enable the background audio capability.

Expected Behavior

Device B should reconnect and the audio should still be transmitted in both directions

Actual Behavior

Device A's mic is no longer being captured, and device B's audio is no longer being played on device A.

Reproduces How Often

100%

Versions

Video iOS SDK

2.4.0 via cocoapods

Xcode

10

iOS Version

12.0

iOS Device

iPhone X, 6S+, 7. Pretty sure it's all devices.

Replay Kit Conference not working

Hi I am using replay kit example provided by you and I am facing issue during start conference when I hit start conference button I show an error like. "Recording interrupted by multitasking and content resizing".

please help thanks.

TwilioVideo.connect can return nil according to docs but that is not possible

I believe the TwilioVideo.connect method could return nil once, but that is not the case anymore and the documentation needs an update.

The case where nil was returned previously is now going to the delegate I assume?

From the public header file:

/**
 *  @brief Connect to a Room with options and a delegate.
 *
 *  @param options  The connect options.
 *  @param delegate A delegate conforming to `TVIRoomDelegate` for handling Room related events.
 *
 *  @return An instance of `TVIRoom` if successful and `nil` otherwise.
 */
+ (nonnull TVIRoom *)connectWithOptions:(nonnull TVIConnectOptions *)options
                               delegate:(nullable id<TVIRoomDelegate>)delegate;

Video iOS SDK

[2.0.0 via CocoaPods]

ARKit & Screen Sharing

I am looking for functionality to develop where two or more people can share one screen among them, which is ARKit Sceneview

Now Everyone is able to draw things in the real world using ARKIT (adding 3D objects). And also able to talk using a microphone.

is it possible using twilo-video-demo ?

Difference between Publish methods returning BOOL an delegate callback methods

Hey, this is more a "help-wanted" issue.

- (BOOL)publishVideoTrack:(nonnull TVILocalVideoTrack *)track and similar methods (video/audio/data) on TVILocalParticipant all return BOOL indicating success

@return YES if the track was unpublished successfully, NO otherwise.

On the other hand we have the TVILocalParticipantDelegate methods for indicating success
- (void)localParticipant:(nonnull TVILocalParticipant *)participant publishedVideoTrack:(nonnull TVILocalVideoTrackPublication *)publishedVideoTrack

@brief Delegate method called when the Local Participant successfully publishes a video track.

I would like to know the difference between the two. I assume that the returned BOOL will only be NO if some precondition is not met (i.e. room not connected anymore or similar). While the delegate method is invoked if there is a problem contacting the server.

If my assumptions are correct I guess the returned BOOL can be YES and the delegate error callback could be invoked afterwards.

Also if the BOOL returned is NO will the delegate error callback be invoked at all?

Looking forward for your comments on this.
Thanks.

Video not rendering on caller side

Description:

We have implemented Twilio ios SDK. After connecting to room video is not rendering at caller end. We are using call kit with VoIP notification to get the call from the caller. User A makes to User B. User B receives notification, on receiving notification we have a custom delegate from which User B makes an API call and that API return Twilio video token and User B connects to the room, same API send a notification to User A and using that token User A also connects to the same room. But in this User A is not able to see the video of User B. In India calling is working perfectly but in US (New York) video is breaking at Caller side.

Steps to Reproduce:

  1. Kill the app try making the call.
  2. Put the app in background meanwhile, use another app and try making the call.
  3. Put the app in the background, lock the device and try making the call.

Code

TwilioVideo.zip

Expected Behavior

The video should be available on both the user's devices. Self and remote view both should be visible.

Actual Behavior

Remote video is not showing at Caller side.

Reproduces How Often

In US(New York) region 6/10 times.
In US(Atlanta) it's working fine.
In India, it's working fine.

All relevant version information for the issue.

Video iOS SDK

pod 'TwilioVideo', '~> 2.5'

Xcode

10.1

iOS Version

12.1

iOS Device

iPod touch, iPhone 6, iPhone 7

Thanks,
Sandeep Khore

Firefox 63+ incompatibility with Mobile SDKs 1.X/2.X in P2P Rooms

Firefox 63 introduced a new SDP format for data channel negotiation. This new SDP format has caused incompatibility with Android and iOS Video SDK 1.x and 2.x when used with P2P Rooms.

What is the impact?

In a P2P room, mobile participants using an affected mobile SDK version, will not receive any media or data tracks published by Firefox 63 participants.

Is my app impacted by this change?

The following table shows the impacted mobile SDK versions and the recommended upgrade path:

Twilio Video SDK Affected versions Recommended Upgrade path
Android SDK 1.X & 2.X 3.0.0 +
iOS SDK 1.0.0 - 2.2.2 2.3.0 +

I am impacted, what should I do?

Please refer to the upgrade paths listed above and the following guides for performing the upgrades:

Additional Resources

Disconnected from room at 1:30 when answer via CallKit and device remains locked

Description

When answering an incoming call via CallKit, if the user does not unlock the device after accepting the call, the call will drop after 1:30 (one minute and thirty seconds).

Preconditions

  • Ensure Device B has a device passcode enabled.

Steps to Reproduce

  1. Run an instances of VideoCallKitQuickStart on two devices
  2. On Device A, join the designated room (e.g. Room 5)
  3. On Device B, use the "Simulate Incoming Call" button and enter the same room as in step 2.
  4. On Device B, before the incoming call is received, lock the device
  5. On Device B, answer the incoming call without unlocking the device
  6. On Device A, confirm that Device B has joined the room
  7. Wait for ~1:30

Code

n/a - it happens in the stock VideoCallKitQuickStart.

Expected Behavior

Device B should not be dropped from the room.

Actual Behavior

  • Device B disconnected from the room as observed from another device that is active in the room. (See screenshot A)
  • On Device B, the iOS CallKit screen continues to show the call as active (See Screenshot B), giving the user no visual indication that the call has dropped.
  • At 2:00 mark, an error message from Device B is printed to the console (see the Log section below) and when the phone is unlocked, the error message is displayed in the app (See Screenshot C)

Reproduces How Often

  • 100% of the time across several different apps.
  • Reproducible on the VideoCallKitQuickStart build
  • Reproducible on two of the apps we build

Logs

No log entries are entered at 1:30, but at 2:00, the following entries appear in the console:

2018-11-08 10:46:14.994528-0700 VideoCallKitQuickStart[1582:625390] Unsubscribed from video track for Participant Roger
2018-11-08 10:46:15.087347-0700 VideoCallKitQuickStart[1582:625390] Disconncted from room MFI-1584, error = Optional(Error Domain=com.twilio.video Code=53000 "Signaling connection error" UserInfo={NSLocalizedDescription=Signaling connection error, NSLocalizedFailureReason=Unable to re-establish signaling connection to Twilio})
2018-11-08 10:46:15.099656-0700 VideoCallKitQuickStart[1582:625473] [avas] AVAudioSessionPortImpl.mm:56:ValidateRequiredFields: Unknown selected data source for Port Speaker (type: Speaker)
2018-11-08 10:46:15.101739-0700 VideoCallKitQuickStart[1582:625473] [avas] AVAudioSessionPortImpl.mm:56:ValidateRequiredFields: Unknown selected data source for Port Speaker (type: Speaker)
2018-11-08 10:46:15.102163-0700 VideoCallKitQuickStart[1582:625473] [avas] AVAudioSessionPortImpl.mm:56:ValidateRequiredFields: Unknown selected data source for Port Speaker (type: Speaker)

Versions

Video iOS SDK

2.5.3 via Cocoapods (also tested back to 1.3.10)

Xcode

9.3
10.0

iOS Version

11.3
12.0
12.1

iOS Device

iPhone X
iPhone 6s
iPhone 8

screenshot a
screenshot b
screenshot c

No audio when answer from background

Hello there,

Description

I am currently working on a POC for a chat application between two users. We are creating twilio rooms in our backend and then, we communicate through our API the room id and the access token needed to connect both users in the created room. It works pretty well (audio & video) when both applications are active.
On the called side, I am trying to answer a call with CallKit when my app is killed and my device is locked.

The app seems to works well if you look at the logs below

2018/04/20 16:45:43:696  didAnswer
2018/04/20 16:45:44:031  Connecting to room : Optional(<TVILocalAudioTrack: 0x1c0249f00>) - Optional(<TVILocalVideoTrack: 0x1c0467100>)
2018/04/20 16:45:44:963  Connected to room : Optional(<TVILocalAudioTrack: 0x1c0249f00>) - Optional(<TVILocalVideoTrack: 0x1c0467100>)
2018/04/20 16:45:44:970  Speaker error : Error Domain=NSOSStatusErrorDomain Code=1701737535 "(null)"

The called user is connected to the room, however, I've got no audio. Even if, the audio local track seems to be instantiated.
As you can see in the last line of the logs, I've got an error when I am trying to execute the following code

do {
            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, mode: AVAudioSessionModeVoiceChat, options: .mixWithOthers)
            try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
            try AVAudioSession.sharedInstance().setActive(true)
        } catch {
            DDLogInfo("Speaker error : \(error)")
        }

I have set "audio" and "voip" as background modes of my app.
I am a stuck there. I don't really know where to look for some hints about this error.

Have you experienced errors like this?
Do you have any advices about where this problem might come from?

Thanks a lot.

Versions

Video iOS SDK

1.4.0 via CocoaPods

Xcode

9.3

iOS Version

iOS 11.1.2

iOS Device

iPhone 6

Rename WebRTC classes inside TwilioVideo

Description

When installing TwilioVideo with another WebRTC framework together, Xcode compiler will complain about duplicate objc class names.

Our app is running fine since we are trying to use the smiliar version of the WebRTC that included in your library.

My request is change all WebRTC symbols to something unique to your framework. e.g. TwilioRTCXXX

Steps to Reproduce

  1. Use quickstart project, and install another pod that is or uses WebRTC
  2. Import the framework and run the app.

Code

add to podfile

pod 'GoogleWebRTC'

Expected Behavior

No warnings coming from the compiler.

Actual Behavior

The compiler complains about duplicate WebRTC class names and will lead to indeterministic behavior on different platforms.

Reproduces How Often

100%

Logs

objc[4675]: Class RTCVideoFrame is implemented in both /private/var/containers/Bundle/Application/E00E00E0-9DA1-48C0-84B0-7F73D6D33AA7/XXX.app/Frameworks/WebRTC.framework/WebRTC (0x10b4e8058) and /private/var/containers/Bundle/Application/E00E00E0-9DA1-48C0-84B0-7F73D6D33AA7/XXX.app/Frameworks/TwilioVideo.framework/TwilioVideo (0x10750a4c8). One of the two will be used. Which one is undefined.

and two dozens of the same

Versions

All

Video iOS SDK

2.3.0-preview1 via CocoaPods

Xcode

9.4.1

iOS Version

11.4.1

iOS Device

all

Random disconnects

Description

Users disconnect from rooms suddenly. Their bandwidth and connections seem to be ok, and we are having trouble debugging this.

Is there a way to get signaling logs for Room ids?

Steps to Reproduce

Hard to reproduce, but we have room ids:
RM7b524933415cc8c076a890e6fd83aadf
RMadf65284a9e6124c16d13ac2bf30a7ae

I can probably dig up more.

Code

The code is similar to the sample code, I can provide specific parts if needed.

Expected Behavior

Not disconnect or receive some callback as to why.

Actual Behavior

Disconnects

Reproduces How Often

Not often, less than 1% of calls. Calls are between iOS (and Android) clients and a representative of ours using a browser with the js library.

Logs

We see a participant disconnected callback on the web/js side.

Versions

ios 2.7.0
js 2.0.0-beta4

Video iOS SDK

above

Xcode

10

iOS Version

12.2

iOS Device

7 plus

iOS max encoders limitation issue

This issue is mentioned in the Twilio changelog under known issues:

Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.

I just wanted to have this tracked against an issue, and to find out what the status is? (I can't find a related open issue). Sorry for being a nuisance. 😉

The issue is quiet severe, as it limits the ability to create cross-platform multi-party P2P rooms, as only an Android device can provide video tracks to more than three other participants. Can you give any progress updates on this issue, or an ETA on a fix?

Video iOS SDK

TwilioVideo v2.1 via CocoaPods

Unable to share AVCaptureVideoPreviewLayer with screenshare

Hi, I am trying to share one view with small camera feed in it, but it is not rendering the camera feed, I am using AVCaptureVideoPreviewLayer for the camera feed, is there any thing else I need to do, or it is not possible. If it is not possible is there any wayaround?
Here is my code:

let capturer: TVIVideoCapturer = TVIScreenCapturer.init(view: sharedView)
    if localVideoTrack != nil {
        localVideoTrack = nil
    }
    
    localVideoTrack = TVILocalVideoTrack.init(capturer: capturer, enabled: true, constraints: nil, name: "Screen")
    
    if localAudioTrack != nil {
        localAudioTrack = nil
    }
    localAudioTrack = TVILocalAudioTrack.init()
    
    let connectOptions = TVIConnectOptions.init(token: accessToken) { (builder) in
        builder.roomName = roomName
        builder.videoTracks = [self.localVideoTrack!]
        builder.audioTracks = [self.localAudioTrack!]
    }

sharedView is AVCaptureVideoPreviewLayer

TwilioVideo's main thread use rate is large.

Hello! Thank you for resolving the issue #9 before this!

This time, I am facing with the problem. Not reporting a bug.

About

As you can see the below image, TwilioVideo SDK's Main thread use rate has a large percentage.

2018-05-18 19 05 13

Description

Especially when I used the device which performance is not so good such as iPhone7Plus, The frame rate falls instantly on my app.😱

I thought that is because something use Main thread too much, so I researched about it using Timer Profiler In Instrument.

Then, I found the TwilioVideo SDK uses Main thread so much.

If I called Twilio API in background thread (like below code), the situation did not change..

let captureQueue = DispatchQueue(label: "hogehoge.twilio-capture")
let sendQueue = DispatchQueue(label: "hogehoge.twilio-send")
let delegateQueue = DispatchQueue(label: "hogehoge.twilio-delegate")

func connect() {
    captureQueue.async {
        let block = { [weak self] (_ builder: TVIConnectOptionsBuilder) in
            builder.delegateQueue = wSelf.delegateQueue
        }
        let options = TVIConnectOptions(token: self.accessToken, block: { (_ builder: TVIConnectOptionsBuilder) -> Void in
            block(builder)
        })
        self.tviRoom = TwilioVideo.connect(with: options, delegate: self)
    }
}

func send(data: Data){
    guard let dataTrack = dataTrack else { return }
    sendQueue.async {
        dataTrack.send(data)
    }
}

If there's something I can do for resolving this, give me some advice! And If this SDK has room for improvement for this, I hope updating! 👍

By the way, my app is sending SceneView's capture using TwilioVideo. But, SceneView is not related to this issue, I think.

Steps to Reproduce

Just connect TwilioVideo with some devices.

Expected Behavior

TwilioVideo's Main thread use rate will be small.

Actual Behavior

TwilioVideo's Main thread use rate is large.

Reproduces How Often

Everytime.

Video iOS SDK

TwilioVideo 2.0.1 via CocoaPods

Xcode

9.3

iOS Version

iOS 11.2.5

iOS Device

Especially iPhone7Plus.

I test using iPhone8, iPhone7Plus, iPhoneSE, iPhoneX

The performance rank is like below(My feeling). It is sorted by good Performance

iPhone8 > iPhoneX > iPhoneSE > iPhone7Plus

Thank you.

Kei

Test Issue

Description

Carthage is the best!

Steps to Reproduce

None!

Bluetooth audio through CallKit stops after device goes to sleep

Description

Bluetooth audio through CallKit stops after device goes to sleep

Steps to Reproduce

  1. Device 1 is using bluetooth headphones, lock the screen to make sure the call is answered through CallKit
  2. Device 2 calls Device 1. Call connects as expected. On Device 1's CallKit screen, it should show the audio is going through bluetooth headphones.
  3. Let Device 1 go to sleep or simply lock the screen, notice audio is lost on both Device 1 and Device 2

Code

Use the CallKit demo code from

https://github.com/twilio/video-quickstart-swift/blob/master/VideoCallKitQuickStart/ViewController%2BCallKit.swift

Expected Behavior

The audio should not be lost.

Actual Behavior

audio is lost. When Device 1 is active again, the audio will work again.

Reproduces How Often

100%

Logs

// Log output when the issue occurs

Versions

2.1.0
2.2.1

Video iOS SDK

2.1.0
2.2.1

Xcode

9.4

iOS Version

iOS 11

iOS Device

all devices.

Capturing popover?

I'm capturing a view and attaching as a track to a room. When I display popovers, because they are a separate view, they are not captured. Is there an easy way to capture them as well?

End the video call before didActivate function is called

Description

I am working on a video call application so I using Twilio for that in the app every things work fine except one thing .. that when I start to connect two person with each other and before the didActivate function is called I click the home button of the phone so this make the didActivate not called .. and then I do the following to close the connection in the code (swift 4) and call this function with notification from the AppDelegete

Code

if let room = room, let uuid = room.uuid {
performEndCallAction(uuid: uuid)
}
self.audioDevice.isEnabled = false
self.localAudioTrack?.isEnabled = false
self.audioDevice.block()
self.localVideoTrack?.isEnabled = false
self.localVideoTrack = nil

Expected Behavior

the app should close the call without any problem or popup screen

Actual Behavior

the app show me the 'failed call' screen ..

Versions

All relevant version information for the issue.

Video iOS SDK

pod 'TwilioVideo'

Xcode

9.4

iOS Version

11.4

iOS Device

IPad Air 2
Iphone 6 +

Room connecting (TwilioVideo.connect) is really slow

Description

Room connecting with TwilioVideo.connect(with: connectOptions, delegate: self) is really slow. After this method is called, the TVIRoomDelegate callback didConnect(to room: TVIRoom) fires after 4 seconds (fastest, still bad but acceptable), or even 18 seconds (slowest that I met, not acceptable) later.

This is really not good for an instant VoIP app.

One note is I didn't meet this issue before (not sure from when) with same setup and test devices, versions.

Steps to Reproduce

  1. Add the SDK, set it up with own credentials
  2. Call TwilioVideo.connect(with: connectOptions, delegate: self) to connect to a room (that was created in another side)
  3. Wait for the didConnect(to room: TVIRoom) callback fires, log the different time

Code

TwilioVideo.connect(with: connectOptions, delegate: self)

Expected Behavior

didConnect(to room: TVIRoom) should fire after some seconds

Actual Behavior

It fires after 4 - 18 seconds

Reproduces How Often

Mostly around 6 - 8 seconds. Around 20% at 4 seconds. Around 5% at 18 seconds or so.

Logs

N/A

Versions

Video iOS SDK

2.5.3 via CocoaPods

Xcode

10.1

iOS Version

11.4.1, 12.1.1

iOS Device

iPhone 6, iPhone 7

How to share Video in screen share with participants.

Hi I am using your sdk into iOS to share screen with participants using video call with source ScreenCapturer everything is working fine screen is share with participants but when I play video then participants did not get video they get only blank screen but when I stop video and come back any other page it shows fine.

please help. Thanks.

[Question] Feasibility to pause/resume video recording?

I would like to know whether we have the feasibility to pause/resume video recording on iOS side. A practical example would be like, I invite 3 of my friends to join a call. We want to start recording the video only when all of us join in as well as ability to pause the recording in between and resume later. Is this possible to implement? Please guide.

Versions

Video iOS SDK - 3.0.0-beta3

via Carthage

Xcode - 10.3

iOS Version - 10.0 and above

iOS Device - iPhone family

Unpublishing and republishing a media track might not be seen by Participants

Affected Versions

All 1.x and 2.x SDK releases.

Description

Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants in the following cases:

  • Peer-to-Peer: If a Participant is reconnecting, or the unpublish / publish operations occur very quickly.
  • Group Room: If the unpublish / publish operations occur very quickly.

Solution

Future mobile SDKs will adopt unified plan, and will also clone Tracks so that this race condition does not occur. In a Group Room, subscribers always see a cloned version of the publisher's Track.

Workaround

  • Peer-to-Peer: Destroy the LocalAudioTrack, or LocalVideoTrack and associated Capturer/Source after unpublishing. Create and publish a new Track.
  • Group: Wait several seconds after unpublishing a Track to re-publish it.

CRITICAL - iPhone XS to 8 Video chat stretched top to bottom looks weird!

Description

  1. on ios video cahtting from a iphone XS max to iPhone 8 Plus the video is super stretched out top to bottom and looks whacky! Does not look like a clean video chat like facetime. Instead its stetched out and look elongated.
    This happens from iPhone X or XS max to iPhone 8 and 8 Plus i tired on all the phones for testing.

Expected Behavior

[What you expect to happen]

for it to look normal like facetime

[What actually happens]

Reproduces How Often -EVERY TIME

[What percentage of the time does it reproduce?] 100%

Logs


### Versions

All relevant version information for the issue.

#### Video iOS SDK

[e.g. 1.3.12 via CocoaPods]

#### Xcode

[e.g. 9.2]

#### iOS Version

[e.g. 11.2.6] 12.0 most recent. happens on every version this is not ios version specific. 

#### iOS Device

[e.g. iPhone 8 Plus] iphone 8, 8 plus, XS, XS Max

TVICameraSource device sometimes nil

Description

We are sporadically getting a nil device from our TVICameraSource. This happens when we are trying to flip from the front camera to back. We can reproduce it locally, but it only happens sometimes (<20% and usually on a first call).

Steps to Reproduce

See code

Code

- (void)startPreview {
  // TVICameraSource is not supported with the Simulator.
  if ([self isSimulator]) {
    [self.previewView removeFromSuperview];
    return;
  }

  AVCaptureDevice *frontCamera = [TVICameraSource captureDeviceForPosition:AVCaptureDevicePositionFront];
  AVCaptureDevice *backCamera = [TVICameraSource captureDeviceForPosition:AVCaptureDevicePositionBack];

  self.camera = [[TVICameraSource alloc] initWithDelegate:self];
  self.localVideoTrack = [TVILocalVideoTrack trackWithSource:self.camera
  enabled:YES
  name:@"Camera"];
  // Add renderer to video track for local preview
  [self.localVideoTrack addRenderer:self.previewView];
  [self logMessage:@"Video track created"];

  if (frontCamera != nil || backCamera != nil) {
    [self.camera startCaptureWithDevice:frontCamera != nil ? frontCamera : backCamera completion:^(AVCaptureDevice *device, TVIVideoFormat *format, NSError *error) {
      if (error != nil) {
        [self log:[NSString stringWithFormat:@"Start capture failed with error.\ncode = %lu error = %@", error.code, error.localizedDescription]];
      } else {
        self.previewView.mirror = (device.position == AVCaptureDevicePositionFront);
      }
    }];
  } else {
    [self log:@"No front or back capture device found!"];
  }
}

RCT_EXPORT_METHOD(flipCamera) {
  if (!self.camera){
    [self log:@"Flipping: self.camera was nil!"];
    return;
  }

  if (!self.camera.device){
    [self log:@"Flipping: self.camera.device was nil!"];
    return;
  }

  AVCaptureDevice *newDevice = nil;

  if (self.camera.device.position == AVCaptureDevicePositionFront) {
    newDevice = [TVICameraSource captureDeviceForPosition:AVCaptureDevicePositionBack];
    if (!newDevice){
      [self log:@"Flipping: tried to flip to back, but new device is nil!"];
      return;
    }
  } else {
    newDevice = [TVICameraSource captureDeviceForPosition:AVCaptureDevicePositionFront];
    if (!newDevice){
      [self log:@"Flipping: tried to flip to front, but new device is nil!"];
      return;
    }
  }

  [self.camera selectCaptureDevice:newDevice completion:^(AVCaptureDevice *device, TVIVideoFormat *format, NSError *error) {
    if (error != nil) {
      [self log:[NSString stringWithFormat:@"Error selecting capture device.\ncode = %lu error = %@", error.code, error.localizedDescription]];
    } else {
      self.previewView.mirror = (device.position == AVCaptureDevicePositionFront);
    }
  }];
}```

#### Expected Behavior

Not be nil



#### Actual Behavior

This check fails:
  if (!self.camera.device){

#### Reproduces How Often

<20%, but only on a first call or install.

#### Logs

See code.

### Versions

2.7.0

#### Video iOS SDK

2.7.0

#### Xcode

10

#### iOS Version

12

#### iOS Device

iPhone X

Screen-sharing when already in a room

Description

Hello,
I have an app that uses twilio programable video. The user can connect to a room and share video and audio from the iOS devices camera/mic. We have recently added ReplayKit screen sharing via use of a broadcast extension (so that the user can also share the screen while outside of the app). When the call starts the call token is shared to the extension via shared user defaults.

Steps to Reproduce

  1. Connect to room
  2. Start video connection
  3. Start screensharing
  4. End screensharing

Expected Behavior

When screen sharing begins the video from the camera is stoped and only the screen is broadcast.When screen sharing is over the user can continue to share video/audio from the device camera/mic.

Actual Behavior

When screen sharing begins the user is kicked from the existing connection and reconnected to share the screen. When screen sharing is over we are required to send a message to the main app from the extension in order to force a reconnection to the room.
Would there be a way to screen share without losing connection to the room?

Reproduction rate

100%

Versions

All relevant version information for the issue.

Xcode

10.2.1

iOS Version

12.2

iOS Device

All devices

Detect loss of connection

Description

How to detect disconnection from an empty room with the Twilio SDK upon a loss of Internet connection?

For when the room is not empty, I can monitor the number bytes/packets received returned by getStatsWithBlock(); when they stop increasing, I can assume a loss of connection. But I was unable to find any useful stats when the room is empty.

Certainly related to known issue "Participant disconnect event can take up to 120 seconds to occur. #99"

Steps to Reproduce

  1. Connect to an empty room
  2. Disconnect the device from Wi-Fi
  3. No room disconnection is detected

Versions

Twilio SDK 2.5.2
iOS version > 11

Prioritise Frame Detail over Frame Rate for Camera Source

Description

I want to be able to prioritise having high quality images over a high frame rate when using a TVICameraSource. I can see that Twilio has the isScreencast flag for TVIVideoSource, and the description of the variable sounds like what I would like to achieve:

/**
 * Indicates that the content from this source is a screenshare. When a source produces screen content, encoders downstream
 * from the source optimize for detail (spatial resolution) over frame rate (temporal resolution).
 */
var isScreencast: Bool { get }

However as a get-only property, I can't figure out how to set this.

As an aside, inside the webRTC library, there is a an enum and corresponding instance var contentHint on the VideoTrackInterface (visible here: https://webrtc.googlesource.com/src/+/master/api/media_stream_interface.h), which also appears to give control over fluidity / detail priority. I'm unsure of whether it is possible, but perhaps exposing a method to set this might also be useful in my use case.

Versions

N/A

Freeze last "successful" video frame

This is not an issue, but I'm reaching out for some help. If this isn't the right place to ask for help you can close this issue.

My question:
Is it possible to fetch the last known successful video frame (both local and remote) and convert it to a CIImage to do some image processing? My goal is to have a greyed out frame when losing/disabling video instead of showing a black screen.
In my head it has to be broken down into multiple steps:

  • Copy the current frame to memory (while saving the previous frame in memory too)
  • If current frame is black, take the previous frame from the memory and convert it to a CIImage
  • Do the image processing

Is this possible to do?

TVIRoom delegate property is readonly, but can be initialized with no delegate

I am currently trying to take a completely reactive approach to an implementation of a video chat. I am extending twilio with RX using the same approach as RxCocoa using DelegateProxy. This means that the delegate is set whenever someone subscribes. If there are multiple subscribers the delegate is shared. Whenever there is no more subscribers the delegate is deinitialized. For this approach to work one is depending on a delegate that can be set (write) which is common in the standard way of implementing the delegate pattern on iOS.

My problem is that this is not possible in TwilioVideo because of the delegate property in TVIRoom.

@property (nonatomic, weak, readonly, nullable) id<TVIRoomDelegate> delegate;

What are the reason for keeping the TVIRoomDelegate property readonly while still being nullable/optional?

The factory method for creating a TVIRoom also accepts an optional delegate, but one is not able to set it later because of the readonly delegate prop.

+ (nonnull TVIRoom *)connectWithOptions:(nonnull TVIConnectOptions *)options  delegate:(nullable id<TVIRoomDelegate>)delegate;

I will be able to find workarounds for this, however I thought I would mention this as it might be due to a coincidence that the property ended up as readonly while still being able to initialize a room without a delegate.

VideoTrack migration 2.6.0

Description

We just migrate Twilio to the latest version 2.6.0. We use VideoTrack to launch an app on the other side of the client when we activate a devices camera. But the client does not receive the VideoTrack when we enable it with this new version. The client is an android tv devices with Twilio 2.2.1. Is there any retro compatibility ? Or this is the good way to migrate to the latest version ?

Code

    func connectToRoom(_ roomName: String, withToken token: String) {
        let localAudioTrack = TVILocalAudioTrack(options: nil, enabled: false, name: "")
        self.localAudioTrack = localAudioTrack

        guard let frontCamera = TVICameraSource.captureDevice(for: .front) else {
            Log.debug("Front camera not available")
            return
        }
        let cameraSourceOptions = TVICameraSourceOptions { builder in
            builder.enablePreview = true
        }
        camera = TVICameraSource(options: cameraSourceOptions, delegate: self)
        guard let camera = camera else {
            Log.error("Cannot create camera")
            return
        }

        let localVideoTrack = TVILocalVideoTrack(source: camera)
        if localVideoTrack == nil {
            Log.error("Failed to create video track")
        } else {
            self.localVideoTrack = localVideoTrack
        }

        camera.startCapture(with: frontCamera) { captureDevice, _, error in
            if let error = error {
                Log.error("Capture failed with error.\ncode = \((error as NSError).code) error = \(error.localizedDescription)")
                self.camera?.previewView?.removeFromSuperview()
            } else {
                Log.debug("cameraCaptur didStart with captureDevice \(captureDevice.description)")
            }
        }

        let connectOptions = TVIConnectOptions(token: token) { builder in
            if let localAudioTrack = localAudioTrack {
                builder.audioTracks = [localAudioTrack]
            }
            if let localVideoTrack = localVideoTrack {
                builder.videoTracks = [localVideoTrack]
            }
            builder.roomName = roomName
        }

        #if DEBUG
        TwilioVideo.setLogLevel(.debug)
        #endif

        room = TwilioVideo.connect(with: connectOptions, delegate: self)
        statsTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.statsTimerFired),
                                          userInfo: nil, repeats: true)
    }

    func prepareLocalMedia(cameraSource: AVCaptureDevice) {
        // Create a video track which captures from the front camera.
        if let camera = self.camera {
            if localVideoTrack == nil {
                localVideoTrack = TVILocalVideoTrack(source: camera)
                Log.debug("Video track created.")
            }
            if let preview = camera.previewView {
                Log.debug("Video track created.")
                delegate?.onLocalVideoStreaming(preview)
            }
        }
    }

Expected Behavior

When we launch the front or back cam the other connected devices would launch an app.

Actual Behavior

Nothing.

Reproduces How Often

100%

Video iOS SDK

2.6.0 via Carthage

Xcode

10.14

iOS Version

12.1.2

iOS Device

All devices

App hangs in `-[TVICameraCapturePipeline applicationWillEnterForeground]`

Description

When an app which has an open video connection, is put in the background, and re-launched from a notification the app hangs at -[TVICameraCapturePipeline applicationWillEnterForeground].

Steps to Reproduce

  1. Launch application
  2. Get into a video session with another user
  3. Background app
  4. Get a remote notification
  5. Tap on remote notification, attempting to launch back into video
  6. Hangs

Code

I haven't yet put together a small amount of code which reproduces the issue. I can work on that if helpful, it'll be tricky because of the reliance on notifications however.

Expected Behavior

The video starts as expected

Actual Behavior

Hangs

Reproduces How Often

90%

Logs

No twilio related logs are generated on the foregrounding. Here's the only obvious Twilio logging I've seen (but this is generated during the initial successful video connection after the app launches):

2018-07-24 09:46:54.483726-0700 Mado - Debug[1670:899447] ERROR:TwilioVideo:[Platform]:AVAudioSession setPreferredInputNumberOfChannels Error Domain=NSOSStatusErrorDomain Code=-50 "(null)"

Versions

Video iOS SDK

TwilioVideo (2.2.1) from Cocoapids

Xcode

9.4.1

iOS Version

11.2.5

iOS Device

iPad Pro (12.9-inch, 2nd generation) (Model A1670)

Live screen sharing in iOS

Hi ,

https://drive.google.com/file/d/1laasE2uC6OFulKqrh3e3SaItiUi-E01v/view?usp=sharing

In this video, we have called android phone and during the call, an Android device has shared its screen(using Twilio) and during screen iOS device can see every actions and activity of android. We want to implement the same things in iOS. How iOS can share or broadcast its mirror screen to other devices?
We have used TVIScreenCapturer.init(view: view) but it broadcasts only current view. We want to share the entire device with an opponent.

Thanks

No transportId in TVIIceCandidateStats

Description

We're fetching stats reports and want to be able to get TVIIceCandidateStats from active TVIIceCandidatePairStats, but the TVIIceCandidateStats objects doesn't have any value set to the property transportId which is needed to be able to filter this list.

Steps to Reproduce

  1. Connect 2 participants to a peer-to-peer room
  2. Call getStatsWithBlock:-method from the room object.
  3. Inspect iceCandidateStats.

Expected Behavior

Value attached to the property transportId, as stated in the documentation.

Actual Behavior

No value set to the property transportId.

Reproduces How Often

100%

Versions

All relevant version information for the issue.

Video iOS SDK

1.3.9 and 2.0.0-beta2

Xcode

9.2

iOS Version

11.2.5

iOS Device

iPhone 8 Plus, iPhone 6s

[iOS 13.0, 13.1-beta] LocalVideoTrack content might be distorted after videoDeviceInUseByAnotherClient interruption

Description

Note : this only happens in iOS 13, it does not when running the same exact build in iOS 12

Local Video Track becomes distorted after being interrupted and then uninterrupted specifically with the reason videoDeviceInUseByAnotherClient

(Note: this will not occur from interruption by putting the app in background and then foreground)

[Description of the issue]

Steps to Reproduce

  1. Connect two users in a group room (make sure you are publishing the local video track to both users)
  2. Use the camera in-app for something else -- in my case the user opens up to a separate camera manager to take a video of just yourself, which is why the Twilio video track gets interrupted.
  3. Stop the newly created capture session --> Twilio will automatically uninterrupt the connection and start publishing the localVideoTrack again

The localVideoTrack is distorted (looks squished)

Expected Behavior

localVideoTrack is not distorted

Reproduces How Often

Every time on iOS 13

Video iOS SDK

2.9 via CocoaPods

Xcode

10.3 and Xcode 11 Beta (tried downloading from app store build that was created in 10.3, then tried also running the same code in Xcode 11 Beta)

iOS Version

13.0, 13.1 Beta

iOS Device

iPhone 7+, iPhone 7

TVIVp8Codec 's `isEqual` ignores `simulcast` property

Before filing an issue please check that the issue is not already addressed by the following:

If this is an issue with the SDK itself, file it here. If this is an issue with the QuickStart apps, please use video-quickstart-swift or video-quickstart-objc instead.

Please ensure that you are not sharing any
Personally Identifiable Information(PII)
or sensitive account information (API keys, credentials, etc.) when reporting an issue.

Description

TVIVp8Codec 's isEqual ignores simulcast property

Steps to Reproduce

  1. Create an instance of Vp8 video codec by calling TVIVp8Codec(). By default simulcast is disabled.
  2. Create an another instance of Vp8 video codec with simulcast enabled by calling TVIVp8Codec(simulcast: true).
  3. isEqual returns true when two objects are compared.

Code

let obj1 = TVIVp8Codec()
let obj2 = TVIVp8Codec(simulcast: true)
if (obj1 == obj2) {
   // Error
}

Expected Behavior

isEqual should return false

Actual Behavior

isEqual returns true

Reproduces How Often

100%

Logs

NA

Versions

Video iOS SDK

2.1.0

Xcode

NA

iOS Version

All supported iOS versions

iOS Device

All supported iOS versions

Troubles using ICE server for connection

Description

We are trying to use ICE server when connecting to the room. For some reason it seems that the ICE options on the connection options does not work (based on the dashboard of the ICE server provider).

Steps to Reproduce

Try to connect to the room.

Code

        guard let accessToken = self.accessToken else {
            return
        }
        
        let connectOptions = TVIConnectOptions.init(token: accessToken) { (builder) in
            
            builder.audioTracks = self.localAudioTrack != nil ? [self.localAudioTrack!] : [TVILocalAudioTrack]()
            builder.videoTracks = self.localVideoTrack != nil ? [self.localVideoTrack!] : [TVILocalVideoTrack]()
            
            if let preferredAudioCodec = TwillioSettings.shared.audioCodec {
                builder.preferredAudioCodecs = [preferredAudioCodec]
            }
            if let preferredVideoCodec = TwillioSettings.shared.videoCodec {
                builder.preferredVideoCodecs = [preferredVideoCodec]
            }
            if let encodingParameters = TwillioSettings.shared.getEncodingParameters() {
                builder.encodingParameters = encodingParameters
            }
            
            builder.roomName = roomId.uuidString
            
            builder.uuid = uuid
            
            builder.iceOptions = TVIIceOptions.init(block: { (TVIIceOptionsBuilder) in
                TVIIceOptionsBuilder.transportPolicy = .relay
                TVIIceOptionsBuilder.servers = [
                    TVIIceServer(urlString: "********",
                                 username: "********",
                                 password: "********"),
                    TVIIceServer(urlString: "********",
                                 username: "********",
                                 password: "********"),
                    TVIIceServer(urlString: "********",
                                 username: "********",
                                 password: "********"),
                    TVIIceServer(urlString: "********",
                                 username: "********",
                                 password: "********"),
                    TVIIceServer(urlString: "********",
                                 username: "********",
                                 password: "********"), ]

            })
        }
        
        room = TwilioVideo.connect(with: connectOptions, delegate: self)
        
        logMessage(messageText: "Callkit: Attempting to connect to room call \(String(describing: roomId.uuidString))")
        
        self.callKitCompletionHandler = completionHandler

Expected Behavior

Connection would be made through ICE server.

Actual Behavior

Does not seem to affect connection.

From the logs (see below) I can only see a single mention of the ice server during the connection stating: "ice_servers":"overrode". What does this mean?

Reproduces How Often

100% times

Logs

2019-05-17 14:15:33.434323+0200 Squad[652:128475] [NetworkInfo] Signal strength query returned error: Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied", descriptor: <CTServiceDescriptor 0x2808f3200, domain=1, instance=1>
----------------------- attempt push token registered
2019-05-17 14:15:33.453949+0200 Squad[652:128475] [Crashlytics] Version 3.12.0 (136)
2019-05-17 14:15:33.547479+0200 Squad[652:128475] [Contacts] Contacts TCC acccess preflight was denied
2019-05-17 14:15:33.547560+0200 Squad[652:128475] [Contacts] Contacts TCC acccess preflight was denied
2019-05-17 14:15:33.554140+0200 Squad[652:128475] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2019-05-17 14:15:33.554436+0200 Squad[652:128475] [MC] Reading from public effective user settings.
2019-05-17 14:15:33.565176+0200 Squad[652:128475] [Contacts] Contacts TCC acccess preflight was denied
2019-05-17 14:15:33.772543+0200 Squad[652:128475] INFO:TwilioVideo:[Core]:Creating peer connection signaling thread ...
2019-05-17 14:15:33.772810+0200 Squad[652:128475] INFO:TwilioVideo:[Core]:Creating peer connection worker thread ...
2019-05-17 14:15:33.772875+0200 Squad[652:128475] INFO:TwilioVideo:[Core]:Creating peer connection networking thread ...
2019-05-17 14:15:33.772928+0200 Squad[652:128475] INFO:TwilioVideo:[Core]:Creating peer connection factory ...
2019-05-17 14:15:33.776506+0200 Squad[652:128475] INFO:TwilioVideo:[Core]:Done creating peer connection factory.
2019-05-17 14:15:33.778335+0200 Squad[652:128475] INFO:TwilioVideo:[Core]:Adding audio track ...
2019-05-17 14:15:33.787141+0200 Squad[652:128475] INFO:TwilioVideo:[Core]:Creating a video track ...
2019-05-17 14:15:33.790740+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Start capturing with device: <AVCaptureFigVideoDevice: 0x10e482dd0 [Front Camera][com.apple.avfoundation.avcapturedevice.built-in_video:1]> format: <<TVIVideoFormat: 0x2808a0ce0> size: {640, 480}, fps: 30, format: 420f>.
2019-05-17 14:15:33.790871+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Prepare for capturing.
2019-05-17 14:15:33.791019+0200 Squad[652:128475] INFO:TwilioVideo:[Platform]:Starting capture pipeline ...
Video track created
2019-05-17 14:15:33.791182+0200 Squad[652:128475] INFO:TwilioVideo:[Core]:Creating a data track ...
2019-05-17 14:15:33.804743+0200 Squad[652:128541] DEBUG:TwilioVideo:[Platform]:Adding device input: <AVCaptureDeviceInput: 0x2808a2ac0 [Front Camera]>
2019-05-17 14:15:33.809169+0200 Squad[652:128541] INFO:TwilioVideo:[Platform]:Best device format was: <AVCaptureDeviceFormat: 0x280ac2690 'vide'/'420f'  640x 480, { 1- 30 fps}, fov:55.200, max zoom:60.00 (upscales @2.00), ISO:47.0-1504.0, SS:0.000031-1.000000>
2019-05-17 14:15:34.140254+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.140385+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.140493+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.140605+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.140698+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.140758+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.140816+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.140923+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.141032+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.141329+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.141403+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.141631+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.141742+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.142033+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.142095+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.142424+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.142509+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.142782+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.142863+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.143102+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.143198+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.143437+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.143542+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.143789+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.143852+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Did move to window with size: {320, 568}.
Metal content scale factor is now: 2.000
2019-05-17 14:15:34.175688+0200 Squad[652:128475] [NetworkInfo] Signal strength query returned error: Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied", descriptor: <CTServiceDescriptor 0x28086b3e0, domain=1, instance=1>
----------------------- push token try to registered
Callkit: providerDidBegin
>> device token: 376756FAA2EB5E51671064D29A56AB4089C058F30F28FA33FB37D7ACF22105C4
2019-05-17 14:15:34.397438+0200 Squad[652:128475] [User Defaults] Couldn't read values in CFPrefsPlistSource<0x2826d3e80> (Domain: group.com.molly.squad, User: kCFPreferencesAnyUser, ByHost: Yes, Container: (null), Contents Need Refresh: Yes): Using kCFPreferencesAnyUser with a container is only allowed for System Containers, detaching from cfprefsd
We're up to date
2019-05-17 14:15:34.500927+0200 Squad[652:128541] INFO:TwilioVideo:[Platform]:... Finished starting capture.
2019-05-17 14:15:34.501032+0200 Squad[652:128541] INFO:TwilioVideo:[Platform]:Session started running
2019-05-17 14:15:34.503350+0200 Squad[652:128543] DEBUG:TwilioVideo:[Platform]:Video pipeline will start running.
2019-05-17 14:15:34.503836+0200 Squad[652:128543] DEBUG:TwilioVideo:[Platform]:Video device will start running: <AVCaptureFigVideoDevice: 0x10e482dd0 [Front Camera][com.apple.avfoundation.avcapturedevice.built-in_video:1]>.
2019-05-17 14:15:34.511515+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Preparing renderer for frame size: {640, 480}, view bounds: {{0, 0}, {320, 568}}
2019-05-17 14:15:34.511638+0200 Squad[652:128475] DEBUG:TwilioVideo:[Platform]:Detected a pixel format change. Preparing the rendering pipeline. Old = none, New = 420f
----------------------- device token registered
-------------- SUCCESS: <null>
--------------- 
----------------------- push token registered
Loaded list of products...
2019-05-17 14:16:35.181855+0200 Squad[652:128525] TIC Read Status [5:0x283dfbcc0]: 1:57
2019-05-17 14:16:35.182016+0200 Squad[652:128525] TIC Read Status [5:0x283dfbcc0]: 1:57
2019-05-17 14:16:35.182086+0200 Squad[652:128525] TIC Read Status [5:0x283dfbcc0]: 1:57
2019-05-17 14:16:35.186460+0200 Squad[652:128525] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C5.1:2][0x116ba0120] get output frames failed, state 8196
2019-05-17 14:16:35.186896+0200 Squad[652:128525] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C5.1:2][0x116ba0120] get output frames failed, state 8196
2019-05-17 14:16:35.188464+0200 Squad[652:128525] TIC Read Status [5:0x0]: 1:57
2019-05-17 14:16:35.188539+0200 Squad[652:128525] TIC Read Status [5:0x0]: 1:57
2019-05-17 14:16:35.188644+0200 Squad[652:128525] TIC Read Status [5:0x0]: 1:57
2019-05-17 14:16:35.188800+0200 Squad[652:128525] TIC Read Status [5:0x0]: 1:57
2019-05-17 14:16:35.317181+0200 Squad[652:128525] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x10e35a4a0] get output frames failed, state 8196
2019-05-17 14:16:35.318675+0200 Squad[652:128525] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x10e35a4a0] get output frames failed, state 8196
2019-05-17 14:16:35.321902+0200 Squad[652:128525] TIC Read Status [1:0x0]: 1:57
2019-05-17 14:16:35.321994+0200 Squad[652:128525] TIC Read Status [1:0x0]: 1:57
2019-05-17 14:17:33.988600+0200 Squad[652:129160] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C4.1:2][0x116b0e7d0] get output frames failed, state 8196
2019-05-17 14:17:33.989173+0200 Squad[652:129160] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C4.1:2][0x116b0e7d0] get output frames failed, state 8196
2019-05-17 14:17:33.992075+0200 Squad[652:129160] TIC Read Status [4:0x0]: 1:57
2019-05-17 14:17:33.992204+0200 Squad[652:129160] TIC Read Status [4:0x0]: 1:57
2019-05-17 14:17:34.275721+0200 Squad[652:128540] Callkit: StartCallAction transaction request successful
Callkit: provider:performStartCallAction:
2019-05-17 14:17:34.616330+0200 Squad[652:128475] INFO:TwilioVideo:[Core]:Creating dedicated notifier queue ...
2019-05-17 14:17:34.618071+0200 Squad[652:128475] DEBUG:TwilioVideo:[Core]:AppleReachability::AppleReachability()
2019-05-17 14:17:34.618109+0200 Squad[652:128475] DEBUG:TwilioVideo:[Core]:Creating zeroAddrReachability
2019-05-17 14:17:34.619770+0200 Squad[652:128475] INFO:TwilioVideo:[Core]:Creating SIP stack ...
2019-05-17 14:17:34.620182+0200 Squad[652:128475] INFO:TwilioVideo:[Core]:Adding IPv4/IPv6 TLS transports ...
2019-05-17 14:17:34.620241+0200 Squad[652:128475] INFO:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Connection::Connection: new connection created to who: [ V4 0.0.0.0:0 UNKNOWN_TRANSPORT target domain=unspecified mFlowKey=0 ]
2019-05-17 14:17:34.620271+0200 Squad[652:128475] INFO:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Creating TLS transport for domain  interface= port=0
2019-05-17 14:17:34.620408+0200 Squad[652:128475] INFO:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Connection::Connection: new connection created to who: [ V4 0.0.0.0:0 UNKNOWN_TRANSPORT target domain=unspecified mFlowKey=0 ]
2019-05-17 14:17:34.623792+0200 Squad[652:128475] INFO:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Creating TLS transport for domain  interface= port=0
2019-05-17 14:17:34.624005+0200 Squad[652:128475] DEBUG:TwilioVideo:[Core]:RoomSignalingImpl::RoomSignalingImpl()
2019-05-17 14:17:34.624066+0200 Squad[652:128475] INFO:TwilioVideo:[Core]:Starting SIP signaling stack worker thread ...
2019-05-17 14:17:34.627712+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Starting StackThread runloop.
2019-05-17 14:17:34.627930+0200 Squad[652:129238] INFO:TwilioVideo:[Core]:Querying SIP edge (mobile-endpoint.twilio.com) IP addresses ...
2019-05-17 14:17:34.627960+0200 Squad[652:129238] INFO:TwilioVideo:[Core]:Looking up: mobile-endpoint.twilio.com
Callkit: Attempting to connect to room call 00662AAD-1F9F-4141-8613-DE4C8CDE3DD9
2019-05-17 14:17:34.648810+0200 Squad[652:128550] DEBUG:TwilioVideo:[Core]:RoomSignalingImpl: State transition successful: kInit -> kConnecting
2019-05-17 14:17:34.649619+0200 Squad[652:128554] INFO:TwilioVideo:[Core]:Creating peer connection ...
2019-05-17 14:17:34.659379+0200 Squad[652:128554] INFO:TwilioVideo:[Core]:Adding local stream to peer connection ...
2019-05-17 14:17:34.661707+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Address family: 2: 34.203.250.196
2019-05-17 14:17:34.661747+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Address family: 2: 34.203.250.196
2019-05-17 14:17:34.661799+0200 Squad[652:129238] INFO:TwilioVideo:[Core]:Setting SIP edge (outbound proxy) to: sips:34.203.250.196:443
2019-05-17 14:17:34.661831+0200 Squad[652:129238] INFO:TwilioVideo:[Core]:DNS resolution was successful
2019-05-17 14:17:34.661867+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Sending a ping message ...
2019-05-17 14:17:34.662109+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Socket created in ../resiprocate-1.8/resip/stack/TcpBaseTransport.cxx at line 223, transport: 1, socket: 60
2019-05-17 14:17:34.662307+0200 Squad[652:129238] INFO:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Connection::Connection: new connection created to who: [ V4 34.203.250.196:443 TLS target domain=unspecified mFlowKey=60 ]
2019-05-17 14:17:34.662349+0200 Squad[652:129238] INFO2019-05-17 14:17:34.669984+0200 Squad[652:128550] DEBUG:TwilioVideo:[Core]:Open -> Updating. Process an event
:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Creating TLS connection for domain  [ V4 34.203.250.196:443 TLS target domain=unspecified mFlowKey=0 ] on 60
2019-05-17 14:17:34.671527+0200 Squad[652:128554] DEBUG:TwilioVideo:[Core]:Create local offer: 6CE08380ad3F6FBdDD888aBB1f765D92
2019-05-17 14:17:34.672149+0200 Squad[652:128554] DEBUG:TwilioVideo:[Core]:Including track id: c825Dd591422a0f43aFe5BFf58FCe0b5 for simulcast.
2019-05-17 14:17:34.682062+0200 Squad[652:128550] DEBUG:TwilioVideo:[Core]:onCreateSessionLocalDescription 6CE08380ad3F6FBdDD888aBB1f765D92
2019-05-17 14:17:34.682355+0200 Squad[652:128550] DEBUG:TwilioVideo:[Core]:SDP Utils: New SSRC group 1033393581 1680391674 --- Original SSRC group 1033393581 1680391674
2019-05-17 14:17:34.683101+0200 Squad[652:128550] DEBUG:TwilioVideo:[Core]:PeerConnection state: Updating -> Waiting
2019-05-17 14:17:34.683133+0200 Squad[652:128550] INFO:TwilioVideo:[Core]:Local SDP is ready
2019-05-17 14:17:34.683167+0200 Squad[652:128550] INFO:TwilioVideo:[Core]:Queue Description: 1 for PeerConnection: 6CE08380ad3F6FBdDD888aBB1f765D92.
2019-05-17 14:17:34.686238+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Adding X-Twilio-AccessToken header.
2019-05-17 14:17:34.686336+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:DNS is resolved.
2019-05-17 14:17:34.686430+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Sending outgoing SIP message
INVITE sip:mobile-endpoint.twilio.com;transport=tls SIP/2.0

Via: SIP/2.0/TLS 127.0.0.1;branch=z9hG4bK-524287-1---5ad6ec0b79b5aff4;rport

Max-Forwards: 70

Contact: <sip:[email protected];transport=tls;ob>

To: <sip:[email protected]>

From: "3d2d50B0cd8E1CbffA14dcd1f6684Bea"<sip:[email protected]>;tag=209e23f5

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 1 INVITE

Session-Expires: 120

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, NOTIFY

Content-Type: application/room-signaling+json

Supported: timer, outbound, path, gruu, room-signaling

User-Agent: TwilioVideo SDK

X-Twilio-AccessToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6InR3aWxpby1mcGE7dj0xIn0.eyJqdGkiOiJTSzJiNTgyZDc0ZDVlMDc2OTA0MmUxYzIxZTdiYWE1MWU5LTE1NTgwOTU0NTQiLCJncmFudHMiOnsiaWRlbnRpdHkiOiIxMDc0NzkiLCJ2aWRlbyI6eyJyb29tIjoiMDA2NjJBQUQtMUY5Ri00MTQxLTg2MTMtREU0QzhDREUzREQ5In19LCJpYXQiOjE1NTgwOTU0NTQsImV4cCI6MTU1ODA5OTA1NCwiaXNzIjoiU0syYjU4MmQ3NGQ1ZTA3NjkwNDJlMWMyMWU3YmFhNTFlOSIsInN1YiI6IkFDYmJiZTc2YTg4NTdhNDc2NGZmYWRlMzg1NjA2NTdmY2YifQ.Xn5d9NcvFXdgz6cWmA3zqMwCksRzYCIktneQdRKcR2A

Content-Length: 4257



{"format":"planb","ice_servers":"overrode","media_signaling":null,"name":"00662AAD-1F9F-4141-8613-DE4C8CDE3DD9","participant":{"revision":1,"tracks":[{"enabled":true,"id":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","kind":"audio","name":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","priority":"medium"},{"enabled":true,"id":"c825Dd591422a0f43aFe5BFf58FCe0b5","kind":"video","name":"camera","priority":"medium"}]},"peer_connections":[{"description":{"revision":1,"sdp":"v=0\r\no=- 6686746332114638318 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video\r\na=msid-semantic: WMS aDBf6B06A5e93DCC1ADBFA76E467Fd93\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:Uckh\r\na=ice-pwd:AnDGWi3I0gp8mcnH8mixqKf+\r\na=ice-options:trickle\r\na=fingerprint:sha-256 CF:5D:F7:EF:9A:E1:BB:10:EE:AD:6B:D2:5C:19:62:79:B0:3F:62:48:4F:86:59:20:58:D1:1F:17:4F:60:81:A0\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:4203016772 cname:BJESmOLlPu4a0W92\r\na=ssrc:4203016772 mCallkit: provider:didActivateAudioSession:
sid:aDBf6B06A5e93DCC1ADBFA76E467Fd93 aaE1E3E4ee74639aAA4dA07CAAE8Df13\r\na=ssrc:4203016772 mslabel:aDBf6B06A5e93DCC1ADBFA76E467Fd93\r\na=ssrc:4203016772 label:aaE1E3E4ee74639aAA4dA07CAAE8Df13\r\nm=video 9 UDP/TLS/RTP/SAVPF 100 96 97 98 99 101 102 125 127\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:Uckh\r\na=ice-pwd:AnDGWi3I0gp8mcnH8mixqKf+\r\na=ice-options:trickle\r\na=fingerprint:sha-256 CF:5D:F7:EF:9A:E1:BB:10:EE:AD:6B:D2:5C:19:62:79:B0:3F:62:48:4F:86:59:20:58:D1:1F:17:4F:60:81:A0\r\na=setup:actpass\r\na=mid:video\r\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 urn:3gpp:video-orientation\r\na=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=sendrecv\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 H264/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 red/90000\r\na=rtpmap:125 rtx/90000\r\na=fmtp:125 apt=102\r\na=rtpmap:127 ulpfec/90000\r\na=ssrc-group:FID 1033393581 1680391674\r\na=ssrc:1033393581 cname:BJESmOLlPu4a0W92\r\na=ssrc:1033393581 msid:aDBf6B06A5e93DCC1ADBFA76E467Fd93 c825Dd591422a0f43aFe5BFf58FCe0b5\r\na=ssrc:1033393581 mslabel:aDBf6B06A5e93DCC1ADBFA76E467Fd93\r\na=ssrc:1033393581 label:c825Dd591422a0f43aFe5BFf58FCe0b5\r\na=ssrc:1680391674 cname:BJESmOLlPu4a0W92\r\na=ssrc:1680391674 msid:aDBf6B06A5e93DCC1ADBFA76E467Fd93 c825Dd591422a0f43aFe5BFf58FCe0b5\r\na=ssrc:1680391674 mslabel:aDBf6B06A5e93DCC1ADBFA76E467Fd93\r\na=ssrc:1680391674 label:c825Dd591422a0f43aFe5BFf58FCe0b5\r\n","type":"offer"},"id":"6CE08380ad3F6FBdDD888aBB1f765D92"}],"publisher":{"hw_device_arch":"arm64","hw_device_manufacturer":"Apple","hw_device_model":"iPhone8,4","name":"twilio-video-ios","platform_name":"iOS","platform_version":"12.3","sdk_version":"2.10.0"},"type":"connect","version":2}
2019-05-17 14:17:34.732035+0200 Squad[652:129238] WARN:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Can't find matching transport [ V4 127.0.0.1:0 TLS target domain=unspecified mFlowKey=0 ]
2019-05-17 14:17:34.784921+0200 Squad[652:129238] INFO:TwilioVideo:[Signaling]:RESIP::TRANSPORT: TLS handshake starting (client mode)
2019-05-17 14:17:34.785437+0200 Squad[652:129238] INFO:TwilioVideo:[Signaling]:RESIP::TRANSPORT: TLS connected
2019-05-17 14:17:35.034900+0200 Squad[652:129238] INFO:TwilioVideo:[Signaling]:RESIP::TRANSPORT: TLS connected
2019-05-17 14:17:35.034992+0200 Squad[652:129238] INFO:TwilioVideo:[Signaling]:RESIP::TRANSPORT: TLS sessions set up with TLSv1.2 TLSv1/SSLv3 AES256-GCM-SHA384
2019-05-17 14:17:35.035098+0200 Squad[652:129238] INFO:TwilioVideo:[Signaling]:RESIP::SIP: subjectAltName of TLS session cert contains DNS <mobile-endpoint.twilio.com>
2019-05-17 14:17:35.035139+0200 Squad[652:129238] INFO:TwilioVideo:[Signaling]:RESIP::SIP: subjectAltName of TLS session cert contains DNS <mobile-endpoint.us1.twilio.com>
2019-05-17 14:17:35.035405+0200 Squad[652:129238] INFO:TwilioVideo:[Signaling]:RESIP::TRANSPORT: TLS handshake done for peer mobile-endpoint.twilio.com, mobile-endpoint.us1.twilio.com
2019-05-17 14:17:35.402859+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Receiving incoming SIP message from infra
SIP/2.0 100 Giving a try

Via: SIP/2.0/TLS 127.0.0.1;received=88.212.40.93;branch=z9hG4bK-524287-1---5ad6ec0b79b5aff4;rport=51601

To: <sip:[email protected]>

From: "3d2d50B0cd8E1CbffA14dcd1f6684Bea"<sip:[email protected]>;tag=209e23f5

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 1 INVITE

Server: Twilio Gateway

Content-Length: 0
2019-05-17 14:17:35.403213+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Process INVITE response with code 100
2019-05-17 14:17:35.578234+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Receiving incoming SIP message from infra
SIP/2.0 200 OK

Via: SIP/2.0/TLS 127.0.0.1;received=88.212.40.93;branch=z9hG4bK-524287-1---5ad6ec0b79b5aff4;rport=51601

Record-Route: <sip:172.18.3.179:5060;r2=on;transport=udp;ftag=209e23f5;lr>

Record-Route: <sip:34.203.250.196:443;r2=on;transport=tls;ftag=209e23f5;lr>

Require: timer

Contact: <sip:172.18.52.17:5060>

To: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

From: "3d2d50B0cd8E1CbffA14dcd1f6684Bea" <sip:[email protected]>;tag=209e23f5

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 1 INVITE

Session-Expires: 120;refresher=uac

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE

Content-Type: application/room-signaling+json

Server: Twilio

Supported: room-signaling

X-Twilio-CallSid: CA4707683ac934667245dd6934abf07bbf

X-Twilio-LegInfo: external

X-Twilio-TlsVerify: true

X-Twilio-EdgeHost: ec2-34-203-250-196.compute-1.amazonaws.com

Content-Length: 3018



{"version":2,"type":"connected","peer_connections":[{"id":"6CE08380ad3F6FBdDD888aBB1f765D92","description":{"type":"answer","sdp":"v=0\r\no=- 3767084255 3767084255 IN IP4 0.0.0.0\r\ns=VM6fbe6c595e7cf6428edb5e88f31b1c44\r\nt=0 0\r\na=ice-lite\r\na=msid-semantic: WMS *\r\na=group:BUNDLE audio video\r\nm=audio 19452 UDP/TLS/RTP/SAVPF 111 0\r\nc=IN IP4 34.203.254.9\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=rtcp:19452 IN IP4 34.203.254.9\r\na=rtpmap:111 opus/48000/2\r\na=rtpmap:0 PCMU/8000\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=candidate:2 1 UDP 2013266430 34.203.254.9 19452 typ host\r\na=candidate:2 2 UDP 2013266429 34.203.254.9 15269 typ host\r\na=rtcp-mux\r\na=setup:active\r\na=mid:audio\r\na=recvonly\r\na=ice-ufrag:N9Cj\r\na=ice-pwd:+d5ChhWamol/bN4OTdIVGK\r\na=fingerprint:sha-256 3F:F8:B5:EC:9A:DA:36:40:4D:28:21:42:44:86:D2:E5:F1:3E:E5:8E:9F:5C:F1:ED:3A:3D:57:C2:E7:2F:5F:14\r\nm=video 19452 UDP/TLS/RTP/SAVPF 100 96\r\nc=IN IP4 34.203.254.9\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=rtcp:19452 IN IP4 34.203.254.9\r\na=rtpmap:100 H264/90000\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=candidate:2 1 UDP 2013266430 34.203.254.9 19452 typ host\r\na=candidate:2 2 UDP 2013266429 34.203.254.9 15269 typ host\r\na=rtcp-mux\r\na=setup:active\r\na=mid:video\r\na=recvonly\r\na=ice-ufrag:N9Cj\r\na=ice-pwd:+d5ChhWamol/bN4OTdIVGK\r\na=fingerprint:sha-256 3F:F8:B5:EC:9A:DA:36:40:4D:28:21:42:44:86:D2:E5:F1:3E:E5:8E:9F:5C:F1:ED:3A:3D:57:C2:E7:2F:5F:14\r\n","revision":1}}],"sid":"RM02dd50732488da0845337a6ce5a2ea68","name":"00662AAD-1F9F-4141-8613-DE4C8CDE3DD9","participant":{"sid":"PAf11e9f57ffd811bbe48b5b27982522f6","identity":"107479","tracks":[{"kind":"audio","priority":"medium","id":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","enabled":true,"sid":"MTc86ac766a45bcc9620c504cfed0bb1f6","name":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","state":"ready"},{"kind":"video","priority":"medium","id":"c825Dd591422a0f43aFe5BFf58FCe0b5","enabled":true,"sid":"MTead35e536320b86355d24d2b3ade4a18","name":"camera","state":"ready"}],"revision":1,"state":"connected"},"participants":[],"recording":{"enabled":false,"revision":1},"subscribed":{"revision":0,"tracks":[]},"published":{"revision":1,"tracks":[{"kind":"audio","priority":"medium","id":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","enabled":true,"sid":"MTc86ac766a45bcc9620c504cfed0bb1f6","name":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","state":"ready"},{"kind":"video","priority":"medium","id":"c825Dd591422a0f43aFe5BFf58FCe0b5","enabled":true,"sid":"MTead35e536320b86355d24d2b3ade4a18","name":"camera","state":"ready"}]},"session":"bbbe76a8857a4764ffade38560657fcf02dd50732488da0845337a6ce5a2ea68f11e9f57ffd811bbe48b5b27982522f64707683ac934667245dd6934abf07bbf"}
2019-05-17 14:17:35.580018+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Process INVITE response with code 200
2019-05-17 14:17:35.580180+0200 Squad[652:129238] INFO:TwilioVideo:[Core]:SipCall::updateContact set host to ec2-34-203-250-196.compute-1.amazonaws.com
2019-05-17 14:17:35.580421+0200 Squad[652:129238] INFO:TwilioVideo:[Core]:SipSignalingStackImpl::UpdateHost
2019-05-17 14:17:35.580729+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Sending outgoing SIP message
ACK sip:172.18.52.17:5060 SIP/2.0

Via: SIP/2.0/TLS 127.0.0.1;branch=z9hG4bK-524287-1---60d9cb6aac9573c4;rport

Max-Forwards: 70

Route: <sip:34.203.250.196:443;r2=on;transport=tls;ftag=209e23f5;lr>

Route: <sip:172.18.3.179:5060;r2=on;transport=udp;ftag=209e23f5;lr>

To: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

From: "3d2d50B0cd8E1CbffA14dcd1f6684Bea"<sip:[email protected]>;tag=209e23f5

Call-ID: fJa-Yab3gnire_teymHuuQ..


CSeq: 1 ACK

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, NOTIFY

Supported: timer, outbound, path, gruu, room-signaling

User-Agent: TwilioVideo SDK

Content-Length: 0
2019-05-17 14:17:35.581392+0200 Squad[652:129238] INFO:TwilioVideo:[Signaling]:RESIP::SIP: SipMessage::getContents: got content type (application/room-signaling+json) that is not known, returning as opaque application/octet-stream
2019-05-17 14:17:35.583408+0200 Squad[652:129238] WARN:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Can't find matching transport [ V4 127.0.0.1:0 TLS target domain=unspecified mFlowKey=0 ]
2019-05-17 14:17:35.593483+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:AppleReachability::onConnectionEstablished, socket_ipv6 = -1, socket_ipv4 = 60
2019-05-17 14:17:35.594634+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:AppleReachability started listening on address pair on 60 socket
2019-05-17 14:17:35.594723+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:Canceling reconnect retry timer.
2019-05-17 14:17:35.594811+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:onAccepted
2019-05-17 14:17:35.594883+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:RoomSignalingImpl: State transition successful: kConnecting -> kConnected
Connected to room 00662AAD-1F9F-4141-8613-DE4C8CDE3DD9 as Optional("107479")
2019-05-17 14:17:35.606046+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:PeerConnection state: Waiting -> Updating
2019-05-17 14:17:35.606129+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:Process remote answer at revision 1.
2019-05-17 14:17:35.606178+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:Process remote sdp for: 6CE08380ad3F6FBdDD888aBB1f765D92 revision is: 1.
2019-05-17 14:17:35.615064+0200 Squad[652:128554] DEBUG:TwilioVideo:[Core]:Applying local description to: 6CE08380ad3F6FBdDD888aBB1f765D92 rev: 1
2019-05-17 14:17:35.634785+0200 Squad[652:128556] DEBUG:TwilioVideo:[Core]:Network Name: en0, Cost: 10, Type : Wifi, Preference : 127, Active : 1, id: 1, prefix : 192.168.1.0 and key : en0%192.168.1.0/24
2019-05-17 14:17:35.634851+0200 Squad[652:128556] DEBUG:TwilioVideo:[Core]:Network Name: en2, Cost: 10, Type : Wifi, Preference : 126, Active : 1, id: 2, prefix : 169.254.0.0 and key : en2%169.254.0.0/16
2019-05-17 14:17:35.634882+0200 Squad[652:128556] DEBUG:TwilioVideo:[Core]:Network Name: lo0, Cost: 0, Type : Loopback, Preference : 125, Active : 1, id: 4, prefix : ::1 and key : lo0%::1/128
2019-05-17 14:17:35.634912+0200 Squad[652:128556] DEBUG:TwilioVideo:[Core]:Network Name: lo0, Cost: 0, Type : Loopback, Preference : 124, Active : 1, id: 3, prefix : 127.0.0.0 and key : lo0%127.0.0.0/8
2019-05-17 14:17:35.634939+0200 Squad[652:128556] DEBUG:TwilioVideo:[Core]:New preferred network reported by manager: key: en0%192.168.1.0/24, type: Wifi, cost: 10, id: 1
2019-05-17 14:17:35.640417+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:Sent a track update message
2019-05-17 14:17:35.640488+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:onSetSessionLocalDescription: 6CE08380ad3F6FBdDD888aBB1f765D92
2019-05-17 14:17:35.640527+0200 Squad[652:128554] DEBUG:TwilioVideo:[Core]:Applying remote description to: 6CE08380ad3F6FBdDD888aBB1f765D92 rev: 1
2019-05-17 14:17:35.640703+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Sending outgoing SIP message
INFO sip:172.18.52.17:5060 SIP/2.0

Via: SIP/2.0/TLS 127.0.0.1;branch=z9hG4bK-524287-1---d481e2e1dce205ef;rport

Max-Forwards: 70

Route: <sip:34.203.250.196:443;r2=on;transport=tls;ftag=209e23f5;lr>

Route: <sip:172.18.3.179:5060;r2=on;transport=udp;ftag=209e23f5;lr>

To: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

From: "3d2d50B0cd8E1CbffA14dcd1f6684Bea"<sip:[email protected]>;tag=209e23f5

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 2 INFO

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, NOTIFY

Content-Type: application/room-signaling+json

Supported: timer, outbound, path, gruu, room-signaling

User-Agent: TwilioVideo SDK

Event: room-signaling

Info-Package: room-signaling

Content-Length: 422



{"participant":{"revision":2,"tracks":[{"enabled":true,"id":"8EEf30925cbB985EB2cfBFec4D2daFf6","kind":"data","name":"messenger","priority":"medium"},{"enabled":true,"id":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","kind":"audio","name":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","priority":"medium"},{"enabled":true,"id":"c825Dd591422a0f43aFe5BFf58FCe0b5","kind":"video","name":"camera","priority":"medium"}]},"type":"update","version":2}
2019-05-17 14:17:35.643039+0200 Squad[652:129238] WARN:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Can't find matching transport [ V4 127.0.0.1:0 TLS target domain=unspecified mFlowKey=0 ]
2019-05-17 14:17:35.645231+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:Done processing onSetSessionLocalDescription: 6CE08380ad3F6FBdDD888aBB1f765D92
2019-05-17 14:17:35.645323+0200 Squad[652:128540] INFO:TwilioVideo:[Core]:Ice Gathering...
2019-05-17 14:17:35.645357+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:ICE connection state transitioned from New -> Checking
2019-05-17 14:17:35.645408+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:PeerConnection 6CE08380ad3F6FBdDD888aBB1f765D92 Ice connection state transitioned from New -> Checking
2019-05-17 14:17:35.645434+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:Room Media state changed to Checking
2019-05-17 14:17:35.645484+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:onSetSessionRemoteDescription: 6CE08380ad3F6FBdDD888aBB1f765D92
2019-05-17 14:17:35.645705+0200 Squad[652:128540] INFO:TwilioVideo:[Core]:Queue ICE candidate revision: 1 for PeerConnection: 6CE08380ad3F6FBdDD888aBB1f765D92.
2019-05-17 14:17:35.645739+0200 Squad[652:128540] INFO:TwilioVideo:[Core]:Publish ICE candidate revision: 1 for PeerConnection: 6CE08380ad3F6FBdDD888aBB1f765D92.
2019-05-17 14:17:35.646114+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Sending outgoing SIP message
INFO sip:172.18.52.17:5060 SIP/2.0

Via: SIP/2.0/TLS 127.0.0.1;branch=z9hG4bK-524287-1---15b58fdd9185c213;rport

Max-Forwards: 70

Route: <sip:34.203.250.196:443;r2=on;transport=tls;ftag=209e23f5;lr>

Route: <sip:172.18.3.179:5060;r2=on;transport=udp;ftag=209e23f5;lr>

To: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

From: "3d2d50B0cd8E1CbffA14dcd1f6684Bea"<sip:[email protected]>;tag=209e23f5

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 3 INFO

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, NOTIFY

Content-Type: application/room-signaling+json

Supported: timer, outbound, path, gruu, room-signaling

User-Agent: TwilioVideo SDK

Event: room-signaling

Info-Package: room-signaling

Content-Length: 553



{"participant":{"revision":2,"tracks":[{"enabled":true,"id":"8EEf30925cbB985EB2cfBFec4D2daFf6","kind":"data","name":"messenger","priority":"medium"},{"enabled":true,"id":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","kind":"audio","name":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","priority":"medium"},{"enabled":true,"id":"c825Dd591422a0f43aFe5BFf58FCe0b5","kind":"video","name":"camera","priority":"medium"}]},"peer_connections":[{"ice":{"candidates":[],"complete":true,"revision":1,"ufrag":"Uckh"},"id":"6CE08380ad3F6FBdDD888aBB1f765D92"}],"type":"update","version":2}
2019-05-17 14:17:35.646190+0200 Squad[652:128554] DEBUG:TwilioVideo:[Core]:Create local offer: 6CE08380ad3F6FBdDD888aBB1f765D92
2019-05-17 14:17:35.647146+0200 Squad[652:128554] DEBUG:TwilioVideo:[Core]:Including track id: c825Dd591422a0f43aFe5BFf58FCe0b5 for simulcast.
2019-05-17 14:17:35.647833+0200 Squad[652:129238] WARN:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Can't find matching transport [ V4 127.0.0.1:0 TLS target domain=unspecified mFlowKey=0 ]
2019-05-17 14:17:35.648675+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:onCreateSessionLocalDescription 6CE08380ad3F6FBdDD888aBB1f765D92
2019-05-17 14:17:35.649091+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:SDP Utils: New SSRC 4203016772 replaced with Old SSRC 4203016772
2019-05-17 14:17:35.649564+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:SDP Utils: New SSRC 1033393581 replaced with Old SSRC 1033393581
2019-05-17 14:17:35.649715+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:SDP Utils: New SSRC 1680391674 replaced with Old SSRC 1680391674
2019-05-17 14:17:35.649864+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:SDP Utils: New SSRC group 1033393581 1680391674 --- Original SSRC group 1033393581 1680391674
2019-05-17 14:17:35.650816+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:Updating -> Open
2019-05-17 14:17:35.650960+0200 Squad[652:128540] INFO:TwilioVideo:[Core]:Local SDP is ready
2019-05-17 14:17:35.651005+0200 Squad[652:128540] INFO:TwilioVideo:[Core]:Queue Description: 2 for PeerConnection: 6CE08380ad3F6FBdDD888aBB1f765D92.
2019-05-17 14:17:35.651787+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Sending outgoing SIP message
INFO sip:172.18.52.17:5060 SIP/2.0

Via: SIP/2.0/TLS 127.0.0.1;branch=z9hG4bK-524287-1---33a100876533baaa;rport

Max-Forwards: 70

Route: <sip:34.203.250.196:443;r2=on;transport=tls;ftag=209e23f5;lr>

Route: <sip:172.18.3.179:5060;r2=on;transport=udp;ftag=209e23f5;lr>

To: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

From: "3d2d50B0cd8E1CbffA14dcd1f6684Bea"<sip:[email protected]>;tag=209e23f5

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 4 INFO

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, NOTIFY

Content-Type: application/room-signaling+json

Supported: timer, outbound, path, gruu, room-signaling

User-Agent: TwilioVideo SDK

Event: room-signaling

Info-Package: room-signaling

Content-Length: 4394



{"participant":{"revision":2,"tracks":[{"enabled":true,"id":"8EEf30925cbB985EB2cfBFec4D2daFf6","kind":"data","name":"messenger","priority":"medium"},{"enabled":true,"id":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","kind":"audio","name":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","priority":"medium"},{"enabled":true,"id":"c825Dd591422a0f43aFe5BFf58FCe0b5","kind":"video","name":"camera","priority":"medium"}]},"peer_connections":[{"description":{"revision":2,"sdp":"v=0\r\no=- 6686746332114638318 3 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video data\r\na=msid-semantic: WMS aDBf6B06A5e93DCC1ADBFA76E467Fd93\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:Uckh\r\na=ice-pwd:AnDGWi3I0gp8mcnH8mixqKf+\r\na=ice-options:trickle\r\na=fingerprint:sha-256 CF:5D:F7:EF:9A:E1:BB:10:EE:AD:6B:D2:5C:19:62:79:B0:3F:62:48:4F:86:59:20:58:D1:1F:17:4F:60:81:A0\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:4203016772 cname:BJESmOLlPu4a0W92\r\na=ssrc:4203016772 msid:aDBf6B06A5e93DCC1ADBFA76E467Fd93 aaE1E3E4ee74639aAA4dA07CAAE8Df13\r\na=ssrc:4203016772 mslabel:aDBf6B06A5e93DCC1ADBFA76E467Fd93\r\na=ssrc:4203016772 label:aaE1E3E4ee74639aAA4dA07CAAE8Df13\r\nm=video 9 UDP/TLS/RTP/SAVPF 100 96 97 98 99 101 102 125 127\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:Uckh\r\na=ice-pwd:AnDGWi3I0gp8mcnH8mixqKf+\r\na=ice-options:trickle\r\na=fingerprint:sha-256 CF:5D:F7:EF:9A:E1:BB:10:EE:AD:6B:D2:5C:19:62:79:B0:3F:62:48:4F:86:59:20:58:D1:1F:17:4F:60:81:A0\r\na=setup:actpass\r\na=mid:video\r\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 urn:3gpp:video-orientation\r\na=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=sendrecv\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:100 H264/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 red/90000\r\na=rtpmap:125 rtx/90000\r\na=fmtp:125 apt=102\r\na=rtpmap:127 ulpfec/90000\r\na=ssrc-group:FID 1033393581 1680391674\r\na=ssrc:1033393581 cname:BJESmOLlPu4a0W92\r\na=ssrc:1033393581 msid:aDBf6B06A5e93DCC1ADBFA76E467Fd93 c825Dd591422a0f43aFe5BFf58FCe0b5\r\na=ssrc:1033393581 mslabel:aDBf6B06A5e93DCC1ADBFA76E467Fd93\r\na=ssrc:1033393581 label:c825Dd591422a0f43aFe5BFf58FCe0b5\r\na=ssrc:1680391674 cname:BJESmOLlPu4a0W92\r\na=ssrc:1680391674 msid:aDBf6B06A5e93DCC1ADBFA76E467Fd93 c825Dd591422a0f43aFe5BFf58FCe0b5\r\na=ssrc:1680391674 mslabel:aDBf6B06A5e93DCC1ADBFA76E467Fd93\r\na=ssrc:1680391674 label:c825Dd591422a0f43aFe5BFf58FCe0b5\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:Uckh\r\na=ice-pwd:AnDGWi3I0gp8mcnH8mixqKf+\r\na=ice-options:trickle\r\na=fingerprint:sha-256 CF:5D:F7:EF:9A:E1:BB:10:EE:AD:6B:D2:5C:19:62:79:B0:3F:62:48:4F:86:59:20:58:D1:1F:17:4F:60:81:A0\r\na=setup:actpass\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n","type":"offer"},"id":"6CE08380ad3F6FBdDD888aBB1f765D92"}],"type":"update","version":2}
2019-05-17 14:17:35.659797+0200 Squad[652:129238] WARN:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Can't find matching transport [ V4 127.0.0.1:0 TLS target domain=unspecified mFlowKey=0 ]
2019-05-17 14:17:35.772955+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Receiving incoming SIP message from infra
SIP/2.0 200 OK

Via: SIP/2.0/TLS 127.0.0.1;received=88.212.40.93;branch=z9hG4bK-524287-1---d481e2e1dce205ef;rport=51601

Contact: <sip:172.18.52.17:5060>

To: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

From: "3d2d50B0cd8E1CbffA14dcd1f6684Bea" <sip:[email protected]>;tag=209e23f5

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 2 INFO

Server: Twilio

Supported: room-signaling

X-Twilio-CallSid: CA4707683ac934667245dd6934abf07bbf

X-Twilio-LegInfo: external

X-Twilio-TlsVerify: true

Content-Length: 0
2019-05-17 14:17:35.773241+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Process INFO response with code 200
2019-05-17 14:17:35.773341+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Receiving incoming SIP message from infra
SIP/2.0 200 OK

Via: SIP/2.0/TLS 127.0.0.1;received=88.212.40.93;branch=z9hG4bK-524287-1---15b58fdd9185c213;rport=51601

Contact: <sip:172.18.52.17:5060>

To: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

From: "3d2d50B0cd8E1CbffA14dcd1f6684Bea" <sip:[email protected]>;tag=209e23f5

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 3 INFO

Server: Twilio

Supported: room-signaling

X-Twilio-CallSid: CA4707683ac934667245dd6934abf07bbf

X-Twilio-LegInfo: external

X-Twilio-TlsVerify: true

Content-Length: 0
2019-05-17 14:17:35.774258+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Process INFO response with code 200
2019-05-17 14:17:35.777767+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Receiving incoming SIP message from infra
INFO sip:[email protected]:51601;transport=tls;ob SIP/2.0

Via: SIP/2.0/TLS 34.203.250.196:443;branch=z9hG4bK22e5.e84dcde7.0

Via: SIP/2.0/UDP 172.18.52.17:5060;branch=z9hG4bK2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97_6772d868_265-3365026380927853803

Max-Forwards: 68

To: "3d2d50B0cd8E1CbffA14dcd1f6684Bea" <sip:[email protected]>;tag=209e23f5

From: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 1 INFO

Content-Type: application/room-signaling+json

Supported: room-signaling

User-Agent: Twilio Gateway

Recv-Info: room-signaling

Info-Package: room-signaling

X-Twilio-CallSid: CA4707683ac934667245dd6934abf07bbf

X-Twilio-LegInfo: external

X-Twilio-TlsVerify: true

Content-Length: 1228



{"version":2,"type":"update","sid":"RM02dd50732488da0845337a6ce5a2ea68","name":"00662AAD-1F9F-4141-8613-DE4C8CDE3DD9","participant":{"sid":"PAf11e9f57ffd811bbe48b5b27982522f6","identity":"107479","tracks":[{"kind":"audio","priority":"medium","id":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","enabled":true,"sid":"MTc86ac766a45bcc9620c504cfed0bb1f6","name":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","state":"ready"},{"kind":"video","priority":"medium","id":"c825Dd591422a0f43aFe5BFf58FCe0b5","enabled":true,"sid":"MTead35e536320b86355d24d2b3ade4a18","name":"camera","state":"ready"}],"revision":2,"state":"connected"},"participants":[],"recording":{"enabled":false,"revision":1},"subscribed":{"revision":0,"tracks":[]},"published":{"revision":2,"tracks":[{"kind":"data","priority":"medium","id":"8EEf30925cbB985EB2cfBFec4D2daFf6","enabled":true,"name":"messenger","state":"created"},{"kind":"audio","priority":"medium","id":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","enabled":true,"sid":"MTc86ac766a45bcc9620c504cfed0bb1f6","name":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","state":"ready"},{"kind":"video","priority":"medium","id":"c825Dd591422a0f43aFe5BFf58FCe0b5","enabled":true,"sid":"MTead35e536320b86355d24d2b3ade4a18","name":"camera","state":"ready"}]}}
2019-05-17 14:17:35.778521+0200 Squad[652:129238] INFO:TwilioVideo:[Signaling]:RESIP::SIP: SipMessage::getContents: got content type (application/room-signaling+json) that is not known, returning as opaque application/octet-stream
2019-05-17 14:17:35.786544+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Receiving incoming SIP message from infra
SIP/2.0 200 OK

Via: SIP/2.0/TLS 127.0.0.1;received=88.212.40.93;branch=z9hG4bK-524287-1---33a100876533baaa;rport=51601

Contact: <sip:172.18.52.17:5060>

To: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

From: "3d2d50B0cd8E1CbffA14dcd1f6684Bea" <sip:[email protected]>;tag=209e23f5

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 4 INFO

Server: Twilio

Supported: room-signaling

X-Twilio-CallSid: CA4707683ac934667245dd6934abf07bbf

X-Twilio-LegInfo: external

X-Twilio-TlsVerify: true

Content-Length: 0
2019-05-17 14:17:35.786625+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Process INFO response with code 200
2019-05-17 14:17:35.796378+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Receiving incoming SIP message from infra
INFO sip:[email protected]:51601;transport=tls;ob SIP/2.0

Via: SIP/2.0/TLS 34.203.250.196:443;branch=z9hG4bKf1e5.31aa0341.0

Via: SIP/2.0/UDP 172.18.52.17:5060;branch=z9hG4bK2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97_6772d868_266-13314689149124506107

Max-Forwards: 68

To: "3d2d50B0cd8E1CbffA14dcd1f6684Bea" <sip:[email protected]>;tag=209e23f5

From: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 2 INFO

Content-Type: application/room-signaling+json

Supported: room-signaling

User-Agent: Twilio Gateway

Recv-Info: room-signaling

Info-Package: room-signaling

X-Twilio-CallSid: CA4707683ac934667245dd6934abf07bbf

X-Twilio-LegInfo: external

X-Twilio-TlsVerify: true

Content-Length: 3402



{"version":2,"type":"update","peer_connections":[{"id":"6CE08380ad3F6FBdDD888aBB1f765D92","description":{"type":"answer","sdp":"v=0\r\no=- 3767084255 3767084256 IN IP4 0.0.0.0\r\ns=VM6fbe6c595e7cf6428edb5e88f31b1c44\r\nc=IN IP4 0.0.0.0\r\nt=0 0\r\na=ice-lite\r\na=msid-semantic: WMS *\r\na=group:BUNDLE audio video data\r\nm=audio 1 UDP/TLS/RTP/SAVPF 111 0\r\nc=IN IP4 0.0.0.0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=rtpmap:111 opus/48000/2\r\na=rtpmap:0 PCMU/8000\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=candidate:2 1 UDP 2013266430 34.203.254.9 19452 typ host\r\na=candidate:2 2 UDP 2013266429 34.203.254.9 15269 typ host\r\na=rtcp-mux\r\na=setup:active\r\na=mid:audio\r\na=recvonly\r\na=ice-ufrag:N9Cj\r\na=ice-pwd:+d5ChhWamol/bN4OTdIVGK\r\na=fingerprint:sha-256 3F:F8:B5:EC:9A:DA:36:40:4D:28:21:42:44:86:D2:E5:F1:3E:E5:8E:9F:5C:F1:ED:3A:3D:57:C2:E7:2F:5F:14\r\nm=video 1 UDP/TLS/RTP/SAVPF 100 96\r\nc=IN IP4 0.0.0.0\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=rtpmap:100 H264/90000\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=candidate:2 1 UDP 2013266430 34.203.254.9 19452 typ host\r\na=candidate:2 2 UDP 2013266429 34.203.254.9 15269 typ host\r\na=rtcp-mux\r\na=setup:active\r\na=mid:video\r\na=recvonly\r\na=ice-ufrag:N9Cj\r\na=ice-pwd:+d5ChhWamol/bN4OTdIVGK\r\na=fingerprint:sha-256 3F:F8:B5:EC:9A:DA:36:40:4D:28:21:42:44:86:D2:E5:F1:3E:E5:8E:9F:5C:F1:ED:3A:3D:57:C2:E7:2F:5F:14\r\nm=application 1 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\na=sctpmap:5000 webrtc-datachannel 1024\r\na=candidate:2 1 UDP 2013266430 34.203.254.9 19452 typ host\r\na=candidate:2 2 UDP 2013266429 34.203.254.9 15269 typ host\r\na=mid:data\r\na=ice-ufrag:N9Cj\r\na=ice-pwd:+d5ChhWamol/bN4OTdIVGK\r\na=fingerprint:sha-256 3F:F8:B5:EC:9A:DA:36:40:4D:28:21:42:44:86:D2:E5:F1:3E:E5:8E:9F:5C:F1:ED:3A:3D:57:C2:E7:2F:5F:14\r\n","revision":2}}],"sid":"RM02dd50732488da0845337a6ce5a2ea68","name":"00662AAD-1F9F-4141-8613-DE4C8CDE3DD9","participant":{"sid":"PAf11e9f57ffd811bbe48b5b27982522f6","identity":"107479","tracks":[{"kind":"audio","priority":"medium","id":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","enabled":true,"sid":"MTc86ac766a45bcc9620c504cfed0bb1f6","name":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","state":"ready"},{"kind":"video","priority":"medium","id":"c825Dd591422a0f43aFe5BFf58FCe0b5","enabled":true,"sid":"MTead35e536320b86355d24d2b3ade4a18","name":"camera","state":"ready"}],"revision":2,"state":"connected"},"participants":[],"recording":{"enabled":false,"revision":1},"subscribed":{"revision":0,"tracks":[]},"published":{"revision":2,"tracks":[{"kind":"data","priority":"medium","id":"8EEf30925cbB985EB2cfBFec4D2daFf6","enabled":true,"name":"messenger","state":"created"},{"kind":"audio","priority":"medium","id":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","enabled":true,"sid":"MTc86ac766a45bcc9620c504cfed0bb1f6","name":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","state":"ready"},{"kind":"video","priority":"medium","id":"c825Dd591422a0f43aFe5BFf58FCe0b5","enabled":true,"sid":"MTead35e536320b86355d24d2b3ade4a18","name":"camera","state":"ready"}]}}
2019-05-17 14:17:35.797137+0200 Squad[652:129238] INFO:TwilioVideo:[Signaling]:RESIP::SIP: SipMessage::getContents: got content type (application/room-signaling+json) that is not known, returning as opaque application/octet-stream
2019-05-17 14:17:35.797895+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:Open -> Updating. Process an event
2019-05-17 14:17:35.798006+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:Process remote answer at revision 2.
2019-05-17 14:17:35.798036+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:Process remote sdp for: 6CE08380ad3F6FBdDD888aBB1f765D92 revision is: 2.
2019-05-17 14:17:35.799083+0200 Squad[652:128554] DEBUG:TwilioVideo:[Core]:Applying local description to: 6CE08380ad3F6FBdDD888aBB1f765D92 rev: 2
2019-05-17 14:17:35.802189+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:onSetSessionLocalDescription: 6CE08380ad3F6FBdDD888aBB1f765D92
2019-05-17 14:17:35.802366+0200 Squad[652:128554] DEBUG:TwilioVideo:[Core]:Applying remote description to: 6CE08380ad3F6FBdDD888aBB1f765D92 rev: 2
2019-05-17 14:17:35.804269+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:Done processing onSetSessionLocalDescription: 6CE08380ad3F6FBdDD888aBB1f765D92
2019-05-17 14:17:35.804368+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:onSetSessionRemoteDescription: 6CE08380ad3F6FBdDD888aBB1f765D92
2019-05-17 14:17:35.804523+0200 Squad[652:128540] DEBUG:TwilioVideo:[Core]:Updating -> Open
2019-05-17 14:17:36.321338+0200 Squad[652:128525] INFO:TwilioVideo:[Core]:Ice Gathering Complete.
2019-05-17 14:17:38.925498+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:ICE connection state transitioned from Checking -> Connected
2019-05-17 14:17:38.925627+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:PeerConnection 6CE08380ad3F6FBdDD888aBB1f765D92 Ice connection state transitioned from Checking -> Connected
2019-05-17 14:17:38.925702+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:Room Media state changed to Connected
2019-05-17 14:17:38.925769+0200 Squad[652:128534] INFO:TwilioVideo:[Core]:Media is connected
2019-05-17 14:17:38.926482+0200 Squad[652:129265] INFO:TwilioVideo:[Core]:Connecting to sdkgw.us1.twilio.com:443.
2019-05-17 14:17:38.970149+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:ICE connection state transitioned from Connected -> Completed
2019-05-17 14:17:38.970284+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:PeerConnection 6CE08380ad3F6FBdDD888aBB1f765D92 Ice connection state transitioned from Connected -> Completed
2019-05-17 14:17:38.970425+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:Room Media state changed to Completed
2019-05-17 14:17:39.076505+0200 Squad[652:128555] DEBUG:TwilioVideo:[Platform]:TVIRoom received audioSessionActivated.
2019-05-17 14:17:39.376430+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Receiving incoming SIP message from infra
INFO sip:[email protected]:51601;transport=tls;ob SIP/2.0

Via: SIP/2.0/TLS 34.203.250.196:443;branch=z9hG4bK02e5.530d6a21.0

Via: SIP/2.0/UDP 172.18.52.17:5060;branch=z9hG4bK2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97_6772d868_266-13319253741625158733

Max-Forwards: 68

To: "3d2d50B0cd8E1CbffA14dcd1f6684Bea" <sip:[email protected]>;tag=209e23f5

From: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 3 INFO

Content-Type: application/room-signaling+json

Supported: room-signaling

User-Agent: Twilio Gateway

Recv-Info: room-signaling

Info-Package: room-signaling

X-Twilio-CallSid: CA4707683ac934667245dd6934abf07bbf

X-Twilio-LegInfo: external

X-Twilio-TlsVerify: true

Content-Length: 1438



{"version":2,"type":"update","sid":"RM02dd50732488da0845337a6ce5a2ea68","name":"00662AAD-1F9F-4141-8613-DE4C8CDE3DD9","participant":{"sid":"PAf11e9f57ffd811bbe48b5b27982522f6","identity":"107479","tracks":[{"kind":"data","priority":"medium","id":"8EEf30925cbB985EB2cfBFec4D2daFf6","enabled":true,"sid":"MT59aced925df6ecacccce78a5caee43a2","name":"messenger","state":"ready"},{"kind":"audio","priority":"medium","id":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","enabled":true,"sid":"MTc86ac766a45bcc9620c504cfed0bb1f6","name":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","state":"ready"},{"kind":"video","priority":"medium","id":"c825Dd591422a0f43aFe5BFf58FCe0b5","enabled":true,"sid":"MTead35e536320b86355d24d2b3ade4a18","name":"camera","state":"ready"}],"revision":2,"state":"connected"},"participants":[],"recording":{"enabled":false,"revision":1},"subscribed":{"revision":0,"tracks":[]},"published":{"revision":3,"tracks":[{"kind":"data","priority":"medium","id":"8EEf30925cbB985EB2cfBFec4D2daFf6","enabled":true,"sid":"MT59aced925df6ecacccce78a5caee43a2","name":"messenger","state":"ready"},{"kind":"audio","priority":"medium","id":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","enabled":true,"sid":"MTc86ac766a45bcc9620c504cfed0bb1f6","name":"aaE1E3E4ee74639aAA4dA07CAAE8Df13","state":"ready"},{"kind":"video","priority":"medium","id":"c825Dd591422a0f43aFe5BFf58FCe0b5","enabled":true,"sid":"MTead35e536320b86355d24d2b3ade4a18","name":"camera","state":"ready"}]}}
2019-05-17 14:17:39.377261+0200 Squad[652:129238] INFO:TwilioVideo:[Signaling]:RESIP::SIP: SipMessage::getContents: got content type (application/room-signaling+json) that is not known, returning as opaque application/octet-stream
2019-05-17 14:17:39.378027+0200 Squad[652:128475] DEBUG:TwilioVideo:[Core]:Dispatching onDataTrackPublished() for track sid: MT59aced925df6ecacccce78a5caee43a2
2019-05-17 14:17:39.496188+0200 Squad[652:129265] INFO:TwilioVideo:[Core]:Connected to sdkgw.us1.twilio.com:443.
2019-05-17 14:17:39.978014+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:Media for PeerConnection 6CE08380ad3F6FBdDD888aBB1f765D92 transitioned from MediaInactive -> MediaActive
2019-05-17 14:17:39.978258+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:PeerConnection 6CE08380ad3F6FBdDD888aBB1f765D92 Media activity state transitioned from MediaInactive -> MediaActive
2019-05-17 14:17:39.978341+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:Media Activity state changed to MediaActive
2019-05-17 14:17:39.978455+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:At least one media track is active in Room.
2019-05-17 14:17:41.905360+0200 Squad[652:128525] Callkit: EndCallAction transaction request successful
2019-05-17 14:17:41.945197+0200 Squad[652:128475] -->>>>>>> Callkit: provider:performEndCallAction:
2019-05-17 14:17:42.001297+0200 Squad[652:128475] DEBUG:TwilioVideo:[Core]:RoomSignalingImpl: State transition successful: kConnected -> kDisconnecting
2019-05-17 14:17:42.002012+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:Disconnecting from RM02dd50732488da0845337a6ce5a2ea68.
Callkit: provider:didDeactivateAudioSession:
2019-05-17 14:17:42.628246+0200 Squad[652:128555] DEBUG:TwilioVideo:[Platform]:TVIRoom received audioSessionDeactivated.
2019-05-17 14:17:42.731016+0200 Squad[652:128554] INFO:TwilioVideo:[Core]:Closed Webrtc PeerConnection 6CE08380ad3F6FBdDD888aBB1f765D92
2019-05-17 14:17:42.733235+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:Closing DataChannels for peerconnection: -2140804752
2019-05-17 14:17:42.733400+0200 Squad[652:128534] INFO:TwilioVideo:[Core]:PeerConnectionSignaling with id 6CE08380ad3F6FBdDD888aBB1f765D92 destroyed
2019-05-17 14:17:42.733472+0200 Squad[652:128534] DEBUG:TwilioVideo:[Core]:Closed all Peer Connections
2019-05-17 14:17:42.733803+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Sending outgoing SIP message
BYE sip:172.18.52.17:5060 SIP/2.0

Via: SIP/2.0/TLS 127.0.0.1;branch=z9hG4bK-524287-1---cbd587dbe81b29b1;rport

Max-Forwards: 70

Route: <sip:34.203.250.196:443;r2=on;transport=tls;ftag=209e23f5;lr>

Route: <sip:172.18.3.179:5060;r2=on;transport=udp;ftag=209e23f5;lr>

To: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

From: "3d2d50B0cd8E1CbffA14dcd1f6684Bea"<sip:[email protected]>;tag=209e23f5

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 5 BYE

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, NOTIFY

Content-Type: application/room-signaling+json

Supported: timer, outbound, path, gruu, room-signaling

User-Agent: TwilioVideo SDK

Content-Length: 34



{"type":"disconnect","version":2}
2019-05-17 14:17:42.733953+0200 Squad[652:129238] WARN:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Can't find matching transport [ V4 127.0.0.1:0 TLS target domain=unspecified mFlowKey=0 ]
2019-05-17 14:17:42.862607+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:
Receiving incoming SIP message from infra
SIP/2.0 200 OK

Via: SIP/2.0/TLS 127.0.0.1;received=88.212.40.93;branch=z9hG4bK-524287-1---cbd587dbe81b29b1;rport=51601

To: <sip:[email protected]>;tag=62421807_6772d868_2a3ada8a-bd8c-47a0-b72e-d3fbecfa7d97

From: "3d2d50B0cd8E1CbffA14dcd1f6684Bea" <sip:[email protected]>;tag=209e23f5

Call-ID: fJa-Yab3gnire_teymHuuQ..

CSeq: 5 BYE

Content-Type: application/room-signaling+json

Server: Twilio

Supported: room-signaling

X-Twilio-CallSid: CA4707683ac934667245dd6934abf07bbf

X-Twilio-LegInfo: external

X-Twilio-TlsVerify: true

Content-Length: 165



{"version":1,"type":"disconnected","sid":"RM02dd50732488da0845337a6ce5a2ea68","name":"00662AAD-1F9F-4141-8613-DE4C8CDE3DD9","participants":[],"status":"in-progress"}
2019-05-17 14:17:42.862706+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Process BYE response with code 200
2019-05-17 14:17:42.862777+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Disconnected from Transport.
2019-05-17 14:17:42.862927+0200 Squad[652:129279] DEBUG:TwilioVideo:[Core]:AppleReachability::~AppleReachability()
2019-05-17 14:17:42.863094+0200 Squad[652:129279] DEBUG:TwilioVideo:[Core]:onDisconnected
2019-05-17 14:17:42.863138+0200 Squad[652:129279] DEBUG:TwilioVideo:[Core]:Canceling disconnect timer.
2019-05-17 14:17:42.863515+0200 Squad[652:129279] INFO:TwilioVideo:[Core]:Shutdown and join the signaling stack's thread.
2019-05-17 14:17:42.863608+0200 Squad[652:129238] DEBUG:TwilioVideo:[Core]:Shutting down StackThread runloop.
2019-05-17 14:17:42.863838+0200 Squad[652:129279] WARN:TwilioVideo:[Signaling]:RESIP::TRANSACTION: On shutdown, there are Client TransactionStates remaining!
2019-05-17 14:17:42.864917+0200 Squad[652:129279] DEBUG:TwilioVideo:[Core]:RoomSignalingImpl: State transition successful: kDisconnecting -> kDisconnected
Disconnected from room 00662AAD-1F9F-4141-8613-DE4C8CDE3DD9, error = nil
2019-05-17 14:17:42.874701+0200 Squad[652:128475] DEBUG:TwilioVideo:[Core]:RoomSignalingImpl::~RoomSignalingImpl()
2019-05-17 14:17:42.874770+0200 Squad[652:128475] DEBUG:TwilioVideo:[Core]:RoomSignalingImpl: State Transition Failure: kDisconnected -> kDisconnecting
2019-05-17 14:17:42.874809+0200 Squad[652:128475] DEBUG:TwilioVideo:[Core]:virtual twilio::insights::InsightsPublisher::~InsightsPublisher()
2019-05-17 14:17:42.875447+0200 Squad[652:128475] DEBUG:TwilioVideo:[Core]:Closing DataChannels on an unsubscribe
2019-05-17 14:18:34.304829+0200 Squad[652:128525] TIC Read Status [8:0x283dee040]: 1:57
2019-05-17 14:18:34.304984+0200 Squad[652:128525] TIC Read Status [8:0x283dee040]: 1:57
2019-05-17 14:18:34.305234+0200 Squad[652:128525] TIC Read Status [8:0x283dee040]: 1:57
2019-05-17 14:18:34.308176+0200 Squad[652:128525] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C8.1:2][0x116bd3860] get output frames failed, state 8196
2019-05-17 14:18:34.308700+0200 Squad[652:128525] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C8.1:2][0x116bd3860] get output frames failed, state 8196
2019-05-17 14:18:34.311286+0200 Squad[652:128525] TIC Read Status [8:0x0]: 1:57
2019-05-17 14:18:34.311422+0200 Squad[652:128525] TIC Read Status [8:0x0]: 1:57
2019-05-17 14:18:34.311482+0200 Squad[652:128525] TIC Read Status [8:0x0]: 1:57
2019-05-17 14:18:34.311530+0200 Squad[652:128525] TIC Read Status [8:0x0]: 1:57
2019-05-17 14:18:49.735590+0200 Squad[652:128540] TIC Read Status [7:0x283de4d80]: 1:57
2019-05-17 14:18:49.735672+0200 Squad[652:128540] TIC Read Status [7:0x283de4d80]: 1:57
2019-05-17 14:18:49.735697+0200 Squad[652:128540] TIC Read Status [7:0x283de4d80]: 1:57
2019-05-17 14:18:49.737024+0200 Squad[652:128540] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C7.1:2][0x116c9ea50] get output frames failed, state 8196
2019-05-17 14:18:49.737139+0200 Squad[652:128540] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C7.1:2][0x116c9ea50] get output frames failed, state 8196
2019-05-17 14:18:49.737639+0200 Squad[652:128540] TIC Read Status [7:0x0]: 1:57
2019-05-17 14:18:49.737672+0200 Squad[652:128540] TIC Read Status [7:0x0]: 1:57
2019-05-17 14:18:49.737693+0200 Squad[652:128540] TIC Read Status [7:0x0]: 1:57
2019-05-17 14:18:49.737713+0200 Squad[652:128540] TIC Read Status [7:0x0]: 1:57
2019-05-17 14:21:35.176940+0200 Squad[652:128540] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C3.1:2][0x10e45f210] get output frames failed, state 8196
2019-05-17 14:21:35.177434+0200 Squad[652:128540] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C3.1:2][0x10e45f210] get output frames failed, state 8196
2019-05-17 14:21:35.178490+0200 Squad[652:128540] TIC Read Status [3:0x0]: 1:57
2019-05-17 14:21:35.178588+0200 Squad[652:128540] TIC Read Status [3:0x0]: 1:57

Versions

Video iOS SDK

TwilioVideo 2.6.1 via cocoa pods

Xcode

10.2.1

iOS Version

12.3

iOS Device

iPhone SE, iPhone 6S

Video remains paused even after coming back into app from background

Description

When a user goes to the background while inside of a room, the video pauses as expected for the other user. However, when the user comes back into the app, the video remains paused, but the audio works. I am expecting for the video to start back up automatically. Actually, this behavior was there, and then I updated twilio video to the newest version and it now gives this unexpected behavior.

Steps to Reproduce

  1. Connect two users to a video call
  2. Go to the background on one of the devices
  3. Return to the foreground and video will remain paused

Expected Behavior

I am expecting that the video would automatically resume once the participant returns. Actually, this does happen sometimes, but more often than not, the video just remains paused.

Video iOS SDK

2.8.1 via CocoaPods

Xcode

v10.2

iOS Version

12.2

iOS Device

iPhone X and iPad

iOS 13 Migration Guide

The guide explains how to prepare your Twilio Video apps for compatibility with iOS 13.

Supported SDKs

We recommend that you use the latest patch releases of our SDKs. At this time, we have verified our 2.10.1, and 3.0.0-beta4 SDKs for compatibility with iOS 13.0-beta8 and 13.1-beta2.

Known Issues

We are tracking several issues related to both the Video SDK itself and the example code.

SDK

  1. Catalyst Support

Twilio Video does not support Catalyst applications at this time. If you are interested in this feature please let us know in #49.

  1. TVICameraSource - Background Task Completion Errors

When TVICameraSource starts capturing it begins a background task to ensure that the video pipeline is flushed in the case of an interruption. In iOS 13.0, ending background tasks might send spurious logs to the console:

2019-09-03 13:44:15.345 VideoCallKitQuickStart[983:48546] Video track created

// After backgrounding the application

2019-09-03 13:44:21.979 VideoCallKitQuickStart[983:48546] Can't end BackgroundTask: no background task exists with identifier 3 (0x3), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug.

Status: We have given feedback to Apple, and hope that this issue can be resolved during the iOS 13 release cycle.

  1. TVICameraSource - Distorted video after device usage interruption

See issue #53.

Status: We are still investigating this report and may issue patch releases of our SDK to address it.

  1. TVIVideoView - OpenGL ES crashes on iOS Simulator

The SDK will crash when rendering decoded H.264 video, or any other frames in the TVIPixelFormatYUV420BiPlanarVideoRange or TVIPixelFormatYUV420BiPlanarFullRange formats when using the iOS 13.0 simulator.

Resolution: Update Twilio Video to 3.0.0-beta4, or 2.10.2 (coming soon). Use an older simulator model for testing if your deployment target is earlier than 13.0.

  1. TVIVideoView - Metal on the iOS Simulator

At the moment, Twilio Video does not support Metal on the iOS 13.0 simulator.

Status: We will provide an update once iOS 13.0 and macOS 10.15 are released.

  1. UIScene & UIApplication Lifecycle

iOS 13 introduces new UIScene APIs to better manage navigation hierarchy and lifecycle events. Twilio Video has several classes that register for UIApplication lifecycle notifications, and continue to do so in iOS 13:

  • TVIVideoView
  • TVICameraSource
  • TVICameraCapturer (2.x only)
  • TVIRoom (2.x only)

Status: We are currently investigating the impact of UIScene, and compatibility with Twilio Video classes.

  1. Swift UI

Status: We are still evaluating Swift UI on iOS 13. Integrators should note that TVIVideoView does not specify an intrinsicContentSize.

  1. iPad OS

iPad OS 13.0 will be released on September 30th and offers a brand new multi-tasking interface.

Status: We are still evaluating iPad OS 13.0 for compatibility and expect to provide an update soon.

Sample Code & Framework Integrations

  1. CallKit

Starting a TVIDefaultAudioDevice might fail when the Participant’s device reports an incoming call to CallKit while backgrounded in iOS 12.4 or 13.0-beta8.

Status: This issue should be resolved in iOS 13.1. We will retest with the latest beta release to confirm.

  1. ReplayKit

The ReplayKit Framework received some significant enhancements in iOS 13, resolving problems with delayed application audio and the reliability of RPScreenRecorder. However, there is also a serious bug in iOS 13.0-beta8 (fixed in 13.1-beta2) that can cause a crash when using RPSystemBroadcastPickerView.

Using RPBroadcastSystemPickerView on iOS 13.0-beta8 throws an NSInvalidArgumentException.

If you use a broadcast extension in iOS 13.0-beta8 there is also a memory leak that will result in a crash when the microphone is enabled. This crash is resolved in iOS 13.1-beta2.

Broadcasting with microphone audio on iOS 13.0-beta8 and hitting the memory limit for an extension.

If you use ExampleReplayKitAudioCapturer to capture application audio samples, then you may experience distortion on iOS 13.0 due to changes in the audio format used by ReplayKit.

Resolution: Refer to the updated example app (master, 3.0.0-beta) for iOS 13 support. Consider disabling RPBroadcastSystemPickerView on iOS 13.0 using a runtime check until iOS 13.1 is available.

  1. Swift Naming Conflicts (3.0.0-beta)

When compiling the 3.0.0-beta examples, the Objective-C class TVIAudioCodec conflicts with the AudioCodec type definition from AudioToolbox.framework when compiled with Xcode 11.

Resolution: The examples were updated to eliminate the conflict. If you are experiencing conflicts with the Swift translation of Twilio Video classes, then refer to the classes using their fully qualified name:

// Both frameworks define the Swift name AudioCodec
import AudioToolbox
import TwilioVideo

// Specify the Twilio class by its full name
var audioCodec: TwilioVideo.AudioCodec?

Feedback

If you’d like to discuss iOS 13 further, or have more questions feel free to reply to this issue or to any of the linked issues.

Chrome 76+ DataTrack incompatibility with 2.X Mobile SDKs in P2P Rooms

Chrome 76 added support for a new SDP format for data channel negotiation. This new SDP format is not compatible with 2.x Android and iOS Video SDKs when used with P2P Rooms.

What is the impact?

In a P2P room, Chrome 76+ Participants and affected mobile SDKs might not be able to subscribe to each other’s data tracks. The issue occurs when the Chrome Participant connects to a Room after an incompatible mobile Participant has already connected.

Are audio and video tracks affected?

No. Participants can subscribe to audio and video tracks and they continue to function as expected.

Is my app impacted by this change?

The following table shows the impacted mobile SDK versions and the recommended upgrade path:

Twilio Video SDK Affected versions Recommended Upgrade path
Android SDK 2.X 3.0.0 +
iOS SDK 2.0.0 - 2.2.2 2.3.0 +

I am impacted, what should I do?

Please refer to the upgrade paths listed above and the following guides for performing the upgrades:

Additional Resources

Randomly missing audio and video

Description

On a relatively small % of calls (P2P) we do each day we are missing either audio or video from a participant. All of our calls are two participants, one is a client using iOS or Android, and our employee using the latest version of Chrome.

On the desktop side we see the remote tracks get subscribed. Then we wait for the 'started' event, which also occurs. But then we get no audio from our client or sometimes no video. In most cases they will restart the call with the same result. In one case we saw a reboot fix the issue.

We record the calls from the desktop side and there the audio/video is missing as well. So our best guess is that this is a mobile client side problem. The client is sending the streams, but they don't contain audio.

This happens on Android and iOS clients, though we probably see more on iOS. Since we are talking about a broad range of issues, we would be happy to tackle just one: iOS audio.

We do not provide a mute button in our app so we are sure it isn't something disabling the audio track.

We are looking for ways to diagnose the cause and/or additional logging we can do. Is it possible there is another mute somewhere? Or something obvious we are missing? Is #34 possibly related? We don't unpublish tracks during a call though.

Steps to Reproduce

Unfortunately we are unable to reproduce it locally and it only happens on < 5% of calls.

Code

Our iOS code is very similar to the quickstart code. There isn't much to the audio portions,.

Expected Behavior

All tracks to work reliably.

Actual Behavior

Audio or video track starts but produces no data.

Reproduces How Often

<5% of calls.

Logs

We don't have any useful logs, but are looking for guidance on what to collect.

Versions

ios:2.6.0
android: 2.0.1
js library: 2.0.0-beta4 (Always Chrome)

Video iOS SDK

See above.

Xcode

10.0.1

iOS Version

Various. Doesn't seem to matter.

iOS Device

Various. Doesn't seem to matter.

Size of TwilioVideo.framework

After including Twilio Video pod in my app the size of the app ballooned to over 200MB. After inspecting I noticed that TwilioVideo.framework file is 160MB. Is this normal? Is there anything that can be done to reduce it?

Video is paused when app is in the background

Description

On iOS, Video stream is paused when app is in the background.

Steps to Reproduce

  1. Use sample code from https://github.com/twilio/video-quickstart-swift
  2. Connect to room (somewhere where you can preview live the participants video)
  3. Background the app
  4. Video stream will be paused

Although I do see the app is working in the background (my own logs show up), video is paused on the moment I hit home button.
I do have "Audio, AirPlay and Picture in Picture" capability enabled in project settings.

Expected Behavior

Participant on the other end see's my camera video stream even when the app is in the background.

Reproduces How Often

100%

Versions

Twilio 2.7.0

Xcode

Xcode 10.1

iOS Version

12.1.4

iOS Device

iPhone 7

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.