DWORD mpg_cmd_stop_proc() { DWORD ret; LBL_STOP: ENTER_DEC_CMD(); ret = PEStopPly(); if(pDecFuncTable) { (*pDecFuncTable)[m_CurPlaystate][m_NxtPlaystate](&m_DecoderCtrl, m_CurPlaySpeed, m_SearchTime); } else { if (g_VideoDecRunning) { struct vpo_device *vpo_dev; vpo_dev = (struct vpo_device *)dev_get_by_id(HLD_DEV_TYPE_DIS, 0); if (vpo_dev) vpo_win_onoff(vpo_dev, FALSE); #ifdef DUAL_VIDEO_OUTPUT vpo_dev = (struct vpo_device *)dev_get_by_id(HLD_DEV_TYPE_DIS, 1); if (vpo_dev) vpo_win_onoff(vpo_dev, FALSE); // avoid green screen #endif } } LEAVE_DEC_CMD(); while(g_VideoDecRunning) { osal_task_sleep(1); if (m_NxtPlaystate != PEStop) goto LBL_STOP; } return ret; }
INT32 ali_ipanel_exit_mw() { INT32 ret = SUCCESS; UINT32 flag_value = 0; struct dmx_device *dmx = (struct dmx_device*)dev_get_by_id(HLD_DEV_TYPE_DMX, 0); struct vpo_device *vpo_dev = (struct vpo_device*)dev_get_by_id(HLD_DEV_TYPE_DIS, 0); if (ali_ipanel_flag_id == OSAL_INVALID_ID) { IPANEL_PRINTF("%s() ali_ipanel_flag_id invalid! \n", __FUNCTION__); return - 1; } //start dmx, ipanel porting stopped dmx and changed buff mode dmx_io_control(dmx, DMX_SWITCH_TO_UNI_BUF, 0); dmx_io_control(dmx, DMX_CHANGE_THLD, (0 << 16) | (16)); dmx_start(dmx); //open vpo vpo_win_onoff(vpo_dev, TRUE); //open sie /* if (SUCCESS != sie_open(dmx, PSI_MODULE_CONCURRENT_FILTER, NULL, 0)) { IPANEL_PRINTF("%s() sie_open failed! \n", __FUNCTION__); return - 1; }*/ //resum key task key_task_resume(); //suspend ota task ota_task_resume(); //start tdt start_tdt(); sdt_monitor_on(0); //set flag to enable ali application ALI_IPANEL_LEAVE_MUTEX(ALI_IPANEL_FLAG_EXIT_MW); return ret; }
static PRESULT preview_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { char progress_strs[20]; static UINT16 callback_cnt = 0; UINT8 i; UINT16 curpos; FileInfo file_node; char image_name[FULL_PATH_SIZE]; UINT32 file_idx; PRESULT ret = PROC_PASS; switch(event) { case EVN_PRE_OPEN: if(from_imagepreview == TRUE && back_to_filelist == TRUE) { from_imagepreview = FALSE; back_to_filelist = FALSE; return PROC_LEAVE; } api_set_preview_vpo_color(TRUE); preview_init(); //imagedec_ioctl(1,IMAGEDEC_IO_CMD_FILL_LOGO,0x108080); //imagedec_ioctl(1,IMAGEDEC_IO_CMD_FILL_LOGO,0xB9748F);//yvu imagedec_ioctl(1, IMAGEDEC_IO_CMD_FILL_LOGO, 0x356B9D);//yvu image_abort(); preview_image(image_idx_inpage, image_multiview_first + image_idx_inpage); show_title(hl_index); break; case EVN_POST_OPEN: show_loadinglogo(1);//not show first loading icon break; case EVN_PRE_DRAW: break; case EVN_UNKNOWN_ACTION: break; case EVN_PRE_CLOSE: g_from_imagepreview = TRUE; if(image_folderloop_flag == 1)//filelist { curpos = OSD_GetMtrxboxCurPos(&imgpreview_mbx_img); get_file_from_play_list(cur_playlist_image, (image_multiview_first+curpos), &file_node); win_get_fullname(image_name, file_node.path, file_node.name); usblist_set_filelist_param(image_name); } break; case EVN_POST_CLOSE: image_abort(); from_imagepreview = FALSE; vpo_win_onoff((struct vpo_device *)dev_get_by_id(HLD_DEV_TYPE_DIS, 0), FALSE); vpo_win_onoff((struct vpo_device *)dev_get_by_id(HLD_DEV_TYPE_DIS, 1), FALSE); OSD_ClearObject((POBJECT_HEAD)&imgpreview_title,C_UPDATE_ALL); OSD_ClearObject((POBJECT_HEAD)&imgpreview_mbx_img,C_UPDATE_ALL); break; case EVN_MSG_GOT: if(param1 == CTRL_MSG_SUBTYPE_CMD_STO && param2 == USB_STATUS_OVER) { //storage_dev_mount_hint(1); file_list_check_storage_device(FALSE, FALSE); } //show dec percent else if ((param1 == CTRL_MSG_SUBTYPE_STATUS_JPEG_DEC_PROCESS) || (param1 == CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER)) { // if(CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER == param1) // SDBBP(); if ((param2 < 100) && (param1 == CTRL_MSG_SUBTYPE_STATUS_JPEG_DEC_PROCESS)) { callback_cnt++; sprintf(progress_strs,"%d%%.",param2); for(i = 0;i < (callback_cnt%3);i++) { sprintf(progress_strs,"%s%s",progress_strs,"."); } OSD_SetTextFieldContent(&imgpreview_txt_decode,STRING_ANSI,(UINT32)progress_strs); OSD_DrawObject((POBJECT_HEAD)&imgpreview_txt_decode,C_UPDATE_ALL); } else if((param2 >= 100) || (param1 == CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER)) { OSD_ClearObject((POBJECT_HEAD)&imgpreview_txt_decode,C_UPDATE_ALL); // OSD_ObjClose((POBJECT_HEAD)&imgpreview_txt_decode,C_UPDATE_ALL); } } if(param1 == CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER) { image_abort(); image_idx_inpage++; if(image_idx_inpage < image_cnt_inpage) { preview_image(image_idx_inpage, image_multiview_first + image_idx_inpage); } } else if(param1 == CTRL_MSG_SUBTYPE_STATUS_MP3OVER) { win_play_next_music_ex(); } else if(param1 == CTRL_MSG_SUBTYPE_CMD_UPDATE_VIEW) { } else {} break; default: break; } return ret; }
INT32 ali_ipanel_enter_mw(UINT32 param1, UINT32 param2) { struct osd_device *osd_dev = NULL; INT32 ret = SUCCESS; VSCR *lpVscr; if (ali_ipanel_flag_id == OSAL_INVALID_ID) { ali_ipanel_flag_id = osal_flag_create(0); if (ali_ipanel_flag_id == OSAL_INVALID_ID) { IPANEL_PRINTF("%s() create flag failed\n", __FUNCTION__); return - 1; } } //close lib monitor dm_set_onoff(0); stop_tdt(); epg_off(); sdt_monitor_off(); //suspend key task key_task_suspend(); //suspend ota task ota_task_suspend(); //close sie to stop get si section /*if (SUCCESS != sie_close()) { IPANEL_PRINTF("%s() close sie failed\n", __FUNCTION__); return - 1; }*/ //close vpo struct vpo_device *vpo_dev = (struct vpo_device *)dev_get_by_id ( HLD_DEV_TYPE_DIS, 0 ); vpo_win_onoff(vpo_dev, FALSE); #if(CAS_TYPE==CAS_CDCA3||CAS_TYPE == CAS_TF||CAS_TYPE==CAS_CDCA) ap_osd_layer2_exit(); #endif //close osd osd_dev = (struct osd_device *)dev_get_by_id(HLD_DEV_TYPE_OSD, 0); if(osd_dev!=NULL) OSDDrv_Close((HANDLE)osd_dev); osd_dev = (struct osd_device *)dev_get_by_id(HLD_DEV_TYPE_OSD, 1); if(osd_dev!=NULL) OSDDrv_Close((HANDLE)osd_dev); #ifdef USE_LIB_GE struct ge_device* ge_dev= (struct ge_device*)dev_get_by_id(HLD_DEV_TYPE_GE, 0); app_gui_release(1); ge_close(ge_dev); #endif //free osd vscr buf OSD_TaskBuffer_Free(osal_task_get_current_id(), NULL); lpVscr = OSD_GetTaskVscr(osal_task_get_current_id()); lpVscr->lpbScr = NULL; recreate_prog_view(VIEW_ALL|PROG_ALL_MODE, 0); ipanel_porting_dmx_init(); //call ipanel init ipanel_task_init(param1, param2); //suspend on ali_ipanel_flag_id wait ipanel exit ALI_IPANEL_ENTER_MUTEX(ALI_IPANEL_FLAG_EXIT_MW); osd_dev = (struct osd_device *)dev_get_by_id(HLD_DEV_TYPE_OSD, 0); if(osd_dev!=NULL) ap_osd_init(); #if 0//ndef MIS_AD #ifdef MULTI_CAS #if((CAS_TYPE==CAS_CDCA)||(CAS_TYPE==CAS_TF)||(CAS_TYPE==CAS_DVT)) osd_dev = (struct osd_device *)dev_get_by_id(HLD_DEV_TYPE_OSD, 1); if(osd_dev!=NULL) ap_osd_layer2_init(); #endif #endif #endif return ret; }
void power_off_process(void) { struct YCbCrColor bgcolor; extern struct rfm_device* g_rfm_dev; extern struct scart_device* g_scart_dev; #ifdef DVR_PVR_SUPPORT api_pvr_clear_up_all(); #endif // SE: Mute before scart power off to avoid noise api_audio_set_mute(TRUE); #if defined(HW_SS830C)||defined(HW_SS830C2) //Wirte GPIO#5 to high to avoid noise (used on SS830C) HAL_GPIO_BIT_DIR_SET(5, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(5, 1); #endif api_Scart_TVSAT_Switch(0); api_Scart_Power_OnOff(0); api_Scart_RGB_OnOff(0);/*CVBS mode*/ #ifdef VDAC_USE_SVIDEO_TYPE api_Svideo_OnOff(0); #endif api_Scart_OutPut_Switch(0); SetLNBShortDetect(0); Set12VShortDetect(0); api_LNB_power(0); #if(SYS_12V_SWITCH == SYS_FUNC_ON) api_diseqc_set_12v(g_nim_dev, 0); #endif #ifdef USB_MP_SUPPORT if(system_state == SYS_STATE_USB_MP) { ap_udisk_close(); } #endif #ifndef NEW_DEMO_FRAME if(hde_get_mode() != VIEW_MODE_MULTI) UIChChgStopProg(TRUE); #endif #if (TTX_ON == 1) ttx_enable(FALSE); #endif #if (SUBTITLE_ON == 1) subt_enable(FALSE); #endif sie_close(); OSD_ShowOnOff(OSDDRV_OFF); #ifdef NEW_DEMO_FRAME sim_close_monitor(0); #else si_monitor_off(0xFFFFFFFF); #endif stop_tdt(); epg_off(); vpo_win_onoff(g_vpo_dev, FALSE); #ifdef DUAL_VIDEO_OUTPUT if(g_sd_vpo_dev != NULL) vpo_win_onoff(g_sd_vpo_dev,TRUE); #endif dm_set_onoff(0); bgcolor.uY = 16; bgcolor.uCb = 128; bgcolor.uCr = 128; vpo_ioctl(g_vpo_dev,VPO_IO_SET_BG_COLOR,(UINT32)&bgcolor); //close drivers dmx_stop( g_dmx_dev); dmx_close( g_dmx_dev); if (g_dmx_dev2) { dmx_stop(g_dmx_dev2); dmx_close(g_dmx_dev2); } deca_stop(g_deca_dev,0,ADEC_STOP_IMM); deca_close(g_deca_dev); vdec_close(g_decv_dev); // Power HDMI phy at standby mode. #ifdef HDTV_SUPPORT struct hdmi_device *hdmi_dev; hdmi_dev = (struct hdmi_device *)dev_get_by_id(HLD_DEV_TYPE_HDMI, 0); if (hdmi_dev != NULL) { if (SUCCESS != hdmi_dev->close(hdmi_dev)) { PRINTF("hdmi_close failed!!\n"); ASSERT(0); } } #endif vpo_close(g_vpo_dev); #ifdef DUAL_VIDEO_OUTPUT if(RET_SUCCESS!=vpo_close((struct vpo_device *)dev_get_by_id(HLD_DEV_TYPE_DIS, 1))) ASSERT(0); #endif snd_close(g_snd_dev); nim_close(g_nim_dev); if(g_nim_dev2) nim_close(g_nim_dev2); if(g_rfm_dev) rfm_close(g_rfm_dev); #if (SYS_MAIN_BOARD == BOARD_M3329E_DEMO01V01 || SYS_MAIN_BOARD == BOARD_DB_M3602_02V01 || SYS_MAIN_BOARD == BOARD_DB_M3602_04V01) if(g_scart_dev) scart_close(g_scart_dev); #endif led_display_flag = 0; #if (SYS_MAIN_BOARD == BOARD_S3602_DEMO) // Power off HAL_GPIO_BIT_DIR_SET(25, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(25, 0); #elif (SYS_MAIN_BOARD == BOARD_DB_M3602_02V01 || SYS_MAIN_BOARD == BOARD_DB_M3602_04V01) // Power off /*alfred.wu 不允许ali的power off*/ /* HAL_GPIO_BIT_DIR_SET(61, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(61, 1); // Tuner LNB power off HAL_GPIO_BIT_DIR_SET(73, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(73, 1); *//*end*/ #endif }