射频状况感知的音频缓冲的制作方法

文档序号:26103344发布日期:2021-07-30 18:15阅读:57来源:国知局
射频状况感知的音频缓冲的制作方法



背景技术:

一些计算设备可能能够将音频数据无线流传输到其他设备。例如,移动计算设备可能能够使用蓝牙或另一个无线链接(例如wi-fi)将音频数据无线流传输到一对无线耳机。由于不能保证通过无线链路成功进行数据传输,并且可能会出现延迟,因此某些设备(传输和接收两者)都可能包含用于存储要传输的数据或已接收的数据的缓冲器。即使在特定时间未接收到其他音频数据,接收设备也可以利用存储在其缓冲器中的音频数据在特定时间回放音频。只要在接收设备处的缓冲器耗尽之前接收了其他音频数据,接收设备就可以连续回放音频数据。



技术实现要素:

通常,本公开的技术针对用于防止在无线链路上的音频数据流中出现间隙的技术。在示例源设备处,源设备的音频源(例如,数字信号处理器)可以将音频数据提供给源设备的通信控制器,该通信控制器将音频数据块存储在缓冲器中。通信控制器通常以先进先出方案将来自缓冲器的块发送到吸收器(sink)设备,并且当从吸收器设备接收回对应的应答(ack)消息时,从缓冲器中去除块。如果没有针对所传输的特定块接收到对应的ack消息,则通信控制器可以重传该特定块。如果在缓冲器中积累了太多的块(例如,如果音频源保持向通信控制器提供音频数据,但是由于差的射频(rf)链路而未足够快地接收到ack消息,则会发生这种情况),通信控制器可能会从缓冲器中丢弃(drop)最旧的块,而没有传输过所丢弃的块。块的丢弃可能会导致音频间隙。

根据本公开的一种或多种技术,源设备的通信控制器可以基于源设备和吸收器设备之间的无线链路的状况,自动调整从源设备的音频源接收音频数据的速率。例如,通信控制器可以确定无线链路的当前状况(例如,基于缺乏ack消息的接收)。基于所确定的无线链路的状况,源设备的通信控制器可以向源设备的音频源施加“背压”,以便降低音频数据块被插入到源设备的缓冲器中的速率。通过降低将块插入缓冲器的速率,源设备的通信控制器可以避免必须从缓冲器中丢弃最旧的块。以这种方式,本公开的技术使源设备的通信控制器能够避免产生音频间隙。

在一个示例中,一种方法包括:由源设备的通信控制器从所述源设备的音频源接收要无线传输到吸收器设备的音频数据,其中,以一速率从所述音频源接收所述音频数据;通过所述通信控制器在缓冲器中将所述音频数据存储为音频块序列,其中,每个音频块包括针对相应输出时间的音频数据;使用所述源设备和所述吸收器设备之间的无线链路,由所述源设备向所述吸收器设备传输所述音频块序列中的音频块;确定无线链路的当前状况;并由所述通信控制器基于所述无线链路的当前状况自动调整从所述音频源接收音频数据的速率。

在另一示例中,源设备包括通信单元;音频源;通信控制器;以及至少一个非暂时性计算机可读存储介质,其存储指令,所述指令可由所述通信控制器执行以:从所述音频源以一速率接收要无线传输到吸收器设备的音频数据;在缓冲器中将所述音频数据存储为音频块序列,其中,每个音频块包括针对相应输出时间的音频数据;使所述通信单元经由所述源设备和所述吸收器设备之间的无线链路向所述吸收器设备传输所述音频块序列中的音频块;确定无线链路的当前状况;并基于所述无线链路的当前状况,自动调整从所述音频源接收音频数据的速率。

在另一示例中,一种非暂时性计算机可读存储介质,其存储指令,这些指令在被执行时使源设备的一个或多个处理器:以一速率从源设备的音频源接收要无线传输到吸收器设备的音频数据;在缓冲器中将所述音频数据存储为音频块序列,其中,每个音频块包括针对相应输出时间的音频数据;使所述源设备的通信单元经由所述源设备和所述吸收器设备之间的无线链路向所述吸收器设备传输所述音频块序列中的音频块;确定无线链路的当前状况;并基于无线链路的当前状况自动调整从音频源接收音频数据的速率。

在附图和以下描述中阐述了本公开的一个或多个示例的细节。根据说明书和附图以及根据权利要求书,本公开的其他特征、目的和优点将是显而易见的。

附图说明

图1是示出根据本公开的一个或多个方面的包括源设备和吸收器设备的示例无线音频流系统的概念图。

图2是示出根据本公开的一个或多个方面的示例源设备的框图,该示例源设备被配置为将音频数据无线地流传输到吸收器设备。

图3是示出根据本公开的一个或多个方面的示例吸收器设备的框图,该示例吸收器设备被配置为从源设备无线地流传输音频数据。

图4是示出根据本公开的一个或多个方面的示例源设备的示例操作的流程图,该示例源设备被配置为将音频数据无线地流传输到吸收器设备。

具体实施方式

图1是示出根据本发明的一个或多个方面的包括源设备2和吸收器设备4的示例无线音频流传输系统100的概念图。在其他示例中,系统100还可以包括其他外部设备,例如服务器设备、网络或其他相机设备。

在图1的示例中,源设备2可以是移动电话。但是,源设备2也可以是任何其他类型的计算设备,例如相机设备、平板电脑、个人数字助理(pda)、膝上型计算机、游戏系统、媒体播放器、电子书阅读器、电视平台、汽车导航系统或可穿戴计算设备(例如,计算机化手表、计算机化眼镜、计算机化手套)。如图1所示,源设备2包括音频源8、通信控制器10、数据缓冲器12、分组包装模块16、通信单元14和简档驱动器18。

音频源8可以将音频数据提供给源设备2的一个或多个其他组件。如下面进一步详细讨论的,音频源8可以将音频数据输出到通信控制器10,以无线传输到诸如吸收器设备4的吸收器设备。音频源8可以包括硬件路径和/或软件路径之一或两者。硬件路径的一个示例是输出音频数据(例如样本)的数字信号处理器(dsp)或应用dsp(adsp)。软件路径的一个示例是媒体服务器或其他服务(例如软件编码路径,诸如audioflinger),其在处理器上执行以输出音频数据。不考虑路径,音频源8可以响应从源设备2的另一个组件(诸如在源设备处执行的应用)接收到的命令,输出音频数据。

音频源8可以将音频数据输出为音频块序列。音频块序列可以是基于时间的序列,因为该序列的连续块对应于连续的音频回放时段。例如,音频源8可以输出包含要在第n个时间段期间回放的音频数据的音频块序列的第n个音频块和包含要在比第n个时间段晚的第(n+1)个时间段期间回放的音频数据的音频块序列的第(n+1)个音频块。

源设备2的一个或多个通信单元14可以通过在一个或多个网络上传输和/或接收网络信号来经由一个或多个有线和/或无线网络与外部设备通信。通信单元14的示例包括网络接口卡(例如,诸如以太网卡)、光收发器、射频收发器、gps接收器或可以发送和/或接收信息的任何其他类型的设备。通信单元14的其他示例可以包括短波无线电、蜂窝数据无线电、无线网络无线电(例如,wi-fi无线电、蓝牙无线电等)以及通用串行总线(usb)控制器。

通信控制器10可以执行各种操作来管理源设备2和诸如吸收器设备4的外部设备之间的通信。作为一个示例,通信控制器10可以从源设备2的一个或多个组件接收数据,并使通信单元14中的一个或多个将数据的表示无线传输到外部设备。作为另一示例,通信控制器10可以从通信单元14中的一个或多个接收已经从外部设备无线地接收到的数据。

在一些示例中,诸如在无线链路6是蓝牙链路的情况下,源设备2可以包括简档驱动器18,其可以管理来自源设备2的流音频数据的一个或多个方面。在一个特定示例中,简档驱动器18可能包括高级音频分发简档(a2dp)驱动器。简档驱动器18可以管理音频流的方面,诸如编解码器协商、比特率、重传以及任何服务质量参数。简档驱动器18的其他示例包括但不限于免提简档(hfp)和任何低能耗(le)音频简档。

源设备2可以包括音频源8和通信控制器10。音频源8和通信控制器10可以使用驻留在源设备2处和/或在源设备2处执行的软件、硬件、固件或硬件、软件和固件的混合来执行描述的操作。源设备2可以利用一个或多个处理器执行音频源8和通信控制器10。源设备2可以将音频源8和通信控制器10执行为在底层硬件上执行的虚拟机。音频源8和通信控制器10可以作为操作系统或计算平台的服务或组件来执行。模块8和10可以在计算平台的应用层处作为一个或多个可执行程序执行。音频源8和通信控制器10可以以其他方式对于源设备2远程布置并且可由源设备2远程访问,例如作为在网络云中的网络处操作的一个或多个网络服务。

通信控制器10和音频源8可以在源设备2的不同架构层(例如,堆栈的不同层)处操作。例如,通信控制器10可以在第一架构层处操作,并且音频源8可以在与第一架构层相邻或在其之上的第二架构层处操作。换句话说,通信控制器10可以在第i个架构层上操作,并且音频源8可以在源设备2的至少第(i-1)个架构层处操作。

在图1的示例中,吸收器设备4可以是一对无线耳机。然而,吸收器设备4也可以是任何其他类型的计算设备,诸如移动电话、车辆、无线扬声器、相机设备、平板计算机、个人数字助理(pda)、膝上型计算机、游戏系统、媒体播放器、电子书阅读器、电视平台或可穿戴计算设备(例如,计算机化手表、计算机化眼镜、计算机化手套)。如图1所示,吸收器设备4包括音频吸收器24、通信控制器20、数据缓冲器22、分组解包模块28、通信单元30和简档驱动器26。

通信控制器20和通信单元30可执行与源设备2的通信控制器10和通信单元14互补的操作。作为一个示例,通信控制器20可从吸收器设备4的一个或多个组件接收数据,并且使通信单元30中的一个或多个将数据的表示无线传输到外部设备,诸如源设备2。作为另一示例,通信控制器20可以从通信单元30中的一个或多个接收已从诸如源设备2的外部设备无线接收的数据。

在一些示例中,诸如在无线链路6是蓝牙链路的情况下,吸收器设备4可以包括简档驱动器26,该简档驱动器26可以执行与源设备2的简档驱动器18的互补功能。在一个特定示例中,简档驱动器26可以包括高级音频分发简档(a2dp)驱动器。简档驱动器26可以管理音频流的方面,诸如编解码器协商、比特率、重传以及任何服务质量参数。简档驱动器26的其他示例包括但不限于免提简档(hfp)和任何低能耗(le)音频简档。

音频接收器24可以执行与音频源8互补的操作。例如,音频接收器24可以将接收到的音频数据渲染为一个或多个音频信号,该音频信号可以被一个或多个扬声器放大并回放。

吸收器设备4可以包括通信控制器20和音频吸收器24。通信控制器20和音频吸收器24可以使用驻留在吸收器设备4中和/或在吸收器设备4处执行的软件、硬件、固件或硬件、软件和固件的混合来执行描述的操作。吸收器设备4可以利用一个或多个处理器执行通信控制器20和音频吸收器24。吸收器设备4可以将通信控制器20和音频吸收器24执行为在底层硬件上执行的虚拟机。通信控制器20和音频吸收器24可以作为操作系统或计算平台的服务或组件来执行。通信控制器20和音频吸收器24可以作为一个或多个可执行程序在计算平台的应用层处执行。通信控制器20和音频吸收器24可以以其他方式对于吸收器设备4远程布置并且可以被吸收器设备4远程访问,例如作为在网络云中在网络处操作的一个或多个网络服务。

在操作中,源设备2的通信控制器10和吸收器设备4的通信控制器20可以协商并建立无线链路6。例如,通信控制器10和通信控制器20可以分别使通信单元14和通信单元30交换数据以建立无线链路6。无线链路6的示例包括但不限于蓝牙链路(包括蓝牙le)、wi-fi链路等。

通信控制器10可以从源设备2的一个或多个组件接收数据。例如,通信控制器10可以从音频源8接收音频数据。如上所述,音频数据可以是音频块序列的形式。通信控制器10可以实现分组包装模块16,其可以包装/封包/封装或以其他方式将音频块插入分组中。分组可以每一个包含音频块中的一个或多个。通信控制器10可以使通信单元14将分组无线地传输到外部设备。例如,通信控制器10可以使通信单元14经由无线链路6将分组无线地传输到吸收器设备4。

吸收器设备4的通信单元30和通信控制器20可以从源设备2接收分组。当成功接收到分组时,通信控制器20可以使通信单元30向源设备2输出安全接收的应答(例如,通过无线链接6)。例如,通信控制器20可以使通信单元30输出应答消息,也称为ack消息。

通信控制器20可以实现分组解包模块28以解包/解封或以其他方式从分组中去除音频块。通信控制器20可以将去除的音频块提供给音频吸收器24,音频吸收器24可以在包括在吸收器设备4中或连接到吸收器设备4的扬声器处回放或引起音频块中包括的音频数据的回放。通过这种方式,源设备2可以将音频数据流传输到吸收器设备4。

在一些示例中,通信控制器10从音频源8接收音频数据的速率可能不总是与通信控制器10使通信单元14将分组无线传输到吸收器设备4的速率匹配。因此,通信控制器10可以实现一个或多个缓冲器,诸如数据缓冲器12,以在传输分组之前存储音频块和/或生成的分组。

数据缓冲器12可以具有能够在特定时间段内存储音频块或对相应的分组的大小。例如,数据缓冲器12可能能够存储100毫秒(ms)、250ms、300ms、500ms或任何其他数量的音频块或对应的分组。

通信控制器10可以按照先进先出(fifo)的原理来操作数据缓冲器12。例如,通信控制器10可以确定要传输的下一个块/分组是数据缓冲器12中最旧的块/分组(即,最不新近地存储在数据缓冲器12中的块/分组)。

如上所述,当成功接收到分组时,通信控制器10可以从吸收器设备4接收应答消息。响应于确定特定的音频分组已经被吸收器设备4成功接收,通信控制器10可以从数据缓冲器12中去除与该特定的音频数据分组相对应的音频块。作为一个示例,在数据缓冲器12存储解包的(即,未分组化的)音频块的情况下,通信控制器10可以响应于确定封装了音频块n的分组已被吸收器设备4成功接收到(例如,响应于接收到针对分组的ack消息),从数据缓冲器12中去除音频块n。作为另一个示例,在数据缓冲器12存储包装的(即,分组化的)音频块的情况下,通信控制器10可以响应于确定封装了音频块n的分组被吸收器设备4成功接收(例如,响应于接收到针对该分组的ack消息),从数据缓冲器12中去除封装了音频块n的分组。从数据缓冲器12中去除块/分组可以被称为从数据缓冲器12中排出分组。

在通信控制器10确定分组被丢弃(即,吸收器设备4未成功接收到)的情况下,通信控制器10可能尝试将分组重传到吸收器设备4。例如,响应于在传输特定分组之后的一时间段内没有接收到针对该特定分组的ack消息,通信控制器10可以尝试将该分组重传到吸收器设备4。另外或可替代地,通信控制器10可以响应于接收到针对特定分组的否定应答(nack)消息,确定特定分组被丢弃。例如,响应于接收到针对特定分组的nack消息,通信控制器10可以尝试将分组重传到吸收器设备4。

分组的丢弃可能是由于无线链路6的不良信道状况的结果。由于许多情况,无线链路6可能遭受不良的信道状况的影响。一些示例情况包括但不限于电磁(em)噪声、低信号强度、源设备2和吸收器设备4之间的大的或动态的距离、源设备2处于包围(例如口袋、袋子)中等。在具有挑战性的射频(rf)环境中,无线链路6可能被视为信道状况不良。

在任何情况下,分组的丢弃都可以降低通信控制器10从数据缓冲器12中排出(即,去除)块/分组的速率。最终,如果通信控制器10从数据缓冲器12中排出块/分组的速率小于将块/分组添加到数据缓冲器12(例如,存储在其中)的速率,则数据缓冲器12可能变满。当数据缓冲器12是满的时,通信控制器10可以执行一个或多个动作以释放数据缓冲器12中的空间。例如,响应于确定数据缓冲器12是满的,通信控制器10可以从数据缓冲器12中去除陈旧的块/分组。陈旧的块/分组可以是存储在数据缓冲器12中的最旧的块/分组。

陈旧的块/分组的去除可以释放数据缓冲器12中的空间,使得通信控制器10可以继续存储从音频源8接收的新的音频数据(例如,作为块或分组)。一旦无线链路6的信道状况改善(例如,信道打开),通信控制器10就可以恢复将音频分组传输到吸收器设备4。但是,由去除的陈旧块/分组所包含的音频数据将丢失。由于去除的陈旧块/分组包含要在特定时间段期间回放的音频数据,所以吸收器设备4的用户可以感知到音频数据的回放中的间隙。

根据本公开的一种或多种技术,通信控制器10可以基于无线链路6的状况自动调整从音频源8接收音频数据的速率。例如,通信控制器10可以确定无线链路的当前状况(例如,基于缺乏ack消息的接收)。基于所确定的状况,通信控制器10可以向音频源8施加“背压”,以便降低音频源8输出音频数据块的速率。通过降低音频源8输出音频数据块的速率,通信控制器10可以降低将音频数据块插入数据缓冲器12的速率。通过降低将块插入数据缓冲器12的速率,通信控制器10可以避免必须从数据缓冲器12中丢弃最旧的块。以这种方式,本公开的技术使通信控制器10能够避免产生音频间隙。

图2是示出根据本公开的一个或多个方面的示例源设备的框图,该示例源设备被配置为将音频数据无线地流传输到吸收器设备。下面在图1的系统100的上下文中描述图2的源设备2。图2仅示出了源设备2的一个特定示例,并且在其他实例中可以使用源设备2的许多其他示例。在图2的示例中,源设备2可以是可穿戴计算设备、移动计算设备或能够流传输音频数据的任何其他计算设备。图2的源设备2可以包括示例源设备2中包括的组件的子集,或者可以包括图2中未示出的附加组件。

如在图2的示例中所示,源设备2包括用户界面设备42(“uid42”)、一个或多个处理器36、一个或多个输出设备38、一个或多个输入设备40、一个或多个通信单元14、电池44和一个或多个存储设备46。存储设备46还可以包括音频源8、通信控制器10、数据缓冲器12和信道状况模块13。

通信信道48可以互连组件14、36、38、40、42、44和46中的每一个,以进行组件间通信(物理地,通信地和/或可操作地)。在一些示例中,通信信道48可以包括电力总线、系统总线、网络连接、进程间通信数据结构或用于传送数据或传递电力的任何其他方法。

一个或多个输出设备38可以生成输出。输出的示例是触觉、音频和视频输出。在一个示例中,输出设备38包括存在敏感显示器、声卡、视频图形适配器卡、扬声器、阴极射线管(crt)监视器、液晶显示器(lcd)或任何其他类型的用于生成到人或机器的输出的设备。

一个或多个输入设备40可以接收输入。输入的示例是触觉、音频和视频输入。在一些示例中,输入设备40包括存在敏感显示器、触敏屏幕、鼠标、键盘、语音响应系统、摄像机、麦克风、传感器或用于检测来自人或机器的输入的任何其他类型的设备。

一个或多个通信单元14类似于图1的通信单元14并且可以包括图1的通信单元14的所有相同特征中的一些。例如,通信单元14可以通过在一个或多个网络上传输和/或接收网络信号,经由一个或多个有线和/或无线网络与外部设备通信。

uid42可以包括输入设备40和/或输出设备38的功能性。在图2的示例中,uid42可以是或可以包括存在敏感输入设备。在一些示例中,存在敏感输入设备可以在屏幕处和/或附近检测对象。作为一个示例范围,存在敏感输入设备可以检测到距离屏幕2英寸或更短的对象,例如手指或触笔。存在敏感输入设备可以确定在其上检测到对象的屏幕的位置(例如,(x,y)坐标)。在另一个示例范围中,存在敏感输入设备可以检测到距离屏幕六英寸或更小的对象,并且其他范围也是可能的。存在敏感输入设备可以使用电容、感应和/或光学识别技术来确定用户手指选择的屏幕的位置。在一些示例中,存在敏感输入设备还例如在显示器处使用如关于输出设备38所描述的触觉、音频或视频刺激来向用户提供输出。

源设备2内的一个或多个存储设备46可以存储信息以供在源设备2的操作期间进行处理(例如,源设备2可以存储模块8、10和13在执行期间在源设备2处进行访问的数据(例如,数据缓冲器12处的音频块和/或分组))。在一些示例中,存储设备46是临时存储器,这意味着存储设备46的主要目的不是长期存储。源设备2上的存储设备46可以被配置为作为易失性存储器将信息进行短期存储,因此,如果断电,则不会保留存储的内容。易失性存储器的示例包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)以及本领域中已知的其他形式的易失性存储器。

在一些示例中,存储设备46包括一个或多个计算机可读存储介质。存储设备46可以被配置为存储比易失性存储器更大的信息量。存储设备46可以进一步被配置用于作为非易失性存储空间来长期存储信息,并且在通电/断电周期之后保留信息。非易失性存储器的示例包括磁性硬盘、光盘、闪存或电可编程存储器(eprom)或电可擦除可编程(eeprom)存储器的形式。存储设备46可以存储与模块8、10、13和缓冲器12相关联的程序指令和/或信息(例如,数据)。

一个或多个处理器36可以在源设备2内实现功能性和/或执行指令。例如,源设备2上的处理器36可以接收并执行由存储设备46存储的执行模块8、10和13的功能性的指令。处理器36可以执行模块8、10和13的指令,以执行源设备2的各种动作或功能。

音频源8和通信控制器10可以是来自图1的音频源8和通信控制器10的附加示例,包括来自图1的音频源8和通信控制器10的相似的和一些或全部相同的功能性。例如,音频源8可以表示被配置为向源设备2的一个或多个其他组件提供音频数据的软件路径。

数据缓冲器12可以是图1的数据缓冲器12的示例并且可以包括类似于图1的数据缓冲器12的功能性。例如,数据缓冲器12可以存储音频块或封装的音频块,以流传输到诸如图1的吸收器设备4的外部设备。

如上所述,并且根据本公开的一种或多种技术,通信控制器10可以基于源设备2与外部设备(例如吸收器设备4)之间的无线链路的状况,自动调整从音频源8接收音频数据的速率。例如,信道状况模块13可以基于经由无线链路传输的音频数据分组被丢弃的速率或数量来确定无线链路的当前状况。如上所述,当自从传输分组以来的阈值时间段内未接收到应答消息时,可以认为该分组被丢弃。信道状况模块13可以将分组丢弃的速率确定为每单位时间丢弃的分组的数量(例如,#packets/second)。附加地或替代地,信道状况模块13可以基于无线链路的吞吐量来确定无线链路的当前状况。例如,信道状况模块13可以确定每单位时间可以经由无线链路成功传输的分组数量。

信道状况模块13可以将无线链路的当前状况的指示输出到通信控制器10,该通信控制器10可以基于该指示自动调整从音频源8接收音频数据的速率。通常,在信道状况模块13指示无线链路的当前状况可能导致从数据缓冲器12中去除陈旧的块/分组的情况下,通信控制器10可以降低从音频源8接收音频数据的速率。例如,通信控制器10可以响应于确定分组丢弃速率大于分组丢弃速率阈值来降低从音频源8接收音频数据的速率。作为另一示例,响应于确定无线链路的吞吐量低于正在接收音频数据的当前速率,通信控制器10可以降低从音频源8接收音频数据的速率。

自动调整接收音频数据的速率可能并不总是会降低。例如,通信控制器10可以在第一时间降低速率,并且在接收到信道状况的更新指示(例如,指示较低的丢弃率和/或较高的吞吐量)之后,在第二时间增加接收音频数据的速率。

通信控制器10可以以多种方式调整接收音频数据的速率。作为一个示例,通信控制器10向音频源8输出指示,该指示指示通信控制器10当前是否正在接受/接收附加音频数据(例如,将被无线传输)。例如,为了降低速率,通信控制器10可以向音频源8输出指示,该指示指示通信控制器10当前不在接受/接收附加音频数据(例如,通信控制器10可以阻止)。类似地,为了增加速率,通信控制器10可以向音频源8输出指示,该指示指示通信控制器10当前正在接受/接收附加音频数据。当通信控制器10指示它当前不在接受/接收附加音频数据时,音频源8可以“阻止”并保持数据,直到通信控制器10指示它当前正在接受/接收附加音频数据为止。

作为另一个示例,通信控制器10可以确定期望的速率,并且向音频源8输出对于音频源8的请求,以按照期望的速率将附加的音频数据输出到通信控制器10。通信控制器10可以基于一个或多个因素来确定期望的速率。一些示例因素包括但不限于音频源8正在输出音频数据的当前速率,无线链路的当前状况(例如,丢弃的#packets/sec和/或#packets/sec吞吐量)、当前排出速率(例如,成功传输的#packets/sec)、数据缓冲器12的大小以及当前存储在数据缓冲器12中的数据量。作为一个示例,通信控制器10可以将期望的速率设置为与无线链路的当前吞吐量相同速率。作为另一个示例,通信控制器10可以将期望速率确定为当前排出速率乘以取决于链路质量的某个缩放因子beta。如果链路质量理想,则beta=1并可能对于差的链路质量而缩放至~0。

如上所述,音频源8可以在通信控制器10上的一层(例如,堆栈的较高层)操作。随着通信控制器10使音频源8改变音频源8输出音频数据块的速率,通信控制器10可以被视为向音频源8施加“背压”。如上所述,通过自动调整音频源8向通信控制器10输出音频数据块的速率,通信控制器10可以避免必须从数据缓冲器12中删除或以其他方式去除陈旧的分组/块。以这种方式,本公开的技术使通信控制器10能够避免在音频回放中产生间隙。

在一些示例中,数据缓冲器12的大小可以是静态的。例如,无论其他状况如何,数据缓冲器12的大小可以相同。在一些示例中,数据缓冲器12的大小可以是动态的。例如,在运行时,通信控制器10可以动态地调整数据缓冲器12的大小。通信控制器10可以请求存储设备46将数据缓冲器12的大小重新调整(例如,改变存储器或存储分配)到固定的长度增量(例如100ms、250ms、500ms)或最小值和最大值之间的任何整数值。

通信控制器10可以在app级别(诸如,视频流应用,音频流应用等)确定从音频源8接收的音频数据的来源。通信控制器10可以基于音频数据来源的确定动态调整数据缓冲器12的大小。原始音频可能会受益于更大的缓冲器大小。但是,组合的视频+音频数据可能需要a/v同步,并且大的缓冲器可能会引入时延问题。

作为一个特定示例,用户可以向源设备2提供用户输入以启动视频流应用。来自视频流应用的视频可以被显示在源设备2的显示器处,而来自视频流应用的音频可以被流传输到吸收器设备4。通信控制器10可以确定a/v同步应该优先考虑并且选择数据缓冲器12的大小。作为一个示例,通信控制器10可以基于一些启发式+a/v同步考虑来选择数据缓冲器12的大小。作为另一示例,通信控制器10可以将数据缓冲器12的大小选择为a/v同步应用的预定缓冲器大小。作为另一示例,视频流应用可以提供所请求的缓冲器大小,并且通信控制器10可以将数据缓冲器12的大小设置为所请求的缓冲器大小。

图3是示出根据本公开的一个或多个方面的示例吸收器设备的框图,该吸收器设备被配置为从源设备无线地流传输音频数据。图3的吸收器设备4下面在图1的系统100的上下文中描述。图3仅示出了吸收器设备4的一个特定示例,并且在其他情况下可以使用吸收器设备4的许多其他示例。在图2的示例中,吸收器设备4可能是一对无线耳机。然而,吸收器设备4也可以是任何其他类型的移动计算设备,诸如移动电话、车辆、无线扬声器、相机设备、平板计算机、个人数字助理(pda)、膝上型计算机、游戏系统、媒体播放器、电子书阅读器、电视平台或可穿戴计算设备(例如,计算机化手表、计算机化眼镜、计算机化手套)。图3的吸收器设备4可以包括示例吸收器设备4中包括的组件的子集,或者可以包括图3中未示出的附加组件。

如在图3的示例中所示,吸收器设备4包括一个或多个处理器50、一个或多个输出设备56、一个或多个输入设备52、一个或多个通信单元30、电池54以及一个或多个存储设备58。存储设备58还可包括音频吸收器24、通信控制器20和数据缓冲器12。

通信信道60可以互连组件30、50、52、54、56和58中的每一个,以进行组件间通信(物理地,通信地和/或可操作地)。在一些示例中,通信信道60可以包括电力总线、系统总线、网络连接、进程间通信数据结构或用于传送数据或传递电力的任何其他方法。

一个或多个输出设备56可以生成输出。输出的示例是触觉、音频和视频输出。在一个示例中,输出设备38包括存在敏感显示器、声卡、视频图形适配器卡、扬声器、阴极射线管(crt)监视器、液晶显示器(lcd)或任何其他类型的用于生成到人或机器的输出的设备。如图3所示,输出设备38包括扬声器62。

一个或多个输入设备52可以接收输入。输入的示例是触觉、音频和视频输入。在一些示例中,输入设备52包括存在敏感显示器,触敏屏幕、鼠标、按钮、开关、键盘、语音响应系统、摄像机、麦克风、传感器或用于检测来自人或机器的输入的任何其他类型的设备。

一个或多个通信单元30类似于图1的通信单元30并且可以包括图1的通信单元30的所有相同特征中的一些。例如,通信单元30可以通过在一个或多个网络上传输和/或接收网络信号来经由一个或多个有线和/或无线网络与外部设备通信。

吸收器设备4内的一个或多个存储设备58可以存储在吸收器设备4的操作期间进行处理的信息(例如,吸收器设备4可以存储模块20和24在吸收器设备4处执行期间访问的数据(例如,数据缓冲器处22的数据块和/或分组))。在一些示例中,存储设备58是临时存储器,这意味着存储设备58的主要目的不是长期存储。吸收器设备4上的存储设备58可以被配置作为易失性存储器用于信息的短期存储,因此如果断电则不保留所存储的内容。易失性存储器的示例包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)以及本领域中已知的其他形式的易失性存储器。

在一些示例中,存储设备58包括一个或多个计算机可读存储介质。存储设备58可以被配置为存储比易失性存储器大的信息量。存储设备58可以进一步被配置作为非易失性存储空间来用于长期存储信息,并且在通电/断电周期之后保留信息。非易失性存储器的示例包括磁性硬盘、光盘、软盘、闪存或电可编程存储器(eprom)或电可擦可编程(eeprom)存储器的形式。存储设备58可以存储与模块20和24以及缓冲器22相关联的程序指令和/或信息(例如,数据)。

一个或多个处理器50可以在吸收器设备4内实现功能性和/或执行指令。例如,吸收器设备4上的处理器50可以接收并执行由存储设备58存储的执行模块20和24的功能性的指令。处理器50可以执行模块20和24的指令以引起执行吸收器设备4的各种动作或功能。

音频吸收器24和通信控制器20可以是来自图1的音频吸收器24和通信控制器20的附加示例,包括来自图1的音频吸收器24和通信控制器20的相似和一些或全部相同的功能。例如,音频吸收器24可以表示被配置为从通信控制器20接收音频数据以供扬声器62回放的软件路径。

数据缓冲器22可以是图1的数据缓冲器22的示例并且可以包括类似于图1的数据缓冲器22的功能。例如,数据缓冲器22可以存储从诸如图1的源设备2的外部设备流传输的音频块或封装的音频块。

如上所述,吸收器设备4可以经由无线链路从外部设备接收分组。例如,吸收器设备4可以经由无线链路6从源设备2接收封装了音频数据的块的分组。响应于接收到分组,通信控制器20可以使通信单元30将接收的应答输出到外部设备。如上所述,应答可以是ack消息的形式。

图4是示出根据本公开的一个或多个方面的示例源设备的示例操作的流程图,该示例源设备被配置为将音频数据无线地流传输到吸收器设备。在图1的系统100以及图1和图2的源设备2的上下文中描述了源设备2的操作。

源设备2的通信控制器10可以以一速率从源设备2的音频源8接收要无线传输到吸收器设备的音频数据(402)。例如,通信控制器10可以接收音频块序列,每个音频块均包含要在一个或多个相应时间段回放的音频数据。换句话说,每个音频块可以包括至少一个相应的输出时间的音频数据。

通信控制器10可以将接收到的音频数据存储在数据缓冲器12中(404)。例如,通信控制器10可以将接收到的音频数据作为音频块序列存储在数据缓冲器12中。在一些示例中,通信控制器10可以在存储在数据缓冲器12中之前将将音频块封装到分组中。

源设备2可以使用无线链路向吸收器设备传输音频块序列的音频块(406)。例如,通信控制器10可以使通信单元14中的一个或多个经由无线链路6将音频块传输到吸收器设备4。如上所述,在一些示例中,通信控制器10可以在使通信单元14中的一个或多个传输音频数据分组之前将音频块封装进音频数据分组。

源设备2可以确定无线链路的当前状况(408)。例如,图2的源设备2的信道状况模块13可以基于丢弃的分组数量和/或无线链路的当前吞吐量中的一个或两者来确定无线链路的当前状况。

通信控制器10可以确定是否调整从音频源接收音频数据的速率(410)。例如,通信控制器10可以基于无线链路的当前状况来确定降低、增加或不改变速率。如上所述,通常,在无线链路的当前状况可能导致从数据缓冲器12中去除陈旧的块/分组的情况下,通信控制器10可以确定降低从音频源8接收音频数据的速率。相反,在无线链路的当前状况可能会导致数据缓冲器12的下溢的情况下,通信控制器10可以确定增加从音频源8接收音频数据的速率。此外,在通信控制器10确定既不降低也不增加速率的情况下,通信控制器10可以确定不改变速率。

响应于确定不调整速率(410的“否”分支),通信控制器10可以继续以不变的速率接收音频数据(402)。响应于确定调整速率(410的“是”分支),通信控制器10可以调整速率(412)并以改变的速率接收音频数据(402)。如上所述,通信控制器10可以以多种方式调整速率,包括但不限于请求音频源以由通信控制器10指定的速率输出音频数据,以及向音频源通知通信控制器10当前是否正在接受要无线传输到吸收器设备的附加音频数据。作为一个示例,通信控制器10可以请求音频源8调整音频源8正向通信控制器10提供采样的速率。响应于该请求,音频源8可以直接调整速率,或者可以执行一个或多个其他动作(例如,在堆栈的任何级别)以调整速率。此类动作的示例是导致app停止从其源(例如服务器)拉出新的音频样本。

以下编号示例可以示出本公开的一个或多个方面:

示例1.一种方法,包括:由源设备的通信控制器从所述源设备的音频源接收要无线传输到吸收器设备的音频数据,其中,以一速率从所述音频源接收所述音频数据;通过所述通信控制器在缓冲器中将所述音频数据存储为音频块序列,其中,每个音频块包括针对相应输出时间的音频数据;使用所述源设备和所述吸收器设备之间的无线链路,由所述源设备向所述吸收器设备传输所述音频块序列中的音频块;确定所述无线链路的当前状况;并由所述通信控制器基于所述无线链路的当前状况自动调整从所述音频源接收音频数据的速率。

示例2.根据示例1所述的方法,其中,自动调整接收所述音频数据的速率包括:由所述通信控制器向所述音频源输出请求以调整所述音频源输出要无线传输到所述吸收器设备的音频数据的速率。

示例3.根据示例1所述的方法,其中,自动调整接收所述音频数据的速率包括:由所述通信控制器向所述音频源输出所述通信控制器当前是否正在接收要无线传输到所述吸收器设备的附加音频数据的指示。

示例4.根据示例1-3中任一项所述的方法,其中,传输所述音频块包括:将所述音频块序列中的音频块封装在音频数据分组序列中的音频数据分组中;以及使用所述无线链路传输所述音频数据分组。

示例5.根据示例4所述的方法,其中,确定所述无线链路的当前状况包括:确定在使用所述无线链路传输期间所述音频数据分组正被丢弃的速率;以及基于所述音频数据分组正被丢弃的速率来确定所述无线链路的当前状况。

示例6.根据示例5所述的方法,该方法还包括:由所述源设备从所述吸收器设备使用所述无线链路接收一个或多个应答消息,每个相应的应答消息指示所述吸收器设备接收到所述音频数据分组序列的相应的音频数据分组;基于是不是与所述音频数据分组序列中的特定音频数据分组相对应的一个或多个应答消息中的应答消息,确定所述特定音频数据分组是否已经被所述吸收器设备丢弃或成功接收,其中,确定所述音频分组被丢弃的速率包括基于所述特定音频数据分组是否已经被所述吸收器设备丢弃或成功接收来确定所述音频分组正被丢弃的速率。

示例7.根据示例1-6中的任一项所述的方法,还包括:响应于确定所述特定音频分组已经被所述吸收器设备成功接收,由所述通信控制器从所述缓冲器中去除与所述特定音频数据分组相对应的音频块。

示例8.根据示例1-7中的任一项所述的方法,还包括:响应于确定所述缓冲器是满的,由所述通信控制器从所述缓冲器中去除与所述音频数据块序列中最旧的音频数据分组相对应的音频数据块。

示例9.根据示例1-8中的任一项所述的方法,其中,所述无线链路包括蓝牙链路。

示例10.一种源设备,包括:通信单元;音频源;通信控制器;以及至少一个非暂时性计算机可读存储介质,其存储指令,该指令可由通信控制器执行以:从所述音频源以一速率接收要无线传输到吸收器设备的音频数据;在缓冲器中将所述音频数据存储为音频块序列,其中,每个音频块包括针对相应输出时间的音频数据;使所述通信单元经由所述源设备和所述吸收器设备之间的无线链路向所述吸收器设备传输所述音频块序列中的音频块;确定所述无线链路的当前状况;并基于所述无线链路的当前状况,自动调整从所述音频源接收音频数据的速率。

示例11.根据示例10所述的源设备,其中,使通信控制器自动调整接收音频数据的速率的指令包括使通信控制器向音频源输出请求以调整音频源输出要无线传输到吸收器设备的音频数据的速率的指令。

示例12.根据示例10所述的源设备,其中,使通信控制器自动调整接收音频数据的速率的指令包括使通信控制器向音频源输出通信控制器当前是否正在接收要无线传输到吸收器设备的其他音频数据的指示的指令。

示例13.根据示例10至12中的任一项所述的源设备,其中,使所述通信控制器传输音频块的指令包括使所述通信控制器将所述音频块序列的音频块封装在音频数据分组序列中的音频数据分组中;并使得通信单元使用无线链路传输音频数据分组的指令。

示例14.根据示例13所述的源设备,其中,使所述通信控制器确定所述无线链路的当前状况的指令包括使所述通信控制器执行以下操作的指令:确定在使用所述无线链路传输期间所述音频数据分组被丢弃的速率;并基于所述音频数据分组被丢弃的速率来确定所述无线链路的当前状况。

示例15.根据示例14所述的源设备,还包括使通信控制器执行以下操作的指令:从所述吸收器设备使用所述无线链路接收一个或多个应答消息,每个相应的应答消息指示所述吸收器设备接收到所述音频数据分组序列的相应的音频数据分组;并基于是不是与所述音频数据分组序列中的特定音频数据分组相对应的一个或多个应答消息中的应答消息,确定所述特定音频数据分组是否已经被所述吸收器设备丢弃或成功接收。

示例16.根据示例10-15中的任一项所述的源设备,还包括使通信控制器执行以下操作的指令:响应于确定所述特定音频分组已经被所述吸收器设备成功接收,从所述缓冲器中去除与所述特定音频数据分组相对应的音频块。

示例17.根据示例10-16中的任一项所述的源设备,还包括使通信控制器执行以下操作的指令:响应于确定所述缓冲器是满的,从所述缓冲器中去除与所述音频数据块序列中最旧的音频数据分组相对应的音频数据块。

示例18.根据示例10-17中的任一项所述的源设备,其中,所述无线链路包括蓝牙链路。

示例19.一种非暂时性计算机可读存储介质,其存储指令,该指令在被执行时使源设备的通信控制器从源设备的音频源接收要无线传输到吸收器设备的音频数据,其中以一速率从音频源接收音频数据;将音频数据作为音频块序列存储在缓冲器中,其中每个音频块包括相应输出时间的音频数据;使源设备的通信单元使用源设备和吸收器设备之间的无线链路,将音频块序列的音频块传输到吸收器设备;确定无线链路的当前状况;并基于无线链路的当前状况自动调整从音频源接收音频数据的速率。

在一个或多个示例中,可以以硬件、软件、固件或其任何组合来实现所描述的功能。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输,并且可以由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质的有形介质,或者通信介质,包括例如根据通信协议来促进将计算机程序从一个地方转移到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波的通信介质。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索指令、代码和/或数据结构以实现本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。

通过示例而非限制的方式,这种计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储或其他磁性存储设备、闪存或任何其他可以用于以指令或数据结构形式存储所需程序代码并且可以由计算机访问的其他介质。同样,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或无线技术(例如红外、无线电和微波)从网站、服务器或其他远程源传输指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、dsl或诸如红外、无线电和微波的无线技术。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬态介质,而是针对非瞬态的有形存储介质。本文使用的磁盘和光盘包括光盘(cd)、激光光盘、光盘、数字多功能光盘(dvd)、软盘和蓝光光盘,其中磁盘通常以磁性方式复制数据,而光盘则通过激光光学方式复制数据。上述的组合也应包括在计算机可读介质的范围内。

指令可由一个或多个处理器执行,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其他等效的集成处理器或分立逻辑电路。因此,如本文所使用的,术语“处理器”可以指任何前述结构或适合于实现本文所描述的技术的任何其他结构。另外,在一些方面,本文所述的功能可以在专用硬件和/或软件模块内提供。同样,该技术可以在一个或多个电路或逻辑元件中完全实现。

可以在包括无线手持机、集成电路(ic)或一组ic(例如,芯片组)在内的多种设备或装置中实现本公开的技术。在本发明中描述各种组件、模块或单元以强调经配置以执行所公开的技术的装置的功能方面,但不一定需要由不同硬件单元来实现。相反,如上所述,各种单元可以组合在硬件单元中,或者由互操作的硬件单元的集合来提供,包括与合适的软件和/或固件结合的如上所述的一个或多个处理器。

已经描述了本公开的各种示例。预期所描述的系统、操作或功能的任何组合。这些和其他示例在所附权利要求的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1