Linux上位机开发实践(从MPP平台到产品)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
对于mpp平台来说,现在很多soc芯片厂商都会提供类似的功能。或许不叫这个名字,但是功能方面却是类似的。这些基本功能一般都会包括vi(视频输入)、vo(视频输出)、isp(图像处理)、venc(图像&视频编码)、vdec(视频解码)、npu(智能模块)、ai(音频输入)、ao(音频输出)、aenc(音频编码)、adec(音频解码)。这些功能肯定是需要提前把驱动移植好的。等到驱动ok了,通过自由组合这些模块,就能做出各种各样的产品。
有的ipcam还会包含ippu(图像后处理单元,image post process unit),它是相对于isp而言的。如果是mipi camera,一般就是vi-》isp-》ippu;如果是usb camera,那么直接vi-》ippu即可,因为usb camera内部已经做过一遍isp了。ippu实现的功能主要就是整体图像的处理,比如缩小、放大、截取、osd、时间戳、画中画等等,而isp则是单个像素pixel的调整。
当然除了ippu,还有很多网络模块。这些网络模块一般会实现rtsp、rtp、rtmp、onvif等网络协议。不过鉴于这些网络模块都是软件实现的,所以通常不会单独拿出来讨论。
1、vi-》vo
视频输入,直接到视频输出。这部分主要用在一些检测、放大设备上。比如教学设备,直接把老师手写的内容,经过camera传给投影仪;工厂检测设备,即把pcb拍照得到的图像传到显示器,供工人分析。
2、ai-》ao
最简单的音频输入,直接到音频输出,就是扩音器。
3、vi-》isp-》venc
这里包含了isp,很明显就是mipi camera。如果是usb camera,那么可以缩减成vi-》venc。所以,视频输入经过isp之后,就可以编码成图片,或者是本地视频流。这一类设备应用很广,就是各种各样的记录仪设备。比如说,大家常见的汽车行车记录仪、运动相机、行政部门的执法记录仪等等,都可以看成是这类设备。
4、vi-》isp-》venc-》rtsp
和3相比较,这里多了一个rtsp,也就是说,本地保存的视频流,可以通过rtsp网络协议送出去。一般本地rtsp都是作为服务器端运行的,其他设备想要访问当前设备的视频流,就可以以客户端的角色来进行访问。这也是大多数ipcam设备运行的方法。
5、file-》vdec-》vo
这个应用也比较容易想到,就是从文件种获取视频信息,然后通过显示器播放出去。类似的有h264视频文件、jpg图片文件等等。很多的广告机,就是这么来做的。
6、rtsp-》vdec-》vo
这种设备是和4对应的,它不需要venc,也就是编码功能,本身只需要解码功能。即从rtsp获得视频流之后,经过解码,就可以通过视频显示设备显示出来。如果需要保存,那么就可以解码的同时,直接保存视频流,生成文件,也是可以的。很多的nvr设备,就是这么开发出来的。
7、vi-》isp-》npu
随着人工智能的流行,很多的设备都带有npu功能,这样训练好的model,就可以直接跑在npu上面,非常方便。和pc相比较,嵌入式设备性价比高,有了npu的加持,不需要性能很好的cpu,就可以实现不错的ai效果。目前,消费领域、汽车领域、工业领域、医疗领域都有很多的ai应用。常见的应用,就是人脸、车牌、ocr识别等等。
8、ai-》aenc,file-》adec-》ao
和视频处理一样,音频也有类似的处理过程,比如说录音设备、音频播放设备等等。各种各样的录音笔、音乐播放设备,就是这种运行模式。
9、ai-》npu
人工智能的范围很广,除了视频图像,还有音频、自然语言处理。以音频为例,常用的音频智能应用,就有语音识别、语音生成、语音交互等等。所以,这里的npu,不仅仅可以给视频使用,其实也是可以给音频使用的。
ipcam soc从最基础的视频、音频播放保存,到网络交互,再到ai应用,在不同领域、不同方向和不同场景都有着巨大的应用市场。上面谈到的几种应用只是抛砖引玉,实际大家还可以根据客户需求,创造出更多的产品形态。比如说usb工业相机就不在上面的模式当中,即vi-》isp-》venc-》usb。大家不妨多学学这个平台,一定会有很大的收获。