Qualcomm Enhanced SDK (QESDK)API参考 (11)

150 篇文章 19 订阅


5.3 增强型 QAPE API

5.3.1 QAPE 增强型管理器

主链路进入增强型 QAPE 子系统的构造函数。

QAPE_enhancedManager()

参数
Qesdk
经过验证的 IQesdk 接口
返回结果
QAPE_enhancedManager
子系统管理器对象

5.3.1 get_gpu_headroom

返回最近“持续时间”秒内可用的平均/最小 GPU 裕量百分比。应用程序使用 get_gpu_headroom() API 获取有关历史应用程序渲染工作负载的反馈,以知悉工作负载是否与 SoC 上的 GPU 绑定。此 API 旨在帮助提供应用程序内容的 GPU 性能信息和帮助驱动工作负载,以及提供其他 API 来确保平稳持续的 UX 性能(最大限度减少帧丢失,降低 UI 延迟)。应用程序可以监控温度。如果移动设备温度接近温控限值,则会进一步检查工作负载是否与 GPU 绑定,以此判断降低 GPU 负载是否有助于减轻温升状态 (<= LIGHT),从而改善持久性能。

注释:
当温升调节时,GPU 余量计算考虑了最大 GPU 频率调节。

注释:
此 API 只适用于游戏,因为游戏被视为 GPU 任务繁重的用例。对于常规应用程序,此 API 返回 -1。

在这里插入图片描述

5.4 示例代码

Java 示例
Java
需要导入

import com.qualcomm.qti.qesdk.Performance.*;
      import com.qualcomm.qti.qesdk.QesdkStatusException;
      import com.qualcomm.qti.qesdkIntf.IQesdk;

初始化

IQesdk qesdkManager = Iqesdk.createInstance(getApplicationContext());
      int statusId = qesdkManager.init(eventCallbackHandler);
      QAPEManager perfManager = new QAPEManager(qesdkManager);
      QAPE_enhancedManager enhancedPerfManager = new QAPE_enhancedManager(qesdkManager);
      int setPkgStatus = perfManager.set_pkg(getApplicationContext().getPackageName());
      int ret = perfManager->set_pkg(pkg_name);

设置回调

IQesdkEventCallBack eventCallbackHandler = new IQesdkEventCallBack() {
      @Override
      public void onEvent(int opcode, int[] subsys) {
      // Handle QESDK event
      }
      };

CPU 提速

int retStatus = perfManager.boost_cpu(cpuBoostPercentage);

GPU 提速

retStatus = perfManager.boost_gpu(gpuBoostPercentage);

提示高 CPU 利用率

retStatus = perfManager.hint_high_cpuutil(tid);

提示低 CPU 利用率

retStatus = perfManager.hint_low_cpuutil(tid);

提示低延迟

retStatus = perfManager.hint_low_latency(tid);

提示线程管道

retStatus = perfManager.hint_thread_pipeline(threadIds);

释放线程提示

retStatus = perfManager.release_thread_hints(0,tid);

获取 GPU 余量

retStatus = enhancedPerfManager.get_gpu_headroom(gpuDuration, gpuHeadroomType);

原生示例
原生
需要包括的内容

#include "qesdk_ndk.h"
      #include "qesdk_Performance_QAPE.h"
      #include "qesdk_Performance_QAPE_enhanced.h"

初始化

qesdk_handle_t qesdk_handle = qesdk_init(nativeLicense, len, event_callback_handler);
      QAPEManager *perfManager = new QAPEManager();
      QAPE_enhancedManager *perfEnhManager = new QAPE_enhancedManager();
      int intRet = perfManager->init(nativeLicense, len, event_callback_handler);
      intRet = perfEnhManager->init(nativeLicense, len, event_callback_handler);

设置回调

void event_callback_handler(uint32_t opcode, uint32_t subsys[]) {
      // Callback to handle QESDK events
      }

CPU 提速

int ret = perfManager->boost_cpu(nBoostVal);

GPU 提速

ret = perfManager->boost_gpu(nBoostVal);

提示高 CPU 利用率

ret = perfManager->hint_high_cpuutil(ntid);

提示低 CPU 利用率

ret = perfManager->hint_low_cpuutil(ntid);

提示低延迟

ret = perfManager->hint_low_latency(ntid);

提示线程管道

ret = perfManager->hint_thread_pipeline(ntids);

释放线程提示

ret = perfManager->release_thread_hints(n_hint_category, ntid);

获取 GPU 余量

ret = perfEnhManager->get_gpu_headroom(n_past_dur, avg);

6 位置 API(精确定位)

位置 QESDK 服务 (LocationQesdkService) 为应用程序提供跟踪和校正数据注入 API。应用程序可使用这些 API 从底层 GNSS 引擎获取米级或分米级位置。

  • eDGNSS 子系统提供开始/停止跟踪 API 以及用于接收米级定位的回调。
  • RTK 子系统提供开始/停止跟踪 API 以及用于接收分米级定位的回调。

注释

  • OEM 应用程序也可以使用原生 NTRIP 客户端配置 API。
  • 每个应用程序只能激活一个精确定位请求。多个请求将导致后续请求覆盖上一个请求。
  • 应用程序需要在 Android manifest 文件中声明 android.permission.ACCESS_FINE_LOCATION 用户权限。
  • 通用 API(例如配置 API 和校正数据注入 API)在 eDGNSS 子系统章节说明,且对 eDGNSS 和 RTK 子系统均适用。
  • 当屏幕关闭或应用程序转入后台运行时,精确定位更新将停止。一旦屏幕打开,应用程序返回到前台运行,位置更新就会恢复。

6.1 eDGNSS 子系统

eDGNSS 子系统提供米级定位的定位 API。有关通用 API,可参见通用位置 API、回调、枚举和结构体。

PP_eDGNSSManager (creator)
主链路进入 eDGNSS 精确定位引擎的构造函数。要在 eDGNSS 子系统中调用 API,需如示例所示创建 PP_eDGNSSManager 类的实例。

IQesdk mQesdkManager = IQesdk.createInstance(this);
PP_eDGNSSManager mPpeEdgnssManager = new 
PP_eDGNSSManager(mQesdkManager);

在这里插入图片描述

6.2 RTK 子系统

RTK 子系统提供分米级定位的 API。

此 API 与 NTRIP 配置和校正数据注入 API 结合使用。

Note
所有通用 API(例如配置 API、校正数据注入 API、枚举和回调)均在通用位置 API、回调、枚举和结构体章节中说明。在适用情况下,差异会显示出来,否则唯一的区别是 RTK 子系统提供分米级的位置数据。

PP_RTKManager

要在 RTK 子系统中调用 API,需如示例所示创建 PP_RTKManager 类的实例。

IQesdk mQesdkManager = IQesdk.createInstance(this);
PP_RTKManager mPpeRtkManager = new PP_RTKManager(mQesdkManager);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值