RuntimeEngine.h 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. #pragma once
  2. #include "Common.h"
  3. #include "ConfigModule.h"
  4. #include "ResourceKit.h"
  5. #include "AsyncProcessor.h"
  6. #include "SyncProcessor.h"
  7. /**
  8. * @brief AI类
  9. *
  10. * 该类用于C调用
  11. */
  12. class RuntimeEngine
  13. {
  14. public:
  15. /**
  16. * @brief 初始化AI模块
  17. *
  18. * 该函数用于初始化AI模块,包括读取配置文件和初始化模型资源。
  19. *
  20. * @param filePath 配置文件路径
  21. * @return 返回值为整数,表示初始化操作的结果:
  22. * - 如果初始化成功,返回AIStatus::StatusCode::SUCCESS。
  23. * - 如果读取配置文件失败,返回ConfigProcessor函数的返回值。
  24. * - 如果初始化模型资源失败,返回ai_model.init_resource函数的返回值。
  25. */
  26. int init(const std::string &filePath,bool is_sync);
  27. /**
  28. * @brief 处理图像帧
  29. *
  30. * 该函数用于处理图像帧,包括执行AI模型推理操作。
  31. *
  32. * @param frame_st 图像帧结构体指针,包含待处理的图像信息
  33. * @return 返回值为整数,表示处理操作的结果:
  34. * - 如果处理成功,返回AIStatus::StatusCode::SUCCESS。
  35. * - 如果发生错误,返回相应的错误码,具体错误码含义请参考ai_model.infer函数的注释。
  36. */
  37. int createRequest(frame_t *frame_st);
  38. int wait(int reqId);
  39. int getResult(int reqId, std::vector<BoundingBox> &bbox);
  40. int cleanup();
  41. int getAllPipelineIdNameStatus(std::vector<std::tuple<int, std::string, bool>> &uidPipilineIdNameStatusMap);
  42. int setPipelineStatus(int pipelineId, bool is_enable);
  43. int getPipelineModelConfig(const int &pipelineId, const int &model_uid, const std::string &obj_name, float &conf);
  44. int setPipelineModelConfig(const int &pipelineId, const int &modeUid, const std::string &key, float &value);
  45. // int process(frame_t *frame_st);
  46. /**
  47. * @brief 设置推理管道状态
  48. *
  49. * 该函数用于设置指定推理管道的状态,可启用或禁用推理管道,修改配置文件,并重新初始化AI模型资源。
  50. *
  51. * @param pp_name 推理管道名称
  52. * @param is_enable 若为true,则启用推理管道;若为false,则禁用推理管道。
  53. * @return 返回值为整数,表示设置操作的结果:
  54. * - 如果设置成功,返回AIStatus::StatusCode::SUCCESS。
  55. * - 如果发生错误,返回相应的错误码,具体错误码含义请参考ai_model.update_resource函数的注释。
  56. */
  57. // int set_pp_status(const std::string &pp_name, bool is_enable);
  58. // /**
  59. // * @brief 获取推理管道状态
  60. // *
  61. // * 该函数用于获取指定推理管道的状态,判断是否启用或禁用推理管道。
  62. // *
  63. // * @param pp_name 推理管道名称
  64. // * @param is_enable 用于存储推理管道状态的引用变量,若为true表示启用,若为false表示禁用。
  65. // * @return 返回值为整数,表示获取状态操作的结果:
  66. // * - 如果成功获取状态,返回AIStatus::StatusCode::SUCCESS。
  67. // * - 如果推理管道名称无效,返回AIStatus::ErrorCode::INVALID_PIPELINE_NAME。
  68. // * - 其他可能的错误码,请参考ConfigProcessor类的GetPipelineEnable函数的注释。
  69. // */
  70. // int get_pp_status(const std::string &pp_name, bool &is_enable);
  71. /**
  72. * @brief 获取所有推理管道名称
  73. *
  74. * 该函数用于获取所有推理管道的名称,并返回名称数组和管道数量。
  75. *
  76. * @param pipelineNames 存储推理管道名称的指针的指针,由调用方负责释放内存。
  77. * @param pipelineCount 用于存储推理管道数量的指针。
  78. * @return 返回值为整数,表示获取操作的结果:
  79. * - 如果成功获取推理管道名称,返回AIStatus::StatusCode::SUCCESS。
  80. * - 如果发生错误,返回相应的错误码,可能的错误码及其含义如下:
  81. * - AIStatus::ErrorCode::BAD_ALLOC: 内存分配失败。
  82. * - 其他可能的错误码,请参考ConfigProcessor类的GetAllPipelineName函数的注释。
  83. */
  84. // int get_pp_name(char ***pipelineNames, int *pipelineCount);
  85. // /**
  86. // * @brief 获取指定推理管道的推理结果
  87. // *
  88. // * 该函数用于获取指定推理管道的推理结果,并返回结果数组和结果数量。
  89. // *
  90. // * @param pp_name 推理管道名称
  91. // * @param boundingBoxes 存储推理结果的指针的指针,由调用方负责释放内存。
  92. // * @param size 用于存储推理结果数量的指针。
  93. // * @return 返回值为整数,表示获取操作的结果:
  94. // * - 如果成功获取推理结果,返回AIStatus::StatusCode::SUCCESS。
  95. // * - 如果推理管道名称无效,返回AIStatus::ErrorCode::NO_PIPELINE_ID。
  96. // * - 如果发生错误,返回相应的错误码,可能的错误码及其含义如下:
  97. // * - AIStatus::ErrorCode::BAD_ALLOC: 内存分配失败。
  98. // */
  99. // int get_pp_res(const std::string &pp_name, BoundingBox_Res **boundingBoxes, int *size);
  100. // /**
  101. // * @brief 获取所有推理结果
  102. // *
  103. // * 该函数用于获取所有推理管道的推理结果,并返回结果数组和结果数量。
  104. // *
  105. // * @param boundingBoxes 存储推理结果的指针的指针,由调用方负责释放内存。
  106. // * @param size 用于存储推理结果数量的指针。
  107. // * @return 返回值为整数,表示获取操作的结果:
  108. // * - 如果成功获取推理结果,返回AIStatus::StatusCode::SUCCESS。
  109. // * - 如果发生错误,返回相应的错误码,可能的错误码及其含义如下:
  110. // * - AIStatus::ErrorCode::BAD_ALLOC: 内存分配失败。
  111. // */
  112. // int get_all_res(BoundingBox_Res **boundingBoxes, int *size);
  113. // /**
  114. // * @brief 获取推理管道模型配置的置信度
  115. // *
  116. // * 该函数用于获取指定推理管道中指定模型及对象的配置置信度。
  117. // *
  118. // * @param pp_name 推理管道名称
  119. // * @param model_uid 模型UID
  120. // * @param obj_name 对象名称
  121. // * @param conf 用于存储配置置信度的引用变量
  122. // * @return 返回值为整数,表示获取操作的结果:
  123. // * - 如果成功获取配置置信度,返回AIStatus::StatusCode::SUCCESS。
  124. // * - 如果推理管道名称或模型UID无效,返回AIStatus::ErrorCode::INVALID_PIPELINE_NAME 或 AIStatus::ErrorCode::INVALID_MODEL_UID。
  125. // * - 如果发生错误,返回相应的错误码,可能的错误码及其含义如下:
  126. // * - 其他可能的错误码,请参考ConfigProcessor类的GetPipelineModelConf函数的注释。
  127. // */
  128. // int get_pp_model_conf(const std::string &pp_name,
  129. // const int &model_uid,
  130. // const std::string &obj_name,
  131. // float &conf);
  132. // /**
  133. // * @brief 设置推理管道模型配置的置信度
  134. // *
  135. // * 该函数用于设置指定推理管道中指定模型及对象的配置置信度,并更新AI模型资源。
  136. // *
  137. // * 例如目前有一个pipeline名字为face_detect,其是一个级联任务,这种情况下可以通过【pp_name】和【model_uid】灵活设置每个模型的置信度。
  138. // * @image html set_pp_model_conf.png
  139. // *
  140. // * @param pp_name 推理管道名称
  141. // * @param model_uid 模型UID
  142. // * @param obj_name 对象名称
  143. // * @param conf 新的配置置信度值
  144. // * @return 返回值为整数,表示设置操作的结果:
  145. // * - 如果成功设置配置置信度,返回AIStatus::StatusCode::SUCCESS。
  146. // * - 如果推理管道名称或模型UID无效,返回AIStatus::ErrorCode::INVALID_PIPELINE_NAME 或 AIStatus::ErrorCode::INVALID_MODEL_UID。
  147. // * - 如果发生错误,返回相应的错误码,可能的错误码及其含义如下:
  148. // * - 其他可能的错误码,请参考ConfigProcessor类的SetPipelineModelConf函数的注释。
  149. // */
  150. // int set_pp_model_conf(const std::string &pp_name,
  151. // const int &model_uid,
  152. // const std::string &obj_name,
  153. // float &conf);
  154. private:
  155. bool isAsync;
  156. ConfigModule config;
  157. ResourceKit resourceKit;
  158. AsyncProcessor asyncProcessor;
  159. SyncProcessor syncProcessor;
  160. };