RK3568评估板应用:Camera 多媒体开发(一)
7140
RK3568评估板应用:Camera 多媒体开发(一) 一休摸鱼 2022-09-28 09:28:56

易百纳社区

通过gstreamer/rockit来在rockchip平台上做multimedia的开发:

vpu_service--> mpp --> gstreamer/ffmpeg --> app

vpu_service:驱动

mpp:rockchip平台的视频编解码中间件,相关说明参考mpp文档

gstreamer:对接app的组件

目前rockchip提供的完整solution是基于gstreamer的,使用gstreamer的好处就是可以比较方便的基于pipeline的方式编写完整的播放器、编码器这些应用。

一、v4l2-utils

在Buildroot固件中,已经编译好了v4l2-utils软件包里面的工具。开发板中烧入Buildroot固件后,输入命令 v4l2-ctl-h ,有以下显示:

[root@RK356X:~]# v4l2-ctl-h
General/Common options:
--all           display all information available
-C, --get-ctrl <ctrl>[,<ctrl>...]
get the value of the controls [VIDIOC_G_EXT_CTRLS]
-c, --set-ctrl <ctrl>=<val>[,<ctrl>=<val>...]
set the value of the controls [VIDIOC_S_EXT_CTRLS]
-D, --info        show driver info [VIDIOC_QUERYCAP]
-d, --device <dev> use device <dev> instead of/dev/video0
if <dev> starts with a digit, then /dev/video<dev> is used
-e, --out-device <dev> use device <dev> for output streams instead of the default device as set with --device
if <dev> starts with a digit, then /dev/video<dev> is used
-h, --help display this help message
二、使用media-ctl查看拓扑结构

media-ctl是v4l2-utils包中的一个工具,主要用来查看、配置Media Framework的各Entity的信息,如格式、裁剪、链接使能等。

  1. 显示拓扑结构

使用以下命令可以显示拓扑结构:

`#codeContent#nbsp;media-ctl -p -d /dev/media0 `

主要关注的是有没有找到Sensor的Entity。如果没有找到Sensor的Entity,说明Sensor注册有问题,请按FAQ文档排查。例如,开发板上接上gc2053摄像头后可以看到如下的输出(有删减):

[root@RK356X:~]#media-ctl -p-d/dev/media0

Media controller API version 4.19.193

Media device information
------------------------
driver         rkisp-vir0
model          rkisp0
serial
bus info
hw revision          0x0
driver version 4.19.193

Device topology
- entity 1 : rkisp-isp-subdev (4 pads, 7 links) 
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev0
pad0: Sink
[fmt:SGRBG10_1X10/1920x1080 field:none
crop. bounds: (0, 0) /1920x1080
crop: (0, 0)/1920x1080]
<-"rkisp-csi-subdev":1 [ENABLED]
<- "rkisp_rawrd0_m":0 [ ]
<- "rkisp_rawrd2_s":0 [ ]
pad1:Sink
<- "rkisp-input-params":0 [ENABLED] 
pad2: Source
[fmt:YUYV8_2X8/1920x1080 field:none colorspace:smpte170m quantization:full-range
crop. bounds: (0, 0) /1920x1080
crop: (0, 0)/1920x1080]
-> "rkisp_mainpath":0 [ENABLED]
-> "rkisp_selfpath":0 [ENABLED]
pad3: Source
-> "rkisp-statistics":0 [ENABLED]
- entity 70: m00_f_gc2053 4-0037 (1 pad, 1 link)
type V4L2 subdev subtype Sensor flags 0
device node name /dev/v4l-subdev3
pad0: Source
[fmt:SGRBG10_1X10/1920x1080@10000/300000 field:none]
->"rockchip-csi2-dphy1":0 [ENABLED]

从entity70信息中可以看到:

  • 该Entity完整的名称是:m00_f_gc2053 4-0037

  • 它是一个V4L2 subdev(Sub-Device) Sensor

  • 它对应的节点是/dev/v4l-subdev3,应用程序(如v4l2-ctl)可以打开它,并进行配置

  • 它仅有一个输出(Source)节点,记为pad0

  • 它的输出格式是[fmt:SGRBG10_1X10/1920x1080@10000/300000 field:none],其中SBGGR10_1X10是一种mbus-code的简称

  • 它的Source pad0 链接到"rockchip-csi2-dphy1"的pad0,并且当前的状态是 ENABLED。

2.修改Entity的format、size

举例一,GC2053摄像头支持多个分辨率的输出,默认为1920x1080。现将输出分辨率改为640x480:

media-ctl -d/dev/media0\
--set-v4l2' "m00_f_gc2053 4-0037":0[fmt:SGRBG10_1X10/640x480]'

修改GC2053输出后,rkisp-isp-subdev的大小及video device crop也相应要修改。因为后级的大小不能大于前级的大小。

~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":0[fmt:SGRBG10_1X10/640x480]'
~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":0[crop: (0, 0)/640x480]'
~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":2[crop: (0, 0)/640x480]'
~/>$ v4l2-ctl -d/dev/video0\
--set-selection=target=crop, top=0, left=0, width=640, height=480

3.找到video设备

拓扑结构中有多个的Entity,一些是sub device,一些是video device。前者对应的设备节点是/dev/v4l-subdev,后者对应的是/dev/video。多个的video device中,最常关注的是哪个设备可以输出图像。

$ media-ctl -d/dev/media0 -e "rkisp_selfpath"
/dev/video1
$ media-ctl -d/dev/media0 -e "rkisp_mainpath"
/dev/video0

上面两个命令分别显示出/dev/media0这个链路中,RKISP的SP及MP节点的设备路径。RKISP有两个视频输出设备,它们都能输出图像。

后面步骤将在下一篇继续讲解

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
1个
时间排序
内容存在敏感词
手气红包
    0 条记录 第 0 /
    相关专栏
    置顶时间设置
    结束时间
    删除原因
    • 广告/SPAM
    • 恶意灌水
    • 违规内容
    • 文不对题
    • 重复发帖
    打赏作者
    易百纳技术社区
    一休摸鱼
    您的支持将鼓励我继续创作!
    打赏金额:
    ¥1 易百纳技术社区
    ¥5 易百纳技术社区
    ¥10 易百纳技术社区
    ¥50 易百纳技术社区
    ¥100 易百纳技术社区
    支付方式:
    微信支付
    支付宝支付
    易百纳技术社区 微信支付
    易百纳技术社区
    打赏成功!

    感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

    举报反馈

    举报类型

    • 内容涉黄/赌/毒
    • 内容侵权/抄袭
    • 政治相关
    • 涉嫌广告
    • 侮辱谩骂
    • 其他

    详细说明

    审核成功

    发布时间设置
    发布时间:
    是否关联周任务-专栏模块

    审核失败

    失败原因
    备注
    Loading...
    易百纳技术社区
    确定要删除此文章、专栏、评论吗?
    确定
    取消
    易百纳技术社区
    每周任务
      去完成
      活动规则
      易百纳技术社区
      升级提醒
      升级

      恭喜您的社区称号由 升级为 “社区游民”

      同时为了感谢您对社区的支持,我们将送出xxx礼品一份, 记得领取哦~

      升级提醒
      易百纳技术社区

      惊喜礼包

      拼手气红包 红包规则
      祝福语
      恭喜发财,大吉大利!
      红包金额
      红包最小金额不能低于5元
      红包数量
      红包数量范围10~50个
      余额支付
      当前余额:
      可前往问答、专栏板块获取收益 去获取
      取 消 确 定

      小包子的红包

      恭喜发财,大吉大利

      已领取20/40,共1.6元 红包规则

        avatar