语音数据传输方法_2

文档序号:9690886阅读:来源:国知局
发送缓冲队列。至 此,高速PCI发送缓冲队列中已经存入以平面格式音频段为单位的语音数据,等待发送。
[0030] 在传输过程中,为每个流媒体写操作数据包设置特定地址和数据长度,语音数据 以段为单位进行循环发送。采用由协处理器发送读操作请求方式读取核心处理器处理后的 语音数据,核心处理器仅需对读操作请求进行读取响应即可,减小核心处理器在传输过程 中的时间与资源开销,使得核心处理器可以专注于音频处理工作。其传输过程包括,为每个 读操作数据包设置特定地址和长度,语音数据按段循环发送。将频段数据划分为多个读操 作数据包,包存储地址可以由段基地址、频段偏移量和段偏移量计算获得。
[0031] 预定义核心处理器数据存储单元包括写操作和读操作的存储地址计算。以写操作 为例进行说明。协处理器发送的每个写操作数据包中携带的数据将按顺序写入核心处理器 的音频缓冲队列中的连续存储空间。因此,设置缓冲队列中数据按音频段排列;每个写操作 数据包中数据只能包含一个频段,数据存储地址依次连续递增;在核心处理器音频缓冲队 列中数据按音频段存储,每段数据中同一频段连续存储,组成各频段矩阵,便于核心处理器 完成首频处理。
[0032] 本发明在传输语音数据过程中仅使用写操作、读操作和应答这3种操作,其中应答 操作仅用来发送中断信号。具体实现过程如下:
[0033] (1)在语音数据由协处理器写入核心处理器过程中,协处理器作为发送方,将模数 转换后的数字音频通过写操作写入核心处理器对应的片外存储区,音频在写片外存储区 时,核心处理器禁止对该存储区进行操作。当协处理器写完一段数据之后,发送一个应答操 作,通知核心处理器可以对该段数据进行处理,保证协处理器与核心处理器之间的同步。为 了保证核心处理器上处理的连续性,在核心处理器上设置了 8段缓冲队列,可以循环对数据 段进行处理。
[0034] (2)在语音数据由核心处理器写入协处理器的过程中,每当核心处理器处理完一 段音频之后,发送应答操作通知协处理器可以进行数据读取。协处理器接收到该同步信号 之后,作为发送方,将核心处理器处理后的语音数据通过读操作读入协处理器的缓冲队列 中。在实际运行过程中,为保证数模转换后音频的连续性,必须维持协处理器缓冲队列不 空,同时要兼顾数据采集的码率。为了防止出现同步问题,设定在核心处理器处理完两段数 据后向协处理器发送应答,使其进行读操作。在读的过程中,协处理器只需维护自己的缓冲 队列即可。在设计状态机实现读写功能时,以读优先的方式进行操作,设置当缓冲队列中的 数据小于预设字节数时,进行读操作,否则,进行写操作。在读数据的过程中,不能进行写操 作,但此时麦克风的模拟音频信号却仍然在实时输入,为了保证读数据的时间内采集用的 缓冲队列不溢出需要计算缓冲队列的最大值。
[0035] 具体控制过程如下:
[0036] (1)由于音频是以段为单位进行采集并传输到缓冲队列的,因此,为保证段数据结 构的完整性,当缓冲队列中数据不少于一段且此时没有读请求时,可发送数据,即完成一次 流媒体写操作。
[0037] (2)在协处理器向核心处理器发送数据时,当完成一段数据的传输且此时没有读 请求时,即可通过发送应答操作通知核心处理器处理接收到的当前段数据;在协处理器从 核心处理器读取数据过程中,当核心处理器处理完两段语音数据时发送应答操作通知协处 理器读取第一段数据。
[0038] (3)以协处理器接收缓冲队列中数据量和核心处理器发送给协处理器的应答操作 为触发条件,当缓冲队列中有多于一段的剩余空间即可组建读操作完成一段数据的读取。 [0039]在传输过程中,为提高编码效率以及总线的利用率,本发明还计算当前总线支持 的最大传输码率,自适应地调整协处理器的输出码率。传输速率计算公式如下:
[0041] 式中:RTT为往返时间;RT0为重传间隔;Pis为丢包率;Psize为发送的数据包的大 小。上述所需参数依靠由目标方周期性向发送方发送的目标方响应数据包。其中包含了间 隔抖动、已接收报告数、累计丢包数等重要参数。协处理器根据这些参数计算检测当前总线 状况,并根据检测结果进行码率的自适应调整。
[0042] 本发明对语音数据传输过程细化为启动和防止拥塞两个阶段。
[0043] (1)启动阶段。通过量化值QV的动态改变来实现码率的调整。QV值越大,码率越小, 音频的质量越差,设置QVmX和QVmin为量化值最大值和最小值。首先初始化QV=QV max,然后根 据数据包反馈的丢包率Pis进行操作选择。当Pis = 〇时,使用公式QV=max(QV-2X (1-QA^ )-f3,QVmin)进行QV的调整,其中QV为QV的均值,β为参数),如果连续5个响应数据包中有3个丢 包率非〇或者QV减小到QV min,则进入防止拥塞阶段。
[0044] (2)防止拥塞阶段。当码率与带宽达到适应后,进入到防止拥塞阶段,进行码率的 自适应调整。
[0045] 首先,根据获取的传输速率br可计算得到起始音频量化值start: start(br)=aX brb+c
[0046] 式中:a、b、c为常系数。
[0047] 再根据start和量化阈值Th对QV的值进行调整,当start〈QV_量化阈值Th时,降低 量化值,QV取start和QVmin中较大值。当start>QV+量化阈值Th时,提高量化值,QV取start和 QV max*较小值。当QV-Th < start < QV+Th时,不改变编码量化值。
[0048]其中,量化阈值Th是调整QV的阈值。设置量化阈值Th的计算公式为:量化阈值Th = l/4X(l+QV(QV+0))式中:Θ 为参数。
[0049] 由于本发明方法协处理器在读写过程中都是作为传输数据包的发送方,而核心处 理器作为响应端只需接收和发送简洁的应答信号,其目标方请求与目标方响应端口实现相 对简单。因此,传输过程设计的难度集中在协处理器的发送方的请求与发送方响应两个端 口。其中,发送方的请求模块做为一次操作的开始,负责组建请求数据包;发送方响应模块 负责接收读操作的响应数据包。
[0050] 发送方请求模块包含以下4部分:控制单元、数据包生成单元、请求生成单元和缓 冲队列。其中,控制单元是整个发送方的请求模块的核心控制部分,用于检测是否发送数 据、控制何时发送数据以及组建数据包信息,控制单元监控缓冲队列状态,控制数据包生成 单元完成数据包发送;数据包生成单元负责具体的数据组建工作,产生数据包包头信息,并 将包头信息传递到请求生成单元,监控请求生成单元状态并向控制单元反馈;请求生成单 元负责与程序的发送方的请求端口协同将组建好的数据包信息传递给程序,完整的数据包 包括包头信息和数据信息,请求生成单元的包头信息来自数据包生成单元,数据信息可以 直接取自缓冲队列或接收数据包生成单元传递的数据;缓冲队列是发送数据缓冲队列。
[0051] 语音数据依次通过缓冲队列和请求生成单元,最终由请求生成单元传递到程序的 发送方的请求端口并通过链路发出。控制单元是协处理器所有高速PCI请求的发起者,也是 协处理器控制高速PCI通路数据收发的核心,使用控制单元模块请求操作状态机完成高速 PCI通路控制工作。状态机包含以下状态:初始化、就绪、流媒体写入、应答、读取和发送状 态。初始化状态是状态机的初始状态,当高速PCI硬件初始化成功后进入就绪状态,否则继 续等待;就绪状态表示高速PCI链路正常,当发送请求来临并且程序就绪时,进入对应发送 请求状态,若高速PCI链路异常,则进入初始化状态;读取、应答和流媒体写入状态分别是发 送读操作、应答操作和写操作状态,每种操作分别组建各自的有效操作信息,当程序状态就 绪时进入发送状态,否则等待,若PCI链路出现异常或者中断,则进入就绪状态;发送状态为 PCI请求操作发送状态,控制单元模块将组建好的数据信号传递给数据包生成单元模块,命 令数据包生成单元模块开始组建数据包的包头信息,并发送高速PCI数据包,当数据包生成 单元完成数据接收则进入就绪状态,否则继续等待,若出现链路异常或者中断,则进入就绪 状态。
[0052] 发送方响应模块负责接收并解析核心处理器发送的读操作响应操作数据包数据, 包括响应处理单元和缓冲队列两部分,响应处理
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1