bsp_mav.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "include.h"
  2. #if BT_SCO_MAV_EN
  3. //魔音化
  4. static s16 buf_01[1536] AT(.mavsco_buf);
  5. static s16 buf_02[128] AT(.mavsco_buf);
  6. static s16 buf_03[128] AT(.mavsco_buf);
  7. static s16 buf_04[512] AT(.mavsco_buf);
  8. static s16 buf_05[64] AT(.mavsco_buf);
  9. static s16 buf_06[64] AT(.mavsco_buf);
  10. static char buf_07[512] AT(.mavsco_buf);
  11. typedef struct {
  12. u8 res[2];
  13. s16 *buf_used;
  14. s16 *inbuf;
  15. s16 *outbuf;
  16. s16 *cache;
  17. s16 *mav_out;
  18. s16 *out1_buf;
  19. char *s8_fdata;
  20. }mav_cfg_test;
  21. mav_cfg_test mav_cfg_te = {
  22. .res[0] = 0,
  23. .res[1] = 0,
  24. .buf_used = buf_01,
  25. .inbuf = buf_02,
  26. .outbuf = buf_03,
  27. .cache = buf_04,
  28. .mav_out = buf_05,
  29. .out1_buf = buf_06,
  30. .s8_fdata = buf_07,
  31. };
  32. void mav_kick_start(void);
  33. void magic_voice_init(void *cfg);
  34. void magic_voice_set_level(u8 type, u8 level);
  35. AT(.rodata.magic)
  36. const u8 magic_table[4][2] = {
  37. {0, 5},
  38. {0, 2},
  39. {1, 1},
  40. {1, 4},
  41. };
  42. ///切换魔音
  43. void bt_sco_magic_voice_switch(void)
  44. {
  45. //设置魔音级别
  46. u8 magic_type,magic_level;
  47. static int magic_sel_ce = 0;
  48. magic_sel_ce++;
  49. if (magic_sel_ce > 4) {
  50. magic_sel_ce = 0;
  51. }
  52. if (!magic_sel_ce) {
  53. magic_type = 0;
  54. magic_level = 0;
  55. } else {
  56. magic_type = magic_table[magic_sel_ce - 1][0];
  57. magic_level = magic_table[magic_sel_ce - 1][1];
  58. }
  59. magic_voice_set_level(magic_type, magic_level);
  60. // printf("MAGIC VOICE ---> (%d)\n", magic_sel_ce);
  61. }
  62. AT(.com_text.mav)
  63. void bt_sco_mav_process(u8 *ptr, u32 samples)
  64. {
  65. if (samples == 128) {
  66. memcpy(mav_cfg_te.inbuf, ptr, 256);
  67. memcpy(ptr, mav_cfg_te.outbuf, 256);
  68. mav_kick_start();
  69. }
  70. }
  71. ///魔音初始化
  72. void bt_sco_magic_init(void)
  73. {
  74. magic_voice_init(&mav_cfg_te);
  75. }
  76. #else
  77. AT(.com_text.mav)
  78. void bt_sco_mav_process(u8 *ptr, u32 samples){};
  79. #endif // BT_SCO_MAV_EN