csi_audio_ai.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /*
  2. * Copyright (C) 2021 Alibaba Group Holding Limited
  3. * Author: fuqian.zxr <fuqian.zxr@alibaba-inc.com>
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License version 2 as
  7. * published by the Free Software Foundation.
  8. */
  9. #ifndef __CSI_AUDIO_AI_H__
  10. #define __CSI_AUDIO_AI_H__
  11. #include "csi_audio_common.h"
  12. #define CSI_AUDIO_AI_VERSION_MAJOR 0
  13. #define CSI_AUDIO_AI_VERSION_MINOR 1
  14. #define VQE_DRC_SECNUM 5
  15. #define CSI_AI_MAX_COUNT 16
  16. #define CSI_AI_NAME_MAX_LEN 32
  17. #define CSI_AI_CAP_SPDIF 0x00000001 /*Is a spdif device*/
  18. #define CSI_AI_CAP_HDMI 0x00000002 /*IS a hdmi audio*/
  19. #define CSI_AI_CAP_CODEC 0x00000003 /*Is a codec audio*/
  20. typedef struct csi_ai_info {
  21. char ai_name[CSI_AI_NAME_MAX_LEN];
  22. unsigned int capbilities;
  23. }csi_ai_info_s;
  24. typedef struct csi_ai_infos {
  25. unsigned int count;
  26. csi_ai_info_s info[CSI_AI_MAX_COUNT];
  27. }csi_ai_infos_s;
  28. typedef struct csi_aec_frame {
  29. csi_audio_frame_s refframe;
  30. bool bvalid;
  31. bool bsysbind;
  32. }csi_aec_frame_s;
  33. typedef struct csi_aichn_frame{
  34. uint32_t usr_frm_depth;
  35. }csi_aichn_frame_s;
  36. typedef struct csi_ai_aec_config {
  37. bool usrmode;
  38. int8_t cngmode;
  39. int8_t nearallpassenergy;
  40. int8_t nearcleansupenergy;
  41. int16_t dthnl_sort_qth;
  42. int16_t echobandlow;
  43. int16_t echobandhigh;
  44. int16_t echobandlow2;
  45. int16_t echobandhigh2;
  46. int16_t erl_band[6];
  47. int16_t erl[7];
  48. int16_t voice_protect_freql;
  49. int16_t voice_protect_freql1;
  50. int32_t reserved;
  51. }csi_ai_aec_config_s;
  52. typedef struct csi_ai_rnr_config {
  53. bool usrmode;
  54. int32_t nrmode;
  55. int32_t maxnrlevel;
  56. int32_t noisethresh;
  57. }csi_ai_rnr_config_s;
  58. typedef struct csi_ai_hdr_config {
  59. bool usrmode;
  60. int32_t mingaindb;
  61. int32_t maxgaindb;
  62. int32_t micgaindb;
  63. int32_t micgainstepdb;
  64. void *callback;
  65. }csi_ai_hdr_config_s;
  66. typedef struct csi_ai_drc_config {
  67. bool usrmode;
  68. int16_t attacktime;
  69. int16_t releasetime;
  70. int16_t oldlevdb[VQE_DRC_SECNUM];
  71. int16_t newlevdb[VQE_DRC_SECNUM];
  72. }csi_ai_drc_config_s;
  73. int32_t csi_ai_get_version(csi_api_version_u *version);
  74. int32_t csi_ai_query_list(csi_ai_infos_s *infos);
  75. int32_t csi_ai_setpubattr(int32_t aidevid,csi_aio_attr_s *aiattr);
  76. int32_t csi_ai_getpubattr(int32_t aidevid,csi_aio_attr_s *aiattr);
  77. int32_t csi_ai_enable(int32_t aidevid);
  78. int32_t csi_ai_disable(int32_t aidevid);
  79. int32_t csi_ai_enablechn(int32_t aidevid,int32_t aichn);
  80. int32_t csi_ai_disablechn(int32_t aidevid,int32_t aichn);
  81. int32_t csi_ai_getframe(int32_t aidev,int32_t aichn,csi_audio_frame_s *frm,csi_aec_frame_s *aecfrm,int32_t timeout);
  82. int32_t csi_ai_releaseframe(int32_t aidev,int32_t aichn,csi_audio_frame_s *frm,csi_aec_frame_s *aecfrm);
  83. int32_t csi_ai_setchnparam(int32_t aidev,int32_t aichn,csi_aichn_frame_s *chnparam);
  84. int32_t csi_ai_getchnparam(int32_t aidev,int32_t aichn,csi_aichn_frame_s *chnparam);
  85. int32_t csi_ai_enableresmp(int32_t aidev,int32_t aichn,csi_audio_sample_rate_e out_sample_rate);
  86. int32_t csi_ai_disableresmp(int32_t aidev,int32_t aichn);
  87. int32_t csi_ai_setvqeattr(int32_t aidev,int32_t aichn,int32_t aochn,int *level);
  88. int32_t csi_ai_getvqeattr(int32_t aidev,int32_t aichn,int *level);
  89. int32_t csi_ai_settalkvqeattr(int32_t aidev,int32_t aichn,int32_t aodev,int32_t aochn,int *level);
  90. int32_t csi_ai_gettalkvqeattr(int32_t aidev,int32_t aichn,int *level);
  91. int32_t csi_ai_setrecordvqeattr(int32_t aidev,int32_t aichn,int *level);
  92. int32_t csi_ai_getrecordvqeattr(int32_t aidev,int32_t aichn,int *level);
  93. int32_t csi_ai_enablevqe(int32_t aidev,int32_t aichn);
  94. int32_t csi_ai_disablevqe(int32_t aidev,int32_t aichn);
  95. int32_t csi_ai_settrackmode(int32_t aidev,csi_audio_track_mode_e trackmode);
  96. int32_t csi_ai_gettrackmode(int32_t aidev,csi_audio_track_mode_e *trackmode);
  97. int32_t csi_ai_reset(int32_t aidevid);
  98. int32_t csi_ai_queryfilestatus(int32_t aidev,int32_t aichn,csi_audio_file_status_s *filestatus);
  99. int32_t csi_ai_setvqevolume(int32_t aidev,int32_t aichn,int32_t volumedb);
  100. int32_t csi_ai_getvqevolume(int32_t aidev,int32_t aichn,int32_t *volumedb);
  101. int32_t csi_ai_enableaecrefframe(int32_t aidev,int32_t aichn,int32_t aodev,int32_t aochn);
  102. int32_t csi_ai_disableaecrefframe(int32_t aidev,int32_t aichn);
  103. #endif