139 lines
11 KiB
Java
139 lines
11 KiB
Java
package co.discord.media_engine.internal;
|
|
|
|
import c.i.a.f.e.o.c;
|
|
import co.discord.media_engine.InboundRtpAudio;
|
|
import co.discord.media_engine.InboundRtpVideo;
|
|
import co.discord.media_engine.OutboundRtpAudio;
|
|
import co.discord.media_engine.OutboundRtpVideo;
|
|
import co.discord.media_engine.PlayoutMetric;
|
|
import co.discord.media_engine.Resolution;
|
|
import co.discord.media_engine.Stats;
|
|
import co.discord.media_engine.StatsCodec;
|
|
import co.discord.media_engine.Transport;
|
|
import com.google.gson.Gson;
|
|
import d0.z.d.m;
|
|
import java.util.LinkedHashMap;
|
|
/* compiled from: TransformStats.kt */
|
|
public final class TransformStats {
|
|
public static final TransformStats INSTANCE = new TransformStats();
|
|
private static final Gson gson = new Gson();
|
|
|
|
private TransformStats() {
|
|
}
|
|
|
|
private final PlayoutMetric convertPlayoutMetricToMs(PlayoutMetric playoutMetric) {
|
|
float f = (float) 1000;
|
|
return new PlayoutMetric((float) Math.rint((double) (playoutMetric.getLast() * f)), (float) Math.rint((double) (playoutMetric.getMean() * f)), (float) Math.rint((double) (playoutMetric.getP75() * f)), (float) Math.rint((double) (playoutMetric.getP95() * f)), (float) Math.rint((double) (playoutMetric.getP99() * f)), (float) Math.rint((double) (playoutMetric.getMax() * f)));
|
|
}
|
|
|
|
private final long sumBytes(RtpStats rtpStats) {
|
|
return rtpStats.getTransmitted().getPaddingBytes() + rtpStats.getTransmitted().getPayloadBytes() + rtpStats.getTransmitted().getHeaderBytes() + rtpStats.getRetransmitted().getPaddingBytes() + rtpStats.getRetransmitted().getPayloadBytes() + rtpStats.getRetransmitted().getHeaderBytes() + rtpStats.getFec().getPaddingBytes() + rtpStats.getFec().getPayloadBytes() + rtpStats.getFec().getHeaderBytes();
|
|
}
|
|
|
|
private final int sumPackets(RtpStats rtpStats) {
|
|
int packets = rtpStats.getFec().getPackets();
|
|
return rtpStats.getTransmitted().getPackets() + rtpStats.getRetransmitted().getPackets() + packets;
|
|
}
|
|
|
|
/* JADX WARNING: Removed duplicated region for block: B:26:0x00c2 */
|
|
/* JADX WARNING: Removed duplicated region for block: B:33:0x01a1 */
|
|
/* JADX WARNING: Removed duplicated region for block: B:36:0x01b4 */
|
|
/* JADX WARNING: Removed duplicated region for block: B:74:0x038a */
|
|
/* JADX WARNING: Removed duplicated region for block: B:77:0x0392 */
|
|
/* JADX WARNING: Removed duplicated region for block: B:78:0x03b3 */
|
|
public static final Stats transform(String str) {
|
|
OutboundRtpAudio outboundRtpAudio;
|
|
long j;
|
|
Substream substream;
|
|
long j2;
|
|
OutboundRtpVideo outboundRtpVideo;
|
|
Inbound[] inbound;
|
|
long j3;
|
|
OutboundVideo video;
|
|
Substream[] substreams;
|
|
m.checkNotNullParameter(str, "stats");
|
|
NativeStats nativeStats = (NativeStats) c.q0(NativeStats.class).cast(gson.g(str, NativeStats.class));
|
|
Outbound outbound = nativeStats.getOutbound();
|
|
if (outbound != null) {
|
|
j = ((long) outbound.getAudio().getBytesSent()) + 0;
|
|
OutboundAudio audio = outbound.getAudio();
|
|
outboundRtpAudio = new OutboundRtpAudio("audio", audio.getSsrc(), new StatsCodec(audio.getCodecPayloadType(), audio.getCodecName()), j, audio.getPacketsSent(), Math.max(0, audio.getPacketsLost()), audio.getFractionLost() * ((float) 100), ((float) audio.getAudioLevel()) / 32768.0f, audio.getSpeaking() > 0, audio.getFramesCaptured(), audio.getFramesRendered(), audio.getNoiseCancellerIsEnabled(), audio.getNoiseCancellerProcessTime(), audio.getVoiceActivityDetectorIsEnabled(), audio.getVoiceActivityDetectorProcessTime());
|
|
} else {
|
|
j = 0;
|
|
outboundRtpAudio = null;
|
|
}
|
|
Outbound outbound2 = nativeStats.getOutbound();
|
|
if (!(outbound2 == null || (video = outbound2.getVideo()) == null || (substreams = video.getSubstreams()) == null)) {
|
|
int length = substreams.length;
|
|
int i = 0;
|
|
while (true) {
|
|
if (i >= length) {
|
|
break;
|
|
}
|
|
substream = substreams[i];
|
|
if (!substream.isFlexFEC() && !substream.isRTX()) {
|
|
break;
|
|
}
|
|
i++;
|
|
}
|
|
if (substream == null) {
|
|
long j4 = 0;
|
|
for (Substream substream2 : nativeStats.getOutbound().getVideo().getSubstreams()) {
|
|
j4 += INSTANCE.sumBytes(substream2.getRtpStats());
|
|
}
|
|
long j5 = j + j4;
|
|
OutboundVideo video2 = nativeStats.getOutbound().getVideo();
|
|
int ssrc = substream.getSsrc();
|
|
StatsCodec statsCodec = new StatsCodec(video2.getCodecPayloadType(), video2.getCodecName());
|
|
int i2 = 0;
|
|
for (Substream substream3 : video2.getSubstreams()) {
|
|
i2 += INSTANCE.sumPackets(substream3.getRtpStats());
|
|
}
|
|
outboundRtpVideo = new OutboundRtpVideo("video", ssrc, statsCodec, j4, i2, substream.getRtcpStats().getPacketsLost(), substream.getRtcpStats().getFractionLost(), video2.getMediaBitrate(), video2.getTargetMediaBitrate(), video2.getEncodeUsage(), video2.getEncoderImplementationName(), video2.getAvgEncodeTime(), new Resolution(substream.getWidth(), substream.getHeight()), substream.getFrameCounts().getKeyFrames() + substream.getFrameCounts().getDeltaFrames(), video2.getFramesEncoded(), video2.getInputFrameRate(), video2.getEncodeFrameRate(), substream.getRtcpStats().getFirPackets(), substream.getRtcpStats().getNackPackets(), substream.getRtcpStats().getPliPackets(), video2.getQpSum(), video2.getBwLimitedResolution(), video2.getCpuLimitedResolution());
|
|
j2 = j5;
|
|
} else {
|
|
j2 = j;
|
|
outboundRtpVideo = null;
|
|
}
|
|
LinkedHashMap linkedHashMap = new LinkedHashMap();
|
|
LinkedHashMap linkedHashMap2 = new LinkedHashMap();
|
|
inbound = nativeStats.getInbound();
|
|
if (inbound == null) {
|
|
long j6 = 0;
|
|
for (Inbound inbound2 : inbound) {
|
|
String id2 = inbound2.getId();
|
|
j6 += (long) inbound2.getAudio().getBytesReceived();
|
|
InboundAudio audio2 = inbound2.getAudio();
|
|
InboundPlayout transformPlayoutStats = inbound2.getPlayout() != null ? INSTANCE.transformPlayoutStats(inbound2.getPlayout()) : null;
|
|
InboundRtpAudio inboundRtpAudio = (InboundRtpAudio) linkedHashMap.put(id2, new InboundRtpAudio("audio", audio2.getSsrc(), new StatsCodec(audio2.getCodecPayloadType(), audio2.getCodecName()), j6, audio2.getPacketsReceived(), audio2.getPacketsLost(), ((float) audio2.getAudioLevel()) / 32768.0f, audio2.getSpeaking() > 0, audio2.getJitter(), audio2.getJitterBuffer(), audio2.getJitterBufferPreferred(), audio2.getDelayEstimate(), audio2.getDecodingCNG(), audio2.getDecodingMutedOutput(), audio2.getDecodingNormal(), audio2.getDecodingPLC(), audio2.getDecodingPLCCNG(), Integer.valueOf(audio2.getOpSilence()), Integer.valueOf(audio2.getOpNormal()), Integer.valueOf(audio2.getOpMerge()), Integer.valueOf(audio2.getOpExpand()), Integer.valueOf(audio2.getOpAccelerate()), Integer.valueOf(audio2.getOpPreemptiveExpand()), Integer.valueOf(audio2.getOpCNG()), transformPlayoutStats != null ? transformPlayoutStats.getAudioJitterBuffer() : null, transformPlayoutStats != null ? transformPlayoutStats.getAudioJitterDelay() : null, transformPlayoutStats != null ? transformPlayoutStats.getAudioJitterTarget() : null, transformPlayoutStats != null ? transformPlayoutStats.getAudioPlayoutUnderruns() : null, transformPlayoutStats != null ? transformPlayoutStats.getRelativeReceptionDelay() : null, transformPlayoutStats != null ? transformPlayoutStats.getRelativePlayoutDelay() : null));
|
|
if (inbound2.getVideo() != null) {
|
|
InboundVideo video3 = inbound2.getVideo();
|
|
long payloadBytes = video3.getRtpStats().getPayloadBytes() + video3.getRtpStats().getPaddingBytes() + video3.getRtpStats().getHeaderBytes();
|
|
j6 += payloadBytes;
|
|
InboundRtpVideo inboundRtpVideo = (InboundRtpVideo) linkedHashMap2.put(id2, new InboundRtpVideo("video", video3.getSsrc(), video3.getCodecPayloadType() != -1 ? new StatsCodec(video3.getCodecPayloadType(), video3.getCodecName()) : null, payloadBytes, video3.getRtpStats().getPackets(), video3.getRtpStats().getPacketsLost(), video3.getTotalBitrate(), video3.getDecode(), new Resolution(video3.getWidth(), video3.getHeight()), video3.getDecoderImplementationName(), video3.getFramesDecoded(), video3.getFramesDropped(), video3.getFrameCounts().getKeyFrames() + video3.getFrameCounts().getDeltaFrames(), video3.getDecodeFrameRate(), video3.getNetworkFrameRate(), video3.getRenderFrameRate(), video3.getRtcpStats().getFirPackets(), video3.getRtcpStats().getNackPackets(), video3.getRtcpStats().getPliPackets(), video3.getQpSum()));
|
|
}
|
|
}
|
|
j3 = j6;
|
|
} else {
|
|
j3 = 0;
|
|
}
|
|
Transport transport = nativeStats.getTransport();
|
|
return new Stats(transport == null ? new Transport(transport.getSendBandwidth(), j3, j2, transport.getRtt(), Integer.valueOf(transport.getDecryptionFailures()), transport.getLocalAddress(), transport.getReceiverReports()) : new Transport(0, j3, j2, 0, 0, "", null), outboundRtpAudio, outboundRtpVideo, linkedHashMap, linkedHashMap2);
|
|
}
|
|
substream = null;
|
|
if (substream == null) {
|
|
}
|
|
LinkedHashMap linkedHashMap = new LinkedHashMap();
|
|
LinkedHashMap linkedHashMap2 = new LinkedHashMap();
|
|
inbound = nativeStats.getInbound();
|
|
if (inbound == null) {
|
|
}
|
|
Transport transport = nativeStats.getTransport();
|
|
return new Stats(transport == null ? new Transport(transport.getSendBandwidth(), j3, j2, transport.getRtt(), Integer.valueOf(transport.getDecryptionFailures()), transport.getLocalAddress(), transport.getReceiverReports()) : new Transport(0, j3, j2, 0, 0, "", null), outboundRtpAudio, outboundRtpVideo, linkedHashMap, linkedHashMap2);
|
|
}
|
|
|
|
private final InboundPlayout transformPlayoutStats(InboundPlayout inboundPlayout) {
|
|
return new InboundPlayout(convertPlayoutMetricToMs(inboundPlayout.getAudioJitterBuffer()), convertPlayoutMetricToMs(inboundPlayout.getAudioJitterDelay()), convertPlayoutMetricToMs(inboundPlayout.getAudioJitterTarget()), convertPlayoutMetricToMs(inboundPlayout.getAudioPlayoutUnderruns()), convertPlayoutMetricToMs(inboundPlayout.getVideoJitterBuffer()), convertPlayoutMetricToMs(inboundPlayout.getVideoJitterDelay()), convertPlayoutMetricToMs(inboundPlayout.getVideoJitterTarget()), convertPlayoutMetricToMs(inboundPlayout.getRelativeReceptionDelay()), convertPlayoutMetricToMs(inboundPlayout.getRelativePlayoutDelay()));
|
|
}
|
|
}
|