基于V4L2 框架的Media Request架构研究
2021-04-07张倩敏吴其林
张倩敏,刘 拥,吴其林,刘 运
(巢湖学院 信息工程学院,安徽 巢湖 238000)
随着互联网通信的快速发展和5G技术的普及,各种直播和短视频平台开始快速涌现,视频已经成为我们获取外界信息最快速的方式之一[1]。随着多媒体技术的不断发展,视频编解码的应用场景也越来越复杂,衍生出多种不同的使用领域,如stateless codecs、region of interest(ROI)、High-Dynamic Range (HDR10+)[2-3]、Complex Camera、Codec V2等。V4L2[4-5]的框架已经不能满足这些复杂应用场景的性能需求,为了解决部分场景的应用问题,kernel 4.20后在图像输入端添加了Request api新架构。
在视频编码时,需要对每一张输入图像设置不同的参数(metadata),再让硬件去编码。如果不借助Request api,直接调用V4L2的接口送一张图像数据和编码需要的参数给硬件进行处理,等硬件处理完这张图像后才能送下一张图像的数据和参数。在引入Request api架构后,V4L2可以调用media request的相关接口把每一张图像数据和对应的参数进行绑定,用户只需要调用V4L2的接口把数据连续不断地送给硬件处理,不用担心图像数据和参数匹配错误的问题,可以有效地提高数据并行处理的能力,尤其在user space等需要大量数据计算的场景中效率提高得非常显著。
1 V4L2视频多媒体框架
鉴于Linux开源、稳定且具有良好的移植性、完善的参考文献和庞大的用户群体,Linux系统的使用越来越广泛。尤其是随着嵌入式系统的快速发展,Linux已经渗透到我们生活中的方方面面。智能电视、安防监控、智能手机,甚至在汽车多媒体中都可以看到Linux系统的身影。
传统视频多媒体服务层的架构如图1所示……
