Scale

该示例演示 PPE 的缩放功能。

环境需求

该示例的环境需求,可参考 环境需求

硬件连线

在此示例工程的演示中,无需进行额外的物理连线。

配置选项

可以通过调整以下参数来变更缩放结果:

缩放比例

水平方向和垂直方向的缩放比例可以通过如下参数进行调整:

float horizontal_ratio = 2.5;
float vertical_ratio = 0.8;

编译和下载

该示例的编译和下载流程,可参考 编译和下载

测试验证

缩放成功

当示例工程执行完成后,PPE的缩放结果将与模拟数据进行比较。若在DebugAnalyzer窗口中观察到如下日志,表明缩放成功:

PPE scale test passed 0

缩放失败

当示例工程执行完成后,PPE的缩放结果将与模拟数据进行比较。若在DebugAnalyzer窗口中观察到如下日志,表明缩放失败:

Data mismatch at offset 179, expect 0x%40406427, actual 0x%12345678
PPE scale test failed {error code}

{error code}的描述可以在 PPE_ERR 中找到。

代码介绍

该章节主要介绍示例中的初始化和相应功能实现的代码和流程说明。

源码路径

工程文件和源码路径如下:

  • 工程路径: sdk\samples\peripheral\ppe\scale\proj

  • 源码路径: sdk\samples\peripheral\ppe\scale\src

初始化

初始化流程包含在 PPE_test() 中。

  1. 初始化存储待缩放图片和缩放结果的结构体 ppe_buffer_t 中的数据。

ppe_buffer_t target, source;
memset(&target, 0, sizeof(ppe_buffer_t));
memset(&source, 0, sizeof(ppe_buffer_t));
  1. 在待缩放图片的 ppe_buffer_t 结构体中填充信息。

source.address = (uint32_t) source_buffer;
source.memory = source_buffer;
source.format = PPE_ABGR8888;
source.width = 64;
source.height = 64;
source.stride = source.width;
  1. 在待输出图片的 ppe_buffer_t 结构体中填充信息。

target.address = (uint32_t) target_buffer;
target.memory = target_buffer;
target.format = PPE_ABGR8888;
  1. 在决定待缩放图片在水平方向和垂直方向的缩放比例后,调用API PPE_Scale() 开始进行缩放。

float horizontal_ratio = 2.5;
float vertical_ratio = 0.8;
PPE_ERR err = PPE_Scale(&source, &target, horizontal_ratio, vertical_ratio);

功能实现

当函数 PPE_Scale() 执行完成后,PPE运算的结果将会与仿真模拟的运算结果进行比较。如果产生数据不相符的情况,错误的数据会如 测试验证 章节所示在DebugAnalyzer工具中显示。