//后处理引擎
#ifndef _POST_PROCESS_ENGINE_H
#define _POST_PROCESS_ENGINE_H

#include <iostream>
#include <chrono>
#include <cmath>
#include <utility>
#include <thread>
#include <chrono>
#include <functional>
#include <atomic>
#include <time.h>
#include <sys/time.h>
#include <unistd.h>
#include <queue>
#include <mutex>
#include <semaphore.h>
#include <algorithm>
#include <string>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <vector>
#include <memory>

#include "EngineBase.h"
#include "EngineFactory.h"
#include "MyYaml.h"
#include "myutils.h"
#include "AppCommon.h"

#include "cuda_utils.h"
#include "logging.h"
#include "yolov5_common.h"
#include "utils.h"
#include "calibrator.h"
#include "preprocess.h"

class PostProcessEngine : public ai_matrix::EngineBase
{
public:
    PostProcessEngine();
    ~PostProcessEngine();


    APP_ERROR Init() override;
    APP_ERROR DeInit() override;
    APP_ERROR Process() override;


private:
    std::string strPort0_, strPort1_;

    unsigned int width_, height_;

    const int OUTPUT_SIZE = Yolo::MAX_OUTPUT_BBOX_COUNT * sizeof(Yolo::Detection) / sizeof(float) + 1; 
};


ENGINE_REGIST(PostProcessEngine)
#endif
