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

📄 tidtv_psip.h

📁 ti的数字电视芯片 tvp9000的源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*******************************************************************************
*	@ModuleName	:: TiDTV_PSIP.h
*	
*	@Copyright	:: Copyright 2005- Texas Instruments, Inc.
*	
*	@Description:: Definitions for PSIP Parser
*	
*	@History	::
*---------------------------------------
*	05-07-2005	W.Shi	Created
*******************************************************************************/

#ifndef	_TI_DTV_PSIP_H_
#define	_TI_DTV_PSIP_H_

//==========================================================
#define TI_DTV_PSIP_TABLE_BUF_SIZE		(1024 * 48)		// PSIP Table data buffer byte size
#define	TI_DTV_MAX_PSIP_SECT_SIZE		1024			// maximum Byte size of PISP Section: was 1280
#define	TI_DTV_MAX_NUM_PSIP_DATA_BLK	(TI_DTV_PSIP_TABLE_BUF_SIZE / TI_DTV_MAX_PSIP_SECT_SIZE)

typedef struct _TI_DTV_PSIP_CTRL_ {
	OS_EVENT *pCountSem;			// Counting Semaphore
	
	UINT16	Status;					// PSIP Status
	UINT8	RfChanNo;				// Current DTV Physical Channel Number (6MHz): [2 - 69]
	UINT8	PatVerNo;				// PAT Version Number
	UINT8	MgtVerNo;				// MGT Version Number
	UINT8	TvctVerNo;				// TVCT Version Number
	UINT8	RrtVerNo;				// RRT Version Number
	UINT8	ChanEttVerNo;			// V-Channel ETT Version Number
	
	UINT8	EitVerNo[TI_DTV_MAX_NUM_EPG_SLOT];	// EIT0 - EIT3 Version Number
	UINT16	EitPID[TI_DTV_MAX_NUM_EPG_SLOT];	// EIT0 - EIT3 PID
	UINT8	EttVerNo[TI_DTV_MAX_NUM_EPG_SLOT];	// ETT0 - ETT3 Version Number
	UINT16	EttPID[TI_DTV_MAX_NUM_EPG_SLOT];	// ETT0 - ETT3 PID
	
	INT8	TotalNumPmtHwFilter;	// Total number of PMT H/W filters in use
	
	UINT8	ReadPtr;				// Read pointer of the Ring Buffer
	UINT8	WritePtr;				// Write pointer of the Ring Buffer
	void	*pDataBlk[TI_DTV_MAX_NUM_PSIP_DATA_BLK];
} TI_DTV_PSIP_CTRL;

#define	TI_DTV_PAT_DATA_READY		0x0001			
#define	TI_DTV_PMT_DATA_READY		0x0002

#define	TI_DTV_PSIP_DATA_UPDATE		0x8000		// the flag for Enabling Data Update

#define	TI_DTV_MGT_DATA_READY		0x0004
#define	TI_DTV_TVCT_DATA_READY		0x0008
#define	TI_DTV_RRT_DATA_READY		0x0010
#define	TI_DTV_STT_DATA_READY		0x0020

#define	TI_DTV_ETT_DATA_READY		0x0040		// V-Channel ETT data received

#define	TI_DTV_EIT0_DATA_READY		0x0080
#define	TI_DTV_EIT1_DATA_READY		(0x0080 << 1)
#define	TI_DTV_EIT2_DATA_READY		(0x0080 << 2)
#define	TI_DTV_EIT3_DATA_READY		(0x0080 << 3)

#define	TI_DTV_ETT0_DATA_READY		(0x0080 << 4)
#define	TI_DTV_ETT1_DATA_READY		(0x0080 << 5)
#define	TI_DTV_ETT2_DATA_READY		(0x0080 << 6)
#define	TI_DTV_ETT3_DATA_READY		(0x0080 << 7)

//==========================================================
// Table 2-26 -- Program association section
//
typedef struct _TI_DTV_ISO_PAT_ {
	UINT8	TableID;
	
	union {
		UINT16	Data;
		
		struct {
			UINT	SectSyntaxID:	1;
			UINT	PrivateID:		1;
			UINT	Reserved:		2;
			UINT	SectLength:		12;
		} Bits;
	} Var1;
	
	UINT16	TsID;							// Transport Stream ID (TS-ID)
	
	union {
		UINT8	Data;
		
		struct {
			UINT	Reserved:		2;
			UINT	VersionNo:		5;
			UINT	CurNextID:		1;
		} Bits;
	} Var2;
	
	UINT8	SectNo;
	UINT8	LastSectNo;
	UINT32	CRC32;
} TI_DTV_ISO_PAT;

//--------------------------------------
typedef struct _TI_DTV_ISO_PAT_DATA_ {
	UINT16	ProgramNo;						// Program Number: 0 = Network PID (optional)
	
	union {
		UINT16	Data;
		
		struct {
			UINT	Reserved:		3;
			UINT	PID:			13;		// Network/Program Map PID (LSB 13 bits)
		} Bits;
	} Var;
} TI_DTV_ISO_PAT_DATA;

//----------------------------------------------------------
// Table 2-29 -- Transport Stream program map section
//
typedef struct _TI_DTV_ISO_PMT_ {
	UINT8	TableID;
	
	union {
		UINT16	Data;
		
		struct {
			UINT	SectSyntaxID:	1;
			UINT	PrivateID:		1;
			UINT	Reserved:		2;
			UINT	SectLength:		12;
		} Bits;
	} Var1;
	
	UINT16	ProgramNo;						// Program Number
	
	union {
		UINT8	Data;
		
		struct {
			UINT	Reserved:		2;
			UINT	VersionNo:		5;
			UINT	CurNextID:		1;
		} Bits;
	} Var2;
	
	UINT8	SectNo;
	UINT8	LastSectNo;
	
	union {
		UINT16	Data;
		
		struct {
			UINT	Reserved:		3;
			UINT	PcrPID:			13;		// Program Clock Reference PID
		} Bits;
	} Var3;
	
	union {
		UINT16	Data;
		
		struct {
			UINT	Reserved:		4;
			UINT	ProgInfLength:	12;		// Program Information Length
		} Bits;
	} Var4;
	
	UINT32	CRC32;
	UCHAR	*pDescriptors;					// pointer to the Descriptors
} TI_DTV_ISO_PMT;

//----------------------------------------------------------
// Table 2-36 -- Stream type assignments
//
#define	TI_DTV_STREAM_TYPE_MPEG_1_VIDEO		0x01	// ISO/IEC 11172 Video
#define	TI_DTV_STREAM_TYPE_MPEG_2_VIDEO		0x02	// ITU-T Rec. H.262: MPEG-2 Video
#define	TI_DTV_STREAM_TYPE_MPEG_1_AUDIO		0x03	// ISO/IEC 11172 Audio
#define	TI_DTV_STREAM_TYPE_MPEG_2_AUDIO		0x04	// ISO/IEC 13818-3 Audio
#define	TI_DTV_STREAM_TYPE_ATSC_A53_AUDIO	0x81	// User Private: ATSC A53 Audio (AC-3)

//----------------------------------------------------------
// Table 2-40 -- Program and program element descriptors
//
// Table 6.25a of PSIP - A/65B, and Table 6.1 0f ANSI/SCTE 65 2002
//
#define	TI_DTV_DESC_TAG_ISO_639_LANGUAGE	0x0a
#define	TI_DTV_DESC_TAG_STUFFING			0x80
#define	TI_DTV_DESC_TAG_AC3_AUDIO			0x81
#define	TI_DTV_DESC_TAG_CAPTION_SERVICE		0x86
#define	TI_DTV_DESC_TAG_CONTENT_ADVISORY	0x87
#define	TI_DTV_DESC_TAG_ATSC_COND_ACCESS	0x88
#define	TI_DTV_DESC_TAG_REVISION_DETECT		0x93
#define	TI_DTV_DESC_TAG_EXT_CHAN_NAME		0xa0
#define	TI_DTV_DESC_TAG_SERVICE_LOCATION	0xa1
#define	TI_DTV_DESC_TAG_TIME_SHIFTED_SERV	0xa2
#define	TI_DTV_DESC_TAG_COMPONENT_NAME		0xa3

typedef struct _TI_DTV_ISO_PMT_DATA_ {
	UINT8	StreamType;						// Stream Type
	
	union {
		UINT16	Data;
		
		struct {
			UINT	Reserved:		3;
			UINT	EsPID:			13;		// Elementary Steam PID
		} Bits;
	} Var1;
	
	union {
		UINT16	Data;
		
		struct {
			UINT	Reserved:		4;
			UINT	EsInfLength:	12;		// Elementary Stream (ES) Info Length
		} Bits;
	} Var2;
	
	UCHAR	*pDescriptors;					// pointer to the Descriptors
} TI_DTV_ISO_PMT_DATA;

//==========================================================
// maximum number of Programs including Video and Audio only Programs per PHY Channel
//
#define	TI_DTV_MAX_NUM_PROGRAM			30

// maximum number of Audio Channels in one Program
#define TI_DTV_MAX_NUM_V_AUDIO_CHAN		5

typedef struct _TI_DTV_AUDIO_PROG_DEF_ {	// Audio Program Definition
	UINT16	PID;							// Audio PID
	UCHAR	LanguageCode[4];				// ISO_639_language_code (24 bits)
} TI_DTV_AUDIO_PROG_DEF;

typedef struct _TI_DTV_PROGRAM_DEF_ {		// Program Definition: A/V PIDs etc.
	UINT16	ProgramNo;						// Program Number
	UINT16	PcrPID;							// Program Clock Reference PID
	UINT16	VideoPID;						// Video PID
	
	UCHAR	ShortName[8];					// The name of the virtual channel (Program)
	UINT16  SourceID;						// Source ID
	UINT16	MajorChanNo;					// Major Channel Number: [1 - 99]
	UINT16	MinorChanNo;					// Minor Channel Number: [0 - 999]
	
	UINT8	NumAudioChan;					// Number of Audio Channels
	TI_DTV_AUDIO_PROG_DEF AudioDef[TI_DTV_MAX_NUM_V_AUDIO_CHAN];
} TI_DTV_PROGRAM_DEF;

typedef struct _TI_DTV_PROGRAM_TABLE_ {		// Program Table for current PHY Channel (6MHz)
	UINT8	RfChanNo;						// Physical TV Channel number
	UINT8	TotalNumProg;					// Total number of Programs
	UINT16	ChanTsID;						// Channel Transport Stream ID (TS-ID)
	UINT16	MajorChanNo;					// Major Channel Number: [1 - 99]
	TI_DTV_PROGRAM_DEF	ProgDef[TI_DTV_MAX_NUM_PROGRAM];	// Program Definitions
} TI_DTV_PROGRAM_TABLE;

//==========================================================
// Generic Table Format Used in PSIP (p.15, Table 4.1)
//
typedef struct _TI_DTV_PSIP_TABLE_ {
	UINT8	TableID;
	
	union {
		UINT16	Data;
		
		struct {
			UINT	SectSyntaxID:	1;
			UINT	PrivateID:		1;
			UINT	Reserved:		2;
			UINT	SectLength:		12;
		} Bits;
	} Var1;
	
	UINT16	TableIdExt;
	
	union {
		UINT8	Data;
		
		struct {
			UINT	Reserved:		2;
			UINT	VersionNo:		5;
			UINT	CurNextID:		1;
		} Bits;
	} Var2;
	
	UINT8	SectNo;
	UINT8	LastSectNo;
	UINT8	ProtocolVersion;
	

⌨️ 快捷键说明

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