---
title: DCMI_MAIN_CMD_DVPP
description: "int dcmi_get_device_info(int card_id, int device_id, enum dcmi_main_cmd main_cmd, unsigned int sub_cmd, void *buf, unsigned int *size)"
url: https://www.hiascend.com/document/detail/zh/HDK/latest/A3/A3DCMI/dcmia3_077.html
sourcePath: /source/zh/HDK/2610/A3/A3DCMI/dcmia3_077.html
indexId: f8aec1a9bef24dc90d1ca26e87ae04372a05d655fad432852093f1b82bb4e1ff45
---
# DCMI_MAIN_CMD_DVPP

#### 函数原型

int dcmi_get_device_info(int card_id, int device_id, enum dcmi_main_cmd main_cmd, unsigned int sub_cmd, void *buf, unsigned int *size)


#### 功能说明

获取dvpp相关状态，配置信息。


#### 参数说明

| 参数名称 | 输入/输出 | 类型 | 描述 |
| --- | --- | --- | --- |
| card\_id | 输入 | int | 设备ID，当前实际支持的ID通过dcmi\_get\_card\_list接口获取。 |
| device\_id | 输入 | int | 芯片ID，通过dcmi\_get\_device\_id\_in\_card接口获取。取值范围如下： NPU芯片：[0, device\_id\_max\-1]。 说明： device\_id\_max值为2，当device\_id为0或1时表示NPU芯片；当device\_id为2时表示MCU芯片。 |
| main\_cmd | 输入 | enum dcmi\_main\_cmd | DCMI\_MAIN\_CMD\_DVPP |
| sub\_cmd | 输入 | unsigned int | sub\_cmd获取对应模块下子属性信息。 /\* DCMI sub command for DVPP module \*/ \#define DCMI\_SUB\_CMD\_DVPP\_STATUS 0 // dvpp状态，buf为0表示状态正常，非0表示状态异常 \#define DCMI\_SUB\_CMD\_DVPP\_VDEC\_RATE 1 // vdec利用率，正常值范围0\-100 \#define DCMI\_SUB\_CMD\_DVPP\_VPC\_RATE 2 // vpc利用率，正常值范围0\-100 \#define DCMI\_SUB\_CMD\_DVPP\_VENC\_RATE 3 // venc利用率，正常值范围0\-100 \#define DCMI\_SUB\_CMD\_DVPP\_JPEGE\_RATE 4 // jpege利用率，正常值范围0\-100 \#define DCMI\_SUB\_CMD\_DVPP\_JPEGD\_RATE 5 // jpegd利用率，正常值范围0\-100 仅支持DCMI\_SUB\_CMD\_DVPP\_STATUS、DCMI\_SUB\_CMD\_DVPP\_VDEC\_RATE、DCMI\_SUB\_CMD\_DVPP\_VPC\_RATE、DCMI\_SUB\_CMD\_DVPP\_JPEGE\_RATE和DCMI\_SUB\_CMD\_DVPP\_JPEGD\_RATE命令。 |
| buf | 输入/输出 | void \* | 详见本节约束说明。 |
| size | 输入/输出 | unsigned int \* | buf数组的长度/返回结果实际数据长度。 |


#### 返回值说明

| 类型 | 描述 |
| --- | --- |
| int | 处理结果： 成功：返回0。 失败：返回码请参见返回码。 |


#### 异常处理

无。


#### 约束说明

获取dvpp设备时sub_cmd，buf和size之间必须满足以下关系，如果不满足会导致接口调用失败。


**表1 sub_cmd对应的buf格式**

| sub\_cmd | buf对应的数据类型 | size |
| --- | --- | --- |
| DCMI\_SUB\_CMD\_DVPP\_STATUS | unsigned int | 长度为：sizeof(unsigned int) |
| DCMI\_SUB\_CMD\_DVPP\_VDEC\_RATE DCMI\_SUB\_CMD\_DVPP\_VPC\_RATE DCMI\_SUB\_CMD\_DVPP\_JPEGE\_RATE DCMI\_SUB\_CMD\_DVPP\_JPEGD\_RATE | unsigned int | 长度为：sizeof(unsigned int) |


**表2 不同部署场景下的支持情况**

| 产品形态 | 物理机场景（裸机）root用户 | 物理机场景（裸机）运行用户组（非root用户） | 物理机+普通容器场景root用户 | 物理机+容器AVI场景root用户 |
| --- | --- | --- | --- | --- |
| Atlas 900 A3 SuperPoD 超节点 | Y | Y | Y | NA |
| Atlas 9000 A3 SuperPoD 集群算力系统 | Y | Y | Y | NA |
| Atlas 800T A3 超节点 | Y | Y | Y | Y |
| Atlas 800I A3 系列硬件产品 | Y | Y | Y | Y |
| A200T A3 Box8 系列硬件产品 | Y | Y | Y | NA |
| 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 | 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 | 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 | 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 | 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 |


#### 调用示例

```
…
int ret = 0;
int card_id = 0;
int dev_id = 0;
unsigned int ratio = 0;
unsigned int sub_cmd = 0;
unsigned int ratio_size = sizeof(unsigned int);
ret = dcmi_get_device_info(card_id, dev_id, DCMI_MAIN_CMD_DVPP, sub_cmd, (void *)&ratio, &ratio_size);
if (ret != 0) {
// todo
return ret;
} else {
// todo
return ret;
}
…
```
