动态可回退码流缓冲模块系统与方法与流程

文档序号:12041161阅读:133来源:国知局
动态可回退码流缓冲模块系统与方法与流程
本发明涉及码流缓冲模块设计,特别地,涉及动态可回退码流缓冲模块设计。

背景技术:
现有的视频解码ASIC设计中,视频码流缓冲模块通常由两个相互连接的缓冲模块实现,前端缓冲模块通常是以字节(byte)为基本操作单元的缓冲区,后端缓冲模块通常是以比特(bit)为基本操作单元的缓冲区,前端和后端缓冲模块本身采用FIFO(先入先出)机制,在前后端缓冲模块的连接处通常加入竞争码侦听和去除模块以及必要的比特顺序调整逻辑,从而构成一套完整的码流缓冲区管理策略。目前流行的某些视频编解码标准中,出现了需要对码流进行回退操作的要求。此外解码器的容错功能的实现,同样在特定条件下需要对码流进行回退操作,例如当在后端缓冲模块中发现码流中有错误时,需要丢弃后端缓冲模块中当前处理的数据,即将后端缓冲模块清空,然后从发生错误的字节的边界重新进行同步。而在传统的码流缓冲系统的设计方法中,解码操作主要集中在以位为基本操作单元的后端缓冲模块的数据上,难以在需要的情况下动态且自然地实现将后端缓冲模块中的码流回退到之前的状态。

技术实现要素:
本发明的目的在于克服现有技术中的上述缺陷。本发明采用两个前端缓冲模块对应一个后端缓冲模块的连接方法,可以动态的实现后端缓冲模块中的码流的可回退功能。根据本发明的一方面,提出了一种动态可回退码流缓冲模块系统,该系统包括:前端工作缓冲模块,具有第一容量,该前端工作缓冲模块在输入端接收输入码流中的第一单位长度的输入数据,并在输出端输出第一单位长度的第一缓冲数据给后端缓冲模块,在输出该第一缓冲数据的同时从该前端工作缓冲模块中删除该第一缓冲数据;前端影子缓冲模块,具有第一容量,该前端影子缓冲模块在输入端与前端工作缓冲模块同步接收输入码流中的所述输入数据,并且当从前端工作缓冲模块中删除该第一缓冲数据时在该前端影子缓冲模块中保留该第一缓冲数据;后端缓冲模块,具有第二容量,该后端缓冲模块在输入端接收所述第一缓冲数据并输出第二单位长度的第二缓冲数据,当确定该后端缓冲模块完成了所述第一缓冲数据的输出后,向影子缓冲控制模块发出控制命令;影子缓冲控制模块,响应于所述控制命令,删除所述前端影子缓冲模块中的所述第一缓冲数据;回退操作控制器,响应于回退指令使该系统停止操作,重置前端工作缓冲模块和后端缓冲模块,将前端影子缓冲模块中的数据完整地复制到重置后的前端工作缓冲模块中,然后使该系统恢复操作。优选地,所述第一容量大于所述第二容量。优选地,所述第一容量为所述第二容量的125%-150%。优选地,所述第一单位长度为一个字节,所述第二单位长度为一个比特。优选地,当后端缓冲模块中输出了一个完整的字节时,向影子缓冲控制模块发出控制命令使影子缓冲控制模块删除前端影子缓冲模块中对应的一个字节。优选地,所述前端工作缓冲模块、所述前端影子缓冲模块和所述后端缓冲模块均以先入先出方式工作。优选地,该系统,还包括:前端上下文寄存器,连接于所述前端工作缓冲模块的输出端;后端上下文寄存器,连接于所述后端缓冲模块的输出端;其中,该前端上下文寄存器和后端上下文寄存器用于分别保存所述前端工作缓冲模块以及所述后端缓冲模块的输出码流中的上下文信息;以及在所述前端影子缓冲模块中的数据完整地复制到所述前端工作缓冲模块中之后以及该系统恢复操作之前,回退所述前端上下文寄存器和所述后端上下文寄存器的内容。根据本发明的另一方面,提出了一种动态可回退码流缓冲模块方法,该方法包括:S301,通过前端工作缓冲模块和前端影子缓冲模块同时接收输入码流中的第一单位长度的输入数据;S302,通过前端工作缓冲模块输出第一单位长度的第一缓冲数据给后端缓冲模块,在输出该第一缓冲数据的同时从该前端工作缓冲模块中删除该第一缓冲数据并在该前端影子缓冲模块中保留该第一缓冲数据;S303,通过后端缓冲模块输出第二单位长度的第二缓冲数据,当确定完成了所述第一缓冲数据的输出后,后端缓冲模块向影子缓冲控制模块发出控制命令;S304,通过影子缓冲控制模块响应于所述控制命令,删除前端影子缓冲模块中的所述第一缓冲数据;其中,在执行步骤S301-S304的过程中,如果回退操作控制器接收到回退指令,则由回退操作控制器控制执行以下步骤:S305,停止执行步骤S301-S304,并重置前端工作缓冲模块和后端缓冲模块;S306,将前端影子缓冲模块中的数据完整地复制到前端工作缓冲模块中,再恢复执行步骤S301-S304。优选地,其中步骤S306还包括:在将前端影子缓冲模块中的数据完整地复制到前端工作缓冲模块中之后以及恢复执行步骤S301-S304之前,回退前端上下文寄存器和后端上下文寄存器。根据本发明所述的系统和方法,能够自然地支持某些带有解码回退需求的视频编解码标准,能够满足解码器实现中的容错策略可能用到的码流回退需求,且由于仅增加了影子缓冲模块和回退控制逻辑,需要的ASIC(专用集成电路)设计的资源少,面积小,同时大大降低了软件或者固件实现上述系统和方法的难度和复杂度。附图说明图1描述了根据本发明的动态可回退码流缓冲模块系统的一个实施例的结构框图;图2描述了根据本发明的动态可回退码流缓冲模块系统的另一个实施例结构框图;图3描述了根据本发明的动态可回退码流缓冲模块方法的一个实施例的流程图。具体实施方式根据本发明的动态可回退码流缓冲模块系统和方法采取了两个前端缓冲模块和一个后端缓冲模块,其中两个前端缓冲模块分别是前端工作缓冲模块和前端影子缓冲模块。两个前端缓冲模块同时接收输入码流,并且当前端工作缓冲模块向后端缓冲模块输出一笔数据并将这笔数据从前端工作缓冲模块中删除时,前端影子缓冲模块仍保留这笔数据,直到确认后端缓冲模块完成了对这笔数据的输出才从前端影子缓冲模块中删除这笔数据。一旦发现后端缓冲模块出现错误,或者根据视频标准的要求需要执行回退操作时,则冻结所有缓冲模块的操作,并将前端影子缓冲模块中的数据全部复制到前端工作缓冲模块中,这样,当系统恢复工作时,前端工作缓冲模块重新为后端缓冲模块输出后端缓冲模块重置前的所有数据,从而实现了回退操作。图1描述了根据本发明的动态可回退码流缓冲模块系统的一个实施例。其中,该系统包括:前端工作缓冲模块101,具有第一容量,该前端工作缓冲模块101在输入端接收输入码流中的第一单位长度的输入数据,并在输出端输出第一单位长度的第一缓冲数据给后端缓冲模块103,在输出该第一缓冲数据的同时从该前端工作缓冲模块101中删除该第一缓冲数据;前端影子缓冲模块102,具有第一容量,该前端影子缓冲模块102在输入端与前端工作缓冲模块101同步接收输入码流中的所述输入数据,并且当从前端工作缓冲模块101中删除该第一缓冲数据时在该前端影子缓冲模块102中保留该第一缓冲数据;后端缓冲模块103,具有第二容量,该后端缓冲模块在输入端接收所述第一缓冲数据并输出第二单位长度的第二缓冲数据,当确定该后端缓冲模块103完成了所述第一缓冲数据的输出后,向影子缓冲控制模块105发出控制命令;影子缓冲控制模块105,响应于所述控制命令,删除所述前端影子缓冲模块102中的所述第一缓冲数据;回退操作控制器104,响应于回退指令使该系统停止操作,重置前端工作缓冲模块101和后端缓冲模块103,将前端影子缓冲模块102中的数据完整地复制到重置后的前端工作缓冲模块101中,然后使该系统恢复操作。在一个优选实施例中,前端工作缓冲模块101、前端影子缓冲模块102和后端缓冲模块103均以先入先出(FIFO)方式工作,与典型的以先入先出方式工作的缓冲模块(缓冲区)一样,各个缓冲模块在容量未满之前,均响应于各自特定的控制命令接收输入数据存放于队列尾部,并输出队列前部的输出数据。前端工作缓冲模块101和前端影子缓冲模块102的容量(第一容量)相同,以便在回退操作控制器104的控制下将前端影子缓冲模块102中的数据全部复制到前端工作缓冲模块101中。优选地,前端工作缓冲模块101和前端影子缓冲模块102的容量可略大于后端缓冲模块103的容量(第二容量),例如,上述第一容量可为第二容量的125%-150%,以便于容纳已经输出到后端缓冲模块103,但为了支持回退操作而暂时保存在前端影子缓冲模块102中的数据,也就是说,前端影子缓冲模块102中的内容即包括已经进入后端缓冲模块的数据,又包括仍存在与工作缓冲模块的数据。因此,当系统完成回退操作后恢复工作时,前端工作缓冲模块101中待输出的数据中包含了后端缓冲模块103在重置之前所有未完成输出的数据。优选地,当接收到回退指令时,回退操作控制器104命令系统停止操作,这意味着系统的任何输入输出操作都停止,直到完成将前端影子缓冲模块102中的数据完整地复制到前端工作缓冲模块101中的操作之后,系统才恢复操作。优选地,前端工作缓冲模块101和前端影子缓冲模块102以字节为基本操作单位(第一单位长度),后端缓冲模块103以比特为基本操作单位(第二单位长度)。优选地,只有当后端缓冲模块103中输出了1个完整的字节的时候,才向影子缓冲控制模块105发出控制命令,相应地,影子缓冲控制模块105删除前端影子缓冲模块102中对应的字节。这样,如果响应于回退指令重置后端缓冲模块103时,后端缓冲模块103中仍包含未完成输出的多个字节(包括未输出的完整的字节和部分输出的字节),则这些字节都保留在前端影子缓冲模块102中,在将前端影子缓冲模块102中的内容完整复制到前端工作缓冲模块101中之后,随着系统恢复操作,这些未完成输出的字节仍按照原来的先入先出的顺序,陆续进入后端缓冲模块103,从而未造成任何数据丢失。图2描述了根据本发明的动态可回退码流缓冲模块系统的另一个实施例。相比于图1所示的实施例,图2所示的实施例增加了连接于前端工作缓冲模块101的输出端的前端上下文寄存器201,以及连接于后端缓冲模块103的输出端的后端上下文寄存器202,该前端上下文寄存器和后端上下文寄存器用于分别保存前端工作缓冲模块101以及后端缓冲模块103的输出码流中的上下文信息。所谓上下文信息(context)是指用于指示需要保存和更新的硬件状态的信号或变量,所述状态例如包括各个缓冲模块当前共解码了多少个单位长度(例如字节或比特)的数据,以及各个缓冲模块当前的输入输出指针位置等。在回退操作中,这些信息也需要进行更新。因此,在该实施例中,在前端影子缓冲模块102中的数据完整地复制到前端工作缓冲模块101中之后,前端上下文寄存器201和后端上下文寄存器202也应被回退和更新,即完成前端影子缓冲区102到前端工作缓冲区101的复制之后,前端上下文寄存器201和后端上下文寄存器202的内容应回退到与复制后前端工作缓冲区101的内容相对应的状态,或者说,回退到系统的本次回退操作之前,与复制后前端工作缓冲区101的内容相对应的状态,从而完成整个系统的回退操作,然后再令系统恢复操作。图3描述了根据本发明的动态可回退码流缓冲模块方法的一个实施例的示意图,其中,该方法包括:S301,通过前端工作缓冲模块和前端影子缓冲模块同时接收输入码流中的第一单位长度的输入数据;S302,通过前端工作缓冲模块输出第一单位长度的第一缓冲数据给后端缓冲模块,在输出第一缓冲数据的同时从该前端工作缓冲模块中删除该第一缓冲数据并在该前端影子缓冲模块中保留该第一缓冲数据;S303,通过后端缓冲模块输出第二单位长度的第二缓冲数据,当确定完成了所述第一缓冲数据的输出后,后端缓冲模块向影子缓冲控制模块发出控制命令;S304,通过影子缓冲控制模块响应于所述控制命令,删除前端影子缓冲模块中的所述第一缓冲数据;其中,在执行步骤S301-S304的过程中,如果回退操作控制器接收到回退指令,则由回退操作控制器控制执行以下步骤:S305,停止执行步骤S301-S304,并重置前端工作缓冲模块和后端缓冲模块;S306,将前端影子缓冲模块中的数据完整地复制到前端工作缓冲模块中,再恢复执行步骤S301-S304。在图3中,主要图示了该方法在未收到回退指令时,执行步骤S301-S304的正常缓冲操作流程,一旦收到回退指令,缓冲操作停止,并进入到S305-306的回退操作,直到回退操作完成后,又返回到正常缓冲操作的流程中。在一个优选实施例中,步骤S306还包括,在将前端影子缓冲模块中的数据完整地复制到前端工作缓冲模块中之后以及恢复执行步骤S301-S304之前,回退前端上下文寄存器和后端上下文寄存器。上述实施例是用于例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修改。因此本发明的保护范围,应如本发明的权利要求书所列。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1