一种基于循环双队列的优化视频压解码丢帧问题的方法技术

技术编号:39427635 阅读:11 留言:0更新日期:2023-11-19 16:13
本发明专利技术公开了一种基于循环双队列的优化视频压解码丢帧问题的方法,涉及视频处理技术领域,方法包括:步骤101:采集原始数据帧;步骤102:利用压缩队列Tx并发完成针对不同数据帧的Bottom Half操作;步骤103:发送端主线程依次循环遍历压缩队列,当各标志位均为TRUE时,则发送该数据帧至接收端;步骤104:视频流接收端主线程依次从网络收到数据帧后,直接压入解压队列Rx;步骤105:利用解压队列Rx并发完成针对不同数据帧的Bottom Half操作,本发明专利技术可以提升视频流压缩与解压处理的并发度,从而优化视频流传输的效率和准确性。视频流传输的效率和准确性。视频流传输的效率和准确性。

【技术实现步骤摘要】
一种基于循环双队列的优化视频压解码丢帧问题的方法


[0001]本专利技术属于技术处理
,具体涉及一种基于循环双队列的优化视频压解码丢帧问题的方法。

技术介绍

[0002]虽然网络带宽正随着无线接入技术和有线传输技术的发展不断提升,但如果不对视频信号进行必要的压缩,目前用户的接入带宽也是远远无法满足视频通信的实时化要求。视频压缩的核心思想是利用视频信号的特点去除掉原始数据中的时间和空间冗余,然后再进行传输或者存储,来减少对带宽和存储空间的需求。
[0003]评价视频压缩算法是在同等视频质量条件下,压缩倍数更高则算法更优秀。算法压缩比越高,一般而言算法本身的复杂度也会相应提高。复杂的算法需要消耗更多的计算能力,特别是实时的视频业务。当用户追求更高的压缩比来减少对存储和传输视频信号的压力时,就可能导致编码模块的工作效率达不到预期,编码帧率会受损的情况。比如编码解码阶段的堵塞,无法技术处理,当新的图像采集进来时,前一张图像可能会被迫丢弃,或者是新的图像被迫丢弃。

技术实现思路

[0004]为达到上述目的,本专利技术的技术方案如下:一种基于循环双队列的优化视频压解码丢帧问题的方法,方法包括:步骤101:采集原始数据帧;视频流发送端主线程从摄像头按采集帧率获取图像后直接压入发送端压缩队列Tx,标记压缩标志为FALSE,随即开始下一数据帧采集;步骤102:利用压缩队列Tx并发完成针对不同数据帧的Bottom Half操作;步骤103:发送端主线程依次循环遍历压缩队列,当各标志位均为TRUE时,则发送该数据帧至接收端,并将该数据帧从压缩队列Tx中删除;步骤104:视频流接收端主线程依次从网络收到数据帧后,直接压入解压队列Rx;步骤105:利用解压队列Rx并发完成针对不同数据帧的Bottom Half操作。
[0005]作为本专利技术的一种改进,方法还包括:视频流发送

接收两端分别创建数据帧处理队列,具体步骤包括:步骤201:视频流发送端主线程创建数据帧循环压缩队列Tx,并设置队列大小;步骤202:视频流接收端主线程创建数据帧循环解压队列Rx,并设置队列大小。
[0006]而且,视频帧处理队列采用循环队列形式,队列长度可以根据业务需要设置不同的数值。一般按照常用的视频帧率(每秒帧数/fps)取值,具体队列长度以15为倍数递增,可以取值15、30、45、60等(人眼可分辨标准帧率为30fps、最佳值为60fps;实际应用场景中可低于标准帧率,比如监控等领域允许间隔取帧);此外,用户可以根据图形处理器处理时每秒钟能够更新的次数自主定义队列大小。
[0007]而且,所述的数据帧处理队列包括发送端数据帧压缩队列和接收端解压队列;所
述的处理队列中元素包括以下信息:本视频帧的采集时间戳、本视频帧的序列码、本视频帧是否压缩标志、本视频帧是否加密标志、本帧视频帧的数据长度以及本视频帧的的检验码等信息。
[0008]作为本专利技术的一种改进,方法还包括:设置发送端视频帧并发处理度并创建数据帧处理线程组,具体包括:步骤301:视频流发送端主线程通过sysconf(_SC_NPROCESSORS_CONF)获取当前处理器核数M,并设置并发度M

1;步骤302:视频流发送端设置压缩线程属性;其中,优先级继承主线程优先级,调度策略schedpolicy为设置SCHED_FIFO;步骤303:视频流发送端设置压缩线程任务函数start_routine为fn_frame_compress();步骤304:视频流发送端通过系统调用pthread_create()创建M

1个压缩线程。
[0009]作为本专利技术的一种改进,方法还包括设置接收端视频帧并发处理度并创建数据帧处理线程组,具体步骤如下:步骤401:视频流接收端主线程通过sysconf(_SC_NPROCESSORS_CONF)获取当前处理器核数N,并设置并发度N

1;步骤402:视频流接收端设置压缩线程属性;其中,优先级继承主线程优先级,调度策略schedpolicy为设置SCHED_FIFO;步骤403:视频流接收端设置压缩线程任务函数start_routine为fn_frame_decompress();步骤404:视频流接收端通过系统调用pthread_create()创建N

1个压缩线程。
[0010]作为本专利技术的一种改进,步骤利用压缩队列Tx并发完成针对不同数据帧的Bottom Half操作,具体包括:步骤501:视频流发送端处理线程m循环遍历数据帧压缩队列Tx;步骤502:如果当前数据帧压缩标志位为FALSE时,根据事先设定算法进行压缩处理,并根据压缩操作返回结果更新数据帧标志位;返回成功,则更新数据并设置数据帧压缩标志位为TRUE,否则从循环队列中删除此数据帧;步骤503:如果当前数据帧加密标志位为FALSE时,根据事先设定算法进行加密处理,并根据加密操作返回结果更新数据帧标志位;返回成功,则更新数据并设置数据帧加密标志位为TRUE,否则从循环队列Tx中删除此数据帧;步骤504:继续下一个数据帧处理,跳转至步骤502。
[0011]作为本专利技术的一种改进,步骤利用解压队列Rx并发完成针对不同数据帧的Bottom Half操作,具体包括:步骤601:视频流接收端处理线程n循环遍历数据帧压缩队列Rx;步骤602:如果当前数据帧加密标志位为TRUE时,根据事先设定算法进行解密处理,并根据解密操作返回结果更新数据帧标志位;返回成功,则更新数据并设置数据帧解密标志位为FLASE,否则从循环队列中删除此数据帧;步骤603:如果当前数据帧压缩标志位为TRUE时,根据事先设定算法进行解压处理,并根据解压操作返回结果更新数据帧标志位;返回成功,则更新数据并设置数据帧压缩
标志位为FALSE,否则从循环队列中删除此数据帧;步骤604:根据数据帧长度值与校验码等信息验证数据完整性,如果结果成功,则进行一下步,否则从循环队列Rx中删除此数据帧;步骤605:继续下一个数据帧处理,跳转至步骤602。
[0012]作为本专利技术的一种改进,方法还包括:视频流接受端主线程依次循环遍历解压队列Rx,并根据视频帧的序列码检查当前帧各个标志位,如果检查结果为TRUE时,则渲染并显示该视频帧,之后从循环队列Rx中删除此数据帧。
[0013]作为本专利技术的一种改进,步骤101中将针对每一图像数据帧的采集、压缩、加密、校验等一系列传统处理方式分解为Top Half和Bottom Half两个部分。Top Half仅处理原始图像数据帧采集和插入队列操作,以避免因CPU忙而产生的数据丢帧问题,Bottom Half则由若干个异步线程并发处理压缩、加密、校验以及其他耗时操作。
[0014]作为本专利技术的一种改进,步骤104中包括将针对每一图像数据帧的接收(插入队列)、解密、解压、校验等一系列传统处理方式分解为Top Half和Bottom Half两个部分。Top Half仅处理本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于循环双队列的优化视频压解码丢帧问题的方法,其特征在于,方法包括:步骤101:采集原始数据帧;视频流发送端主线程从摄像头按采集帧率获取图像后直接压入发送端压缩队列Tx,标记压缩标志为FALSE,随即开始下一数据帧采集;步骤102:利用压缩队列Tx并发完成针对不同数据帧的Bottom Half操作;步骤103:发送端主线程依次循环遍历压缩队列,当各标志位均为TRUE时,则发送该数据帧至接收端,并将该数据帧从压缩队列Tx中删除;步骤104:视频流接收端主线程依次从网络收到数据帧后,直接压入解压队列Rx;步骤105:利用解压队列Rx并发完成针对不同数据帧的Bottom Half操作。2.根据权利要求1所述的基于循环双队列的优化视频压解码丢帧问题的方法,其特征在于,方法还包括:视频流发送

接收两端分别创建数据帧处理队列,具体步骤包括:步骤201:视频流发送端主线程创建数据帧循环压缩队列Tx,并设置队列大小;步骤202:视频流接收端主线程创建数据帧循环解压队列Rx,并设置队列大小。3.根据权利要求1所述的基于循环双队列的优化视频压解码丢帧问题的方法,其特征在于,方法还包括:设置发送端视频帧并发处理度并创建数据帧处理线程组,具体包括:步骤301:视频流发送端主线程通过sysconf(_SC_NPROCESSORS_CONF)获取当前处理器核数M,并设置并发度M

1;步骤302:视频流发送端设置压缩线程属性;其中,优先级继承主线程优先级,调度策略schedpolicy为设置SCHED_FIFO;步骤303:视频流发送端设置压缩线程任务函数start_routine为fn_frame_compress();步骤304:视频流发送端通过系统调用pthread_create()创建M

1个压缩线程。4.根据权利要求1所述的基于循环双队列的优化视频压解码丢帧问题的方法,其特征在于,方法还包括设置接收端视频帧并发处理度并创建数据帧处理线程组,具体步骤如下:步骤401:视频流接收端主线程通过sysconf(_SC_NPROCESSORS_CONF)获取当前处理器核数N,并设置并发度N

1;步骤402:视频流接收端设置压缩线程属性;其中,优先级继承主线程优先级,调度策略schedpolicy为设置SCHED_FIFO;步骤403:视频流接收端设置压缩线程任务函数start_routine为fn_frame_decompress();步骤404:视频流接收端通过系统调用pthread_create()创建N

1个压缩线程。5.根据权利要求1所述的基于循环双队列的优化视频压解码丢帧问题的方法,其特征在于,步骤利用压缩队列Tx并发完成针对不同数据帧的Bottom Half操作,具体包括:步骤501:视频流发送端处理线程m循环遍历数据帧压缩队列Tx;步骤502:如果当前数据帧压缩标志位为FALSE时,根据事...

【专利技术属性】
技术研发人员:魏建刚王佳玮周红卫
申请(专利权)人:江苏润和软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1