GetErrorInfo
GetAppErrCodeInfo
函数功能
根据错误码获取对应错误信息。
函数原型
std::string GetAppErrCodeInfo(APP_ERROR err);
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| err | 输入 | 错误码。 |
返回参数说明
| 数据结构 | 说明 |
|---|---|
| std::string | 错误码对应错误信息。 |
父主题: ErrorCode
GetError
函数功能
根据错误码获取对应错误信息,支持用户增加模块名称。
该接口后续将废弃,请使用GetErrorInfo接口获取对应错误信息。
函数原型
std::string GetError(APP_ERROR err, std::string moduleName = "");
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| err | 输入 | 错误码。 |
| moduleName | 输入 | 错误所在模块名字。 |
返回参数说明
| 数据结构 | 说明 |
|---|---|
| std::string | 错误码对应错误信息。 |
父主题: ErrorCode
ConvertReturnCodeToLocal
函数功能
函数内部使用,将三方库返回错误码转换到本地错误码。
函数原型
APP_ERROR ConvertReturnCodeToLocal(ReturnCodeType type, int errCode)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| type | 输入 | 返回码类型,类型参见如下。 text<br>enumReturnCodeType {<br>GST_FLOW_TYPE = 0,<br>};<br> |
| errCode | 输入 | 错误码。 |
返回参数说明
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 本地错误码。 |
父主题: ErrorCode
GetErrorInfo
函数功能
根据错误码获取对应错误信息。该接口用于替代GetError接口,可以提供更准确、具体的错误信息,为推荐使用的错误信息获取接口。
函数原型
std::string GetErrorInfo(APP_ERROR err, std::string callingFuncName = "")
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| err | 输入 | APP_ERROR类型,错误码。 |
| callingFuncName | 输入 | std::string类型,指定产生错误码的函数名。仅当错误码为CANN错误码时,才需要传入该参数,用于记录产生该错误码的CANN函数名,从而方便后续进行错误定位。 |
返回参数说明
| 数据结构 | 说明 |
|---|---|
| std::string | 错误码对应的错误相关信息,便于用户进行错误定位。错误码的说明请参见APP_ERROR说明。 |
父主题: ErrorCode
APP_ERROR说明
using APP_ERROR = int;
APP_ERROR类用于表示程序执行的返回码,其包括mxVision返回码及部分CANN返回码;CANN返回码用于表示CANN接口执行的情况,不推荐用户使用,其返回码含义详见《CANN AscendCL应用软件开发指南 (C&C++)》;mxVision返回码用于表示mxVision接口执行的情况,常与GetErrorInfo接口配合使用、用于记录日志。全量APP_ERROR返回码请参考“MxBase/ErrorCode/ErrorCode.h”文件。为了方便用户查阅mxVision返回码,下表展示了mxVision返回码列表。其中,返回信息用于解释返回码的具体含义。
表1 mxVision返回码列表
| 返回码 | 返回码值 | 返回信息 |
|---|---|---|
| APP_ERR_OK | 0 | "Success" |
| APP_ERR_ACL_FAILURE | -1 | "ACL: general failure" |
| APP_ERR_ACL_ERR_BASE | 0 | "Success" |
| APP_ERR_ACL_INVALID_PARAM | 1 | "ACL: invalid parameter" |
| APP_ERR_ACL_BAD_ALLOC | 2 | "ACL: memory allocation fail" |
| APP_ERR_ACL_RT_FAILURE | 3 | "ACL: runtime failure" |
| APP_ERR_ACL_GE_FAILURE | 4 | "ACL: Graph Engine failure" |
| APP_ERR_ACL_OP_NOT_FOUND | 5 | "ACL: operator not found" |
| APP_ERR_ACL_OP_LOAD_FAILED | 6 | "ACL: fail to load operator" |
| APP_ERR_ACL_READ_MODEL_FAILURE | 7 | "ACL: fail to read model" |
| APP_ERR_ACL_PARSE_MODEL | 8 | "ACL: parse model failure" |
| APP_ERR_ACL_MODEL_MISSING_ATTR | 9 | "ACL: model missing attribute" |
| APP_ERR_ACL_DESERIALIZE_MODEL | 10 | "ACL: deserialize model failure" |
| APP_ERR_ACL_EVENT_NOT_READY | 12 | "ACL: event not ready" |
| APP_ERR_ACL_EVENT_COMPLETE | 13 | "ACL: event complete" |
| APP_ERR_ACL_UNSUPPORTED_DATA_TYPE | 14 | "ACL: unsupported data type" |
| APP_ERR_ACL_REPEAT_INITIALIZE | 15 | "ACL: repeat initialize" |
| APP_ERR_ACL_COMPILER_NOT_REGISTERED | 16 | "ACL: compiler not registered" |
| APP_ERR_ACL_IO | 17 | "ACL: IO failed" |
| APP_ERR_ACL_INVALID_FILE | 18 | "ACL: invalid file" |
| APP_ERR_ACL_INVALID_DUMP_CONFIG | 19 | "ACL: invalid dump config" |
| APP_ERR_ACL_INVALID_PROFILING_CONFIG | 20 | "ACL: invalid profiling config" |
| APP_ERR_ACL_OP_TYPE_NOT_MATCH | 21 | "ACL: operator type not match" |
| APP_ERR_ACL_OP_INPUT_NOT_MATCH | 22 | "ACL: operator input not match" |
| APP_ERR_ACL_OP_OUTPUT_NOT_MATCH | 23 | "ACL: operator output not match" |
| APP_ERR_ACL_OP_ATTR_NOT_MATCH | 24 | "ACL: operator attribute not match" |
| APP_ERR_ACL_API_NOT_SUPPORT | 25 | "ACL: API not supported" |
| APP_ERR_ACL_BAD_COPY | 26 | "ACL: memory copy fail" |
| APP_ERR_ACL_BAD_FREE | 27 | "ACL: memory free fail" |
| APP_ERR_COMM_BASE | 1000 | "Success" |
| APP_ERR_COMM_FAILURE | 1001 | "General Failed" |
| APP_ERR_COMM_INNER | 1002 | "Internal error" |
| APP_ERR_COMM_INVALID_POINTER | 1003 | "Invalid Pointer" |
| APP_ERR_COMM_INVALID_PARAM | 1004 | "Invalid parameter" |
| APP_ERR_COMM_UNREALIZED | 1005 | "Not implemented" |
| APP_ERR_COMM_OUT_OF_MEM | 1006 | "Out of memory" |
| APP_ERR_COMM_ALLOC_MEM | 1007 | "memory allocation error" |
| APP_ERR_COMM_FREE_MEM | 1008 | "free memory error" |
| APP_ERR_COMM_OUT_OF_RANGE | 1009 | "out of range" |
| APP_ERR_COMM_NO_PERMISSION | 1010 | "NO Permission " |
| APP_ERR_COMM_TIMEOUT | 1011 | "Timed out" |
| APP_ERR_COMM_NOT_INIT | 1012 | "Not initialized" |
| APP_ERR_COMM_INIT_FAIL | 1013 | "initialize failed" |
| APP_ERR_COMM_INPROGRESS | 1014 | "Operation now in progress " |
| APP_ERR_COMM_EXIST | 1015 | "Object, file or other resource already exist" |
| APP_ERR_COMM_NO_EXIST | 1016 | "Object, file or other resource doesn't exist" |
| APP_ERR_COMM_BUSY | 1017 | "Object, file or other resource is in use" |
| APP_ERR_COMM_FULL | 1018 | "No available Device or resource" |
| APP_ERR_COMM_OPEN_FAIL | 1019 | "Device, file or resource open failed" |
| APP_ERR_COMM_READ_FAIL | 1020 | "Device, file or resource read failed" |
| APP_ERR_COMM_WRITE_FAIL | 1021 | "Device, file or resource write failed" |
| APP_ERR_COMM_DESTORY_FAIL | 1022 | "Device, file or resource destroy failed" |
| APP_ERR_COMM_EXIT | 1023 | "Fail to exit" |
| APP_ERR_COMM_CONNECTION_CLOSE | 1024 | "Out of connection, Communication shutdown" |
| APP_ERR_COMM_CONNECTION_FAILURE | 1025 | "connection fail" |
| APP_ERR_COMM_STREAM_INVALID | 1026 | "ACL stream is null pointer" |
| APP_ERR_COMM_LOGGING_CONFIG_OPEN_FAIL | 1027 | "Logging config loading failed" |
| APP_ERR_COMM_SDK_HOME_NOSET | 1028 | "SDK_HOME not set" |
| APP_ERR_COMM_INVALID_PATH | 1029 | "Invalid path" |
| APP_ERR_COMM_REPEAT_INITIALIZE | 1030 | "Repeat initialize" |
| APP_ERR_DVPP_BASE | 2000 | "Success" |
| APP_ERR_DVPP_CROP_FAIL | 2001 | "DVPP: crop fail" |
| APP_ERR_DVPP_RESIZE_FAIL | 2002 | "DVPP: resize fail" |
| APP_ERR_DVPP_CROP_RESIZE_FAIL | 2003 | "DVPP: crop and resize fail" |
| APP_ERR_DVPP_CONVERT_FROMAT_FAIL | 2004 | "DVPP: convert image format fail" |
| APP_ERR_DVPP_VPC_FAIL | 2005 | "DVPP: VPC(crop, resize, convert format) fail" |
| APP_ERR_DVPP_JPEG_DECODE_FAIL | 2006 | "DVPP: decode jpeg or jpg fail" |
| APP_ERR_DVPP_JPEG_ENCODE_FAIL | 2007 | "DVPP: encode jpeg or jpg fail" |
| APP_ERR_DVPP_PNG_DECODE_FAIL | 2008 | "DVPP: encode png fail" |
| APP_ERR_DVPP_H26X_DECODE_FAIL | 2009 | "DVPP: decode H264 or H265 fail" |
| APP_ERR_DVPP_H26X_ENCODE_FAIL | 2010 | "DVPP: encode H264 or H265 fail" |
| APP_ERR_DVPP_HANDLE_NULL | 2011 | "DVPP: acldvppChannelDesc is nullptr" |
| APP_ERR_DVPP_PICDESC_FAIL | 2012 | "DVPP: fail to create or set acldvppCreatePicDesc" |
| APP_ERR_DVPP_CONFIG_FAIL | 2013 | "DVPP: fail to set dvpp configuration" |
| APP_ERR_DVPP_OBJ_FUNC_MISMATCH | 2014 | "DVPP: DvppCommon object mismatch the function" |
| APP_ERR_DEVICE_ID_MISMATCH | 2015 | "DVPP: DvppCommon object mismatch the function" |
| APP_ERR_MEMEROY_TYPE_MISMATCH | 2016 | "DVPP: mismatch the memory type" |
| APP_ERR_METADATA_IS_NULL | 2017 | "DVPP: metadata is null" |
| APP_ERR_PROTOBUF_NAME_MISMATCH | 2018 | "DVPP: VpcReSize mismatch the protobuf name" |
| APP_ERR_DVPP_INVALID_FORMAT | 2019 | "DVPP: mismatch the image format" |
| APP_ERR_DVPP_INVALID_IMAGE_WIDTH | 2020 | "DVPP: image width out of range" |
| APP_ERR_DVPP_INVALID_IMAGE_HEIGHT | 2021 | "DVPP: image height out of range" |
| APP_ERR_VDEC_CHANNEL_NUM_OUT_OF_RANGE | 2022 | "DVPP: vdec channel num out of range" |
| APP_ERR_DVPP_CROP_RESIZE_PASTE_FAIL | 2023 | "DVPP: resize and paste fail" |
| APP_ERR_INFER_BASE | 3000 | "Success" |
| APP_ERR_INFER_SET_INPUT_FAIL | 3001 | "Infer: set input fail" |
| APP_ERR_INFER_SET_OUTPUT_FAIL | 3002 | "Infer: set output fail" |
| APP_ERR_INFER_CREATE_OUTPUT_FAIL | 3003 | "Infer: create output fail" |
| APP_ERR_INFER_OP_SET_ATTR_FAIL | 3004 | "Infer: set op attribute fail" |
| APP_ERR_INFER_GET_OUTPUT_FAIL | 3005 | "Infer: get model output fail" |
| APP_ERR_INFER_FIND_MODEL_ID_FAIL | 3006 | "Infer: find model id fail" |
| APP_ERR_INFER_FIND_MODEL_DESC_FAIL | 3007 | "Infer: find model description fail" |
| APP_ERR_INFER_FIND_MODEL_MEM_FAIL | 3008 | "Infer: find model memory fail" |
| APP_ERR_INFER_FIND_MODEL_WEIGHT_FAIL | 3009 | "Infer: find model weight fail" |
| APP_ERR_INFER_DYNAMIC_IMAGE_SIZE_FAIL | 3010 | "Infer: In DYNAMIC_HW mode, only batchSize=1 is supported." |
| APP_ERR_COMMANDER_BASE | 4000 | "Success" |
| APP_ERR_COMMANDER_SPLIT_PARA_ERROR | 4001 | "Commander Splitter parameter error" |
| APP_ERR_COMMANDER_SPLIT_CONVERT_ERROR | 4002 | "Commander Splitter coordinate conversion error" |
| APP_ERR_COMMANDER_NO_AVAIL_SERVER_ERROR | 4003 | "Commander Splitter server is not available" |
| APP_ERR_COMMANDER_INFER_RESULT_ERROR | 4004 | "Commander subtask inference result error." |
| APP_ERR_QUEUE_BASE | 5000 | "Success" |
| APP_ERR_QUEUE_EMPTY | 5001 | "empty queue" |
| APP_ERR_QUEUE_STOPED | 5002 | "queue stopped" |
| APP_ERR_QUEUE_FULL | 5003 | "full queue" |
| APP_ERR_STREAM_BASE | 6000 | "Success" |
| APP_ERR_STREAM_EXIST | 6001 | "stream is exist" |
| APP_ERR_STREAM_NOT_EXIST | 6002 | "stream is not exist" |
| APP_ERR_STREAM_CHANGE_STATE_FAILED | 6003 | "stream change state fail" |
| APP_ERR_STREAM_CREATE_FAILED | 6004 | "stream create fail" |
| APP_ERR_STREAM_INVALID_CONFIG | 6005 | "stream invalid config" |
| APP_ERR_STREAM_INVALID_LINK | 6006 | "stream invalid link" |
| APP_ERR_STREAM_LINK_FAILED | 6007 | "stream link fail" |
| APP_ERR_STREAM_TRANS_MODE_NOT_MATCHED | 6008 | "stream trans mode not match" |
| APP_ERR_STREAM_TRANS_MODE_INVALID | 6009 | "stream trans mode invalid" |
| APP_ERR_STREAM_TIMEOUT | 6010 | "stream timeout" |
| APP_ERR_STREAM_ELEMENT_INVALID | 6011 | "stream element invalid" |
| APP_ERR_STREAM_ELEMENT_EXIST | 6012 | "stream element exist" |
| APP_ERR_STREAM_ELEMENT_NOT_EXIST | 6013 | "stream element not exist" |
| APP_ERR_ELEMENT_INVALID_FACTORY | 6014 | "element invalid factory" |
| APP_ERR_ELEMENT_INVALID_PROPERTIES | 6015 | "element invalid properties" |
| APP_ERR_ELEMENT_PAD_UNLINKED | 6016 | "element pad unlinked" |
| APP_ERR_PIPELINE_PROPERTY_CONFIG_ERROR | 6017 | "pipeline property config error" |
| APP_ERR_PLUGIN_TOOLKIT_BASE | 7000 | "Success" |
| APP_ERR_PLUGIN_TOOLKIT_CREATE_NODE_FAILED | 7001 | "plugin toolkit create node fail" |
| APP_ERR_PLUGIN_TOOLKIT_NODE_ALREADY_EXIST | 7002 | "plugin toolkit node already exist" |
| APP_ERR_PLUGIN_TOOLKIT_MESSAGE_NOT_MATCH | 7003 | "plugin toolkit message not match" |
| APP_ERR_PLUGIN_TOOLKIT_PARENT_NOT_MATCH | 7004 | "plugin toolkit parent not match" |
| APP_ERR_PLUGIN_TOOLKIT_NOT_INITIALIZED | 7005 | "plugin toolkit not initialized" |
| APP_ERR_PLUGIN_TOOLKIT_NODELIST_NOT_EXIST | 7006 | "plugin toolkit nodelist not exist" |
| APP_ERR_PLUGIN_TOOLKIT_NODE_NOT_EXIST | 7007 | "plugin toolkit node not exist" |
| APP_ERR_PLUGIN_TOOLKIT_INVALID_MEMBERID | 7008 | "plugin toolkit invalid memberid" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_BUFFER_IS_NULL | 7009 | "plugin toolkit metadata buffer is null" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_KEY_ALREADY_EXIST | 7010 | "plugin toolkit metadata key already exist" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_KEY_NOEXIST | 7011 | "plugin toolkit metadata key not exist" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_KEY_ERASE_FAIL | 7012 | "plugin toolkit metadata key erase fail" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_IS_NULL | 7013 | "plugin toolkit metadata is null" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_ADD_ERROR_INFO_FAIL | 7014 | "plugin toolkit metadata add error info fail" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_PLUGIN_NAME_KEY_ALREADY_EXIST | 7015 | "plugin toolkit metadata plugin name key is exist" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_ERROR_INFO_MAP_IS_NULL | 7016 | "plugin toolkit metadata error info map is null" |
| APP_ERR_PLUGIN_TOOLKIT_MESSAGE_TO_STRING_FAILED | 7017 | "plugin toolkit metadata failed to convert message to string" |
| APP_ERR_PLUGIN_TOOLKIT_FLOW_NOT_LINKED | 7018 | "plugin toolkit pad is not linked" |
| APP_ERR_PLUGIN_TOOLKIT_FLOW_FLUSHING | 7019 | "plugin toolkit pad is flushing" |
| APP_ERR_PLUGIN_TOOLKIT_FLOW_EOS | 7020 | "plugin toolkit pad is EOS" |
| APP_ERR_PLUGIN_TOOLKIT_FLOW_NOT_NEGOTIATED | 7021 | "plugin toolkit pad is not negotiated" |
| APP_ERR_PLUGIN_TOOLKIT_FLOW_ERROR | 7022 | "plugin toolkit some error occurred.Element generating this error should post an error message" |
| APP_ERR_PLUGIN_TOOLKIT_FLOW_NOT_SUPPORTED | 7023 | "plugin toolkit operation is not supported" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_KEY_EMPTY | 7024 | "the key cannot be empty" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_PLUGINNAME_EMPTY | 7025 | "the plugin name cannot be empty" |
| APP_ERR_DEVICE_MANAGER_BASE | 9000 | "Success" |
| APP_ERR_DEVICE_MANAGER_QUERY_DEVICE_ERROR | 9001 | "DeviceManager:query device count error" |
| APP_ERR_DEVICE_MANAGER_DESTROY_DEVICE_CHECK_ERROR | 9002 | "DeviceManager:all devices have been released,init or release again fail" |
| APP_ERR_OP_BASE | 10000 | "Success" |
| APP_ERR_OP_CREATE_TENSOR_FAIL | 10001 | "Fail to create tensor in operator" |
| APP_ERR_OP_BAD_FREE | 10002 | "Bad free in operator" |
| APP_ERR_OP_EXECUTE_FAIL | 10003 | "Fail to execute operator" |
| APP_ERR_OP_SYNACHRONIZE_STREAM_FAIL | 10004 | "Fail to synchronize stream in operator" |
| APP_ERR_SIZE_NOT_MATCH | 10005 | "Mismatched size in operator" |
| APP_ERR_MXPLUGINS_BASE | 11000 | "Success" |
| APP_ERR_MXPLUGINS_DEVICE_ID_MISMATCH | 11001 | "MxPlugins: mismatch the device id" |
| APP_ERR_MXPLUGINS_MEMEROY_TYPE_MISMATCH | 11002 | "MxPlugins: mismatch the memory type" |
| APP_ERR_MXPLUGINS_METADATA_IS_NULL | 11003 | "MxPlugins: metadata is null" |
| APP_ERR_MXPLUGINS_PROTOBUF_NAME_MISMATCH | 11004 | "MxPlugins: protobuf descriptor name mismatch" |
父主题: ErrorCode
MxInit
函数功能
全局初始化,申请Device资源与日志资源,mxVision接口全部执行完毕后,用户需调用MxDeInit()接口对初始化的全局资源进行去初始化操作。
- 对于Atlas 200I/500 A2 推理产品:使用MxInit()。
函数原型
APP_ERROR MxInit()
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| globalCfg | 输入 | AppGlobalCfg类型,应用全局配置。 |
返回参数说明
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
父主题: 初始化和去初始化
MxDeInit
函数功能
全局去初始化,释放Device等相关资源,需与全局初始化接口(MxInit)配套使用。
:::note 说明 涉及申请Device侧资源的类(Tensor、Model、Image、ImageProcessor、VideoEncoder和VideoDecoder)与MxDeInit的作用域冲突,因此,这些类的作用域不能大于或等于MxDeInit的作用域。 :::
函数原型
APP_ERROR MxDeInit();
返回参数说明
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
父主题: 初始化和去初始化
在线提单