发明内容
本发明实施例的目的在于提出一种转码中帧类别的调整方法,旨在解决现有技术没有利用输入码流的先验编码信息的特性来设计灵活的自适应的帧类调节机制来提升转码性能的问题。
本发明实施例是这样实现的,一种转码中帧类别的调整方法,所述方法包括以下步骤:
S101:判断framedec是否为帧间预测帧且0<poc(I_frame)-poc(frame)<Thres1,若是,则进入S102;
其中,frame为当前转码帧;framedec表示当前转码帧对应的输入端解码帧;I_frame表示离当前转码帧最近的帧内预测帧;poc(变量)表示变量的播放序号;Thres1表示第一阈值,Thres1<fps/2;fps表示帧率;
S102:统计当前转码帧frame对应的输入端解码帧中帧内预测基本块的个数;
S103:判断是否numberI>Thres2*numberblock,若是,则转换当前转码帧的帧类别为帧内预测帧,然后对当前转码帧进行转码,接着进入S106;其中,Thres2表示第二阈值,Thres2>0.8;numberblock表示一帧图像包含的基本块的个数,numberI表示framedec帧中帧内预测基本块的个数;
S106:判定下一个转码帧是否存在,若是,则设置下一个转码帧为当前转码帧,然后重新进入S101;若否,则结束。
进一步地,所述步骤S101中,“判断framedec是否为帧间预测帧且0<poc(I_frame)-poc(frame)<Thres1”,若否,则进入S104;
S104:判断framedec是否为帧内预测帧,若否,则保持当前转码帧的帧类别,然后对当前转码帧进行转码,接着进入S106。
进一步地,所述步骤S104中,判断framedec是否为帧内预测帧,若是,则进入S105;
S105:判定frame与前一帧转码帧是否属于同一场景,若是,则转换当前转码帧的帧类别为帧间预测帧,然后对当前转码帧进行转码,接着进入S106。
进一步地,所述步骤S103中,判断是否numberI>Thres2*numberblock,若否,则进入S104。
进一步地,所述步骤S105中,判定frame与前一帧转码帧是否属于同一场景,若否,则保持当前转码帧的帧类别,然后对当前转码帧进行转码,接着进入S106。
本发明实施例的另一目的在于提出一种转码中帧类别的调整系统,,所述系统包括第一判断处理模块、帧内预测基本块统计模块、第二判断处理模块、第四判断处理模块,
第一判断处理模块,用于判断framedec是否为帧间预测帧且0<poc(I_frame)-poc(frame)<Thres1,若是,则进入帧内预测基本块统计模块;
其中,frame为当前转码帧;framedec表示当前转码帧对应的输入端解码帧;I_frame表示离当前转码帧最近的帧内预测帧;poc(变量)表示变量的播放序号;Thres1表示第一阈值,Thres1<fps/2;fps表示帧率;
帧内预测基本块统计模块,用于统计当前转码帧frame对应的输入端解码帧中帧内预测基本块的个数;
第二判断处理模块,用于判断是否numberI>Thres2*numberblock,若是,则转换当前转码帧的帧类别为帧内预测帧,然后对当前转码帧进行转码,接着进入第四判断处理模块;
其中,Thres2表示第二阈值,Thres2>0.8;numberblock表示一帧图像包含的基本块的个数;
第四判断处理模块,用于判定下一个转码帧是否存在,若是,则设置下一个转码帧为当前转码帧,然后重新进入第一判断处理模块;若否,则结束。
进一步地,所述系统还包括,
第三判断处理模块,用于判断framedec是否为帧内预测帧,若是,则进入场景判断模块;若否,则保持当前转码帧的帧类别,然后对当前转码帧进行转码,接着进入第四判断处理模块;
所述第一判断处理模块,还用于判断framedec是否为帧间预测帧且0<poc(I_frame)-poc(frame)<Thres1,若否,则进入第三判断处理模块。
所述第二判断处理模块,还用于判断是否numberI>Thres2*numberblock,若否,则进入第三判断处理模块。
进一步地,
第三判断处理模块,用于判断framedec是否为帧内预测帧,若是,则进入场景判断模块;
场景判断模块,用于判定frame与前一帧转码帧是否属于同一场景,若是,则转换当前转码帧的帧类别为帧间预测帧,然后对当前转码帧进行转码,接着进入第四判断处理模块;若否,则保持当前转码帧的帧类别,然后对当前转码帧进行转码,接着进入第四判断处理模块。
本发明的有益效果
本发明提出一种转码中帧类别的调整方法和系统。本发明根据输入码流的先验编码信息,在转码端自适应调整帧类别,从而达到减少预测模式遍历寻优的计算量,同时改变原始转码器中帧类别的盲设策略的不合理性。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本发明进行进一步详细说明,为了便于说明,仅示出了与本发明实施例相关的部分。应当理解,此处所描写的具体实施例,仅仅用于解释本发明,并不用以限制本发明。
本发明实施例提出一种转码中帧类别的调整方法和系统。本发明实施例方法根据输入码流的先验编码信息,在转码端自适应调整帧类别,从而达到减少预测模式遍历寻优的计算量,同时改变原始转码器中帧类别的盲设策略的不合理性。
实施例一
图1是本发明优选实施例的一种转码中帧类别的调整方法流程图;所述方法包括以下步骤,
S101:判断framedec是否为帧间预测帧且0<poc(I_frame)-poc(frame)<Thres1,若是,则进入S102;若否,则进入S104。
其中,frame为当前转码帧;framedec表示当前转码帧对应的输入端解码帧;I_frame表示离当前转码帧最近的帧内预测帧;poc(变量)表示变量的播放序号;Thres1表示第一阈值,一般Thres1<fps/2;fps表示帧率。
S102:统计当前转码帧frame对应的输入端解码帧中帧内预测基本块的个数。所述“统计当前转码帧frame对应的输入端解码帧中帧内预测基本块的个数”包括以下步骤(图2是图1中步骤S102所包含的方法流程图):
即设置当前基本块为第一个基本块。
其中,numberI表示framedec帧中帧内预测基本块的个数;n表示blockn dec在framedec中的位置序号;基本块为编码标准允许划分的最大块;小于基本块的块称为子块;H264中基本块为大小为16x16的块,H265中基本块则可以为64x64等较大的块。
S1021:判断是否(
∈frame
dec)且(block
n dec为帧内预测基本块或者block
n dec至少包含一个为帧内预测基本块的子块),若是,则number
I=number
I+1,然后进入S1022;若否,则直接进入S1022。
其中,blockn dec表示当前转码帧对应的输入端解码帧的第n个基本块;
S1022:如果下一个基本块存在,则设置下一个基本块为当前基本块,然后重新进入S1021;否则,进入S103。
S103:判断是否numberI>Thres2*numberblock,若是,则转换当前转码帧的帧类别为帧内预测帧,然后对当前转码帧进行转码,接着进入S106;若否,则进入S104。
其中,Thres2表示第二阈值,一般Thres2>0.8;numberblock表示一帧图像包含的基本块的个数。
S104:判断framedec是否为帧内预测帧,若是,则进入S105;若否,则保持当前转码帧的帧类别,然后对当前转码帧进行转码,接着进入S106。
S105:判定frame与前一帧转码帧是否属于同一场景,若是,则转换当前转码帧的帧类别为帧间预测帧,然后对当前转码帧进行转码,接着进入S106;若否,则保持当前转码帧的帧类别,然后对当前转码帧进行转码,接着进入S106。
所述“判定frame与前一帧转码帧是否属于同一场景”具体方法如下(图3是图1中步骤S105中所包含方法流程图;):
S1050:找到当前转码帧播放顺序上对应的前一个输入解码帧及后一个输入解码帧,然后对上述两帧图像进行解码。
其中,将当前转码帧播放顺序上对应的前一个输入解码帧及后一个输入解码帧分别记为
S1051:设置初始值,n=1(即设置当前基本块为第一个基本块);
S1052:如果所述两帧图像相同位置的基本块的预测模式都是Skip模式,则计算当前转码帧当前基本块统计变量;否则,设置当前转码帧当前基本块统计变量为0。
tp=std(yprev,n(i,j)-ynext,n(i,j)|yprev,n(i,j)∈blockprev,n dec并且ynext,n(i,j)∈blocknext,n dec)
其中,sigt,n表示当前转码帧当前基本块的统计变量;
std(变量|条件)表示对满足条件的变量求均方差;Thres3表示第三阈值,一般Thres3<900/fps,fps表示帧率;tp表示中间变量;
yprev,n(i,j)表示第n个基本块第i行第j列的亮度值;
y
next,n(i,j)表示
第n个基本块第i行第j列的亮度值;
block
prev,n dec表示
第n个基本块;block
next,n dec表示
第n个基本块。
S1053:如果sum(sigt,n|sigt,n=1)/sum(sigt,n|sigt,n≠0)>Thres4,则判定framet与前一帧转码帧属于同一场景;否则,判定framet与前一帧转码帧不属于同一场景。
其中,Thres4表示第四阈值,一般Thres4>0.8;sum(变量|条件)表示对满足条件的变量求和;
所述“判定framet与前一帧转码帧是否属于同一场景”除了采用本文中的上述方法外,也可采用行业内公知的任何一种方法。
S106:判定下一个转码帧是否存在,若是,则设置下一个转码帧为当前转码帧,然后重新进入S101;若否,则结束。
实施例二
图4是本发明优选实施例的一种转码中帧类别的调整系统;所述系统包括第一判断处理模块、帧内预测基本块统计模块、第二判断处理模块、第三判断处理模块、场景判断模块、第四判断处理模块,
第一判断处理模块,用于判断framedec是否为帧间预测帧且0<poc(I_frame)-poc(frame)<Thres1,若是,则进入帧内预测基本块统计模块;若否,则进入第三判断处理模块。
其中,frame为当前转码帧;framedec表示当前转码帧对应的输入端解码帧;I_frame表示离当前转码帧最近的帧内预测帧;poc(变量)表示变量的播放序号;Thres1表示第一阈值,一般Thres1<fps/2;fps表示帧率。
帧内预测基本块统计模块,用于统计当前转码帧frame对应的输入端解码帧中帧内预测基本块的个数。
第二判断处理模块,用于判断是否numberI>Thres2*numberblock,若是,则转换当前转码帧的帧类别为帧内预测帧,然后对当前转码帧进行转码,接着进入第四判断处理模块;若否,则进入第三判断处理模块。
其中,Thres2表示第二阈值,一般Thres2>0.8;numberblock表示一帧图像包含的基本块的个数。
第三判断处理模块,用于判断framedec是否为帧内预测帧,若是,则进入场景判断模块;若否,则保持当前转码帧的帧类别,然后对当前转码帧进行转码,接着进入第四判断处理模块。
场景判断模块,用于判定frame与前一帧转码帧是否属于同一场景,若是,则转换当前转码帧的帧类别为帧间预测帧,然后对当前转码帧进行转码,接着进入第四判断处理模块;若否,则保持当前转码帧的帧类别,然后对当前转码帧进行转码,接着进入第四判断处理模块。
第四判断处理模块,用于判定下一个转码帧是否存在,若是,则设置下一个转码帧为当前转码帧,然后重新进入第一判断处理模块;若否,则结束。
进一步地,所述帧内预测基本块统计模块还包括第一基本块设置模块、第五判断处理模块、第六判断处理模块(图5是图4中帧内预测基本块统计模块的结构图),
第一基本块设置模块,用于设置初始值,即令n=1;即设置当前基本块为第一个基本块。
其中,numberI表示framedec帧中帧内预测基本块的个数;n表示blockn dec在framedec中的位置序号;
第五判断处理模块,用于判断是否(
∈frame
dec)且(block
n dec为帧内预测基本块或者block
n dec至少包含一个为帧内预测基本块的子块),若是,则令number
I=number
I+1,然后进入第六判断处理模块;若否,则直接进入第六判断处理模块。
其中,blockn dec表示当前转码帧对应的输入端解码帧的第n个基本块;
第六判断处理模块,用于判断下一个基本块是否存在,若是则设置下一个基本块为当前基本块,然后重新进入第五判断处理模块;否则,进入第二判断处理模块。
其中,Thres2表示第二阈值,一般Thres2>0.8;numberblock表示一帧图像包含的基本块的个数。
进一步地,所述场景判断模块还包括解码模块、第二基本块设置模块、基本块预测模式判断模块、第七判断处理模块(图6是图4中场景判断模块的结构图),
解码模块,用于找到当前转码帧播放顺序上对应的前一个输入解码帧及后一个输入解码帧,然后对上述两帧图像进行解码。
其中,将当前转码帧播放顺序上对应的前一个输入解码帧及后一个输入解码帧分别记为
第二基本块设置模块,用于设置初始值,n=1(即设置当前基本块为第一个基本块);
基本块预测模式判断模块,用于判断是否所述两帧图像相同位置的基本块的预测模式都是Skip模式,若是则计算当前转码帧当前基本块统计变量;否则,设置当前转码帧当前基本块统计变量为0。
所述“计算当前转码帧当前基本块统计变量”具体为:
tp=std(y
prev,n(i,j)-y
next,n(i,j)|y
prev,n(i,j)∈block
prev,n dec并且y
next,n(i,j)∈block
next,n dec)其中,sig
t,n表示当前转码帧当前基本块的统计变量;std(变量|条件)表示对满足条件的变量求均方差;Thres
3表示第三阈值,一般Thres
3<900/fps,fps表示帧率;tp表示中间变量;y
prev,n(i,j)表示
第n个基本块第i行第j列的亮度值;y
next,n(i,j)表示
第n个基本块第i行第j列的亮度值;block
prev,n dec表示
第n个基本块;block
next,n dec表示
第n个基本块。
第七判断处理模块,用于判断是否sum(sigt,n|sigt,n=1)/sum(sigt,n|sigt,n≠0)>Thres4,若是则判定framet与前一帧转码帧属于同一场景;否则,判定framet与前一帧转码帧不属于同一场景。
其中,Thres4表示第四阈值,一般Thres4>0.8;sum(变量|条件)表示对满足条件的变量求和。
本领域的普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序指令相关硬件来完成的,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质可以为ROM、RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。