You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-android/jni/redphone/AudioCodec.h

44 lines
956 B
C++

#ifndef __AUDIO_CODEC_H__
#define __AUDIO_CODEC_H__
#include <sys/types.h>
#include <speex/speex.h>
#include <speex/speex_echo.h>
#include <modules/audio_processing/aecm/include/echo_control_mobile.h>
#include <modules/audio_processing/ns/include/noise_suppression_x.h>
#define SPEEX_BIT_RATE 8000
#define SPEEX_SAMPLE_RATE 8000
#define SPEEX_FRAME_RATE 50
#define SPEEX_FRAME_SIZE (SPEEX_SAMPLE_RATE / SPEEX_FRAME_RATE)
#define SPEEX_ENCODED_FRAME_SIZE 20
class AudioCodec {
private:
void *enc; //speex encoder
void *dec; //speex decoder
void *aecm;
NsxHandle *ns;
SpeexBits enc_bits, dec_bits;
SpeexEchoState *echo_state;
int enc_frame_size, dec_frame_size;
int initialized;
public:
AudioCodec();
~AudioCodec();
int init();
int encode(short *rawData, char* encodedData, int encodedDataLen);
int decode(char* encodedData, int encodedDataLen, short* rawData);
int conceal(int frames, short *rawData);
};
#endif