【君正-T41】外设采集h264流程

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(chni.index, &chni.fs_chn_attr)

// 创建通道

MP_FrameSource_SetChnAttr(chni.index, &chni.fs_chn_attr)

// 设置通道的相关属性, 包括:图片宽度 图片高度 图片格式 通道的输出帧率 缓存buf数 裁剪和缩放属性

Step.3 Encoder init 编码初始化

IMP_Encoder_CreateGroup(chni.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(chni.index, chnNum)

//注册编码Channel到Group

Step.4 Bind 绑定framesource和编码chnnel

IMP_System_Bind(&chni.framesource_chn, &chni.imp_encoder)

//绑定framesource和编码chnnel, 绑定成功即framesource产生的数据可以自动传送到编码chnnel

Step.5 Stream On 使能Framesource chnnel, 开始输出图像

IMP_FrameSource_EnableChn(chni.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(chni.index)

//不使能channel, channel停止输出图像

Step.8 UnBind 解绑Framesource和编码chnnel

IMP_System_UnBind(&chni.framesource_chn, &chni.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模块

相关推荐
geovindu3 小时前
rust: Template Method Pattern(续)
开发语言·后端·设计模式·rust·行为模式·板方法模式
每天一道题3 小时前
从单体到微服务:Service、Instance 与服务拆分到底是什么关系?
后端·微服务·云原生·架构
怕浪猫3 小时前
前端对接聊天 API:我用 React 做了一个比 ChatGPT 还好看的界面
前端·后端·面试
IT_陈寒3 小时前
深入理解Python:核心原理与最佳实践
前端·人工智能·后端
我命由我123454 小时前
5-2.Python 编码进阶 - 字符串进阶(拼接、普通格式化、普通格式化数字精度控制、快速格式化、遍历、常用方法)
java·开发语言·后端·python·学习·java-ee·学习方法
专业程序开发源4 小时前
django视听资源推荐系统16690-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
多客:duokelijie4 小时前
婚恋交友小程序合规梳理:上线运营需要准备哪些资质与许可手续?
后端·mysql·微信小程序·前端框架·uni-app·php·持续部署
yunwei374 小时前
eBPF 实例教程:使用内核跟踪点监控 GPU 驱动活动
linux·后端·性能优化
高频因子挖掘机4 小时前
别再手动维护股票名称映射表:用 Python 查询交易所元数据
后端·github·api
我的xiaodoujiao4 小时前
Django 权限系统项目实战详细图文教程 2--环境搭建
后端·python·django