本发明涉及车载通信领域,特别是涉及一种基于硬件解码的多路视频传输显示方法。
背景技术:
1、随着汽车智能化程度越来越高,诸多场景的应用非常依赖摄像头的输入数据,对于自动驾驶领域,高精定位,激光雷达,物体识别等功能,都对数据的低延时,精确度有很高的要求,从phy到udp层,经历了多层数据的转发交换,且单纯依靠软件算法做图像处理是无法降低osi层次数据交换延迟问题和cpu资源消耗大的问题。
2、所以提出以太网摄像头数据传输基于链路层tsn avb传输协议,使用硬件解码降低cpu资源占用,最终达到整体视频流低延迟、低资源占用的传输和显示效果,导致在开启l2以上的智能驾驶功能,在目标识别采用激光雷达形成的点云数据与摄像头的图像数据融合在某些高负荷处理场景需求中实时性要求没法完全满足,可能会造成安全隐患。
技术实现思路
1、基于现有技术中存在的缺陷之一,本发明提供一种基于硬件解码的多路视频传输显示方法,至少包括:
2、多路车载以太网摄像头基于链路层tsn avb传输协议发送avtp数据包;
3、接收车载以太网摄像头的avtp格式的数据包并进行分析,根据avtp分包协议解析还原每帧的h264格式的数据;
4、通过创建gpu硬件解码器对每帧的h264格式的数据解码;
5、通过gpu硬件解码器渲染后输出至显示屏进行显示;
6、一种基于硬件解码的多路视频传输显示方法,进一步优选地,所述创建gpu硬件解码器的过程包括:
7、定义解码逻辑的主入口函数,创建解码器对象;
8、在gpu解码器中注册分辨率变化的事件,在gpu输出平面上设置格式;
9、设置解码的流以帧为单位的数据,设置内存同步的方式;
10、通知gpu输出平面开始启动流处理。
11、一种基于硬件解码的多路视频传输显示方法,进一步优选地,h264格式的数据获取包括:
12、获取h264数据帧的主入口函数;
13、gpu输出平面的空队列出队;
14、cpu本地读取avb经过还原后的一帧完整h264数据,并将数据写入空队列;
15、gpu输出平面将填满数据的队列放回v4l2驱动。
16、一种基于硬件解码的多路视频传输显示方法,进一步优选地,在cpu本地读取avtp经过还原后的一帧完整h264数据;
17、gpu解码器解码线程获取2帧稳定h264数据,通过分析h264数据,获取关键流信息后,再次配置解码器参数,重新分配解码缓存;
18、关键流信息至少包括:分辨率,帧率,编码格式种的一种。
19、一种基于硬件解码的多路视频传输显示方法,进一步优选地,创建线程用于将解码后的h264推流到显示器显示;
20、v4l2底层自行判断是否有分辨率变化事件发生;
21、当有分辨率变化事件发生,gpu捕获平面从gpu输出平面获取图像帧数据,然后对其进行分析,得到图像颜色格式;
22、获得分辨率,裁切比,配置多路摄像头画面显示坐标,动态分配gpu渲染显示所需要的缓冲区,渲染显示。
23、一种基于硬件解码的多路视频传输显示方法,进一步优选地,gpu捕获平面将已填充缓冲区的队列出队,将出队列的数据赋值给渲染逻辑的函数;
24、gpu底层cuda并行计算加速转换;
25、将出队的队列且数据已经放空的,放回v4l2缓存。
26、一种基于硬件解码的多路视频传输显示方法,进一步优选地,解析还原每帧的h264格式的数据具体包括:
27、循环捕获摄像头数据avtp格式的数据并进行解析获取有效载荷数据;
28、根据有效载荷数据的开头约定前n字节进行开始判断,如果与约定字段相符,则确认为每个完整帧h264数据的第一包数据;
29、经过测试确认后续数据按照顺序依次传输后,将后续数据依次存入第一缓存区。
30、一种基于硬件解码的多路视频传输显示方法,进一步优选地,在确保后续数据包都是一个完整帧的前提下,继续不断读取avtp格式的数据包并进行解析;
31、如果发现预设第二字段标识与约定的最后尾端标识字段相匹配,确认当前数据为每个完整帧h264数据的最后一个包数据;
32、将最后一个包数据存储第一缓存区后,每个完整帧h264数据还原完成;
33、将缓存区每个完整帧h264数据继续推入解码库或算法库进行后续处理。
34、一种基于硬件解码的多路视频传输显示方法,进一步优选地,在硬件解码器创建后,分配硬件解码所需的缓存队列,并创建解码子线程;
35、创建接收车载以太网摄像头数据的队列fifo;
36、在车载以太网接收端采用fifo队列机制,以先入先出的原则按照车载以太网摄像头的标识分路缓存待取走解码的avtp报文。
37、一种基于硬件解码的多路视频传输显示方法,进一步优选地,创建配置基于链路层的socket,并配置共享内存机制poll,创建基于poll可读事件的子线程;
38、通过poll线程读取车载以太网摄像头avtp数据包并进行解包。
39、本发明提供一种基于硬件解码的多路视频传输显示方法,至少包括:
40、多路车载以太网摄像头基于链路层tsn avb传输协议发送avtp数据包;
41、接收车载以太网摄像头的avtp格式的数据包并进行分析,根据avtp分包协议解析还原每帧的h264格式的数据;
42、通过创建gpu硬件解码器对每帧的h264格式的数据解码;
43、通过gpu硬件解码器渲染后输出至显示屏进行显示;
44、创建gpu硬件解码器,在创建gpu硬件解码器时,在gpu解码器中注册分辨率变化的事件,在gpu输出平面上设置格式;
45、设置解码的流以帧为单位的数据,设置内存同步的方式,内存同步的方式具体包括:gpu输出平面和cpu本地缓存同步。
46、当有图像分辨率变化事件发生,gpu捕获平面从gpu输出平面获取图像帧数据,然后对其进行分析,得到图像颜色格式并获取关键信息进行处理配置后续的图像。
47、有益效果:
48、本发明提供的技术方案中,车载以太网摄像头数据传输基于链路层tsn avb传输协议,使用硬件解码降低cpu资源占用,最终达到整体视频流低延迟、低资源占用的传输和显示效果。
49、在gpu解码过程中,自动实时获知图像分辨率的变化,并根据图像分辨率的变化采用对应的措施进行处理。
1.一种基于硬件解码的多路视频传输显示方法,其特征在于,
2.如权利要求1所述一种基于硬件解码的多路视频传输显示方法,其特征在于,所述创建gpu硬件解码器的过程包括:
3.如权利要求1所述一种基于硬件解码的多路视频传输显示方法,其特征在于,所述h264格式的数据获取包括:
4.如权利要求1所述一种基于硬件解码的多路视频传输显示方法,其特征在于,在cpu本地读取avtp经过还原后的一帧完整h264数据;
5.如权利要求1所述一种基于硬件解码的多路视频传输显示方法,其特征在于,创建线程用于将解码后的h264推流到显示器显示;
6.如权利要求1所述一种基于硬件解码的多路视频传输显示方法,其特征在于,gpu捕获平面将已填充缓冲区的队列出队,将出队列的数据赋值给渲染逻辑的函数;
7.如权利要求1所述一种基于硬件解码的多路视频传输显示方法,其特征在于,所述解析还原每帧的h264格式的数据具体包括:
8.如权利要求7所述一种基于硬件解码的多路视频传输显示方法,其特征在于,在确保后续数据包都是一个完整帧的前提下,继续不断读取avtp格式的数据包并进行解析;
9.如权利要求1所述一种基于硬件解码的多路视频传输显示方法,其特征在于,在硬件解码器创建后,分配硬件解码所需的缓存队列,并创建解码子线程;
10.如权利要求1所述一种基于硬件解码的多路视频传输显示方法,其特征在于,创建配置基于链路层的socket,并配置共享内存机制poll,创建基于poll可读事件的子线程;