基于rv1126 rkmeida 一路多出 原理
基于rv1126 rkmeida 一路多出的坑
首先说要的是介绍一下rkmedia 相关内容
RKMedia提供了一种媒体处理方案,可支持应用软件快速开发。RKMedia在各模块基础API上做进一步封装,简化了应用开发难度。该平台支持以下功能:VI(输入视频捕获)、VENC(H.265/H.264/JPEG/MJPEG编码)、VDEC(H.265/H.264/JPEG、MJPEG 解码)、VO(视频输出显示)、RGA视频处理(包括旋转、缩放、裁剪)、AI(音频采集)、AO(音频输出)、AENC(音频编码)、ADEC(音频解码)、MD(移动侦测)、OD(遮挡侦测)、VMIX(视频合成)、MUXER(视频封装)、VP(视频一入四出)
视频输入(VideoInput,简称VI)用于读取Camera数据。该模块是对标准V4L2接口的封装,依赖LinuxV4L2驱动架构。ISP/ISPP/VICAP驱动通过V4L2架构向用户层提供文件节(如:/dev/video0),VI通过操作文件节点实现参数配置视频帧的读取等操作。
使用VP完成视频从rkispp_input_image节点对应video输入,使用VI完成视频从rkispp_m_bypass、rkispp_scale0、rkispp_scale1、rkispp_scale2节点对应video输出,即可实现视频一入四出。
通道绑定
/*
* -> VI2 --> venc1
* VI0 -> VP0 -- ISPP -> VI3 --> venc2 -->out
* -> VI4 --> venc3
* -> VI5 --> venc4
*
* VI0 是 能够采集图像的vdieo /dev/video0 也是可以的 但必须进行设置 先kill iqserver
* 在初始化 VI0 通道的时候 加上vi_chn_attr.enBufType = VI_CHN_BUF_TYPE_MMAP;
* 当然 rkispp_scal0 也是可以的 也就是你当前摄像头所连接的 ispp0 模块
* VP0 是 rkispp_input_image
* 最后利用ispp 模块进行 缩放
* 在将其绑定到 编码通道上
在使用过程中我们需要将ispp1 模块 在设备树给打开
&rkispp_vir2 {
status = "okay";
};
注意: 因为你的摄像头链路已经把 ispp0 已经用了 当你采集的时候就不能在用 ispp0 去进行 扩展了 大概意思就是 把 ispp0 的数据给 ispp1 让他去进行输出 四路数据 不知道这么理解正确不 在所有的博客是没有人用ispp0 模块进行绑定通道的。
下来就是配置 ispp1 模块相关的 media 子系统 因为你在设备树 设置的时候仅仅打开这个通道 没有进行一个数据通道绑定 所有他相关的参数都不知道。 我的是media4 注意看你的 media-ctl -d /dev/media* 头部有相关信息
Media device information
------------------------
driver rkispp
model rkispp1
serial
bus info
hw revision 0x0
driver version 4.19.111
media-ctl -d /dev/media4 --set-v4l2 '"rkispp-subdev":2[fmt:YUYV8_2X8/1920x1080]'
media-ctl -d /dev/media4 --set-v4l2 '"rkispp-subdev":2[fmt:YUYV8_2X8/1920x1080]'
media-ctl -d /dev/media4 -l '"rkispp_input_image":0->"rkispp-subdev":0[1]'
下来就这么这么多 根据自己产品进行一个 使用吧 相关代码可以参考这个博客。