webrtc Android AECM 模块的使用

平台: Rk3399Pro_Android8.1_SDK
主要这个几个函数,

static void set_config(void *AEC_inst, unsigned options)
int webrtc_aec_destroy(void *state )
void webrtc_aec_reset(void *state )
int webrtc_aec_cancel_echo( void *state,
					    int16_t *rec_frm,
					    const int16_t *play_frm,
					    unsigned options,
					    void *reserved )
int webrtc_aec_create(unsigned clock_rate,
                                      unsigned channel_count,
                                      unsigned samples_per_frame,
                                      unsigned tail_ms,
                                      unsigned options,
                                      webrtc_ec *echo)

见源码

int webrtc_aec_test(void)
{
	webrtc_ec *echo_state;
	int ret = 0;
	short far_frame[NN_LEN];
	short near_frame[NN_LEN];
	short out_frame[NN_LEN];
	const sample * buf_ptr;

	
	echo_state = (struct webrtc_ec *)calloc(1, sizeof(struct webrtc_ec));
	if(!echo_state){
		ALOGD("webrtc_aec_create ENOMEM");
		return -ENOMEM;
	}
	
	FILE *fp_far  = fopen("/sdcard/speaker.pcm", "rb");
	FILE *fp_near = fopen("/sdcard/micin.pcm", "rb");
	FILE *fp_out  = fopen("/sdcard/out.pcm", "wb");
	if(!fp_far || !fp_near || !fp_out)
	{
		ALOGE("webrtc_aec test open file err \n");
		return -1;
	}
	ret = webrtc_aec_create(8000, 1, NN_LEN ,60, 0, echo_state);
	if(ret){
		return -1;
	}
	ALOGD("starting echo 3");
	while(1){
		if (NN_LEN == fread(far_frame, sizeof(short), NN_LEN, fp_far)){
			fread(near_frame, sizeof(short), NN_LEN, fp_near);
			webrtc_aec_cancel_echo(echo_state, near_frame , far_frame,0, NULL);
			fwrite(near_frame, sizeof(short), NN_LEN, fp_out);
		}else{
			break;
		}
	}
	webrtc_aec_destroy(echo_state);
	return 0;
}

int main(void){
	webrtc_aec_test();

	return 0;
}

adb root
adb remount
adb push webrtc_test /system/bin/
adb shell chmod 777 /system/bin/webrtc_test
./webrtc_test 运行测试

源码下载,https://download.csdn.net/download/piaozhiye/11235847
参考
参考
参考

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值