webrtc aec模块关于WebRtcAec_Process()函数中参数的调用
2017-06-18 16:06
1026 查看
自己在使用WebRtcAec_Process()函数的时候,出现了错误。只要是关于const float* const* 和float* const* 类型的数据指针传入的失误。
自己刚刚开始使用强制转换来做的,可是老是出错,出错的函数是memcpy()函数,自己调试了好长时间,终于解决了。是因为自己传入的指针不对。
#define NN 160
int AudioBufferFarendSet(void* m_AecmInst, int nDataLen, char *szData)
{
short *sPointer = (short *)szData;
float m_sFar_frame[NN];
memset(m_sFar_frame, 0, sizeof(float)*NN);
int i = 0;
for (i = 0; (i * 2) < nDataLen; i++)
{
m_sFar_frame[i] = *(sPointer + i);
}
const float* ptr = m_sFar_frame;
int nRet = WebRtcAec_BufferFarend(m_AecmInst, ptr, NN);
printf("WebRtcAec_BufferFarend = %d\n", nRet);
return 0;
}
int AudioProcess(void* m_AecmInst, int nDataLen, char *szInData, char *szOutData)
{
short *sInPointer = (short *)szInData;
short *sOutPointer= (short *)szOutData;
float m_sOutNear_frame[NN];
float m_sInNear_frame[NN];
memset(m_sInNear_frame, 0, sizeof(float) * NN);
memset(m_sOutNear_frame, 0, sizeof(float) * NN);
int i = 0;
for (i = 0; (i * 2) < nDataLen; i++)
{
m_sInNear_frame[i] = *(sInPointer + i);
}
float* const p = m_sInNear_frame;
const float* const* ptr = &p;
float* const q = m_sOutNear_frame;
float* const* ptr2 = &q;
WebRtcAec_Process(m_AecmInst, ptr, 1, ptr2, NN, 109, 0);
for (i = 0; (i * 2) < nDataLen; i++)
{
*(sOutPointer + i) = (short)m_sOutNear_frame[i];
}
return 0;
}
这里面对WebrtcAec_Process()函数和WebrtcAec_BufferFarend()函数进行了封装,使其可以传入媒体流的指针和大小。
自己刚刚开始使用强制转换来做的,可是老是出错,出错的函数是memcpy()函数,自己调试了好长时间,终于解决了。是因为自己传入的指针不对。
#define NN 160
int AudioBufferFarendSet(void* m_AecmInst, int nDataLen, char *szData)
{
short *sPointer = (short *)szData;
float m_sFar_frame[NN];
memset(m_sFar_frame, 0, sizeof(float)*NN);
int i = 0;
for (i = 0; (i * 2) < nDataLen; i++)
{
m_sFar_frame[i] = *(sPointer + i);
}
const float* ptr = m_sFar_frame;
int nRet = WebRtcAec_BufferFarend(m_AecmInst, ptr, NN);
printf("WebRtcAec_BufferFarend = %d\n", nRet);
return 0;
}
int AudioProcess(void* m_AecmInst, int nDataLen, char *szInData, char *szOutData)
{
short *sInPointer = (short *)szInData;
short *sOutPointer= (short *)szOutData;
float m_sOutNear_frame[NN];
float m_sInNear_frame[NN];
memset(m_sInNear_frame, 0, sizeof(float) * NN);
memset(m_sOutNear_frame, 0, sizeof(float) * NN);
int i = 0;
for (i = 0; (i * 2) < nDataLen; i++)
{
m_sInNear_frame[i] = *(sInPointer + i);
}
float* const p = m_sInNear_frame;
const float* const* ptr = &p;
float* const q = m_sOutNear_frame;
float* const* ptr2 = &q;
WebRtcAec_Process(m_AecmInst, ptr, 1, ptr2, NN, 109, 0);
for (i = 0; (i * 2) < nDataLen; i++)
{
*(sOutPointer + i) = (short)m_sOutNear_frame[i];
}
return 0;
}
这里面对WebrtcAec_Process()函数和WebrtcAec_BufferFarend()函数进行了封装,使其可以传入媒体流的指针和大小。
相关文章推荐
- 关于函数调用得到传递参数的想法
- 关于C语言中函数调用和参数传递机制的探讨
- 关于C语言中函数调用和参数传递机…
- 初探linux内核编程,参数传递以及模块间函数调用
- 关于C语言中函数调用和参数传递机制的探讨
- 关于函数声明和调用时参数类型不一致的情况
- 关于C语言中函数调用和参数传递机…
- C++关于函数声明和定义中参数赋值为0调用问题演示
- 关于C语言中函数调用和参数传递机制的探讨--汇编
- 关于C语言中函数调用和参数传递机制的探讨
- 关于C语言中函数调用和参数传递机制的探讨(二 .传递一个参数)
- 关于C语言中函数调用和参数传递机制的探讨
- 关于C语言中函数调用和参数传递机制的探讨 (转)
- 关于函数调用中的const参数
- 关于 函数调用 参数不匹配的简单分析
- 关于C语言中函数调用和参数传递机制的探讨(一 .无参数传递)
- 关于delphi 的函数调用和参数传递方式深入研究之疑惑
- 关于C语言中函数调用和参数传递机制的探讨
- C#关于静态函数与普通函数之间的调用问题,以及可变参数的使用
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。