📄 mddemo.h
字号:
#ifndef _MDDEMO_H_
#define _MDDEMO_H_
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <qthread.h>
#include <qfile.h>
#include <sys/vfs.h>
#include <time.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>
#include <string.h>
#include <fcntl.h>
#include <semaphore.h>
#include <errno.h>
#include <pthread.h>
#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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -