【技术实现步骤摘要】
一种用于视频监控设备的数据无锁缓存方法和服务器
本专利技术涉及视频监控
,尤其涉及一种用于视频监控设备的数据无锁缓存方法和服务器。
技术介绍
现有视频监控设备缓存数据都是使用链式拼接缓存,当产生数据流时,临时从系统动态申请所需内存,连接至上一存储结点的末尾,形成链式存储,由于“消费”周期的不确定,且不定期的存在多个“消费者”,而“生产者”数据持续不断,很容易造成数据堆积,导致大量内存不能及时释放。其中,数据的生产者是指产生数据的电子设备,例如,摄像头采集视频数据流时摄像头生产者;数据的消费者就是指使用数据的电子设备,例如,在屏幕上显示监控视频以及将监控视频存储在硬盘等存储介质上时,显示和存储设备就是消费者。另外,为保证读写数据的正确性,在读写线程之间加入了互斥锁进行隔离操作,平均每30ms就要进行一次lock/unlock操作,降低了系统cpu的使用效率,同时,也反复动态申请/释放内存,造成大量的内存碎片,导致内存的使用效率低下,进而影响产品存储模块、预览模块的不稳定。还有的方案采用固定大小的环形buffer队列,循环使用,但是由于产品实际运行过程中,每帧数据的大小不固定,此种方式会导致内存的浪费。这些都极大降低了数据的缓存使用效率,导致数据缓存的效率低下的问题。
技术实现思路
为解决本专利技术的技术问题,本专利技术公开一种用于视频监控设备的数据无锁缓存方法和服务器,可以提高数据缓存的效率。本专利技术公开一种用于视频监控设备的数据无锁缓存方法,包括:初始化缓存 ...
【技术保护点】
1.一种用于视频监控设备的数据流无锁缓存方法,其特征在于,包括:/n初始化缓存区,所述缓存区包括索引区和数据区,其中,所述数据区用于存放视频监控设备待处理的数据流;所述索引区用于记录所述数据流存放在所述数据区中的起止位置信息;/n当采集到数据流时,对所述数据流进行封装,得到封装后数据,所述封装后数据包括帧头和帧数据;/n当所述封装后数据中帧数据的长度超过预设的最大单帧长度时,丢弃所述封装后数据;/n当所述封装后数据中帧数据的长度不超过预设的最大单帧长度时,将所述封装后数据存入所述数据区,并将所述封装后数据在所述数据区中的起止位置信息保存到所述索引区中;/n当接收到从缓存区进行数据获取的指令时,通过索引区中保存的起止位置信息获取数据区中对应的封装后数据,并发送所述封装后数据。/n
【技术特征摘要】
1.一种用于视频监控设备的数据流无锁缓存方法,其特征在于,包括:
初始化缓存区,所述缓存区包括索引区和数据区,其中,所述数据区用于存放视频监控设备待处理的数据流;所述索引区用于记录所述数据流存放在所述数据区中的起止位置信息;
当采集到数据流时,对所述数据流进行封装,得到封装后数据,所述封装后数据包括帧头和帧数据;
当所述封装后数据中帧数据的长度超过预设的最大单帧长度时,丢弃所述封装后数据;
当所述封装后数据中帧数据的长度不超过预设的最大单帧长度时,将所述封装后数据存入所述数据区,并将所述封装后数据在所述数据区中的起止位置信息保存到所述索引区中;
当接收到从缓存区进行数据获取的指令时,通过索引区中保存的起止位置信息获取数据区中对应的封装后数据,并发送所述封装后数据。
2.如权利要求1所述的用于视频监控设备的数据流无锁缓存方法,其特征在于,所述数据流为硬件视频编码器中的一帧H26x编码视频帧或Mjpeg图像数据,或者麦克风采集的音频数据。
3.如权利要求1所述的用于视频监控设备的数据流无锁缓存方法,其特征在于,将所述封装后数据存入所述数据区,并将所述封装后数据在所述数据区中的起止位置信息保存到所述索引区中,包括:
确定所述数据区的环号n,以及所述数据区中的可覆盖空间;
将所述封装后数据依次写入所述可覆盖空间中,并将所述封装后数据在所述数据区中的起止位置信息保存到所述索引区中;
当所述数据区中不存在所述可覆盖空间时,重新将所述数据区全部确定为可覆盖空间,以及将所述数据区的环号更新为n+1。
4.如权利要求1所述的用于视频监控设备的数据流无锁缓存方法,其特征在于,所述通过索引区中保存的起止位置信息获取数据区中对应的封装后数据,包括:
通过读句柄的方式,根据索引区中保存的起止位置信息查找数据区中对应的预取数据,所述预取数据为预取的封装后数据;
判断所述预取数据是否已覆盖或在数据读取的安全距离以内;
当所述预取数据已覆盖或在数据读取的安全距离以内时,则进行数据调整;
否则,根据所述指令所携带的消费模式获取封装后数据。
5.如权利要求4所述的用于视频监控设备的数据流无锁缓存方法,其特征在于,所述进行数据调整,包括:
若所述索引区以及数据区与当前时刻写数据的位置存在跨环,且写数据与读数据之间的距离小于预设的安全距离,则在索引区内依次向前调整,直至当前帧在安全距离以...
【专利技术属性】
技术研发人员:刘宇健,文毅,曾俊,
申请(专利权)人:成都焱之阳科技有限公司,
类型:发明
国别省市:四川;51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。