# Example code **Parent Topic:** [Performance API](https://docs.qualcomm.com/doc/80-PK177-134/topic/performance_api_qape.html) ## Java Source: [https://docs.qualcomm.com/doc/80-PK177-134/topic/qape_example_code.html](https://docs.qualcomm.com/doc/80-PK177-134/topic/qape_example_code.html) **Required imports** import com.qualcomm.qti.qesdk.Performance.*; import com.qualcomm.qti.qesdk.QesdkStatusException; import com.qualcomm.qti.qesdkIntf.IQesdk;Copy to clipboard **Initialize** IQesdk qesdkManager = Iqesdk.createInstance(getApplicationContext()); QAPEManager perfManager = new QAPEManager(qesdkManager); int status = perfManager.init([String license], (opcodes, subsystem) -> { // Callback handle });Copy to clipboard **Set package** int setPkgStatus = perfManager.set_pkg(getApplicationContext().getPackageName()); int ret = perfManager->set_pkg(pkg_name);Copy to clipboard **Setup callbacks** IQesdkEventCallBack eventCallbackHandler = new IQesdkEventCallBack() { @Override public void onEvent(int opcode, int[] subsys) { // Handle QESDK event }};Copy to clipboard **Boost CPU** int retStatus = perfManager.boost_cpu(cpuBoostPercentage);Copy to clipboard **Boost GPU** retStatus = perfManager.boost_gpu(gpuBoostPercentage);Copy to clipboard **Hint high CPU util** retStatus = perfManager.hint_high_cpuutil(tid);Copy to clipboard **Hint low CPU util** retStatus = perfManager.hint_low_cpuutil(tid);Copy to clipboard **Hint low latency** retStatus = perfManager.hint_low_latency(tid);Copy to clipboard **Hint thread pipeline** retStatus = perfManager.hint_thread_pipeline(threadIds);Copy to clipboard **Release thread hints** retStatus = perfManager.release_thread_hints(0,tid);Copy to clipboard **Get GPU headroom** retStatus = perfManager.get_gpu_headroom(gpuDuration, gpuHeadroomType);Copy to clipboard **OEM boost CPU** int oem_boost_cpu (int orig_val) { // check any system parameters return new_val; }Copy to clipboard **OEM boost CPU** int oem_boost_gpu (int orig_val) { // check any system parameters return new_val; }Copy to clipboard **OEM scenario support** int oem_scenario_support (std::string appName, std::string scenario_id) { SLOGD("OEM extension plugin get scenario support: %s %s", appName.c_str(), scenario_id.c_str()); return 1; }Copy to clipboard **OEM start scenario** int oem_start_scenario(std::string appName, std::string scenario_id, int * &plock) { int args = 0; if (scenario_id.compare("launch") == 0) { int x[] = { 0x40C00000, 0x1, 0x40804000, 0xFFF, 0x40804100, 0xFFF, 0x40804200, 0xFFF, 0x40800000, 0xFFF, 0x40800100, 0xFFF, 0x40800200, 0xFFF, 0x41848000, 0x104410, 0x41844000, 0x104410, 0x40400000, 0x1, 0x42C10000, 0x1, 0x43460000, 0x30D400, 0x43458000, 0x193138, 0x4281C000, 2000 }; args = sizeof(x)/sizeof(x[0]); plock = (int *) malloc(sizeof(int) * args); for (int i = 0; i < args; i++) { plock[i] = x[i]; } } else if (scenario_id.compare("scroll") == 0) { int x[] = { 0x4303C000, 0xA6428, 0x40800000, 1000, 0x40800100, 1000, 0x40800200, 1000, 0x40C00000, 0x2, 0x43458000, 0xD2F00, 0x40C74000, 0xFF, 0x40408000, 0x63, 0x41000000, 3 }; args = sizeof(x)/sizeof(x[0]); plock = (int *) malloc(sizeof(int) * args); for (int i = 0; i < args; i++) { plock[i] = x[i]; } } SLOGD("OEM extension plugin start scenario: %s %s %d", appName.c_str(), scenario_id.c_str(), args); return args; }Copy to clipboard **OEM stop scenario** int oem_stop_scenario(std::string appName, std::string scenario_id) { SLOGD("OEM extension plugin stop scenario: %s %s", appName.c_str(), scenario_id.c_str()); return 0; }Copy to clipboard ## Native Source: [https://docs.qualcomm.com/doc/80-PK177-134/topic/qape_example_code.html](https://docs.qualcomm.com/doc/80-PK177-134/topic/qape_example_code.html) **Required includes** #include "qesdk_ndk.h" #include "qesdk_Performance_QAPE.h"Copy to clipboard **Initialize** QAPEManager *perfManager = new QAPEManager(); int ret = perfManager->init(licenseStr, license_length, (uint32_t opcodes, uint32_t *subsystems) { // Handle QESDK event });Copy to clipboard **Setup callbacks** void event_callback_handler(uint32_t opcode, uint32_t subsys[]){ // Callback to handle QESDK events }Copy to clipboard **Boost CPU** int8_t ret = -1; qesdk_transaction_status qesdk_ndk_response = perfManager->boost_cpu(nBoostVal, ret); if(qesdk_ndk_response.is_ok()){ // Use the ret value } else { // Can get error code by get_error_code() }Copy to clipboard **Boost GPU** qesdk_ndk_response = perfManager->boost_gpu(nBoostVal, ret); if(qesdk_ndk_response.is_ok()){ // Use the ret value } else { // Can get error code by get_error_code() }Copy to clipboard **Hint High CPU Util** qesdk_ndk_response = perfManager->hint_high_cpuutil(ntid, ret); if(qesdk_ndk_response.is_ok()){ // Use the ret value } else { // Can get error code by get_error_code() }Copy to clipboard **Hint Low CPU Util** qesdk_ndk_response = perfManager->hint_low_cpuutil(ntid, ret); if(qesdk_ndk_response.is_ok()){ // Use the ret value } else { // Can get error code by get_error_code() }Copy to clipboard **Hint Low Latency** qesdk_ndk_response = perfManager->hint_low_latency(ntid, ret); if(qesdk_ndk_response.is_ok()){ // Use the ret value } else { // Can get error code by get_error_code() }Copy to clipboard **Hint Thread Pipeline** qesdk_ndk_response = perfManager->hint_thread_pipeline(ntids, ret); if(qesdk_ndk_response.is_ok()){ // Use the ret value } else { // Can get error code by get_error_code() }Copy to clipboard **Release Thread Hints** qesdk_ndk_response = perfManager->release_thread_hints(n_hint_category, ntid, ret); if(qesdk_ndk_response.is_ok()){ // Use the ret value } else { // Can get error code by get_error_code() }Copy to clipboard **Get GPU Headroom** qesdk_ndk_response = perfManager->get_gpu_headroom(n_past_dur, avg, ret); if(qesdk_ndk_response.is_ok()){ // Use the ret value } else { // Can get error code by get_error_code() }Copy to clipboard Last Published: Nov 14, 2024 [Previous Topic Auto pipeline with other thread APIs](https://docs.qualcomm.com/bundle/publicresource/80-PK177-134/topics/auto_pipeline_with_other_threads.md) [Next Topic Location API](https://docs.qualcomm.com/bundle/publicresource/80-PK177-134/topics/location.md)