📄 videoiomgr.h
字号:
// VideoIOMgr.h: interface for the CVideoIOMgr class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_VIDEOIOMGR_H__7115876F_0FDF_4638_BC93_AB96F0662C1A__INCLUDED_)
#define AFX_VIDEOIOMGR_H__7115876F_0FDF_4638_BC93_AB96F0662C1A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "MonClientDlg.h"
//通信端口定义
#define PORT_SOCKET_CLIENT 6801
#define PORT_SOCKET_SERVER 6800
#define SIZE_VIDEO_PACKED 1500
#define SIZE_VIDEO_BUFFER (SIZE_VIDEO_PACKED*300) //300KB
#define SIZE_BUFFER_NUM 2 //2
//pack flag
#define FLAG_AUDIO 0x3131
#define FLAG_VIDEO 0x3132
#define FLAG_CMD 0x3133
#define FLAG_AUDIOACK 0x3134
#define FLAG_VIDEOACK 0x3135
//视频数据包(含视频数据)
typedef struct
{
short flag; //报类别
BYTE id; //该图像帧的序号 (1-255) (0表示空帧)
BYTE subid; //该报在图像帧中的序号(0-255)
unsigned int data_size_total; //分报前图像大小
unsigned short data_size; //该报数据大小
unsigned short align;
BYTE data[SIZE_VIDEO_PACKED]; //分报后图像数据
}AVIO_VIDEO;
//本地视频缓冲区
typedef struct
{
BYTE id; //该图像帧的序号 (1-255) (0表示空帧)
unsigned int data_size_total; //图像帧大小
unsigned short data_size; //当前接收到的图像大小
BYTE data[SIZE_VIDEO_BUFFER]; //分报后图像数据
}AVIO_VIDEO_BUFFER;
//确认报
typedef struct
{
short flag;
BYTE id;
}AVIO_ACK;
class CVideoIOMgr
{
public:
static CVideoIOMgr* getInstance();
static void releaseInstance();
virtual ~CVideoIOMgr();
void SetShowDlg(CMonClientDlg* pDlg);
//接受数据
void InputVideoPack(AVIO_VIDEO* pVPack);
protected:
static CVideoIOMgr* m_pInstance;
CVideoIOMgr();
private:
//根据接受到的报ID得到当前的可用帧缓冲区ID
int GetReadyBuf(BYTE rcvid);
//利用双缓存技术对付当前的数据帧丢失现象
AVIO_VIDEO_BUFFER m_VBuff[SIZE_BUFFER_NUM];
CMonClientDlg* m_pDlg;
//网络通信部分
private:
CSocket* m_pSocket;
BYTE m_IPArr[4];
USHORT m_iport;
public:
void Test();
void InitSocket(BYTE* IPArr,USHORT iport);
void RcvSocketData();
};
#endif // !defined(AFX_VIDEOIOMGR_H__7115876F_0FDF_4638_BC93_AB96F0662C1A__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -