audio_digital_vol.h 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #ifndef _AUDIO_DIGITAL_VOL_H_
  2. #define _AUDIO_DIGITAL_VOL_H_
  3. #include "generic/typedef.h"
  4. #include "os/os_type.h"
  5. #include "os/os_api.h"
  6. #include "generic/list.h"
  7. #define BG_DVOL_FADE_ENABLE 1 /*多路声音叠加,背景声音自动淡出小声*/
  8. typedef struct {
  9. u8 toggle; /*数字音量开关*/
  10. u8 fade; /*淡入淡出标志*/
  11. u8 vol; /*淡入淡出当前音量(level)*/
  12. u8 vol_max; /*淡入淡出最大音量(level)*/
  13. s16 vol_fade; /*淡入淡出对应的起始音量*/
  14. #if BG_DVOL_FADE_ENABLE
  15. s16 vol_bk; /*后台自动淡出前音量值*/
  16. struct list_head entry;
  17. #endif
  18. volatile s16 vol_target; /*淡入淡出对应的目标音量*/
  19. volatile u16 fade_step; /*淡入淡出的步进*/
  20. } dvol_handle;
  21. int audio_digital_vol_init(void);
  22. void audio_digital_vol_bg_fade(u8 fade_out);
  23. dvol_handle *audio_digital_vol_open(u8 vol, u8 vol_max, u16 fade_step);
  24. void audio_digital_vol_close(dvol_handle *dvol);
  25. void audio_digital_vol_set(dvol_handle *dvol, u8 vol);
  26. u8 audio_digital_vol_get(void);
  27. int audio_digital_vol_run(dvol_handle *dvol, void *data, u32 len);
  28. void audio_digital_vol_reset_fade(dvol_handle *dvol);
  29. /*************************自定义支持重入的数字音量调节****************************/
  30. void *user_audio_digital_volume_open(u8 vol, u8 vol_max, u16 fade_step);
  31. int user_audio_digital_volume_close(void *_d_volume);
  32. u8 user_audio_digital_volume_get(void *_d_volume);
  33. int user_audio_digital_volume_set(void *_d_volume, u8 vol);
  34. int user_audio_digital_volume_reset_fade(void *_d_volume);
  35. int user_audio_digital_volume_run(void *_d_volume, void *data, u32 len, u8 ch_num);
  36. void user_audio_digital_handler_run(void *_d_volume, void *data, u32 len);
  37. void user_audio_digital_set_volume_tab(void *_d_volume, u16 *user_vol_tab, u8 user_vol_max);
  38. void *user_audio_process_open(void *parm, void *priv, void (*handler)(void *priv, void *data, int len, u8 ch_num));
  39. int user_audio_process_close(void *_uparm_hdl);
  40. void user_audio_process_handler_run(void *_uparm_hdl, void *data, u32 len, u8 ch_num);
  41. struct user_audio_digital_parm {
  42. u8 en;
  43. u8 vol;
  44. u8 vol_max;
  45. u16 fade_step;
  46. };
  47. struct digital_volume {
  48. u8 toggle; /*数字音量开关*/
  49. u8 fade; /*淡入淡出标志*/
  50. u8 vol; /*淡入淡出当前音量*/
  51. u8 vol_max; /*淡入淡出最大音量*/
  52. s16 vol_fade; /*淡入淡出对应的起始音量*/
  53. volatile s16 vol_target; /*淡入淡出对应的目标音量*/
  54. volatile u16 fade_step; /*淡入淡出的步进*/
  55. OS_MUTEX mutex;
  56. u8 ch_num;
  57. void *priv;
  58. u8 user_vol_max; /*自定义音量表级数*/
  59. volatile s16 *user_vol_tab; /*自定义音量表*/
  60. };
  61. struct user_audio_parm {
  62. void *priv;
  63. void (*handler)(void *priv, void *data, int len, u8 ch_num);/*用户自定义回调处理*/
  64. struct digital_volume *dvol_hdl;
  65. };
  66. #endif