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

📄 root.c

📁 EMU_FTAbox_ref441328_code_source ali m3327
💻 C
📖 第 1 页 / 共 2 页
字号:
	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 + -