Call handling state machine refactor.

This commit is contained in:
Cody Henthorne
2020-10-16 15:42:04 -04:00
committed by Alan Evans
parent b3f0a44f10
commit 5eaac6cb17
31 changed files with 3446 additions and 1391 deletions

View File

@@ -45,6 +45,7 @@ public class Camera implements CameraControl, CameraVideoCapturer.CameraSwitchHa
private final int cameraCount;
@NonNull private CameraState.Direction activeDirection;
private boolean enabled;
private boolean isInitialized;
public Camera(@NonNull Context context,
@NonNull CameraEventListener cameraEventListener,
@@ -80,6 +81,7 @@ public class Camera implements CameraControl, CameraVideoCapturer.CameraSwitchHa
capturer.initialize(SurfaceTextureHelper.create("WebRTC-SurfaceTextureHelper", eglBase.getEglBaseContext()),
context,
observer);
isInitialized = true;
}
}
@@ -123,6 +125,7 @@ public class Camera implements CameraControl, CameraVideoCapturer.CameraSwitchHa
public void dispose() {
if (capturer != null) {
capturer.dispose();
isInitialized = false;
}
}
@@ -142,6 +145,10 @@ public class Camera implements CameraControl, CameraVideoCapturer.CameraSwitchHa
return capturer;
}
public boolean isInitialized() {
return isInitialized;
}
private @Nullable CameraVideoCapturer createVideoCapturer(@NonNull CameraEnumerator enumerator,
@NonNull CameraState.Direction direction)
{

View File

@@ -1,8 +1,11 @@
package org.thoughtcrime.securesms.ringrtc;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
public class CameraState {
public class CameraState implements Parcelable {
public static final CameraState UNKNOWN = new CameraState(Direction.NONE, 0);
@@ -14,6 +17,10 @@ public class CameraState {
this.cameraCount = cameraCount;
}
private CameraState(Parcel in) {
this(Direction.valueOf(in.readString()), in.readInt());
}
public int getCameraCount() {
return cameraCount;
}
@@ -31,6 +38,17 @@ public class CameraState {
return "count: " + cameraCount + ", activeDirection: " + activeDirection;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(activeDirection.name());
dest.writeInt(cameraCount);
}
@Override
public int describeContents() {
return 0;
}
public enum Direction {
FRONT, BACK, NONE, PENDING;
@@ -49,4 +67,16 @@ public class CameraState {
}
}
}
public static final Creator<CameraState> CREATOR = new Creator<CameraState>() {
@Override
public CameraState createFromParcel(Parcel in) {
return new CameraState(in);
}
@Override
public CameraState[] newArray(int size) {
return new CameraState[size];
}
};
}

View File

@@ -2,7 +2,9 @@ package org.thoughtcrime.securesms.ringrtc;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.ringrtc.CallId;
import org.signal.ringrtc.Remote;
@@ -84,7 +86,7 @@ public final class RemotePeer implements Remote, Parcelable
return false;
}
public boolean callIdEquals(RemotePeer remotePeer) {
public boolean callIdEquals(@Nullable RemotePeer remotePeer) {
return remotePeer != null && this.callId.equals(remotePeer.callId);
}

View File

@@ -0,0 +1,70 @@
package org.thoughtcrime.securesms.ringrtc;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.whispersystems.signalservice.api.messages.calls.TurnServerInfo;
import java.util.ArrayList;
import java.util.List;
/**
* Wrap turn server info so it can be sent via an intent.
*/
public class TurnServerInfoParcel implements Parcelable {
private final String username;
private final String password;
private final List<String> urls;
public TurnServerInfoParcel(@NonNull TurnServerInfo turnServerInfo) {
urls = new ArrayList<>(turnServerInfo.getUrls());
username = turnServerInfo.getUsername();
password = turnServerInfo.getPassword();
}
private TurnServerInfoParcel(@NonNull Parcel in) {
username = in.readString();
password = in.readString();
urls = in.createStringArrayList();
}
public @Nullable String getUsername() {
return username;
}
public @Nullable String getPassword() {
return password;
}
public @NonNull List<String> getUrls() {
return urls;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(username);
dest.writeString(password);
dest.writeStringList(urls);
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<TurnServerInfoParcel> CREATOR = new Creator<TurnServerInfoParcel>() {
@Override
public TurnServerInfoParcel createFromParcel(Parcel in) {
return new TurnServerInfoParcel(in);
}
@Override
public TurnServerInfoParcel[] newArray(int size) {
return new TurnServerInfoParcel[size];
}
};
}