static void PlayProc() { RET_CODE ret; char name[FULL_PATH_SIZE]; FileInfo file_node; int ret_val; if (MPEGInfo.PlayState >= MPEG_PAUSE && MPEGInfo.PlayState <= MPEG_STEP) { mpg_cmd_play_proc(); MPEGInfo.PlayState = MPEG_PLAY; MPEGInfo.PlaySpeed = 0; StartRefreshTimer(); } else if (MPEGInfo.PlayState == MPEG_STOP) { api_stop_timer(&mpeg_refresh_id); mpeg_refresh_id = api_start_cycletimer("MPEGRFS", 200, mpeg_refresh_handler); ret = get_file_from_file_list(win_file_list[VIDEO_FILE_LIST], mpeglist_idx, &file_node); if(ret == RET_FAILURE) { //return FALSE; } win_get_fullname(name, file_node.path, file_node.name); ret_val = video_dec_file(name, 0); if(ret < 0) { //return FALSE; } MPEGInfo.PlayState = MPEG_PLAY; MPEGInfo.PlaySpeed = 0; StartRefreshTimer(); } }
static void show_title(UINT16 idx) { char str_name[FULL_PATH_SIZE],str_buff[FULL_PATH_SIZE]; char full_name[FULL_PATH_SIZE]; TEXT_FIELD *pTxt; FileInfo file_node; if(image_folderloop_flag == 1)//filelist { STRCPY(str_buff, "Disk "); get_file_from_play_list(cur_playlist_image, idx, &file_node); win_get_fullname(full_name, file_node.path, file_node.name); win_get_display_dirname(str_name, full_name); strcat(str_buff, str_name); } else//playlist { STRCPY(str_buff, "Image Play List/"); get_file_from_play_list(cur_playlist_image,idx,&file_node); //filter_unkownfont_name(file_node.name,str_name); win_shorten_filename(file_node.name,str_name); strcat(str_buff, str_name); } pTxt = &imgpreview_title; OSD_ClearObject((POBJECT_HEAD)pTxt,C_UPDATE_ALL); OSD_SetTextFieldContent(pTxt,STRING_UTF8,(UINT32)str_buff); OSD_DrawObject((POBJECT_HEAD)pTxt,C_UPDATE_ALL); }
static BOOL MPEGYT_player_init(void) { POBJECT_HEAD pCtrl; PROGRESS_BAR* bar; RET_CODE ret; FileInfo file_node; char name[FULL_PATH_SIZE]; MEMSET(&BarState, 0, sizeof(BarState)); BarState.nRange = 100; BarState.State = NORMAL_MOVING; bar = &mpegYT_player_bar; OSD_SetProgressBarValue(bar, 100); OSD_SetProgressBarRange(bar, 0, 100); MEMSET(&MPEGYTInfo, 0, sizeof(MPEGYTInfo)); MPEGYTInfo.PlayTime = 0; MPEGYTInfo.TotalTime = 0; MPEGYTInfo.PlaySpeed = 0; m_HideWindow = FALSE; mpegYT_timeout_id = OSAL_INVALID_ID; if (GetMuteState()) { ShowMuteOnOff(); } StartRefreshTimer(); ret = get_file_from_file_list(win_file_list[VIDEO_FILE_LIST], mpegYTlist_idx, &file_node); if(ret == RET_FAILURE) { return FALSE; } win_get_fullname(name, file_node.path, file_node.name); video_dec_file(name, 0); MPEGYTInfo.TotalTime = get_video_total_time(); MPEGYTInfo.PlayState = MPEG_PLAY; BarState.nRange = MPEGYTInfo.TotalTime; return TRUE; }
UINT32 win_get_file_idx(FileListHandle file_list, char *file_name) { UINT32 uIdx,uTotal; FileInfo file_node; char full_name[MAX_FILE_NAME_SIZE]; unsigned int dir_num,file_num; get_file_list_info(file_list, &dir_num, &file_num, NULL); uTotal = dir_num+file_num; for(uIdx=0; uIdx<uTotal; uIdx++) { get_file_from_file_list(file_list, uIdx+1, &file_node); win_get_fullname(full_name, file_node.path, file_node.name); if(STRCMP(file_name, full_name) == 0) break; } if(uIdx == uTotal) uIdx = (UINT16)(~0); return uIdx; }
RET_CODE win_set_imageplay_param(PlayListHandle *pplaylist, UINT32 idx, UINT8 folder_flag) { UINT8 back_saved; RET_CODE retcode = RET_SUCCESS; FileInfo filenode; char image_name[FULL_PATH_SIZE]; int playlist_idx; image_folderloop_flag = folder_flag; if(image_folderloop_flag == 1) { if(*pplaylist != NULL) { if(RET_SUCCESS != delete_play_list(*pplaylist)) { return RET_FAILURE; } } *pplaylist = create_play_list(IMAGE_PLAY_LIST, "folder_image"); if(*pplaylist == NULL) { return RET_FAILURE; } get_file_from_file_list(cur_filelist, idx, &filenode); win_get_fullname(image_name, filenode.path, filenode.name); win_compopup_init(WIN_POPUP_TYPE_SMSG); win_compopup_set_frame(200, 200, 200, 100); win_compopup_set_msg(NULL, NULL,RS_DISPLAY_PLEASE_WAIT); win_compopup_open_ext(&back_saved); retcode = add_all_file_list_items_to_play_list(*pplaylist, cur_filelist); osal_task_sleep(500); win_compopup_smsg_restoreback(); if(retcode != RET_SUCCESS) { return RET_FAILURE; } if((filenode.filetype == F_JPG) || (filenode.filetype == F_BMP)) { playlist_idx = get_play_list_index_by_name(*pplaylist, image_name); } else { playlist_idx = 1; } if(playlist_idx == -1) { return RET_FAILURE; } cur_playlist_image = *pplaylist; cur_image_idx = playlist_idx; } else { cur_playlist_image = *pplaylist; cur_image_idx = idx; } set_play_list_info(cur_playlist_image, &cur_image_idx, NULL); return RET_SUCCESS; }
static PRESULT win_imageslide_unkown_act_proc(VACTION act) { PRESULT ret = PROC_PASS; UINT8 rotate_mode, display_mode; POBJECT_HEAD win,mplayer_menu; int next_image; UINT16 slide_interval; FileInfo file_node; char image_name[FULL_PATH_SIZE]; switch(act) { case VACT_ROTATEL: case VACT_ROTATER: if(FALSE == decode_finish_flag) break; if(imageslide_pause_state == IMG_UNPAUSE_STATE) { api_stop_timer(&imageslide_timer_id); imageslide_pause_state = IMG_PAUSE_STATE; } if(act == VACT_ROTATER) { image_rot_ang = (image_rot_ang + 1)%IMAGE_ANGLE_CNT; } else { image_rot_ang = (image_rot_ang+IMAGE_ANGLE_CNT - 1)%IMAGE_ANGLE_CNT; } image_rotate(image_rot_ang); if(image_rot_ang == ANG_ORI) { win_imageslide_showrotate(FALSE); win_imageslide_showpause(); } else { OSD_ClearObject((POBJECT_HEAD)&imageslide_pause, 0); win_imageslide_showrotate(TRUE); } slideidx_display(TRUE); break; case VACT_INCREASE: case VACT_DECREASE: if(imageslide_pause_state == IMG_UNPAUSE_STATE) { api_stop_timer(&imageslide_timer_id); imageslide_pause_state = IMG_PAUSE_STATE; win_imageslide_showpause(); } if(act == VACT_INCREASE) { next_image = get_next_index_from_play_list(cur_playlist_image); } else { next_image = get_previous_index_from_play_list(cur_playlist_image); } if(next_image != -1) { cur_image_idx = next_image; api_stop_timer(&imageslide_timer_id); image_abort(); if(image_rot_ang!= ANG_ORI) { image_rot_ang = ANG_ORI; win_imageslide_showrotate(FALSE); win_imageslide_showpause(); } osal_task_sleep(20); set_play_list_info(cur_playlist_image,&cur_image_idx,NULL); get_file_from_play_list(cur_playlist_image, cur_image_idx, &file_node); win_get_fullname(image_name, file_node.path, file_node.name); win_image_file_play(image_name, image_rot_ang); decode_finish_flag = FALSE; osal_task_sleep(20); slideidx_display(TRUE); } break; case VACT_PAUSE: if(imageslide_pause_state == IMG_UNPAUSE_STATE) { imageslide_pause_state = IMG_PAUSE_STATE; win_imageslide_showpause(); api_stop_timer(&imageslide_timer_id); } else { if(image_rot_ang == ANG_ORI) { imageslide_pause_state = IMG_UNPAUSE_STATE; slide_interval = (image_slide_setting.uTime_gap * 1000); win_imageslide_showpause(); if(0 != image_slide_setting.uTime_gap) imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler); } } ret = PROC_LOOP; break; case VACT_PLAY: if(IMG_PAUSE_STATE == imageslide_pause_state) { if(image_rot_ang == ANG_ORI) { imageslide_pause_state = IMG_UNPAUSE_STATE; win_imageslide_showpause(); slide_interval = (image_slide_setting.uTime_gap * 1000); if(0 != image_slide_setting.uTime_gap) imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler); } } ret = PROC_LOOP; break; case VACT_ZOOM: if(decode_finish_flag) { if(imageslide_pause_state == IMG_UNPAUSE_STATE) { imageslide_pause_state = IMG_PAUSE_STATE; win_imageslide_showpause(); api_stop_timer(&imageslide_timer_id); } win_mpzoom_open(); if(image_rot_ang == ANG_ORI) { imageslide_pause_state = IMG_UNPAUSE_STATE; slide_interval = (image_slide_setting.uTime_gap * 1000); win_imageslide_showpause(); imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler); } } break; case VACT_MP: win = (POBJECT_HEAD)(&g_win_imageslide); OSD_ObjClose(win,C_CLOSE_CLRBACK_FLG); while((POBJECT_HEAD)&g_win_usb_filelist != menu_stack_get_top()) { menu_stack_pop(); } image_abort(); win_set_image_multiview_firstidx(); mplayer_menu = (POBJECT_HEAD)(&g_win_imagepreview); if(OSD_ObjOpen(mplayer_menu,(UINT32)(~0)) != PROC_LEAVE) menu_stack_push(mplayer_menu); break; default: break; } return ret; }
static PRESULT slide_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; UINT16 slide_interval; PlayListLoopType loop_type; VACTION unact; FileInfo file_node; char image_name[FULL_PATH_SIZE]; int next_image; static UINT8 timer_start_flag = 0; UINT32 file_idx; switch(event) { case EVN_PRE_OPEN: imageslide_timer_id = OSAL_INVALID_ID; imageslide_proc_id = OSAL_INVALID_ID; if(from_imagepreview == TRUE) { imageslide_pause_state = IMG_PAUSE_STATE; } else { imageslide_pause_state = IMG_UNPAUSE_STATE; } win_imageslide_showpause(); api_set_preview_vpo_color(FALSE); break; case EVN_POST_OPEN: image_rot_ang = ANG_ORI; loop_type = image_slide_setting.bRepeat ? PLAY_LIST_REPEAT : PlAY_LIST_SEQUENCE; set_play_list_info(cur_playlist_image,&cur_image_idx,&loop_type); get_file_from_play_list(cur_playlist_image, cur_image_idx, &file_node); win_get_fullname(image_name, file_node.path, file_node.name); win_image_file_play(image_name, image_rot_ang); slideidx_display(TRUE); decode_finish_flag = FALSE; break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); ret = win_imageslide_unkown_act_proc(unact); break; case EVN_PRE_CLOSE: g_from_imageslide = TRUE; imagedec_ioctl(1, IMAGEDEC_IO_CMD_CLEAN_FRM, TRUE); //when quit win_slide, clean 2 frm buffer if(image_folderloop_flag == 1)//filelist { get_file_from_play_list(cur_playlist_image, cur_image_idx, &file_node); win_get_fullname(image_name, file_node.path, file_node.name); usblist_set_filelist_param(image_name); } image_abort(); api_stop_timer(&imageslide_timer_id); api_stop_timer(&imageslide_proc_id); timer_start_flag = 0; imageslide_timer_id = OSAL_INVALID_ID; imageslide_proc_id = OSAL_INVALID_ID; win_set_image_multiview_firstidx(); OSD_ClearObject((POBJECT_HEAD)&imageslide_idx,C_UPDATE_ALL); OSD_ClearObject((POBJECT_HEAD)&imageslide_pause,C_UPDATE_ALL); OSD_ClearObject((POBJECT_HEAD)&decode_txt_progress,C_UPDATE_ALL); OSD_ClearObject((POBJECT_HEAD)&decode_bmp_progress,C_UPDATE_ALL); break; case EVN_POST_CLOSE: image_restore_vpo_rect();//TODO 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); } else if(param1 == CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER) { image_abort(); decode_finish_flag = TRUE; if(imageslide_pause_state == IMG_UNPAUSE_STATE) { slide_interval = (image_slide_setting.uTime_gap * 1000); if(0 != slide_interval) imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler); else { imageslide_pause_state = IMG_PAUSE_STATE; win_imageslide_showpause(); } } } else if (param1 == CTRL_MSG_SUBTYPE_STATUS_IMGTOOVER) // timer timeouts { //TODO: play next next_image = get_next_index_from_play_list(cur_playlist_image); if (next_image != -1) { cur_image_idx = next_image; set_play_list_info(cur_playlist_image,&cur_image_idx,NULL); get_file_from_play_list(cur_playlist_image, cur_image_idx, &file_node); win_get_fullname(image_name, file_node.path, file_node.name); win_image_file_play(image_name, image_rot_ang); decode_finish_flag = FALSE; ap_send_msg(CTRL_MSG_SUBTYPE_CMD_UPDATE_VIEW, 0, TRUE); } else { ap_send_msg(CTRL_MSG_SUBTYPE_CMD_EXIT, 0,TRUE); } } else if(param1 == CTRL_MSG_SUBTYPE_CMD_EXIT) { if(from_imagepreview == TRUE) back_to_filelist = TRUE; ret = PROC_LEAVE; } else if(param1 == CTRL_MSG_SUBTYPE_CMD_UPDATE_VIEW) { slideidx_display(TRUE); ret = PROC_LOOP; } else if(param1 == CTRL_MSG_SUBTYPE_STATUS_MP3OVER) { win_play_next_music_ex(); } else if(param1 == CTRL_MSG_SUBTYPE_STATUS_PROC_UPDATE) { OSD_SetBitmapContent(&decode_bmp_progress, loading_bmp_ids[proc_cnt]); OSD_DrawObject((POBJECT_HEAD)&decode_bmp_progress,C_UPDATE_ALL); proc_cnt ++; if(proc_cnt >= LOADING_MAX) proc_cnt = 0; } if ((param1 == CTRL_MSG_SUBTYPE_STATUS_JPEG_DEC_PROCESS) || (param1 == CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER)) { if ((param2 < 100) && (param1 == CTRL_MSG_SUBTYPE_STATUS_JPEG_DEC_PROCESS)) { loading_progress = (param2 * LOADING_MAX)/100; if (loading_progress > LOADING_MAX - 1) loading_progress = LOADING_MAX - 1; if(0 == timer_start_flag) { imageslide_proc_id = OSAL_INVALID_ID; imageslide_proc_id = api_start_cycletimer("SLIDE_PROC", 200, win_imageslide_proc_handler); timer_start_flag = 1; } // OSD_SetBitmapContent(&decode_bmp_progress, loading_bmp_ids[loading_progress]); // OSD_DrawObject((POBJECT_HEAD)&decode_bmp_progress,C_UPDATE_ALL); } else if((param2 >= 100) || (param1 == CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER)) { OSD_ClearObject((POBJECT_HEAD)&decode_bmp_progress,C_UPDATE_ALL); api_stop_timer(&imageslide_proc_id); imageslide_proc_id = OSAL_INVALID_ID; timer_start_flag = 0; proc_cnt = 0; // imageslide_proc_id = OSAL_INVALID_ID; } } break; default: break; } return ret; }
static PRESULT movefile_item_enter(UINT16 uIdx) { PRESULT ret = PROC_LOOP; BOOL bRoot; char str_name[FULL_PATH_SIZE],str_txt[FULL_PATH_SIZE]; FileInfo file_node; POBJLIST pOl; TEXT_FIELD *pTxt; UINT8 back_saved; bRoot = win_check_openroot(win_move_dirlist); if((uIdx == 0) && (bRoot == FALSE)) {//TODO:Exit to up dir get_file_list_info(win_move_dirlist, &movefile_dirnum, &movefile_filenum, str_name); win_get_parent_dirname(str_txt, str_name); win_compopup_init(WIN_POPUP_TYPE_SMSG); win_compopup_set_frame(200, 200, 200, 100); win_compopup_set_msg(NULL, NULL,RS_DISPLAY_PLEASE_WAIT); win_compopup_open_ext(&back_saved); read_folder_to_file_list(win_move_dirlist, str_txt); win_compopup_smsg_restoreback(); bRoot = win_check_openroot(win_move_dirlist); if(bRoot) { file_list_change_device(win_move_dirlist, movefile_cur_device); } movefile_curidx = win_get_file_idx(win_move_dirlist, str_name); if(movefile_curidx == (UINT16)(~0)) movefile_curidx = 0; get_file_list_info(win_move_dirlist, &movefile_dirnum, &movefile_filenum, str_name); pTxt = &mpmove_dir_txt; win_get_display_dirname(str_txt, str_name);//get dirname to show OSD_SetTextFieldContent(pTxt,STRING_UTF8,(UINT32)str_txt); OSD_DrawObject((POBJECT_HEAD)pTxt,C_UPDATE_ALL); pOl = &ol_mpmove; movefile_curidx = movefile_curidx + (bRoot?0:1); OSD_SetObjListCurPoint(pOl, movefile_curidx); OSD_SetObjListNewPoint(pOl, movefile_curidx); OSD_SetObjListTop(pOl, movefile_curidx); if(bRoot == TRUE) OSD_SetObjListCount(pOl, (movefile_dirnum + movefile_filenum));//to show it's child dir else OSD_SetObjListCount(pOl, (movefile_dirnum + movefile_filenum + 1));//to show it's child dir if(OSD_GetObjListCount(pOl) <= MV_ITEM_CNT) OSD_SetObjListTop(pOl, 0); OSD_TrackObject((POBJECT_HEAD)pOl, C_UPDATE_ALL | C_DRAW_SIGN_EVN_FLG); return ret; } if(!bRoot) { uIdx--; } get_file_from_file_list(win_move_dirlist, uIdx+1, &file_node); if(file_node.filetype == F_DIR) { //TODO: Enter child directory & retrive items,set not_root flag win_get_fullname(str_name, file_node.path, file_node.name); win_compopup_init(WIN_POPUP_TYPE_SMSG); win_compopup_set_frame(200, 200, 200, 100); win_compopup_set_msg(NULL, NULL,RS_DISPLAY_PLEASE_WAIT); win_compopup_open_ext(&back_saved); read_folder_to_file_list(win_move_dirlist, str_name); win_compopup_smsg_restoreback(); get_file_list_info(win_move_dirlist, &movefile_dirnum, &movefile_filenum, str_name); pTxt = &mpmove_dir_txt; win_get_display_dirname(str_txt, str_name);//get dirname to show OSD_SetTextFieldContent(pTxt,STRING_UTF8,(UINT32)str_txt); OSD_DrawObject((POBJECT_HEAD)pTxt,C_UPDATE_ALL); movefile_curidx = 0; pOl = &ol_mpmove; OSD_SetObjListCount(pOl, (movefile_dirnum + movefile_filenum + 1));//to show it's child dir OSD_SetObjListCurPoint(pOl, movefile_curidx); OSD_SetObjListNewPoint(pOl, movefile_curidx); OSD_SetObjListTop(pOl, movefile_curidx); OSD_TrackObject((POBJECT_HEAD)pOl, C_UPDATE_ALL | C_DRAW_SIGN_EVN_FLG); } else { //TODO:soc_printf("not dir!!\n"); } return ret; }
static PRESULT slide_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; UINT16 slide_interval; PlayListLoopType loop_type; struct osd_device *osd_dev; struct OSDRect pRect; struct OSDPara OpenPara; UINT32 region_id =0; VACTION unact; FileInfo file_node; char image_name[FULL_PATH_SIZE]; int next_image; static UINT8 timer_start_flag = 0; UINT32 file_idx; SYSTEM_DATA *sys_cfg = sys_data_get(); switch(event) { case EVN_PRE_OPEN: imageslide_timer_id = OSAL_INVALID_ID; imageslide_proc_id = OSAL_INVALID_ID; if(from_imagepreview == TRUE) { imageslide_pause_state = IMG_PAUSE_STATE; } else { imageslide_pause_state = IMG_UNPAUSE_STATE; } win_imageslide_showpause(); api_set_preview_vpo_color(FALSE); vpo_aspect_mode((struct vpo_device *)dev_get_by_id(HLD_DEV_TYPE_DIS,0), TV_4_3, NORMAL_SCALE); #ifdef DUAL_VIDEO_OUTPUT vpo_aspect_mode((struct vpo_device *)dev_get_by_id(HLD_DEV_TYPE_DIS,1), TV_4_3, NORMAL_SCALE); #endif break; case EVN_POST_OPEN: image_rot_ang = ANG_ORI; loop_type = image_slide_setting.bRepeat ? PLAY_LIST_REPEAT : PlAY_LIST_SEQUENCE; set_play_list_info(cur_playlist_image,&cur_image_idx,&loop_type); get_file_from_play_list(cur_playlist_image, cur_image_idx, &file_node); win_get_fullname(image_name, file_node.path, file_node.name); // while(jpeg_decoder_task_not_over) // { // libc_printf("error condition!\n"); // osal_task_sleep(20); // } image_abort(); timer_slide = osal_get_tick(); win_image_file_play(image_name, image_rot_ang); slideidx_display(TRUE); decode_finish_flag = FALSE; break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); ret = win_imageslide_unkown_act_proc(unact); break; case EVN_PRE_CLOSE: g_from_imageslide = TRUE; imagedec_ioctl(1, IMAGEDEC_IO_CMD_CLEAN_FRM, TRUE); //when quit win_slide, clean 2 frm buffer if(image_folderloop_flag == 1)//filelist { get_file_from_play_list(cur_playlist_image, cur_image_idx, &file_node); win_get_fullname(image_name, file_node.path, file_node.name); usblist_set_filelist_param(image_name); } image_abort(); ///* #ifdef DUAL_ENABLE #ifdef PNG_GIF_TEST pRect.uLeft =136; pRect.uTop = 40; pRect.uWidth = 1008;//OSD_MAX_WIDTH;//608; pRect.uHeight = 640;//OSD_MAX_HEIGHT;//430; OpenPara.eMode = OSD_HD_ARGB1555; OpenPara.uGAlpha = 0x0f; OpenPara.uGAlphaEnable = 0; OpenPara.uPalletteSel = 0; osd_dev = (struct osd_device *)dev_get_by_id(HLD_DEV_TYPE_OSD, 0); if (osd_dev != NULL) { OSDDrv_Close((HANDLE)osd_dev); //AD_GIF_PRINTF("%s() OSD_layer2 is closed!\n", __FUNCTION__); } OSDDrv_Open((HANDLE)osd_dev, &OpenPara); osal_task_sleep(20); //trans_color = OSD_GetTransColor(OpenPara.eMode,TRUE); OSDDrv_IoCtl((HANDLE)osd_dev, OSD_IO_SET_TRANS_COLOR, 0x00); OSDDrv_CreateRegion((HANDLE)osd_dev, region_id, &pRect, NULL); pRect.uLeft = pRect.uTop = 0; OSDDrv_RegionFill((HANDLE)osd_dev,region_id,&pRect,0x00); OSDDrv_ShowOnOff((HANDLE)osd_dev, TRUE); #endif #endif //*/ api_stop_timer(&imageslide_timer_id); api_stop_timer(&imageslide_proc_id); timer_start_flag = 0; imageslide_timer_id = OSAL_INVALID_ID; imageslide_proc_id = OSAL_INVALID_ID; win_set_image_multiview_firstidx(); sys_cfg = sys_data_get(); sys_data_set_display_mode(&(sys_cfg->avset)); OSD_ClearObject((POBJECT_HEAD)&imageslide_idx,C_UPDATE_ALL); OSD_ClearObject((POBJECT_HEAD)&imageslide_pause,C_UPDATE_ALL); OSD_ClearObject((POBJECT_HEAD)&decode_txt_progress,C_UPDATE_ALL); OSD_ClearObject((POBJECT_HEAD)&decode_bmp_progress,C_UPDATE_ALL); break; case EVN_POST_CLOSE: image_restore_vpo_rect();//TODO 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); } else if(param1 == CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER) { if(param2 > timer_slide) { image_abort(); } else { libc_printf("slide @@@@@@@@@@@@@@ es case\n"); break; } decode_finish_flag = TRUE; if(imageslide_pause_state == IMG_UNPAUSE_STATE) { slide_interval = (image_slide_setting.uTime_gap * 1000); if(0 != slide_interval) imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler); else { imageslide_pause_state = IMG_PAUSE_STATE; win_imageslide_showpause(); } } } else if (param1 == CTRL_MSG_SUBTYPE_STATUS_IMGTOOVER) // timer timeouts { //TODO: play next // while(jpeg_decoder_task_not_over) // { // libc_printf("\n%%%%%%%%%%%%%%%%%%%%%%%%%\n"); // osal_task_sleep(20); // } image_abort(); next_image = get_next_index_from_play_list(cur_playlist_image); if (next_image != -1) { cur_image_idx = next_image; set_play_list_info(cur_playlist_image,&cur_image_idx,NULL); get_file_from_play_list(cur_playlist_image, cur_image_idx, &file_node); win_get_fullname(image_name, file_node.path, file_node.name); win_image_file_play(image_name, image_rot_ang); decode_finish_flag = FALSE; ap_send_msg(CTRL_MSG_SUBTYPE_CMD_UPDATE_VIEW, 0, TRUE); } else { ap_send_msg(CTRL_MSG_SUBTYPE_CMD_EXIT, 0,TRUE); } } else if(param1 == CTRL_MSG_SUBTYPE_CMD_EXIT) { if(from_imagepreview == TRUE) back_to_filelist = TRUE; ret = PROC_LEAVE; } else if(param1 == CTRL_MSG_SUBTYPE_CMD_UPDATE_VIEW) { slideidx_display(TRUE); ret = PROC_LOOP; } else if(param1 == CTRL_MSG_SUBTYPE_STATUS_MP3OVER) { win_play_next_music_ex(); } else if(param1 == CTRL_MSG_SUBTYPE_STATUS_PROC_UPDATE) { OSD_SetBitmapContent(&decode_bmp_progress, loading_bmp_ids[proc_cnt]); OSD_DrawObject((POBJECT_HEAD)&decode_bmp_progress,C_UPDATE_ALL); proc_cnt ++; if(proc_cnt >= LOADING_MAX) proc_cnt = 0; } if ((param1 == CTRL_MSG_SUBTYPE_STATUS_JPEG_DEC_PROCESS) || (param1 == CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER)) { if ((param2 < 100) && (param1 == CTRL_MSG_SUBTYPE_STATUS_JPEG_DEC_PROCESS)) { loading_progress = (param2 * LOADING_MAX)/100; if (loading_progress > LOADING_MAX - 1) loading_progress = LOADING_MAX - 1; if(0 == timer_start_flag) { imageslide_proc_id = OSAL_INVALID_ID; imageslide_proc_id = api_start_cycletimer("SLIDE_PROC", 200, win_imageslide_proc_handler); timer_start_flag = 1; } // OSD_SetBitmapContent(&decode_bmp_progress, loading_bmp_ids[loading_progress]); // OSD_DrawObject((POBJECT_HEAD)&decode_bmp_progress,C_UPDATE_ALL); } else if((param2 >= 100) || (param1 == CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER)) { OSD_ClearObject((POBJECT_HEAD)&decode_bmp_progress,C_UPDATE_ALL); api_stop_timer(&imageslide_proc_id); imageslide_proc_id = OSAL_INVALID_ID; timer_start_flag = 0; proc_cnt = 0; // imageslide_proc_id = OSAL_INVALID_ID; } } break; default: break; } return ret; }
static void preview_image(UINT8 mbx_idx, UINT16 image_idx) { UINT16 Col, Row; UINT8 tv_mode; RECT rect_info; RET_CODE ret=RET_SUCCESS; UINT16 left, top; FileInfo file_node; char full_name[FULL_PATH_SIZE]; UINT16 img_top, img_height, img_gap_w, img_gap_h, img_left, img_width; struct OSDRect osd_rect; OSD_GetRectOnScreen(&osd_rect); img_left = (MBX_IMG_L + osd_rect.uLeft) * 720/1280; img_width = (MBX_IMG_WIDTH)*720/1280;//+2; img_gap_w = MBX_IMG_GAP*720/1280; img_gap_h = MBX_IMG_GAP*576/720; OSD_GetMtrxBoxCellLocation(&imgpreview_mbx_img, mbx_idx, &Col, &Row); left = MBX_IMG_L + (MBX_IMG_WIDTH+MBX_IMG_GAP)*Col; top = MBX_IMG_T + (MBX_IMG_HEIGHT+MBX_IMG_GAP)*Row; OSD_MoveObject((POBJECT_HEAD)&imgpreview_bmp_load,left+LOAD_OFFSET_L,top+LOAD_OFFSET_T,FALSE); OSD_ClearObject((POBJECT_HEAD)&imgpreview_bmp_load,C_UPDATE_ALL); OSD_MoveObject((POBJECT_HEAD)&imgpreview_txt_decode,left+DEC_OFFSET_L,top+DEC_OFFSET_T,FALSE); tv_mode = api_video_get_tvout(); if(TV_MODE_PAL == tv_mode || TV_MODE_720P_50 == tv_mode || TV_MODE_1080I_25 == tv_mode) { // rect_info.top = MBX_IMG_T + OSD_STARTROW_P + (MBX_IMG_HEIGHT+MBX_IMG_GAP)*Row +4; // rect_info.bottom = rect_info.top + MBX_IMG_HEIGHT-8; img_top = (MBX_IMG_T + osd_rect.uTop)*576/720; img_height = MBX_IMG_H*576/720; rect_info.top = img_top + (img_height+img_gap_h)*Row + 4; rect_info.bottom = rect_info.top + img_height - 8; } else { // rect_info.top = (MBX_IMG_T + OSD_STARTROW_N + (MBX_IMG_HEIGHT+MBX_IMG_GAP)*Row)*576/480+4; // rect_info.bottom = rect_info.top + MBX_IMG_HEIGHT*576/480-8; img_top = (MBX_IMG_T + osd_rect.uTop)*480/720; img_height = MBX_IMG_H*480/720; rect_info.top = (img_top + (img_height + img_gap_h) * Row) * 576/480 + 4; rect_info.bottom = rect_info.top + img_height * 576/480 - 8; } // rect_info.left = OSD_STARTCOL + MBX_IMG_L + (MBX_IMG_WIDTH+MBX_IMG_GAP)*Col+4; // rect_info.right = rect_info.left + MBX_IMG_WIDTH-8; rect_info.left = img_left + (img_width + img_gap_w) * Col + 4; rect_info.right = rect_info.left + img_width - 8; get_file_from_play_list(cur_playlist_image,image_idx,&file_node); win_get_fullname(full_name, file_node.path, file_node.name); win_image_file_preview(full_name, rect_info, IMAGEDEC_MULTI_PIC); // api_set_vpo_dit(TRUE); }
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; }