A2DP ,将设备加入MTKA2dpSetStandByTime黑名单复测,修复导航杂音,卡音问题

7 篇文章 1 订阅
1 篇文章 0 订阅

项目场景:

step1: 手机连接车载,手机打开导航,导航音频从车载侧传出。


问题描述:

音质不好,尾音有杂音,卡顿现象。

原因分析

导航语音太频繁的 suspendstart 的时候就会卡顿,MTK将改了google的 a2dpStandByTime的黑名单方案,将Google的3000ms改为500ms,所以在重复暂停和播放的过程中,上一句没有播放完的语音buffer会被缓存或被清空,导致本句最后一个字或者下一句首个字会杂音。


黑名单相关代码:

system/bt/btif/src/btif_av.cc

465    /**
466     * Set the active peer.
467     *
468     * @param peer_address the active peer address or RawAddress::kEmpty to
469     * reset the active peer
470     * @return true on success, otherwise false
471     */
472    bool SetActivePeer(const RawAddress& peer_address,
473                       std::promise<void> peer_ready_promise) {
474      LOG(INFO) << __PRETTY_FUNCTION__ << ": peer: " << peer_address;
475  
476      if (active_peer_ == peer_address) {
477        peer_ready_promise.set_value();
478        return true;  // Nothing has changed
479      }
480      /** M: IOT device has pop sound when doing music pause,set standbytime as 3s @{ */
481      #if defined(MTK_INTEROP_EXTENSION) && (MTK_INTEROP_EXTENSION == TRUE)
482        if (!peer_address.IsEmpty() && interop_mtk_match_addr_name(
483                         INTEROP_MTK_A2DP_SET_STANDBY_TIME, &peer_address/*&peer->PeerAddress()*/)) {
484          BTIF_TRACE_ERROR("%s: Set %s A2dp Standby time to 3s.", __func__,
485                         peer_address.ToString().c_str());
486          osi_property_set("persist.vendor.bluetooth.a2dpstandbytime", "3000");    //Google 默认为30000ms
487        } else {
488          BTIF_TRACE_ERROR("%s: Set %s A2dp Standby time to 500ms.", __func__,
489                         peer_address.ToString().c_str());
490          osi_property_set("persist.vendor.bluetooth.a2dpstandbytime", "500");     //未加入黑名单时a2dpstandbytime为500ms,可能不能把缓存及时清除完
491        }
492      #endif
			......
...		}

解决方案相关代码:

platform / system / bt /mediatek / conf / bt_mtk_iot_list.conf

#{ 0xb0 , 0x1f , 0x81 }, /GAC BT 4528/
AddressBlacklist = 9c:8d:7c,d4:ca:6e,b0:1f:81,
在AddressBlacklist 后面加上该厂商设备的蓝牙地址的高8位和无意义位。 b0:1f:81

mediatek / include / interop_database_mtk.h

{ { { 0xb0 , 0x1f , 0x81 ,0 ,0 ,0 } },INTEPOR_MTK_A2DP_SET_STANDBY_TIME },

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值