www.pudn.com > HC_v4.22_scn_20070821.zip > mddemo.h
#ifndef _MDDEMO_H_ #define _MDDEMO_H_ #include#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "DataType.h" #include "ds40xxsdk.h" #include "tmclientpu.h" #define WRITE_FILE #define BMPFILE #define OSDDEMO #define LOGO #define PREVIEWOPEN #define YUVFILE const int WIN_L = 0; const int WIN_T = 0; const int WIN_W = 800; const int WIN_H = 700; const int address[4] = {192, 0, 1, 63}; //#define RAWSTREAM #define NODECODE 0 #define DECODEFILE 1 #define DECODESTREAM 2 //#define DEBUG_OUT #define OutputErrorString(fmt,args...) fprintf(stderr, fmt, ## args) #ifdef DEBUG_OUT #define OutputDebugString(fmt,args...) fprintf(stderr, fmt, ## args) #else #define OutputDebugString(fmt,args...) #endif typedef SDL_Overlay* PSDL_Overlay; class QPlayOverThread; class QDisplayThread; struct _mddemo { int SignPort; int bDisplayOpen; // 该port口是否打开 pthread_mutex_t DisplayPrepare; // 这个标志是为了判断display线程是否已经退出显示 int playType; // NULL or file or stream PREVIEWCONFIG displayconf; // 该port口的视频预览定义 PSDL_Overlay pOverlaySurface; // 该port口的YUV图像内存指针 PSDL_Overlay pOverLay[5]; int OverLayPrepare; QPlayOverThread *playThread; QDisplayThread *displayThread; UINT bDisplayThreadRun; // 该port口线程运行的状况 sem_t displaySem; // 信号量 sem_t FileEndSem; sem_t beginSem; sem_t changesem; int ChannelHandle; // 各个通道的句柄 file point SDL_Rect dstRect; // 记录该路尺寸的大小 pthread_mutex_t OverDisplay; //下传码流控制锁定 int clienthandle; unsigned long datasum; int serverchan; char serverip[16]; char filename[100]; //QFile *mdfile; }; typedef struct _mddemo MDDEMO; class QPlayOverThread : public QThread { public: QPlayOverThread(MDDEMO *demo); virtual void run(); private: MDDEMO *mdOver; }; class QDisplayThread : public QThread { public: QDisplayThread(MDDEMO *demo, SDL_Surface *display); virtual void run(); private: MDDEMO *mdPlay; SDL_Surface *pOverlayScreen; }; class Dsclass { public: Dsclass (int port, int ChannelHandle, SDL_Surface *Screen); ~Dsclass(); MDDEMO *mddemo; bool IsPlayOver(); void StartFilePlay(); void StartStreamPlay(char* pFileHead,int nHeadSize); void StopPlay(); void startDisplay(); void stopDisplay(); void startDisplayThread(); void stopDisplayThread(); void stopPlayOverThread(); void SetdstRect(const int chan); private: SDL_Surface *pOverlayScreen; }; #endif