首页 > 其他分享 >从空口分析BLE AUDIO ISO(音乐和通话)

从空口分析BLE AUDIO ISO(音乐和通话)

时间:2024-10-16 14:20:20浏览次数:7  
标签:CIG CIS 通话 ISO ms BLE 发包 AUDIO

ISO :isochoronous channel,BLE AUDIO引入的同步通道,可以简单的理解为接收方需要在严格的时间范围内接收并确认数据,否则发送方就会丢弃,这样就能保住音频数据的时效性,尤其是对与语音通话更为重要。
接下来我们还是以手机和耳机为例,通过空口来分析ISO数据包,这里会有两个场景:音乐和通话,看看他们之间的ISO数据包有何区别。

1:音乐

在手机发起传输ISO音乐帧之前,耳机会通过EATT Notification通知手机,相关ASE(ID==2)可以streaming了,如下图CIS 0和CIS 1 Media streaming:
在这里插入图片描述
接下来看看ISO数据包的发包状态:在这里插入图片描述

从上图绿色框看到ISO数据在传输的时候是交替传输,CIS0–>CIS1–>CIS0–>CIS1,单个ISO数据payload都是155个字节,以20ms为一个ISO interval(CIG发包周期),包含CIS0的两个单向包,和CIS1的两个单向包。
接下来看看单个ISO包的内容:
在这里插入图片描述
从上图绿色框可以看到,因为音乐是单向传输数据,就是手机传给耳机,耳机不需要数据回给手机,所以耳机只需要回复一个NULL包即可。
再看一下红色框里面的参数:

参数详解
CIS ID0CIS ID号
CIG ID0CIG ID号
ISO Interval20ms一个CIG发包的周期为20ms
Sub Interval2.048 ms一个CIG发包周期内,同CIS的两个包之间的时间间隔
CIS Offset23.75 ms距离CIS锚点的偏移
CIS Sync Delay14.186 ms用于发包CIS锚点同步时间
CIG Sync Delay14.186 ms用于发包CIG锚点同步时间,与第一个CIS同时间点
NSE7Number of SubEvents,意思是说在ISO interval (20ms)内,一个CIS流有7次输出数据的机会。至于要不要传输7次,就要看下面的BN和有没有重传
BN2BN值,可以理解为一个ISO interval里(20ms),手机可以发给耳机2个有效数据包,重传的不算。
FT4FT值,可以理解为一个数据包最多可以在4个ISO interval里重传(20x4=80ms)。
SDU Interval10 ms帧间间隔
PHYLE 2M采用2M PHY传输数据
FramingUnframed采用非成帧方式,不会在ISO层组包和分包,都会交给上层,但不会携带时间偏移信息
Transport Latency64.186 ms最大时延

再看一下LC3 CODEC参数信息:

参数详解
Audio ChannelsFront Left左声道
Sampling Frequency48 kHz采样率48KHZ
Frame Duration10 ms帧间隔间10ms
Frame Size155帧字节数
Blocks per PDU1单个PDU分成多少块

2:通话

同理,在手机和耳机发起传输ISO通话帧之前,耳机会通过EATT Notification通知手机,相关ASE(ID==1和3)可以streaming了,如下图CIS 0和CIS 1 Conversational streaming:
在这里插入图片描述

通话是双向数据传输,所以我们会看到两个方向的ISO数据:
在这里插入图片描述
从上图看到ISO数据在传输的顺序是:CIS0–>CIS0–>CIS1–>CIS1,单个ISO数据payload都是80个字节,以10ms为一个ISO interval(CIG发包周期),包含CIS0的两个双向包,和CIS1的两个双向包。
接下来看看单个ISO包的内容:
在这里插入图片描述
如上图红色框,单个CIS在两个方向上都有数据传输,而且双方都需要回复CIE(close isochronous event)的NULL包确认,感觉这个地方可以优化一下,回包带确认即可。再看一下右边绿色框框的参数,下面把音乐和通话的参数都列出来,比较一下:

参数音乐(值)通话(值)详解
CIS ID00CIS ID号
CIG ID02CIG ID号
ISO Interval20ms10ms一个CIG发包的周期,音乐为20ms,通话为10ms
Sub Interval2.048 ms2.12ms一个CIG发包周期内,同CIS的两个包之间的时间间隔
CIS Offset23.75 ms11.25ms距离CIS锚点的偏移
CIS Sync Delay14.186 ms6.21ms用于发包CIS锚点同步时间
CIG Sync Delay14.186 ms6.21ms用于发包CIG锚点同步时间,与第一个CIS同时间点
NSE73Number of SubEvents,意思是说在ISO interval (20ms)内,一个CIS流有7(3)次输出数据的机会。至于要不要传输7(3)次,就要看下面的BN和有没有重传
BN21BN值,可以理解为一个ISO interval里(20ms),手机可以发给耳机2个有效数据包,重传的不算。
FT41FT值,可以理解为音乐场景一个数据包最多可以在4个ISO interval里重传(20x4=80ms),通话场景最多在1一个iso interval重传(10ms)。
SDU Interval10 ms10ms帧间间隔
PHYLE 2MLE 2M采用2M PHY传输数据
FramingUnframedUnframed采用非成帧方式,不会在ISO层组包和分包,都会交给上层,但不会携带时间偏移信息
Transport Latency64.186 ms3.79ms最大时延

再看一下LC3 CODEC参数信息:

参数音乐(值)通话(值)详解
Audio ChannelsFront LeftFront Left左声道
Sampling Frequency48 kHz32kHz采样率48KHZ
Frame Duration10 ms10ms帧间隔间10ms
Frame Size15580一帧字节数
Blocks per PDU11单个PDU分成多少块

通过上面表格的比较发现,音乐和通话在NSE, BN, FT ,Latency的数值有显著区别,通话的FT越小,说明对时效越发敏感。

还有一点需要注意的就是,耳机作为peripheral设备往手机central设备单向传输数据的时候,也需要由手机先传送一个Empty LE CIS包给耳机,然后耳机再回数据包给手机,如下图:
在这里插入图片描述

标签:CIG,CIS,通话,ISO,ms,BLE,发包,AUDIO
From: https://blog.csdn.net/Jzj1234555/article/details/142953707

相关文章

  • qt5报错无法枚举xxx字体:qt.qpa.fonts: Unable to enumerate family ' "WenYue XinQing
    问题描述:使用qt5时,出现错误提示:qt.qpa.fonts:Unabletoenumeratefamily'"WenYueXinQingNianTi(Non-CommercialUse)"'虽然不影响正常使用,但是还是希望解决。猜测:可能是qt5在自动枚举字体时,系统中安装的字体名称过长或其他参数不合规导致qt5无法枚举。如果此字体不是项......
  • 24最新AI绘画StableDiffusion模型推荐系列(风格型)
    前言今天,分享几个SDXL的特殊风格模型,这些模型在特定风格下非常出彩,弥补了一些“我已经看腻了AI画图”的情况。这几位作者分享的SDXL模型艺术风格上表现得尤为出色,而且他们都是秉持着开源精神免费分享自己的模型。训练过模型的小伙伴肯定都知道,要收录上万张图片做数据集,已经......
  • php8: Throwable和Exception的区别
    一,php8中的一些错误如致命错误用Exception捕捉不到例子:<?phptry{echo"try";$a=100/0;var_dump($a);}catch(\Exception$e){echo"catch";$result=$e->getMessage();......
  • 苍穹外卖——报错:Parameter 'xxx' not found. Available parameters are [arg0, colle
    背景:在执行过程中,报错:Servlet.service()forservlet[dispatcherServlet]incontextwithpath[]threwexception[Requestprocessingfailed;nestedexceptionisorg.mybatis.spring.MyBatisSystemException:nestedexceptionisorg.apache.ibatis.binding.Binding......
  • ETAS ISOLAR-A/B配置CAN协议栈
    ETAS参考博世是研发需求为AUTOSAR平台提供了工具链,受到不是主机厂和Tire1的追捧,进行快速的平台开发和移植,本文一起分享BSW-CAN协议栈开发。1导入DBC解析CAN协议栈在IsolarA/B新建工程后,完成dbc和arxml的导入,系统上层的SWC和基本类型都有了,需要对工程BSW进行配置1.1OSOS......
  • 道路车辆功能安全 ISO 26262标准(4-3)—系统级产品开发
    写在前面本系列文章主要讲解道路车辆功能安全ISO26262标准的相关知识,希望能帮助更多的同学认识和了解功能安全标准。若有相关问题,欢迎评论沟通,共同进步。(*^▽^*)1.道路车辆功能安全ISO26262标准4.ISO26262-4 系统级产品开发四、项目集成和测试集成和测试阶段包括......
  • 【SD基础】Stable Diffusion 提示词万能公式&插件&词库
    提示词公式对于StableDiffusion来说,提示词(又或者说“关键词”)是输入项,并且输入英文,StableDiffusion只能输入英文并且被AI理解,转换为向量然后进行生成。合适的提示词可以生成你所想要的画面,如果画面不尽人意,那么大概率是提示词的问题,不合适的提示词会被AI曲解,那么这个时候......
  • 强大的无头UI表格库:TanStack Table!Github Star达到了惊人的25K!
    强大的无头UI表格库:TanStackTable!GithubStar达到了惊人的25K!在构建现代化Web应用时,表格和数据网格是常见的UI组件,特别是在处理大量数据或需要复杂交互时,选择合适的表格库尤为重要。TanStackTable是一款功能强大的HeadlessUI表格库,支持TypeScript/JavaScript、React、......
  • 地理信息国际标准“地理信息 室内要素模型”(ISO 19164:2024)正式发布
    近日,我国牵头制定的国际标准“地理信息室内要素模型”(Geographicinformation-Indoorfeaturemodel)由国际标准化组织正式发布,标准编号为ISO19164:2024。基本信息:标准号:ISO19164:2024EN标准名称:地理信息—室内特征模型英文名称:Geographicinformation—Indoorfeatur......
  • ReorderableList
    目录简介常用委托事件代码示例简介列表重写的数据类,一般使用在Editor下常用委托事件委托名作用drawElementCallback用于绘制list里的每个elementdrawHeaderCallback用于绘制headerelementHeightCallback用于设置每个element的高度onAddCallbackelemen......