📄 prtuner.h
字号:
/*
PrTuner.h
Copyright (C) 2004-2005 CLife. All rights reserved.
*/
#ifndef _PR_TUNER_H_
#define _PR_TUNER_H_
#include "PrTypes.h"
PR_BEGIN_EXTERN_C
typedef enum
{
PR_TUNER_SATELLITE = 0x00, //卫星调谐器
PR_TUNER_CABLE = 0x01, //有线调谐器
PR_TUNER_TERRESTRIAL = 0x02 //地面调谐器
}PRTunerType;
typedef enum fe_status {
FE_HAS_SIGNAL = 0x01, /* found something above the noise level */
FE_HAS_CARRIER = 0x02, /* found a DVB signal */
FE_HAS_VITERBI = 0x04, /* FEC is stable */
FE_HAS_SYNC = 0x08, /* found sync bytes */
FE_HAS_LOCK = 0x10, /* everything's working... */
FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */
FE_REINIT = 0x40 /* frontend was reinitialized, */
} fe_status_t;
typedef enum
{
PR_TUNER_EVENT_NONE = 0x00, //空事件
PR_TUNER_EVENT_LOCK = 0x01, //锁定事件
PR_TUNER_EVENT_UNLOCK = 0x02 //锁定丢失事件
}PRTunerEvent;
typedef enum fe_spectral_inversion {
INVERSION_OFF,
INVERSION_ON,
INVERSION_AUTO
}FESpectralInversion;
typedef enum fe_code_rate {
FEC_NONE = 0,
FEC_1_2,
FEC_2_3,
FEC_3_4,
FEC_4_5,
FEC_5_6,
FEC_6_7,
FEC_7_8,
FEC_8_9,
FEC_AUTO
}FECodeRate;
typedef enum fe_modulation {
QPSK,
QAM_16,
QAM_32,
QAM_64,
QAM_128,
QAM_256,
QAM_AUTO,
VSB_8,
VSB_16
}FEModulation;
typedef enum fe_transmit_mode {
TRANSMISSION_MODE_2K,
TRANSMISSION_MODE_8K,
TRANSMISSION_MODE_AUTO
}FETransmitMode;
typedef enum fe_bandwidth {
BANDWIDTH_8_MHZ,
BANDWIDTH_7_MHZ,
BANDWIDTH_6_MHZ,
BANDWIDTH_AUTO
}FEBandwidth;
typedef enum fe_guard_interval {
GUARD_INTERVAL_1_32,
GUARD_INTERVAL_1_16,
GUARD_INTERVAL_1_8,
GUARD_INTERVAL_1_4,
GUARD_INTERVAL_AUTO
}FEGuardInterval;
typedef enum fe_hierarchy {
HIERARCHY_NONE,
HIERARCHY_1,
HIERARCHY_2,
HIERARCHY_4,
HIERARCHY_AUTO
}FEHierarchy;
struct dvb_qpsk_parameters {
UINT32 symbol_rate; /* symbol rate in Symbols per second */
FECodeRate fec_inner; /* forward error correction (see above) */
};
struct dvb_qam_parameters {
UINT32 symbol_rate; /* symbol rate in Symbols per second */
FECodeRate fec_inner; /* forward error correction (see above) */
FEModulation modulation; /* modulation type (see above) */
};
struct dvb_vsb_parameters {
FEModulation modulation; /* modulation type (see above) */
};
struct dvb_ofdm_parameters {
FEBandwidth bandwidth;
FECodeRate code_rate_HP; /* high priority stream code rate */
FECodeRate code_rate_LP; /* low priority stream code rate */
FEModulation constellation; /* modulation type (see above) */
FETransmitMode transmission_mode;
FEGuardInterval guard_interval;
FEHierarchy hierarchy_information;
};
typedef struct dvb_frontend_parameters {
UINT32 frequency; //(absolute) frequency in Hz for QAM/OFDM/ATSC
//intermediate frequency in kHz for QPSK
FESpectralInversion inversion;
union {
struct dvb_qpsk_parameters qpsk;
struct dvb_qam_parameters qam;
struct dvb_ofdm_parameters ofdm;
struct dvb_vsb_parameters vsb;
}u;
}PRTunerParams;
typedef struct
{
INT32 frequency;
INT32 symbol_rate;
UINT8 modulation;
FESpectralInversion spectrumInv; //频谱反转状态
PRTunerEvent carrier; //锁定状态
UINT8 level; //电平
UINT8 snr; //信噪比
}PRTunerStatus;
typedef struct
{
UINT32 tunersNum; //调谐器数量
PRTunerType type; //调谐器类型
}PRTunerCapability;
typedef PRStatus (*PRTunerEventNotify)(INT32 tuner,PRTunerEvent eventType);
PRStatus PrTunerInit(void);
PRStatus PrTunerTerm(void);
PRStatus PrTunerGetCapability(INT32 tuner,PRTunerCapability *capability);
PRStatus PrTunerRegisterEventNotify(INT32 tuner,PRTunerEventNotify eventNotify);
PRStatus PrTunerGetStatus(INT32 tuner,PRTunerStatus *status);
PRStatus PrTunerSet(INT32 tuner,PRTunerParams *params);
UINT32 PrGetLastFrequency(void);
//获取最近使用的频率
PR_END_EXTERN_C
#endif /* _PR_TUNER_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -