161 lines
5.7 KiB
Java
161 lines
5.7 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.StreamParameters;
|
|
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, @NonNull StreamParameters[] streamParametersArr);
|
|
}
|
|
|
|
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, @NonNull StreamParameters[] streamParametersArr, 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);
|
|
}
|