add task manger support for Autozoom 87/310587/12
authorInki Dae <inki.dae@samsung.com>
Thu, 2 May 2024 07:28:13 +0000 (16:28 +0900)
committerInki Dae <inki.dae@samsung.com>
Wed, 8 May 2024 09:29:22 +0000 (18:29 +0900)
Change-Id: I1b9d70d5fae439122c95c84b78728282ca10a307
Signed-off-by: Inki Dae <inki.dae@samsung.com>
services/auto_zoom/include/AutoZoom.h
services/auto_zoom/src/AutoZoom.cpp

index cd65836409d0c41cc7105592eaad1207bef5ea1e..c75d83b58c3778b10e258874e20898cba1cdb404 100644 (file)
@@ -19,7 +19,6 @@
 
 #include "IService.h"
 #include "SingleoCommonTypes.h"
-#include "IInferenceServiceInterface.h"
 #include "SingleoInputManager.h"
 #include "IInputService.h"
 #include "SingleoInferenceTypes.h"
@@ -28,6 +27,7 @@
 #include "DataTypes.h"
 #include "AsyncManager.h"
 #include "IPostprocessor.h"
+#include "TaskManager.h"
 
 namespace singleo
 {
@@ -38,7 +38,7 @@ namespace autozoom
 class AutoZoom : public IService
 {
 private:
-       std::unique_ptr<singleo::inference::IInferenceServiceInterface> _inference_service;
+       std::unique_ptr<TaskManager> _taskManager;
        std::unique_ptr<singleo::input::IInputService> _input_service;
        std::unique_ptr<IPostprocessor> _postprocessor;
        SingleoInputManager _input_image_data;
@@ -82,14 +82,15 @@ public:
                return _async_manager;
        }
 
-       std::unique_ptr<singleo::inference::IInferenceServiceInterface> &getInferenceService()
-       {
-               return _inference_service;
-       }
        std::unique_ptr<IPostprocessor> &getPostprocessor()
        {
                return _postprocessor;
        }
+
+       std::unique_ptr<TaskManager> &getTaskManager()
+       {
+               return _taskManager;
+       }
 };
 
 } // autozoom
index d9575b57ad2ba470b5c4a4ef30bd4038d4163ffb..0c5d6a1fc12f9cf058d8feffd9f838ddf0a0b44a 100644 (file)
@@ -17,7 +17,6 @@
 #include <algorithm>
 #include "SingleoException.h"
 #include "AutoZoom.h"
-#include "IInferenceServiceFactory.h"
 #include "InferenceServiceFactory.h"
 #include "SingleoLog.h"
 #include "ImagePreprocessor.h"
@@ -25,6 +24,7 @@
 #include "InputCamera.h"
 #include "InputTypes.h"
 #include "Postprocessor.h"
+#include "InferenceNode.h"
 
 using namespace std;
 using namespace singleo::inference;
@@ -44,8 +44,12 @@ AutoZoom::AutoZoom(InputConfigBase &config)
        // In default, we will use Inference service factory for Mediavision to use Mediavision framework
        // for inference service. TODO. introduce meta config file approach later.
        auto factory = InferenceServiceFactory::instance().create("MvInferenceServiceFactory");
+       auto face_detection_node = make_shared<InferenceNode>();
 
-       _inference_service = factory->createFaceDetection();
+       face_detection_node->setName("face_detection");
+       face_detection_node->setInferenceService(factory->createFaceDetection());
+       _taskManager = make_unique<TaskManager>();
+       _taskManager->addNode(face_detection_node);
 
        // Create InputCamera service if input service type is CAMERA.
        if (config._input_feed_type == InputFeedType::CAMERA) {
@@ -65,8 +69,6 @@ AutoZoom::AutoZoom(InputConfigBase &config)
                SINGLEO_LOGD("Camera input service has been initialized.");
        }
 
-       _inference_service->configure();
-       _inference_service->prepare();
        _postprocessor = make_unique<Postprocessor>();
 }
 
@@ -146,7 +148,8 @@ void AutoZoom::perform()
                auto data = dynamic_pointer_cast<FileDataType>(result);
 
                preprocessor.update(*data);
-               _inference_service->invoke(preprocessor.getData());
+               _taskManager->addInput(preprocessor.getData());
+               _taskManager->run();
                updateResult(preprocessor.getData());
                return;
        } else {
@@ -156,7 +159,8 @@ void AutoZoom::perform()
                preprocessor.update(input_data);
        }
 
-       _inference_service->invoke(preprocessor.getData());
+       _taskManager->addInput(preprocessor.getData());
+       _taskManager->run();
        updateResult(preprocessor.getData());
 }
 
@@ -174,7 +178,8 @@ void AutoZoom::performAsync()
        _async_manager->registerInvokeCb(this, [this](IService *service, BaseDataType &data) {
                auto auto_zoom = static_cast<AutoZoom *>(service);
 
-               auto_zoom->getInferenceService()->invoke(data);
+               auto_zoom->getTaskManager()->addInput(data);
+               auto_zoom->getTaskManager()->run();
                auto_zoom->updateResult(data);
 
                // This buffer was allocated and copied in inputServiceCb callback.
@@ -187,7 +192,7 @@ void AutoZoom::performAsync()
 
 void AutoZoom::updateResult(BaseDataType &in_data)
 {
-       auto &output_data = _inference_service->result();
+       auto &output_data = _taskManager->output();
 
        if (output_data._type != ResultType::OBJECT_DETECTION && output_data._type != ResultType::FACE_DETECTION)
                throw InvalidParameter("Invalid result type");