From e75f2f1b7491f1e80b16234d7f2db6ba47c9a57d Mon Sep 17 00:00:00 2001 From: Leo Ma Date: Tue, 15 Nov 2016 17:38:20 +0800 Subject: [PATCH] Enable AEC and AGC Signed-off-by: Leo Ma --- .../java/net/ossrs/yasea/SrsPublisher.java | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/net/ossrs/yasea/SrsPublisher.java b/library/src/main/java/net/ossrs/yasea/SrsPublisher.java index a02f3b7..84bfe2e 100644 --- a/library/src/main/java/net/ossrs/yasea/SrsPublisher.java +++ b/library/src/main/java/net/ossrs/yasea/SrsPublisher.java @@ -3,19 +3,22 @@ package net.ossrs.yasea; import android.content.Context; import android.media.AudioManager; import android.media.AudioRecord; +import android.media.audiofx.AcousticEchoCanceler; +import android.media.audiofx.AutomaticGainControl; import com.github.faucamp.simplertmp.RtmpHandler; import com.seu.magicfilter.utils.MagicFilterType; import java.io.File; -import java.io.IOException; /** * Created by Leo Ma on 2016/7/25. */ public class SrsPublisher { - private AudioRecord mic; + private static AudioRecord mic; + private static AcousticEchoCanceler aec; + private static AutomaticGainControl agc; private boolean aloop = false; private Thread aworker; @@ -67,6 +70,20 @@ public class SrsPublisher { return; } + if (AcousticEchoCanceler.isAvailable()) { + aec = AcousticEchoCanceler.create(mic.getAudioSessionId()); + if (aec != null) { + aec.setEnabled(true); + } + } + + if (AutomaticGainControl.isAvailable()) { + agc = AutomaticGainControl.create(mic.getAudioSessionId()); + if (agc != null) { + agc.setEnabled(true); + } + } + if (!mCameraView.startCamera()) { mEncoder.stop(); return; @@ -237,6 +254,18 @@ public class SrsPublisher { mic.release(); mic = null; } + + if (aec != null) { + aec.setEnabled(false); + aec.release(); + aec = null; + } + + if (agc != null) { + agc.setEnabled(false); + agc.release(); + agc = null; + } } public void switchMute() {