📄 tidtv_psip.h
字号:
UINT32 CRC32;
} TI_DTV_PSIP_TABLE;
//----------------------------------------------------------
// Table ID Ranges and Values (p.16, Table 4.2)
//
#define TI_DTV_PID_PAT 0x0000 // Program Association Table (PAT) Packet ID
#define TI_DTV_PID_CAT 0x0001 // Conditional Access Table (CAT) Packet ID
#define TI_DTV_PID_PSIP_BASE 0x1FFB // Program and System Information Protocol (PSIP) base Packet ID
#define TI_DTV_ISO_TABLE_ID_PAT 0x00 // Program Association Table (PAT) ID
#define TI_DTV_ISO_TABLE_ID_CAT 0x01 // Conditional Access Table (CAT) ID
#define TI_DTV_ISO_TABLE_ID_PMT 0x02 // TS Program Map Table (PMT) ID
#define TI_DTV_PSIP_TABLE_ID_MGT 0xC7 // Master Guide Table (MGT) ID
#define TI_DTV_PSIP_TABLE_ID_TVCT 0xC8 // Terrestrial Virtual Channel Table (TVCT) ID
#define TI_DTV_PSIP_TABLE_ID_CVCT 0xC9 // Cable Virtual Channel Table (CVCT) ID
#define TI_DTV_PSIP_TABLE_ID_RRT 0xCA // Rating Region Table (RRT) ID
#define TI_DTV_PSIP_TABLE_ID_EIT 0xCB // Event Information Table (EIT) ID
#define TI_DTV_PSIP_TABLE_ID_ETT 0xCC // Extended Text Table (ETT) ID
#define TI_DTV_PSIP_TABLE_ID_STT 0xCD // System Time Table (STT) ID
#define TI_DTV_PSIP_TABLE_ID_ANY 0xFF // Invalid ID
//----------------------------------------------------------
// Bit Stream Syntax for the System Time Table (p.22, Table 6.1)
//
typedef struct _TI_DTV_PSIP_STT_DATA_ {
UINT32 SystemTime; // System time: GPS seconds since 00:00:00 Jan. 6, 1980
UINT8 GpsUtcOffset;
union {
UINT16 Data;
struct {
UINT Status: 1;
UINT Reserved: 2;
UINT DayOfMonth: 5;
UINT Hour: 8;
} Bits;
} DaylightSavings;
} TI_DTV_PSIP_STT_DATA;
//----------------------------------------------------------
// Bit Stream Syntax for the Master Guide Table (p.25, Table 6.2)
//
typedef struct _TI_DTV_PSIP_MGT_DATA_ {
UINT16 TableType;
union {
UINT16 Data;
struct {
UINT Reserved: 3;
UINT TableTypePID: 13;
} Bits;
} Var1;
union {
UINT8 Data;
struct {
UINT Reserved: 3;
UINT TableTypeVerNo: 5;
} Bits;
} Var2;
UINT32 NumberBytes;
union {
UINT16 Data;
struct {
UINT Reserved: 4;
UINT TableTypeDescLength: 12;
} Bits;
} Var3;
UCHAR *pDescriptors;
} TI_DTV_PSIP_MGT_DATA;
#define TI_DTV_PSIP_TABLE_TYPE_TVCT 0x0000
#define TI_DTV_PSIP_TABLE_TYPE_CVCT 0x0002
#define TI_DTV_PSIP_TABLE_TYPE_ETT 0x0004
#define TI_DTV_PSIP_TABLE_TYPE_EIT0 0x0100
#define TI_DTV_PSIP_TABLE_TYPE_EIT3 0x0103
#define TI_DTV_PSIP_TABLE_TYPE_EIT127 0x017F
#define TI_DTV_PSIP_TABLE_TYPE_ETT0 0x0200
#define TI_DTV_PSIP_TABLE_TYPE_ETT3 0x0203
#define TI_DTV_PSIP_TABLE_TYPE_ETT127 0x027F
#define TI_DTV_PSIP_TABLE_TYPE_RRT1 0x0301
#define TI_DTV_PSIP_TABLE_TYPE_RRT255 0x03FF
//----------------------------------------------------------
// Bit Stream Syntax for the Terrestrial Virtual Channel Table(p.29, Table 6.4)
//
typedef struct _TI_DTV_PSIP_TVCT_DATA_ {
UCHAR ShortName[8];
union {
UINT32 Data;
struct {
UINT Reserved: 4;
UINT MajorChanNo: 10;
UINT MinorChanNo: 10;
UINT ModulationMode: 8;
} Bits;
} Var1;
UINT32 CarrierFreq;
UINT16 ChanTSID;
UINT16 ProgramNo;
union {
UINT16 Data;
struct {
UINT EtmLocation: 2;
UINT AccessControlled: 1;
UINT Hidden: 1;
UINT Reserved1: 2;
UINT HideGuide: 1;
UINT Reserved2: 3;
UINT ServiceType: 6;
} Bits;
} Var2;
UINT16 SourceID;
union {
UINT16 Data;
struct {
UINT Reserved: 6;
UINT DescLength: 10;
} Bits;
} Var3;
UCHAR *pDescriptors;
} TI_DTV_PSIP_TVCT_DATA;
enum _TI_DTV_MODULATION_MODE_enum_ {
TI_DTV_MODULATION_MODE_RESERVED,
TI_DTV_MODULATION_MODE_ANALOG,
TI_DTV_MODULATION_MODE_SCTE_1, // 64-QAM
TI_DTV_MODULATION_MODE_SCTE_2, // 256-QAM
TI_DTV_MODULATION_MODE_ATSC_8VSB,
TI_DTV_MODULATION_MODE_ATSC_16VSB
};
enum _TI_DTV_SERVICE_TYPE_enum_ {
TI_DTV_SERVICE_TYPE_RESERVED,
TI_DTV_SERVICE_TYPE_ANALOG_TV,
TI_DTV_SERVICE_TYPE_VIDEO,
TI_DTV_SERVICE_TYPE_AUDIO,
TI_DTV_SERVICE_TYPE_DATA_ONLY
};
enum _TI_DTV_RATING_enum_ {
TI_DTV_RATING_TV_Y,
TI_DTV_RATING_TV_Y7,
TI_DTV_RATING_TV_G,
TI_DTV_RATING_TV_PG,
TI_DTV_RATING_TV_14,
TI_DTV_RATING_TV_MA,
TI_DTV_RATING_MOVIE,
TI_DTV_RATING_FORALL,
TI_DTV_RATING_UNRATED
};
//----------------------------------------------------------
// Bit Stream Syntax for the Event Information Table (p.41, Table 6.11)
//
typedef struct _TI_DTV_PSIP_EIT_DATA_ {
union {
UINT16 Data;
struct {
UINT Reserved: 2;
UINT EventID: 14;
} Bits;
} Var1;
UINT32 StartTime;
union {
UINT32 Data;
struct {
UINT Reserved: 2;
UINT EtmLocation: 2;
UINT LengthInSeconds: 20;
UINT TitleLength: 8;
} Bits;
} Var2;
UCHAR *pTitleText; // Multiple String Structure
union {
UINT16 Data;
struct {
UINT Reserved: 4;
UINT DescLength: 12;
} Bits;
} Var3;
UCHAR *pDescriptors;
} TI_DTV_PSIP_EIT_DATA;
//----------------------------------------------------------
// Bit Stream Syntax for the Extended Text Table (p.43, Table 6.13)
//
typedef struct _TI_DTV_PSIP_ETT_DATA_ {
UINT32 EtmID; // Extended Text Message ID
UCHAR *pExtTextMsg; // Multiple String Structure
} TI_DTV_PSIP_ETT_DATA;
//==========================================================
// Defined in 'TiDTV_PSIP.c'
//
extern TI_DTV_PSIP_CTRL TiDTV_PsipCtrl;
extern TI_DTV_PSIP_STT_DATA PsipSttData; // STT Data
extern TI_DTV_ISO_PAT_DATA TiDTV_PatData[TI_DTV_MAX_NUM_PROGRAM]; // PAT Table Data
extern TI_DTV_PROGRAM_TABLE TiDTV_ProgTable[TI_DTV_MAX_NUM_PHY_CHANNEL];
extern TI_DTV_PROGRAM_TABLE TiDTV_ProgramTable;
void TiDTV_PsipDispatch(void);
void TiDTV_ResetPsipStatus(void);
void TiDTV_SortProgTable(void);
void TiDTV_PsipSttParser(UCHAR *pPsipTable);
void TiDTV_IsoPatParser(UCHAR *pPsipTable);
void TiDTV_IsoPmtParser(UCHAR *pPsipTable);
void TiDTV_PsipMgtParser(UCHAR *pPsipTable);
void TiDTV_PsipTvctParser(UCHAR *pPsipTable);
void TiDTV_PsipRrtParser(UCHAR *pPsipTable);
void TiDTV_PsipEitParser(UCHAR *pPsipTable);
void TiDTV_PsipEttParser(UCHAR *pPsipTable);
void TiDTV_PsipEitParserInit(int EitSlotIndex);
void TiDTV_PsipEttParserInit(int EttSlotIndex);
int TiDTV_GetProgIndexViaProgNoInPAT(UINT16 ProgramNo);
int TiDTV_GetProgIndexViaRfChanNo(UINT16 RfChanNo);
int TiDTV_GetAudioIndexViaPID(TI_DTV_PROGRAM_DEF *pProgDef, UINT16 AudioPID);
void TiDTV_Unicode2Ascii(UCHAR *pAsciiStr, UCHAR *pUnicodeStr, int CodeSize);
void TiDTV_UpdateProgram(TI_DTV_PSIP_TVCT_DATA *pPsipTvctData, int ProgIndex);
void TiDTV_UpdateProgTable(void);
void TiDTV_GetAudioInfo(UCHAR *pDescriptors, UINT16 InfoLength, UCHAR *pLangCode);
void TiDTV_GetProgramInfo(UCHAR *pDescriptors, UINT16 InfoLength, int ProgIndex);
void TiDTV_ParseServiceLocation(UCHAR *pDescriptors, TI_DTV_PROGRAM_DEF *pProgDef);
void TiDTV_GpsTime2LocalTime(UINT32 GpsTime, TI_DTV_SYS_DATE_TIME *pSysDateTime);
//----------------------------------------------------------
// Defined in 'TiDTV_PSIP_HW.c'
//
void TiDTV_InitFilter(void);
void TiDTV_PatSetHwFilter(void);
int TiDTV_EnableIsoPatHwFilter(void);
int TiDTV_DisableIsoPatHwFilter(void);
int TiDTV_EnableIsoPmtHwFilter(int HwFilterIndex, UINT16 ProgramNo, UINT16 PmtPID);
int TiDTV_DisableIsoPmtHwFilter(int HwFilterIndex);
int TiDTV_DisableAllIsoPmtFilters(void);
int TiDTV_EnableMgtHwFilter(void);
int TiDTV_DisableMgtHwFilter(void);
int TiDTV_EnableTvctHwFilter(void);
int TiDTV_DisableTvctHwFilter(void);
int TiDTV_EnableEitHwFilter(int EitSlotIndex);
int TiDTV_DisableEitHwFilter(int EitSlotIndex);
int TiDTV_DisableAllEitHwFilters(void);
int TiDTV_DisableAllHwFilters(void);
#endif /* _TI_DTV_PSIP_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -