一种高效的VP9熵解码prob数据获取方法及设备
技术领域
本发明涉及视频解码领域,特别涉及一种高效的VP9熵解码prob数据获取方法及设备。
背景技术
VP9是Google主导开发的下一代开源的视频编解码器,它的压缩效率比编解码器H264高,是私有编解码器H265的竟争对手。VP9解码器中熵解码的关键运算单元的输入为码流数据及prob(prob表示概率)数据。而prob数据需根据上下文来选择,目前在获取prob数据时,都是直接在上下文中选择需要的prob数据,这样做的缺点是:数据量庞大,prob数据获取的速度慢,数据获取实现复杂,这也影响了熵解码器的解码速度。因此,如何从众多的prob原始数据中快速地选取运算单元所需的prob数据成为了VP9熵解码器的设计难点。
发明内容
本发明要解决的技术问题之一,在于提供一种高效的VP9熵解码prob数据获取方法,通过该方法提高prob数据的获取速度,降低prob数据获取实现的复杂性,提高熵解码器的解码效率。
本发明是这样实现技术问题之一的:一种高效的VP9熵解码prob数据获取方法,该方法需要提供数据总线、控制器、概率表寄存器缓存、概率表RAM缓存以及熵解码器;所述数据总线连接至所述概率表RAM缓存,所述控制器分别与所述概率表寄存器缓存和概率表RAM缓存连接,所述熵解码器与所述概率表寄存器缓存连接,所述包括如下步骤:
步骤10、通过数据总线将码流中的prob数据信息写入到概率表RAM缓存中,且在写入时不区分信息的语法元素类别;
步骤20、通过控制器从概率表RAM缓存中预取出prob数据,并按照信息的语法元素类别将prob数据分类存储到概率表寄存器缓存所对应的寄存器中;
步骤30、熵解码器从相应的寄存器中取出需要使用的prob数据,并解码出码流中的bin数据;
步骤40、概率表寄存器缓存将需要重复使用的各寄存器的色度分量数据保留下来,以供后续使用,其余数据则全部释放出去;
步骤50、后续码流继续进入时,通过数据总线刷新概率表RAM缓存填充新码流的prob数据信息,且在刷新时不区分信息的语法元素类别;
步骤60、通过控制器从概率表RAM缓存中预取出prob数据,且在预取时不重复读取未释放的色度分量数据,并按照信息的语法元素类别将prob数据分类存储到概率表寄存器缓存所对应的寄存器中;
步骤70、熵解码器从相应的寄存器中取出需要使用的prob数据,并解码出码流中的bin数据,同时返回执行步骤40,直到完成整个视频流的解码。
进一步地,所述prob数据信息包括SBinfo、帧内解码信息、帧间解码信息、系数信息以及系数bin信息。
本发明要解决的技术问题之二,在于提供一种高效的VP9熵解码prob数据获取设备,通过该设备提高prob数据的获取速度,降低prob数据获取实现的复杂性,提高熵解码器的解码效率。
本发明是这样实现技术问题之二的:一种高效的VP9熵解码prob数据获取设备,该设备包括数据总线、控制器、概率表寄存器缓存、概率表RAM缓存以及熵解码器;所述数据总线连接至所述概率表RAM缓存,所述控制器分别与所述概率表寄存器缓存和概率表RAM缓存连接,所述熵解码器与所述概率表寄存器缓存连接;
后续码流继续进入时,通过所述数据总线刷新所述概率表RAM缓存填充新码流的prob数据信息,且在刷新时不区分信息的语法元素类别;
通过所述控制器从所述概率表RAM缓存中预取出prob数据,并按照信息的语法元素类别将prob数据分类存储到所述概率表寄存器缓存所对应的寄存器中;
所述熵解码器从相应的寄存器中取出需要使用的prob数据,并解码出码流中的bin数据;
所述概率表寄存器缓存将需要重复使用的各寄存器的色度分量数据保留下来,以供后续使用,其余数据则全部释放出去;
通过所述数据总线刷新所述概率表RAM缓存填充码流中的prob数据信息,且在刷新时不区分信息的语法元素类别;
通过所述控制器从所述概率表RAM缓存中预取出prob数据,且在预取时不重复读取未释放的色度分量数据,并按照信息的语法元素类别将prob数据分类存储到概率表寄存器缓存所对应的寄存器中;同时,所述熵解码器又会从相应的寄存器中取出需要使用的prob数据,并解码出码流中的bin数据。
进一步地,所述prob数据信息包括SBinfo、帧内解码信息、帧间解码信息、系数信息以及系数bin信息。
本发明具有如下优点:1、采用RAM存储与寄存器存储相结合的方式来存储众多的prob数据,且寄存器具有即写即用的特点,因此可以在整体上加速数据的读取效率;2、对码流中的数据采用语法元素syntax进行分类,把prob数据从RAM预取出并分类到对应的寄存器中,以供熵解码器取数解码,这降低了prob数据获取实现的复杂性,提高了解码效率;3、对需要重复使用的色度分量数据不做释放,使得后续码流在解码时无需从RAM中重复预取该分量的数据,这不仅可以降低预取数时的功耗,且也提高了预取数据的效率。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明设备的结构示意图。
具体实施方式
请参照图1所示,一种高效的VP9熵解码prob数据获取方法,该方法需要提供数据总线、控制器、概率表寄存器缓存、概率表RAM缓存以及熵解码器;所述数据总线连接至所述概率表RAM缓存,所述控制器分别与所述概率表寄存器缓存和概率表RAM缓存连接,所述熵解码器与所述概率表寄存器缓存连接,所述包括如下步骤:
步骤10、通过数据总线将码流中的prob数据信息写入到概率表RAM缓存中,且在写入时不区分信息的语法元素类别;其中,码流进入熵解码器的数据都是按照一定的数据结构输入的,该数据结构可以细分为一个一个的语法元素syntax。所述prob数据信息包括SBinfo、帧内解码信息(intra blkinfo)、帧间解码信息(inter blk info)、系数信息(coefficient info)以及系数bin信息(coeff bin)。
步骤20、通过控制器从概率表RAM缓存中预取出prob数据,并按照信息的语法元素类别将prob数据分类存储到概率表寄存器缓存所对应的寄存器中,包括将概率表RAM缓存中所有SBinfo都存储到概率表寄存器缓存所分配的用于存储SBinfo的寄存器中,将概率表RAM缓存中所有帧内解码信息都存储到概率表寄存器缓存所分配的用于存储帧内解码信息的寄存器中,将概率表RAM缓存中所有帧间解码信息都存储到概率表寄存器缓存所分配的用于存储帧间解码信息的寄存器中,将概率表RAM缓存中所有系数信息都存储到概率表寄存器缓存所分配的用于存储系数信息的寄存器中,以及将概率表RAM缓存中所有系数bin信息都存储到概率表寄存器缓存所分配的用于存储系数bin信息的寄存器中。
步骤30、熵解码器从相应的寄存器中取出需要使用的prob数据,并解码出码流中的bin数据;
步骤40、概率表寄存器缓存将需要重复使用的各寄存器的色度分量(即UV分量)数据保留下来,以供后续使用,其余数据则全部释放出去;例如,用于存储帧内解码信息的寄存器中共存储有A bits数据,其中,需要重复使用的UV分量数据占B bits,A和B均表示具体的数据量,其余不需要重复使用的数据占(A-B)bits,此时就将不需要重复使用的(A-B)bits数据释放,而需要重复使用的B bits的UV分量数据则不做释放。
步骤50、后续码流继续进入时,通过数据总线刷新概率表RAM缓存填充新码流的prob数据信息,且在刷新时不区分信息的语法元素类别。
步骤60、通过控制器从概率表RAM缓存中预取出prob数据,且在预取时不重复读取未释放的色度分量数据,并按照信息的语法元素类别将prob数据分类存储到概率表寄存器缓存所对应的寄存器中;例如在具体实施时,用于存储帧内解码信息的寄存器中留有B bits的UV分量数据,此时就不需要重复预取这B bits的UV分量数据;
步骤70、熵解码器从相应的寄存器中取出需要使用的prob数据,并解码出码流中的bin数据,同时返回执行步骤40,直到完成整个视频流的解码。
请参照图1所示,一种高效的VP9熵解码prob数据获取设备,该设备包括数据总线、控制器、概率表寄存器缓存、概率表RAM缓存以及熵解码器;所述数据总线连接至所述概率表RAM缓存,所述控制器分别与所述概率表寄存器缓存和概率表RAM缓存连接,所述熵解码器与所述概率表寄存器缓存连接;
通过所述数据总线将码流中的prob数据信息写入到所述概率表RAM缓存中,且在写入时不区分信息的语法元素类别;其中,码流进入熵解码器的数据都是按照一定的数据结构输入的,该数据结构可以细分为一个一个的语法元素syntax。所述prob数据信息包括SBinfo、帧内解码信息(intra blk info)、帧间解码信息(inter blk info)、系数信息(coefficient info)以及系数bin信息(coeff bin)。
通过所述控制器从所述概率表RAM缓存中预取出prob数据,并按照信息的语法元素类别将prob数据分类存储到所述概率表寄存器缓存所对应的寄存器中,包括将概率表RAM缓存中所有SBinfo都存储到概率表寄存器缓存所分配的用于存储SBinfo的寄存器中,将概率表RAM缓存中所有帧内解码信息都存储到概率表寄存器缓存所分配的用于存储帧内解码信息的寄存器中,将概率表RAM缓存中所有帧间解码信息都存储到概率表寄存器缓存所分配的用于存储帧间解码信息的寄存器中,将概率表RAM缓存中所有系数信息都存储到概率表寄存器缓存所分配的用于存储系数信息的寄存器中,以及将概率表RAM缓存中所有系数bin信息都存储到概率表寄存器缓存所分配的用于存储系数bin信息的寄存器中。
所述熵解码器从相应的寄存器中取出需要使用的prob数据,并解码出码流中的bin数据;
所述概率表寄存器缓存将需要重复使用的各寄存器的色度分量(即UV分量)数据保留下来,以供后续使用,其余数据则全部释放出去;例如,用于存储帧内解码信息的寄存器中共存储有A bits数据,其中,需要重复使用的UV分量数据占B bits,A和B均表示具体的数据量,其余不需要重复使用的数据占(A-B)bits,此时就将不需要重复使用的(A-B)bits数据释放,而需要重复使用的B bits的UV分量数据则不做释放。
后续码流继续进入时,通过所述数据总线刷新所述概率表RAM缓存填充新码流的prob数据信息,且在刷新时不区分信息的语法元素类别;
通过所述控制器从所述概率表RAM缓存中预取出prob数据,且在预取时不重复读取未释放的色度分量数据,并按照信息的语法元素类别将prob数据分类存储到所述概率表寄存器缓存所对应的寄存器中;例如在具体实施时,用于存储帧内解码信息的寄存器中留有B bits的UV分量数据,此时就不需要重复预取这B bits的UV分量数据;同时,所述熵解码器又会从相应的寄存器中取出需要使用的prob数据,并解码出码流中的bin数据。
综上所述,本发明具有如下优点:1、采用RAM存储与寄存器存储相结合的方式来存储众多的prob数据,且寄存器具有即写即用的特点,因此可以在整体上加速数据的读取效率;2、对码流中的数据采用语法元素syntax进行分类,把prob数据从RAM预取出并分类到对应的寄存器中,以供熵解码器取数解码,这降低了prob数据获取实现的复杂性,提高了解码效率;3、对需要重复使用的色度分量数据不做释放,使得后续码流在解码时无需从RAM中重复预取该分量的数据,这不仅可以降低预取数时的功耗,且也提高了预取数据的效率。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。