Camera Engine Rkisp User Manual V1.0
camera_engine_rkisp_user_manual_v1.0
User Manual:
Open the PDF directly: View PDF .
Page Count: 14
Download | |
Open PDF In Browser | View PDF |
密级状态:绝密( ) 秘密( ) 内部( ) 公开(√ ) Camera_Engine_Rkisp_User_Manual (ISP 部) 文件状态: [] 正在修改 [√] 正式发布 当前版本: 作 者: 完成日期: 审 核: 完成日期: Fuzhou V1.0 钟以崇 2018-11-08 邓达龙 2018-11-14 福州瑞芯微电子股份有限公司 Rockchips Electronics Co . , Ltd (版本所有,翻版必究) 福州瑞芯微电子股份有限公司 版本号 V1.0 作者 钟以崇 版 本 历 史 修改日期 修改说明 2018-11-08 发布初版 审核 备注 福州瑞芯微电子股份有限公司 目 录 文档适用平台..................................................................................................................................................... 3 CAMERA ENGINE 基本框架.........................................................................................................................3 driver layer.........................................................................................................................4 Engine layer.......................................................................................................................4 Interface layer....................................................................................................................4 Application layer............................................................................................................... 4 API 简要说明.....................................................................................................................................................5 Android CL API.................................................................................................................5 rkisp_cl_init.................................................................................................................................................5 rkisp_cl_prepare..........................................................................................................................................5 rkisp_cl_start...............................................................................................................................................6 rkisp_cl_stop................................................................................................................................................7 rkisp_cl_deinit............................................................................................................................................. 7 rkisp_cl_set_frame_params........................................................................................................................ 7 Linux gstrkisp API.............................................................................................................8 编译..................................................................................................................................................................... 9 Android 平台编译............................................................................................................. 9 Linux 平台编译.................................................................................................................9 调试................................................................................................................................................................... 10 Android 平台调试........................................................................................................... 10 log 开关..................................................................................................................................................... 10 更新库....................................................................................................................................................... 10 Linux 平台调试...............................................................................................................11 log 开关..................................................................................................................................................... 11 更新库....................................................................................................................................................... 11 1 福州瑞芯微电子股份有限公司 Camera engine 主要实现的是 Raw senosr 的 3A 控制,对于 Linux 系统来 说,还可通过在它基础上实现的 libgstrkisp 插件来实现数据流获取等。除 了 3A 库源码不开放外,其他部分的代码都是开源的。该文档主要描述了 camera engine 的模块组成,简要 API 说明,编译步骤,及调试方面的注意 事项。 文档适用平台 芯片平台 驱动 操作系统 RK3288 RK3399 RV3326 Linux(Kernel-4.4):rkisp1 driver Linux(Kernel-4.4):rkisp1 driver Linux(Kernel-4.4):rkisp1 driver Linux Linux Android-9.0 Linux 支持情 况 Y Y Y Camera engine 基本框架 图1 camera engine 模 块结构 上 图各模 块简要 说明如 下: driver layer 为 驱动层,不在本文描述范围内,具体参考 《RKISP_Driver_User_Manual_v1.0》。 2 福州瑞芯微电子股份有限公司 Engine layer 包括 core engine库(librkisp.so)及 3A库。Core engine主体功能为 获取驱动数据流,实现上层帧参数控制,如 3A模式等,从ISP驱动获取 3A统 计,调用 3A库实现 3A调整。为上层主要提供的类接口为 DeviceManager。 librkisp_ae.so,librkisp_awb.so及librkisp_af.so为RK实现的 3A库,实 现为动态加载库,且有标准接口,用户如有需求,可实现自己的 3A库进行替 换。 Interface layer 在 engine 层基础上为 Android 及 Linux 封装了不同接口。Android 层不 需要数据流部分,只需要 3A 控制部分,控制接口及说明请参考头文件 rkisp_control_loop.h,该文件中对实现的接口以及基本调用流程都有详细 说明及注释。libgstrkisp 是为 gstreamer 实现的插件,通过该插件,用户 可通过 gsreamer 获取数据流以及控制 3A。如用户有其他需求,可封装满足 自己需求的接口层。 Application layer 应用层,目前有适配 Android 的 Camera Hal3 及 Linux 平台的 gstreamer。 API 简要说明 Android CL API 接口在 rkisp_control_loop.h 中已有详细说明,简要说明如下: 3 福州瑞芯微电子股份有限公司 rkisp_cl_init [描述] 初始化 control loop。 [语法] int rkisp_cl_init(void** cl_ctx, const char* tuning_file_path, const cl_result_callback_ops_t *callback_ops); [参数] 参数名称 描述 输入输出 cl_ctx 成功返回 control loop context 输出 tuning_file_path RAW sensor 使用的 tunning xml 文件 输入 callback_ops 接收 result metadata 的回调,可返回 3A state,当前帧的生效参数等 [返回值] 返回值 描述 0 成功 非0 失败 rkisp_cl_prepare [描述] prepare control loop。 [语法] int rkisp_cl_prepare(void* cl_ctx, const struct rkisp_cl_prepare_params_s* prepare_params); [参数] 参数名称 cl_ctx 描述 control loop context 所需控制的设备路径集 prepare_params [返回值] 返回值 0 非0 输入输出 输入 输入 描述 成功 失败 rkisp_cl_start [描述] start control loop,调用成功后 control loop 开始运行,3A 开始工作。 [语法] 4 福州瑞芯微电子股份有限公司 int rkisp_cl_start(void* cl_ctx) [参数] 参数名称 cl_ctx [返回值] 返回值 0 非0 描述 control loop context 输入输出 输入 描述 成功 失败 rkisp_cl_stop [描述] stop control loop [语法] int rkisp_cl_stop(void* cl_ctx) [参数] 参数名称 cl_ctx [返回值] 返回值 0 非0 描述 control loop context 输入输出 输入 描述 成功 失败 rkisp_cl_deinit [描述] 反初始化 control loop [语法] void rkisp_cl_deinit(void* cl_ctx) [参数] 参数名称 cl_ctx 描述 control loop context 输入输出 输入 rkisp_cl_set_frame_params [描述] 设置新的帧参数,主要包括 3A 模式等 [语法] int rkisp_cl_set_frame_params(const void* cl_ctx, const struct rkisp_cl_frame_metadata_s* frame_params); [参数] 5 福州瑞芯微电子股份有限公司 参数名称 cl_ctx 描述 control loop context 新的帧参数 frame_params [返回值] 返回值 0 非0 输入输出 输入 输入 描述 成功 失败 [注意] 参数结构体直接使用 Android 的 camera_metadata_t 结构,关于如何通 过 metadata 设置新参数,请参考 google 官方文档: https://developer.android.com/reference/android/hardware/camera2/C ameraMetadata 设置固定帧率的 sample code 如下: camera_metadata_t * _meta = allocate_camera_metadata(DEFAULT_ENTRY_CAP, DEFAULT_DATA_CAP); CameraMetadata* _metadata = new CameraMetadata(_meta); int32_t fpsRange[] = {30, 30}; _metadata->update( ANDROID_CONTROL_AE_TARGET_FPS_RANGE, fpsRange, 2); struct rkisp_cl_frame_metadata_s frame_params = {0, _meta}; rkisp_cl_set_frame_params(cl_ctx, &frame_params); Linux gstrkisp API TODO 编译 TODO Android 平台编译 6 福州瑞芯微电子股份有限公司 1. 2. 将 camera engine 源码放至/hardware/rockchip/ 配置 productConfigs.mk productConfigs.mk 位于 camera engine 源码根目录下。 RK3326: IS_RKISP_v12 = false 改成 IS_RKISP_v12 = true Rk3399,Rk3288: 不需修改该文件 3. 工程编译环境设置好后,camera engine 源码目录执行 mm 编译 编译后生成 librkisp.so, 3A 库不提供源码,随工程提供编好的库在 plugins/rkiq/ / Linux 平台编译 1. 配置 productConfigs.mk 配置编译工具链路径: CROSS_COMPILE,如果使用的是 linux sdk 工程则不需 要该步骤。 2. 编译 rk3288: make ARCH=arm rk3326: 可通过 ARCH=arm 或者 aarch64 来指定编译 32 位或者 64 位库 make ARCH=aarch64 IS_RKISP_v12=true rk3399: 可通过 ARCH=arm 或者 aarch64 来指定编译 32 位或者 64 位库 make ARCH=aarch64 编译成功后库文件生成在 camera engine 工程目录 build 文件夹下。3A 库不提供源 码,随工程提供编好的库在 plugins/rkiq/ / 调试 Android 平台调试 log 开关 setprop persist.vendor.rkisp.log level: 0: error level, defalut level 7 福州瑞芯微电子股份有限公司 1: warniing level 2: info level 3: verbose level 更新库 android 8.x 及以上库路径: librkisp : /vendor/lib<64> 3a: /vendor/lib<64>/rkisp/ / iq: /vendor/etc/camera/rkisp/ 更新库后重启 camera 服务: pkill provider && pkill camera android 7.x 及以下库路径: librkisp: /system/lib<64>/ 3a: /system/lib<64>/rkisp/ / iq: /system/etc/camera/rkisp/ 更新库后重启 camera 服务: pkill camera* Linux 平台调试 log 开关 export persist_camera_engine_log= level: 0: error level, defalut level 1: warniing level 2: info level 3: verbose level 更新库 库路径: librkisp: /usr/lib/ 3a: /usr/lib/rkisp/ / iq: /etc/cam_iq.xml 需要注意的是 iq 文件必须要命名成 cam_iq.xml 8 福州瑞芯微电子股份有限公司 Linux 平台使用 1、库及 IQ 文件 1.1 库文件 1. 2. 3. 4. 5. 参考《编译》的章节,camera_engine_rkisp 需要将 5 个库文件 push 到板子里。 librkisp.so push 到板子的/usr/lib/ librkisp_aec.so push 到板子的/usr/lib/rkisp/ae/ librkisp_awb.so push 到板子的/usr/lib/rkisp/awb/ librkisp_af.so push 到板子的/usr/lib/rkisp/af/ libgstrkisp.so push 到板子的/usr/lib/gstreamer-1.0/ (注:若不使用 gstreamer 可以不用 push libgstrkisp.so) 在 buildroot 系统中,已自动将全部的库拷贝到系统中,如图 1.1-1。 (buildroot/package/rockchip/camera_engine_rkisp/camera_engine_rki sp.mk) 图 1.1-1 1.2 IQ 文件 在 SDK 工程目录中,在 etc/external/camera_engine_rkisp/iqfiles 目录下统一存放 IQ 文件。如果需要加入新的 IQ 文件,就放在此目录下,并且 IQ 名字规范大写(例 如 OV5695.xml),然后删除以下目录 buildroot/output/rockchip_rkxxxx_xx/build/camera_engine_rkisp-1.0,最后重新编译 buildroot。 在 buildroot 系统中,IQ 文件会统一拷贝到板子的/etc/iqfiles/目录下,如图 1.2-1。 (buildroot/package/rockchip/camera_engine_rkisp/camera_engine_rkisp.mk) 9 福州瑞芯微电子股份有限公司 图 1.2-1 当系统启动后,会运行/etc/init.d/S50set_pipeline start,这里会匹配当前连接的 sensor,如图 1.2-2 所示, 图 1.2-2 通过名字找到/etc/iqfiles/目录下匹配的 xml 文件,链接成/etc/cam_iq.xml,如图 1.2-3 所示,当前 cam_iq.xml 链接的是 OV5695.xml。 图 1.2-3 2 、使用方法 Camera_engine_rkisp 使用方式有两种:1、通过 gstreamer ,2、V4L2 应用编程。 2.1 通过 gstreamer Camera_engine_rkisp 的使用通过以 plugin 的形式通过 gst-launch-1.0 实现。 测试前我们需要指明动态库的路径: 10 福州瑞芯微电子股份有限公司 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/gstreamer-1.0 通过以下命令可以测试 gst-launch-1.0 rkisp device=/dev/video1 io-mode=1 analyzer=1 enable-3a=1 pathiqf=/etc/cam_iq.xml ! video/x-raw,format=NV12,width=640,height=480, framerate=30/1 ! videoconvert ! autovideosink 若没有显示设备,需要 dump 图像,可以将以上命令‘autovideosink’修改为 ‘filesink location=/tmp/streamer.yuv’,最后通过 yuv 工具预览。 Buildroot 中可以直接使用 camera_rkisp.sh 测试。 2.2 通过 v4l2 应用编程 我们提供了 rkisp_demo 供客户参考测试。如图 2.2-1 代码在工程的 tests/下 rkisp_dmeo 随工程生成在目录 build/bin/ 图 2.2-1 Buildroot 系统中,已经将 rkisp_dmeo 拷贝到/usr/bin/下 (buildroot/package/rockchip/camera_engine_rkisp/camera_engine_rkisp.mk) 图 2.2-2 使用方法:如图 2.2-3,可以通过 rkisp_demo -h 查看,最后会在指定的 ouput 目 录下生成图像数据,再通过 yuv 工具预览。 11 福州瑞芯微电子股份有限公司 图 2.2-3 3、 常见问题 1 、 如 图 3.1 , 若 遇 到 以 下 错 误 提 示 , 是 /dev/video 没 有 指 定 正 确 。 图 3.1 2、如图 3.2,若遇到以下错误提示,是动态库的路径没有指定。 图 3.2 12
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.7 Linearized : No Page Count : 14 Author : ddl Comments : Company : Create Date : 2018:12:03 10:40:07+02:40 Creator : WPS 文字 Modify Date : 2018:12:03 10:40:07+02:40 Producer : Source Modified : D:20181203104007+02'40' Subject : Title : Trapped : falseEXIF Metadata provided by EXIF.tools