深入探讨地平线X5图像多媒体框架技术细节
X5图像多媒体框架介绍
X5图像多媒体框图
媒体接口包含视频输入,视频处理(ISP图像处理器、裁剪、缩放、旋转、矫正),GPU2D(图像搬运、图像缩放、矩形填充和清除、图像缩放后滤波处理、透明度混合、逆时针或者顺时针旋转、镜像翻转、色彩空间转换、裁剪),GPU3D(图像渲染功能、并行计算加速、OpenGL ES 3.1/3.0/2.0/1.1、OpenVG 1.1 EGL 1.5 、OpenGL2.x 、OpenCL1.1/1.2/3.0)H.264/H.265/JPEG/MJPEG编码和解码,视频输出显示功能,接口做了抽象化的封装,支持应用快速进行软件开发。
各模块总体性能
各模块支持的输入输出格式如下列表
视频输入(VIN)
MIPI:支持RAW8/RAW10/RAW12 or YUV422 8bit 。
视频输入(VIN包含MIPI、SIF)实现的功能:通过MIPI Rx接口接收视频数据。VIN将接收到的数据给下一个模块ISP同时也可存入到指定的内存区域,在此过程中,VIN可以对接收到的原始视频图像数据进行处理,实现视频数据的采集。
下图是SIF PASSTHROUGH_MODE到ISP
下图是SIF MCM_MODE 到 ISP MCM是Multi Context Management缩写
下图是SIF DDR_MODE到ISP
VIN有4个MIPI Host ,每一个MIPI Host对应一个SIF SIF可以把数据online直接传给ISP,也可把数据写到DDR,在不接入serdes等加串解串器情况下,最多只能接入4路sensor MIPI只接单路sensor的情况下,SIF数据可以online到ISP,如果是多路sensor SIF数据需要offline到DDR再到ISP。
SIF管理MIPI或从内存里输入进来的图像数据,MIPI CSI 0和MIPI CSI 2各有4个vc channel MIPI CSI 1和MIPI CSI 3各有2个vc channel,如果使用serdes加串解串器,理论上最多支持12路vc sensor接入,如下框图:
视频输入(ISP)
绑定在视频输入设备后端,负责图像处理ISP有4个输入port,可支持4路online连接,但ISP硬件Pipeline只有一个,多路online到ISP时分时复用Pipeline,理论最多支持12路接入,ISP会把数据写到DDR,然后软件会在合适的时机把数据读入Pipeline进行处理,ISP处理完的数据可online直接给到VSE,也可写到DDR给到GDC畸变矫正模块或者2DGPU模块。
视频处理(VSE)
VSE有6个输出通道,可支持不同尺寸的缩放,裁剪,同时支持OSD功能,可在图像中叠加文字或色块,VSE处理完的数据会写到DDR给到BPU模块或者2DGPU,GDC畸变矫正模块,编解码模块,USB模块等处理,需要注意的是vse硬件需要16字节对齐,因此vse驱动会对图像宽度进行align,输出图像的宽度也会随之更改,另外当roi或者target被设置成0时,为了保证正常运行,驱动会自动计算出一个尺寸,并设置下去,VSE还可以控制input图像的fps和输出通道的fps,驱动会根据这两个值对输出通道的帧率进行控制,输出通道的fps只能小于input图像的fps,默认值均为0,此时驱动不会进行帧率控制。
VSE各输出通道的尺寸限制如下
DDR数据回灌到VSE模块
ISP数据ONLINE输出到VSE模块
畸变矫正模块(GDC)
可将输入的图像进行畸变校正、视角变换和指定角度(0,90,180,270)的旋转,模式支持的输入图像典型尺寸为3840*2160,2688*1944,1920*1080,1280*720,640*480,480*320。
硬件特性如下
• 最大分辨率:4096x2160
• 最小分辨率:奇数行或者列不支持
• 性能:4096x2160@60fps
• 输入格式:YUV420 semi planar
• 输出格式:YUV420 semi planar
图像处理单元(GPU)
X5上面集成了2D GPU和3D GPU硬件模块。
2D GPU
性能数据:
• 最大分辨率为4k
• 处理性能4k@90fps
支持功能:
• 位块传输(BitBlt)
• 拉伸位图传输(Stretch Blit)
• 矩形填充和清除(Rectangle fill and clear)
• 单次滤波位块传输(One Pass Filter Blit)
• 透明度混合(Alpha blending)
• 支持90/180/270度、逆时针或者顺时针旋转
• 支持镜像翻转
• 支持ROP(光栅操作码)
• 支持裁剪
• 支持色彩空间转换,即YUV 转 RGB 和 RGB转YUV Color Space Convert
支持格式:
2D GPU支持以下格式:
3D GPU
模块描述
X5 GPU可以提供图像渲染功能,还能提供一定的并行计算加速
目前支持的API如下:
• OpenGL ES 3.1/3.0/2.0/1.1
• OpenVG 1.1
• EGL 1.5
• OpenGL 2.x
• OpenCL 1.1/1.2/3.0
• 峰值算力为32GFLOPS
视频输出(Display)
Display视频输出模块从DDR读数据,处理完通过MIPI DSI/BT1120输出到显示设备,或通过MIPI Tx输出给另一个MIPI Host设备,X5输出接口使用了标准的DRM(DirectRendering Manager)框架,DRM核心向应用程序导出了多个接口,通常通过相应的libdrm包装函数来使用。
编解码模块(MediaCodec)
MediaCodec模块主要用于音频、视频和JPEG图像的编解码,本模块将会提供一系列的接口便于用户输入待处理的数据和获取处理完的数据,本模块支持多路编码或解码实例同时工作,其中视频和JPEG图像的编解码由硬件实现,用户需要调用libmultimedia.so,音频则基于FFMPEG的接口由软件实现,用户需要调用libffmedia.so,如下表所示为X5所支持的视频编解码规范和音频编解码规范,需要注意的是AAC的编解码需要license授权,因此用户需要获得授权后才能使能相关代码。
注:以上描述的profile, level, tier为ip支持的最大图像级别。具体也支持更低级别的画质级别。例如
• H264/AVC:Baseline/Constrained Baseline /Main/High Profiles Level @ L1~L5.2
• H265/HEVC:Main and Main Still Picture Profile Level @ L1~L5.2 Main and Hightier
此外视频和图像的数据源包括VIO输入的图像和用户输入的YUV数据两类,用户输入的YUV数据则可能是从文件中加载或者通过网络传输获得;音频的数据源包括MIC输入的音频和用户输入的PCM数据两类,MIC输入的音频是由Audio Codec采集的数字信号,用户输入的PCM数据则可能是从文件或网络传输获得。
注意:X5使用的Codec编解码接口是直接操作hb_mm_mc开头接口,跟X3有区别。
HBN Api接口介绍
在软件上,Camera是单独一套API Camera之后的模块用vnode来抽象,vnode抽象的模块包括VIN、ISP、VSE、GDC、N2D、Codec。多个vnode组成一条vflow(类似于一条pipeline)。Camera和VIN通过attach接口绑定起来。 用户只需要调用HBN接口完成模块的初始化和绑定,vflow建立并启动后,用户无须关心数据帧的传递,SDK内部会将数据帧由上游传递到下游。下图是两条vflow(两路)的例子:
本例中有两个Sensor,对应两个flow VIN(SIF)到ISP可以online连接,也可以offline连接,取决于使用的VIN输出通道。
通道说明
• 模块间的连接是online还是offline由通道决定,编号为1的输出通道表示online连接。
• ISP/VSE/GDC都有且只有一个输入通道0,用于绑定和数据回灌。
连接方式
通过hbn_vflow_bind_vnode()接口建立模块间的连接方式。
API参考
VIN、ISP、VSE、GDC模块共用一套HBN API。N2D、Codec有单独的API,但也可以用HBN API和其他模块建立绑定关系、添加到vflow,这样SDK内部会自动把数据帧给到N2D或Codec,用户无须关心N2D/Codec与其他模块间的数据传递。
接口调用示意:
Sunrise camera用户使用开发说明
Sunrise camera是官方开发的应用程序,方便用户对Camera、VIO、Codec、BPU等模块的快速评测,用户通过PC上的Web浏览器,可以方便的对程序进行参数配置,并实时预览视频流、算法渲染结果等信息,程序主要功能如下:
• 支持智能摄像头功能模式,最大支持接入4路Camera Sensor
• 支持智能多路解码分析盒功能模式,最大支持8路1080p@30视频码流的编解码
• 支持通过PC浏览器对程序进行参数配置,例如Camera sensor、编码码率、算法模型、视频源等参数
• 支持通过PC浏览器、VLC拉流、HDMI输出等多种方式预览图像效果
• 算法多种模型切换,例如mobilenet_v2、yolov5s、fcos等
多媒体调试
X5多媒体提供了如下的示例代码供客户点亮sensor,获取sensor raw数据,获取ISP数据,VSE数据回灌输出功能参考,GDC畸变矫正回灌数据功能参考,视频编解码功能参考,多路sensor pipeline数据通路功能参考,usb uvc示例功能参考,2DGPU视频内存搬运、视频裁剪、视频拼接、视频旋转、视频缩放、视频混合叠加、视频数据图像格式转换等。
多媒体调试指南
tuning server
功能:开启
tuning server
说明:使用该命令后,cam service将能够支持tuning service,允许用户通过vtuner对isp进行参数tuning。
cam-service
功能:控制cam-service输出log等级。
说明:使用该命令,可以控制cam-service log的输出mask,根据mask输出对应等级的log打印。其中,bit0为error级别,bit1为warning级别,bit2为info级别,bit3为debug级别,bit4为verbose级别。三个数字则分别对应cam service中isp adapter layer/3A、isp auto control、isp upper api这三个部分的打印等级。
libcam/libvpf输出打印等级控制
功能:控制libcam/libvpf的输出log等级。
说明:使用该命令,可以分别控制libcam/libvpf的日志输出等级。这两个动态库总共有四个打印等级,分别是err warning info debug,分别对应1,2,3,4。默认打印等级为warning级别,该命令修改打印等级,loglevel为4时输出所有打印。
帧率信息
功能:输出帧率
说明:打印所有在跑的模块的fps,该fps为某模块输出到ddr,且未被软件视为丢帧时的fps。当某模块online到下级模块时不会有该信息,当出现丢帧时,则该统计值会小于预定sensor的fps。需要注意的是,使用该节点需要打开sif的timestamp功能,对应json的配置可以参考如下:
说明:打印所有在跑的模块的对应动作(Frame start/Frame end/Queue buffer/Dqueue buffer)时的时间戳(以秒为单位),该统计信息打印最近5帧frameid对应的时间戳。如果出现某帧数据为0,说明该时刻还未到来。驱动会在Frame end去Queue buffer/Dqueue buffer操作,所以这三个时刻相近,且在Frame end之后。VSE模块因为硬件原因没有Frame start中断,因此该节点的此值为空。frameid使用Framestart时刻的frameid,若没有Frame start frameid值为空。
延迟信息
功能:输出模块处理一次数据的延时情况。
输出示例:
说明:SIF在Frame start时,会在内核获取当前的时间戳,这个时间戳会跟随这帧图像沿vio通路一直向后。该命令打印所有在跑的模块,当这个模framedone也就是处理完成时,当前时间戳与sif时刻获取的时间戳之间的差值,也就是一帧图像从被sif接收到某个模块处理完成的时间延时。该节点信息依赖offline时的framedone,没有保存到ddr 的模块无法显示该信息。当某个模块没有framedone信息时,例如应用层没有获取图像buffer,驱动会认为是软件丢帧,对应的节点也不会更新,将保持最后一次的信息。
丢帧信息
功能:输出模块的丢帧信息。
说明:第一条命令打印所有在跑的模块,最近的几帧丢帧数据的frameid。第二条命令打印所有在跑的模块,统计其丢帧的帧率,软件丢帧出现在framedone时,如果某个模块没有保存数据到ddr,则不会出现软件丢帧。这两条功能暂时不支持。
驱动buffer状态
说明:打印所有在跑的模块,其输入输出通道的各个状态的buffer数量。
vio通路信息
说明:打印所有在跑的视频通路ip间的连接信息,S[数字]表示当前通路的flowid,模块名字后面的数字为hw_id C[数字]表示其软件ctx_id dma代表输出图像到ddr m2m代表offline到后级模块,otf代表直连到后级模块。
ION内存占用估算
VPF框ION内存占用估算
当某个模块需要保存数据到DDR时,框架会申请对应的图像ION buffer,也就是说框架占用ion的大小取决于用户所调用 hbn_vnode_set_ochn_buf_attr()接口,这个接口中会根据图像的数据格式以及数量申请ION buffer。目前常见格式的单个buffer的大小可以参照下表:
值得注意的是,VSE每个通道都是独立的,它们各自申请buffer 。另外每申请一个图像的buffer,驱动会自动申请一块metadata(预留)的数据buffer ,大小为4K 。
GDC binary ION内存占用估算
GDC所占用的ION内存大小为binary的大小,该文件的大小并不是一个定值,一般而言不会超过64K 。
OSD ION内存占用估算
OSD分配ION buffer都是根据格式申请两块对应的尺寸的buffer 。例如每创建一个Region区域,会申请两块VGA8 格式内存,其大小估算由格式决定,对应表格如下:
其中SW_VGA4会在软件处理中用到,例如如果通过软件OSD画字,总共需要width*height + width*height*3 ))* 2 大小的ION buffer 。
VPU调试信息
说明:可查看h264,h265编解码运行时的一些参数,状态等信息,查看编解码器负载包括h264/h265编码器和解码器,显示整体的负载 。
输出示例
说明:即查看编码器负载信息,也可以通过对应节点关闭该功能。
查看视频编码器调试和统计信息
说明:主要输出了编码器的各种参数信息,如编码参数,gop,roi,idr,slice,timming,transform等。 以及编码实例的一些状态信息,如输入buffer数量,输出buffer数量,当前fps等。主要用于开发和调试等。
输出示例
查看视频解码器调试和统计信息
说明:主要输出编码一些信息,如码流分辨率,压缩格式,帧数,fps等。如上图即4路h264 1080p解码的信息。
输出示例
JPU调试信息
说明:可查看jpeg,mjpeg编解码运行时的一些参数,状态等信息,查看编解码器负载包括jpeg/mjpeg编码器和解码器,显示整体的负载
输出示例
说明:即查看编码器负载信息,也可以通过对应节点关闭该功能。
查看jpeg/mjpeg编码器调试和统计信息
说明:输出 jpeg/mjpeg 编码器的一些参数和状态,如分辨率,格式,实例索引,帧数,帧率等。
输出示例
查看jpeg/mjpeg 解码器调试和统计信息
说明:输出jpeg/mjpeg解码器的一些参数和状态,如分辨率,缓存个数,码流字节数,格式,实例索引,帧数,帧率等。
输出示例
- |
- +1 赞 0
- 收藏
- 评论 0
本文由ll转载自D-Robotics,原文标题为:X5 媒体资料分享,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
地瓜机器人与火山引擎联手打造基于大模型的“云-边-端”一体化机器人开发底座
地瓜机器人与字节跳动旗下云服务平台火山引擎达成合作,双方将在“机器人+大模型”领域强强联合,实现地瓜机器人软硬件通用底座与火山引擎边缘智能大模型网关“云-边-端”的全面打通,加速大模型在机器人场景的落地,拓展机器人的无限智能化潜能。作为拥有极致算力性价比与极简开发体验的地瓜机器人开发者套件,RDK X5可提供高达10 TOPS的端侧算力,接口丰富,极致易用。
【IC】D-Robotics RDK X5机器人开发者套件,可提供高达10 Tops算力,加速智能化应用快速落地
D-Robotics RDK X5搭载Sunrise 5智能计算芯片,可提供高达10 Tops的算力,是一款面向智能计算与机器人应用的全能开发套件,接口丰富,极致易用,支持Transfomer、RWKV、Occupancy、Stereo Perception等多种复杂模型和最新算法,加速智能化应用快速落地。
地瓜机器人生态新品 | 轮趣科技发布基于RDK X5的ROS2教育机器人V550
V550 R0S2教育机器人是轮趣科技联合地瓜机器人推出的面向ROS教育场景的入门产品,基于地瓜机器人RDKX5机器人开发者套件,并依托于TogetheROS.B机器人操作系统,机器人的软硬件性能大幅度提升,结合全面升级的TOF激光雷达与深度相机,可以满足ROS和AI等进阶学习。并搭载轮趣科技多项专利技术,通过轮趣成熟的工业设计实现了简约外观和开发方便的平衡。
D-Robotics RDK™X5产品简介
描述- D-Robotics RDK TM X5 是一款搭载 Sunrise 5 智能计算芯片的全能开发套件,具备高算力(10 Tops),适用于智能计算与机器人应用。该套件具有丰富的接口,支持多种复杂模型和最新算法,旨在加速智能化应用的快速落地。
型号- RDK X5 4GB,RDK™ X5,RDK X5 8GB
D-Robotics YOLO World开放词汇目标检测
YOLO-World是一种先进的开放词汇目标检测方法,根据输入文本的变化可以实现以零样本的方式高效检测出不同的全新类别目标。应用场景:YOLO-World强大的零样本检测能力使得其具有更强的泛化能力,可以应用在智能驾驶、智能家居、地质检测等领域。
RDK X5重磅发布、RDK S100惊喜亮相,地瓜机器人开发者套件全家桶全新登场
9月20日,以“加速智能生长”为主题的“2024地瓜机器人开发者日”活动在深圳成功举办。地瓜机器人重磅推出面向“机器人+”时代的软硬件产品全家桶,包括专为新一代通用机器人而生的旭日5智能计算芯片、极致易用全能开发首选RDK X5机器人开发者套件、具身智能全场景算力核心RDK S100,以及赋能全链条全生命周期的机器人云端开发环境,软硬结合、端云一体,让开发更简单、让机器更智能。
D-Robotics 人形机器人自动踢球控制
本文介绍了人形机器人自动踢球控制的设计方案及应用。该功能包通过接收物体识别节点的消息,控制机器人自动踢球。
基于RDK系统的双目深度估计算法示例
双目深度估计算法是使用地平线OpenExplorer在SceneFlow数据集上训练出来的StereoNet模型。算法输入为双目图像数据,分别是左右视图。算法输出为左视图的视差。此示例使用mipi双目相机作为图像数据输入源,利用BPU进行算法推理,发布包含双目图像左图和感知结果的话题消息, 在PC端rviz2上渲染算法结果。
基于地平线RDK模型YOLOv5s深度学习的方法进行赛道障碍物检测应用实例
该功能为基于深度学习的方法识别赛道中的障碍物,使用模型为YOLOv5s。地平线RDK通过摄像头获取小车前方环境数据,图像数据通过训练好的YOLO模型进行推理得到障碍物的图像坐标值并发布。
基于RDK平台的YOLOv10目标检测算法示例
YOLO功能介绍YOLO目标检测算法示例使用图片作为输入,利用BPU进行算法推理,发布包含目标类别和检测框的算法msg。YOLO目标检测算法示例使用图片作为输入,利用BPU进行算法推理,发布包含目标类别和检测框的算法msg。目前支持yolov2、yolov3、yolov5、yolov5x四个版本。
在RDK X5平台上实现Mobile SAM量化部署的分割示例
mono_mobilesam package是基于Mobile SAM量化部署的使用示例。图像数据来源于本地图片回灌和订阅到的image msg。SAM依赖检测框输入进行分割, 并分割检测框中的目标, 无需指定目标的类别信息, 仅需提供框。最终将算法信息通过话题发布, 同时在Web页面渲染可视化。应用场景为结合检测框进行障碍物分割、水渍区域分割等。
RDK X5平台上CLIP文本图片特征检索应用示例
文本图片特征检索功能介绍CLIP是由OpenAI提出的一种多模态机器学习模型。该模型通过对大规模图像和文本对进行对比学习, 能够同时处理图像和文本, 并将它们映射到一个共享的向量空间中。本示例展示在RDK平台上利用CLIP进行图片管理与文本搜图的功能。
人形机器人物体抓取实例
介绍人形机器人物体抓取的设计方案及应用特点。
电子商城
登录 | 立即注册
提交评论