?? tidtv_psip.h
字號:
/*******************************************************************************
* @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 + -