Browse Source

声音增强

vothin 2 years ago
parent
commit
d0bdb616b7
43 changed files with 75 additions and 14 deletions
  1. 1 0
      jni/Makefile
  2. 39 5
      jni/core/utilities.cpp
  3. 31 7
      jni/dep/include/voip/telephone.h
  4. BIN
      jni/dep/lib/libavcodec.a
  5. BIN
      jni/dep/lib/libavdevice.a
  6. BIN
      jni/dep/lib/libavfilter.a
  7. BIN
      jni/dep/lib/libavformat.a
  8. BIN
      jni/dep/lib/libavutil.a
  9. BIN
      jni/dep/lib/libg7221codec-arm-unknown-linux-gnueabihf.a
  10. BIN
      jni/dep/lib/libopus.a
  11. BIN
      jni/dep/lib/libpj-arm-unknown-linux-gnueabihf.a
  12. BIN
      jni/dep/lib/libpjlib-util-arm-unknown-linux-gnueabihf.a
  13. BIN
      jni/dep/lib/libpjmedia-arm-unknown-linux-gnueabihf.a
  14. BIN
      jni/dep/lib/libpjmedia-audiodev-arm-unknown-linux-gnueabihf.a
  15. BIN
      jni/dep/lib/libpjmedia-codec-arm-unknown-linux-gnueabihf.a
  16. BIN
      jni/dep/lib/libpjmedia-videodev-arm-unknown-linux-gnueabihf.a
  17. BIN
      jni/dep/lib/libpjnath-arm-unknown-linux-gnueabihf.a
  18. BIN
      jni/dep/lib/libpjsip-arm-unknown-linux-gnueabihf.a
  19. BIN
      jni/dep/lib/libpjsip-simple-arm-unknown-linux-gnueabihf.a
  20. BIN
      jni/dep/lib/libpjsip-ua-arm-unknown-linux-gnueabihf.a
  21. BIN
      jni/dep/lib/libpjsua-arm-unknown-linux-gnueabihf.a
  22. BIN
      jni/dep/lib/libpjsua2-arm-unknown-linux-gnueabihf.a
  23. BIN
      jni/dep/lib/libresample-arm-unknown-linux-gnueabihf.a
  24. BIN
      jni/dep/lib/libsrtp-arm-unknown-linux-gnueabihf.a
  25. BIN
      jni/dep/lib/libswresample.a
  26. BIN
      jni/dep/lib/libswscale.a
  27. BIN
      jni/dep/lib/libvoip.a
  28. BIN
      jni/dep/lib/libyuv-arm-unknown-linux-gnueabihf.a
  29. 2 0
      jni/logic/callLogic.cc
  30. 2 2
      jni/service/BusinessConfig.h
  31. BIN
      libs/armeabi/libzkgui.so
  32. BIN
      obj/activity/DeviceUpdateActivity.o
  33. BIN
      obj/activity/callActivity.o
  34. BIN
      obj/activity/mainActivity.o
  35. BIN
      obj/activity/startActivity.o
  36. BIN
      obj/activity/statusbar.o
  37. BIN
      obj/activity/ui3Activity.o
  38. BIN
      obj/activity/warnActivity.o
  39. BIN
      obj/core/update_assistant.o
  40. BIN
      obj/core/utilities.o
  41. BIN
      obj/net/tcp_client.o
  42. BIN
      obj/service/BusinessConfig.o
  43. BIN
      obj/service/time.o

+ 1 - 0
jni/Makefile

@@ -67,6 +67,7 @@ LDFLAGS += -lvoip \
            -lg7221codec-arm-unknown-linux-gnueabihf \
            -lyuv-arm-unknown-linux-gnueabihf  \
            -lpj-arm-unknown-linux-gnueabihf \
+           -lopus \
            -lzkaudio \
            -lpaho-mqtt3c
            

+ 39 - 5
jni/core/utilities.cpp

@@ -23,8 +23,10 @@
 #include "base/json_object.h"
 #include "edge/ip_table.h"
 #include "core/jhws.h"
+#include "manager/ConfigManager.h"
 #include "security/SecurityManager.h"
 #include "zkaudio.h"
+#include "voip/telephone_audio_initializer.h"
 
 /**
  * 仅用于测试,默认不发送视频
@@ -80,16 +82,18 @@ voip::Telephone* GetTelephone() {
 //  conf.headers["CID"] = "jhylf14988-com.jhws";
 //  conf.headers["JWT"] = StoragePreferences::getString(SIP_JHWS_TOKEN, "");
 //  LOGD("deviceuid: %s", GetDeviceUid().c_str());
-  LOGD("id_url: %s", conf.id_uri.c_str());
-  LOGD("server_url: %s", conf.server_uri.c_str());
-  LOGD("user_name: %s", conf.user_name.c_str());
-  LOGD("password: %s", conf.password.c_str());
-  LOGD("user_agent: %s", conf.user_agent.c_str());
+//  LOGD("id_url: %s", conf.id_uri.c_str());
+//  LOGD("server_url: %s", conf.server_uri.c_str());
+//  LOGD("user_name: %s", conf.user_name.c_str());
+//  LOGD("password: %s", conf.password.c_str());
+//  LOGD("user_agent: %s", conf.user_agent.c_str());
 #endif
   bool enable_video = StoragePreferences::getBool(SIP_ENABLE_VIDEO, true);
   conf.auto_transmit_video_to_remote = enable_video;
+  //单实例
   telephone = new voip::Telephone(conf);
 
+#if 0
   //设置消回音、增益等参数
   base::AcousticEchoCancellater::Configuration aec_conf;
   aec_conf.sample_rate = 8000; //固定8K
@@ -111,6 +115,36 @@ voip::Telephone* GetTelephone() {
   zk_audio_input_set_volume_native(1, 12);
   zk_audio_output_set_volume_native(15);
 //  telephone->SetInputAecApcConfig(aec_conf, apc_conf);
+#endif
+
+#if 1
+  const int kSampleRate = 8000;//固定8K
+  //设置消回音等参数
+  base::AcousticEchoCancellater::Configuration aec_conf;
+  aec_conf.sample_rate = kSampleRate; //固定8K
+  aec_conf.nearend_channel = 1;
+  aec_conf.farend_channel = 1;
+
+  //进一步处理录音数据
+  base::AudioProcessChain::Configuration apc_conf;
+  apc_conf.number_of_channels = 1;
+  apc_conf.sample_rate = kSampleRate;
+  apc_conf.anr.enable = 1; //降低噪音
+  for (int i = 0; i < array_length(apc_conf.anr.intensity); ++i) {
+    //调整降噪强度
+    apc_conf.anr.intensity[i] = 5;
+  }
+  telephone->SetInputAecApcConfig(aec_conf, apc_conf);
+  zk_audio_input_set_volume_native(0, 0);//回采通道,建议固定0增益
+  zk_audio_input_set_volume_native(1, 10); //录音音量,可按需求调整增益
+  zk_audio_output_set_volume_native(15); //扬声器的增益,可按需求调整
+#else
+  //也可以从配置文件中设置 Aec、 Apc、 输入输出音量
+  const std::string filename =
+      CONFIGMANAGER->getResFilePath("telephone_audio_config.json");
+  TelephoneAudioInitializer::Setup(telephone, filename);
+#endif
+
   return telephone;
 }
 

+ 31 - 7
jni/dep/include/voip/telephone.h

@@ -17,12 +17,12 @@
 namespace voip {
 
 enum State {
-	STATE_CALL_CALLING,   		//正在拨号
-	STATE_CALL_EARLY,     		//正在响铃
-	STATE_CALL_INCOMING,  		//来电
-	STATE_CALL_CONNECTING,		//正在连接
-	STATE_CALL_CONFIRMED, 		//接通
-	STATE_CALL_DISCONNECTED, 	//结束
+  STATE_CALL_CALLING,   //正在拨号
+  STATE_CALL_EARLY,     //正在响铃
+  STATE_CALL_INCOMING,  //来电
+  STATE_CALL_CONNECTING,//正在连接
+  STATE_CALL_CONFIRMED, //接通
+  STATE_CALL_DISCONNECTED, //结束
 };
 
 enum SIPStatusCode {
@@ -37,6 +37,11 @@ enum SIPStatusCode {
   SIP_STATUS_CODE_DECLINE = 603,
 };
 
+enum SIPTranstorpType {
+  SIP_TRANSPORT_UDP = 1,
+  SIP_TRANSPORT_TCP,
+};
+
 struct RtcpStreamStat {
   /**
    * 上次更新时间
@@ -145,12 +150,25 @@ struct Configuration {
    */
   HeaderList headers;
   /**
-   * 本地绑定的端口号
+   * 本地账号使用的端口号
    * 默认 5060
    */
   int local_port;
 
   /**
+   * 是否启用本地账号
+   * true 启用; false 关闭
+   * 默认启用
+   */
+  bool enable_local_account;
+
+  /**
+   * 传输协议类型
+   */
+  SIPTranstorpType transtorp_type;
+
+
+  /**
    * 通话时,自动发送演示视频画面到对方
    * 默认 false
    */
@@ -310,6 +328,12 @@ public:
       const base::AcousticEchoCancellater::Configuration& aec,
       const base::AudioProcessChain::Configuration& apc);
 
+  /**
+   * 设置经过aec、apc处理后的声音的增益
+   * @param size 增益倍数1~10
+   */
+  int SetInputPcmGainSize(float size);
+
 private:
   class Impl;
   Impl* impl_;

BIN
jni/dep/lib/libavcodec.a


BIN
jni/dep/lib/libavdevice.a


BIN
jni/dep/lib/libavfilter.a


BIN
jni/dep/lib/libavformat.a


BIN
jni/dep/lib/libavutil.a


BIN
jni/dep/lib/libg7221codec-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libopus.a


BIN
jni/dep/lib/libpj-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libpjlib-util-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libpjmedia-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libpjmedia-audiodev-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libpjmedia-codec-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libpjmedia-videodev-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libpjnath-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libpjsip-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libpjsip-simple-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libpjsip-ua-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libpjsua-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libpjsua2-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libresample-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libsrtp-arm-unknown-linux-gnueabihf.a


BIN
jni/dep/lib/libswresample.a


BIN
jni/dep/lib/libswscale.a


BIN
jni/dep/lib/libvoip.a


BIN
jni/dep/lib/libyuv-arm-unknown-linux-gnueabihf.a


+ 2 - 0
jni/logic/callLogic.cc

@@ -201,6 +201,8 @@ static void onUI_init(){
 	EASYUICONTEXT->hideStatusBar();
 	EASYUICONTEXT->hideNaviBar();
 
+	GetTelephone()->SetInputPcmGainSize(10.0);
+
 //	player = new ZKMediaPlayer(ZKMediaPlayer::E_MEDIA_TYPE_AUDIO);
 //	player->play("/mnt/extsd/ui/hl.mp3");
 

+ 2 - 2
jni/service/BusinessConfig.h

@@ -48,8 +48,8 @@
 #define STORE_AUDO_ANSWER "auto_answer"
 #define SIGNAL_TYPE "TCP" //TCP,SIP
 
-static std::string version = "v1.0.6";
-static int versionNo = 6;
+static std::string version = "v1.0.7";
+static int versionNo = 7;
 static std::string serverIP = "172.28.100.100";
 static std::string tcpIP = "172.28.100.100";
 static int serverHttpPort = 8006;

BIN
libs/armeabi/libzkgui.so


BIN
obj/activity/DeviceUpdateActivity.o


BIN
obj/activity/callActivity.o


BIN
obj/activity/mainActivity.o


BIN
obj/activity/startActivity.o


BIN
obj/activity/statusbar.o


BIN
obj/activity/ui3Activity.o


BIN
obj/activity/warnActivity.o


BIN
obj/core/update_assistant.o


BIN
obj/core/utilities.o


BIN
obj/net/tcp_client.o


BIN
obj/service/BusinessConfig.o


BIN
obj/service/time.o