Step.1 System init 系统初始化
ret = IMP_ISP_Open()
//打开ISP模块
IMP_ISP_SetCameraInputMode(&mode)
//如果有多个sensor(最大支持三摄),设置多摄的模式(单摄请忽略)
IMP_ISP_AddSensor(IMPVI_MAIN, &sensor_info[*])
//添加sensor,在此操作之前sensor驱动已经添加到内核 (IMPVI_MAIN为主摄, IMPVI_SEC为次摄, IMPVI_THR为第三摄)
IMP_ISP_EnableSensor(IMPVI_MAIN, &sensor_info[*])
// 使能sensor, 现在sensor开始输出图像 (IMPVI_MAIN为主摄, IMPVI_SEC为次摄, IMPVI_THR为第三摄)
IMP_System_Init()
// 系统初始化
IMP_ISP_EnableTuning()
// 使能ISP tuning, 然后才能调用ISP调试接口
Step.2 FrameSource init Framesource初始化
IMP_FrameSource_CreateChn(chn[i].index, &chn[i].fs_chn_attr)
// 创建通道
MP_FrameSource_SetChnAttr(chn[i].index, &chn[i].fs_chn_attr)
// 设置通道的相关属性, 包括:图片宽度 图片高度 图片格式 通道的输出帧率 缓存buf数 裁剪和缩放属性
Step.3 Encoder init 编码初始化
IMP_Encoder_CreateGroup(chn[i].index)
//创建编码Group
IMP_Encoder_SetDefaultParam(IMPEncoderChnAttr *chnAttr, IMPEncoderProfile profile, IMPEncoderRcMode rcMode, uint16_t uWidth, uint16_t uHeight, uint32_t frmRateNum, uint32_t frmRateDen, uint32_t uGopLength, int uMaxSameSenceCnt, int iInitialQP, uint32_t uTargetBitRate);
设置编码chnnel默认的属性
IMP_Encoder_CreateChn(chnNum, &channel_attr)
//创建编码chnnel
IMP_Encoder_RegisterChn(chn[i].index, chnNum)
//注册编码Channel到Group
Step.4 Bind 绑定framesource和编码chnnel
IMP_System_Bind(&chn[i].framesource_chn, &chn[i].imp_encoder)
//绑定framesource和编码chnnel, 绑定成功即framesource产生的数据可以自动传送到编码chnnel
Step.5 Stream On 使能Framesource chnnel, 开始输出图像
IMP_FrameSource_EnableChn(chn[i].index)
//使能chnnel, chnnel开始输出图像
Stp.6 Get stream 获取码流
IMP_Encoder_StartRecvPic(chnNum)
//编码chnnel开始接受图像
IMP_Encoder_PollingStream(chnNum, 1000)
//对编码chnnel中码流进行polling
IMP_Encoder_GetStream(chnNum, &stream, 1)
//获取编码码流
save_stream(stream_fd, &stream)
//将结果保存到打开的文件描述符
IMP_Encoder_ReleaseStream(chnNum, &stream)
//释放编码码流, 与IMP_Encoder_GetStream成对使用
IMP_Encoder_StopRecvPic(chnNum)
//编码chnnel停止接受图像
Step.7 Stream Off 不使能Framesource chnnel, 停止输出图像
IMP_FrameSource_DisableChn(chn[i].index)
//不使能channel, channel停止输出图像
Step.8 UnBind 解绑Framesource和编码chnnel
IMP_System_UnBind(&chn[i].framesource_chn, &chn[i].imp_encoder)
//解绑framesource和编码chnnel
Step.9 Encoder exit 编码反初始化
IMP_Encoder_Query(chnNum, &chn_stat)
//查询编码chnnel状态
IMP_Encoder_UnRegisterChn(chnNum)
//如果已经注册了, 反注册编码chnnel到Group
IMP_Encoder_DestroyChn(chnNum)
//销毁编码chnnel
Step.11 System exit 系统 反 初始化
IMP_ISP_DisableTuning()
//不使能ISP tuning
IMP_System_Exit()
//系统反初始化
IMP_ISP_DisableSensor(IMPVI_MAIN, &sensor_info[*])
//不使能sensor, sensor停止输出图像 (IMPVI_MAIN为主摄, IMPVI_SEC为次摄, IMPVI_THR为第三摄)
IMP_ISP_DelSensor(IMPVI_MAIN, &sensor_info[*])
//删除sensor (IMPVI_MAIN为主摄, IMPVI_SEC为次摄, IMPVI_THR为第三摄)
IMP_ISP_Close()
//关闭ISP模块