一种丢包补偿方法及装置制造方法及图纸

技术编号:3499585 阅读:189 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种丢包补偿方法,该方法包括以下步骤:A、判断当前帧是否丢包,如果是,根据当前的连续丢包次数以及数据缓存中的数据,计算得到当前丢包的补偿数据,结束当前处理流程;否则,执行步骤B;B、判断上一帧是否丢包,如果是,则执行步骤C;否则,根据当前帧包含的数据更新数据缓存,结束当前处理流程;C、根据紧邻当前帧的连续丢包次数以及数据缓存中的数据,重新计算各次丢包的补偿数据,并根据各次丢包的补偿数据以及当前帧包含的数据,更新数据缓存。另外,本发明专利技术还公开了一种丢包补偿装置。应用本发明专利技术所提供的方法及装置能够减小在丢包补偿过程占用的静态空间。

【技术实现步骤摘要】

本专利技术涉及语音编码技术,尤指一种丢包补偿方法及装置
技术介绍
在现有的语音编码技术中,丢包补偿算法主要根据当前已经播放的一段时间的数据,计算出当前丢失的数据。在现有技术中,主要通过设置两个较大的静态数据缓存来实现。这两个数据缓存分别是历史缓存(history)和基周期缓存(pitchbuf),大小均为390个16bit空间,对应于48.75ms的语音数据。其中,history用于保存当前已经播放的数据,history中的数据需要实时更新。在10ms作为一个数据帧长度的情况下,history中的数据每10ms更新一次。pitchbuf中的数据只是在发生丢包时使用,通过每次在第一次发生丢包时拷贝history中的数据,利用从history中备份的数据对第一次丢包、以及之后的连续丢包进行数据补偿。假设存在三次连续丢包,则在第一次丢包时,pitchbuf从history中拷贝出第一次丢包之前保存的数据,并根据本次拷贝出的数据对本次、以及之后的第二和第三丢包计算补偿数据。同时,在每次计算得到补偿数据之后,均用计算得到的补偿数据更新history中的数据。由此可见,history则是依靠每次丢包时计算得到的补偿数据,以及在不丢包时当前帧中所包含的数据对自身的数据进行更新,始终保持自身保存的数据是当前以及播放的一段时间内的数据。进而,在每次丢包时,pitchbuf则能够根据history中保存的数据,补偿出当前丢失的数据。但是,由于每个语音通道都需要占用history和pitchbuf这两个较大的缓存,因此在多通道、高密度的情况下,大量的静态空间被占用,极大的影响了语音处理设备的性能,甚至在语音处理设备性能较低时,不能够进行丢包的数据补偿。
技术实现思路
有鉴于此,本专利技术实施例的主要目的在于提供一种丢包补偿方法,应用该方法能够减小丢包补偿过程中占用的静态空间。另外,本专利技术实施例的又一主要目的在于提供一种丢包补偿装置,该装置能够在进行丢包补偿的过程,占用较小的静态空间。为达到上述目的,本专利技术实施例的技术方案是这样实现的一种丢包补偿方法,该方法包括以下步骤A、判断当前帧是否丢包,如果是,根据当前的连续丢包次数以及数据缓存中的数据,计算得到当前丢包的补偿数据,结束当前处理流程;否则,执行步骤B;B、判断上一帧是否丢包,如果是,则执行步骤C;否则,根据当前帧包含的数据更新数据缓存,结束当前处理流程;C、根据紧邻当前帧的连续丢包次数以及数据缓存中的数据,重新计算各次丢包的补偿数据,并根据各次丢包的补偿数据以及当前帧包含的数据,更新数据缓存。另外,本专利技术实施例还提供了一种丢包补偿装置,该装置包括控制单元,补偿单元和数据缓存单元所述控制单元,用于判断当前帧是否丢包,在当前帧丢包时,指示所述补偿单元计算当前丢包的补偿数据;在当前帧没有丢包时,判断前一帧是否丢包;在前一帧没有丢包时,根据当前帧包含的数据更新所述数据缓存单元;在前一帧丢包时,指示所述补偿单元重新计算紧邻当前帧连续丢包中各次丢包的补偿数据,并根据所述补偿单元得到的各次丢包的补偿数据、以及当前帧包含的数据更新所述数据缓存单元;所述补偿单元,用于根据所述控制单元的指示,计算当前丢包的补偿数据;或重新计算紧邻当前帧连续丢包中各次丢包的补偿数据;所述数据缓存单元,用于按照先进先出的原则存储用来计算补偿数据的数据。本专利技术所提供的一种丢包补偿方法,在当前帧不丢包时,利用当前帧中所携带的数据更新数据缓存中的数据;而在当前帧丢包时,利用数据缓存计算当前帧的补偿数据,此时并不用计算出来的补偿数据更新数据缓存;而是,在连续丢包结束后,遇到一个好包的帧,再重新计算之前连续丢包中各次丢包的补偿数据,并根据各次丢包的补偿数据以及不丢包帧所携带的数据,更新数据缓存。另外,本专利技术还提供了一种丢包补偿装置。本专利技术所提供的方法及装置,仅使用一个与现有技术中静态存储空间大小相同的数据缓存实现了对数据的丢包补偿,因此与现有技术中使用两个静态存储空间相比,减小了在丢包补偿过程占用的静态空间,能够很好的适用于多通道、高密度的应用场合。附图说明下面将通过参照附图详细描述本专利技术的示例性实施例,使本领域的普通技术人员更清楚本专利技术的上述及其它特征和优点,附图中图1为本专利技术方法的示例性流程图;图2为本专利技术装置的示例性结构图;图3为本专利技术较佳实施例方法的流程图;图4为本专利技术较佳实施例装置的结构图;图5-A为现有技术中丢包补偿技术方案的效果图;图5-B为本专利技术较佳实施例的丢包补偿技术方案的效果图。具体实施例方式为使本专利技术实施例的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本专利技术做进一步的详细说明。在本专利技术实施例中,为了减少丢包补偿方法中所使用的静态存储空间,去掉history或pitchbuf中的一个静态存储空间,或将这两个静态存储空间均去掉,另开辟一个静态存储空间,存储用来计算丢包补偿数据的数据。这里另开辟的一个静态存储空间的大小与history或pitchbuf的大小相同。在本专利技术中,将保留的、或另开辟的静态存储空间统称为数据缓存单元。由于仅存在一个静态存储空间,因此为了与现有的丢包补偿算法相一致,该数据缓存单元中的数据,即要与当前播放的数据保持一致,也要使该数据缓存单元中保存的数据能够用来计算补偿数据。图1为本专利技术方法的示例性流程图。参见图1,详细描述如下在步骤101中,判断当前帧是否丢包,如果是,执行步骤105;否则,执行步骤102。在步骤102中,判断上一帧是否丢包,如果是,执行步骤103;否则,执行步骤106。在步骤103~104中,根据紧邻当前帧的连续丢包次数以及数据缓存中的数据,重新计算各次丢包的补偿数据;并根据各次丢包的补偿数据以及当前帧包含的数据,更新数据缓存。结束当前处理流程。这里,数据缓存就是指的数据缓存单元。在步骤105中,根据当前的连续丢包次数以及数据缓存中的数据,计算得到当前丢包的补偿数据。结束当前处理流程。在步骤106中,根据当前帧包含的数据更新数据缓存。结束当前处理流程。根据对图1流程的描述可知在本专利技术的技术方案中,在当前帧没有丢包时,数据缓存中的数据根据当前帧包含的数据进行实时更新;在当前帧为第一次连续丢包时,则能够根据数据缓存中保存的当前已经播放的数据计算得到补偿数据;在当前帧为非第一次连续丢包时,则根据第一次连续丢包时,数据缓存中的数据计算得到当前次的补偿数据;同时,在丢包之后遇到一个好包时,则再重新计算连续丢包中各次丢包的补偿数据,根据计算得到的各次丢包的补偿数据、以及当前丢包时所携带的数据,更新数据缓存。这样就实现了在丢包时,能够根据第一次连续丢包之前已经播放的数据计算当前丢包数据,也能够在连续丢包结束之后及时根据当前已经播放的数据更新数据缓存,以备下一次丢包时使用。在本专利技术中,只丢包一次的情况看作是连续丢包中的特例。图2为本专利技术装置的示例性结构图。参见图2,该装置包括控制单元21、补偿单元22和数据缓存单元23。其中,控制单元21,用于判断当前帧是否丢包,在当前帧丢包时,指示补偿单元22计算当前丢包的补偿数据;在当前帧没有丢包时,判断前一帧是否丢包;在前一帧没有丢包时,根据当前帧包含的数据更新数据缓存单元23;在前一帧丢包时,指示补偿单元22重新计本文档来自技高网
...

【技术保护点】
一种丢包补偿方法,其特征在于,该方法包括以下步骤:A、判断当前帧是否丢包,如果是,根据当前的连续丢包次数以及数据缓存中的数据,计算得到当前丢包的补偿数据,结束当前处理流程;否则,执行步骤B;B、判断上一帧是否丢包,如果是,则执行步骤C;否则,根据当前帧包含的数据更新数据缓存,结束当前处理流程;C、根据紧邻当前帧的连续丢包次数以及数据缓存中的数据,重新计算各次丢包的补偿数据,并根据各次丢包的补偿数据以及当前帧包含的数据,更新数据缓存。

【技术特征摘要】

【专利技术属性】
技术研发人员:邱超莫运能
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利