天天看点

使用C#封装webrtc音频增益模块

webrtc音频增益模块不是我写的,是这位仁兄使用C++写的https://www.cnblogs.com/mod109/p/5767867.html

这次我做了一次搬运工,我做的工作是使用C#封装他写的C++功能模块,如何使用C#封装C++细节和详细步骤可以参考我写的博客https://blog.csdn.net/zxy13826134783/article/details/105958311

本文测试的环境:

win7

vistual studio 2012

本文所使用的项目源码下载链接:http://zxy15914507674.gitee.io/shared_resource_name/WebRtc资源文件.rar

上面的链接被码云废掉了,直接去我的仓库下载:https://gitee.com/zxy15914507674/shared_resource_name,找打对应的

WebRtc资源文件.rar 下载即可

首先说明一下项目源码的资源分布,如下图:

使用C#封装webrtc音频增益模块

要封装的C++功能函数WebRtcTestOutput.cpp:

使用C#封装webrtc音频增益模块

到了C#定义委托与之对应(参数类型可以原封不动拷贝C++的):

使用C#封装webrtc音频增益模块

下面讲解NoiseSuppression32函数中的char* 类型的数据如何在C#中转换

可以使用:

string fileNameInput="你输入的string文本"

System.Runtime.InteropServices.Marshal.StringToHGlobalAnsi(fileNameInput).ToPointer()就可以把string类型数据转换为char*类型数据,转换例子如下:

使用C#封装webrtc音频增益模块

当然你可以不用那么麻烦,直接在定义委托时,把参数类型为char*的替换为string即可

注意:当C++的参数类型为string时,我们在C#端第一反应就是使用string或者char *类型的数据作为传输,但其实是不行的,踩过坑