# 样例介绍

#### 获取样例

单击vpc_sample(https://gitee.com/ascend/samples/tree/master/cplusplus/level1_single_api/7_dvpp/vpc_sample)获取样例


#### 功能描述

该样例实现图片的抠图、缩放、边界填充、色域转换、金字塔、LUT重映射、直方图统计等功能。


#### 原理介绍

在该样例中，涉及的关键功能点，如下表所示。

| 初始化 | 调用aclInit接口初始化AscendCL配置。 调用aclFinalize接口实现AscendCL去初始化。 |
| --- | --- |
| Device管理 | 调用aclrtSetDevice接口指定用于运算的Device。 调用aclrtGetRunMode接口获取软件栈的运行模式，根据运行模式的不同，内部处理流程不同。 调用aclrtResetDevice接口复位当前运算的Device，回收Device上的资源。 |
| Context管理 | 调用aclrtCreateContext接口创建Context。 调用aclrtDestroyContext接口销毁Context。 |
| 内存管理 | 调用aclrtMallocHost接口/aclrtFreeHost接口申请/释放Host上内存。 执行媒体数据处理时，若需要申请Device上的内存存放输入或输出数据，需调用hi\_mpi\_dvpp\_malloc接口/hi\_mpi\_dvpp\_free接口申请/释放内存。 |
| 数据传输 | 如果在板端环境上运行应用，则无需进行数据传输。 |
| 媒体数据处理V2 | 参见VPC图像处理功能中的接口。 |


#### 目录结构

样例代码结构如下所示。

```
├── common                       //示例代码文件所在的目录
│   ├── sample_comm.cpp         //公共函数的实现文件
│   ├── sample_comm.h           //声明公共函数的头文件
│   ├── sample_comm_vpc_*.cpp   //抠图、缩放等函数的实现文件
├── smoke_vpc                    //示例代码文件所在的目录
│   ├── sample_vpc.cpp          //main函数的实现文件
├── CMakeLists.txt               //编译脚本
```
