Camera Engine Rkisp User Manual V1.0

camera_engine_rkisp_user_manual_v1.0

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 14

DownloadCamera Engine Rkisp User Manual V1.0
Open PDF In BrowserView 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                         : false
EXIF Metadata provided by EXIF.tools

Navigation menu