Firefly开源社区

打印 上一主题 下一主题

[应用开发] 如何获取v4l2图像

85

积分

0

威望

0

贡献

技术小白

积分
85

如何获取v4l2图像

发表于 2021-6-22 16:57:35      浏览:6969 | 回复:9        打印      只看该作者   [复制链接] 楼主
在rv1126平台我编译了新的AHD视频驱动,用的RN6854M芯片。用命令media-ctl -p -d /dev/media查看到以下节点:
- entity 31: m01_b_rn6854 1-002c (1 pad, 1 link)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev4
        pad0: Source
                [fmt:UYVY8_2X8/1280x720 field:none]
                -> "rockchip-mipi-dphy-rx":0 [ENABLED]

我不太懂应用层怎么获取图像和视频。请大家指教!
回复

使用道具 举报

1万

积分

14

威望

13

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
11138

优秀版主

发表于 2021-6-22 18:04:18        只看该作者  沙发
转mipi? rkmedia api 是否适用?
回复

使用道具 举报

85

积分

0

威望

0

贡献

技术小白

积分
85
发表于 2021-6-23 08:59:41        只看该作者  板凳
板蓝根 发表于 2021-6-22 18:04
转mipi? rkmedia api 是否适用?

对,MIPI的数据差分组用示波器量已经有信号了,但是要用哪一种rkmedia:
anbly@linux:~/working/rk/external/rkmedia/examples$ ls rkmedia_
rkmedia_adec_ao_test.c                   rkmedia_venc_avbr_test.c                 rkmedia_vi_md_test.c
rkmedia_ai_aenc_test.c                   rkmedia_venc_cover_test.c                rkmedia_vi_multi_bind_test.c
rkmedia_ai_multi_test.c                  rkmedia_venc_jpeg_test.c                 rkmedia_vi_od_test.c
rkmedia_ai_test.c                        rkmedia_venc_local_file_test.c           rkmedia_vi_rga_test.c
rkmedia_ao_test.c                        rkmedia_venc_mjpeg_test.c                rkmedia_vi_rknn_venc_rtsp_test.c
rkmedia_audio_test.c                     rkmedia_venc_osd_test.c                  rkmedia_vi_rockx_venc_rtsp_test.c
rkmedia_fake_vi_test.c                   rkmedia_venc_roi_osd_test.c              rkmedia_vi_uvc_test.c
rkmedia_isp_test.c                       rkmedia_venc_smartp_test.c               rkmedia_vi_venc_rtsp_test.c
rkmedia_main_stream_with_jpeg_test.c     rkmedia_vi_double_cameras_switch_test.c  rkmedia_vi_venc_test.c
rkmedia_muxer_test.c                     rkmedia_vi_double_cameras_test.c         rkmedia_vi_vo_test.c
rkmedia_rga_api_test.c                   rkmedia_vi_electrostatic_protection.c    rkmedia_vmix_vo_dvr_test.c
rkmedia_rga_crop_venc_test.c             rkmedia_vi_get_frame_test.c              rkmedia_vmix_vo_test.c
rkmedia_rga_osd_test.c                   rkmedia_vi_insert_user_picture_test.c    rkmedia_vo_display_test.c
rkmedia_vdec_test.c                      rkmedia_vi_luma_only_mode_test.c         rkmedia_vo_scale_test.c
回复

使用道具 举报

1万

积分

14

威望

13

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
11138

优秀版主

发表于 2021-6-23 09:05:53        只看该作者  地板
本帖最后由 板蓝根 于 2021-6-23 09:15 编辑

[size=18.6667px]rkmedia_vi_get_frame_test.c ,没有 用过 AHD 大概是怎么通讯?需要用到内部 isp?
回复

使用道具 举报

85

积分

0

威望

0

贡献

技术小白

积分
85
发表于 2021-6-23 09:52:42        只看该作者  5#
板蓝根 发表于 2021-6-23 09:05
rkmedia_vi_get_frame_test.c ,没有 用过 AHD 大概是怎么通讯?需要用到内部 isp?

rkmedia_vi_get_frame_test获取失败了:
[root@RV1126_RV1109:/]# rkmedia_vi_get_frame_test  -a /oem/etc/iqfiles/ -w 1280
-h 720 -d rkispp_scale0 -o /tmp/720p.nv12 -c 10
media get entity by name: rkcif-lvds-subdev is null
media get entity by name: rkcif-lite-lvds-subdev is null
[09:48:13.096213][CAMHW]:XCAM ERROR CamHwIsp20.cpp:160: @get_sensor_caps /dev/v4l-subdev4: Enum sensor frame interval failed
media get entity by name: rkisp-mpfbc-subdev is null
media get entity by name: rkisp_dmapath is null
[09:48:13.115857][CAMHW]:XCAM ERROR CamHwIsp20.cpp:160: @get_sensor_caps /dev/v4l-subdev8: Enum sensor frame interval failed
media get entity by name: rkisp-mpfbc-subdev is null
media get entity by name: rkisp_dmapath is null
media get entity by name: rockchip-mipi-dphy-rx is null
[09:48:13.141325][CAMHW]:XCAM ERROR CamHwIsp20.cpp:928: No free isp&ispp needed by fake camera!
Rga built version:1.04 f4678e1+2021-05-28 12:14:23
#####Device: rkispp_scale0
#####Resolution: 1280x720
#####Frame Count to save: 10
#####Output Path: /tmp/720p.nv12
#CameraIdx: 0

#####Aiq xml dirpath: /oem/etc/iqfiles/

#bMultictx: 0

ID: 0, sensor_name is m00_f_rn6854 1-002d, iqfiles is /oem/etc/iqfiles/
[09:48:13.242692][XCORE]:XCAM ERROR RkAiqCalibDb.cpp:163: calibdb /oem/etc/iqfiles//rn6854_rn6854_rn6854.xml and bin are all not exist!
[09:48:13.250947][XCORE]:XCAM ERROR rk_aiq_user_api_sysctl.cpp:206: _rkAiqManager init error!
[09:48:13.259215][CAMHW]:XCAM ERROR CamHwIsp20.cpp:1152: can't find sensor
[09:48:13.265867][XCORE]:XCAM ERROR RkAiqManager.cpp:382: camhw deinit error -7
[ 1099.493725] pgd = c630213a
[ 1099.493760] [00000000] *pgd=22a78835, *pte=00000000, *ppte=00000000
[ 1099.493778] CPU: 3 PID: 2804 Comm: rkmedia_vi_get_ Not tainted 4.19.111+ #71
[ 1099.493785] Hardware name: Generic DT based system
[ 1099.493796] PC is at 0xa4c42644
[ 1099.493802] LR is at 0xa4f39fe8
[ 1099.493809] pc : [<a4c42644>]    lr : [<a4f39fe8>]    psr: 60070010
[ 1099.493815] sp : aee987f8  ip : a4c4263c  fp : 00034dd4
[ 1099.493822] r10: 00034ddc  r9 : aee988e0  r8 : aee98860
[ 1099.493829] r7 : 00034ddc  r6 : 00034dd4  r5 : aee98810  r4 : 00000000
[ 1099.493836] r3 : a6fbc900  r2 : 00000000  r1 : 00000000  r0 : 00000000
[ 1099.493881] Flags: nZCv  IRQs on  FIQs on  Mode USER_32  ISA ARM  Segment user
[ 1099.493891] Control: 10c5387d  Table: 3625c06a  DAC: 00000055
[ 1099.493902] CPU: 3 PID: 2804 Comm: rkmedia_vi_get_ Not tainted 4.19.111+ #71
[ 1099.493911] Hardware name: Generic DT based system
[ 1099.493937] [<b010f408>] (unwind_backtrace) from [<b010b96c>] (show_stack+0x10/0x14)
[ 1099.493953] [<b010b96c>] (show_stack) from [<Segmentation fault (cobre d0umped)
8c[root@RV1126_RV1109:/]# 53c4>] (dump_stack+0x90/0xa4)
[ 1099.493971] [<b08c53c4>] (dump_stack) from [<b011373c>] (__do_user_fault+0x130/0x134)
[ 1099.493986] [<b011373c>] (__do_user_fault) from [<b0113980>] (do_page_fault+0x240/0x348)
[ 1099.494002] [<b0113980>] (do_page_fault) from [<b0113c18>] (do_DataAbort+0x4c/0xec)
[ 1099.494017] [<b0113c18>] (do_DataAbort) from [<b0101d7c>] (__dabt_usr+0x3c/0x40)
[ 1099.494027] Exception stack(0xe8ff7fb0 to 0xe8ff7ff8)
[ 1099.494039] 7fa0:                                     00000000 00000000 00000000 a6fbc900
[ 1099.494051] 7fc0: 00000000 aee98810 00034dd4 00034ddc aee98860 aee988e0 00034ddc 00034dd4
[ 1099.494060] 7fe0: a4c4263c aee987f8 a4f39fe8 a4c42644 60070010 ffffffff

[root@RV1126_RV1109:/]#

****************************************************************

驱动是根据指南Rockchip_Instruction_Linux_DVR_DMS_CN.pdf开发的,用的是双MIPI方案,VICAP+ISP方案。



****************************************************************

media-ctl -p -d /dev/media获取完整的设备节点:
[root@RV1126_RV1109:/]# media-ctl -p -d /dev/media0
Media controller API version 4.19.111

Media device information
------------------------
driver          rkcif
model           rkcif_mipi_lvds
serial         
bus info        
hw revision     0x0
driver version  4.19.111

Device topology
- entity 1: stream_cif_mipi_id0 (1 pad, 4 links)
            type Node subtype V4L flags 0
            device node name /dev/video0
        pad0: Sink
                <- "rockchip-mipi-csi2":1 [ENABLED]
                <- "rockchip-mipi-csi2":2 []
                <- "rockchip-mipi-csi2":3 []
                <- "rockchip-mipi-csi2":4 []

- entity 5: stream_cif_mipi_id1 (1 pad, 4 links)
            type Node subtype V4L flags 0
            device node name /dev/video1
        pad0: Sink
                <- "rockchip-mipi-csi2":1 []
                <- "rockchip-mipi-csi2":2 [ENABLED]
                <- "rockchip-mipi-csi2":3 []
                <- "rockchip-mipi-csi2":4 []

- entity 9: stream_cif_mipi_id2 (1 pad, 4 links)
            type Node subtype V4L flags 0
            device node name /dev/video2
        pad0: Sink
                <- "rockchip-mipi-csi2":1 []
                <- "rockchip-mipi-csi2":2 []
                <- "rockchip-mipi-csi2":3 [ENABLED]
                <- "rockchip-mipi-csi2":4 []

- entity 13: stream_cif_mipi_id3 (1 pad, 4 links)
             type Node subtype V4L flags 0
             device node name /dev/video3
        pad0: Sink
                <- "rockchip-mipi-csi2":1 []
                <- "rockchip-mipi-csi2":2 []
                <- "rockchip-mipi-csi2":3 []
                <- "rockchip-mipi-csi2":4 [ENABLED]

- entity 17: rockchip-mipi-csi2 (5 pads, 17 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev2
        pad0: Sink
                [fmt:UYVY8_2X8/1280x720 field:none
                 crop.bounds:(0,0)/1280x720
                 crop:(0,0)/1280x720]
                <- "rockchip-mipi-dphy-rx":1 [ENABLED]
        pad1: Source
                [fmt:UYVY8_2X8/1280x720 field:none
                 crop.bounds:(0,0)/1280x720
                 crop:(0,0)/1280x720]
                -> "stream_cif_mipi_id0":0 [ENABLED]
                -> "stream_cif_mipi_id1":0 []
                -> "stream_cif_mipi_id2":0 []
                -> "stream_cif_mipi_id3":0 []
        pad2: Source
                [fmt:UYVY8_2X8/1280x720 field:none
                 crop.bounds:(0,0)/1280x720
                 crop:(0,0)/1280x720]
                -> "stream_cif_mipi_id0":0 []
                -> "stream_cif_mipi_id1":0 [ENABLED]
                -> "stream_cif_mipi_id2":0 []
                -> "stream_cif_mipi_id3":0 []
        pad3: Source
                [fmt:UYVY8_2X8/1280x720 field:none
                 crop.bounds:(0,0)/1280x720
                 crop:(0,0)/1280x720]
                -> "stream_cif_mipi_id0":0 []
                -> "stream_cif_mipi_id1":0 []
                -> "stream_cif_mipi_id2":0 [ENABLED]
                -> "stream_cif_mipi_id3":0 []
        pad4: Source
                [fmt:UYVY8_2X8/1280x720 field:none
                 crop.bounds:(0,0)/1280x720
                 crop:(0,0)/1280x720]
                -> "stream_cif_mipi_id0":0 []
                -> "stream_cif_mipi_id1":0 []
                -> "stream_cif_mipi_id2":0 []
                -> "stream_cif_mipi_id3":0 [ENABLED]

- entity 23: rockchip-mipi-dphy-rx (2 pads, 2 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev3
        pad0: Sink
                [fmt:UYVY8_2X8/1280x720 field:none]
                <- "m01_b_rn6854 1-002c":0 [ENABLED]
        pad1: Source
                [fmt:UYVY8_2X8/1280x720 field:none]
                -> "rockchip-mipi-csi2":0 [ENABLED]

- entity 28: rkcif-mipi-luma (0 pad, 0 link)
             type Node subtype V4L flags 0
             device node name /dev/video4

- entity 31: m01_b_rn6854 1-002c (1 pad, 1 link)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev4
        pad0: Source
                [fmt:UYVY8_2X8/1280x720 field:none]
                -> "rockchip-mipi-dphy-rx":0 [ENABLED]

[root@RV1126_RV1109:/]#
回复

使用道具 举报

85

积分

0

威望

0

贡献

技术小白

积分
85
发表于 2021-7-27 09:24:02        只看该作者  6#
我的是四路视频芯片,对应的节点是video0~3,用下面命令播放rtsp看实时视频:
  1. rkmedia_vi_venc_rtsp_test -w 1280 -h720 -d /dev/video0
复制代码

如果是MIPI直连sensor的话,需要指定-a,也就是iqfiles,iqfiles需要经过调试才能用。
回复

使用道具 举报

16

积分

0

威望

0

贡献

技术小白

积分
16
发表于 2021-7-30 09:52:10        只看该作者  7#
楼主有调出图像吗,之前有提问到一位网友,他说MIPI接口输出的是YUV格式数据的话是不需要经过ISP处理,可以直接通过RKMeida库接口拿到数据的,我之前看了RKMedia例程和库的源码,发现例程指定的设备节点默认是  rkispp_scale0~2,   RKMedia库源码里面处理逻辑是,如果调用接口时,指定的设备节点是rkispp_scaleX,会调用RKAiq库接口初始化ISP通路功能,所以初始化时指定的额设备节点要为  /dev/videoX 这样
回复

使用道具 举报

16

积分

0

威望

0

贡献

技术小白

积分
16
发表于 2021-7-30 10:01:40        只看该作者  8#
Lenuxon 发表于 2021-7-27 09:24
我的是四路视频芯片,对应的节点是video0~3,用下面命令播放rtsp看实时视频:

如果是MIPI直连sensor的话 ...

楼主有调试过 RV1126 + HDMI采集芯片的方案吗,一直在研究怎么实现RV1126 通过HDMI采集芯片,不经过RKAiq实现视频数据获取
回复

使用道具 举报

85

积分

0

威望

0

贡献

技术小白

积分
85
发表于 2021-9-4 15:36:56        只看该作者  9#
wx_lemon_w0Qo5 发表于 2021-7-30 09:52
楼主有调出图像吗,之前有提问到一位网友,他说MIPI接口输出的是YUV格式数据的话是不需要经过ISP处理,可以 ...

感觉你是理解错了。首先我用的是rv1126,它有VICAP和ISP两个图像处理IP,调用rkmedia时,如果指定了-a参数(iqfiles)就会是通过isp的。如果你是cif链路的话,是经过VICAP的,拓扑到video0~3,你可以rkmedia_vi_venc_rtsp_test -w 1920 -h 1080 -d  /dev/video0这样就可以获取到video0 的实时流了
回复

使用道具 举报

408

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
408
发表于 2021-10-28 17:33:45        只看该作者  10#
Lenuxon 发表于 2021-9-4 15:36
感觉你是理解错了。首先我用的是rv1126,它有VICAP和ISP两个图像处理IP,调用rkmedia时,如果指定了-a参 ...

很有用的知识点.
可否请教这个信息来源?
欢迎与我进行rv1109 rv1126 方面的技术交流.
我的QQ: 712715984
我擅长的: 手机平台的camera driver isp
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表