📄 filter.h
字号:
/*****************************************************************************
File Name: filter.h
Description: Private Section filter
COPYRIGHT (C) 2002 STMicroelectronics
*****************************************************************************/
#ifndef __FILTER_H
#define __FILTER_H
/* Includes --------------------------------------------------------------- */
#include "stddefs.h" /* STAPI includes */
#include "stpti.h"
#include "stvid.h"
#include "lists.h"
/* defines ----------------------------------------------------------------- */
typedef enum
{
SECTION,
APG,
MPG,
NUM_FILTERS
}FilterType_t;
#define TS_SIZE 188
#define DSS_SIZE 127
#define BUFFER_SIZE (DSS_SIZE * TS_SIZE)
#define FILTER_SIZE 16
/* PSI fields within section filter */
#define TABLE_ID(_f_) (_f_[0])
#define PROGRAM_NUM_1(_f_) (_f_[1])
#define PROGRAM_NUM_2(_f_) (_f_[2])
#define VERSION_NUM(_f_) (_f_[3])
#define SECTION_NUM(_f_) (_f_[4])
/* DSS APG fields within apg filter */
#define NETWORK_ID_1(_f_) (_f_[0])
#define NETWORK_ID_2(_f_) (_f_[1])
#define CAROUSEL_ID(_f_) (_f_[2])
/* DSS MPG fields */
#define MPG_SYNCH_0(_f_) (_f_[0])
#define MPG_SYNCH_1(_f_) (_f_[1])
#define MPG_SYNCH_2(_f_) (_f_[2])
#define MPG_SYNCH_3(_f_) (_f_[3])
/* Data extraction macros */
#define EXTRACT_32(_X) ((*(_X+0) << 24) | (*(_X+1) << 16) | (*(_X+2) << 8) | (*(_X+3) << 0))
#define EXTRACT_24(_X) ((*(_X+0) << 16) | (*(_X+1) << 8) | (*(_X+2) << 0))
#define EXTRACT_16(_X) ((*(_X+0) << 8) | (*(_X+1) << 0))
#define EXTRACT_8(_X) (*(_X))
#define EXTRACT_4T(_X) ((*(_X) >> 4) & 0xf)
#define EXTRACT_4B(_X) (*(_X) & 0xf)
/* structures ------------------------------------------------------------ */
typedef struct Filter_s
{
STPTI_Slot_t SlotHandle;
STPTI_Buffer_t BufferHandle;
STPTI_Signal_t SignalHandle;
STPTI_Filter_t Filter;
STPTI_FilterData_t FilterData;
U8 FilterBytes[FILTER_SIZE];
U8 FilterMasks[FILTER_SIZE];
U8 Buffer[BUFFER_SIZE];
} Filter_t;
/* Global ----------------------------------------------------------------- */
extern Filter_t Filter[NUM_FILTERS];
extern U16 NumPrograms, NumChannels;
/* Prototypes ------------------------------------------------------------- */
extern ST_ErrorCode_t FilterInit( void );
/*extern ST_ErrorCode_t FilterSetup( Filter_t *Filter_p );*/
extern ST_ErrorCode_t FilterStart( Filter_t *Filter_p, STPTI_Pid_t Pid, U8 TableId );
extern ST_ErrorCode_t SDTDump(void);
extern ST_ErrorCode_t PMTDump(S32 Pid , LISTS_Channel_t *Channel_p);
extern ST_ErrorCode_t PATDump(void);
extern ST_ErrorCode_t NITDump(S32 Pid);
extern ST_ErrorCode_t EITDump(S32 Pgm);
extern ST_ErrorCode_t Filter_Run(STVID_BroadcastProfile_t VID_BcastProfile);
extern void APG_FilterCreate(Filter_t *Filter_p, U32 Network, U32 Carousel);
extern void DVB_FilterCreate(Filter_t *Filter_p, U32 TableId, U32 Program, U32 Version, U32 Section);
#endif /* __FILTER_H */
/* EOF --------------------------------------------------------------------- */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -