Skip to content

Commit

Permalink
Some cleanups
Browse files Browse the repository at this point in the history
Signed-off-by: Mario Danic <mario@lovelyhq.com>
  • Loading branch information
mario committed Jan 13, 2018
1 parent 42b71b9 commit 413e962
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 46 deletions.
85 changes: 39 additions & 46 deletions app/src/main/java/com/nextcloud/talk/activities/CallActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -428,7 +428,14 @@ public void switchCamera() {
}

private void createCameraEnumerator() {
if (Camera2Enumerator.isSupported(this)) {
boolean camera2EnumeratorIsSupported = false;
try {
camera2EnumeratorIsSupported = Camera2Enumerator.isSupported(this);
} catch (final Throwable throwable) {
Log.w(TAG, "Camera2Enumator threw an error");
}

if (camera2EnumeratorIsSupported) {
cameraEnumerator = new Camera2Enumerator(this);
} else {
cameraEnumerator = new Camera1Enumerator(true);
Expand Down Expand Up @@ -548,14 +555,6 @@ private void basicInitialization() {
rootEglBase = EglBase.create();
createCameraEnumerator();

//Initialize PeerConnectionFactory globals.
PeerConnectionFactory.InitializationOptions initializationOptions = PeerConnectionFactory.InitializationOptions
.builder(this)
.setEnableVideoHwAcceleration(true)
.setFieldTrials(null)
.createInitializationOptions();
PeerConnectionFactory.initialize(initializationOptions);

//Create a new PeerConnectionFactory instance.
PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
peerConnectionFactory = new PeerConnectionFactory(options);
Expand Down Expand Up @@ -968,55 +967,48 @@ private void hangup(boolean dueToNetworkChange) {

leavingCall = true;
inCall = false;
dispose(null);

if (videoCapturer != null) {
try {
videoCapturer.stopCapture();
} catch (InterruptedException e) {
Log.e(TAG, "Failed to stop capturing while hanging up");
}
videoCapturer.dispose();
videoCapturer = null;
}

for (int i = 0; i < magicPeerConnectionWrapperList.size(); i++) {
endPeerConnection(magicPeerConnectionWrapperList.get(i).getSessionId());

}

if (!dueToNetworkChange) {
pipVideoView.release();
pipVideoView.release();

if (audioSource != null) {
audioSource.dispose();
audioSource = null;
}

if (audioManager != null) {
audioManager.stop();
audioManager = null;
}
if (audioSource != null) {
audioSource.dispose();
audioSource = null;
}

if (videoCapturer != null) {
try {
videoCapturer.stopCapture();
} catch (InterruptedException e) {
Log.e(TAG, "Failed to stop capturing while hanging up");
}
videoCapturer.dispose();
videoCapturer = null;
}
if (audioManager != null) {
audioManager.stop();
audioManager = null;
}

Log.d(TAG, "Closing video source.");
if (videoSource != null) {
videoSource.dispose();
videoSource = null;
}
if (videoSource != null) {
videoSource = null;
}

if (peerConnectionFactory != null) {
peerConnectionFactory.dispose();
peerConnectionFactory = null;
}
if (peerConnectionFactory != null) {
peerConnectionFactory.dispose();
peerConnectionFactory = null;
}

localMediaStream.removeTrack(localAudioTrack);
localMediaStream.removeTrack(localVideoTrack);
localMediaStream = null;
localAudioTrack = null;
localVideoTrack = null;
localMediaStream = null;
localAudioTrack = null;
localVideoTrack = null;

hangupNetworkCalls();
}
hangupNetworkCalls();
}

private void hangupNetworkCalls() {
Expand Down Expand Up @@ -1131,6 +1123,7 @@ public void onDestroy() {
hangup(false);
}
//this.unregisterReceiver(networkBroadcastReceier);
rootEglBase.release();
super.onDestroy();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,16 @@
import com.squareup.leakcanary.LeakCanary;
import com.squareup.leakcanary.RefWatcher;

import org.webrtc.PeerConnectionFactory;
import org.webrtc.voiceengine.WebRtcAudioManager;
import org.webrtc.voiceengine.WebRtcAudioUtils;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.security.GeneralSecurityException;
import java.util.HashSet;
import java.util.Set;

import javax.inject.Singleton;

Expand Down Expand Up @@ -107,6 +113,54 @@ private void useCompatVectorIfNeeded() {
}
}
}

/*
AEC blacklist and SL_ES_WHITELIST are borrowed from Signal
https://github.com/WhisperSystems/Signal-Android/blob/551470123d006b76a68d705d131bb12513a5e683/src/org/thoughtcrime/securesms/ApplicationContext.java
*/
private void initializeWebRtc() {
try {
Set<String> HARDWARE_AEC_BLACKLIST = new HashSet<String>() {{
add("D6503"); // Sony Xperia Z2 D6503
add("ONE A2005"); // OnePlus 2
add("MotoG3"); // Moto G (3rd Generation)
add("Nexus 6P"); // Nexus 6p
add("Pixel"); // Pixel
add("Pixel XL"); // Pixel XL
add("MI 4LTE"); // Xiami Mi4
add("Redmi Note 3"); // Redmi Note 3
add("Redmi Note 4"); // Redmi Note 4
add("SM-G900F"); // Samsung Galaxy S5
add("g3_kt_kr"); // LG G3
add("SM-G930F"); // Samsung Galaxy S7
add("Xperia SP"); // Sony Xperia SP
add("Nexus 6"); // Nexus 6
add("ONE E1003"); // OnePlus X
add("One"); // OnePlus One
add("Moto G5");
}};

Set<String> OPEN_SL_ES_WHITELIST = new HashSet<String>() {{
add("Pixel");
add("Pixel XL");
}};

if (HARDWARE_AEC_BLACKLIST.contains(Build.MODEL)) {
WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(true);
}

if (!OPEN_SL_ES_WHITELIST.contains(Build.MODEL)) {
WebRtcAudioManager.setBlacklistDeviceForOpenSLESUsage(true);
}

PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions.builder(this)
.setEnableVideoHwAcceleration(true)
.createInitializationOptions());
} catch (UnsatisfiedLinkError e) {
Log.w(TAG, e);
}
}

//endregion

//region Overridden methods
Expand All @@ -115,8 +169,10 @@ public void onCreate() {
super.onCreate();
JobManager.create(this).addJobCreator(new MagicJobCreator());
FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(false);

sharedApplication = this;

initializeWebRtc();
useCompatVectorIfNeeded();


Expand Down

0 comments on commit 413e962

Please sign in to comment.