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

📄 tvptpp.h

📁 ti的数字电视芯片 tvp9000的源码
💻 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 + -