MT6765平台 ISP40 VSDOF功能流程梳理--未完待续

一、初始化部分:

VSDOF init流程
功能的初始化入口:StreamingFeaturePipeline::init
initNodes中会检查各功能支持标志位,如果支持,则把对应Node添加到List中。
接下来通过两个模板类的,实现调用不同Node的onInit方法,VSDOF功能对应DepthNode,这里以后都是为VSDOF功能定制的初始化流程。

有几个重点函数:

  1. initializeBufferPool:
    依次调用所需的各个Node对应的initxxxBuffPool
    完成每个Node 需要的BufferPool创建,并完成allocate动作。
    每种数据缓冲池中buffer的数量就是在这里allocate时完成配置

  2. buildImageBufferPoolMap:
    构建bufferPoolMap,将第一步中创建的BufferPool与特定的key值绑定,存储到map中。方便后续根据使用场景取用

  3. TEST_AND_CREATE_NODE:
    检查各Node支持情况,如果支持,则创建对应类的实例。并将前面流程中定义的mpNodeSignal, mpDepthStorage, mpBufferPoolMgr传入各个node中,用于共享。
    各Node的构造函数中,主要完成:根据需要的数据,添加对应数量的addWaitQueue。

  4. buildPipeGraph:
    连接各个节点的数据流,完成图的构建。如下所示:
    pipeGraph

  5. mCamGraph.start:
    为各个Node起单独的线程,并执行onThreadLoop里面的流程

二、各个Node onThreadLoop的部分流程走向:

Node间的联系都是基于buildPipeGraph中创建的数据流走向。
在这里插入图片描述

三、缓冲池(buffer pool)中每个buffer的轮转流程

以N3DMaskBufPool_Main1为例:

  1. 创建buffer pool:
    CREATE_IMGBUF_POOL(mN3DMaskBufPool_Main1, "N3DMaskBufPool_Main1", rN3DSize.mWARP_MASK_SIZE,
                        eImgFmt_Y8, usage, MTRUE);
  1. 分配空间
ALLOCATE_BUFFER_POOL(mN3DMaskBufPool_Main1, VSDOF_WORKING_BUF_SET)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值