首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Bluez 5.35中,为什么SBC编解码功能是在android/hal-音频-sbc.c包中初始化的,而不是在AVDTP.c中初始化的

在Bluez 5.35中,为什么SBC编解码功能是在android/hal-音频-sbc.c包中初始化的,而不是在AVDTP.c中初始化的
EN

Stack Overflow用户
提问于 2017-04-07 13:49:45
回答 1查看 1.2K关注 0票数 0

我正在更新我的嵌入式设备中的Bluez 4.97到5.35。

对于A2DP连接,我们必须共享SBC编解码能力。在理想情况下,性能如图1所示

。在Bluez 4.97代码中,我从AVDTP层的sbc_getcap_ind()函数中获得了SBC编解码能力。在sbc_getcap_ind()中,初始化sbc_codec_capsbc_codec_cap。所以这个功能包我可以发回电话。

在5.35中,sbc_getcap_ind()函数不可用。avdtp_media_codec_capability是在AVDTP层的endpoint_getcap_ind()函数中设置的,这是我所期望的。但是sbc_codec_cap没有初始化。所以我得到了像figure2那样的包

在blueZ 5.35中出现了新包android/hal-音频-sbc.c,在此包中设置了SBC编码功能。

我的嵌入式设备是基于RTOS的,我与android无关。所以我有以下疑问:

1)为什么在blueZ堆栈中有新的blueZ包?这背后的发展理念是什么?

android/hal-audio-sbc.c,中初始化SBC功能的原因是,非android设备将如何访问SBC功能?

如何在我的嵌入式环境中使用android/hal-audio-sbc.c来获得功能?

我认为我无法解决这个问题,因为我缺少对新的5.35架构的理解。而且没有足够的文档来理解BlueZ体系结构。我希望通过得到这些问题的答案,我能够理解5.35 BlueZ包中安卓文件夹的意义。

EN

回答 1

Stack Overflow用户

发布于 2017-04-10 03:57:22

在回答您的问题之前,我想分享几个URL的。

  1. 移植指南
  2. 管理接口

来问你的问题,

  1. BlueZ现在支持android和Linux平台。目录" android“只包含与android平台相关的源代码,不能用于Linux环境。背后的想法是在Linux和android之间共享共同的开发代码,并分别开发公共功能(大部分位于"src“、"gdbus”和"profile“目录下)。
  2. 作为BlueZ 4到BlueZ 5迁移或主要开发的一部分,所有与音频相关的实现都从BlueZ中移出。现在,音频应用程序的责任是自己实现全部内容,并向BlueZ (doc/profile-api.txt ==> RegisterProfile() method)注册。BlueZ将只充当应用程序和设备之间的中介。就Linux而言,BlueZ内部没有音频实现。我不确定BlueZ下的Android目录。因此,非android平台需要自己实现。
  3. 如前所述,您需要为BlueZ实现我们自己的音频相关配置文件。我们有一个工作软件,那就是脉冲音频。你可以加载模块-蓝光-发现在脉冲音频(pactl)和脉冲音频照顾音频。

还有另一种开源解决方案,蓝帘,目前正在积极开发中。在使用它之后,我可以看到很多的声音延迟和质量下降。如果你想要完美的解决方案,自己实现或使用脉冲音频(没有那么多的实时)。

简单地说,将应用程序从BlueZ 4.x迁移到BlueZ 5.x并不容易!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43279855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档