📄 tvptpp.h
字号:
/*****************************************************************************
* Property of Texas Instruments Incorporated, Copyright 2004
* All rights reserved
******************************************************************************/
/*********************************************************************
*
* Description:
* TvpTpp.h contains public definitions related to the TPP module
*
* Contents:
* Control structures
* Flag definitions
* Function prototypes
*
**********************************************************************/
/*********************************************************************
*
* $Revision: $
*
* $History: TvpTpp.h $
*
*********************************************************************/
#ifndef TVP_TPP_DOT_H_IS_DEFINED
#define TVP_TPP_DOT_H_IS_DEFINED
/*********************************************************************/
/* Chan Enable flags */
#define TVP_TPP_CC_CHECK_DISABLE 0x01
#define TVP_TPP_DUPLICATE_CHECK_DISABLE 0x02
#define TVP_TPP_ERROR_CHECK_DISABLE 0x04
#define TVP_TPP_CLK_CHAN 0x08
#define TVP_TPP_KEEP_CC_PACK 0x10
#define TVP_TPP_KEEP_DUPLICATE_PACK 0x20
#define TVP_TPP_GENERATE_PCR 0x40
/*********************************************************************/
/* Status Enable flags */
#define TVP_TPP_STATUS_RAND 0x01
#define TVP_TPP_STATUS_DISC 0x02
#define TVP_TPP_DESCR_CHANGE 0x04
#define TVP_TPP_ARRAY_FILTER_ERROR 0x08
/*********************************************************************/
/* Data transfer flags */
#define TVP_TPP_TRANSFER_CONTINUOUS 0x0100
#define TVP_TPP_BUFFER_POOL 0x0200
#define TVP_TPP_CIRCULAR_BUFFER 0x0400
#define TVP_TPP_NO_INT 0x0000
#define TVP_TPP_INT_UNIT_START 0x1000
#define TVP_TPP_INT_UNIT_END 0x2000
#define TVP_TPP_INT_END_TRANSFER 0x4000
/***********************************************************************
**** Variable for the AV Sync
***********************************************************************/
#define TVP_MASTER_PTS_DELAY 0
/*********************************************************************/
/* User_Data Acquire Flag */
/*********************************************************************/
/*********************************************************************/
/* Maximum number of channels, TPP input streams and descrambler keys */
#define TVP_CHANNEL_MAX_NUMBER 32
#define TVP_KEY_MAX_NUMBER 32
#define TVP_KEY_3DES_MAX_NUMBER 10
#define TVP_MAX_PID_VALUE 0x1ffe
/*********************************************************************/
/* Parser Control definitions used for testing */
#define TVP_PARSER_NORMAL 0
#define TVP_PARSER_ELEM_STREAM 2
#define TVP_PARSER_ELEM_STREAM_VIDEO 4
#define TVP_PARSER_ELEM_STREAM_AUDIO 6
/*********************************************************************/
/* Channel related definitions */
#define TVP_TPP_INVALID_CHANNEL 0xFF
// Default counter used to determine that PCR's won't be arriving
#define TVP_NO_PCR_THRESHOLD_TIME 700
typedef unsigned char TvpChanNumber;
typedef enum
{
TVP_TPP_INVALID = 0x00,
TVP_TPP_VIDEO = 0x01,
TVP_TPP_AUDIO = 0x02,
TVP_TPP_PES_0 = 0x03,
TVP_TPP_PES_1 = 0x04,
TVP_TPP_TS_0 = 0x05,
TVP_TPP_TS_1 = 0x06,
TVP_TPP_SECTION_LL = 0x07,
TVP_TPP_SECTION_LB = 0x08,
TVP_TPP_FILTER = 0x09,
TVP_NO_MAP = 0x0a,
TVP_TPP_AUDIO_NO_RESET= 0x0b
} TvpTppChanType; /* channel type, device */
#define TVP_TPP_DEV_MASK 0x1F /* mask to extract the channel type */
typedef TvpTppChanType TvpTppPtsType;
/*********************************************************************/
/* Type definitions */
typedef unsigned long TvpTppFlags;
typedef unsigned long TvpTppStatus;
typedef unsigned char TvpDescrKeyIndex;
typedef unsigned long TvpTppTransFlags;
typedef long TvpAvsStcOffset;
typedef unsigned long TvpUserDataFlag; //where to get the user_data(SEQ,GOP or PICTURE)
/*********************************************************************/
/* Enumeration types for the API functions */
typedef enum
{
TVP_TPP_OUTPUT_NONE,
TVP_TPP_OUTPUT_ON_CHIP
} TvpTppOutput;
typedef enum
{
TVP_TPP_KEY_ECD,
TVP_TPP_KEY_DES,
TVP_TPP_KEY_NONE
} TvpDescrKeyType;
typedef enum
{
TVP_TPP_DECRYPT_NONE,
TVP_TPP_DES,
TVP_TPP_3_DES,
TVP_TPP_IRDETO,
TVP_TPP_DVB_NO_PES,
TVP_TPP_DVB_AND_PES
} TvpDescrMode;
typedef enum
{
TVP_TPP_NO_DISCARD, //The Key index is already received
TVP_TPP_IMME_DISCARD //The Key index is not valid
} TvpDiscardMode;
typedef enum
{
TVP_TPP_KEY_EVEN = 0,
TVP_TPP_KEY_ODD = 1
} TvpDescrKeyPol;
typedef enum
{
TVP_PTS_CORRECTION_AUDIO,
TVP_PTS_CORRECTION_VIDEO,
TVP_PTS_CORRECTION_SYSTEM
} TvpAvsPtsCorrection;
typedef enum
{
TVP_AUDIO_FREE_RUN,
TVP_AUDIO_PTS_SYNC
} TvpAvsAudioSync;
typedef enum
{
VIDEO_FREE_RUN,
VIDEO_PTS_SYNC,
VIDEO_VBV
} Avs_VideoSync;
typedef enum
{
TVP_VCXO_POSITIVE,
TVP_VCXO_NEGATIVE
} TvpVcxoPolarity;
typedef enum
{
TVP_USER_DATA_PADDING,
TVP_USER_DATA_NO_PADDING
} TvpUserDataPadding;
typedef enum
{
TVP_PES_VIDEO,
TVP_PES_AUDIO,
TVP_PES_USER_DATA
}TvpPesBuffer;
typedef enum
{
TVP_AV_SYNC_NONE,
TVP_AV_SYNC_MASTER_STC,
TVP_AV_SYNC_MASTER_VIDEO,
TVP_AV_SYNC_MASTER_AUDIO
}TvpAvsMaster;
/*********************************************************************/
/* Structure definitions */
typedef struct
{
unsigned long status_rand;
unsigned long status_disc;
unsigned long descr_change;
unsigned long filter_error;
unsigned long array_error;
unsigned long af_private;
unsigned long pes_private;
}TvpStatus_ret_s;
typedef struct
{
long pcr_90; /* lower 32 bits of 90 kHz Clk */
long pcr_27; /* 31-> bit 33 of 90 kHz Clk, 8:0-> 27 MHz Clk extension */
long stc_90; /* lower 32 bits of 90 kHz STC */
long stc_27; /* 31-> bit 33 of 90 kHz STC, 8:0-> 27 MHz STC extension */
}TvpClk_ret_s;
typedef struct
{
long pts_video; /* lower 32 bits of video PTS */
long pts_audio; /* lower 32 bits of audio pts */
}TvpPts_ret_s;
typedef struct
{
unsigned char *buffer_p; /* pointer to the data buffer */
unsigned short buffer_size; /* size of the data buffer */
unsigned short buffer_count[4]; /* total bytes transferred */
unsigned char status; /* call return status */
unsigned char logical_chan; /* logical channel of report */
unsigned char buf_index; /* index into the buffer pool */
unsigned char buff_status[4]; /* bitmap for status of the buffer pool */
/* '0' buffer free, '0xFF' buffer busy */
unsigned long private_size; /* internal usage */
} TvpData_acq_ret_s;
typedef struct
{
unsigned int unused_ti :28; // padding
unsigned int pes_descr_info :2; // PES header descrambler ctrl
unsigned int transport_descr_info :2; // transport header descrambler ctrl
} TvpDescrInfo;
typedef struct
{
unsigned char flag_pattern;
unsigned char flag_mask;
unsigned char trick_mode_pattern;
unsigned char trick_mode_mask;
unsigned char PTS_low_ctrl;
unsigned char PTS_high_ctrl;
unsigned char DTS_low_ctrl;
unsigned char DTS_high_ctrl;
unsigned long PTS_low;
unsigned long PTS_high;
unsigned long DTS_low;
unsigned long DTS_high;
} TvpPesFilter_s;
typedef struct
{
unsigned char derror_polarity; /* 1: active high */
unsigned char serial; /* 1: serial input, 0: parallel input */
unsigned char serial_lsb_first; /* 1: lsb firat in serial mode */
unsigned char dclk_active_edge; /* 1: capture on rising DCLK */
unsigned char pacval_polarity; /* 1: active high */
unsigned char bytestrt_polarity;/* 1: active high */
unsigned char framer_enable; /* 1: enable */
unsigned char serial_bitsel; /* input line select for serial */
unsigned long parser_ctrl; /* Set to 0 for normal operations */
} TvpTppFEConfig;
typedef struct {
unsigned char *baseAddr;
unsigned char fullness;
unsigned long size;
unsigned char *readPtr;
unsigned char *writePtr;
} TvpDataBufferInfo;
/*********************************************************************/
/* Function prototypes */
#ifdef __cplusplus
extern "C" {
#endif
//Functions for the CRC
unsigned long tvpTppCrcGetValue(unsigned char *buf, unsigned long size);
unsigned long tvpTppCrcGetPartialValue(unsigned char *buf, unsigned long size,
unsigned long previous);
//Functions for the VCXO
void tvpTppVCXOInit(void);
void tvpTppVCXOCtrlSensSet(char divider, unsigned char sens_limit,
unsigned char guard_band, TvpVcxoPolarity polarity);
void tvpTppVCXOInputSet(long deltaValue);
void tvpTppVCXOCtrlDisable(void);
void tvpTppVCXOCtrlEnable(void);
//Functions for STC
void tvpTppSTCRefresh(void);
TVP_FERROR tvpTppSTCWrite(unsigned long stc, unsigned long stc_33);
TVP_FERROR tvpTppSTCRead(unsigned long *stc, unsigned long *stc_33);
//Functions for the Clk,PTS Processing
TVP_FERROR tvpTppPTSAcquire(TvpPts_ret_s *pts_return);
TVP_FERROR tvpTppClkAcquireDisable(TvpChanNumber logical_chan);
TVP_FERROR tvpTppClkAcquireEnable(TvpChanNumber logical_chan, TvpIntNum irq,
TvpClk_ret_s *clk_return);
TVP_FERROR tvpTppClkChanSwap(TvpChanNumber prev_logical_chan,
TvpChanNumber new_logical_chan);
//Functions for the Status Acquire
TVP_FERROR tvpTppStreamStatusSwap(TvpStatus_ret_s *status_return);
TVP_FERROR tvpTppStreamStatusAcquireDisable(TvpChanNumber logical_chan,TvpTppStatus status_mask);
TVP_FERROR tvpTppStreamStatusAcquireEnable(TvpChanNumber logical_chan,
TvpIntNum irq,
TvpTppStatus status_mask);
//Functions for the Descrambling
TVP_FERROR tvpTppDecryptInitVectorWrite(TvpChanNumber logical_chan,
unsigned long initVecHighWord,
unsigned long initVecLowWord);
TVP_FERROR tvpTppDescramblerInfoAcquire (TvpChanNumber logical_chan,
TvpDescrInfo *descrambler_info);
TVP_FERROR tvpTppDecryptModeSet (TvpChanNumber logical_chan, TvpDescrMode decrypt,TvpDiscardMode discardMode);
TVP_FERROR tvpTppKeyWordWrite(TvpDescrKeyIndex key_index,TvpDescrKeyType key_type,
TvpDescrKeyPol key_polarity,unsigned char *control_word);
TVP_FERROR tvpTppKeyWord3DesWrite(TvpDescrKeyIndex key_index,TvpDescrKeyType key_type,
TvpDescrKeyPol key_polarity,unsigned char *control_word1,
unsigned char *control_word2,unsigned char *control_word3);
TVP_FERROR tvpTppKeyWordIndexSet(TvpChanNumber logical_chan,
TvpDescrKeyIndex key_index);
//Functions for the User Data
TVP_FERROR tvpTppUserDataAcquireDisable(void);
TVP_FERROR tvpTppUserDataAcquireEnable (TvpUserDataFlag flag,
TvpIntNum irq,
unsigned char *buf,
unsigned long buf_size);
TVP_FERROR tvpTppUserDataInfo(TvpPesBuffer flag,TvpDataBufferInfo *info);
TVP_FERROR tvpTppUserDataSizeGet(unsigned long *size,TvpUserDataPadding padding);
TVP_FERROR tvpTppUserDataBlockSizeGet(unsigned long *size,TvpUserDataPadding padding);
TVP_FERROR tvpTppUserDataGet(unsigned char *buffer,unsigned long *size, TvpUserDataPadding padding);
TVP_FERROR tvpTppUserDataReadPtrSet(unsigned long readPtr);
//Functions for the Private data at Adapation Filed
TVP_FERROR tvpTppAFPrivateAcquireDisable(TvpChanNumber logical_chan);
TVP_FERROR tvpTppAFPrivateAcquireEnable(TvpChanNumber logical_chan,
TvpIntNum irq,
unsigned char *buf);
//Functions for the PES,TS filter
TVP_FERROR tvpTppPESFilterClear(TvpChanNumber logical_chan);
TVP_FERROR tvpTppPESFilterSet(TvpChanNumber logical_chan,
TvpPesFilter_s *pes_filter);
TVP_FERROR tvpTppTSFilterClear(TvpChanNumber logical_chan);
TVP_FERROR tvpTppTSFilterSet(TvpChanNumber logical_chan,
unsigned long pattern,
unsigned long mask);
//Functions for the Data Acquire
TVP_FERROR tvpTppDataAcquireSwap(unsigned long *data_acq_result);
TVP_FERROR tvpTppDataAcquireDisable(TvpChanNumber logical_chan);
TVP_FERROR tvpTppDataAcquireEnable(TvpChanNumber logical_chan,
TvpIntNum irq,
TvpTppTransFlags transfer_flags,
unsigned long transfer_size,
unsigned char num_buffers,
TvpData_acq_ret_s *data_acq_s);
//Functions for the Channel Control Configuration
TVP_FERROR tvpTppChanOutputCtrl (TvpChanNumber logical_chan, TvpTppChanType device,
TvpTppFlags flag);
TVP_FERROR tvpTppChanPidSet (TvpChanNumber logical_chan, unsigned short pid);
TVP_FERROR tvpTppChanDisable(TvpChanNumber logical_chan);
TVP_FERROR tvpTppChanEnable(TvpChanNumber logical_chan);
TVP_FERROR tvpTppDrvrInit(unsigned char *vidPesBuf, unsigned long vidPesSize,
unsigned char *audPesBuf, unsigned long audPesSize);
TVP_FERROR tvpTppInputConfig(TvpTppFEConfig *fe_config);
//Functions for the AV Sync
TVP_FERROR tvpTppAVsSetSync(Tvp_On_Off syncEnableFlag,TvpAvsMaster syncMaster,unsigned char masterDelay);
TVP_FERROR tvpTppAVsSetStcOffset(TvpAvsStcOffset stcOffset);
#ifdef __cplusplus
};
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -