2021-08-11 06:37:47 +00:00
|
|
|
package c.a.q;
|
2021-07-24 02:37:17 +00:00
|
|
|
|
2021-08-12 06:36:45 +00:00
|
|
|
import c.a.q.m0.a;
|
|
|
|
import c.a.q.o0.b;
|
|
|
|
import c.a.q.o0.c;
|
|
|
|
import c.a.q.o0.d;
|
2021-09-09 06:47:34 +00:00
|
|
|
import c.a.q.o0.e;
|
2021-08-06 20:07:13 +00:00
|
|
|
import co.discord.media_engine.MediaType;
|
|
|
|
import co.discord.media_engine.StreamParameters;
|
2021-07-24 02:37:17 +00:00
|
|
|
import co.discord.media_engine.VoiceQuality;
|
|
|
|
import com.discord.rtcconnection.KrispOveruseDetector;
|
|
|
|
import com.discord.rtcconnection.MediaSinkWantsManager;
|
|
|
|
import com.discord.rtcconnection.RtcConnection;
|
|
|
|
import com.discord.rtcconnection.mediaengine.MediaEngineConnection;
|
|
|
|
import com.discord.rtcconnection.socket.io.Payloads;
|
2021-11-02 06:38:17 +00:00
|
|
|
import d0.t.h0;
|
|
|
|
import d0.t.j;
|
|
|
|
import d0.t.o;
|
|
|
|
import d0.z.d.m;
|
2021-07-24 02:37:17 +00:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Objects;
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
import kotlin.NoWhenBranchMatchedException;
|
2021-08-09 22:51:56 +00:00
|
|
|
import org.webrtc.MediaStreamTrack;
|
2021-07-24 02:37:17 +00:00
|
|
|
import rx.Observable;
|
|
|
|
import rx.Subscription;
|
|
|
|
/* compiled from: RtcConnection.kt */
|
|
|
|
public final class b0 implements MediaEngineConnection.d {
|
|
|
|
public final /* synthetic */ RtcConnection a;
|
|
|
|
|
|
|
|
public b0(RtcConnection rtcConnection) {
|
|
|
|
this.a = rtcConnection;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
|
|
public void onConnected(MediaEngineConnection mediaEngineConnection, MediaEngineConnection.TransportInfo transportInfo, List<a> list) {
|
|
|
|
m.checkNotNullParameter(mediaEngineConnection, "connection");
|
|
|
|
m.checkNotNullParameter(transportInfo, "transportInfo");
|
|
|
|
m.checkNotNullParameter(list, "supportedVideoCodecs");
|
|
|
|
RtcConnection rtcConnection = this.a;
|
|
|
|
rtcConnection.p.succeed();
|
|
|
|
rtcConnection.q = transportInfo;
|
2021-11-02 06:38:17 +00:00
|
|
|
MediaEngineConnection mediaEngineConnection2 = rtcConnection.w;
|
2021-07-24 02:37:17 +00:00
|
|
|
if (mediaEngineConnection2 != null) {
|
2021-08-18 06:27:30 +00:00
|
|
|
d dVar = new d(1000, rtcConnection.U, mediaEngineConnection2, new VoiceQuality(), rtcConnection.A, new KrispOveruseDetector(mediaEngineConnection2), 0, 64);
|
2021-07-24 02:37:17 +00:00
|
|
|
dVar.a.clear();
|
|
|
|
Subscription subscription = dVar.b;
|
|
|
|
if (subscription != null && !subscription.isUnsubscribed()) {
|
|
|
|
dVar.a();
|
|
|
|
}
|
2021-11-02 06:38:17 +00:00
|
|
|
dVar.b = Observable.D(0, dVar.f225c, TimeUnit.MILLISECONDS).W(new b(dVar), new c(dVar));
|
2021-07-24 02:37:17 +00:00
|
|
|
rtcConnection.n = dVar;
|
|
|
|
rtcConnection.o = false;
|
|
|
|
}
|
2021-11-02 06:38:17 +00:00
|
|
|
if (transportInfo.f2179c.ordinal() != 0) {
|
2021-10-09 06:29:02 +00:00
|
|
|
StringBuilder O = c.d.b.a.a.O("Unsupported protocol: ");
|
2021-11-02 06:38:17 +00:00
|
|
|
O.append(transportInfo.f2179c);
|
2021-10-09 06:29:02 +00:00
|
|
|
O.append('.');
|
|
|
|
RtcConnection.j(rtcConnection, true, O.toString(), null, false, 12);
|
2021-07-24 02:37:17 +00:00
|
|
|
} else {
|
2021-08-18 06:27:30 +00:00
|
|
|
rtcConnection.U.recordBreadcrumb("Sending UDP info to RTC server.", rtcConnection.k);
|
2021-08-12 06:36:45 +00:00
|
|
|
c.a.q.n0.a aVar = rtcConnection.v;
|
2021-07-24 02:37:17 +00:00
|
|
|
if (aVar == null) {
|
2021-08-12 06:36:45 +00:00
|
|
|
RtcConnection.o(rtcConnection, "onEngineConnectionConnected() socket was null.", null, null, 6);
|
2021-07-24 02:37:17 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
String str = transportInfo.a;
|
|
|
|
int i = transportInfo.b;
|
|
|
|
m.checkNotNullParameter("udp", "protocol");
|
|
|
|
m.checkNotNullParameter(str, "address");
|
|
|
|
m.checkNotNullParameter("xsalsa20_poly1305", "mode");
|
|
|
|
m.checkNotNullParameter(list, "codecs");
|
2021-09-07 06:52:02 +00:00
|
|
|
aVar.G.a();
|
2021-07-24 02:37:17 +00:00
|
|
|
Payloads.Protocol.ProtocolInfo protocolInfo = new Payloads.Protocol.ProtocolInfo(str, i, "xsalsa20_poly1305");
|
|
|
|
ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(list, 10));
|
|
|
|
for (a aVar2 : list) {
|
2021-11-02 06:38:17 +00:00
|
|
|
arrayList.add(new Payloads.Protocol.CodecInfo(aVar2.a, aVar2.b, aVar2.f215c, aVar2.d, aVar2.e));
|
2021-07-24 02:37:17 +00:00
|
|
|
}
|
2021-09-07 06:52:02 +00:00
|
|
|
aVar.n(1, new Payloads.Protocol("udp", protocolInfo, arrayList));
|
2021-07-24 02:37:17 +00:00
|
|
|
}
|
|
|
|
for (RtcConnection.c cVar : rtcConnection.m) {
|
|
|
|
cVar.onMediaEngineConnectionConnected(rtcConnection);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
|
|
public void onConnectionStateChange(MediaEngineConnection mediaEngineConnection, MediaEngineConnection.ConnectionState connectionState) {
|
|
|
|
RtcConnection.State state;
|
|
|
|
m.checkNotNullParameter(mediaEngineConnection, "connection");
|
|
|
|
m.checkNotNullParameter(connectionState, "connectionState");
|
|
|
|
RtcConnection rtcConnection = this.a;
|
2021-11-02 06:38:17 +00:00
|
|
|
RtcConnection.StateChange stateChange = rtcConnection.r;
|
2021-08-12 06:36:45 +00:00
|
|
|
rtcConnection.r("Connection state change: " + connectionState);
|
2021-07-24 02:37:17 +00:00
|
|
|
int ordinal = connectionState.ordinal();
|
|
|
|
if (ordinal == 0) {
|
|
|
|
state = RtcConnection.State.h.a;
|
|
|
|
} else if (ordinal == 1) {
|
|
|
|
state = RtcConnection.State.g.a;
|
|
|
|
} else if (ordinal == 2) {
|
|
|
|
state = RtcConnection.State.f.a;
|
|
|
|
} else if (ordinal == 3) {
|
|
|
|
state = RtcConnection.State.e.a;
|
|
|
|
} else {
|
|
|
|
throw new NoWhenBranchMatchedException();
|
|
|
|
}
|
2021-08-12 06:36:45 +00:00
|
|
|
rtcConnection.u(state);
|
2021-11-02 06:38:17 +00:00
|
|
|
if (stateChange.a == RtcConnection.State.g.a && rtcConnection.r.a == RtcConnection.State.h.a) {
|
2021-08-12 06:36:45 +00:00
|
|
|
rtcConnection.q();
|
2021-07-24 02:37:17 +00:00
|
|
|
}
|
2021-11-02 06:38:17 +00:00
|
|
|
if (rtcConnection.r.a == RtcConnection.State.f.a) {
|
2021-08-18 06:27:30 +00:00
|
|
|
rtcConnection.C = Long.valueOf(rtcConnection.V.currentTimeMillis());
|
|
|
|
rtcConnection.I = true;
|
2021-11-02 06:38:17 +00:00
|
|
|
Map<String, Object> mutableMapOf = h0.mutableMapOf(d0.o.to("connect_count", Integer.valueOf(rtcConnection.D)));
|
2021-07-24 02:37:17 +00:00
|
|
|
Long l = rtcConnection.B;
|
|
|
|
Long l2 = rtcConnection.C;
|
|
|
|
Long valueOf = (l2 == null || l == null) ? null : Long.valueOf(l2.longValue() - l.longValue());
|
|
|
|
if (valueOf != null) {
|
|
|
|
mutableMapOf.put("connect_time", Long.valueOf(valueOf.longValue()));
|
|
|
|
}
|
|
|
|
rtcConnection.b(mutableMapOf);
|
2021-08-12 06:36:45 +00:00
|
|
|
rtcConnection.p(RtcConnection.AnalyticsEvent.VOICE_CONNECTION_SUCCESS, mutableMapOf);
|
2021-08-18 06:27:30 +00:00
|
|
|
MediaSinkWantsManager mediaSinkWantsManager = rtcConnection.G;
|
2021-07-24 02:37:17 +00:00
|
|
|
if (mediaSinkWantsManager != null) {
|
2021-11-02 06:38:17 +00:00
|
|
|
mediaSinkWantsManager.b(new i(mediaSinkWantsManager, rtcConnection.w));
|
2021-07-24 02:37:17 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
|
|
public void onDestroy(MediaEngineConnection mediaEngineConnection) {
|
|
|
|
m.checkNotNullParameter(mediaEngineConnection, "connection");
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
|
|
public void onError(MediaEngineConnection mediaEngineConnection, MediaEngineConnection.FailedConnectionException failedConnectionException) {
|
|
|
|
m.checkNotNullParameter(mediaEngineConnection, "connection");
|
|
|
|
m.checkNotNullParameter(failedConnectionException, "exception");
|
|
|
|
RtcConnection rtcConnection = this.a;
|
|
|
|
Objects.requireNonNull(rtcConnection);
|
|
|
|
String str = "connection error: " + failedConnectionException.a();
|
|
|
|
int ordinal = failedConnectionException.a().ordinal();
|
|
|
|
if (ordinal == 0 || ordinal == 1 || ordinal == 2) {
|
2021-10-09 06:29:02 +00:00
|
|
|
StringBuilder S = c.d.b.a.a.S(str, " -- ");
|
|
|
|
S.append(failedConnectionException.getMessage());
|
|
|
|
rtcConnection.r(S.toString());
|
2021-07-24 02:37:17 +00:00
|
|
|
} else {
|
|
|
|
RtcConnection.AnalyticsEvent analyticsEvent = RtcConnection.AnalyticsEvent.VOICE_CONNECTION_FAILURE;
|
2021-11-02 06:38:17 +00:00
|
|
|
Map<String, Object> mutableMapOf = h0.mutableMapOf(d0.o.to("connect_count", Integer.valueOf(rtcConnection.D)));
|
2021-07-24 02:37:17 +00:00
|
|
|
rtcConnection.b(mutableMapOf);
|
2021-08-12 06:36:45 +00:00
|
|
|
rtcConnection.p(analyticsEvent, mutableMapOf);
|
2021-07-24 02:37:17 +00:00
|
|
|
}
|
2021-08-12 06:36:45 +00:00
|
|
|
RtcConnection.j(rtcConnection, true, str, failedConnectionException, false, 8);
|
2021-07-24 02:37:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
|
|
public void onKrispStatus(MediaEngineConnection mediaEngineConnection, KrispOveruseDetector.Status status) {
|
|
|
|
m.checkNotNullParameter(mediaEngineConnection, "connection");
|
|
|
|
m.checkNotNullParameter(status, "status");
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
|
|
public void onLocalMute(long j, boolean z2) {
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
|
|
public void onLocalVideoOffScreen(long j, boolean z2) {
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
|
|
public void onSpeaking(long j, int i, boolean z2) {
|
2021-08-12 06:36:45 +00:00
|
|
|
c.a.q.n0.a aVar;
|
2021-07-24 02:37:17 +00:00
|
|
|
RtcConnection rtcConnection = this.a;
|
2021-08-18 06:27:30 +00:00
|
|
|
if (j == rtcConnection.S && (aVar = rtcConnection.v) != null) {
|
2021-09-07 06:52:02 +00:00
|
|
|
aVar.G.a();
|
|
|
|
aVar.n(5, new Payloads.Speaking(i, Integer.valueOf(z2 ? 1 : 0), 0, null, 8, null));
|
2021-07-24 02:37:17 +00:00
|
|
|
}
|
|
|
|
for (RtcConnection.c cVar : rtcConnection.m) {
|
|
|
|
cVar.onSpeaking(j, z2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-09-09 06:47:34 +00:00
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
|
|
public void onTargetBitrate(int i) {
|
|
|
|
e eVar = this.a.A;
|
|
|
|
synchronized (eVar) {
|
|
|
|
eVar.l.k = i;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
|
|
public void onTargetFrameRate(int i) {
|
|
|
|
e eVar = this.a.A;
|
|
|
|
synchronized (eVar) {
|
|
|
|
eVar.l.l = i;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-07-24 02:37:17 +00:00
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
2021-08-06 20:07:13 +00:00
|
|
|
public void onVideo(long j, Integer num, int i, int i2, int i3, StreamParameters[] streamParametersArr) {
|
|
|
|
m.checkNotNullParameter(streamParametersArr, "streams");
|
2021-07-24 02:37:17 +00:00
|
|
|
RtcConnection rtcConnection = this.a;
|
2021-08-06 20:07:13 +00:00
|
|
|
List<StreamParameters> asList = j.asList(streamParametersArr);
|
2021-08-18 06:27:30 +00:00
|
|
|
if (j == rtcConnection.S) {
|
2021-08-12 06:36:45 +00:00
|
|
|
c.a.q.n0.a aVar = rtcConnection.v;
|
2021-07-24 02:37:17 +00:00
|
|
|
if (aVar == null) {
|
2021-08-12 06:36:45 +00:00
|
|
|
RtcConnection.o(rtcConnection, "sendVideo() socket was null.", null, null, 6);
|
2021-07-24 02:37:17 +00:00
|
|
|
} else {
|
2021-08-18 06:27:30 +00:00
|
|
|
rtcConnection.K = (long) i2;
|
2021-07-24 02:37:17 +00:00
|
|
|
if (i2 != 0) {
|
|
|
|
rtcConnection.o = true;
|
|
|
|
}
|
2021-08-06 20:07:13 +00:00
|
|
|
ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(asList, 10));
|
|
|
|
for (StreamParameters streamParameters : asList) {
|
2021-08-09 22:51:56 +00:00
|
|
|
String str = streamParameters.getType() == MediaType.Audio ? MediaStreamTrack.AUDIO_TRACK_KIND : MediaStreamTrack.VIDEO_TRACK_KIND;
|
2021-08-06 20:07:13 +00:00
|
|
|
String rid = streamParameters.getRid();
|
|
|
|
Integer valueOf = Integer.valueOf(streamParameters.getSsrc());
|
|
|
|
Integer valueOf2 = Integer.valueOf(streamParameters.getRtxSsrc());
|
|
|
|
Boolean valueOf3 = Boolean.valueOf(streamParameters.getActive());
|
|
|
|
Integer valueOf4 = Integer.valueOf(streamParameters.getMaxBitrate());
|
|
|
|
Integer valueOf5 = Integer.valueOf(streamParameters.getQuality());
|
2021-08-12 06:36:45 +00:00
|
|
|
j0 j0Var = f.a;
|
2021-11-02 06:38:17 +00:00
|
|
|
Integer valueOf6 = Integer.valueOf(j0Var.b.f206c);
|
2021-08-06 20:07:13 +00:00
|
|
|
Payloads.ResolutionType resolutionType = Payloads.ResolutionType.Fixed;
|
2021-08-12 06:36:45 +00:00
|
|
|
b bVar = j0Var.b;
|
2021-08-06 20:07:13 +00:00
|
|
|
arrayList.add(new Payloads.Stream(str, rid, valueOf6, valueOf5, valueOf, valueOf2, new Payloads.Stream.MaxResolution(resolutionType, bVar.a, bVar.b), valueOf3, valueOf4));
|
|
|
|
}
|
|
|
|
m.checkNotNullParameter(arrayList, "streams");
|
2021-09-07 06:52:02 +00:00
|
|
|
aVar.G.a();
|
|
|
|
aVar.n(12, new Payloads.Video(i, i2, i3, null, arrayList));
|
2021-07-24 02:37:17 +00:00
|
|
|
}
|
2021-08-18 06:27:30 +00:00
|
|
|
MediaSinkWantsManager mediaSinkWantsManager = rtcConnection.G;
|
2021-07-24 02:37:17 +00:00
|
|
|
if (mediaSinkWantsManager != null) {
|
2021-08-06 20:07:13 +00:00
|
|
|
mediaSinkWantsManager.b(new k(mediaSinkWantsManager, i2 != 0));
|
2021-07-24 02:37:17 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
for (RtcConnection.c cVar : rtcConnection.m) {
|
|
|
|
cVar.onVideoStream(j, num, i, i2, i3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|