# aclmdlSetInputAIPP

#### 函数功能

动态AIPP场景下，根据指定的动态AIPP输入的输入index，设置模型推理时的AIPP参数值，同步接口。

动态AIPP支持的几种操作的计算方式及其计算顺序如下：抠图->色域转换->缩放（当前版本不支持缩放）->减均值/归一化->padding。


#### 约束说明

- 经过动态AIPP处理后的图像的宽、高必须与原始模型中输入Shape中的宽、高保持一致。
- 多Batch场景下，根据每个Batch的配置计算出动态AIPP后输出图片的宽、高，经过动态AIPP后每个Batch的输出图片宽、高必须是一致的。计算输出图片宽、高的计算公式如  表1
所示。
- 抠图或者缩放或者padding之后，对图片宽、高的校验规则如下，其中，aippOutputW、aippOutputH分别表示AIPP输出图片的宽、高，其它参数是  aclmdlSetAIPPSrcImageSize
、  aclmdlSetAIPPScfParams
、  aclmdlSetAIPPCropParams
、  aclmdlSetAIPPPaddingParams
接口的入参：
**表1 输出图片宽、高计算公式**

| 抠图 | 缩放 | 补边（padding） | 动态AIPP输出图片的宽、高 |
| --- | --- | --- | --- |
| 否 | 否 | 否 | aippOutputW=srcImageSizeW，aippOutputH=srcImageSizeH |
| 是 | 否 | 否 | aippOutputW=cropSizeW，aippOutputH=cropSizeH |
| 是 | 是 | 否 | aippOutputW=scfOutputSizeW，aippOutputH=scfOutputSizeH |
| 是 | 否 | 是 | aippOutputW=cropSizeW + paddingSizeLeft + paddingSizeRight，aippOutputH=cropSizeH + paddingSizeTop + paddingSizeBottom |
| 否 | 否 | 是 | aippOutputW=srcImageSizeW + paddingSizeLeft + paddingSizeRight，aippOutputH=srcImageSizeH + paddingSizeTop + paddingSizeBottom |
| 否 | 是 | 是 | aippOutputW=scfOutputSizeW + paddingSizeLeft + paddingSizeRight，aippOutputH=scfOutputSizeH + paddingSizeTop + paddingSizeBottom |
| 否 | 是 | 否 | aippOutputW=scfOutputSizeW，aippOutputH=scfOutputSizeH |
| 是 | 是 | 是 | aippOutputW=scfOutputSizeW + paddingSizeLeft + paddingSizeRight，aippOutputH=scfOutputSizeH + paddingSizeTop + paddingSizeBottom |


#### 函数原型

aclError aclmdlSetInputAIPP(uint32_t modelId, aclmdlDataset *dataset, size_t index, const aclmdlAIPP *aippParmsSet)


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| modelId | 输入 | 模型的ID。 调用aclmdlLoadFromFile接口/aclmdlLoadFromMem接口/aclmdlLoadFromFileWithMem接口/aclmdlLoadFromMemWithMem接口加载模型成功后，会返回模型ID。 |
| dataset | 输入 | 模型推理的输入数据的指针。 使用aclmdlDataset类型的数据描述模型推理时的输入数据，输入的内存地址、内存大小用aclDataBuffer类型的数据来描述。 |
| index | 输入 | 标识动态AIPP输入的输入index。 多个动态AIPP输入的场景下，用户可调用aclmdlGetAippType接口获取指定模型输入所关联的动态AIPP输入的输入index。 为保证向前兼容，如果明确只有一个动态AIPP输入，可调用aclmdlGetInputIndexByName接口获取，输入名称固定为ACL\_DYNAMIC\_AIPP\_NAME。 |
| aippParmsSet | 输入 | 动态AIPP参数对象的指针。 提前调用aclmdlCreateAIPP接口创建aclmdlAIPP类型的数据。 |


#### 返回值说明

返回0表示成功，返回其它值表示失败。


#### 参考资源

接口调用流程及示例，参见模型动态AIPP推理。
