410 lines
18 KiB
Java
410 lines
18 KiB
Java
package com.discord.rtcconnection;
|
|
|
|
import c.a.r.e;
|
|
import c.a.r.h;
|
|
import com.discord.rtcconnection.KrispOveruseDetector;
|
|
import com.discord.rtcconnection.mediaengine.MediaEngineConnection;
|
|
import com.discord.utilities.logging.Logger;
|
|
import d0.t.g0;
|
|
import d0.t.h0;
|
|
import d0.t.n;
|
|
import d0.t.u;
|
|
import d0.z.d.m;
|
|
import d0.z.d.o;
|
|
import java.util.Collection;
|
|
import java.util.Iterator;
|
|
import java.util.LinkedHashMap;
|
|
import java.util.LinkedHashSet;
|
|
import java.util.List;
|
|
import java.util.ListIterator;
|
|
import java.util.Map;
|
|
import java.util.Objects;
|
|
import java.util.Set;
|
|
import java.util.concurrent.Future;
|
|
import kotlin.Unit;
|
|
import kotlin.jvm.functions.Function0;
|
|
import kotlin.jvm.internal.DefaultConstructorMarker;
|
|
import rx.subjects.BehaviorSubject;
|
|
/* compiled from: MediaSinkWantsManager.kt */
|
|
public final class MediaSinkWantsManager implements MediaEngineConnection.d {
|
|
public final Map<Long, Long> a = new LinkedHashMap();
|
|
public final Map<Long, List<b>> b = new LinkedHashMap();
|
|
|
|
/* renamed from: c reason: collision with root package name */
|
|
public final Set<Long> f2089c;
|
|
public MediaEngineConnection d;
|
|
public Long e;
|
|
public final BehaviorSubject<Map<String, EncodeQuality>> f;
|
|
public Map<String, ? extends EncodeQuality> g;
|
|
public final long h;
|
|
public final c.a.r.c i;
|
|
public final e j;
|
|
public final Logger k;
|
|
public final a l;
|
|
|
|
/* compiled from: MediaSinkWantsManager.kt */
|
|
public enum VideoQualityMode {
|
|
AUTO(1),
|
|
FULL(2);
|
|
|
|
public static final a Companion = new a(null);
|
|
private final int numeral;
|
|
|
|
/* compiled from: MediaSinkWantsManager.kt */
|
|
public static final class a {
|
|
public a(DefaultConstructorMarker defaultConstructorMarker) {
|
|
}
|
|
}
|
|
|
|
private VideoQualityMode(int i) {
|
|
this.numeral = i;
|
|
}
|
|
|
|
public final int getNumeral() {
|
|
return this.numeral;
|
|
}
|
|
}
|
|
|
|
/* compiled from: MediaSinkWantsManager.kt */
|
|
public interface a {
|
|
void a(long j, long j2, long j3, VideoMetadata videoMetadata);
|
|
}
|
|
|
|
/* compiled from: MediaSinkWantsManager.kt */
|
|
public static final class b {
|
|
public final EncodeQuality a;
|
|
public final long b;
|
|
|
|
/* renamed from: c reason: collision with root package name */
|
|
public final VideoMetadata f2090c;
|
|
|
|
public b(EncodeQuality encodeQuality, long j, VideoMetadata videoMetadata) {
|
|
m.checkNotNullParameter(encodeQuality, "encodeQuality");
|
|
this.a = encodeQuality;
|
|
this.b = j;
|
|
this.f2090c = videoMetadata;
|
|
}
|
|
|
|
public boolean equals(Object obj) {
|
|
if (this == obj) {
|
|
return true;
|
|
}
|
|
if (!(obj instanceof b)) {
|
|
return false;
|
|
}
|
|
b bVar = (b) obj;
|
|
return m.areEqual(this.a, bVar.a) && this.b == bVar.b && m.areEqual(this.f2090c, bVar.f2090c);
|
|
}
|
|
|
|
public int hashCode() {
|
|
EncodeQuality encodeQuality = this.a;
|
|
int i = 0;
|
|
int a = (a0.a.a.b.a(this.b) + ((encodeQuality != null ? encodeQuality.hashCode() : 0) * 31)) * 31;
|
|
VideoMetadata videoMetadata = this.f2090c;
|
|
if (videoMetadata != null) {
|
|
i = videoMetadata.hashCode();
|
|
}
|
|
return a + i;
|
|
}
|
|
|
|
public String toString() {
|
|
StringBuilder L = c.d.b.a.a.L("VideoStreamDescriptor(encodeQuality=");
|
|
L.append(this.a);
|
|
L.append(", ssrc=");
|
|
L.append(this.b);
|
|
L.append(", metadata=");
|
|
L.append(this.f2090c);
|
|
L.append(")");
|
|
return L.toString();
|
|
}
|
|
}
|
|
|
|
/* compiled from: MediaSinkWantsManager.kt */
|
|
public static final class c extends o implements Function0<Unit> {
|
|
public final /* synthetic */ Long $ssrc;
|
|
public final /* synthetic */ long $userId;
|
|
public final /* synthetic */ MediaSinkWantsManager this$0;
|
|
|
|
/* JADX INFO: super call moved to the top of the method (can break code semantics) */
|
|
public c(MediaSinkWantsManager mediaSinkWantsManager, Long l, long j) {
|
|
super(0);
|
|
this.this$0 = mediaSinkWantsManager;
|
|
this.$ssrc = l;
|
|
this.$userId = j;
|
|
}
|
|
|
|
/* Return type fixed from 'java.lang.Object' to match base method */
|
|
@Override // kotlin.jvm.functions.Function0
|
|
/* renamed from: invoke */
|
|
public Unit mo1invoke() {
|
|
if (this.$ssrc != null) {
|
|
this.this$0.a.put(Long.valueOf(this.$userId), this.$ssrc);
|
|
} else {
|
|
this.this$0.a.remove(Long.valueOf(this.$userId));
|
|
}
|
|
MediaSinkWantsManager.e(this.this$0, null, 1);
|
|
return Unit.a;
|
|
}
|
|
}
|
|
|
|
public MediaSinkWantsManager(long j, c.a.r.c cVar, e eVar, Logger logger, a aVar) {
|
|
m.checkNotNullParameter(cVar, "mediaEngineThreadExecutor");
|
|
m.checkNotNullParameter(eVar, "ladder");
|
|
m.checkNotNullParameter(logger, "logger");
|
|
m.checkNotNullParameter(aVar, "listener");
|
|
this.h = j;
|
|
this.i = cVar;
|
|
this.j = eVar;
|
|
this.k = logger;
|
|
this.l = aVar;
|
|
new LinkedHashMap();
|
|
this.f2089c = new LinkedHashSet();
|
|
this.f = BehaviorSubject.l0(g0.mapOf(d0.o.to("any", EncodeQuality.Hundred)));
|
|
this.g = h0.emptyMap();
|
|
}
|
|
|
|
public static /* synthetic */ void e(MediaSinkWantsManager mediaSinkWantsManager, List list, int i) {
|
|
mediaSinkWantsManager.d((i & 1) != 0 ? n.emptyList() : null);
|
|
}
|
|
|
|
public final void a(String str) {
|
|
Logger.w$default(this.k, "MediaSinkWantsManager", str, null, 4, null);
|
|
}
|
|
|
|
public final Future<?> b(Function0<Unit> function0) {
|
|
c.a.r.c cVar = this.i;
|
|
return cVar.k.submit(new c.a.r.m(function0));
|
|
}
|
|
|
|
public final Future<?> c(long j, Long l) {
|
|
return b(new c(this, l, j));
|
|
}
|
|
|
|
/* JADX WARNING: Removed duplicated region for block: B:113:0x0246 */
|
|
/* JADX WARNING: Removed duplicated region for block: B:19:0x0043 */
|
|
/* JADX WARNING: Removed duplicated region for block: B:20:0x0046 */
|
|
/* JADX WARNING: Removed duplicated region for block: B:36:0x009a */
|
|
/* JADX WARNING: Removed duplicated region for block: B:88:0x018b A[LOOP:6: B:86:0x0185->B:88:0x018b, LOOP_END] */
|
|
/* JADX WARNING: Removed duplicated region for block: B:91:0x01a9 */
|
|
/* JADX WARNING: Removed duplicated region for block: B:95:0x01ec */
|
|
public final void d(List<String> list) {
|
|
int i;
|
|
EncodeQuality encodeQuality;
|
|
Iterator<Map.Entry<Long, List<b>>> it;
|
|
Iterator<Map.Entry<Long, List<b>>> it2;
|
|
long j;
|
|
EncodeQuality encodeQuality2;
|
|
EncodeQuality encodeQuality3;
|
|
EncodeQuality encodeQuality4;
|
|
e.c cVar;
|
|
boolean z2;
|
|
MediaEngineConnection mediaEngineConnection = this.d;
|
|
if (mediaEngineConnection != null) {
|
|
e eVar = this.j;
|
|
int i2 = 1;
|
|
if (mediaEngineConnection != null) {
|
|
Set<Long> set = this.f2089c;
|
|
if (!(set instanceof Collection) || !set.isEmpty()) {
|
|
i = 0;
|
|
for (Number number : set) {
|
|
if ((!mediaEngineConnection.g(number.longValue())) && (i = i + 1) < 0) {
|
|
n.throwCountOverflow();
|
|
}
|
|
}
|
|
Objects.requireNonNull(eVar);
|
|
if (i >= 0) {
|
|
encodeQuality = EncodeQuality.Hundred;
|
|
} else {
|
|
List<e.c> list2 = eVar.d;
|
|
ListIterator<e.c> listIterator = list2.listIterator(list2.size());
|
|
while (true) {
|
|
if (!listIterator.hasPrevious()) {
|
|
cVar = null;
|
|
break;
|
|
}
|
|
cVar = listIterator.previous();
|
|
if (cVar.b * i <= eVar.b) {
|
|
z2 = true;
|
|
continue;
|
|
} else {
|
|
z2 = false;
|
|
continue;
|
|
}
|
|
if (z2) {
|
|
break;
|
|
}
|
|
}
|
|
e.c cVar2 = cVar;
|
|
if (cVar2 == null) {
|
|
cVar2 = (e.c) u.first((List<? extends Object>) eVar.d);
|
|
}
|
|
encodeQuality = cVar2.f205c;
|
|
}
|
|
Map<String, EncodeQuality> mutableMapOf = h0.mutableMapOf(d0.o.to("any", encodeQuality));
|
|
it = this.b.entrySet().iterator();
|
|
while (it.hasNext()) {
|
|
Map.Entry<Long, List<b>> next = it.next();
|
|
long longValue = next.getKey().longValue();
|
|
List<b> value = next.getValue();
|
|
b bVar = (b) u.firstOrNull((List<? extends Object>) value);
|
|
if (bVar != null) {
|
|
Long l = this.e;
|
|
if (l != null) {
|
|
long j2 = this.h;
|
|
if (l == null || l.longValue() != j2) {
|
|
if (value.size() > i2) {
|
|
Long l2 = this.e;
|
|
if (l2 != null && longValue == l2.longValue()) {
|
|
for (b bVar2 : value) {
|
|
EncodeQuality encodeQuality5 = bVar2.a;
|
|
EncodeQuality encodeQuality6 = EncodeQuality.Hundred;
|
|
if (encodeQuality5 == encodeQuality6) {
|
|
mutableMapOf.put(String.valueOf(bVar2.b), encodeQuality6);
|
|
bVar = bVar2;
|
|
} else {
|
|
mutableMapOf.put(String.valueOf(bVar2.b), EncodeQuality.Zero);
|
|
}
|
|
}
|
|
} else {
|
|
for (b bVar3 : value) {
|
|
if (bVar3.a == EncodeQuality.Hundred) {
|
|
mutableMapOf.put(String.valueOf(bVar3.b), EncodeQuality.Zero);
|
|
} else {
|
|
bVar = bVar3;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
Long l3 = this.e;
|
|
if (!(l3 == null || longValue != l3.longValue() || encodeQuality == (encodeQuality4 = EncodeQuality.Hundred))) {
|
|
mutableMapOf.put(String.valueOf(bVar.b), encodeQuality4);
|
|
}
|
|
}
|
|
if (mediaEngineConnection.g(longValue) || mediaEngineConnection.p(longValue)) {
|
|
for (b bVar4 : value) {
|
|
mutableMapOf.put(String.valueOf(bVar4.b), EncodeQuality.Zero);
|
|
}
|
|
}
|
|
if (!list.contains(String.valueOf(longValue))) {
|
|
Long l4 = this.a.get(Long.valueOf(longValue));
|
|
if (l4 != null) {
|
|
it2 = it;
|
|
j = longValue;
|
|
this.l.a(longValue, l4.longValue(), bVar.b, bVar.f2090c);
|
|
} else {
|
|
it2 = it;
|
|
j = longValue;
|
|
a("Missing audioSsrc for user " + j + ", can't update video ssrc!");
|
|
}
|
|
} else {
|
|
it2 = it;
|
|
j = longValue;
|
|
}
|
|
encodeQuality2 = (EncodeQuality) this.g.get(String.valueOf(bVar.b));
|
|
encodeQuality3 = EncodeQuality.Zero;
|
|
if (encodeQuality2 != encodeQuality3 && mutableMapOf.get(String.valueOf(bVar.b)) != encodeQuality3) {
|
|
mediaEngineConnection.i(j, false);
|
|
}
|
|
if (encodeQuality2 == encodeQuality3 && mutableMapOf.get(String.valueOf(bVar.b)) == encodeQuality3) {
|
|
mediaEngineConnection.i(j, true);
|
|
}
|
|
it = it2;
|
|
}
|
|
}
|
|
if (value.size() > 1) {
|
|
for (b bVar5 : value) {
|
|
if (bVar5.a == EncodeQuality.Hundred) {
|
|
mutableMapOf.put(String.valueOf(bVar5.b), EncodeQuality.Zero);
|
|
} else {
|
|
bVar = bVar5;
|
|
}
|
|
}
|
|
}
|
|
while (r3.hasNext()) {
|
|
}
|
|
if (!list.contains(String.valueOf(longValue))) {
|
|
}
|
|
encodeQuality2 = (EncodeQuality) this.g.get(String.valueOf(bVar.b));
|
|
encodeQuality3 = EncodeQuality.Zero;
|
|
if (encodeQuality2 != encodeQuality3) {
|
|
}
|
|
if (encodeQuality2 == encodeQuality3) {
|
|
}
|
|
it = it2;
|
|
}
|
|
i2 = 1;
|
|
}
|
|
for (Map.Entry<Long, Long> entry : this.a.entrySet()) {
|
|
long longValue2 = entry.getKey().longValue();
|
|
long longValue3 = entry.getValue().longValue();
|
|
if (mediaEngineConnection.u(longValue2)) {
|
|
mutableMapOf.put(String.valueOf(longValue3), EncodeQuality.Zero);
|
|
}
|
|
}
|
|
this.g = mutableMapOf;
|
|
this.f.onNext(mutableMapOf);
|
|
}
|
|
}
|
|
i = 0;
|
|
Objects.requireNonNull(eVar);
|
|
if (i >= 0) {
|
|
}
|
|
Map<String, EncodeQuality> mutableMapOf = h0.mutableMapOf(d0.o.to("any", encodeQuality));
|
|
it = this.b.entrySet().iterator();
|
|
while (it.hasNext()) {
|
|
}
|
|
while (r2.hasNext()) {
|
|
}
|
|
this.g = mutableMapOf;
|
|
this.f.onNext(mutableMapOf);
|
|
}
|
|
}
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
public void onConnected(MediaEngineConnection mediaEngineConnection, MediaEngineConnection.TransportInfo transportInfo, List<c.a.r.m0.a> list) {
|
|
m.checkNotNullParameter(mediaEngineConnection, "connection");
|
|
m.checkNotNullParameter(transportInfo, "transportInfo");
|
|
m.checkNotNullParameter(list, "supportedVideoCodecs");
|
|
}
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
public void onConnectionStateChange(MediaEngineConnection mediaEngineConnection, MediaEngineConnection.ConnectionState connectionState) {
|
|
m.checkNotNullParameter(mediaEngineConnection, "connection");
|
|
m.checkNotNullParameter(connectionState, "connectionState");
|
|
}
|
|
|
|
@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");
|
|
}
|
|
|
|
@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) {
|
|
b(new h(this));
|
|
}
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
public void onLocalVideoOffScreen(long j, boolean z2) {
|
|
b(new h(this));
|
|
}
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
public void onSpeaking(long j, int i, boolean z2) {
|
|
}
|
|
|
|
@Override // com.discord.rtcconnection.mediaengine.MediaEngineConnection.d
|
|
public void onVideo(long j, Integer num, int i, int i2, int i3) {
|
|
}
|
|
}
|