📄 zzconnectdlg.h
字号:
// ZZConnectDlg.h : header file
//
#if !defined(AFX_ZZCONNECTDLG_H__29A7CAD1_885E_436E_B719_D0723886A794__INCLUDED_)
#define AFX_ZZCONNECTDLG_H__29A7CAD1_885E_436E_B719_D0723886A794__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#pragma pack(8)
//#define SWAP
//PACKET头
#ifndef SWAP
typedef struct tagTSHeader
{
unsigned int sync_byte:8; //同步字节
unsigned int error_indicator:1; //错误指示信息
unsigned int payload_indicator:1; //负载单元开始标志
unsigned int transport_priority:1; //传输优先级标志
unsigned int PID:13; //PID,唯一的号码对应不同的包
unsigned int scrambling:2; //2字节加密标志
unsigned int adaptation_field:2; //附加区域控制
unsigned int counter:4; //包递增计数器
}TSHeader;
#else
typedef struct tagTSHeader
{
unsigned long counter:4; //包递增计数器
unsigned long adaptation_field:2; //附加区域控制
unsigned long scrambling:2; //2字节加密标志
unsigned long PID:13; //PID,唯一的号码对应不同的包
unsigned long transport_priority:1; //传输优先级标志
unsigned long payload_indicator:1; //负载单元开始标志
unsigned long error_indicator:1; //错误指示信息
unsigned long sync_byte:8; //同步字节
}TSHeader;
#endif
//8字节,PAT前8字节
typedef struct tagPAT
{
UINT64 table_id:8; //标志本表格类型,应该是Ox00
UINT64 syntax_indacator:1; //段语法标志,应该是1
UINT64 zero:1; //固定的0
UINT64 reserved:2; //保留
UINT64 section_length:12; //段大小,单位字节
UINT64 transport_stream:16; //当前六的ID,DVB内唯一(事实上很多都是自定义的TSID)
UINT64 reserved1:2; //保留
UINT64 version_number:5; //版本号码,很有用,改变时说明TS流中节目已发生变化,必须重新搜索节目
UINT64 current_next:1; //当前还是未来使用标志,一般为0
UINT64 section_number:8; //当前段号码
UINT64 last_section_number:8; //最后段号码,section_number和last_section_number的功能是当PAT内容大于184字节时,PAT表会分成多个段(sections),解复用程序必须在全部接收完成后再进行PAT的分析
}PAT;
//PAT循环部分
typedef struct tagPATCIRCLE
{
unsigned long program_number:16; //节目号
unsigned long reserved:3; //保留
unsigned long PID:13; //节目号对应的PID
}PATCIRCLE;
//PMT列表
typedef struct tagPMTPIDITEM
{
int channel_number; //频道号
int pmt_pid; //对应channel_number频道号的PMT的PID
}PMTPIDITEM;
//PMT数据
typedef struct tagPMTDATA
{
UINT64 table_id:8; //ID,应该是Ox02
UINT64 syntax_indacator:1; //段语法标志,应该是1
UINT64 zero:1; //固定是0,如果不是说明数据有错
UINT64 reserved:2; //保留位
UINT64 section_length:12; //段大小,单位字节
UINT64 program_number:16; //频道号码,表示当前PMT关联到的频道,就是当前描述的就是program_number频道的信息
UINT64 reserved1:2; //保留
UINT64 version_number:5; //版本号码,如果PMT有更新,则此变量递增1,通知解复用程序需要更新接受节目信息,否则是固定不变的
UINT64 current_next:1; //当前未来标志符,一般是0
UINT64 section_number:8; //当前段号码
UINT64 last_section_number:8; //最后段号码,含义和PAT中的对应段相同
}PMTDATA;
//PMT数据1
typedef struct tagPMTDATA1
{
unsigned long reserved2:3; //保留
unsigned long PCR_PID:13; //解复用程序不使用该参数
unsigned long recerved:4; //保留
unsigned long program_info_length:12; //节目信息长度(N个描述符总的长度,一般忽略,单位字节)
}PMTDATA1;
//PMT数据循环
typedef struct tagPMTDATACIRCLE
{
unsigned long reserved:3;
unsigned long elemantry_pid:13;
unsigned long reserved1:4;
unsigned long es_info_length:12;
}PMTDATACIRCLE;
//视频音频的PID
typedef struct tagDATAPID
{
int type;
int pid;
}DATAPID;
#pragma pack()
int InitSms();
int InitZJ();
#include "SocketMul.h"
//#include "ReceiveManager.h"
//ReceiveManager m_receiveManager;
/////////////////////////////////////////////////////////////////////////////
// CZZConnectDlg dialog
class CZZConnectDlg : public CDialog
{
// Construction
public:
CZZConnectDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CZZConnectDlg)
enum { IDD = IDD_ZZCONNECT_DIALOG };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CZZConnectDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CZZConnectDlg)
virtual BOOL OnInitDialog();
afx_msg void OnClose();
afx_msg void OnDestroy();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
protected:
CSocketMul m_socketMul;
};
//{{AFX_INSERT_LOCATION}}
// Microsoft eMbedded Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_ZZCONNECTDLG_H__29A7CAD1_885E_436E_B719_D0723886A794__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -