Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 14e00621 authored by Chia-chi Yeh's avatar Chia-chi Yeh Committed by Android (Google) Code Review
Browse files

Merge "Revert "RTP: integrate the echo canceller from speex."" into gingerbread

parents 108a06c9 7fa7ee11
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -32,11 +32,10 @@ LOCAL_SHARED_LIBRARIES := \
	libutils \
	libmedia

LOCAL_STATIC_LIBRARIES := libspeex
LOCAL_STATIC_LIBRARIES :=

LOCAL_C_INCLUDES += \
	$(JNI_H_INCLUDE) \
	external/speex/include
	$(JNI_H_INCLUDE)

LOCAL_CFLAGS += -fvisibility=hidden

+4 −15
Original line number Diff line number Diff line
@@ -40,8 +40,6 @@
#include <media/AudioTrack.h>
#include <media/mediarecorder.h>

#include <speex/speex_echo.h>

#include "jni.h"
#include "JNIHelp.h"

@@ -448,8 +446,6 @@ private:
    AudioTrack mTrack;
    AudioRecord mRecord;

    SpeexEchoState *mEchoState;

    bool networkLoop();
    bool deviceLoop();

@@ -510,7 +506,6 @@ AudioGroup::AudioGroup()
    mEventQueue = -1;
    mDtmfEvent = -1;
    mDeviceSocket = -1;
    mEchoState = NULL;
    mNetworkThread = new NetworkThread(this);
    mDeviceThread = new DeviceThread(this);
}
@@ -523,9 +518,6 @@ AudioGroup::~AudioGroup()
    mRecord.stop();
    close(mEventQueue);
    close(mDeviceSocket);
    if (mEchoState) {
        speex_echo_state_destroy(mEchoState);
    }
    while (mChain) {
        AudioStream *next = mChain->mNext;
        delete mChain;
@@ -574,8 +566,7 @@ bool AudioGroup::set(int sampleRate, int sampleCount)
    }
    LOGD("latency: output %d, input %d", mTrack.latency(), mRecord.latency());

    // Initialize echo canceller.
    mEchoState = speex_echo_state_init(sampleCount, sampleRate);
    // TODO: initialize echo canceler here.

    // Create device socket.
    int pair[2];
@@ -642,7 +633,6 @@ bool AudioGroup::setMode(int mode)
    if (mode == MUTED) {
        mRecord.stop();
    } else {
        speex_echo_state_reset(mEchoState);
        mRecord.start();
    }

@@ -803,7 +793,7 @@ bool AudioGroup::deviceLoop()

            status_t status = mRecord.obtainBuffer(&buffer, 1);
            if (status == NO_ERROR) {
                int count = ((int)buffer.frameCount < toRead) ?
                int count = (buffer.frameCount < toRead) ?
                        buffer.frameCount : toRead;
                memcpy(&input[mSampleCount - toRead], buffer.i8, count * 2);
                toRead -= count;
@@ -827,9 +817,8 @@ bool AudioGroup::deviceLoop()
        if (mMode == NORMAL) {
            send(mDeviceSocket, input, sizeof(input), MSG_DONTWAIT);
        } else {
            int16_t result[mSampleCount];
            speex_echo_cancellation(mEchoState, input, output, result);
            send(mDeviceSocket, result, sizeof(result), MSG_DONTWAIT);
            // TODO: Echo canceller runs here.
            send(mDeviceSocket, input, sizeof(input), MSG_DONTWAIT);
        }
    }
    return true;