Camera pipeline 剪裁实现

85a1467a7ed8467f332d743d9bcc6684.gif

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、基础介绍
1.ChiUsecase数据结构用来概括一个usecase的信息
2.ChiPipelineTargetCreateDescriptor数据结构用来描述一个完整的pipeline
3.ChiPipelineCreateDescriptor数据结构描述一个pipeline的构成
4.ChiTargetPortDescriptorInfo数据结构描述一个pipeline的sink/source缓存信息
二、裁剪变量
1.裁剪变量的定义
2.usecase描述中的裁剪参数
三、usecase裁剪的代码实现
四、裁剪ZSLSnapshotJpeg 举例
1.ZSLSnapshotJpeg pipeline
2.裁剪node
3.裁剪link
4.裁剪sourceTarget

一、基础介绍

usecase裁剪是指根据pruneSettings将一个usecase描述中部分内容剪修的处理过程。

接下来会以ZSLSnapshotJpeg 这条pipeline的裁剪为例子,了解是如何裁剪的。

在开始裁剪一条pipeline前,先看下usecas描述中的几个数据结构,了解可裁剪的内容有哪些(node, target, link)。

1.ChiUsecase数据结构用来概括一个usecase的信息
struct ChiUsecase
{
    const CHAR* pUsecaseName;
    UINT streamConfigMode;
    UINT numTargets;
    ChiTarget** ppChiTargets;
    UINT numPipelines;
    ChiPipelineTargetCreateDescriptor* pPipelineTargetCreateDesc;
    const PruneSettings* pTargetPruneSettings;
    BOOL isOriginalDescriptor;
}

一个usecase的基本信息包括:

  • usecase名字

  • streamConfigMode, 表明该usecase用于什么相机操作模式

  • chiTargets, 该usecase所拥有的target,包括sinkTarget和sourceTarget.

  • chiPipelineTargetCreateDescriptor, 该usecase所拥有的pipeline的描述

  • pruneSettings, 该usecase的裁剪配置

2.ChiPipelineTargetCreateDescriptor数据结构用来描述一个完整的pipeline
struct ChiPipelineTargetCreateDescriptor
{
    const CHAR* pPipelineName;
    ChiPipelineCreateDescriptor pipelineCreateDesc;
    ChiTargetPortDescriptorInfo sinkTarget;
    ChiTargetPortDescriptorInfo sourceTarget;
};

一个Pipeline的完整描述有四个内容:

  • pipeline名,区分pipeline的不同;

  • pipeline的构建描述,描述这条pipeline是什么样的构成

  • sinkTarget下游目标,描述pipeline的输出是什么样的;

  • sourceTarget上游目标,描述pipeline的输入是什么样的。

3.ChiPipelineCreateDescriptor数据结构描述一个pipeline的构成
typedef struct ChiPipelineCreateDescriptor
{
    UINT32 size;
    INT32 numNode;
    CHINODE* pNodes;      
    INT32 nulLinks;
    CHINODELINK* pLinks;
    UINT32 isRealTime;
    UINT numBatchedFrames;
    UINT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值