📄 tspack.h
字号:
/***********************************************************************/
/* */
/* MODULE: Coder/apps/Tspack/Tspack.h */
/* PURPOSE: Code for TS packing head file in coder application. */
/* AHTHOR: Xiuyan */
/* DATE: 2000/09/11 */
/* */
/*---------------------------------------------------------------------*/
/* */
/* Copyright 1991 - 1998, GaoYang-DiWei, Inc. */
/* ALL RIGHTS RESERVED */
/* */
/* Permission is hereby granted to licensees of GaoYang-DiWei, */
/* Inc. products to use or abstract this computer program for the */
/* sole purpose of implementing a product based on Integrated */
/* Systems, Inc. products. No other rights to reproduce, use, */
/* or disseminate this computer program, whether in part or in */
/* whole, are granted. */
/* */
/* GaoYang-DiWei, Inc. makes no representation or warranties */
/* with respect to the performance of this computer program, and */
/* specifically disclaims any responsibility for any damages, */
/* special or consequential, connected with the use of this program. */
/* */
/*---------------------------------------------------------------------*/
/* */
/* */
/* */
/***********************************************************************/
#ifndef _TSPACK_H_
#define _TSPACK_H_
#pragma pack(1,1)
/***********************************************************************/
/* */
/* 1.传输流分组结构: 节目关联表PAT(Program Associate Table) */
/* */
/***********************************************************************/
#if 0
typedef struct ProgramAssociateTableTag{
/*-------------------------------------------------*/
/* 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 ;
/*-------------------------------------------------*/
/* Pointer field(2 bytes) */
/*-------------------------------------------------*/
unsigned char Pointer_field ; /* = 1 指针域 */
unsigned char Blank ; /* = 0 空闲字节*/
/*-------------------------------------------------*/
/* PAT Data(8 Byte) */
/*-------------------------------------------------*/
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;
unsigned char Data[174];
} TSPAT_T; /* OK*/
#endif
typedef struct ProgramAssociateTableTag{
/*-------------------------------------------------*/
/* 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 ;
/*-------------------------------------------------*/
/* Pointer field(2 bytes) */
/*-------------------------------------------------*/
unsigned char Pointer_field ; /* = 1 指针域 */
unsigned char Blank ; /* = 0 空闲字节*/
/*-------------------------------------------------*/
/* PAT Data(12+4Byte) */
/*-------------------------------------------------*/
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;
unsigned short Program_number;
unsigned short Reserved3 : 3; /* */
unsigned short Program_map_PID : 13;
unsigned long CRC_32;
/*-------------------------------------------------*/
/* Padding bytes(166). */
/*-------------------------------------------------*/
unsigned char Data[166];
} TSPAT_T; /* OK*/
/***********************************************************************/
/* */
/* 2.传输流分组结构: 节目映射表PMT (Program Map Table) */
/* */
/***********************************************************************/
typedef struct ProgramMapTableTag{
/*-------------------------------------------------*/
/* TS Packet Head(4 bytes) */
/*-------------------------------------------------*/
unsigned char Sync_byte; /* 固定为0x47*/
unsigned short Transport_err_indicator : 1 ; /* 没有不可纠正错误*/
unsigned short Payload_unit_start_indicator : 1 ; /* 对于PSI负载,存在一个分组头*/
unsigned short Transport_priority : 1 ; /* 普通优先级*/
unsigned short PID : 13; /* 根据网管配置设定*/
unsigned char Transport_scambling_control : 2 ; /* 0:未加密*/
unsigned char Adaption_field_control : 2 ; /* 对于非PCR:0x01 无调整字段,只有有效字段*/
/* 对于PCR: 0x10 含调整字段,无有效字段 */
unsigned char Continuity_counter : 4 ;
/*-------------------------------------------------*/
/* Pointer field(2 bytes) */
/*-------------------------------------------------*/
unsigned char Pointer_field; /* 指针域 */
unsigned char Blank; /* 空闲字节*/
/*-------------------------------------------------*/
/* PMT Data(41Byte) */
/*-------------------------------------------------*/
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;
struct {
unsigned char Stream_type;
unsigned short Reserved5 : 3 ;
unsigned short Elelmentary_PID : 13;
unsigned short Reserved6 : 4 ;
unsigned short ES_info_length : 12;
} Pmt[5];
unsigned long CRC_32;
/*-------------------------------------------------*/
/* Fadding byte(141byte) */
/*-------------------------------------------------*/
unsigned char Padding[141];
} TSPMT_T;
/***********************************************************************/
/* */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -