CN111355989A - 一种帧率控制方法及相关设备 - Google Patents

一种帧率控制方法及相关设备 Download PDF

Info

Publication number
CN111355989A
CN111355989A CN201811574897.3A CN201811574897A CN111355989A CN 111355989 A CN111355989 A CN 111355989A CN 201811574897 A CN201811574897 A CN 201811574897A CN 111355989 A CN111355989 A CN 111355989A
Authority
CN
China
Prior art keywords
video stream
output video
loss index
index table
path
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811574897.3A
Other languages
English (en)
Other versions
CN111355989B (zh
Inventor
聂霖鑫
夏刚
周玮
许利显
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanechips Technology Co Ltd
Original Assignee
Sanechips Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sanechips Technology Co Ltd filed Critical Sanechips Technology Co Ltd
Priority to CN201811574897.3A priority Critical patent/CN111355989B/zh
Publication of CN111355989A publication Critical patent/CN111355989A/zh
Application granted granted Critical
Publication of CN111355989B publication Critical patent/CN111355989B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64784Data processing by the network
    • H04N21/64792Controlling the complexity of the content stream, e.g. by dropping packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/18Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明实施例公开了一种帧率控制方法及相关设备,其中方法之一包括:生成满足第一条件的各路输出视频流对应的丢帧索引表,所述第一条件为所有输出视频流总信息损失最少;根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。如此,本发明实施例提供了对多路输出视频流的实时帧率控制方案,能够实现对多路输出视频流输出帧率进行控制。

Description

一种帧率控制方法及相关设备
技术领域
本发明实施例涉及但不限于图像处理领域,更具体的涉及一种帧率控制方法及相关设备。
背景技术
随着安防监控技术和多媒体技术的不断发展,监控设备被广泛应用于各个行业中,对监控设备也有了更多更复杂的需求。例如,通常情况下,视频监控芯片的视频预处理引擎(VPE,Video Pre-process Engine)需要能够同时输出多路不同分辨率、不同帧率的视频流,用于满足不同的业务需求。
但是现有技术都是针对一路输出视频流进行帧率控制,对于多路输出视频流的实时帧率控制缺少方案。
发明内容
有鉴于此,本发明实施例提供了一种帧率控制方法,包括:
生成满足第一条件的各路输出视频流对应的丢帧索引表,所述第一条件为所有输出视频流总信息损失最少;
根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
本发明实施例还提供了一种帧率控制方法,包括:
生成各路输出视频流对应的丢帧索引表;
根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
本发明实施例还提供了一种帧率控制装置,包括:
生成单元,用于生成满足第一条件的各路输出视频流对应的丢帧索引表,所述第一条件为所有输出视频流总信息损失最少;
帧率控制单元,用于根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
本发明实施例还提供了一种帧率控制装置,包括:
生成单元,用于生成各路输出视频流对应的丢帧索引表;
帧率控制单元,用于根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
本发明实施例还提供了一种帧率控制装置,包括:软件和硬件两大部分,其中,
在软件部分中,包括:
丢帧索引表生成模块2,用于生成各路输出视频流对应的丢帧索引表,或者生成满足第一条件的各路输出视频流对应的丢帧索引表,所述第一条件为所有输出视频流总信息损失最少;
中断检测模块3:获取硬件部分中帧同步硬件模块6上报的中断信息;
中断判断模块4:判断中断是否是帧输入中断,如果是,继续执行输出控制模块5;否则返回中断检测模块3,继续获取中断信息;
输出控制模块5:对有效的帧输入中断计数,并在各路输出视频流的丢帧索引表中查找相应位置的值,如果是1,则开启相应的输出通道;否则关闭相应的输出通道;
在硬件部分中,包括:
帧同步硬件模块6:用于检测输入视频流的场同步信号VSYNC边沿,并通过中断上报给软件部分中的中断检测模块3;
输出通道使能硬件模块7:用于接收软件部分中输出控制模块5发送的各个通道开关信息,1表示打开相应的输出通道,0表示关闭相应的输出通道,根据所述各个通道开关信息实现输出或者丢弃当前帧的操作。
本发明实施例还提供了一种视频预处理引擎VPE,包括如上述任一项所述的帧率控制装置。
本发明实施例还提供了一种帧率控制设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述任一项所述帧率控制方法。
本发明实施例还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有信息处理程序,所述信息处理程序被处理器执行时实现上述任一项所述帧率控制方法的步骤。
与相关技术相比,本发明实施例提供了一种帧率控制方法及相关设备,其中方法之一包括:生成满足第一条件的各路输出视频流对应的丢帧索引表,所述第一条件为所有输出视频流总信息损失最少;根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。如此,本发明实施例提供了对多路输出视频流的实时帧率控制方案,能够满足对多路输出视频流输出帧率进行控制的需求。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例一提供的帧率控制方法的流程示意图;
图2为本发明实施例二提供的帧率控制方法的流程示意图;
图3为本发明三提供的计算单路输出视频流的算子信息表的方法的流程示意图;
图4为本发明三提供的生成单路输出视频流对应的初始丢帧索引表的方法的流程示意图;
图5为本发明三提供的生成输出视频流总信息损失最少的条件的方法的流程示意图;
图6为本发明实施例六提供的对第n路(chn_id==n)输出视频流进行循环移位操作的方法的流程示意图;
图7为本发明实施例七提供的对第n路(chn_id==n)输出视频流进行帧率控制的方法的流程示意图;
图8为本发明实施例八提供的帧率控制方法的流程示意图;
图9为本发明实施例九提供的对第n路(chn_id==n)输出视频流对应的循环移位后的丢帧索引表或初始丢帧索引表进行错位操作的方法的流程示意图;
图10为本发明实施例十提供的帧率控制方法的流程示意图
图11为本发明实施例十一提供的帧率控制方法的流程示意图;
图12为本发明实施例十二提供帧率控制装置的结构示意图;
图13为本发明实施例十三提供的另一种帧率控制装置的结构示意图;
图14为本发明实施例十四提供的另一种帧率控制装置的结构示意图;
图15本发明实施例提供的VPE的使用场景的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
鉴于现有技术都是针对一路输出视频流进行帧率控制,对于多路输出视频流的实时帧率控制缺少方案。本发明实施例提出了一种针对多路输出视频流实时帧率控制方案,可以在不增加硬件复杂度的情况下,解决多路输出视频流输出不同帧率的需求,并且可以保证输出视频流帧率稳定,或者时域均匀,或者总的输出信息损失最少等需求。
实施例一
图1为本发明实施例一提供的帧率控制方法的流程示意图,如图1所示,该方法包括:
步骤101,生成满足第一条件的各路输出视频流对应的丢帧索引表,所述第一条件为所有输出视频流总信息损失最少;
步骤102,根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
其中,所述丢帧索引表的长度等于输入视频流的帧率值,所述丢帧索引表的每个元素记录当前输入帧采样时间点上输出视频流是否进行丢帧操作。
其中,所述生成满足第一条件的各路输出视频流对应的丢帧索引表,包括:
计算各路输出视频流对应的算子信息表,所述算子信息表包括标志位flag、除数div、商qot和积数mul信息;
根据各路输出视频流对应的算子信息表计算得到各路输出视频流对应的初始丢帧索引表;
判断所述各路输出视频流对应的初始丢帧索引表是否满足第一条件,如果满足,则将所述各路输出视频流的初始丢帧索引表作为所述各路输出视频流对应的丢帧索引表。
其中,该方法还包括:
如果不满足,则对所述各路输出视频流对应的初始丢帧索引表依次进行循环移位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表或者对所有的输出视频流的初始丢帧索引表都进行了循环移位操作。
其中,该方法还包括:
如果对所有的输出视频流的初始丢帧索引表都进行了循环移位操作后仍然无法生成满足第一条件的各路输出视频流对应的丢帧索引表,则对所述各路输出视频流对应的循环移位后的丢帧索引表依次进行错位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表;
或者,如果不满足,则直接对所述各路输出视频流对应的初始丢帧索引表依次进行错位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表。
其中,所述计算各路输出视频流对应的算子信息表,包括:
计算一路输出视频流的标志位flag,包括:比较所述一路输出视频流的帧率与输入视频流的帧率和所述一路输出视频流的帧率之间的差值,如果所述一路输出视频流的帧率大于输入视频流的帧率和所述一路输出视频流的帧率之间的差值,则所述一路输出视频流的标志位flag为0;如果所述一路输出视频流的帧率小于等于输入视频流的帧率和所述一路输出视频流的帧率之间的差值,则所述一路输出视频流的标志位flag为1;
计算所述一路输出视频流的除数div,包括:当所述一路输出视频流的标志位flag为0时,将输入视频流的帧率和所述一路输出视频流的帧率之间的差值作为所述一路输出视频流的除数div;当当所述一路输出视频流的标志位flag为1时,将所述一路输出视频流的帧率作为所述一路输出视频流的除数div;
计算所述一路输出视频流的商qot和积数mul,包括:所述一路输出视频流的商qot为所述输入视频流的帧率整除所述除数div得到的值,所述一路输出视频流的积数mul为所述一路输出视频流的商qot与所述所述一路输出视频流的除数div相乘得到的值;
针对除了所述一路输出视频流之外的其他路输出视频流,分别重复上述操作,直到得到各路输出视频流对应的算子信息表。
其中,所述根据各路输出视频流对应的算子信息表计算得到各路输出视频流对应的初始丢帧索引表,包括:
获取一路输出视频流的算子信息表;
判断所述一路输出视频流的标志位flag是否为1,当为1时,将所述一路输出视频流的原始丢帧索引表的各个元素全部初始化为0,当不为1时,将所述一路输出视频流的原始丢帧索引表的各个元素全部初始化为1;设置初始化变量cnt为1;
比较所述一路输出视频流的积数mul与所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果;
如果所述一路输出视频流的积数mul小于等于所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,则将所述一路输出视频流的原始丢帧索引表作为所述一路输出视频流对应的初始丢帧索引表;
如果所述一路输出视频流的积数mul大于所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,则将所述一路输出视频流的原始丢帧索引表中所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果位置的对应的元素进行取反操作,并将所述初始化变量cnt加1后,返回所述比较所述一路输出视频流的积数mul与所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,依次类推,直到得到所述一路输出视频流对应的初始丢帧索引表;
针对除了所述一路输出视频流之外的其他路输出视频流,分别重复上述操作,直到得到各路输出视频流对应的初始丢帧索引表。
其中,在生成满足第一条件的各路输出视频流对应的丢帧索引表之前,该方法还包括:
比较输入视频流的帧率和所有输出视频流的帧率之和;
如果输入视频流的帧率大于所有输出视频流的帧率之和,则所述第一条件为将所有输出视频流的丢帧索引表对应位置相或后的结果求和得到的求和结果等于所有输出视频流的帧率之和;
如果输入视频流的帧率小于等于所有输出视频流的帧率之和,则所述第一条件为将所有输出视频流的丢帧索引表对应位置相或后的结果求和得到的求和结果等于输入视频流的帧率。
其中,所述对所述各路输出视频流对应的初始丢帧索引表依次进行循环移位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表或者对所有的输出视频流的初始丢帧索引表都进行了循环移位操作,包括:
根据各路输出视频流的帧率按从大到小的顺序对各个输出视频流进行排序;
其中,帧率越大,其通道号chn_id越小,帧率最大值的通道号chn_id=0;帧率最小值的通道号为chn_id=输出通道总数目chn_top_num-1;
根据所述排序,以第0路输出视频流(chn_id==0)的初始丢帧索引表作为基准,从第1路输出视频流(chn_id==1)的初始丢帧索引表依次开始进行循环移位操作,用一个数组val[j],j取值[0,chn_top_num],用于记录每路输出视频流的循环移位位数;
对第n(chn_id==n)路对应的初始丢帧索引表进行循环移位操作,n取值[1,chn_top_num-1]包括:
val[n]初始化为0,i初始化为n-1;
比较第n路输出视频流与第i路输出视频流的算子信息表中的商qot和标志位flag;
如果满足flag相等且qot能够整除的条件,则将第i路输出视频流的val[n]值加1后赋值给第n路输出视频流的val[n]值,第n路输出视频流的初始丢帧索引表循环移位val[n]位,判断所述循环移位后的第n路输出视频流的初始丢帧索引表是否满足第一条件,如果满足则结束循环移位操作,如果不满足则对第n+1路对应的初始丢帧索引表进行循环移位操作;
如果满足flag相等,qot不能够整除且i==0的条件,则计算两个商之间的最大公约数m,将该路视频流的val[n]值赋为m-1,第n路输出视频流的初始丢帧索引表循环移位val[n]位,判断所述循环移位后的第n路输出视频流的初始丢帧索引表是否满足第一条件,如果满足则结束循环移位操作,如果不满足则对第n+1路对应的初始丢帧索引表进行循环移位操作;
如果满足flag不相等且qot能够整除的条件,则将第i路输出视频流的val[i]直接赋值给val[n],第n路输出视频流的初始丢帧索引表循环移位val[n]位,判断所述循环移位后的第n路输出视频流的初始丢帧索引表是否满足第一条件,如果满足则结束循环移位操作,如果不满足则对第n+1路对应的初始丢帧索引表进行循环移位操作;
如果不满足下面条件至少之一,则判断i是否为0,如果不是0,则将i减1后,跳转到所述比较第n路输出视频流与第i路输出视频流的算子信息表中的商qot和标志位flag;否则开始对第n+1路对应的初始丢帧索引表进行循环移位操作:
flag相等且qot能够整除;flag相等,qot不能够整除且i==0;flag不相等且qot能够整除。
其中,所述对所述各路输出视频流对应的循环移位后的丢帧索引表或初始丢帧索引表依次进行错位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表,包括:
根据各路输出视频流的帧率按从大到小的顺序对各个输出视频流进行排序;
其中,帧率越大,其通道号chn_id越小,帧率最大值的通道号chn_id=0;帧率最小值的通道号为chn_id=输出通道总数目chn_top_num-1;
根据所述排序,以第0路输出视频流(chn_id==0)的循环移位后的丢帧索引表或初始丢帧索引表作为基准,从第chn_top_num-1路输出视频流(chn_id==chn_top_num-1)的循环移位后的丢帧索引表或初始丢帧索引表开始依次进行错位操作;
对第n(chn_id==n)路对应的循环移位后的丢帧索引表或初始丢帧索引表进行错位操作,n取值[1,chn_top_num-1],包括:
将所有输出视频流的循环移位后的丢帧索引表或初始丢帧索引表对应位置相加,得到一个总丢帧索引表,记作top_frc_index;初始化变量i=0;
检索top_frc_index,找到top_frc_index[i]==0的位置i;
以i为起点检索,找到一个距离最近的起点j,该点满足top_frc_index[j]>1且outn_frc_index[j]==1;
在outn_frc_index中交换i与j位置的值,完成错位操作;
判断进行错位操作后的各路输出视频流对应的丢帧索引表是否满足第一条件,如果满足则结束错位操作;
如果不满足,判断当前输出视频流丢帧索引表检索是否完成,如果没有完成,则更新top_frc_index后跳转到所述检索top_frc_index继续检索,否则开始对第n-1路对应的循环移位后的丢帧索引表或初始丢帧索引表进行错位操作。
其中,所述根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制,包括:
根据第n路输出视频流对应的丢帧索引表,对第n路输出视频流进行帧率控制,n取值为[0,输出通道总数目chn_top_num-1],包括:
检测输入视频流的场同步VSYNC信号,并使用计数器cnt对其进行计数;
计算所述cnt值与输入视频流的帧率的余数i;
判断第n路输出视频流对应的丢帧索引表中位置i的值是否为1;
如果为1,则输出当前帧,否则丢掉当前帧;
重复上述操作,直至完成对各路输出视频流的帧率控制。
下面通过几个具体的实施例详细阐述本发明实施例一提供的技术方案。
实施例二
图2为本发明实施例二提供的帧率控制方法的流程示意图,如图2所示,该方法包括:
步骤201,获取输入视频流的帧率和各路输出视频流的帧率;
其中,在进行帧率控制之前,可以实时获取输入视频流的帧率、各路输出视频流的帧率和数量。
具体而言,可以实时获取用户配置的输入视频流的帧率(src_frame_rate)、输出通道总数目(chn_top_num)、各路输出视频流的帧率(dst_frame_rate[i]),其中i表示输出通道序号,取值[0,chn_top_num)。
步骤202,对各路输出视频流进行排序;
其中,该步骤为可选步骤。排序的目的是确定后续对所有输出视频流的丢帧索引表进行循环移位操作或错位操作的计算顺序。
具体而言,可以根据各路输出视频流的帧率,按从大到小的顺序对输出视频流进行排序,帧率越大,其通道号(chn_id)越小。帧率最大值,其通道号为0;帧率最小值,其通道号为chn_top_num-1。该步骤是优选的,排序的目的主要是为了减少后面步骤的循环次数,帧率值越大,其丢帧的数量就越少,越先计算,就容易满足总输出视频流丢帧最少的条件。
步骤203,计算各路输出视频流的算子信息表;
其中,可以根据输入视频流的帧率值和各路输出视频流的帧率值之间的关系,分别计算每路输出视频流的算子信息,建立初始的算子信息表,用于计算每路输出视频流的初始丢帧索引表。算子信息表主要记录输入视频流与每路输出视频流帧率之间的关系,其内容包括:丢帧标志位、商、乘数、余数等信息。
步骤204,生成输出视频流总信息损失最少的条件;
其中,输出视频流总信息损失最少的条件以下可以称之为第一条件。该条件的目的是保证最终生成的丢帧索引表,在进行帧率控制时各路输出视频流总的丢帧数量最少。根据所有输出视频流帧率之和与输入视频流帧率比较结果,生成不同的输出视频流总信息损失最少条件。
步骤205,生成各路输出视频流对应的初始丢帧索引表;
其中,可以根据每路输出视频流的算子信息表,分别计算出每路输出视频流的原始丢帧索引表。丢帧索引表由若干元素组成,其长度等于输入视频流的帧率值,每个元素记录当前输入帧采样时间点上输出视频流是否进行丢帧操作。每路输出视频流通过其丢帧索引表保证输出固定帧率的视频流。此时计算出的丢帧索引表,能够保证其对应的输出视频流在时间上的均匀性。
如果各路输出视频流对应的初始丢帧索引表满足第一条件,则将各路输出视频流对应的初始丢帧索引表直接作为每路输出视频流最终实际的丢帧索引表,执行步骤207;如果各路输出视频流对应的初始丢帧索引表不满足第一条件,则执行步骤206;
步骤206,对各路输出视频流的初始丢帧索引表进行循环移位操作;
其中,通过对丢帧索引表进行循环移位操作来满足输出视频流总信息损失最少的条件,而且不会对丢帧索引表的时域均匀性造成破坏,每进行一次循环移位操作都要进行总信息损失最少条件判断,直到满足条件或所有输出视频流循环移位结束,生成最终的丢帧索引表。
其中,当根据步骤206生成满足第一条件的各路输出视频流对应的丢帧索引表时,可以执行步骤207;如果直到所有输出视频流循环移位结束都没有生成满足第一条件的各路输出视频流对应的丢帧索引表时,还可以对各路输出视频流的初始索引表进行错位操作,生成满足第一条件的各路输出视频流对应的丢帧索引表。
步骤207,根据每路输出视频流最终实际的丢帧索引表,控制各路输出视频流打开和关闭。
其中,每路输出视频流最终实际的丢帧索引表需要满足总的输出视频流丢帧最少,从而能实现对各路输出视频流的帧率控制。
本发明实施例二提供的技术方案,可以适用于视频监控芯片等中一路视频流输入通道和若干路视频流输出通道的场景,每个输出视频流都可以通过该帧率控制方法进行实时丢帧操作,来输出指定帧率的、帧间隔均匀的视频流,且总的输出视频流丢帧最少,可以同时满足各种帧率需求。
实施例三
本发明实施例三是针对实施例二中计算各路输出视频流的算子信息表的详细表述。算子信息表的内容包括:标志位(flag)、除数(div),商(qot),积数(mul)信息。
图3为本发明三提供的计算单路输出视频流的算子信息表的方法的流程示意图,如图3所示,该方法包括:
步骤301,计算标志位(flag);
对一路输出视频流的帧率dst_frame_rate[chn_id]与输入视频流的帧率src_frame_rate和该路输出视频流的帧率dst_frame_rate[chn_id]之差进行比较,若前者大,则标志位(flag)为0;若两者相等或后者大,则标志位(flag)为1。flag的含义是表示该路输出视频流在1秒内,若丢失帧的数量多标志位为1,否则就是通过帧的数量多标志位为0。
步骤302,计算除数(div);
其中,可以根据步骤301的计算结果,若标志位为0,则将输入视频流的帧率src_frame_rate和该路输出视频流的帧率dst_frame_rate[chn_id]之差作为除数;若标志位为1,则该路输出视频流的帧率dst_frame_rate[chn_id]作为除数。
步骤303,计算商(qot)和积(mul)。
其中,商的值通过输入视频流的帧率src_frame_rate整除步骤302计算的除数得出,积的值通过商与除数相乘得到。商的含义表示丢弃帧或通过帧的间隔,用于保证输出视频流帧间隔的均匀性。积的含义表示1秒内在积数量个帧后的剩余帧统一丢弃和通过,用于保证输出视频流的帧率值。
例如,以输入视频流帧率25(src_frame_rate==25),一路输出视频流帧率20(dst_frame_rate==20)为例,对步骤301-303进行举例说明:步骤301中根据输出视频流帧率20大于src_frame_rate-dst_frame_rate(25-20),计算出算子信息中标志位flag==0;步骤302中除数根据标志位的值,确定除数div为src_frame_rate-dst_frame_rate==5;步骤303中商(qot)等于输入视频流的帧率(src_frame_rate==25)除以除数(div==5),结果为5,积(mul)等于除数(div)乘以商(qot),结果为25。
通过步骤301-303个步骤可以计算出一路输出视频流的算子信息,将剩余几路输出视频流按顺序依次通过这些步骤,就能计算出所有输出视频流的算子信息,建立帧率控制的算子信息表。
实施例四
本发明实施例四是针对实施例二中生成各路输出视频流对应的初始丢帧索引表的详细表述。
图4为本发明三提供的生成单路输出视频流对应的初始丢帧索引表的方法的流程示意图,如图4所示,该方法包括:
步骤401,获取一路输出视频流的算子信息表的内容,包括:标志位(flag),商(qot)和积(mul);
步骤402,判断标志位(flag)的值是否为1,然后继续下一步;
步骤403,若标志位为1,则将原始丢帧索引表(frc_index[src_frame_rate])全部初始化为0,否则将原始丢帧索引表全部初始化为1;初始化变量cnt为1;
步骤404,将积(mul)与变量cnt和商(qot)相乘的结果进行比较,若前者大,继续下一步;
其中,若两者相等或前者小,则直接退出,结束流程,进行初始化后的原始丢帧索引表即为该路输出视频流的初始丢帧索引表。
步骤405,将丢帧索引表中cnt*qot位置的对应的值进行取反操作,即0变成1,1变成0;
步骤406,对变量cnt进行加1操作后,返回步骤404。
其中,每路输出码流经过步骤404后,生成的丢帧索引表就是该路输出视频流的初始丢帧索引表。此时的丢帧索引表已经能够保证输出视频流时域的均匀性。
通过步骤401-406个步骤可以计算出一路输出视频流的初始丢帧索引表,将剩余几路输出视频流按顺序依次通过这些步骤,就能计算出所有输出视频流的初始丢帧索引表。
例如,以输入视频流帧率25(src_frame_rate==25),一路输出视频流帧率20(dst_frame_rate==20)为例,在实施例三中步骤301-303进行举例说明得到一路输出视频流的蒜子信息表的基础上:标志位flag==0;除数div为src_frame_rate-dst_frame_rate==5;商(qot)等于输入视频流的帧率(src_frame_rate==25)除以除数(div==5),结果为5,积(mul)等于除数(div)乘以商(qot),结果为25。在此基础上,步骤401中,获取该路路输出视频流的蒜子信息表,其中,标志位(flag==0),商(qot==5),积(mul==25);步骤402中,根据标志位(flag)为0,步骤403中,将丢帧索引表中的所有元素初始化为1,变量cnt初始化为1,如表1.1所示;
表1.1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
步骤404中,对mul与cnt*qot的值进行比较,cnt*qot==5,此时cnt*qot<mul;步骤405中,将5对应位置的丢帧索引表位置的值进行取反,计算结果如表1.2所示;
表1.2
1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
步骤406中,将变量cnt加1后跳转到第4步,直到cnt*qot≥mul,即cnt==5时计算完成,最终计算结果如表1.3所示;
表1.3
1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0
表1.3就是该路输出视频流的初始丢帧索引表,经过步骤401-406生成的初始丢帧索引表,0和1均匀分布,从而保证输出视频流帧间隔时域上的均匀性。
另外由于所有的输出视频流经过相同的步骤后生成的丢帧索引表,如果不能保证所有输出视频流丢帧索引表的相关性最低,即所有输出视频流总的丢帧数最低,还可以进行后续步骤进行调整。
实施例五
本发明实施例五是针对实施例二中生成输出视频流总信息损失最少的条件的详细表述。
图5为本发明三提供的生成输出视频流总信息损失最少的条件的方法的流程示意图,如图5所示,该方法包括:
步骤501,将所有输出视频流的丢帧索引表对应位置相或后的结果求和,记作top_frc_val;
步骤502,比较输入视频流帧率与所有输出视频流帧率之和;
步骤503,根据步骤502的比较结果,若前者大,则总信息损失最少的条件为:求和的结果(top_frc_val)等于所有输出视频流的帧率之和;否则总信息损失最少的条件为:求和的结果(top_frc_val)等于输入视频流的帧率(src_frame_rate);
步骤504,判断此时输出视频流的丢帧索引表是否满足总信息损失最少的条件,如果满足条件可以直接退出计算,否则继续进行后面的步骤,例如对各路输出视频流的丢帧索引表进行循环移位操作。
本发明实施例五提供的技术方案,生成所有输出视频流总信息损失最少的条件,用于判断当前所有输出视频流的丢帧索引表是否已满足需求。
例如,两路输出视频流的帧率分别为20(dst_frame_rate[0]==20)、5(dst_frame_rate[1]==5),输入视频流的帧率为25(src_frame_rate==25),经过实施例四中步骤401-406生成的丢帧索引表分别如表1.4和表1.5所示,这两个丢帧索引表相与之后求和的结果为25,满足总信息损失最少的条件。
表1.4
1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0
表1.5
0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
实施例六
本发明实施例六是针对实施例二中对各路输出视频流的初始丢帧索引表进行循环移位操作的详细表述。
首先,按照实施例二中步骤202中输出各路输出视频流的排序,以第0路输出视频流(chn_id==0)的丢帧索引表作为基准,从第1路输出视频流(chn_id==1)的丢帧索引表依次开始进行循环移位操作,用一个数组val[j],j取值[0,chn_top_num),用于记录每路输出视频流的循环移位位数。
图6为本发明实施例六提供的对第n路(chn_id==n)输出视频流进行循环移位操作的方法的流程示意图,如图6所示,该方法包括:
步骤601,val[n]初始化为0,i初始化为n-1;
步骤602,比较第n路输出视频流与第i路输出视频流的算子信息表中的商(qot)和标志位(flag);商(qot)的比较是判断是否能够整除,整除只需要保证一路能够被另一路整除即可,标志位(flag)的比较是判断是否相等;
步骤603,如果满足flag相等且qot能够整除的条件,则将第i路输出视频流的val[n]值加1后赋值给第n路输出视频流的val[n]值,丢帧索引表循环移位val[n]位,然后跳转到步骤607;否则继续下一步;
步骤604,如果满足flag相等,qot不能够整除且i==0的条件,则计算两个商之间的最大公约数m,将该路视频流的val[n]值赋为m-1,丢帧索引表循环移位val[n]位,然后跳转到步骤607;否则继续下一步;
步骤605,如果满足flag且不等qot能够整除的条件,则将第i路输出视频流的val[i]直接赋值给val[n],丢帧索引表循环移位val[n]位,然后跳转到步骤607;否则继续下一步;
步骤606,判断i是否为0,如果不是,则将i减1后,跳转到步骤602;否则从步骤601开始对下一路视频流进行循环移位操作;
步骤607,判断所有输出视频流总信息损失最少,使用的判断条件由实施例五提供的方案生成;如果满足条件直接退出整个计算;否则从步骤601开始对下一路视频流进行循环移位操作。
如此,从第1路输出视频流的丢帧索引表开始进行循环移位操作,直到满足输出视频流总信息损失最少的条件或者对所有的输出视频流都进行了循环移位操作,整个循环移位操作完成。
本发明实施例六提供的技术方案,是在不破坏通道丢帧索引表时域均匀性的前提下,来保证所有输出视频流总信息损失最少。
实施例七
本发明实施例七是针对实施例二中对各路输出视频流进行帧率控制的详细表述。
图7为本发明实施例七提供的对第n路(chn_id==n)输出视频流进行帧率控制的方法的流程示意图,如图7所示,该方法包括:
步骤701,检测输入视频流的VSYNC(vertical synchronization垂直同步/帧同步/场同步)信号,并使用计数器cnt对其计数;
步骤702,计算cnt值与输入视频流的帧率src_frame_rate的余数i;
步骤703,判断第n路(chn_id==n)输出视频流的丢帧索引表位置i的值outn_frc_index[i]是否为1;
步骤704,如果步骤703中条件满足,则第n路输出视频流输出当前帧;否则丢掉当前帧;
重复上述操作,直至完成对第n路输出视频流的帧率控制。
通过步骤701-704可以实现对第n路输出视频流的帧率控制,将剩余几路输出视频流按顺序依次通过这些步骤,实现对其他路输出视频流的帧率控制。
本发明实施例二至七提供的技术方案,通过利用输入视频流和多路输出视频流的帧率值之间的关系,为每路输出视频流生成丢帧索引表,通过丢帧索引表实现多路输出视频流的实时均匀帧率控制;具有实时性、时域均匀性和总丢帧数尽量少的特点,能够保证输出任意输出帧率的视频流。
实施例八
本发明实施例八应用于满足总丢帧数最少条件而对时域均匀性要求不太严格的场景。
图8为本发明实施例八提供的帧率控制方法的流程示意图,如图8所示,该方法包括:
步骤801-806,其与实施例二中的步骤201-206相同,在此不再赘述;
如果经过循环移位操作后,仍然无法得到满足第一条件的各路输出视频流对应的丢帧索引表,可以继续执行步骤807;
步骤807,对各路输出视频流的循环移位后的丢帧索引表进行错位操作;
其中,通过对丢帧索引表中元素位置进行错位交换来满足输出视频流总信息损失最少的条件,但会对丢帧索引表的时域均匀性造成破坏,每进行一次错位操作后都需要进行总信息损失最少条件判断,以保证计算能够更快完成。
步骤808,根据满足第一条件的各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
其中,可以根据每路输出视频流最终实际的丢帧索引表,控制各路输出视频流打开和关闭,从而能实现输出指定帧率的视频流。
本发明实施例八提供的技术方案,在某些情况下的输出视频流帧率在经过步骤801-806后,还无法满足总丢帧数目最少的条件时,可以对输出视频流的丢帧索引表进行错位操作,从而得到满足第一条件的各路输出视频流对应的丢帧索引表。但是该方案,会对输出视频流丢帧索引表的时域均匀性造成破坏,因此适用于对时域均匀性要求不太严格的场景。
实施例九
本发明实施例九是针对实施例八中对各路输出视频流的循环移位后的丢帧索引表进行错位操作的详细表述。
其中,首先,按照实施例二中步骤202中输出各路输出视频流的排序,以第0路输出视频流(chn_id==0)的丢帧索引表作为基准,从帧率最小的输出视频流丢帧索引表依次开始进行错位操作。
图9为本发明实施例九提供的对第n路(chn_id==n)输出视频流对应的循环移位后的丢帧索引表进行错位操作的方法的流程示意图,如图9所示,该方法包括:
步骤901,将所有输出视频流的丢帧索引表对应位置相加,得到一个总丢帧索引表,记作top_frc_index;初始化变量i=0;
步骤902,检索top_frc_index,找到top_frc_index[i]==0的位置i;
步骤903,初始化变量k=0;
步骤904,以i为起点检索,找到一个距离最近的起点j,该点满足top_frc_index[j]>1且outn_frc_index[j]==1;
步骤905,在outn_frc_index中交换i与j位置的值,完成了错位操作;
步骤906,判断输出视频流总丢帧数是否最少,若满足条件,表示计算完成直接退出,否则继续下一步;
步骤907,判断当前输出视频流丢帧索引表检索是否完成,如果没有完成,则更新top_frc_index后跳转到步骤902继续检索,否则从第1步开始对下一路输出码丢帧索引表流进行错位操作。
其中,错位操作最多进行到第1路视频流的丢帧索引表,而作为基准的第0路输出视频流丢帧索引表不需要进行错位操作。错位操作的计算顺序是从最后一路输出视频流的丢帧索引表开始进行,直到满足所有输出视频流总信息损失最少的条件,整个步骤907结束。经过步骤907后,生成的丢帧索引表就是输出视频流最终满足第一条件的丢帧索引表。
本发明实施例九提供的技术方案,直接交换丢帧索引表中元素的位置,所以最终一定能满足所有输出视频流总信息损失最少的条件,但执行的次数越多,对丢帧索引表的时域均匀性破坏越严重,因此适用于对时域均匀性要求不太严格的场景。
另外,对于要求满足总丢帧数最少条件而对时域均匀性要求不太严格的场景,当各路输出视频流对应的初始丢帧索引表不满足第一条件时,可以直接进行错位操作,而不是先进行循环移位再进行错位操作;对直接各路输出视频流对应的初始丢帧索引表直接进行错位操作的过程与上述步骤901-907相同,在此不再赘述。
实施例十
本发明实施例十应用于只需要满足帧率控制的时域均匀性而对总丢帧数无要求的场景。
图10为本发明实施例十提供的帧率控制方法的流程示意图,如图10所示,该方法包括:
步骤1001,生成各路输出视频流对应的丢帧索引表;
步骤1002,根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
其中,所述丢帧索引表的长度等于输入视频流的帧率值,所述丢帧索引表的每个元素记录当前输入帧采样时间点上输出视频流是否进行丢帧操作。
其中,所述生成各路输出视频流对应的丢帧索引表,包括:
计算各路输出视频流对应的算子信息表,所述算子信息表包括标志位flag、除数div、商qot和积数mul信息;
根据各路输出视频流对应的算子信息表计算得到各路输出视频流对应的初始丢帧索引表;
直接将所述各路输出视频流的初始丢帧索引表作为所述各路输出视频流对应的丢帧索引表。
其中,所述计算各路输出视频流对应的算子信息表,包括:
计算一路输出视频流的标志位flag,包括:比较所述一路输出视频流的帧率与输入视频流的帧率和所述一路输出视频流的帧率之间的差值,如果所述一路输出视频流的帧率大于输入视频流的帧率和所述一路输出视频流的帧率之间的差值,则所述一路输出视频流的标志位flag为0;如果所述一路输出视频流的帧率小于等于输入视频流的帧率和所述一路输出视频流的帧率之间的差值,则所述一路输出视频流的标志位flag为1;
计算所述一路输出视频流的除数div,包括:当所述一路输出视频流的标志位flag为0时,将输入视频流的帧率和所述一路输出视频流的帧率之间的差值作为所述一路输出视频流的除数div;当当所述一路输出视频流的标志位flag为1时,将所述一路输出视频流的帧率作为所述一路输出视频流的除数div;
计算所述一路输出视频流的商qot和积数mul,包括:所述一路输出视频流的商qot为所述输入视频流的帧率整除所述除数div得到的值,所述一路输出视频流的积数mul为所述一路输出视频流的商qot与所述所述一路输出视频流的除数div相乘得到的值;
针对除了所述一路输出视频流之外的其他路输出视频流,分别重复上述操作,直到得到各路输出视频流对应的算子信息表。
其中,所述根据各路输出视频流对应的算子信息表计算得到各路输出视频流对应的初始丢帧索引表,包括:
获取一路输出视频流的算子信息表;
判断所述一路输出视频流的标志位flag是否为1,当为1时,将所述一路输出视频流的原始丢帧索引表的各个元素全部初始化为0,当不为1时,将所述一路输出视频流的原始丢帧索引表的各个元素全部初始化为1;设置初始化变量cnt为1;
比较所述一路输出视频流的积数mul与所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果;
如果所述一路输出视频流的积数mul小于等于所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,则将所述一路输出视频流的原始丢帧索引表作为所述一路输出视频流对应的初始丢帧索引表;
如果所述一路输出视频流的积数mul大于所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,则将所述一路输出视频流的原始丢帧索引表中所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果位置的对应的元素进行取反操作,并将所述初始化变量cnt加1后,返回所述比较所述一路输出视频流的积数mul与所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,依次类推,直到得到所述一路输出视频流对应的初始丢帧索引表;
针对除了所述一路输出视频流之外的其他路输出视频流,分别重复上述操作,直到得到各路输出视频流对应的初始丢帧索引表。
其中,所述根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制,包括:
根据第n路输出视频流对应的丢帧索引表,对第n路输出视频流进行帧率控制,n取值为[0,输出通道总数目chn_top_num-1],包括:
检测输入视频流的场同步VSYNC信号,并使用计数器cnt对其进行计数;
计算所述cnt值与输入视频流的帧率的余数i;
判断第n路输出视频流对应的丢帧索引表中位置i的值是否为1;
如果为1,则输出当前帧,否则丢帧当前帧;
重复上述操作,直至完成对各路输出视频流的帧率控制。
下面通过实施例十一对本发明实施例十提供的技术方案进行详细说明。
实施例十一
图11为本发明实施例十提供的帧率控制方法的流程示意图,如图11所示,该方法包括:
步骤1101-1103,其分别与实施例二中的步骤201、203、205相同,在此不再赘述;
其中,计算各路输出视频流对应的算子信息表的过程可以参见实施例三,计算得到各路输出视频流对应的初始丢帧索引表可以参见实施例四,在此不再赘述。
步骤1104,直接将各路输出视频流的初始丢帧索引表作为各路输出视频流的最终丢帧索引表,根据每路输出视频流丢帧索引表,控制各路输出视频流打开和关闭,从而能实现输出指定帧率的视频流。
其中,根据每路输出视频流丢帧索引表控制各路输出视频流打开和关闭,即帧率控制,可以参见实施例七,在此不再赘述。
本发明实施例十、十一提供的技术方案,不需要对丢帧索引表进行循环移位操作和错位操作,虽然不能保证总丢帧最少的条件,但算法复杂度低,而且能够保证输出视频流的时域均匀性。
实施例十二
可以采用纯软件方式实现帧率控制装置。图12为本发明实施例十一提供帧率控制装置的结构示意图,如图12所示,该装置包括:
生成单元,用于生成满足第一条件的各路输出视频流对应的丢帧索引表,所述第一条件为所有输出视频流总信息损失最少;
帧率控制单元,用于根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
其中,所述丢帧索引表的长度等于输入视频流的帧率值,所述丢帧索引表的每个元素记录当前输入帧采样时间点上输出视频流是否进行丢帧操作。
其中,所述生成单元,具体用于
计算各路输出视频流对应的算子信息表,所述算子信息表包括标志位flag、除数div、商qot和积数mul信息;
根据各路输出视频流对应的算子信息表计算得到各路输出视频流对应的初始丢帧索引表;
判断所述各路输出视频流对应的初始丢帧索引表是否满足第一条件,如果满足,则将所述各路输出视频流的初始丢帧索引表作为所述各路输出视频流对应的丢帧索引表。
其中,如果不满足,则对所述各路输出视频流对应的初始丢帧索引表依次进行循环移位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表或者对所有的输出视频流的初始丢帧索引表都进行了循环移位操作。
其中,所述生成单元,还具体用于
如果对所有的输出视频流的初始丢帧索引表都进行了循环移位操作后仍然无法生成满足第一条件的各路输出视频流对应的丢帧索引表,则对所述各路输出视频流对应的循环移位后的丢帧索引表依次进行错位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表;
或者,如果不满足,则直接对所述各路输出视频流对应的初始丢帧索引表依次进行错位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表。
其中,所述计算各路输出视频流对应的算子信息表,包括:
计算一路输出视频流的标志位flag,包括:比较所述一路输出视频流的帧率与输入视频流的帧率和所述一路输出视频流的帧率之间的差值,如果所述一路输出视频流的帧率大于输入视频流的帧率和所述一路输出视频流的帧率之间的差值,则所述一路输出视频流的标志位flag为0;如果所述一路输出视频流的帧率小于等于输入视频流的帧率和所述一路输出视频流的帧率之间的差值,则所述一路输出视频流的标志位flag为1;
计算所述一路输出视频流的除数div,包括:当所述一路输出视频流的标志位flag为0时,将输入视频流的帧率和所述一路输出视频流的帧率之间的差值作为所述一路输出视频流的除数div;当所述一路输出视频流的标志位flag为1时,将所述一路输出视频流的帧率作为所述一路输出视频流的除数div;
计算所述一路输出视频流的商qot和积数mul,包括:所述一路输出视频流的商qot为所述输入视频流的帧率整除所述除数div得到的值,所述一路输出视频流的积数mul为所述一路输出视频流的商qot与所述所述一路输出视频流的除数div相乘得到的值;
针对除了所述一路输出视频流之外的其他路输出视频流,分别重复上述操作,直到得到各路输出视频流对应的算子信息表。
其中,所述根据各路输出视频流对应的算子信息表计算得到各路输出视频流对应的初始丢帧索引表,包括:
获取一路输出视频流的算子信息表;
判断所述一路输出视频流的标志位flag是否为1,当为1时,将所述一路输出视频流的原始丢帧索引表的各个元素全部初始化为0,当不为1时,将所述一路输出视频流的原始丢帧索引表的各个元素全部初始化为1;设置初始化变量cnt为1;
比较所述一路输出视频流的积数mul与所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果;
如果所述一路输出视频流的积数mul小于等于所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,则将所述一路输出视频流的原始丢帧索引表作为所述一路输出视频流对应的初始丢帧索引表;
如果所述一路输出视频流的积数mul大于所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,则将所述一路输出视频流的原始丢帧索引表中所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果位置的对应的元素进行取反操作,并将所述初始化变量cnt加1后,返回所述比较所述一路输出视频流的积数mul与所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,依次类推,直到得到所述一路输出视频流对应的初始丢帧索引表;
针对除了所述一路输出视频流之外的其他路输出视频流,分别重复上述操作,直到得到各路输出视频流对应的初始丢帧索引表。
其中,还包括比较单元,用于在生成满足第一条件的各路输出视频流对应的丢帧索引表之前,
比较输入视频流的帧率和所有输出视频流的帧率之和;
如果输入视频流的帧率大于所有输出视频流的帧率之和,则所述第一条件为将所有输出视频流的丢帧索引表对应位置相或后的结果求和得到的求和结果等于所有输出视频流的帧率之和;
如果输入视频流的帧率小于等于所有输出视频流的帧率之和,则所述第一条件为将所有输出视频流的丢帧索引表对应位置相或后的结果求和得到的求和结果等于输入视频流的帧率。
其中,所述对所述各路输出视频流对应的初始丢帧索引表依次进行循环移位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表或者对所有的输出视频流的初始丢帧索引表都进行了循环移位操作,包括:
根据各路输出视频流的帧率按从大到小的顺序对各个输出视频流进行排序;
其中,帧率越大,其通道号chn_id越小,帧率最大值的通道号chn_id=0;帧率最小值的通道号为chn_id=输出通道总数目chn_top_num-1;
根据所述排序,以第0路输出视频流(chn_id==0)的初始丢帧索引表作为基准,从第1路输出视频流(chn_id==1)的初始丢帧索引表依次开始进行循环移位操作,用一个数组val[j],j取值[0,chn_top_num],用于记录每路输出视频流的循环移位位数;
对第n(chn_id==n)路对应的初始丢帧索引表进行循环移位操作,n取值[1,chn_top_num-1]包括:
val[n]初始化为0,i初始化为n-1;
比较第n路输出视频流与第i路输出视频流的算子信息表中的商qot和标志位flag;
如果满足flag相等且qot能够整除的条件,则将第i路输出视频流的val[n]值加1后赋值给第n路输出视频流的val[n]值,第n路输出视频流的初始丢帧索引表循环移位val[n]位,判断所述循环移位后的第n路输出视频流的初始丢帧索引表是否满足第一条件,如果满足则结束循环移位操作,如果不满足则对第n+1路对应的初始丢帧索引表进行循环移位操作;
如果满足flag相等,qot不能够整除且i==0的条件,则计算两个商之间的最大公约数m,将该路视频流的val[n]值赋为m-1,第n路输出视频流的初始丢帧索引表循环移位val[n]位,判断所述循环移位后的第n路输出视频流的初始丢帧索引表是否满足第一条件,如果满足则结束循环移位操作,如果不满足则对第n+1路对应的初始丢帧索引表进行循环移位操作;
如果满足flag不相等且qot能够整除的条件,则将第i路输出视频流的val[i]直接赋值给val[n],第n路输出视频流的初始丢帧索引表循环移位val[n]位,判断所述循环移位后的第n路输出视频流的初始丢帧索引表是否满足第一条件,如果满足则结束循环移位操作,如果不满足则对第n+1路对应的初始丢帧索引表进行循环移位操作;
如果不满足下面条件至少之一,则判断i是否为0,如果不是0,则将i减1后,跳转到所述比较第n路输出视频流与第i路输出视频流的算子信息表中的商qot和标志位flag;否则开始对第n+1路对应的初始丢帧索引表进行循环移位操作:
flag相等且qot能够整除;flag相等,qot不能够整除且i==0;flag不相等且qot能够整除。
其中,所述对所述各路输出视频流对应的循环移位后的丢帧索引表或初始丢帧索引表依次进行错位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表,包括:
根据各路输出视频流的帧率按从大到小的顺序对各个输出视频流进行排序;
其中,帧率越大,其通道号chn_id越小,帧率最大值的通道号chn_id=0;帧率最小值的通道号为chn_id=输出通道总数目chn_top_num-1;
根据所述排序,以第0路输出视频流(chn_id==0)的循环移位后的丢帧索引表或初始丢帧索引表作为基准,从第chn_top_num-1路输出视频流(chn_id==chn_top_num-1)的循环移位后的丢帧索引表或初始丢帧索引表开始依次进行错位操作;
对第n(chn_id==n)路对应的循环移位后的丢帧索引表或初始丢帧索引表进行错位操作,n取值[1,chn_top_num-1],包括:
将所有输出视频流的循环移位后的丢帧索引表或初始丢帧索引表对应位置相加,得到一个总丢帧索引表,记作top_frc_index;初始化变量i=0;
检索top_frc_index,找到top_frc_index[i]==0的位置i;
以i为起点检索,找到一个距离最近的起点j,该点满足top_frc_index[j]>1且outn_frc_index[j]==1;
在outn_frc_index中交换i与j位置的值,完成错位操作;
判断进行错位操作后的各路输出视频流对应的丢帧索引表是否满足第一条件,如果满足则结束错位操作;
如果不满足,判断当前输出视频流丢帧索引表检索是否完成,如果没有完成,则更新top_frc_index后跳转到所述检索top_frc_index继续检索,否则开始对第n-1路对应的循环移位后的丢帧索引表或初始丢帧索引表进行错位操作。
其中,所述帧率控制单元,具体用于
根据第n路输出视频流对应的丢帧索引表,对第n路输出视频流进行帧率控制,n取值为[0,输出通道总数目chn_top_num-1],包括:
检测输入视频流的场同步VSYNC信号,并使用计数器cnt对其进行计数;
计算所述cnt值与输入视频流的帧率的余数i;
判断第n路输出视频流对应的丢帧索引表中位置i的值是否为1;
如果为1,则输出当前帧,否则丢掉当前帧;
重复上述操作,直至完成对各路输出视频流的帧率控制。
本发明实施例十一提供的技术方案,采用软件的方式实现帧率控制装置,保证了各个通道输出相应帧率的视频流。
实施例十二
可以采用纯软件方式实现另一种帧率控制装置。图13为本发明实施例十二提供的另一种帧率控制装置的结构示意图,如图13所示,该装置包括:
生成单元,用于生成各路输出视频流对应的丢帧索引表;
帧率控制单元,用于根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
其中,所述丢帧索引表的长度等于输入视频流的帧率值,所述丢帧索引表的每个元素记录当前输入帧采样时间点上输出视频流是否进行丢帧操作。
其中,所述生成单元,具体用于
计算各路输出视频流对应的算子信息表,所述算子信息表包括标志位flag、除数div、商qot和积数mul信息;
根据各路输出视频流对应的算子信息表计算得到各路输出视频流对应的初始丢帧索引表;
直接将所述各路输出视频流的初始丢帧索引表作为所述各路输出视频流对应的丢帧索引表。
其中,所述计算各路输出视频流对应的算子信息表,包括:
计算一路输出视频流的标志位flag,包括:比较所述一路输出视频流的帧率与输入视频流的帧率和所述一路输出视频流的帧率之间的差值,如果所述一路输出视频流的帧率大于输入视频流的帧率和所述一路输出视频流的帧率之间的差值,则所述一路输出视频流的标志位flag为0;如果所述一路输出视频流的帧率小于等于输入视频流的帧率和所述一路输出视频流的帧率之间的差值,则所述一路输出视频流的标志位flag为1;
计算所述一路输出视频流的除数div,包括:当所述一路输出视频流的标志位flag为0时,将输入视频流的帧率和所述一路输出视频流的帧率之间的差值作为所述一路输出视频流的除数div;当当所述一路输出视频流的标志位flag为1时,将所述一路输出视频流的帧率作为所述一路输出视频流的除数div;
计算所述一路输出视频流的商qot和积数mul,包括:所述一路输出视频流的商qot为所述输入视频流的帧率整除所述除数div得到的值,所述一路输出视频流的积数mul为所述一路输出视频流的商qot与所述所述一路输出视频流的除数div相乘得到的值;
针对除了所述一路输出视频流之外的其他路输出视频流,分别重复上述操作,直到得到各路输出视频流对应的算子信息表。
其中,所述根据各路输出视频流对应的算子信息表计算得到各路输出视频流对应的初始丢帧索引表,包括:
获取一路输出视频流的算子信息表;
判断所述一路输出视频流的标志位flag是否为1,当为1时,将所述一路输出视频流的原始丢帧索引表的各个元素全部初始化为0,当不为1时,将所述一路输出视频流的原始丢帧索引表的各个元素全部初始化为1;设置初始化变量cnt为1;
比较所述一路输出视频流的积数mul与所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果;
如果所述一路输出视频流的积数mul小于等于所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,则将所述一路输出视频流的原始丢帧索引表作为所述一路输出视频流对应的初始丢帧索引表;
如果所述一路输出视频流的积数mul大于所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,则将所述一路输出视频流的原始丢帧索引表中所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果位置的对应的元素进行取反操作,并将所述初始化变量cnt加1后,返回所述比较所述一路输出视频流的积数mul与所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,依次类推,直到得到所述一路输出视频流对应的初始丢帧索引表;
针对除了所述一路输出视频流之外的其他路输出视频流,分别重复上述操作,直到得到各路输出视频流对应的初始丢帧索引表。
其中,所述帧率控制单元,具体用于
根据第n路输出视频流对应的丢帧索引表,对第n路输出视频流进行帧率控制,n取值为[0,输出通道总数目chn_top_num-1],包括:
检测输入视频流的场同步VSYNC信号,并使用计数器cnt对其进行计数;
计算所述cnt值与输入视频流的帧率的余数i;
判断第n路输出视频流对应的丢帧索引表中位置i的值是否为1;
如果为1,则输出当前帧,否则丢掉当前帧;
重复上述操作,直至完成对各路输出视频流的帧率控制。
本发明实施例十二提供的技术方案,采用软件的方式实现帧率控制装置,保证了各个通道输出相应帧率的视频流。
实施例十三
也可以采用软/硬件相结合的方式实现帧率控制装置。图14为本发明实施例十三提供另一种帧率控制装置的结构示意图,如图14所示,本装置包括:软件和硬件两大部分,其中,
在软件部分中,主要由以下模块组成:
获取配置信息模块1:实时获取输入视频流、输出视频流的配置信息;
其中,可以实时获取输入视频流的帧率、各路输出视频流的帧率和数量等配置信息。
具体而言,可以实时获取用户配置的输入视频流的帧率(src_frame_rate)、输出通道总数目(chn_top_num)、各路输出视频流的帧率(dst_frame_rate[i]),其中i表示输出通道序号,取值[0,chn_top_num)。
丢帧索引表生成模块2:可以按照本发明实施例二至十中提供的任一项丢帧索引表生成方法生成各路输出视频流的最终丢帧索引表;
中断检测模块3:获取硬件中帧同步硬件模块6上报的中断信息;
中断判断模块4:判断中断是否帧输入中断,如果是,继续执行下级模块5;否则返回模块3,继续获取中断信息;
输出控制模块5:对有效的帧输入中断计数,并在各路输出视频流的丢帧索引表中查找相应位置的值,如果是1,则开启相应的输出通道;否则关闭相应的输出通道。
在硬件部分中,主要由以下模块组成:
帧同步硬件模块6:用于检测输入视频流的场同步信号(VSYNC)边沿,并通过中断上报给软件中的中断检测模块3;
输出通道使能硬件模块7:用于接收软件中输出控制模块5发送的各个通道开关信息,1表示打开相应的输出通道,0表示关闭相应的输出通道,从而实现输出或者丢弃当前帧的操作。
本发明实施例十三提供的技术方案,采用软/硬件相结合的方式实现帧率控制装置,保证了各个通道输出相应帧率的视频流。
本发明实施例还提供了一种帧率控制设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述任一项所述帧率控制方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有信息处理程序,所述信息处理程序被处理器执行时实现上述任一项所述帧率控制方法的步骤。
上述任一项帧率控制装置、帧率控制设备或者计算机可读存储介质可以配置于视频预处理引擎(VPE,Video Pre-process Engine)等设备中,能够实现同时输出多路不同帧率的视频流,用于满足不同的业务需求。例如,图15所示,为在监控芯片中VPE的使用场景,所述VPE中配置有上述任一项帧率控制装置、帧率控制设备或者计算机可读存储介质,所述VPE可以从ISP(Image Signal Processor,图像信号处理器)接收输入视频流in_fps,在自身进行本发明实施例提供的帧率控制方法后,输出多路视频流out_fps1…out_fpsn。如图所示,一路20帧/秒的视频流可以用于CVBS(Composite Video Broadcast Signal)接口显示,一路25帧/秒的视频流可以用于人脸识别,一路5帧/秒的视频流可以用于移动侦测等智能算法,各路输出视频流还可能组合使用。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

Claims (23)

1.一种帧率控制方法,包括:
生成满足第一条件的各路输出视频流对应的丢帧索引表,所述第一条件为所有输出视频流总信息损失最少;
根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
2.根据权利要求1所述的方法,其特征在于,所述丢帧索引表的长度等于输入视频流的帧率值,所述丢帧索引表的每个元素记录当前输入帧采样时间点上输出视频流是否进行丢帧操作。
3.根据权利要求1所述的方法,其特征在于,所述生成满足第一条件的各路输出视频流对应的丢帧索引表,包括:
计算各路输出视频流对应的算子信息表,所述算子信息表包括标志位flag、除数div、商qot和积数mul信息;
根据各路输出视频流对应的算子信息表计算得到各路输出视频流对应的初始丢帧索引表;
判断所述各路输出视频流对应的初始丢帧索引表是否满足第一条件,如果满足,则将所述各路输出视频流的初始丢帧索引表作为所述各路输出视频流对应的丢帧索引表。
4.根据权利要求3所述的方法,其特征在于,该方法还包括:
如果不满足,则对所述各路输出视频流对应的初始丢帧索引表依次进行循环移位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表或者对所有的输出视频流的初始丢帧索引表都进行了循环移位操作。
5.根据权利要求4所述的方法,其特征在于,该方法还包括:
如果对所有的输出视频流的初始丢帧索引表都进行了循环移位操作后仍然无法生成满足第一条件的各路输出视频流对应的丢帧索引表,则对所述各路输出视频流对应的循环移位后的丢帧索引表依次进行错位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表;
或者,如果不满足,则直接对所述各路输出视频流对应的初始丢帧索引表依次进行错位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表。
6.根据权利要求3所述的方法,其特征在于,所述计算各路输出视频流对应的算子信息表,包括:
计算一路输出视频流的标志位flag,包括:比较所述一路输出视频流的帧率与输入视频流的帧率和所述一路输出视频流的帧率之间的差值,如果所述一路输出视频流的帧率大于输入视频流的帧率和所述一路输出视频流的帧率之间的差值,则所述一路输出视频流的标志位flag为0;如果所述一路输出视频流的帧率小于等于输入视频流的帧率和所述一路输出视频流的帧率之间的差值,则所述一路输出视频流的标志位flag为1;
计算所述一路输出视频流的除数div,包括:当所述一路输出视频流的标志位flag为0时,将输入视频流的帧率和所述一路输出视频流的帧率之间的差值作为所述一路输出视频流的除数div;当所述一路输出视频流的标志位flag为1时,将所述一路输出视频流的帧率作为所述一路输出视频流的除数div;
计算所述一路输出视频流的商qot和积数mul,包括:所述一路输出视频流的商qot为所述输入视频流的帧率整除所述除数div得到的值,所述一路输出视频流的积数mul为所述一路输出视频流的商qot与所述所述一路输出视频流的除数div相乘得到的值;
针对除了所述一路输出视频流之外的其他路输出视频流,分别重复上述操作,直到得到各路输出视频流对应的算子信息表。
7.根据权利要求3所述的方法,其特征在于,所述根据各路输出视频流对应的算子信息表计算得到各路输出视频流对应的初始丢帧索引表,包括:
获取一路输出视频流的算子信息表;
判断所述一路输出视频流的标志位flag是否为1,当为1时,将所述一路输出视频流的原始丢帧索引表的各个元素全部初始化为0,当不为1时,将所述一路输出视频流的原始丢帧索引表的各个元素全部初始化为1;设置初始化变量cnt为1;
比较所述一路输出视频流的积数mul与所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果;
如果所述一路输出视频流的积数mul小于等于所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,则将所述一路输出视频流的原始丢帧索引表作为所述一路输出视频流对应的初始丢帧索引表;
如果所述一路输出视频流的积数mul大于所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,则将所述一路输出视频流的原始丢帧索引表中所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果位置的对应的元素进行取反操作,并将所述初始化变量cnt加1后,返回所述比较所述一路输出视频流的积数mul与所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,依次类推,直到得到所述一路输出视频流对应的初始丢帧索引表;
针对除了所述一路输出视频流之外的其他路输出视频流,分别重复上述操作,直到得到各路输出视频流对应的初始丢帧索引表。
8.根据权利要求1所述的方法,其特征在于,在生成满足第一条件的各路输出视频流对应的丢帧索引表之前,该方法还包括:
比较输入视频流的帧率和所有输出视频流的帧率之和;
如果输入视频流的帧率大于所有输出视频流的帧率之和,则所述第一条件为将所有输出视频流的丢帧索引表对应位置相或后的结果求和得到的求和结果等于所有输出视频流的帧率之和;
如果输入视频流的帧率小于等于所有输出视频流的帧率之和,则所述第一条件为将所有输出视频流的丢帧索引表对应位置相或后的结果求和得到的求和结果等于输入视频流的帧率。
9.根据权利要求4所述的方法,其特征在于,所述对所述各路输出视频流对应的初始丢帧索引表依次进行循环移位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表或者对所有的输出视频流的初始丢帧索引表都进行了循环移位操作,包括:
根据各路输出视频流的帧率按从大到小的顺序对各个输出视频流进行排序;
其中,帧率越大,其通道号chn_id越小,帧率最大值的通道号chn_id=0;帧率最小值的通道号为chn_id=输出通道总数目chn_top_num-1;
根据所述排序,以第0路输出视频流(chn_id==0)的初始丢帧索引表作为基准,从第1路输出视频流(chn_id==1)的初始丢帧索引表依次开始进行循环移位操作,用一个数组val[j],j取值[0,chn_top_num],用于记录每路输出视频流的循环移位位数;
对第n(chn_id==n)路对应的初始丢帧索引表进行循环移位操作,n取值[1,chn_top_num-1]包括:
val[n]初始化为0,i初始化为n-1;
比较第n路输出视频流与第i路输出视频流的算子信息表中的商qot和标志位flag;
如果满足flag相等且qot能够整除的条件,则将第i路输出视频流的val[n]值加1后赋值给第n路输出视频流的val[n]值,第n路输出视频流的初始丢帧索引表循环移位val[n]位,判断所述循环移位后的第n路输出视频流的初始丢帧索引表是否满足第一条件,如果满足则结束循环移位操作,如果不满足则对第n+1路对应的初始丢帧索引表进行循环移位操作;
如果满足flag相等,qot不能够整除且i==0的条件,则计算两个商之间的最大公约数m,将该路视频流的val[n]值赋为m-1,第n路输出视频流的初始丢帧索引表循环移位val[n]位,判断所述循环移位后的第n路输出视频流的初始丢帧索引表是否满足第一条件,如果满足则结束循环移位操作,如果不满足则对第n+1路对应的初始丢帧索引表进行循环移位操作;
如果满足flag不相等且qot能够整除的条件,则将第i路输出视频流的val[i]直接赋值给val[n],第n路输出视频流的初始丢帧索引表循环移位val[n]位,判断所述循环移位后的第n路输出视频流的初始丢帧索引表是否满足第一条件,如果满足则结束循环移位操作,如果不满足则对第n+1路对应的初始丢帧索引表进行循环移位操作;
如果不满足下面条件至少之一,则判断i是否为0,如果不是0,则将i减1后,跳转到所述比较第n路输出视频流与第i路输出视频流的算子信息表中的商qot和标志位flag;否则开始对第n+1路对应的初始丢帧索引表进行循环移位操作:
flag相等且qot能够整除;flag相等,qot不能够整除且i==0;flag不相等且qot能够整除。
10.根据权利要求5所述的方法,其特征在于,所述对所述各路输出视频流对应的循环移位后的丢帧索引表或初始丢帧索引表依次进行错位操作,直到生成满足第一条件的各路输出视频流对应的丢帧索引表,包括:
根据各路输出视频流的帧率按从大到小的顺序对各个输出视频流进行排序;
其中,帧率越大,其通道号chn_id越小,帧率最大值的通道号chn_id=0;帧率最小值的通道号为chn_id=输出通道总数目chn_top_num-1;
根据所述排序,以第0路输出视频流(chn_id==0)的循环移位后的丢帧索引表或初始丢帧索引表作为基准,从第chn_top_num-1路输出视频流(chn_id==chn_top_num-1)的循环移位后的丢帧索引表或初始丢帧索引表开始依次进行错位操作;
对第n(chn_id==n)路对应的循环移位后的丢帧索引表或初始丢帧索引表进行错位操作,n取值[1,chn_top_num-1],包括:
将所有输出视频流的循环移位后的丢帧索引表或初始丢帧索引表对应位置相加,得到一个总丢帧索引表,记作top_frc_index;初始化变量i=0;
检索top_frc_index,找到top_frc_index[i]==0的位置i;
以i为起点检索,找到一个距离最近的起点j,该点满足top_frc_index[j]>1且outn_frc_index[j]==1;
在outn_frc_index中交换i与j位置的值,完成错位操作;
判断进行错位操作后的各路输出视频流对应的丢帧索引表是否满足第一条件,如果满足则结束错位操作;
如果不满足,判断当前输出视频流丢帧索引表检索是否完成,如果没有完成,则更新top_frc_index后跳转到所述检索top_frc_index继续检索,否则开始对第n-1路对应的循环移位后的丢帧索引表或初始丢帧索引表进行错位操作。
11.根据权利要求1所述的方法,其特征在于,所述根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制,包括:
根据第n路输出视频流对应的丢帧索引表,对第n路输出视频流进行帧率控制,n取值为[0,输出通道总数目chn_top_num-1],包括:
检测输入视频流的场同步VSYNC信号,并使用计数器cnt对其进行计数;
计算所述cnt值与输入视频流的帧率的余数i;
判断第n路输出视频流对应的丢帧索引表中位置i的值是否为1;
如果为1,则输出当前帧,否则丢掉当前帧;
重复上述操作,直至完成对各路输出视频流的帧率控制。
12.一种帧率控制方法,包括:
生成各路输出视频流对应的丢帧索引表;
根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
13.根据权利要求12所述的方法,其特征在于,所述丢帧索引表的长度等于输入视频流的帧率值,所述丢帧索引表的每个元素记录当前输入帧采样时间点上输出视频流是否进行丢帧操作。
14.根据权利要求12所述的方法,其特征在于,所述生成各路输出视频流对应的丢帧索引表,包括:
计算各路输出视频流对应的算子信息表,所述算子信息表包括标志位flag、除数div、商qot和积数mul信息;
根据各路输出视频流对应的算子信息表计算得到各路输出视频流对应的初始丢帧索引表;
直接将所述各路输出视频流的初始丢帧索引表作为所述各路输出视频流对应的丢帧索引表。
15.根据权利要求14所述的方法,其特征在于,所述计算各路输出视频流对应的算子信息表,包括:
计算一路输出视频流的标志位flag,包括:比较所述一路输出视频流的帧率与输入视频流的帧率和所述一路输出视频流的帧率之间的差值,如果所述一路输出视频流的帧率大于输入视频流的帧率和所述一路输出视频流的帧率之间的差值,则所述一路输出视频流的标志位flag为0;如果所述一路输出视频流的帧率小于等于输入视频流的帧率和所述一路输出视频流的帧率之间的差值,则所述一路输出视频流的标志位flag为1;
计算所述一路输出视频流的除数div,包括:当所述一路输出视频流的标志位flag为0时,将输入视频流的帧率和所述一路输出视频流的帧率之间的差值作为所述一路输出视频流的除数div;当当所述一路输出视频流的标志位flag为1时,将所述一路输出视频流的帧率作为所述一路输出视频流的除数div;
计算所述一路输出视频流的商qot和积数mul,包括:所述一路输出视频流的商qot为所述输入视频流的帧率整除所述除数div得到的值,所述一路输出视频流的积数mul为所述一路输出视频流的商qot与所述所述一路输出视频流的除数div相乘得到的值;
针对除了所述一路输出视频流之外的其他路输出视频流,分别重复上述操作,直到得到各路输出视频流对应的算子信息表。
16.根据权利要求14所述的方法,其特征在于,所述根据各路输出视频流对应的算子信息表计算得到各路输出视频流对应的初始丢帧索引表,包括:
获取一路输出视频流的算子信息表;
判断所述一路输出视频流的标志位flag是否为1,当为1时,将所述一路输出视频流的原始丢帧索引表的各个元素全部初始化为0,当不为1时,将所述一路输出视频流的原始丢帧索引表的各个元素全部初始化为1;设置初始化变量cnt为1;
比较所述一路输出视频流的积数mul与所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果;
如果所述一路输出视频流的积数mul小于等于所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,则将所述一路输出视频流的原始丢帧索引表作为所述一路输出视频流对应的初始丢帧索引表;
如果所述一路输出视频流的积数mul大于所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,则将所述一路输出视频流的原始丢帧索引表中所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果位置的对应的元素进行取反操作,并将所述初始化变量cnt加1后,返回所述比较所述一路输出视频流的积数mul与所述初始化变量cnt和所述一路输出视频流的商qot的相乘结果,依次类推,直到得到所述一路输出视频流对应的初始丢帧索引表;
针对除了所述一路输出视频流之外的其他路输出视频流,分别重复上述操作,直到得到各路输出视频流对应的初始丢帧索引表。
17.根据权利要求12所述的方法,其特征在于,所述根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制,包括:
根据第n路输出视频流对应的丢帧索引表,对第n路输出视频流进行帧率控制,n取值为[0,输出通道总数目chn_top_num-1],包括:
检测输入视频流的场同步VSYNC信号,并使用计数器cnt对其进行计数;
计算所述cnt值与输入视频流的帧率的余数i;
判断第n路输出视频流对应的丢帧索引表中位置i的值是否为1;
如果为1,则输出当前帧,否则丢掉当前帧;
重复上述操作,直至完成对各路输出视频流的帧率控制。
18.一种帧率控制装置,其特征在于,包括:
生成单元,用于生成满足第一条件的各路输出视频流对应的丢帧索引表,所述第一条件为所有输出视频流总信息损失最少;
帧率控制单元,用于根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
19.一种帧率控制装置,其特征在于,包括:
生成单元,用于生成各路输出视频流对应的丢帧索引表;
帧率控制单元,用于根据所述各路输出视频流对应的丢帧索引表,对各路输出视频流进行帧率控制。
20.一种帧率控制装置,其特征在于,包括:软件和硬件两大部分,其中,
在软件部分中,包括:
丢帧索引表生成模块2,用于生成各路输出视频流对应的丢帧索引表,或者生成满足第一条件的各路输出视频流对应的丢帧索引表,所述第一条件为所有输出视频流总信息损失最少;
中断检测模块3:获取硬件部分中帧同步硬件模块6上报的中断信息;
中断判断模块4:判断中断是否是帧输入中断,如果是,继续执行输出控制模块5;否则返回中断检测模块3,继续获取中断信息;
输出控制模块5:对有效的帧输入中断计数,并在各路输出视频流的丢帧索引表中查找相应位置的值,如果是1,则开启相应的输出通道;否则关闭相应的输出通道;
在硬件部分中,包括:
帧同步硬件模块6:用于检测输入视频流的场同步信号VSYNC边沿,并通过中断上报给软件部分中的中断检测模块3;
输出通道使能硬件模块7:用于接收软件部分中输出控制模块5发送的各个通道开关信息,1表示打开相应的输出通道,0表示关闭相应的输出通道,根据所述各个通道开关信息实现输出或者丢弃当前帧的操作。
21.一种视频预处理引擎VPE,其特征在于,包括如权利要求20-22中任一项所述的帧率控制装置。
22.一种帧率控制设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至17中任一项所述帧率控制方法。
23.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有信息处理程序,所述信息处理程序被处理器执行时实现如权利要求1至17中任一项所述帧率控制方法的步骤。
CN201811574897.3A 2018-12-21 2018-12-21 一种帧率控制方法及相关设备 Active CN111355989B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811574897.3A CN111355989B (zh) 2018-12-21 2018-12-21 一种帧率控制方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811574897.3A CN111355989B (zh) 2018-12-21 2018-12-21 一种帧率控制方法及相关设备

Publications (2)

Publication Number Publication Date
CN111355989A true CN111355989A (zh) 2020-06-30
CN111355989B CN111355989B (zh) 2023-08-08

Family

ID=71193839

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811574897.3A Active CN111355989B (zh) 2018-12-21 2018-12-21 一种帧率控制方法及相关设备

Country Status (1)

Country Link
CN (1) CN111355989B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112019880A (zh) * 2020-10-30 2020-12-01 南斗六星系统集成有限公司 一种任意帧率视频文件拼接方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006050435A (ja) * 2004-08-06 2006-02-16 Victor Co Of Japan Ltd 監視システム
CN102025956A (zh) * 2009-09-23 2011-04-20 华为技术有限公司 网络流媒体快进快退播放的处理方法、装置和系统
CN102413358A (zh) * 2011-08-12 2012-04-11 青岛海信传媒网络技术有限公司 流媒体文件存储和播放的方法、装置及系统
CN103731625A (zh) * 2013-12-13 2014-04-16 厦门雅迅网络股份有限公司 一种多路音视频同时同步播放的方法
CN105681712A (zh) * 2014-11-20 2016-06-15 广东中星电子有限公司 视频数据处理方法和装置
CN106231250A (zh) * 2016-07-27 2016-12-14 成都之维安科技股份有限公司 不同型号的视频监控设备同步控制的方法
CN106412581A (zh) * 2016-06-21 2017-02-15 浙江大华技术股份有限公司 一种帧率控制方法及装置
CN106612452A (zh) * 2015-10-22 2017-05-03 深圳市中兴微电子技术有限公司 机顶盒音视频同步的方法及装置
CN107623851A (zh) * 2017-09-01 2018-01-23 苏州科达科技股份有限公司 视频码流传输控制装置及控制方法
US20180026746A1 (en) * 2015-10-01 2018-01-25 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for removing jitter in audio data transmission

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006050435A (ja) * 2004-08-06 2006-02-16 Victor Co Of Japan Ltd 監視システム
CN102025956A (zh) * 2009-09-23 2011-04-20 华为技术有限公司 网络流媒体快进快退播放的处理方法、装置和系统
CN102413358A (zh) * 2011-08-12 2012-04-11 青岛海信传媒网络技术有限公司 流媒体文件存储和播放的方法、装置及系统
CN103731625A (zh) * 2013-12-13 2014-04-16 厦门雅迅网络股份有限公司 一种多路音视频同时同步播放的方法
CN105681712A (zh) * 2014-11-20 2016-06-15 广东中星电子有限公司 视频数据处理方法和装置
US20180026746A1 (en) * 2015-10-01 2018-01-25 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for removing jitter in audio data transmission
CN106612452A (zh) * 2015-10-22 2017-05-03 深圳市中兴微电子技术有限公司 机顶盒音视频同步的方法及装置
CN106412581A (zh) * 2016-06-21 2017-02-15 浙江大华技术股份有限公司 一种帧率控制方法及装置
CN106231250A (zh) * 2016-07-27 2016-12-14 成都之维安科技股份有限公司 不同型号的视频监控设备同步控制的方法
CN107623851A (zh) * 2017-09-01 2018-01-23 苏州科达科技股份有限公司 视频码流传输控制装置及控制方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
欧阳甸: "嵌入式数字视频监控系统中的媒体存储研究", 《电视技术》 *
欧阳甸: "嵌入式数字视频监控系统中的媒体存储研究", 《电视技术》, no. 01, 2 January 2014 (2014-01-02) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112019880A (zh) * 2020-10-30 2020-12-01 南斗六星系统集成有限公司 一种任意帧率视频文件拼接方法

Also Published As

Publication number Publication date
CN111355989B (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
CN109803175B (zh) 视频处理方法及装置、设备、存储介质
KR20190055447A (ko) 연산 가속화가 적용된 신경망 모델의 생성 및 활용을 위한 장치 및 방법
US20110051813A1 (en) Utilizing thresholds and early termination to achieve fast motion estimation in a video encoder
CN100499778C (zh) 用于使用迭代质心来估计摄像机模型参数的方法和装置
US11871127B2 (en) High-speed video from camera arrays
KR20050084442A (ko) 세그먼트 기반 움직임 추정
US8861603B2 (en) System and method for motion vector collection based on K-means clustering for motion compensated interpolation of digital video
CN106412581B (zh) 一种帧率控制方法及装置
JP2016100901A (ja) 映像処理方法及び装置
US8358693B2 (en) Encoding visual data with computation scheduling and allocation
US8306123B2 (en) Method and apparatus to improve the convergence speed of a recursive motion estimator
CN111355989B (zh) 一种帧率控制方法及相关设备
CN100593948C (zh) 一种拼合视频的方法和装置
US8565309B2 (en) System and method for motion vector collection for motion compensated interpolation of digital video
CN112015366A (zh) 数据排序方法、数据排序装置及数据库系统
US20080089409A1 (en) Directional And Motion-Compensated Discrete Cosine Transformation
KR20160107417A (ko) 유해 동영상 탐지 방법 및 장치
TWI517715B (zh) 圖幀速率轉換的方法及影像處理裝置
US11348336B2 (en) Systems and approaches for learning efficient representations for video understanding
US10963746B1 (en) Average pooling in a neural network
US20060066737A1 (en) Signal processing device
US10853954B1 (en) Image processing apparatus, image processing method and storage media
CN113225488B (zh) 一种视频处理方法、装置、电子设备及存储介质
KR101574205B1 (ko) 프레임 율 변환을 위한 움직임 정보 추정 방법 및 그 장치
US11956452B2 (en) System and method for H.265 encoding

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant