发明内容
有鉴于此,本发明的目的在于,提出一种对视频编码方法进行验证的系统和方法,可以快速定位出错的根源,提高验证效率。
本发明实施例提出的一种对视频编码方法进行验证的系统如图2所示,包括数据生成控制模块(201)、视频编码数据生成模块(202)、视频编码参考模型模块(204),算法控制模块(205),视频编码模块(206)和结果比较模块(208);
视频编码模块(206)为待验证的视频编码方法的实现模块;
视频编码参考模型模块(204)是实现与视频编码模块(206)相同视频编码功能的已验证参考模型;
数据生成控制模块(201),用于产生视频数据的关系控制信息,所述关系控制信息描述了所要生成的不同视频数据之间关系;并将所述关系控制信息输出至视频编码数据生成模块(202);所述关系控制信息包括:相同数据,当前帧数据同参考帧数据的值相等;相关数据,当前帧数据与参考帧数据之间的最大差值不超过预先设置的相关性阈值;不相关数据,当前帧数据和参考帧数据的值都随机产生,两者之间没有关系;
视频编码数据生成模块(202),用于根据来自数据生成控制模块(201)的关系控制信息,构造出当前帧数据和参考帧数据;构造得到的视频数据分为两路,一路输出至视频编码模块(206);另一路输出至视频编码参考模型模块(204);
算法控制模块(205)用于将过程控制信息分别输出至视频编码模块(206)和视频编码参考模型模块(204),视频编码模块(206)和视频编码参考模型模块(204)根据所述过程控制信息实现视频编码方法并分步骤输出算法步骤参数;所述过程控制信息包括算法开始、结束、每一算法步骤的划分、常数配置以及算法实现过程的配置信息;
结果比较模块(208),用于接收来自视频编码模块(206)的每一算法步骤的算法步骤参数以及来自视频编码参考模型模块(204)的每一算法步骤的算法步骤参数,并将两者进行比较判断,如果不一致则输出出错信息。
较佳地,该系统进一步包括:
算法结果监听模块(207),用于监听视频编码模块(206)处理视频编码过程中每一算法步骤的算法步骤参数,并将监听到的算法步骤参数输出至结果比较模块(208);
所述结果比较模块(208)接收来自视频编码模块(206)的每一算法步骤的算法步骤参数为:结果比较模块(208)接收来自算法结果监听模块(207)的算法步骤参数。
较佳地,该系统进一步包括:
存储器模型模块(203),用于和视频编码模块(206)进行交互,实现视频数据读写,和算法处理过程中中间结果的存取。
较佳地,该系统进一步包括:
出错信息生成模块(209)用于根据来自结果比较模块(208)出错信息生成报告文档。
本发明实施例提出一种对视频编码方法进行验证的方法,包括如下步骤:
A、预先将待验证的视频编码方法和已验证的参考模型划分为彼此对应的n个算法步骤,n为大于或等于2的整数;
B、将同一份视频数据分别用待验证的视频编码方法和已验证的参考模型进行编码;所述视频数据为按照关系控制信息构造的包含当前帧数据和参考帧数据的视频数据;所述关系控制信息包括:相同数据,当前帧数据同参考帧数据的值相等;相关数据,当前帧数据与参考帧数据之间的最大差值不超过预先设置的相关性阈值;不相关数据,当前帧数据和参考帧数据的值都随机产生,两者之间没有关系;
C、将第i个算法步骤的待验证的视频编码方法的算法步骤参数与已验证的参考模型的算法步骤参数进行比较,如果两者一致,则令i=i+1,继续执行步骤C;否则报告出错信息,1≤i<n且i为整数。
较佳地,关系控制信息是一个确定的数值;所述步骤B之前,进一步包括:
构造参考帧数据;
对关系控制信息的大小进行判断,若关系控制信息等于0,则构造与参考帧数据相等的当前帧数据;若关系控制信息大于0且小于预先设定的相关性阈值,则将参考帧数据的值在相关性阈值范围内变化后作为当前帧数据;若关系控制信息大于预先设定的相关性阈值,则将随机数据或特定值数据作为当前帧数据。
从以上技术方案可以看出,本发明方案将算法实现分步骤监听,分步骤比较判断,即时判断各个步骤结果,方便调试。本发明方案以算法步骤为单位,实现对视频编码方法的可控验证,能有效验证视频编码方法实现的功能。本发明方案相比现有技术的仿真验证方法只对视频编码方法最终结果做判断,在验证系统实现过程中花费较小的时间和精力为代价,换取在发现错误后的调试过程能够极大节省时间和精力,有效保证设计的功能正确性,提高验证效率。
具体实施方式
本发明提出一种对视频编码方法进行验证的系统,相对于现有技术,该系统新增了一个算法控制模块,用于将过程控制信息分别输出至待验证的视频编码模块和已验证的参考模型模块,使这两个模块能够划分为彼此对应的n个算法步骤,并将每个算法步骤的算法步骤参数输出;这样比较模块可以对每个算法步骤的执行结果分别进行比较,可以及时发现问题。更进一步地,该系统中还可以进一步包括用于构造具有特定帧与帧相互关系的视频数据的模块,
相应地,本发明提出一种对视频编码方法进行验证的方法,包括如下步骤:
A、预先将待验证的视频编码方法和已验证的参考模型划分为彼此对应的n个算法步骤,n为大于或等于2的整数;
B、将同一份视频数据分别用待验证的视频编码方法和已验证的参考模型进行编码;
C、将第i个算法步骤的待验证的视频编码方法的算法步骤参数与已验证的参考模型的算法步骤参数进行比较,如果两者一致,则令i=i+1,继续执行步骤C;否则报告出错信息,1≤i<n且i为整数。
较佳地,所述视频数据为按照关系控制信息构造的包含当前帧数据和参考帧数据的视频数据;所述关系控制信息包括:
相同数据,当前帧数据同参考帧数据的值相等;
相关数据,当前帧数据与参考帧数据之间的最大差值不超过预先设置的相关性阈值;
不相关数据,当前帧数据和参考帧数据的值都随机产生,两者之间没有关系。
所述步骤B之前,进一步包括:
构造参考帧数据;
对阀值的大小进行判断,若阀值等于0,则构造与参考帧数据相等的当前帧数据;若阀值大于0且小于预先设定的相关性阈值,则将参考帧数据的值在相关性阈值范围内变化后作为当前帧数据;若阀值大于预先设定的相关性阈值,则将随机数据或特定值数据作为当前帧数据。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细阐述。
图2所示为视频编码方法验证系统框架,它包括数据生成控制模块201,视频编码数据生成模块202,存储器模型模块203,视频编码参考模型模块204,算法控制模块205,视频编码模块206,算法结果监听模块207,结果比较模块208和出错信息生成模块209。
数据生成控制模块201:用于产生视频数据的关系控制信息,所述关系控制信息描述了所要生成的不同视频数据之间关系;并将所述关系控制信息输出至视频编码数据生成模块202。视频数据通常以帧为单位,但是不限于帧,例如还可以是以宏块为单位。以下以帧为单位进行说明。视频帧数据包括当前帧数据和参考帧数据。当前帧数据和参考帧数据之间的关系控制信息包括三种:1、相同数据,当前帧数据同参考帧数据的值完全一样;2、相关数据,当前帧数据同参考帧数据在值上有细微不同,但是两者之间的最大差值不会超过预先设置的相关性阈值;3、不相关数据,当前帧数据和参考帧数据的值都随机产生,两者之间没有关系。
视频编码数据生成模块202,是根据来自数据生成控制模块201的关系控制信息,构造出当前帧数据和参考帧数据。构造得到的视频数据分为两路输出,一路输出至存储器模型模块203供视频编码模块206使用;另一路输出至视频编码参考模型模块204。
存储器模型模块203,是符合视频编码模块206需求的外部存储器,不限于某种存储器类型。其功能用于和视频编码模块206进行交互,完成视频数据读写,和算法处理过程中中间结果的存取。
视频编码参考模型模块204是实现与视频编码模块206一致的视频编码功能的黄金模型。其将视频编码方法实现过程中得到的每一步中间结果和最后结果都送到结果比较模块208中,用于作为和视频编码模块206得出的结果进行对比。
算法控制模块205,用于输出视频编码方法实现过程中的过程控制信息。所述过程控制信息包括算法开始、结束、每一算法步骤的划分、常数配置以及算法实现过程的配置信息。算法控制模块205把过程控制信息分别输出至视频编码模块206和视频编码参考模型模块204,视频编码模块206和视频编码参考模型模块204用算法控制模块205的过程控制信息实现视频编码方法。
视频编码模块206就是待验证的视频编码方法的实现模块,为用硬件描述语言实现的RTL代码以及相应的硬件组成的功能模块。
算法结果监听模块207,监听视频编码模块206处理视频编码过程中每一步中间结果和最后结果,并将监听到的结果送到结果比较模块208做比较判断。
结果比较模块208,对从算法结果监听模块207送来的结果和视频编码参考模型模块204得到的结果进行比较判断,如果两者不一致将出错信息送到出错信息生成模块209。
出错信息生成模块209用于负责将出错信息生成报告文档。如果是在仿真出错的情况下,还要控制仿真进行状态。仿真进行状态有2种:1、忽略错误,继续仿真。2、停止仿真,调试修改后重新仿真。
本发明实施例提出的视频编码验证系统在实现视频编码方法验证过程中,有两个针对视频编码方法改进的地方说明。
视频编码数据生成模块202中,用做编码的当前帧数据和用做编码参考的参考帧数据之间的关系可控。它们之间的关系有3种:相同数据,相关数据和不相关数据。这样的关系可以构造符合视频编码结果各种模式需求的数据源,例如可以用较少数量的数据帧对各种可能的情况进行验证,提高验证效率。
视频数据生成过程:首先,构造参考帧数据。然后,构造当前帧数据。当前帧数据用随机数据或根据已构造的参考帧数据进行构造。
相同数据关系时,当前帧数据就用参考帧数据的值。编码算法不对当前帧数据另外编码,视频编码结果引用参考帧的值。
相关数据关系时,将参考帧数据的值在相关性阈值范围内变化后成为当前帧数据。编码算法对当前帧和参考帧之间相异的地方进行视频编码处理。
不相关数据关系时,当前帧数据的值和参考帧数据没有关联,为随机数据或特定值数据。编码算法对当前帧进行视频编码处理。
在数据生成过程中,控制参考帧数据和当前帧数据之间相互关系的是数据生成控制模块201。数据生成控制模块201输出的关系控制信息实际是一个确定的数值作为阀值。阀值为0时,当前帧数据和参考帧数据之间的差为0,即为相同数据关系;阀值为x时,表示当前帧数据和参考帧数据之间的差为[-x:x]之间,x为正整数,其值不超过预先设定的相关性阈值=10为满足相关数据关系;阀值在[-10:10]之外生成的当前帧数据和参考帧数据为不相关数据关系。视频编码数据生成模块202根据数据生成控制模块201中阀值构造参考帧数据和当前帧数据。
现有技术中的仿真验证方法中,输入数据源来自实际视频数据,实际视频数据量大,需要经过分析得到作为验证源的数据,且在设计中,关系到项目进度等方面原因,这种视频数据不能完全覆盖到所有视频模式。通过阀值控制当前帧数据和参考帧数据的随机数据生成方法,能构造出各种符合视频编码需求的各种数据源。
视频编码方法过程即时判断。算法结果监听模块207,结果比较模块208,视频编码参考模型模块204和视频编码模块206共同实现视频编码方法实现过程中每一步算法结果的分析判断。图3所示为算法过程即时判断框图。
在视频编码模块206的算法实现中,对结果有变化的算法步骤设置监听,由算法结果监听模块207实现监听功能,将监听到的结果送到结果比较模块208。可以将算法过程划分成多个步骤,再根据各个步骤结果设置需要监听的参数。监听的参数需要打包处理,标上算法步骤等信息,方便结果比较模块208处理。
视频编码参考模型模块204根据算法步骤,将各个步骤得到的参数打包,标上算法步骤等信息上报给结果比较模块208。在任一算法步骤中,视频编码参考模型模块204上报的参数和算法结果监听模块207对视频编码模块206监听的参数是完全对应的,在不出错的情况下,两者的值应当相等。
结果比较模块208实现对算法处理过程中每个算法步骤结果的比较,并返回详细出错信息,方便bug定位和调试。对算法结果监听模块207送来的第i个算法步骤结果数据包括:分析得到其中的算法步骤参数;寻找视频编码参考模型模块204在第i个算法步骤上报的数据包,将其中的算法步骤参数与前述算法步骤参数进行比较,如果两者相同,则继续对i+1个算法步骤进行处理;如果两者不同,则报告详细出错信息,以便进行下一步调试。
为实现上述视频编码方法验证系统,需要一台可进行硬件描述语言编译和仿真的计算机。待验证的视频编码模块206是用硬件描述语言实现的RTL代码,视频编码参考模型模块204为用程序语言C和硬件描述语言SystemVerilog实现的模型,验证环境中的其他模块用硬件描述语言SystemVerilog实现。这样的验证环境,关注视频编码方法的实现,对外部的存储模型,总线接口没有特定限制,方便验证环境的重用和修改。
基于以上视频编码方法验证系统,本发明实施例提出视频编码方法验证流程如图4所示,包括如下步骤:
步骤401:构造待处理视频数据。设置数据生成控制模块201中的阀值,视频编码数据生成模块2根据此阀值,随机构造参考帧数据和当前帧数据。将产生的当前帧数据和参考帧数据一方面送给存储器模型模块203保存,另一方面送给视频编码参考模型模块204做下一步操作。
步骤402:启动视频编码方法。这里先把算法控制模块205配置好,配置编码算法开始、结束、常数配置、算法步骤划分、算法实现过程等信息。然后,启动视频编码参考模型模块204的视频编码处理功能,将其每个算法步骤得到的算法步骤参数输出至结果比较模块208中;再启动视频编码模块206,算法结果监听模块207监听视频编码模块206实现过程中得到的每个算法步骤的参数,将这些算法步骤参数发送至结果比较模块208。
步骤403:视频编码方法实现过程中各项算法步骤参数分析判断。这部分在结果比较模块208中实现,此模块会先将视频编码参考模型模块204送来的各项结果先作保存,再在接收到来自算法结果监听模块207送来的结果时,在保存的参考结果中搜索对应的算法步骤结果并比较判断,从而实现对编码算法正确性的判断。出现结果不匹配时,由出错信息生成模块209给出具体信息,进行下一步的调试。
这样做的优点,将视频编码模块206产生的算法过程的每个结果做即时判断,出现问题即时调试,容易查找原因,不必再花大量的debug时间。而且对用于编码的数据源的可控性,也易于bug重现、调试和验证。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本发明方案可以实现如下有益效果:
1)用做编码的当前帧数据和用做编码参考的参考帧数据之间的关系可控,通过定义阀值的方法实现它们之间的控制。它们之间的关系有3种:相同数据,相关数据和不相关数据。这样的关系可以构造符合视频编码结果各种模式需求的数据源。
2)视频编码方法过程即时判断。根据对视频算法的分析,将算法实现分步骤监听,分步骤比较判断,算法步骤结果打包比较。即时判断各个步骤结果,方便调试。本发明实施例方案以算法步骤为单位,实现对视频编码方法的可控验证,能有效验证视频编码方法实现的功能。相比现有技术的仿真验证方法只对视频编码方法最终结果做判断,这种视频编码方法即时判断方法在验证系统实现的时候,花多一点时间和精力,能够在调试的时候节省人力,有效保证设计的功能正确性,提高验证效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。