3 高通CamX的SINKBUFFER要怎么理解

请教个关于高通camx-CHI架构的问题,CHI里的SINKBUFFER要怎么理解呢?是属于一个NODE吗?

有的pipeline里SinkBuffer对应一个InputPort, 有的pipeline里, 对应多个InputPort, 这个SinkBuffer是会针对不同的Input做不同的处理吗?具体处理的方法是从哪里来的呢?

请先 登录 后评论

1 个回答

凡乐
  1. SinkBuffer是Pipeline的终结点,表示Pipeline已经处理完,填到输出Buffer中了。
  2. SinkBuffer是作为一个虚拟的Node来处理的,可以查看g_pipelines.cpp,里面会有SinkBuffer的ChiLinkNodeDescriptor。
  3. SinkBuffer不会针对不同的Input Node做处理,在Pipline XML中可能会定义多条link连接到Sink Buffer,但实际运行起来后只会有其中的一条link接到Sink Buffer, 那是因为在实际创建Pipeline时会有一个裁剪过程,通过PrunableVariant的variantGroup和variantType来裁剪掉不符合要求的link。
  4. SinkBuffer Node在创建Pipeline时只是用来参考,告诉前一个Node,你的这个output buffer是sinkBuffer,请通知出去,代码逻辑在UsecaseSelector::PruneUsecaseDescriptor中,会判断是否是NODE_ID_SINK_BUFFER
请先 登录 后评论