368 lines
15 KiB
Java
368 lines
15 KiB
Java
package c.a.r;
|
|
|
|
import c.a.r.d;
|
|
import c.a.r.j0.a;
|
|
import c.a.r.k0.d;
|
|
import c.a.r.k0.e;
|
|
import com.discord.rtcconnection.EncodeQuality;
|
|
import com.discord.rtcconnection.MediaSinkWantsManager;
|
|
import com.discord.rtcconnection.RtcConnection;
|
|
import com.discord.rtcconnection.VideoMetadata;
|
|
import com.discord.rtcconnection.mediaengine.MediaEngine;
|
|
import com.discord.rtcconnection.mediaengine.MediaEngineConnection;
|
|
import com.discord.rtcconnection.socket.io.Payloads;
|
|
import com.discord.utilities.logging.Logger;
|
|
import d0.t.n;
|
|
import d0.t.o;
|
|
import d0.t.r;
|
|
import d0.t.u;
|
|
import d0.z.d.m;
|
|
import java.util.ArrayList;
|
|
import java.util.Iterator;
|
|
import java.util.LinkedHashMap;
|
|
import java.util.List;
|
|
import java.util.ListIterator;
|
|
import java.util.Map;
|
|
import java.util.NoSuchElementException;
|
|
import java.util.Objects;
|
|
import kotlin.NoWhenBranchMatchedException;
|
|
/* compiled from: RtcConnection.kt */
|
|
public final class c0 implements a.d {
|
|
public final /* synthetic */ RtcConnection a;
|
|
|
|
public c0(RtcConnection rtcConnection) {
|
|
this.a = rtcConnection;
|
|
}
|
|
|
|
@Override // c.a.r.j0.a.d
|
|
public void a(String str, String str2) {
|
|
m.checkNotNullParameter(str, "audioCodec");
|
|
m.checkNotNullParameter(str2, "videoCodec");
|
|
MediaEngineConnection mediaEngineConnection = this.a.n;
|
|
if (mediaEngineConnection != null) {
|
|
mediaEngineConnection.r(str, str2);
|
|
}
|
|
}
|
|
|
|
@Override // c.a.r.j0.a.d
|
|
public void b(boolean z2, Integer num, String str) {
|
|
RtcConnection rtcConnection = this.a;
|
|
Objects.requireNonNull(rtcConnection);
|
|
rtcConnection.r("Disconnected from RTC server. wasFatal: " + z2 + " -- code: " + num + " -- reason: " + str);
|
|
MediaEngineConnection mediaEngineConnection = rtcConnection.n;
|
|
if (mediaEngineConnection != null) {
|
|
mediaEngineConnection.destroy();
|
|
}
|
|
MediaEngineConnection mediaEngineConnection2 = rtcConnection.n;
|
|
if (mediaEngineConnection2 != null) {
|
|
mediaEngineConnection2.o(rtcConnection.B);
|
|
}
|
|
boolean z3 = num == null || num.intValue() != 1000;
|
|
if (!(rtcConnection.i.a instanceof RtcConnection.State.d)) {
|
|
rtcConnection.n(z3, str);
|
|
d dVar = rtcConnection.f;
|
|
if (dVar != null) {
|
|
dVar.a();
|
|
}
|
|
rtcConnection.f = null;
|
|
}
|
|
rtcConnection.q = 0;
|
|
rtcConnection.f2075s = null;
|
|
MediaSinkWantsManager mediaSinkWantsManager = rtcConnection.v;
|
|
if (mediaSinkWantsManager != null) {
|
|
mediaSinkWantsManager.b(new f(mediaSinkWantsManager));
|
|
}
|
|
rtcConnection.u(new RtcConnection.State.d(z3));
|
|
if (z3) {
|
|
long fail = rtcConnection.g.fail(new a0(rtcConnection));
|
|
Logger.w$default(rtcConnection.J, rtcConnection.f2074c, "Disconnect was not clean! Reason: " + str + ", code: " + num + ". Reconnecting in " + (fail / ((long) 1000)) + " seconds.", null, 4, null);
|
|
}
|
|
}
|
|
|
|
@Override // c.a.r.j0.a.d
|
|
public void c(String str, List<Integer> list) {
|
|
m.checkNotNullParameter(str, "mode");
|
|
m.checkNotNullParameter(list, "secretKey");
|
|
MediaEngineConnection mediaEngineConnection = this.a.n;
|
|
if (mediaEngineConnection != null) {
|
|
mediaEngineConnection.t(str, u.toIntArray(list));
|
|
}
|
|
}
|
|
|
|
@Override // c.a.r.j0.a.d
|
|
public void d(String str) {
|
|
m.checkNotNullParameter(str, "mediaSessionId");
|
|
RtcConnection rtcConnection = this.a;
|
|
rtcConnection.f2077y = str;
|
|
for (RtcConnection.c cVar : rtcConnection.e) {
|
|
cVar.onMediaSessionIdReceived();
|
|
rtcConnection.p(RtcConnection.AnalyticsEvent.MEDIA_SESSION_JOINED, new LinkedHashMap());
|
|
}
|
|
}
|
|
|
|
/* JADX DEBUG: Failed to insert an additional move for type inference into block B:41:0x0058 */
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
/* JADX DEBUG: Type inference failed for r0v2. Raw type applied. Possible types: java.util.Iterator<T>, java.util.Iterator */
|
|
/* JADX DEBUG: Type inference failed for r0v11. Raw type applied. Possible types: java.util.Iterator<T>, java.util.Iterator */
|
|
/* JADX WARNING: Unknown variable types count: 1 */
|
|
@Override // c.a.r.j0.a.d
|
|
public void e(long j, int i, int i2, List<Payloads.Stream> list) {
|
|
VideoMetadata videoMetadata;
|
|
Object obj;
|
|
boolean z2;
|
|
?? r1;
|
|
RtcConnection rtcConnection = this.a;
|
|
if (j != rtcConnection.H) {
|
|
boolean z3 = false;
|
|
if (rtcConnection.v != null) {
|
|
if (list != null) {
|
|
r1 = new ArrayList(o.collectionSizeOrDefault(list, 10));
|
|
for (Payloads.Stream stream : list) {
|
|
r1.add(Payloads.Stream.copy$default(stream, null, null, null, null, null, null, Boolean.valueOf(i2 > 0), null, 191, null));
|
|
}
|
|
} else {
|
|
r1 = n.emptyList();
|
|
}
|
|
boolean isEmpty = r1.isEmpty();
|
|
List list2 = r1;
|
|
if (isEmpty) {
|
|
Integer valueOf = Integer.valueOf(i2);
|
|
Integer valueOf2 = Integer.valueOf(i2 + 1);
|
|
if (i2 > 0) {
|
|
z3 = true;
|
|
}
|
|
list2 = d0.t.m.listOf(new Payloads.Stream("100", null, 100, valueOf, valueOf2, null, Boolean.valueOf(z3), null));
|
|
}
|
|
rtcConnection.v.c(j, Integer.valueOf(i));
|
|
MediaSinkWantsManager mediaSinkWantsManager = rtcConnection.v;
|
|
Objects.requireNonNull(mediaSinkWantsManager);
|
|
m.checkNotNullParameter(list2, "ssrcs");
|
|
mediaSinkWantsManager.b(new k(mediaSinkWantsManager, list2, j));
|
|
return;
|
|
}
|
|
if (list != null) {
|
|
Iterator it = list.iterator();
|
|
while (true) {
|
|
if (!it.hasNext()) {
|
|
obj = null;
|
|
break;
|
|
}
|
|
obj = it.next();
|
|
Payloads.Stream stream2 = (Payloads.Stream) obj;
|
|
Integer ssrc = stream2.getSsrc();
|
|
if (ssrc == null || ssrc.intValue() != i2 || stream2.getMaxResolution() == null) {
|
|
z2 = false;
|
|
continue;
|
|
} else {
|
|
z2 = true;
|
|
continue;
|
|
}
|
|
if (z2) {
|
|
break;
|
|
}
|
|
}
|
|
Payloads.Stream stream3 = (Payloads.Stream) obj;
|
|
if (stream3 != null) {
|
|
Payloads.Stream.MaxResolution maxResolution = stream3.getMaxResolution();
|
|
m.checkNotNull(maxResolution);
|
|
int width = maxResolution.getWidth();
|
|
Payloads.Stream.MaxResolution maxResolution2 = stream3.getMaxResolution();
|
|
m.checkNotNull(maxResolution2);
|
|
int height = maxResolution2.getHeight();
|
|
Integer maxFrameRate = stream3.getMaxFrameRate();
|
|
Payloads.Stream.MaxResolution maxResolution3 = stream3.getMaxResolution();
|
|
m.checkNotNull(maxResolution3);
|
|
videoMetadata = new VideoMetadata(j, width, height, maxFrameRate, maxResolution3.getType());
|
|
rtcConnection.d(j, i, i2, videoMetadata);
|
|
}
|
|
}
|
|
videoMetadata = null;
|
|
rtcConnection.d(j, i, i2, videoMetadata);
|
|
}
|
|
}
|
|
|
|
@Override // c.a.r.j0.a.d
|
|
public void f(Map<String, Integer> map) {
|
|
boolean z2;
|
|
Integer num;
|
|
m.checkNotNullParameter(map, "wants");
|
|
RtcConnection rtcConnection = this.a;
|
|
if (rtcConnection.v != null) {
|
|
int i = rtcConnection.f2078z;
|
|
int intValue = (i == 0 || (num = map.get(String.valueOf(i))) == null) ? 0 : num.intValue();
|
|
Integer num2 = map.get("any");
|
|
int intValue2 = num2 != null ? num2.intValue() : 0;
|
|
if (intValue <= 0) {
|
|
intValue = intValue2 > 0 ? intValue2 : 100;
|
|
}
|
|
d.c cVar = null;
|
|
rtcConnection.J.i(rtcConnection.f2074c, "remote MediaSinkWants: " + map + ", decided on encode quality " + intValue, null);
|
|
EncodeQuality[] values = EncodeQuality.values();
|
|
for (int i2 = 10; i2 >= 0; i2--) {
|
|
EncodeQuality encodeQuality = values[i2];
|
|
if (encodeQuality.getValue() <= intValue) {
|
|
d dVar = rtcConnection.v.j;
|
|
f0 f0Var = dVar.e;
|
|
m.checkNotNullParameter(encodeQuality, "wantValue");
|
|
List<d.c> list = dVar.d;
|
|
ListIterator<d.c> listIterator = list.listIterator(list.size());
|
|
while (true) {
|
|
if (!listIterator.hasPrevious()) {
|
|
break;
|
|
}
|
|
d.c previous = listIterator.previous();
|
|
if (encodeQuality.compareTo(previous.f202c) >= 0) {
|
|
z2 = true;
|
|
continue;
|
|
} else {
|
|
z2 = false;
|
|
continue;
|
|
}
|
|
if (z2) {
|
|
cVar = previous;
|
|
break;
|
|
}
|
|
}
|
|
d.c cVar2 = cVar;
|
|
if (cVar2 == null) {
|
|
cVar2 = (d.c) u.first((List<? extends Object>) dVar.d);
|
|
}
|
|
m mVar = cVar2.a;
|
|
int max = Math.max((int) (((double) f0Var.f203c.a) * mVar.f222c), f0Var.d);
|
|
int max2 = Math.max((int) (((double) f0Var.f203c.b) * mVar.f222c), f0Var.d);
|
|
MediaEngineConnection mediaEngineConnection = rtcConnection.n;
|
|
if (mediaEngineConnection != null) {
|
|
mediaEngineConnection.m(new MediaEngineConnection.a(max, max2, mVar.a, mVar.b, mVar.d, mVar.e));
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
throw new NoSuchElementException("Array contains no element matching the predicate.");
|
|
}
|
|
}
|
|
|
|
@Override // c.a.r.j0.a.d
|
|
public void g(long j) {
|
|
RtcConnection rtcConnection = this.a;
|
|
rtcConnection.l.add(Long.valueOf(j));
|
|
if (rtcConnection.l.size() > 5) {
|
|
r.removeFirst(rtcConnection.l);
|
|
}
|
|
if (j > ((long) 500)) {
|
|
rtcConnection.q++;
|
|
}
|
|
double d = (double) j;
|
|
Objects.requireNonNull(RtcConnection.Quality.Companion);
|
|
RtcConnection.Quality quality = Double.isNaN(d) ? RtcConnection.Quality.UNKNOWN : d < ((double) 250) ? RtcConnection.Quality.FINE : d < ((double) 500) ? RtcConnection.Quality.AVERAGE : RtcConnection.Quality.BAD;
|
|
for (RtcConnection.c cVar : rtcConnection.e) {
|
|
cVar.onQualityUpdate(quality);
|
|
}
|
|
}
|
|
|
|
@Override // c.a.r.j0.a.d
|
|
public void h() {
|
|
}
|
|
|
|
@Override // c.a.r.j0.a.d
|
|
public void i() {
|
|
RtcConnection rtcConnection = this.a;
|
|
rtcConnection.g.cancel();
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("Connecting to RTC server ");
|
|
a aVar = rtcConnection.m;
|
|
sb.append(aVar != null ? aVar.u : null);
|
|
rtcConnection.r(sb.toString());
|
|
rtcConnection.u(RtcConnection.State.c.a);
|
|
}
|
|
|
|
@Override // c.a.r.j0.a.d
|
|
public void j() {
|
|
RtcConnection rtcConnection = this.a;
|
|
rtcConnection.g.cancel();
|
|
rtcConnection.J.recordBreadcrumb("Connected to RTC server.", rtcConnection.f2074c);
|
|
a aVar = rtcConnection.m;
|
|
if (aVar == null) {
|
|
RtcConnection.o(rtcConnection, "onSocketConnect() socket was null.", null, null, 6);
|
|
return;
|
|
}
|
|
String str = rtcConnection.G;
|
|
long j = rtcConnection.H;
|
|
String str2 = rtcConnection.E;
|
|
boolean z2 = rtcConnection.F;
|
|
m.checkNotNullParameter(str, "serverId");
|
|
m.checkNotNullParameter(str2, "sessionId");
|
|
aVar.j = str;
|
|
aVar.k = str2;
|
|
aVar.r = a.c.IDENTIFYING;
|
|
aVar.n(0, new Payloads.Identify(str, j, str2, aVar.v, z2));
|
|
rtcConnection.u(RtcConnection.State.a.a);
|
|
}
|
|
|
|
@Override // c.a.r.j0.a.d
|
|
public void k(long j) {
|
|
c.a.r.k0.d dVar;
|
|
e eVar;
|
|
Map<String, Object> b;
|
|
RtcConnection rtcConnection = this.a;
|
|
if (!(!(rtcConnection.L instanceof RtcConnection.d.a) || (dVar = rtcConnection.f) == null || (eVar = dVar.g) == null || (b = eVar.b(String.valueOf(j))) == null)) {
|
|
rtcConnection.l(j, b);
|
|
}
|
|
MediaSinkWantsManager mediaSinkWantsManager = rtcConnection.v;
|
|
if (mediaSinkWantsManager != null) {
|
|
mediaSinkWantsManager.c(j, null);
|
|
}
|
|
MediaSinkWantsManager mediaSinkWantsManager2 = rtcConnection.v;
|
|
if (mediaSinkWantsManager2 != null) {
|
|
List emptyList = n.emptyList();
|
|
m.checkNotNullParameter(emptyList, "ssrcs");
|
|
mediaSinkWantsManager2.b(new k(mediaSinkWantsManager2, emptyList, j));
|
|
}
|
|
}
|
|
|
|
@Override // c.a.r.j0.a.d
|
|
public void l(int i, int i2, String str) {
|
|
MediaEngineConnection.Type type;
|
|
m.checkNotNullParameter(str, "ip");
|
|
RtcConnection rtcConnection = this.a;
|
|
Objects.requireNonNull(rtcConnection);
|
|
rtcConnection.r("Discovered dedicated UDP server on port " + i);
|
|
rtcConnection.u(RtcConnection.State.g.a);
|
|
MediaEngine mediaEngine = rtcConnection.I;
|
|
long j = rtcConnection.H;
|
|
MediaEngine.a aVar = new MediaEngine.a(i2, str, i);
|
|
RtcConnection.d dVar = rtcConnection.L;
|
|
if (m.areEqual(dVar, RtcConnection.d.a.a)) {
|
|
type = MediaEngineConnection.Type.DEFAULT;
|
|
} else if (dVar instanceof RtcConnection.d.b) {
|
|
type = MediaEngineConnection.Type.STREAM;
|
|
} else {
|
|
throw new NoWhenBranchMatchedException();
|
|
}
|
|
MediaEngineConnection h = mediaEngine.h(j, aVar, type, new b0(rtcConnection));
|
|
if (h != null) {
|
|
h.l(rtcConnection.B);
|
|
rtcConnection.n = h;
|
|
return;
|
|
}
|
|
RtcConnection.o(rtcConnection, "onSocketHello(): connect() return null.", null, null, 6);
|
|
}
|
|
|
|
@Override // c.a.r.j0.a.d
|
|
public void onSpeaking(long j, int i, boolean z2) {
|
|
RtcConnection rtcConnection = this.a;
|
|
if (j != rtcConnection.H) {
|
|
MediaEngineConnection mediaEngineConnection = rtcConnection.n;
|
|
if (mediaEngineConnection != null) {
|
|
mediaEngineConnection.s(j, i, null, rtcConnection.g(j), rtcConnection.h(j));
|
|
}
|
|
MediaSinkWantsManager mediaSinkWantsManager = rtcConnection.v;
|
|
if (mediaSinkWantsManager != null) {
|
|
mediaSinkWantsManager.c(j, Integer.valueOf(i));
|
|
}
|
|
for (RtcConnection.c cVar : rtcConnection.e) {
|
|
cVar.onUserCreated(rtcConnection, j);
|
|
}
|
|
}
|
|
}
|
|
}
|