Port PreProcessing to the new WebRTC version
Change-Id: I7dcf4dba83ecbc45725d10045666699a9bc7e4a6
diff --git a/media/libeffects/preprocessing/Android.mk b/media/libeffects/preprocessing/Android.mk
index 0022fd9..82415d5 100644
--- a/media/libeffects/preprocessing/Android.mk
+++ b/media/libeffects/preprocessing/Android.mk
@@ -11,9 +11,9 @@
PreProcessing.cpp
LOCAL_C_INCLUDES += \
- external/webrtc/src \
- external/webrtc/src/modules/interface \
- external/webrtc/src/modules/audio_processing/include \
+ external/webrtc \
+ external/webrtc/webrtc/modules/interface \
+ external/webrtc/webrtc/modules/audio_processing/include \
$(call include-path-for, audio-effects)
LOCAL_C_INCLUDES += $(call include-path-for, speex)
@@ -25,6 +25,10 @@
liblog
LOCAL_SHARED_LIBRARIES += libdl
+
+LOCAL_CFLAGS += \
+ -DWEBRTC_POSIX
+
LOCAL_CFLAGS += -fvisibility=hidden
include $(BUILD_SHARED_LIBRARY)
diff --git a/media/libeffects/preprocessing/PreProcessing.cpp b/media/libeffects/preprocessing/PreProcessing.cpp
index 7ed107a..f3c038b 100644
--- a/media/libeffects/preprocessing/PreProcessing.cpp
+++ b/media/libeffects/preprocessing/PreProcessing.cpp
@@ -777,14 +777,17 @@
ALOGV("Session_CreateEffect procId %d, createdMsk %08x", procId, session->createdMsk);
if (session->createdMsk == 0) {
- session->apm = webrtc::AudioProcessing::Create(session->io);
+ session->apm = webrtc::AudioProcessing::Create();
if (session->apm == NULL) {
ALOGW("Session_CreateEffect could not get apm engine");
goto error;
}
- session->apm->set_sample_rate_hz(kPreprocDefaultSr);
- session->apm->set_num_channels(kPreProcDefaultCnl, kPreProcDefaultCnl);
- session->apm->set_num_reverse_channels(kPreProcDefaultCnl);
+ const webrtc::ProcessingConfig processing_config = {
+ {{kPreprocDefaultSr, kPreProcDefaultCnl},
+ {kPreprocDefaultSr, kPreProcDefaultCnl},
+ {kPreprocDefaultSr, kPreProcDefaultCnl},
+ {kPreprocDefaultSr, kPreProcDefaultCnl}}};
+ session->apm->Initialize(processing_config);
session->procFrame = new webrtc::AudioFrame();
if (session->procFrame == NULL) {
ALOGW("Session_CreateEffect could not allocate audio frame");
@@ -834,7 +837,7 @@
session->revFrame = NULL;
delete session->procFrame;
session->procFrame = NULL;
- webrtc::AudioProcessing::Destroy(session->apm);
+ delete session->apm;
session->apm = NULL;
}
return status;
@@ -846,7 +849,7 @@
ALOGW_IF(Effect_Release(fx) != 0, " Effect_Release() failed for proc ID %d", fx->procId);
session->createdMsk &= ~(1<<fx->procId);
if (session->createdMsk == 0) {
- webrtc::AudioProcessing::Destroy(session->apm);
+ delete session->apm;
session->apm = NULL;
delete session->procFrame;
session->procFrame = NULL;
@@ -914,15 +917,13 @@
} else if (config->inputCfg.samplingRate >= 8000) {
session->apmSamplingRate = 8000;
}
- status = session->apm->set_sample_rate_hz(session->apmSamplingRate);
- if (status < 0) {
- return -EINVAL;
- }
- status = session->apm->set_num_channels(inCnl, outCnl);
- if (status < 0) {
- return -EINVAL;
- }
- status = session->apm->set_num_reverse_channels(inCnl);
+
+ const webrtc::ProcessingConfig processing_config = {
+ {{static_cast<int>(session->apmSamplingRate), static_cast<int>(inCnl)},
+ {static_cast<int>(session->apmSamplingRate), static_cast<int>(outCnl)},
+ {static_cast<int>(session->apmSamplingRate), static_cast<int>(inCnl)},
+ {static_cast<int>(session->apmSamplingRate), static_cast<int>(inCnl)}}};
+ status = session->apm->Initialize(processing_config);
if (status < 0) {
return -EINVAL;
}
@@ -1038,7 +1039,16 @@
return -EINVAL;
}
uint32_t inCnl = audio_channel_count_from_out_mask(config->inputCfg.channels);
- int status = session->apm->set_num_reverse_channels(inCnl);
+ const webrtc::ProcessingConfig processing_config = {
+ {{static_cast<int>(session->apmSamplingRate),
+ static_cast<int>(session->inChannelCount)},
+ {static_cast<int>(session->apmSamplingRate),
+ static_cast<int>(session->outChannelCount)},
+ {static_cast<int>(session->apmSamplingRate),
+ static_cast<int>(inCnl)},
+ {static_cast<int>(session->apmSamplingRate),
+ static_cast<int>(inCnl)}}};
+ int status = session->apm->Initialize(processing_config);
if (status < 0) {
return -EINVAL;
}