csi_audio_ao.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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_AO_H__
  10. #define __CSI_AUDIO_AO_H__
  11. #include "csi_audio_common.h"
  12. #define CSI_AO_MAX_COUNT 16
  13. #define CSI_AO_NAME_MAX_LEN 32
  14. #define CSI_AO_CAP_SPDIF 0x00000001 /*Is a spdif device*/
  15. #define CSI_AO_CAP_HDMI 0x00000002 /*IS a hdmi audio*/
  16. #define CSI_AO_CAP_CODEC 0x00000003 /*Is a codec audio*/
  17. typedef struct csi_ao_info {
  18. char ai_name[CSI_AO_NAME_MAX_LEN];
  19. unsigned int capbilities;
  20. }csi_ao_info_s;
  21. typedef struct csi_ao_infos {
  22. unsigned int count;
  23. csi_ao_info_s info[CSI_AO_MAX_COUNT];
  24. }csi_ao_infos_s;
  25. #define CSI_AUDIO_AO_VERSION_MAJOR 0
  26. #define CSI_AUDIO_AO_VERSION_MINOR 1
  27. typedef struct csi_ao_chn_state {
  28. uint32_t chntotalnum;
  29. uint32_t chnfreenum;
  30. uint32_t chnbusynum;
  31. }csi_ao_chn_state_s;
  32. typedef enum csi_audio_fade_rate {
  33. AUIDO_FADE_RATE_1 = 0,
  34. AUIDO_FADE_RATE_2 = 1,
  35. AUIDO_FADE_RATE_4 = 2,
  36. AUIDO_FADE_RATE_8 = 3,
  37. AUIDO_FADE_RATE_16 = 4,
  38. AUIDO_FADE_RATE_32 = 5,
  39. AUIDO_FADE_RATE_64 = 6,
  40. AUIDO_FADE_RATE_128 = 7,
  41. AUIDO_FADE_RATE_BUTT
  42. }csi_audio_fade_rate_e;
  43. typedef struct csi_audio_fade {
  44. bool fade;
  45. csi_audio_fade_rate_e fadeinrate;
  46. csi_audio_fade_rate_e fadeoutrate;
  47. }csi_audio_fade_s;
  48. typedef struct csi_ao_vqe_config {
  49. int32_t hpfopen;
  50. int32_t anropen;
  51. int32_t agcopen;
  52. int32_t eqopen;
  53. int32_t worksamplerate;
  54. int32_t framesample;
  55. csi_vqe_workstate_e workstate;
  56. csi_audio_hpf_config_s hpfcfg;
  57. csi_audio_anr_config_s anrcfg;
  58. csi_audio_agc_config_s agccfg;
  59. csi_audio_eq_config_s eqcfg;
  60. }csi_ao_vqe_config_s;
  61. int32_t csi_ao_get_version(csi_api_version_u *version);
  62. int32_t csi_ao_query_list(csi_ao_infos_s *infos);
  63. int32_t csi_ao_setpubattr(int32_t aodev,csi_aio_attr_s *attr);
  64. int32_t csi_ao_getpubattr(int32_t aodev,csi_aio_attr_s *attr);
  65. int32_t csi_ao_enable(int32_t aodev);
  66. int32_t csi_ao_disable(int32_t aodev);
  67. int32_t csi_ao_enablechn(int32_t aodev,int32_t aochn);
  68. int32_t csi_ao_disablechn(int32_t aodev,int32_t aochn);
  69. int32_t csi_ao_sendframe(int32_t aodev,int32_t aochn,const csi_audio_frame_s *data,int32_t timeout);
  70. int32_t csi_ao_enableresmp(int32_t aodev,int32_t aochn,csi_audio_sample_rate_e insamplerate);
  71. int32_t csi_ao_disableresmp(int32_t aodev,int32_t aochn);
  72. int32_t csi_ao_pausechn(int32_t aodev,int32_t aochn);
  73. int32_t csi_ao_resumechn(int32_t aodev,int32_t aochn);
  74. int32_t csi_ao_clearchnbuf(int32_t aodev,int32_t aochn);
  75. int32_t csi_ao_querychnstat(int32_t aodev,int32_t aochn,csi_ao_chn_state_s *status);
  76. int32_t csi_ao_settrackmode(int32_t aodev,csi_audio_track_mode_e trackmode);
  77. int32_t csi_ao_gettrackmode(int32_t aodev,csi_audio_track_mode_e *trackmode);
  78. int32_t csi_ao_setvolume(int32_t aodev,int32_t volume);
  79. int32_t csi_ao_getvolume(int32_t aodev,int32_t *volume);
  80. int32_t csi_ao_setmute(int32_t aodev,bool enable,csi_audio_fade_s *fade);
  81. int32_t csi_ao_getmute(int32_t aodev,bool enable,csi_audio_fade_s *fade);
  82. int32_t csi_ao_reset(int32_t aodev);
  83. int32_t csi_ao_setvqeattr(int32_t aodev,int32_t aochn,csi_ao_vqe_config_s *vqeconfig);
  84. int32_t csi_ao_getvqeattr(int32_t aodev,int32_t aochn,csi_ao_vqe_config_s *vqeconfig);
  85. int32_t csi_ao_enablevqe(int32_t aodev,int32_t aochn);
  86. int32_t csi_ao_disablevqe(int32_t aodev,int32_t aochn);
  87. #endif