ObjCls.h 2.2 KB
#include "VPTProcess.h"// detector
#include "utools.h"
#include "proto.h"
#include <queue>

#include "sort/Sort.h" //tracker
#include "MD5/mID.h"
//#define MULTICHANNEL 20	//֧�ֵ����·��
#define THRESHOLD 0.5

//struct objDetector{
//    void* detector;
//    //Sort tracker[MULTICHANNEL];
//    VPTProcess_PARAM param;
//    int channels;//ֵΪopencv��CV_8UC1 ���� CV_8UC3
//};

struct TaskTracker
{
    int TaskID;
    double ratioWidth;
    double ratioHeight;
    Sort tracker;
    unsigned int lastFrameIndex;
};
vector<TaskTracker> taskTrackers;


class CMemoryRecord
{
    public:
        unsigned char * ptr;
        CMemoryRecord(int w,int h)
        {
            cudaMalloc((void **) & ptr, w*h*3*sizeof(unsigned char));
        }
        virtual ~CMemoryRecord(){
            cudaFree(ptr);
            ptr=NULL;
        }

};
#if 0
class CMemoryPool
{
    public:
        int m_w,m_h;
        std::queue<CMemoryRecord*> filled_records;
        std::queue<CMemoryRecord*> unfilled_records;
        CMemoryPool(int w,int h,int num)
        {
                m_w = w;m_h=h;
            for(int i=0;i<num;i++)         
            {
                CMemoryRecord * ptr= new CMemoryRecord(w,h);
                unfilled_records.push_back(ptr);
            }
        }

        sy_img  GetSyImg()
        {
                sy_img record;
                CMemoryRecord * ptr = unfilled_records.front();
                record.set_data(w,h, ptr->ptr);
                unfilled_records.pop();
                filled_records.push(ptr);
                return record;
        }


        virtual ~CMemoryPool()
        {
            for(int i=0;i<filled_records.size();i++)         
            {
                CMemoryRecord * ptr=filled_records[i ];
                delete [] ptr;
                std::queue<CMemoryRecord*>().swap( filled_records );

            }
            for(int i=0;i<filled_records.size();i++)         
            {
                CMemoryRecord * ptr=filled_records[i ];
                delete [] ptr;
                std::queue<CMemoryRecord*>().swap( filled_records );
            }
        }
};
#endif