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 movefile_display_items(UINT16 uTop) { UINT8 i,root_offset,bRoot; char str_buff[MAX_FILE_NAME_SIZE + 1]; RET_CODE ret; TEXT_FIELD *pTxt; BITMAP *pBmp; FileInfo file_node; bRoot = win_check_openroot(win_move_dirlist); if(bRoot == FALSE) root_offset = 1;//if not root dir,add an item to exit else root_offset = 0; for(i = 0; i < MV_ITEM_CNT;i++) { if(((uTop+i) == 0) && (root_offset == 1)) { // pTxt = mpmove_idxs[i]; // OSD_SetTextFieldContent(pTxt,STRING_ANSI,(UINT32)"/.."); // pBmp = mpmove_icons[i]; // OSD_SetBitmapContent(pBmp, 0); pTxt = mpmove_files[i]; OSD_SetTextFieldContent(pTxt,STRING_ANSI,(UINT32)"/.."); continue; }//item exit ret = get_file_from_file_list(win_move_dirlist, (uTop+i + 1 - root_offset), &file_node); if(ret == RET_SUCCESS) { // pTxt = mpmove_idxs[i]; // sprintf(str_buff,"%d",(uTop + i + 1)); // OSD_SetTextFieldContent(pTxt,STRING_ANSI,(UINT32)str_buff); // pBmp = mpmove_icons[i]; // OSD_SetBitmapContent(pBmp, file_icon_ids[file_node.filetype]); pTxt = mpmove_files[i]; //filter_unkownfont_name(file_node.name,str_buff); win_shorten_filename(file_node.name,str_buff); OSD_SetTextFieldContent(pTxt,STRING_UTF8,(UINT32)str_buff); } else { // pTxt = mpmove_idxs[i]; // OSD_SetTextFieldContent(pTxt,STRING_ANSI,(UINT32)""); // pBmp = mpmove_icons[i]; // OSD_SetBitmapContent(pBmp, 0); pTxt = mpmove_files[i]; OSD_SetTextFieldContent(pTxt,STRING_ANSI,(UINT32)""); } } }
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 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 void win_mpeg_player_draw_infor(void) { BITMAP* bmp; TEXT_FIELD* txt; PROGRESS_BAR* bar; mpegplayer_bmp_t* bmp_desc; mpegplayer_txt_t* txt_desc; UINT32 i, hd_fulless; UINT16 icon; char string[30]; UINT32 hh, mm, ss; UINT32 play_pos = 0; FileInfo file_node; char name_buffer[MAX_FILE_NAME_SIZE + 1]; bmp = &mpeg_player_bmp; txt = &mpeg_player_text; bar = &mpeg_player_bar; for (i = 0; i < MPEG_BMP_NUM; i++) { bmp_desc = &mpegplayer_bmps[i]; icon = INVALID_ID; switch (bmp_desc->bmp_type) { case MPEG_BMP_STATIC: //icon = bmp_desc->icon; break; case MPEG_BMP_PLAY_RECORD: icon = bmp_desc->icon; break; case MPEG_BMP_PLAY_MODE: if (MPEGInfo.PlayState < sizeof(mpegplayer_status_icons) / 2) { icon = mpegplayer_status_icons[MPEGInfo.PlayState]; } break; case MPEG_BMP_HDD_STATUS: /* step_sectors = (hdd_info.total_size - hdd_info.tms_size) / 5; if(step_sectors >0 ) { hd_fulless = (hdd_info.rec_size + step_sectors/2) / step_sectors ; if(hd_fulless == 5) hd_fulless = 4; icon = MP_HDstatus_icons[4-hd_fulless];//hd_fulless -> 4-hd_fulles, show used space! } */ break; default: break; } OSD_SetBitmapContent(bmp, icon); OSD_SetRect(&bmp->head.frame, bmp_desc->left, bmp_desc->top, bmp_desc->width, bmp_desc->height); OSD_DrawObject( (OBJECT_HEAD*) bmp, C_UPDATE_ALL); } for (i = 0; i < MPEG_TXT_NUM; i++) { txt_desc = &mpegplayer_txts[i]; OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)""); switch (txt_desc->txt_type) { case MPEG_TXT_PLAY_NAME: get_file_from_file_list(win_file_list[VIDEO_FILE_LIST], mpeglist_idx, &file_node); //filter_unkownfont_name(file_node.name, name_buffer); win_shorten_filename(file_node.name,name_buffer); sprintf(name_buffer, "%s", name_buffer); OSD_SetTextFieldContent(txt, STRING_UTF8, (UINT32)name_buffer); break; case MPEG_TXT_DATE: //sprintf(string,"%02d/%02d",dt.month,dt.day); STRCPY(string, ""); OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)string); break; case MPEG_TXT_TIME: //sprintf(string,"%02d:%02d",dt.hour,dt.min); STRCPY(string, ""); OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)string); break; case MPEG_TXT_PLAY_MODE: STRCPY(string, ""); if (MPEGInfo.PlayState == MPEG_STOP) { sprintf(string, "%s", "Stop"); } else if (MPEGInfo.PlayState == MPEG_PLAY) { sprintf(string, "%s", "Play"); } else if (MPEGInfo.PlayState == MPEG_PAUSE) { sprintf(string, "%s", "Pause"); } else if (MPEGInfo.PlayState == MPEG_FF || MPEGInfo.PlayState == MPEG_FB) { sprintf(string, "X%d", mpegspeed_steps[MPEGInfo.PlaySpeed]); } else if (MPEGInfo.PlayState == MPEG_SF || MPEGInfo.PlayState == MPEG_SB) { sprintf(string, "X1/%d", mpegspeed_steps[MPEGInfo.PlaySpeed]); } else if(MPEGInfo.PlayState == MPEG_STEP) { sprintf(string,"%s","Step"); } OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)string); break; case MPEG_TXT_PLAY_1ST_TIME: STRCPY(string, ""); MPEGInfo.PlayTime = (UINT32)MPGFileDecoderGetPlayTime(); hh = MPEGInfo.PlayTime / 3600; mm = (MPEGInfo.PlayTime % 3600) / 60; ss = MPEGInfo.PlayTime % 60; sprintf(string, "%02d:%02d:%02d", hh, mm, ss); OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)string); break; case MPEG_TXT_PLAY_2ND_TIME: STRCPY(string, ""); hh = MPEGInfo.TotalTime / 3600; mm = (MPEGInfo.TotalTime % 3600) / 60; ss = MPEGInfo.TotalTime % 60; sprintf(string, "%02d:%02d:%02d", hh, mm, ss); OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)string); break; case MPEG_TXT_HDD_STATUS: /*step_sectors = (hdd_info.total_size - hdd_info.tms_size)/100; if(step_sectors >0 ) { sprintf(string,"%d%%",(100 - (hdd_info.rec_size+ step_sectors/2 )/step_sectors)); } else { STRCPY(string,""); } OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)string); */ break; } OSD_SetRect(&txt->head.frame, txt_desc->left, txt_desc->top, txt_desc->width, txt_desc->height); txt->head.style.bShowIdx = txt_desc->shidx; OSD_DrawObject( (OBJECT_HEAD *)txt, C_UPDATE_ALL); } /* Draw progress bar */ OSD_SetProgressBarPos(bar, 100); OSD_SetRect(&bar->head.frame, BAR_L, BAR_T, BAR_W, 24); bar->rcBar.uLeft = 2; bar->rcBar.uTop = 5; bar->rcBar.uWidth = BAR_W - 4; bar->rcBar.uHeight = 14;//16 - 6; bar->wTickFg = WSTL_BAR_06; OSD_DrawObject((POBJECT_HEAD)bar, C_UPDATE_ALL); /* Draw play pos */ // BarState.nPos = MPEGInfo.PlayTime; if (BarState.nRange) { play_pos = BarState.nPos * 100 / BarState.nRange; } OSD_SetRect(&bmp->head.frame, bar->head.frame.uLeft+6 + (bar->head.frame.uWidth-12)*play_pos / 100*OSD_GetProgressBarPos(bar) / 100 - POS_ICON_WIDTH / 2, bar->head.frame.uTop, POS_ICON_WIDTH, bar->head.frame.uHeight); OSD_SetBitmapContent(bmp, IM_PVR_DOT); OSD_DrawObject((POBJECT_HEAD)bmp, C_UPDATE_ALL); /* Draw play cursor */ if (CURSOR_MOVING == BarState.State) { if (BarState.nRange) { play_pos = BarState.nCursor * 100 / BarState.nRange; } OSD_SetRect(&bmp->head.frame, bar->head.frame.uLeft + 6 + (bar->head.frame.uWidth-4)*play_pos / 100*OSD_GetProgressBarPos(bar) / 100 - POS_ICON_WIDTH / 2, bar->head.frame.uTop, POS_ICON_WIDTH, bar->head.frame.uHeight); OSD_SetBitmapContent(bmp, IM_PVR_DOT_ORANGE); OSD_DrawObject((POBJECT_HEAD)bmp, C_UPDATE_ALL); } }