系统软件包

ISP系统库

ISP安装编译

1、安装ISP库:

sudo dnf install librockchip_isp

2、编译链接:

LDDFLAGS: = -lcam_engine_cifisp -lcam_ia

3、包含头文件:

#include <rockchip/rockchip_isp.h>

ISP接口说明

(1)rkisp_start: 创建ISP引擎实例

int rkisp_start(void* &engine, int vidFd, const char* ispNode, const char* tuningFile);

    参数说明:

    1)Engine:ISP引擎实例地址,rkisp_start创建引擎实例后,由该参数返回实例地址。

    2)vidFd:Video stream fd,用户捕获图像时,使用的video节点句柄。

    3)ispNode:ISP节点名,例如”/dev/video1”,该节点与用户捕获图像的节点不同。

    4)tuningFile:IQ xml 文件。例如”/etc/cam_iq_ov9750.xml”,里面记录了摄像头3A(自动白平衡,自动曝光,自动对焦)操作所需的参数。

    返回值:成功返回0且engine不为NULL。

    注意:

    1、对于内置摄像头而言,n个摄像头会枚举出4个video节点。

    video(4*(n-1)+2)节点为用户捕获图像操作的video节点,如video2,video6。

    video(4*(n-1)+1)节点为ISP库进行3A操作的video节点,如video1,video5。

    2、 使用结束后必须使用rkisp_stop停止ISP引擎,释放占用的资源。

    3、必须选择与摄像头相互匹配的tuningFile,否则ISP引擎无法工作。

    4、目前ISP摄像头获取的图像格式V4L2_PIX_FMT_NV12

(2)rkisp_stop:停止并销毁ISP引擎实例,释放占用的资源

int rkisp_stop(void* &engine)

    参数说明:

    engine: ISP引擎实例地址,由rkisp_start创建

    返回值:成功返回0。

(3)rkisp_setFocusMode:设置对焦模式

int rkisp_setFocusMode(void* &engine, enum HAL_AF_MODE fcMode);

    参数说明:

     1)engine: ISP引擎实例地址,由rkisp_start创建

     2)fcMode:对焦模式设置

     HAL_AF_MODE_NOT_SET:关闭对焦功能

     HAL_AF_MODE_CONTINUOUS_VIDE:设置持续对焦

    返回值:成功返回0。

    注意:OV9750不支持自动对焦,不允许设置对焦模式(默认关闭即可),否则会出错。

MPP系统库

MPP安装编译

1、安装MPP库:

sudo dnf install librockchip_mpp-devel

2、编译链接:

LDDFLAGS: = -lrockchip_mpp

3、包含头文件:

#include <rockchip/rockchip_mpp.h>

MPP接口说明

1、创建MPP解码器实例:MppDecoderCreate, 成功返回MPP结构指针

MppDecoder *dec = MppDecoderCreate();

2、销毁MPP实例:MppDecoderDestroy

MppDecoderDestroy(dec);

3、解码图像入队操作:enqueue

dec->ops->enqueue(dec, data, size)

    参数说明:

     1)data:存放H264图像数据

     2)size:图像大小

4、解码图像出队操作:dequeue;阻塞直到mpp成功解码后,次函数返回。

DecFrame *frame = dec->ops->dequeue(dec);

    DecFrame结构成员说明:

    1)v4l2Format:解码出来的图像格式,目前只支持V4L2_FIX_FMT_NV12

    2)width:图像的宽度

    3)height:图像的高度

5、释放DecFrame指针:freeFrame;成功解码并处理图像后,必须调用此函数释放内存。

dec->ops->freeFrame(dec, frame);

RGA系统库

RGA安装编译

1、安装RGA库:

sudo dnf install librockchip_rga-devel

2、编译链接:

LDDFLAGS: = -lrockchip_rga -ldrm

3、包含头文件:

extern “c” {
#include <rockchip/rockchip_rga.h>
}

RGA接口说明

1、RgaCreate:创建RGA实例,返回RGA结构指针

RockchipRga *rga = rgaCreate();

2、RgaDestory:销毁RGA实例

RgaDestory(rga);

3、initCtx:清空RGA上下文

rga->ops->initCtx(rga);

注意:如果不清空上下文,下次执行RGA操作时会沿用之前设置图像参数。

4、setRotate设置选择旋转角度

rga->ops->setRotate(rga, rotate);

    参数说明:

    1)rotate: 旋转角度

    RGA_ROTATE_NONE:不旋转

    RGA_ROTATE_90:逆时针旋转90度

    RGA_ROTATE_180:逆时针旋转180度

    RGA_ROTATE_270:逆时针旋转270度

    RGA_ROTATE_VFLIP:垂直镜像

    RGA_ROTATE_HFLIP:水平镜像

5、setFillColor:设置色彩填充

rga->ops->setFillColor(rga, color);

    参数说明:

    Color:颜色值

    蓝色:0xffff0000

    绿色:0xff00ff00

    红色:0xff0000ff

6、setCrops:设置剪切窗口

设置源图像剪切窗口:

rga->ops->setSrcCrop(rga, cropX, cropY, cropW, cropH);

设置目标图像剪切窗口:

rga->ops->setSrcCrop(rga, cropX, cropY, cropW, cropH);

    参数说明:

     1)、cropX:原点横坐标

     2)、cropY:原点纵坐标

     3)、cropW:窗口宽度

     4)、cropH:窗口高度

7、 setFormat:设置图像格式

设置源图像格式:

rga->ops->setSrcFormat(rga, v4l2Format, width, height);

设置目标图像格式:

rga->ops->setDstFormat(rga, v4l2Format, width, height);

    参数说明:

     1)、V4l2Format:v4l2图像格式,支持的格式见/usr/include/rockchip/rockchip_rga.h

     2)、Width:图像宽度

     3)、Height:图像高度

8、setBuffer:设置图像Buffer

设置源图像Buffer的文件描述符(DMA内存fd):

rga->ops->setSrcBufferFd(rga, fd);

设置源图像Buffer指针(用户空间内存指针):

rga->ops->setSrcBufferPtr(rga, ptr);

设置目标图像Buffer的文件描述符(DMA内存fd):

rga->ops->setDstBufferFd(rga, fd);

设置目标图像Buffer指针(用户空间内存指针):

rga->ops->setDstBufferPtr(rga, ptr);

9、执行图像处理操作

执行操作:

rga->ops->go(rga);

Rtspclient系统库

Rtspclient安装编译

1、安装RTSP库:

librockchip_rtsp-devel

2、编译链接:

LDDFLAGS: = -lrockchip_rtsp

3、 包含头文件:

#include <rockchip/rockchip_rtsp.h>

Rtspclient接口说明

1、构造函数:

RtspClient(std::string url, std::string username = "", std::string password = "");
Rtsplcient client(“rtsp://xxx.xxx.xxx.xxx/xxx”, “username”, “password”);

    参数说明:

     1)、Url:IPC摄像头的RTSP网络地址

     2)、Username:IPC摄像头的用户名,默认为空

     3)、Password:IPC摄像头的密码,默认为空

2、设置回调函数:

setDataCallback(FRtspCallBack callBack);
client.setDataCallback(std::bind(&priv_class::onRstpHandle, priv_point, std::placeholders::_1, std::placeholders:_2));

    参数说明:

    1)、priv_class类回调函数:void onRtspHandle(unsigned char *buf, size_t len)

    说明:Rtspclient每接收到一帧都会回调此函数;

    其中buf存放H264图像数据,len为图像的大小。

    2)、priv_point:类指针

    3)、 _1&&_2:占位符

3、开始获取RTSP流:

enable();
client.enable();

4、停止获取RTSP流:

disable();
client.disable();