ConnectyCube / android-messenger-app

Chat and voice / video calling app using ConnectyCube
https://connectycube.com
Apache License 2.0
51 stars 23 forks source link

Connection quality #50

Closed mwaked closed 4 years ago

mwaked commented 4 years ago

Is there any function to return connection quality like any call like FB Messenger or Watsapp, it let me know connection quality Excellent, average or poor or no connection ??

Thanks ConnectyCube team

TatankaConCube commented 4 years ago

Are you mean quality internet connection during call?

mwaked commented 4 years ago

@TatankaConCube no i mean call quality

TatankaConCube commented 4 years ago

ConnectyCube SDK does'n have ready-made solution for this case, but feature WebRTC Stats reporting can be helpful for your case. For example, you can use parameters connectionReceivedBitrate and(or) connectionSendBitrate to calculate own quality indicator.

mwaked commented 4 years ago

Okay, I'm also working on iOS, and it doesn't work for iOS.. Is there a way you can help? I created an issue in github iOS but there's no response until now. Link: https://github.com/ConnectyCube/connectycube-ios-calls-sdk-releases/issues/3

TatankaConCube commented 4 years ago

I tested this functionality on ConnectyCube SDK version 1.8.1 for Android and it worked. About iOS - I can't help with it ((

iamimsh commented 4 years ago

@TatankaConCube, I feel sad to know that you can't help with iOS. Could you atleast inform iOS team to help us?

mwaked commented 4 years ago

Hello, I try to use RTCStatsReport object which return in this listener

currentSession?.addStatsReportCallback { rtcStatsReport, userId -> Logger.d(CALL_TAG, TAG,"Lost: ${rtcStatsReport.audioReceivedPacketsLost}, Received: ${rtcStatsReport.audioReceivedPacketsReceived}") Logger.d(CALL_TAG, TAG,"Report by user = $userId , Full report = $rtcStatsReport") }

There is no useful data for calculate connection quality and most values always 0 or null!

Can you help me please?

// RTCStatsReport data

{ connectionReceivedBitrate='0bps', connectionRoundTripTime='39', connectionSendBitrate='0bps', localCandidateType='local', remoteCandidateType='prflx', transportType='udp', transportConnectionIsActive='true', readableIceRequest='true', writableIceRequest='true', packetsSent='10', packetsDiscardedOnSend='0', localCandidateID='Cand-o3/bCwiL', channelID='Channel-audio-1', localAddress='192.168.50.235:44253', remoteAddress='192.168.50.15:58266', actualEncodingBitrate='0bps', availableReceiveBandwidth='0bps', availableSendBandwidth='300Kbps', targetEncodingBitrate='0bps', bucketDelay='0', retransmitBitrate='0', transmitBitrate='0', videoSendPacketsLost='null', videoSendPacketsSent='null', videoSendEncodeUsagePercent='null', videoSendTrackID='null', videoSendEncodeMs='null', videoSendInputFps='null', videoSendInputHeight='null', videoSendInputWidth='null', videoSendCodec='null', videoSendBitrate='null', videoSendFps='null', videoSendHeight='null', videoSendWidth='null', videoSendNacksReceived='null', videoSendPlisReceived='null', videoSendViewLimitedResolution='null', videoSendCpuLimitedResolution='null', videoReceivedDecodeMs='null', videoReceivedDecodedFps='null', videoReceivedOutputFps='null', videoReceivedBitrate='null', videoReceivedFps='null', videoReceivedHeight='null', videoReceivedWidth='null', audioSendBitrate='0bps', audioSendInputLevel='95', audioReceiveOutputLevel='null', audioSendBytesSent='813', audioSendPacketsLost='null', audioSendPacketsSent='9', audioSendCodec='ISAC', audioSendTrackID='ARDAMSa0', audioSendEchoCancellationQualityMin='null', audioSendEchoCancellationEchoDelayMedian='null', audioSendEchoCancellationEchoDelayStdDev='null', audioSendEchoCancellationReturnLoss='null', audioSendEchoCancellationReturnLossEnhancement='null', audioSendJitterReceived='null', audioReceivedCurrentDelay='0', audioReceivedPacketsLost='0', audioReceivedPacketsReceived='0', audioReceivedTrackId='ARDAMSa0', audioReceivedExpandRate='0', audioReceivedBitrate='0bps', audioReceivedCodec='' }

TatankaConCube commented 4 years ago

hello @mwaked there is my report after established connection between users:

{ connectionReceivedBitrate='3Kbps', connectionRoundTripTime='6', connectionSendBitrate='2Kbps', localCandidateType='local', remoteCandidateType='local', transportType='udp', transportConnectionIsActive='true', readableIceRequest='true', writableIceRequest='true', packetsSent='82596', packetsDiscardedOnSend='0', localCandidateID='Cand-EpPhFABY', channelID='Channel-audio-1', localAddress='192.168.1.55:55493', remoteAddress='192.168.1.77:42891', actualEncodingBitrate='1.70Mbps', availableReceiveBandwidth='0bps', availableSendBandwidth='3.90Mbps', targetEncodingBitrate='1.70Mbps', bucketDelay='1', retransmitBitrate='0', transmitBitrate='1772656', videoSendPacketsLost='0', videoSendPacketsSent='61965', videoSendEncodeUsagePercent='52', videoSendTrackID='ARDAMSv0', videoSendEncodeMs='15', videoSendInputFps='30', videoSendInputHeight='480', videoSendInputWidth='640', videoSendCodec='VP8', videoSendBitrate='2Kbps', videoSendFps='29', videoSendHeight='480', videoSendWidth='640', videoSendNacksReceived='0', videoSendPlisReceived='0', videoSendViewLimitedResolution='null', videoSendCpuLimitedResolution='false', videoReceivedDecodeMs='22', videoReceivedDecodedFps='30', videoReceivedOutputFps='30', videoReceivedBitrate='3Kbps', videoReceivedFps='31', videoReceivedHeight='720', videoReceivedWidth='1280', audioSendBitrate='21bps', audioSendInputLevel='315', audioReceiveOutputLevel='1979', audioSendBytesSent='244238', audioSendPacketsLost='0', audioSendPacketsSent='6443', audioSendCodec='ISAC', audioSendTrackID='ARDAMSa0', audioSendEchoCancellationQualityMin='null', audioSendEchoCancellationEchoDelayMedian='null', audioSendEchoCancellationEchoDelayStdDev='null', audioSendEchoCancellationReturnLoss='null', audioSendEchoCancellationReturnLossEnhancement='null', audioSendJitterReceived='9', audioReceivedCurrentDelay='180', audioReceivedPacketsLost='1', audioReceivedPacketsReceived='7212', audioReceivedTrackId='ARDAMSa0', audioReceivedExpandRate='0', audioReceivedBitrate='34bps', audioReceivedCodec='ISAC' }

Please check that you set RTCConfig.setStatsReportInterval(5) and add callback before start call.

mwaked commented 4 years ago

@TatankaConCube Thank you