Use aaudio instead of opensles

Added audio effects ro recorder stream
This commit is contained in:
Juha Heinanen
2024-11-16 05:54:38 +02:00
parent e5a021e942
commit 71f7578705
5 changed files with 48 additions and 6 deletions

View File

@ -7,7 +7,7 @@ android {
ndkVersion '27.2.12479018'
defaultConfig {
applicationId = 'com.tutpro.baresip'
minSdkVersion 23
minSdkVersion 28
targetSdkVersion 35
versionCode = 405
versionName = '61.1.0'

View File

@ -2,9 +2,9 @@ poll_method epoll
call_local_timeout 120
call_max_calls 4
call_hold_other_calls yes
audio_player opensles,nil
audio_source opensles,nil
audio_alert opensles,nil
audio_player aaudio,nil
audio_source aaudio,nil
audio_alert aaudio,nil
audio_level no
ausrc_format s16
auplay_format s16
@ -19,7 +19,7 @@ audio_jitter_buffer_delay 0-20
rtp_stats yes
rtp_timeout 60
rtp_rxmode thread
module opensles.so
module aaudio.so
module stun.so
module turn.so
module ice.so

View File

@ -75,7 +75,7 @@ add_definitions(-DHAVE_PTHREAD)
target_link_libraries(baresip
android
OpenSLES
aaudio
lib_baresip
lib_re
lib_ssl

View File

@ -246,6 +246,14 @@ static void event_handler(enum ua_event ev, struct bevent *event, void *arg)
len = re_snprintf(event_buf, sizeof event_buf, "sndfile dump,%r", &data);
break;
}
if (!pl_strcmp(&module_event, "player sessionid")) {
len = re_snprintf(event_buf, sizeof event_buf, "player sessionid,%r", &data);
break;
}
if (!pl_strcmp(&module_event, "recorder sessionid")) {
len = re_snprintf(event_buf, sizeof event_buf, "recorder sessionid,%r", &data);
break;
}
default:
return;
}

View File

@ -18,6 +18,9 @@ import android.media.*
import android.media.AudioManager.MODE_IN_COMMUNICATION
import android.media.AudioManager.MODE_NORMAL
import android.media.AudioManager.RINGER_MODE_SILENT
import android.media.audiofx.AcousticEchoCanceler
import android.media.audiofx.AutomaticGainControl
import android.media.audiofx.NoiseSuppressor
import android.net.*
import android.net.wifi.WifiManager
import android.os.*
@ -70,6 +73,7 @@ class BaresipService: Service() {
private lateinit var bluetoothReceiver: BroadcastReceiver
private lateinit var hotSpotReceiver: BroadcastReceiver
private lateinit var androidContactsObserver: ContentObserver
private lateinit var stopState: String
private lateinit var quitTimer: CountDownTimer
@ -625,6 +629,36 @@ class BaresipService: Service() {
return
}
if (ev[0] == "player sessionid") {
val sessionId = ev[1].toInt()
Log.d(TAG, "got player sessionid $sessionId")
return
}
if (ev[0] == "recorder sessionid") {
val sessionId = ev[1].toInt()
Log.d(TAG, "got recorder sessionid $sessionId")
if (AcousticEchoCanceler.isAvailable()) {
Log.i(TAG, "AcousticEchoCanceler IS available")
AcousticEchoCanceler.create(sessionId)
} else {
Log.i(TAG, "AcousticEchoCanceler IS NOT available")
}
if (AutomaticGainControl.isAvailable()) {
Log.i(TAG, "AutomaticGainControl IS available")
AutomaticGainControl.create(sessionId)
} else {
Log.i(TAG, "AutomaticGainControl IS NOT available")
}
if (NoiseSuppressor.isAvailable()) {
Log.i(TAG, "NoiseSuppressor IS available")
NoiseSuppressor.create(sessionId)
} else {
Log.i(TAG, "NoiseSuppressor IS NOT available")
}
return
}
val ua = UserAgent.ofUap(uap)
if (ua == null) {
Log.w(TAG, "uaEvent $event did not find ua $uap")