⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsdemo.h

📁 海康威视视频采集卡linux开发包4.22版
💻 H
字号:
/*****/#ifndef _DSDEMO_H_#define _DSDEMO_H_#include <stdio.h>#include <stdlib.h>#include <SDL/SDL.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 <qfile.h>#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 defineconst 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 secondconst 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...)#endifstruct _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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -