api_effects.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #ifndef _API_EFFECTS_H
  2. #define _API_EFFECTS_H
  3. typedef struct {
  4. const u8* dbb_param;
  5. u32 param_len;
  6. s32* coef_l;
  7. s32* coef_r;
  8. u8 dac_band_cnt;
  9. } dbb_param_cb_t;
  10. typedef struct {
  11. u32 cutoff_frequency;
  12. u32 intensity_set;
  13. u8 vbass_high_frequency_set;
  14. u32 intensity;
  15. u32 pregain;
  16. } vbass_param_cb_t;
  17. typedef struct {
  18. const s32* dyeq_param;
  19. const s32* coef_param;
  20. u8 vbass_en;
  21. } dyeq_param_cb_t;
  22. typedef struct {
  23. u16 fade_step;
  24. volatile s8 fade_dir;
  25. u16 gain;
  26. volatile u16 target_gain;
  27. } soft_vol_t;
  28. typedef struct {
  29. s32 wave_type;
  30. s32 intensity;
  31. s32 plfsr_l;
  32. s32 plfsr_r;
  33. } ABP_generation_init_cb_t;
  34. typedef struct {
  35. s16 decay_factor;
  36. } hrtf_rt_cb_t;
  37. void codecs_pcm_init(void);
  38. u8 codecs_pcm_is_start(void);
  39. ///软件音量
  40. void soft_vol_process_mono_one_sample(soft_vol_t* p, s16* input);
  41. void soft_vol_process_stereo_one_sample(soft_vol_t* p, s16* inputl, s16* inputr);
  42. void soft_vol_set_vol_param(soft_vol_t* p, u16 vol, u8 vol_direct_set);
  43. void soft_vol_init(soft_vol_t* p);
  44. ///动态低音音效
  45. int music_dbb_init(dbb_param_cb_t* p);
  46. int music_dbb_update_param(u8 vol_level, u8 bass_level);
  47. int music_dbb_stop(void);
  48. u8 music_dbb_get_bass_level(void);
  49. u8 music_dbb_get_level_cnt(void);
  50. ///空间音效
  51. int v3d_get_data_ptr_l1(u32* ptr);
  52. void v3d_frame_process(u32* buf, u32 samples, u32 in_nch, u32 in_24bits);
  53. void v3d_clear_cache(void);
  54. void v3d_delay_buf_clear_cache(void);
  55. void v3d_set_param(int mode, u16 wet, u16 dry);
  56. void v3d_set_fade(u32 fade); //fade: 0->fade in, 1->fade out
  57. bool v3d_fade_is_done(u32 fade); //fade: 0->fade in, 1->fade out
  58. bool v3d_delay_buf_init(void* ptr_l, u32 buf_l_size, u32 delay_l_samples, void* ptr_r, u32 buf_r_size, u32 delay_r_samples);
  59. void v3d_init(void);
  60. ///虚拟低音
  61. int vbass_process(void *cb, s16 *data);
  62. void vbass_init(void *cb, vbass_param_cb_t *p);
  63. void vbass_set_param(void *cb, u32 cutoff_frequency, u32 intensity, u8 vbass_high_frequency_set, u32 pregain);
  64. ///动态EQ
  65. void dynamic_eq_process(void *cb, s32 *samples);
  66. void dyeq_init(void *cb, dyeq_param_cb_t *p);
  67. void dyeq_coef_update(void *cb, u8 *buf);
  68. void dyeq_clear_cache(void *cb);
  69. s16 dyeq_drc_v3_calc(s32 sample, void *drc_cb);
  70. bool dyeq_drc_v3_init(const void *bin, int bin_size, void *drc_cb);
  71. bool dyeq_drc_v3_set_param(void *buf, void *drc_cb);
  72. ///2段DRC
  73. s32 xdrc_softeq_proc(void *cb, s32 input);
  74. int xdrc_softeq_cb_init(void *cb, u32 cb_len, u32 res_addr, u32 res_len);
  75. void xdrc_softeq_coef_update(void *cb, u32 cb_len, u32 *coef, u32 band, bool pregain);
  76. void xdrc_softeq_clear_cache(void *cb);
  77. s32 xdrc_drc_process_gain(void *cb, s32 data_in);
  78. s32 xdrc_drc_get_pcm32_s(s32 data, int g);
  79. s16 xdrc_drc_process_s16(void *cb, s32 data_in);
  80. int xdrc_drcv1_cb_init(void *cb, u32 cb_len, u32 res_addr, u32 res_len);
  81. void xdrc_drcv1_coef_update(void* cb, u32 *tbl);
  82. s32 pcmdelay_mono_s32(void *cb, s32 pcm);
  83. int pcmdelay_init(void *cb,void *delay_buf, u16 delay_buf_len, u16 samples_size, u16 delay_samples);
  84. bool pcmdelay_coef_update(void *cb, u16 delay_samples);
  85. ///舒适噪声(alpha波、beta波、pink)
  86. void alpha_beta_pink_generation_init(ABP_generation_init_cb_t *p);
  87. void alpha_beta_pink_generation(s16 *samples, s32 len, u8 idx);
  88. void alpha_beta_pink_generation_stereo(s16 *samples, s32 len);
  89. ///动态空间音频
  90. void hrtf_rt_init(hrtf_rt_cb_t *p);
  91. void hrtf_rt_audio_frame_process(u32* buf, u32 samples, u32 in_nch, u32 in_24bits);
  92. void hrtf_rt_update_angle_process(s16 az, s16 el);
  93. s32 hrtf_rt_angle_filter(s32 in_angle);
  94. void hrtf_rt_angle_filter_init(u32 filter_cnt_total, s16 delta_thr, s16 step);
  95. #endif // _API_EFFECTS_H