📄 repid.h
字号:
/*------------------------------------------------------------------*/
/* 宏定义,用于定义各寄存器的地址 */
/*------------------------------------------------------------------*/
#define PID_REMAP_REG *(unsigned char *)0x04020B03
#define PSI_FIFO_BASE_ADDR 0x04020022
#define PSI_FRAME_END_REG_BASE_ADDR 0x04020024
/*-------------------------------------------------------------------*/
/* FIFO_FLAG_REG 的位定义: */
/* D0:1--不空,可以取一个包;0:空 */
/* D1:1--不半满 */
/* D2:1--不满,0:满 */
/*-------------------------------------------------------------------*/
#define PSI_FIFO_PACKET_END_REG_BASE_ADDR 0X04020024
#define PSI_FIFO_FLAG_REG_BASE_ADDR 0X04020025
#define PSI_FIFO_RESET_REG_BASE_ADDR 0X04020026
/*-------------------------------------------------------------------*/
/* 操作时没有先后顺序 */
/*-------------------------------------------------------------------*/
#define HIGH_INDEX_ADDR_REG_L_BASE_ADDR 0X04020003
#define HIGH_INDEX_ADDR_REG_H_BASE_ADDR 0X04020004
#define HIGH_INDEX_REG_BASE_ADDR 0X04020005
#define PID_DATA_L_REG_BASE_ADDR 0X04020006
#define PID_DATA_H_REG_BASE_ADDR 0X04020007
#define LOW_INDEX_REG_BASE_ADDR 0X04020008
#define PSI_PID_L_REG_BASE_ADDR 0X04020009
#define PSI_PID_H_REG_BASE_ADDR 0X0402000A
#define STREAM_TYPE_PMT 0x99
#define STREAM_TYPE_PCR 0xAA
#define STREAM_TYPE_EMM 0xBB
#define STREAM_TYPE_ECM 0xCC
#define DES_LENGTH 0x20
#pragma pack(1,1)
typedef struct STRUCT_TS_TAG
{
/*-------------------------------------------------*/
/* TS Packet Head(4 bytes) */
/*-------------------------------------------------*/
unsigned char Sync_byte; /* 固定为0x47*/
unsigned short Transport_err_indicator :1 ; /* = 0; 没有不可纠正错误*/
unsigned short Payload_unit_start_indicator :1 ; /* = 1; 负载中包含一个PAT首部*/
unsigned short Transport_priority :1 ; /* = 0; 普通优先级*/
unsigned short PID :13; /* = 0; 0表示PAT分组类型*/
unsigned char Transport_scambling_control :2 ; /* = 0; 0:未加密*/
unsigned char Adaption_field_control :2 ; /* = 1; 无调整字段,只有有效字段*/
unsigned char Continuity_counter :4 ;
}TS_TAG;
typedef struct STRUCT_SECTION_TAG
{
unsigned char TableID; /* PAT=0x00*/
unsigned short Section_syntax_indicator : 1 ; /* 固定,置为1*/
unsigned short Zero : 1 ; /* = 0 */
unsigned short Reserved1 : 2 ; /* */
unsigned short SectionLength : 12; /* 长度固定,取13*/
}SECTION_TAG;
typedef struct STRUCT_PAT_SECTION_TAG
{
unsigned char TableID; /* PAT=0x00*/
unsigned short Section_syntax_indicator : 1 ; /* 固定,置为1*/
unsigned short Zero : 1 ; /* = 0 */
unsigned short Reserved1 : 2 ; /* */
unsigned short SectionLength : 12; /* 长度固定,取13*/
unsigned short Transport_stream_id; /* 传送流ID,设置为0*/
unsigned char Reserved2 : 2; /* */
unsigned char Version_number : 5;
unsigned char Current_next_indicator : 1; /* = 1;本PAT当前有效*/
unsigned char Section_number;
unsigned char Last_section_number;
}PAT_SECTION_TAG;
typedef struct STRUCT_CAT_SECTION_TAG
{
unsigned char TableID; /* PAT=0x00*/
unsigned short Section_syntax_indicator : 1 ; /* 固定,置为1*/
unsigned short Zero : 1 ; /* = 0 */
unsigned short Reserved1 : 2 ; /* */
unsigned short SectionLength : 12; /* 长度固定,取13*/
unsigned short Reserved2; /* 传送流ID,设置为0*/
unsigned char Reserved3 : 2; /* */
unsigned char Version_number : 5;
unsigned char Current_next_indicator : 1; /* = 1;本CAT当前有效*/
unsigned char Section_number;
unsigned char Last_section_number;
}CAT_SECTION_TAG;
typedef struct STRUCT_PMT_SECTION_TAG
{
unsigned char TableID; /* 根据节目,调整*/
unsigned short Section_syntax_indicator: 1 ; /* 根据实际,调整*/
unsigned short Zero : 1 ; /* */
unsigned short Reserved1 : 2 ; /* */
unsigned short SectionLength : 12; /* ??????????????*/
unsigned short Program_number; /* 根据实际配置 */
unsigned char Reserved2 : 2; /* */
unsigned char Version_number : 5;
unsigned char Current_next_indicator : 1; /* 本PMT当前有效*/
unsigned char Section_number;
unsigned char Last_Section_number;
unsigned short Reserved3 : 3 ;
unsigned short PCR_PID : 13;
unsigned short Reserved4 : 4 ;
unsigned short Program_info_length : 12;
}PMT_SECTION_TAG;
/*--------------------------------------------------------------------*/
/* SDT section head definition */
/*--------------------------------------------------------------------*/
typedef struct STRUCT_SDT_SECTION_TAG
{
unsigned char TableID;
unsigned short Section_Syntax_indicator:1;
unsigned short Reserved_future_use1 :1;
unsigned short Reserved1 :2;
unsigned short Section_Length :12;
unsigned short Transport_stream_id;
unsigned char Reserved2 :2;
unsigned char Version_number :5;
unsigned char Current_next_indicator :1;
unsigned char Section_number;
unsigned char Last_section_number;
unsigned short Original_network_id;
unsigned char Reserved_future_use2;
}SDT_SECTION_TAG;
typedef struct STRUCT_SDT_ELEMENT_TAG
{
unsigned short Service_id;
unsigned char REE;
unsigned short Running_status :3;
unsigned short Free_CA_mode :1;
unsigned short Descriptors_loop_length :12;
}SDT_ELEMENT_TAG;
typedef struct STRUCT_CA_DESCRIPTOR_TAG
{
unsigned char Descriptor_tag;
unsigned char Descriptor_length;
unsigned short CA_system_ID;
unsigned short Reserved: 3;
unsigned short CA_PID: 13;
}CA_DESCRIPTOR_TAG;
typedef struct STRUCT_SERVICE_DESCRIPTOR_TAG
{
unsigned char Descriptor_tag;
unsigned char Descriptor_length;
unsigned char Service_type;
unsigned char Service_provider_name_length;
}SERVICE_DESCRIPTOR_TAG;
/*----------------------------------------------------------------*/
/* That is all for the definition of SDT */
/*----------------------------------------------------------------*/
typedef struct STRUCT_ES_INFO_TAG
{
unsigned char Stream_type;
unsigned short Reserved5 : 3 ;
unsigned short Elelmentary_PID : 13;
unsigned short Reserved6 : 4 ;
unsigned short ES_info_length : 12;
}ES_INFO_Tag;
typedef struct STRUCT_PSI_SECTION
{
unsigned short PID;
unsigned char Section[1100];
unsigned short AssembleLength;
unsigned short SectionLength;
}PSI_SECTION;
typedef struct STRUCT_PAT_SECTION
{
unsigned char *PAT_Section;
unsigned short Section_Length;
}PAT_SECTION;
typedef struct STRUCT_CAT_SECTION
{
unsigned char *CAT_Section;
unsigned short Section_Length;
}CAT_SECTION;
typedef struct STRUCT_PMT_SECTION
{
unsigned char *PMT_Section;
unsigned short Section_Length;
unsigned short PMT_PID;
}PMT_SECTION;
typedef struct STRUCT_PID_MAP
{
unsigned short OldPrgNo;
unsigned short NewPrgNo;
unsigned short SetPrgNo;
unsigned char StreamType;
unsigned short OldPID;
unsigned short NewPID;
unsigned short SetPID;
unsigned char ucRmvScramble;
}PID_MAP;
typedef struct STRUCT_CMD_ITEM
{
unsigned long ItemLength;
unsigned char PortNo;
unsigned short OldPrgNo;
unsigned short NewPrgNo;
unsigned char StreamType;
unsigned short OldPID;
unsigned short NewPID;
unsigned char OriginProviderLength;
unsigned char OriginDescriptionLength;
unsigned char CurrentProviderLength;
unsigned char CurrentDescriptionLength;
unsigned char IsMuled;
}CMD_ITEM;
typedef struct STRUCT_CMD_ITEM_PANEL
{
unsigned char PortNo;
unsigned short OldPrgNo;
unsigned short NewPrgNo;
unsigned char ServiceType;
unsigned char Desc[16];
unsigned char IsMuled;
}CMD_ITEM_PANEL;
/*------------------------------------------------------------------*/
/* 全局变量,用于保存PAT,PMT和再映射的信息 */
/*------------------------------------------------------------------*/
typedef struct PortPID
{
PAT_SECTION PAT;
CAT_SECTION CAT; /* 2001/8/1 加入,为了完成加密节目的传输 */
PMT_SECTION PMT[32];
unsigned char PMTs;
PID_MAP PID_Map[256];
unsigned char PIDs;
}PID_INFO;
/*----------------------------------------------------------------------------------------*/
/* FOR SDT */
/*----------------------------------------------------------------------------------------*/
typedef struct STRUCT_SDT_Section
{
unsigned short SectionLength;
unsigned char *Section;
}SDT_Section;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -