Loading media/libeffects/preprocessing/aidl/PreProcessingContext.cpp +24 −16 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ #include <cstddef> #include <cstddef> #define LOG_TAG "PreProcessingContext" #define LOG_TAG "PreProcessingContext" #include <audio_utils/primitives.h> #include <Utils.h> #include <Utils.h> #include "PreProcessingContext.h" #include "PreProcessingContext.h" Loading Loading @@ -281,32 +282,39 @@ IEffect::Status PreProcessingContext::process(float* in, float* out, int samples LOG(DEBUG) << __func__ << " start processing"; LOG(DEBUG) << __func__ << " start processing"; std::lock_guard lg(mMutex); std::lock_guard lg(mMutex); mProcessedMsk |= (1 << int(mType)); // webrtc implementation clear out was_stream_delay_set every time after ProcessStream() call // webrtc implementation clear out was_stream_delay_set every time after ProcessStream() call mAudioProcessingModule->set_stream_delay_ms(mEchoDelayUs / 1000); mAudioProcessingModule->set_stream_delay_ms(mEchoDelayUs / 1000); std::vector<int16_t> in16(samples); std::vector<int16_t> out16(samples); memcpy_to_i16_from_float(in16.data(), in, samples); mProcessedMsk |= (1 << int(mType)); if ((mProcessedMsk & mEnabledMsk) == mEnabledMsk) { if ((mProcessedMsk & mEnabledMsk) == mEnabledMsk) { mProcessedMsk = 0; mProcessedMsk = 0; int processStatus = mAudioProcessingModule->ProcessStream( int processStatus = mAudioProcessingModule->ProcessStream(in16.data(), mInputConfig, (const int16_t* const)in, mInputConfig, mOutputConfig, (int16_t* const)out); mOutputConfig, out16.data()); if (processStatus != 0) { if (processStatus != 0) { LOG(ERROR) << "Process stream failed with error " << processStatus; LOG(ERROR) << "Process stream failed with error " << processStatus; return status; return status; } } } } if (mType == PreProcessingEffectType::ACOUSTIC_ECHO_CANCELLATION) { mRevProcessedMsk |= (1 << int(mType)); mRevProcessedMsk |= (1 << int(mType)); if ((mRevProcessedMsk & mRevEnabledMsk) == mRevEnabledMsk) { if ((mRevProcessedMsk & mRevEnabledMsk) == mRevEnabledMsk) { mRevProcessedMsk = 0; mRevProcessedMsk = 0; int revProcessStatus = mAudioProcessingModule->ProcessReverseStream( int revProcessStatus = mAudioProcessingModule->ProcessReverseStream( (const int16_t* const)in, mInputConfig, mInputConfig, (int16_t* const)out); in16.data(), mInputConfig, mInputConfig, out16.data()); if (revProcessStatus != 0) { if (revProcessStatus != 0) { LOG(ERROR) << "Process reverse stream failed with error " << revProcessStatus; LOG(ERROR) << "Process reverse stream failed with error " << revProcessStatus; return status; return status; } } } } } memcpy_to_float_from_i16(out, out16.data(), samples); return {STATUS_OK, samples, samples}; return {STATUS_OK, samples, samples}; } } Loading Loading
media/libeffects/preprocessing/aidl/PreProcessingContext.cpp +24 −16 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ #include <cstddef> #include <cstddef> #define LOG_TAG "PreProcessingContext" #define LOG_TAG "PreProcessingContext" #include <audio_utils/primitives.h> #include <Utils.h> #include <Utils.h> #include "PreProcessingContext.h" #include "PreProcessingContext.h" Loading Loading @@ -281,32 +282,39 @@ IEffect::Status PreProcessingContext::process(float* in, float* out, int samples LOG(DEBUG) << __func__ << " start processing"; LOG(DEBUG) << __func__ << " start processing"; std::lock_guard lg(mMutex); std::lock_guard lg(mMutex); mProcessedMsk |= (1 << int(mType)); // webrtc implementation clear out was_stream_delay_set every time after ProcessStream() call // webrtc implementation clear out was_stream_delay_set every time after ProcessStream() call mAudioProcessingModule->set_stream_delay_ms(mEchoDelayUs / 1000); mAudioProcessingModule->set_stream_delay_ms(mEchoDelayUs / 1000); std::vector<int16_t> in16(samples); std::vector<int16_t> out16(samples); memcpy_to_i16_from_float(in16.data(), in, samples); mProcessedMsk |= (1 << int(mType)); if ((mProcessedMsk & mEnabledMsk) == mEnabledMsk) { if ((mProcessedMsk & mEnabledMsk) == mEnabledMsk) { mProcessedMsk = 0; mProcessedMsk = 0; int processStatus = mAudioProcessingModule->ProcessStream( int processStatus = mAudioProcessingModule->ProcessStream(in16.data(), mInputConfig, (const int16_t* const)in, mInputConfig, mOutputConfig, (int16_t* const)out); mOutputConfig, out16.data()); if (processStatus != 0) { if (processStatus != 0) { LOG(ERROR) << "Process stream failed with error " << processStatus; LOG(ERROR) << "Process stream failed with error " << processStatus; return status; return status; } } } } if (mType == PreProcessingEffectType::ACOUSTIC_ECHO_CANCELLATION) { mRevProcessedMsk |= (1 << int(mType)); mRevProcessedMsk |= (1 << int(mType)); if ((mRevProcessedMsk & mRevEnabledMsk) == mRevEnabledMsk) { if ((mRevProcessedMsk & mRevEnabledMsk) == mRevEnabledMsk) { mRevProcessedMsk = 0; mRevProcessedMsk = 0; int revProcessStatus = mAudioProcessingModule->ProcessReverseStream( int revProcessStatus = mAudioProcessingModule->ProcessReverseStream( (const int16_t* const)in, mInputConfig, mInputConfig, (int16_t* const)out); in16.data(), mInputConfig, mInputConfig, out16.data()); if (revProcessStatus != 0) { if (revProcessStatus != 0) { LOG(ERROR) << "Process reverse stream failed with error " << revProcessStatus; LOG(ERROR) << "Process reverse stream failed with error " << revProcessStatus; return status; return status; } } } } } memcpy_to_float_from_i16(out, out16.data(), samples); return {STATUS_OK, samples, samples}; return {STATUS_OK, samples, samples}; } } Loading