www.pudn.com > HC_v4.22_scn_20070821.zip > dsdemo.h
/*****/ #ifndef _DSDEMO_H_ #define _DSDEMO_H_ #include#include #include #include #include #include #include #include #include #include #include #include #include #include #include "DataType.h" #include "ds40xxsdk.h" #include "tmserverpu.h" #define WRITE_FILE #define BMPFILE #define OSDDEMO #define LOGO #define PREVIEWOPEN //#define RAWSTREAM #define YUVFILE //#define USE_PREVIEW_TIMER //#define TEST_GETORIIMAGE //#define MOTION_DEBUG // end define const int WIN_L = 0; const int WIN_T = 0; const int WIN_W = 800; const int WIN_H = 700; const int FIXSIZE = 1024 * 5/2; // per second const int TIMECONST = 60 * 8; // 8分钟 const int TIMEDAYS = 24 * 60 * 60 * 1000 - 300 ; //空出400ms来 const int RunQuest = 1024 * 1024 * 10; const int LastSpace = 1024 * 1024 * 0; //KB #define LEFTCLICKED 0 #define RIGHTCLICKED 1 # define OutputErrorString(fmt,args...) fprintf(stderr, fmt, ## args) //#define DEBUG #ifdef DEBUG # define OutputDebugString(fmt,args...) fprintf(stderr, fmt, ## args) #else # define OutputDebugString(fmt,args...) #endif struct _dsdemo { int bPreviewOpen; // 该port口是否打开 PREVIEWCONFIG previewconf; // 该port口的视频预览定义 SDL_Overlay* pOverlaySurface; // 该port口的YUV图像内存指针 pthread_t hPreviewThread; // 该port口对应的线程指针 UINT bPreviewThreadRun; // 该port口线程运行的状况 ,三种状态1,2,3?费解 sem_t previewSem; // 信号量 int cifqcif_flag; // cifqcif标志,是否双编码开始 VideoStandard_t videostandard; // 用GetVideoPara函数返回的各路的视频标准 video_info v_info; // 该路视频相关信息 video_info videoDefault; int count; // 记录生成的文件个数 int Maxcount; int countdays; //运行的天数 int fullspace_flag; //硬盘空间满的标志 int ChannelHandle; // 各个通道的句柄 file point QFile *record_fd; // mp4文件标志符 QFile *index_fd; // dat文件标志符 pthread_mutex_t major_start; // 标志主通道写开始 INDEX_NODE nodeinfo; // 用来记录I帧位置和大小,用于dat文件中 QFile *cifqcif_fd; // 标识符 pthread_mutex_t minor_start; // 标志多编码写开始 char file_head[40]; // 文件头 UCHAR filehead_flag; UCHAR cifqciffilehead_flag; char cifqciffile_head[40]; // 标志符,在这里保留 int record_flag; // 标志该路是否开始记录 int net_flag; // 网络标志 unsigned char motion_data[4 * 18]; // PktMotionFrames 长度就是72 各路motiondetect数据 int motion_flag; // 标志motion_flag是否开启 int motionSens; // 运动侦测时的灵敏度 RECT motion_rect; // 这个是全屏的时候用来设置Motiondetect RECT motion_list; // 这个是没有全屏的时候用来设置Motiondetect的 int net_head_flag; // here static, 表示net_head是否传出去了? int subchan_net_head_flag; // 双编码时候子通道的head是否传出去了 unsigned int bit_rate_size; // 记录该路速率大小 int set_bit_rate; // 用来设置bit率大小 SDL_Rect dstRect; // 记录该路尺寸的大小 /*new add*/ Frame_info frameinfo; Osd_info osdinfo; int osd_flag; Logo_info logoinfo; int logo_flag; PictureFormat_t pictureFormat; PictureFormat_t subpictureFormat; int MaxBps; BitrateControlType_t brc; int audio_flag; RECT *maskRect; int imagefile_flag; // 是否开启记录 QFile *imagefile_fd; pthread_mutex_t imagefile_fd_start; // 标志写开始 unsigned char *imageBuf; unsigned imagewidth; unsigned imageheight; }; typedef struct _dsdemo DSDEMO; class Dsclass { public: DSDEMO *dsdemo; int SignPort; Dsclass (int port, int ChannelHandle, SDL_Surface *Screen); ~Dsclass(); //void AfterInit(int ChannelHandle, SDL_Surface *Screen); int GetVideoHeight(); void SetOsddemo(); void SetDsLogo(); void SetMaxBpsMode(); void SetOsdTranslucent(unsigned short Translucent); void SetOsdBrightness(int Brightness); void SetOsdPosX(unsigned short PosX); void SetOsdPosY(unsigned short PosY); void SetLogoTranslucent(unsigned short Translucent); void SetLogoPosX(unsigned short PosX); void SetLogoPosY(unsigned short PosY); void SetEncoderByFlag(); void SetupMotion(); void DestoryMotion(); void SetdstRect(const int chan); void SetMotion(const int chan); void MotionEnable(); void SetPreview(UINT useSyncSem); void CreateThread(); void DestoryThread(); void StopPreview(); void CreateFiles(); void CreateCifQcifFiles(); void CreateImageStreamFiles(); void StartCapture(); void StartSubCapture(); void StopSubCapture(); void StopCapture(); void end_record(); void end_subrecord(); void end_imagestream(); void GetImage(); void SetBrightScale(const int brightness); void SetContrastScale(const int contrast); void SetSaturationScale(const int saturation); void SetHueScale(const int hue); void SetFrameIQuantVal(int number); void SetFrameBQuantVal(int number); void SetFramePQuantVal(int number); void SetFrameKeyFrameI(int number); void SetFrameBFrames(int number); void SetFrameFrameRate(int number); void SetMask(); void* videopreview(); private: SDL_Surface *pOverlayScreen; unsigned char *logoptr; void GetCardInfo(); }; #endif