📄 root.c
字号:
pVPInitInfo->pDacConfig[YUV_1].tDacIndex.uDacSecond= DAC0;
pVPInitInfo->pDacConfig[YUV_1].tDacIndex.uDacThird= DAC2;
pVPInitInfo->pDacConfig[YUV_1].eVGAMode= VGA_NOT_USE;
pVPInitInfo->pDacConfig[YUV_1].bProgressive= FALSE;
//RGB
#ifdef VDAC_USE_RGB_TYPE
pVPInitInfo->pDacConfig[VDAC_USE_RGB_TYPE].bEnable = TRUE;
pVPInitInfo->pDacConfig[VDAC_USE_RGB_TYPE].tDacIndex.uDacFirst = RGB_DAC_R;
pVPInitInfo->pDacConfig[VDAC_USE_RGB_TYPE].tDacIndex.uDacSecond= RGB_DAC_G;
pVPInitInfo->pDacConfig[VDAC_USE_RGB_TYPE].tDacIndex.uDacThird= RGB_DAC_B;
pVPInitInfo->pDacConfig[VDAC_USE_RGB_TYPE].eVGAMode= VGA_NOT_USE;
pVPInitInfo->pDacConfig[VDAC_USE_RGB_TYPE].bProgressive= FALSE;
#endif
if(blogo_switch)
{
if(blogo_tvformat==LOGO_FORMAT_PAL)
pVPInitInfo->eTVSys = PAL;
else if (blogo_tvformat==LOGO_FORMAT_PAL_N)
pVPInitInfo->eTVSys = PAL_N;
else if(blogo_tvformat==LOGO_FORMAT_NTSC)
pVPInitInfo->eTVSys = NTSC;
else if(blogo_tvformat==LOGO_FORMAT_PAL_M)
pVPInitInfo->eTVSys = PAL_M;
else if(blogo_tvformat==LOGO_FORMAT_PAL_60)
pVPInitInfo->eTVSys =PAL_60;
else if(blogo_tvformat==LOGO_FORMAT_NTSC_443)
pVPInitInfo->eTVSys = NTSC_443;
pVPInitInfo->bWinOnOff = TRUE;
}
else
{
pVPInitInfo->eTVSys = PAL;
pVPInitInfo->bWinOnOff = FALSE;
}
pVPInitInfo->uWinMode = VPO_MAINWIN;//|VPO_PIPWIN;
pVPInitInfo->tPIPCallBack.RequestCallback = NULL;
pVPInitInfo->tPIPCallBack.ReleaseCallback= NULL;
#ifndef USE_NEW_VDEC
pVPInitInfo->tMPCallBack.RequestCallback = VDec_Output_Frame;
pVPInitInfo->tMPCallBack.ReleaseCallback= VDec_Release_FrBuf;
#else
pVPInitInfo->tMPCallBack.RequestCallback = vdec_m3327_de_mp_request;
pVPInitInfo->tMPCallBack.ReleaseCallback= vdec_m3327_de_mp_release;
#endif
pVPInitInfo->pSrcChange_CallBack=NULL;
}
#if 0
static void db_add_prog(UINT16 tp_id, UINT32 v_id, UINT32 a_id, UINT32 pcr_id)
{
P_NODE p_node;
static UINT8 index =0;
MEMSET(&p_node, 0, sizeof(p_node));
p_node.audio_count = 1;
p_node.video_pid = v_id;
p_node.audio_pid[0] = a_id;
p_node.pcr_pid = pcr_id;
p_node.av_flag = 1;
p_node.tp_id = tp_id;
STRCPY(p_node.service_name, "DEMOPROG_");
if (index<10)
p_node.service_name[9]='0'+index;
else
p_node.service_name[9]='A'+index-10;
add_node(TYPE_PROG_NODE, &p_node);
index++;
}
static void db_init()
{
set_av_mode(1);
recreate_prog_view(CREATE_VIEW_ALL_SAT, 0);
if (get_node_num(TYPE_PROG_NODE, NULL)==0) {
S_NODE s_node;
T_NODE t_node;
P_NODE p_node;
INT32 i;
MEMSET(&s_node, 0, sizeof(s_node));
s_node.lnb_high=5150;
s_node.lnb_low=5150;
s_node.pol = 0;
STRCPY(s_node.sat_name, "DEMOSAT_0");
add_node(TYPE_SAT_NODE, &s_node);
/* SAT-3 */
MEMSET(&t_node, 0, sizeof(t_node));
t_node.sat_id = s_node.sat_id;
t_node.frq = 4020;
t_node.sym = 27250;
t_node.pol = 1;
add_node(TYPE_TP_NODE, &t_node);
/* SAT-3 */
for(i=0; i<2; i++) {
db_add_prog(t_node.tp_id, 512, 650, 128);
db_add_prog(t_node.tp_id, 513, 660, 129);
db_add_prog(t_node.tp_id, 514, 670, 130);
db_add_prog(t_node.tp_id, 514, 680, 131);
}
MEMSET(&s_node, 0, sizeof(s_node));
s_node.lnb_high=5150;
s_node.lnb_low=5150;
s_node.pol = 0;
STRCPY(s_node.sat_name, "DEMOSAT_1");
add_node(TYPE_SAT_NODE, &s_node);
MEMSET(&t_node, 0, sizeof(t_node));
t_node.sat_id = s_node.sat_id;
t_node.frq = 4000;
t_node.sym = 28125;
t_node.pol = 0;
add_node(TYPE_TP_NODE, &t_node);
/* SAT-2 */
for(i=0; i<2; i++) {
db_add_prog(t_node.tp_id, 2305, 2306, 2690);
db_add_prog(t_node.tp_id, 512, 640, 8190);
db_add_prog(t_node.tp_id, 513, 644, 2432);
db_add_prog(t_node.tp_id, 514, 648, 8190);
}
update_data(TYPE_SAT_NODE);
update_data(TYPE_TP_NODE);
update_data(TYPE_PROG_NODE);
}
}
#endif
void avStart()
{
//UINT32 i;
//UINT8 iRet;
//UINT8 * buf;
//UINT32 dw_temp[4];
//struct io_param param;
//struct dmx_channel * channel = NULL;
//struct dmx_m3327_private * priv = NULL;
//static UINT32 counter = 0;
struct VDecPIPInfo vInitInfo;
struct MPSource_CallBack vMPCallBack;
struct PIPSource_CallBack vPIPCallBack;
struct VDec_PullDown_Opr tPullDownCallBack;
if (api_nim_register("NIM_M3327_0") != SUCCESS)
{
PRINTF("Register NIM error\n");
while (1);
}
PRINTF("NIM OK\n");
dmx_start(gpdmx);
vdec_set_output(gpdecv, MP_MODE, &vInitInfo, &vMPCallBack, &vPIPCallBack);
//if(RET_SUCCESS!= VDec_Decode(0,ALL_PIC, FALSE,0,FALSE,FALSE,FALSE))
// ASSERT(0);
vpo_win_mode(gpvpo, VPO_MAINWIN, &vMPCallBack, &vPIPCallBack);
#ifdef VDEC_AV_SYNC
vdec_sync_mode(gpdecv, 0x00,VDEC_SYNC_FIRSTFREERUN|VDEC_SYNC_I|VDEC_SYNC_P|VDEC_SYNC_B);
deca_set_sync_mode(gpdeca, ADEC_SYNC_PTS);
#endif
#if (TTX_ON == 1)
vbi_setoutput(vbi_dev, &VBIRequest);
vpo_ioctl(gpvpo, VPO_IO_SET_VBI_OUT, (UINT32)VBIRequest);
#endif
}
RET_CODE avInit()
{
OSAL_ID tsk_id = OSAL_INVALID_ID;
OSAL_T_CTSK t_ctsk;
struct VP_InitInfo tVPInitInfo;
t_ctsk.stksz = 0x1000;
t_ctsk.quantum = 10;
gpdeca = (struct deca_device *)dev_get_by_type(NULL, HLD_DEV_TYPE_DECA);
gpdmx = (struct dmx_device *)dev_get_by_name("DMX_M3327_0");
gpsnd = (struct snd_device *)dev_get_by_type(NULL, HLD_DEV_TYPE_SND);
gpvpo = (struct vpo_device *)dev_get_by_type(NULL, HLD_DEV_TYPE_DIS);
gpdecv = (struct vdec_device *)dev_get_by_type(NULL, HLD_DEV_TYPE_DECV);
#if(SUBTITLE_ON == 1)
gpsdec = (struct sdec_device *)dev_get_by_name("SDEC_M3327_0");
#endif
#if(TTX_ON == 1)
vbi_dev = (struct vbi_device *)dev_get_by_name("VBI_M3327_0");
#endif
if(gpdeca==NULL||gpdmx==NULL||gpsnd==NULL)
{
PRINTF("Get device point failed: gpdeca=%08x gpdmx=%08x gpsnd=%08x\n", gpdeca, gpdmx, gpsnd);
ASSERT(0);
}
if(RET_SUCCESS!=deca_open(gpdeca, AUDIO_MPEG2, AUDIO_SAMPLE_RATE_48, AUDIO_QWLEN_24, 2, 0))
{
PRINTF("deca_open failed!!\n");
ASSERT(0);
}
if(RET_SUCCESS!=dmx_open(gpdmx))
{
PRINTF("dmx_open failed!!\n");
ASSERT(0);
}
if(RET_SUCCESS!=snd_open(gpsnd))
{
PRINTF("snd_open failed!!\n");
ASSERT(0);
}
if(RET_SUCCESS!=vdec_open(gpdecv))
ASSERT(0);
InitVPPara(&tVPInitInfo);
if(RET_SUCCESS!=vpo_open(gpvpo,&tVPInitInfo))
ASSERT(0);
#if (SUBTITLE_ON == 1)
if(RET_SUCCESS!=sdec_open(gpsdec))
{
PRINTF("sdec_open failed!!\n");
ASSERT(0);
}
#endif
#if (TTX_ON == 1 )
if(RET_SUCCESS!=vbi_open(vbi_dev))
{
PRINTF("vbi_open failed!!\n");
ASSERT(0);
}
#endif
return RET_SUCCESS;
}
extern void EpgSendPFUpdateToUI();
extern void EpgSendSchUpdateToUI();
extern void EpgSendDetailUpdateToUI();
extern void set_tuner();
void AppInit()
{
void *osd_dev;
date_time date;
#if (SYS_CHIP_MODULE == ALI_M3327)
unsigned long chid;
unsigned char *p;
unsigned short blogo_value=0;
chid = BOOT_ID_2;
p = chunk_goto(&chid, 0xFFFFFFFF, 1);
blogo_value = p[HW_SET_BOOTLOGO];
blogo_value<<=8;
blogo_value+=p[HW_SET_BOOTLOGO+1];
blogo_switch=blogo_value&LOGO_SWITCH_MASK;
blogo_tvformat=blogo_value&LOGO_FORMAT_MASK;
blogo_height=blogo_value&LOGO_HEIGHT_MASK;
#endif
/* Disable task switched in dly_tsk */
PRINTF("Enter AppInit...\n");
system_hw_init();
avInit();
avStart();
if(!blogo_switch)
{
show_bootup_logo();
}
#if((SYS_MAIN_BOARD == BOARD_M3327DS1_0) \
|| (SYS_MAIN_BOARD == BOARD_M3327DS1_1) \
|| (SYS_MAIN_BOARD == BOARD_M3327C_DEMO))
LNB_power(TRUE);
#endif
#if (SYS_CHIP_MODULE == ALI_M3327)
osd_dev = (struct osd_device *)dev_get_by_name("OSD_M3327_0");
#elif (SYS_CHIP_MODULE == ALI_M3327C)
osd_dev = (struct osd_device *)dev_get_by_name("OSD_M3327C_1");
#endif
OSD_SetDeviceHandle(osd_dev);
OSD_InitScreen();
/* open RF module */
#if (SYS_CHIP_MODULE == ALI_M3327)
if(RET_SUCCESS != rfm_open((struct rfm_device*) dev_get_by_id(HLD_DEV_TYPE_RFM, 0)))
{
PRINTF("rfm module open fail\n");
//ASSERT(0);
}
#endif
if(libpub27_init()!=RET_SUCCESS)
PRINTF("libpub27_init Init failed\n");
#ifndef EPG_SUPPORT_DISABLE
#ifdef NEW_EPG_ARCH
epg_init(EpgSendPFUpdateToUI, EpgSendSchUpdateToUI, NULL);
#else
if(!epg_task_init())
PRINTF("Epg task init failed \n");
#endif
#endif
if(!ap_task_init())
PRINTF("ap_task_init Init failed!\n");
//Liuyi added 2004-9-5
/*
retVal = UIGameTaskInit(task_id++);
if (retVal != SUCCESS)
{
PRINTF("game task init failed!\n");
return;
}
*/
#if (SYS_CHIP_MODULE == ALI_M3327C)
if(!blogo_switch)
vdec_stop((struct vdec_device *)dev_get_by_type(NULL, HLD_DEV_TYPE_DECV),FALSE,FALSE); //stop logo to switch 1/4 frame david ding
#endif
#if (SYS_CHIP_MODULE == ALI_M3327C)
if(init_db() != SUCCESS)
set_default_value(DEFAULT_DOMESTIC_PROG);
if(get_node_num(TYPE_SAT_NODE,NULL) == 0)
set_default_value(DEFAULT_DOMESTIC_PROG);
#else
if(init_db() != SUCCESS)
set_default_value(DEFAULT_ALL_PROG);
if((get_node_num(TYPE_SAT_NODE,NULL) == 0) && (SUCCESS != load_tmp_data((UINT8*)&system_config,sizeof(system_config))))
//if((get_node_num(TYPE_SAT_NODE,NULL) == 0)) // debug 744, eric
set_default_value(DEFAULT_ALL_PROG);
#endif
// db_init();
//init_clock(NULL);
/*if(sys_data_get_menu_lock())
{
if(!epg_task_init(task_id++,mbf_id++,flag_id++))
PRINTF(" epg task Init failed!\n");
else
set_flg(get_epg_flag_id(), COMMAND_TDT_ENABLE);
}
*/
#ifdef CALENDAR_SUPPORT
/* for TDT service */
date.year = 2005;
date.month = 1;
date.day = 1;
date.hour = 0;
date.min = 0;
date.sec = 0;
set_STC_offset(8,0,0);
set_STC_time(&date); //default date
init_clock(NULL);
start_tdt();
#endif
#if (TTX_ON == 1)
TTXEng_Init();
ttx_enable(TRUE);
#endif
#if (SUBTITLE_ON == 1)
subt_enable(TRUE);
#endif
#ifdef RECORD_SUPPORT
//if ((FsMountDev(0)!=TRUE)||(FsMount(0,0)==NULL)) {
// PRINTF("WinDVR_InitData()----mount fs error! \n");
//}
#endif
api_cas_register(NULL);
#ifdef _Patch
{
extern INT32 api_cas_load_keycode();
api_cas_load_keycode();
}
// by zkc for newpatch
libc_printf("APP init finished...\n");
cas_initialize(2);
api_cas_start();
#endif
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -