# rkisp_demo_lite **Repository Path**: wu_yumin/rkisp_demo_lite ## Basic Information - **Project Name**: rkisp_demo_lite - **Description**: A lite version for Rockchip rkisp_demo. - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 7 - **Created**: 2020-11-22 - **Last Updated**: 2025-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rkisp_demo_lite ## 概述 rkisp_demo_lite 是 Rockchip 平台的 rkisp_demo (sdk/external/camera_engine_rkaiq/rkisp_demo)工具的一个精简版本。 程序通过调用 rk_aiq_user_api 来初始化 video device,通过 V4L2 接口来设置并获取视频流数据。 main.c 演示了获取三帧 NV12 数据并保存到文件中的过程。程序中的 `DEV_NODE` 需要根据实际的情况来指定,并确保该节点是 v4l2 capture 类型的。例如,这里通过 `media-ctl` 命令找到 ISPP 节点 `rkispp_scale0 ` 对应的视频节点为 `/dev/video19` : ```shell [root@RV1126_RV1109:/]# media-ctl -p -d /dev/media2 Media controller API version 4.19.111 Media device information ------------------------ driver rkispp model rkispp0 serial bus info hw revision 0x0 driver version 4.19.111 Device topology - entity 1: rkispp_input_image (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video17 pad0: Source -> "rkispp-subdev":0 [] - entity 5: rkispp_m_bypass (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video18 pad0: Sink <- "rkispp-subdev":2 [ENABLED] - entity 9: rkispp_scale0 (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video19 pad0: Sink <- "rkispp-subdev":2 [ENABLED] - entity 13: rkispp_scale1 (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video20 pad0: Sink <- "rkispp-subdev":2 [ENABLED] - entity 17: rkispp_scale2 (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video21 pad0: Sink <- "rkispp-subdev":2 [ENABLED] - entity 21: rkispp_input_params (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video22 pad0: Source -> "rkispp-subdev":1 [ENABLED] - entity 25: rkispp-stats (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video23 pad0: Sink <- "rkispp-subdev":3 [ENABLED] - entity 29: rkispp-subdev (4 pads, 7 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: Sink [fmt:YUYV8_2X8/1920x1080 field:none crop.bounds:(0,0)/1920x1080 crop:(0,0)/1920x1080] <- "rkispp_input_image":0 [] pad1: Sink <- "rkispp_input_params":0 [ENABLED] pad2: Source [fmt:YUYV8_2X8/1920x1080 field:none] -> "rkispp_m_bypass":0 [ENABLED] -> "rkispp_scale0":0 [ENABLED] -> "rkispp_scale1":0 [ENABLED] -> "rkispp_scale2":0 [ENABLED] pad3: Source -> "rkispp-stats":0 [ENABLED] [root@RV1126_RV1109:/]# ``` ## 编译 可在 Rockchip RV1109/RV1126 SDK 的 buildroot 编译此程序。 1. 把程序源码放置到 SDK 的 external/ 目录。 2. 在 SDK 的 buildroot/package/rockchip 目录下创建 rkisp_demo_lite 目录。 3. 在 buildroot/package/rockchip/rkisp_demo_lite 添加文件 Config.in。 ```SHELL config BR2_PACKAGE_RKISP_DEMO_LITE bool "rkisp_demo_lite: get isp data by v4l2 interface" select BR2_PACKAGE_CAMERA_ENGINE_RKAIQ ``` 4. 在 buildroot/package/rockchip/rkisp_demo_lite 添加文件 rkisp_demo_lite.mk。 ```shell RKISP_DEMO_LITE_SITE = $(TOPDIR)/../external/rkisp_demo_lite RKISP_DEMO_LITE_SITE_METHOD = local RKISP_DEMO_LITE_DEPENDENCIES = camera_engine_rkaiq $(eval $(cmake-package)) ``` 5. 修改 buildroot/package/rockchip/Config.in,添加: ```shell source "package/rockchip/rkisp_demo_lite/Config.in" ``` 6. 在 buildroot 目录执行 `make menuconfig` 将此程序选上;或者直接在 defconfig 文件( 如 buildroot/configs/rockchip_rv1126_rv1109_defconfig)将此 package 选上: ```shell BR2_PACKAGE_RKISP_DEMO_LITE=y ``` 6. 在 buildroot 目录执行 `make rkisp_demo_lite ` 编译程序,最终可执行文件 rkisp_demo_lite 被安装到 buildroot/output 的目标目录下。 7. 如果在 external/rkisp_demo_lite 中修改完代码需要重新编译,可执行: ```shell source envsetup.sh cd buildroot make rkisp_demo_lite-dirclean make rkisp_demo_lite-rebuild ``` ## 运行 运行时先确保没有其它进程或者模块占用video设备。在 RV1109/RV1126 平台上应确保 kill 掉以下的进程: ```shell killall ipc-daemon ispserver dbserver mediaserver ```