📄 dvbdata.h
字号:
// dvbdata.h: interface for the dvbdata class.
//
//////////////////////////////////////////////////////////////////////
#ifndef __DVB_DATA_H__
#define __DVB_DATA_H__
#include "SITable.h"
#include "secdb.h"
#include "PrTuner.h"
#include "Prtypes.h"
#define MAX_TSPROGRAM 32
#define SND_LEFT 0x8000
#define SND_RIGHT 0x4000
#define SND_ALL 0xC000
#define CH_LOCK 0x2000
#define CH_VOLUME 0x00FF
//分组方式系统分组最高位置1
//用户Favirate分组第30位置1 即BouquetFavID=BouquetID|0x40000000
//BAT分组高16位为0,低16位为BouquetID值
#define SYSGROUP_FAVID_PREFIX 0x80000000
#define BOUQUET_FAVID_PREFIX 0x40000000
#define GROUP_ALL (SYSGROUP_FAVID_PREFIX|1)
#define GROUP_VIDEO (SYSGROUP_FAVID_PREFIX|2)
#define GROUP_AUDIO (SYSGROUP_FAVID_PREFIX|3)
#define GROUP_NVOD (SYSGROUP_FAVID_PREFIX|4)
#define GROUP_TELETEXT (SYSGROUP_FAVID_PREFIX|5)
#define GROUP_DATA (SYSGROUP_FAVID_PREFIX|6)
#define ST_VIDEO 1 //以下为service type定义
#define ST_AUDIO 2
#define ST_TELETEXT 3
#define ST_NVODREF 4
#define ST_NVODSHIFT 5
#define ST_MOSAIC 6
#define ST_FMRADIO 0xA
#define ST_DATA 0x0C
#define ST_MHP 0x10
typedef struct {
USHORT netId;
USHORT tsId;
USHORT serviceId;
}SERVICELOCATOR;
typedef struct TSData{
USHORT netId,tsId;
//unsigned int frequency,symbol,modualation;
PRTunerParams tunerParams;
USHORT States[MAX_TSPROGRAM];
SECTIONDB*pat;
SECTIONDB*pmt;
SECTIONDB*sdt;
struct TSData*next;
PRMutex lock;
}TSDATA;
typedef int (*SIRECEIVEPROC)(TSDATA*ts,void*params);
#ifdef __cplusplus
extern "C"{
#endif
int CreateSystemDB(void);
int ResetSystemDB(void);
int DestroySystemDB(void);
TSDATA*FindTS(UINT16 netId,UINT16 tsId);//查找一个TS
TSDATA*FindTSByFrequency(UINT32 freq);
TSDATA*CreateTS(UINT16 netId,UINT16 tsId);//建立一个新的TS;
TSDATA*GetFirstTS(void);
void FreeTSData(TSDATA*ts);//释放TS结构的所有内存但不包括TS结构本身
void FreeAllTS(void);//释放所有TS的数据包括TS本身
int GetServiceInfo(const SERVICELOCATOR*sloc,DVBService*service);//
//失败返回0,成功返回1和2。如果只能找到PMT返回1,能找到SDT则返回2
int GetServiceName(SERVICELOCATOR*sloc,char*provider,char*sname,UCHAR*lan);
int GetServiceType(SERVICELOCATOR*service);
int GetNvodTimeShiftService(SERVICELOCATOR*refService,SERVICELOCATOR*timeShifts);
//查找refService的所有TimeShift Service,timeShifts输出所有TimeShift Service可以为空,返回TimeShift Service数量
int GetServiceParams(const SERVICELOCATOR*sloc,UINT32*pids);
//获取一个Service的所有PID,高16位为streamType,低16位为PID值,返回PID总数量
int GetServicePIDS(const SERVICELOCATOR*sloc,UINT16*pcrPID,UINT16*vID,UINT16*aIDs);
//获取一个Service的音视频PID,高16位为streamType,低16位为PID值
//如果返回值n大于3表示有多个(n-3+1)音频PID;
USHORT GetServicePmtPID(SERVICELOCATOR*sloc);
USHORT GetServiceState(SERVICELOCATOR*service,UINT16 mask);
USHORT SetServiceState(SERVICELOCATOR*sloc,UINT16 mask);
SECTIONDB*GetBouquetDB(void);
SECTIONDB*GetNetworkDB(void);
int CreateGroupByBouquet(void);
int GetBouquetName(UINT16 bouquetId,char*name,char*lan);
//根据Bouquet自动建立/更新分组。返回建立的Group数量
int LoadDVBData(UCHAR*data);
int SaveDVBData(UCHAR*data);
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -