找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

查看: 3172|回复: 36

[QCC3系列] 修复 qcc3034 gaia eq修改无法保存的bug

  [复制链接]
连续签到天数:1天
签到总天数:256天
签到总奖励:6406金币
发表于 2022-9-4 12:09:02 | 显示全部楼层 |阅读模式
本帖最后由 jjr 于 2022-9-4 12:12 编辑


bug原因分析和解决办法参考这个帖子,
https://www.52bluetooth.com/forum.php?mod=viewthread&tid=84914&extra=page%3D1

之前帖子只是分析了bug参数的原因和可能修复的方法,这里说明下具体方法。

采用方法1修复,方法2过于复杂(因为gaia的数据和eq的数据格式不同,需要转换)

默认代码eq已经做了关机保存动作,需要实时保存的将关机的保存动作放入gaia 修改eq的地方即可。

1. 开启ENABLE_GAIA和ENABLE_GAIA_PERSISTENT_USER_EQ_BANK的宏定义
游客,如果您要查看本帖隐藏内容请回复


  1. static bool audioRouteSource(audio_sources source)
  2. {
  3.     bool routing_success = FALSE;

  4.     if(isAudioRoutingPermitted(source))
  5.     {
  6.         switch (source)
  7.         {
  8.             case audio_source_FM:
  9.                 routing_success = audioRouteFMIfAvailable();
  10.                 break;

  11.             case audio_source_ANALOG:
  12.                 routing_success = audioRouteAnalogIfAvailable();
  13.                 break;

  14.             case audio_source_SPDIF:
  15.                 routing_success = audioRouteSpdifIfAvailable();
  16.                 break;

  17.             case audio_source_I2S:
  18.                 routing_success = audioRouteI2SIfAvailable();
  19.                 break;

  20.             case audio_source_USB:
  21.                 routing_success = audioRouteUsbIfAvailable();
  22.                 break;

  23.             case audio_source_a2dp_1:
  24.             case audio_source_a2dp_2:
  25.                 routing_success = audioRouteA2dpIfAvailable(source);
  26.                 break;

  27.             case audio_source_ba:
  28.                 routing_success = audioRouteBaIfAvailable();
  29.                 break;

  30.             case audio_source_none:
  31.             default:
  32.                 break;
  33.         }
  34.         AUD_DEBUG(("AUD: audioRouteSource source = %d routed = %d\n", source, routing_success));
  35.     }

  36.     if(routing_success) //这里是添加的
  37.         MessageSendLater(&theSink.task, AUDIO_DSP_READY_FOR_DATA, 0, 0);

  38.     /* Disconnect any currently routed sources in case requested source didn't make it.*/
  39.     if ((routing_success == FALSE) && (sinkAudioIsAudioRouted()))
  40.     {
  41.         AUD_DEBUG(("AUD: Nothing to route, disconnecting\n"));
  42.         audioSuspendDisconnectAudioSource();
  43.         updateVolumeBasedOnRoutedSources();
  44.     }

  45.     displayUpdateAudioSourceText(sinkAudioGetRoutedAudioSource());

  46.     /* indicate whether audio was successfully routed or not */
  47.     return routing_success;
  48. }
复制代码
游客,如果您要查看本帖隐藏内容请回复


  1. void handleA2DPUserEqBankUpdate(void)
  2. {
  3.     user_eq_bank_t *PEQ = NULL;

  4.     PEQ = sinkAudioGetPEQ();

  5.     //if(PEQ && (PEQ->bands[0].Q != 0))
  6.     if(PEQ) //修改这里
  7.     {
  8.         uint16 index = 0;
  9.         eq_param_type_t param_type = 0;
  10.         audio_plugin_user_eq_param_t param;

  11.         param.id.bank = 1;
  12.         param.id.band = 0;
  13.         param.id.param_type = 0;
  14.         param.value = MAX_EQ_BANDS; /* Number of Banks */
  15.         AudioSetUserEqParameter(sinkAudioGetRoutedAudioTask(), ¶m);

  16.         param.id.param_type = 1;
  17.         param.value = PEQ->preGain;  /* Master Gain */
  18.         AudioSetUserEqParameter(sinkAudioGetRoutedAudioTask(), ¶m);

  19.         for(index = 0; index < MAX_EQ_BANDS; index++)
  20.         {
  21.             param.id.bank = 1;
  22.             param.id.band = index + 1;
  23.             for (param_type = 0; param_type < eq_param_max_param_types; param_type++)
  24.             {
  25.                 param.id.param_type = param_type;
  26.                 switch (param_type)
  27.                 {
  28.                     case eq_param_type_filter:
  29.                         param.value = PEQ->bands[index].filter;
  30.                         break;

  31.                     case eq_param_type_cutoff_freq:
  32.                         param.value = PEQ->bands[index].freq;
  33.                         break;

  34.                     case eq_param_type_gain:
  35.                         param.value = PEQ->bands[index].gain;
  36.                         break;

  37.                     case eq_param_type_q:
  38.                         param.value = PEQ->bands[index].Q;
  39.                         break;

  40.                     default:
  41.                         break;
  42.                 }
  43.                 AudioSetUserEqParameter(sinkAudioGetRoutedAudioTask(), ¶m);
  44.             }
  45.             AudioApplyUserEqParameters(sinkAudioGetRoutedAudioTask(), TRUE); //修改这里
  46.         }
  47.     }
  48. }
复制代码

附件为测试固件,qcc3034。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册  

×
楼主热帖
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
连续签到天数:5天
签到总天数:613天
签到总奖励:6672金币
发表于 2022-9-5 08:59:58 | 显示全部楼层
感谢分享!
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:819天
签到总奖励:9195金币
发表于 2022-9-5 09:07:14 | 显示全部楼层
感谢分享。
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:1007天
签到总奖励:16800金币
发表于 2022-9-5 11:43:36 | 显示全部楼层
学习学习!
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:5天
签到总天数:613天
签到总奖励:6672金币
发表于 2022-9-5 14:12:52 | 显示全部楼层
按照楼主的方法 gaia 修改eq的bug终于解决了,非常感谢!但是自己尝试实时保存gaia设置的eq,实现直接断电后也可以保存,但是没有成功。楼主能否帮忙解决一下,感谢!!!
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:256天
签到总奖励:6406金币
 楼主| 发表于 2022-9-5 14:47:44 | 显示全部楼层
wujianwei369 发表于 2022-9-5 14:12
按照楼主的方法 gaia 修改eq的bug终于解决了,非常感谢!但是自己尝试实时保存gaia设置的eq,实现直接断电 ...




这个是保存参数的函数,在gaia 写eq的时候调用即可。放这个下面试试。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册  

×
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

暂无签到数据

发表于 2022-9-8 09:14:11 | 显示全部楼层

感谢分享!
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:11天
签到总奖励:62金币
发表于 2022-9-17 13:51:47 | 显示全部楼层
好牛呀
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

暂无签到数据

发表于 2022-9-18 06:39:01 | 显示全部楼层
paylaşım için teşekkür ederim..
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:1天
签到总奖励:4金币
发表于 2022-10-13 00:39:51 来自手机 | 显示全部楼层
Quá tuyệt!
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2024-4-26 20:23 , Processed in 1.886378 second(s), 25 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表