discord-jadx/app/src/main/java/com/hammerandchisel/libdiscord/Discord.java

161 lines
5.6 KiB
Java

package com.hammerandchisel.libdiscord;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import co.discord.media_engine.AudioInputDeviceDescription;
import co.discord.media_engine.AudioOutputDeviceDescription;
import co.discord.media_engine.CameraEnumeratorProvider;
import co.discord.media_engine.Connection;
import co.discord.media_engine.RtcRegion;
import co.discord.media_engine.SharedEglBaseContext;
import co.discord.media_engine.VideoInputDeviceDescription;
import org.webrtc.EglBase;
import org.webrtc.VideoFrame;
public class Discord {
public static final int LOGLEVEL_DEBUG = 2;
public static final int LOGLEVEL_DEFAULT = -1;
@NonNull
private static String krispVersion;
@NonNull
private Context context;
@NonNull
private LocalVoiceLevelChangedCallback localVoiceLevelChangedCallback;
private long nativeInstance;
public interface ConnectToServerCallback {
void onConnectToServer(@NonNull ConnectionInfo connectionInfo, @NonNull String str);
}
public static class ConnectionInfo {
public boolean isConnected;
@NonNull
public String localAddress;
public int localPort;
@NonNull
public String protocol;
public ConnectionInfo(boolean z2, @NonNull String str, @NonNull String str2, int i) {
this.isConnected = z2;
this.protocol = str;
this.localAddress = str2;
this.localPort = i;
}
}
public interface GetAudioInputDevicesCallback {
void onDevices(@NonNull AudioInputDeviceDescription[] audioInputDeviceDescriptionArr);
}
public interface GetAudioOutputDevicesCallback {
void onDevices(@NonNull AudioOutputDeviceDescription[] audioOutputDeviceDescriptionArr);
}
public interface GetAudioSubsystemCallback {
void onAudioSubsystem(@NonNull String str, @NonNull String str2);
}
public interface GetRankedRtcRegionsCallback {
void onRankedRtcRegions(@NonNull String[] strArr);
}
public interface GetSupportedVideoCodecsCallback {
void onSupportedVideoCodecs(@NonNull String[] strArr);
}
public interface GetVideoInputDevicesCallback {
void onDevices(@NonNull VideoInputDeviceDescription[] videoInputDeviceDescriptionArr);
}
public interface LocalVoiceLevelChangedCallback {
void onLocalVoiceLevelChanged(float f, int i);
}
public interface NoAudioInputCallback {
void onNoAudioInput(boolean z2);
}
public interface OnVideoCallback {
void onVideo(long j, int i, @NonNull String str);
}
public interface VideoFrameCallback {
boolean onFrame(@NonNull VideoFrame videoFrame);
}
static {
System.loadLibrary("discord");
}
public Discord(@NonNull Context context) {
this(context, -1);
}
public Discord(@NonNull Context context, int i) {
this.context = context;
krispVersion = context.getString(R.string.krisp_model_version);
CameraEnumeratorProvider.maybeInit(this.context);
this.nativeInstance = nativeConstructor(context, SharedEglBaseContext.getEglContext(), i);
}
private native long nativeConstructor(@NonNull Context context, @NonNull EglBase.Context context2, int i);
private native void setLocalVoiceLevelChangedCallbackNative(boolean z2);
@NonNull
public native Connection connectToServer(int i, long j, @NonNull String str, int i2, boolean z2, @NonNull ConnectToServerCallback connectToServerCallback);
public native void crash();
public native void dispose();
public native void enableBuiltInAEC(boolean z2);
public native void getAudioInputDevices(@NonNull GetAudioInputDevicesCallback getAudioInputDevicesCallback);
public native void getAudioOutputDevices(@NonNull GetAudioOutputDevicesCallback getAudioOutputDevicesCallback);
public native void getAudioSubsystem(@NonNull GetAudioSubsystemCallback getAudioSubsystemCallback);
public native void getRankedRtcRegions(@NonNull RtcRegion[] rtcRegionArr, @NonNull GetRankedRtcRegionsCallback getRankedRtcRegionsCallback);
public native void getSupportedVideoCodecs(@NonNull GetSupportedVideoCodecsCallback getSupportedVideoCodecsCallback);
public native void getVideoInputDevices(@NonNull GetVideoInputDevicesCallback getVideoInputDevicesCallback);
public native void setAudioInputEnabled(boolean z2);
public native void setAutomaticGainControl(boolean z2);
public native void setEchoCancellation(boolean z2);
public native void setKeepAliveChannel(boolean z2);
public void setLocalVoiceLevelChangedCallback(@Nullable LocalVoiceLevelChangedCallback localVoiceLevelChangedCallback) {
this.localVoiceLevelChangedCallback = localVoiceLevelChangedCallback;
setLocalVoiceLevelChangedCallbackNative(localVoiceLevelChangedCallback != null);
}
public native void setMicVolume(float f);
public native void setNoAudioInputCallback(@NonNull NoAudioInputCallback noAudioInputCallback);
public native void setNoAudioInputThreshold(float f);
public native void setNoiseCancellation(boolean z2);
public native void setNoiseSuppression(boolean z2);
public native void setPlayoutDevice(int i);
public native void setRecordingDevice(int i);
public native void setSpeakerVolume(float f);
public native void setVideoInputDevice(int i);
public native void setVideoOutputSink(@NonNull String str, @Nullable VideoFrameCallback videoFrameCallback);
public native void signalVideoOutputSinkReady(@NonNull String str);
}