static void config_deo_frm_buf(void) { struct vpo_device *gpvpo_sd; Imagedec_frm deo_frm_buf[4]; gpvpo_sd = gpvpo_sd = (struct vpo_device *)dev_get_by_id(HLD_DEV_TYPE_DIS, 1); if(NULL != gpvpo_sd) { deo_frm_buf[0].frm_y_addr = (UINT8 *)__MM_FB3_Y_START_ADDR; deo_frm_buf[0].frm_y_len = __MM_FB3_Y_LEN; deo_frm_buf[0].frm_c_addr = (UINT8 *)__MM_FB3_C_START_ADDR; deo_frm_buf[0].frm_c_len = __MM_FB3_C_LEN; deo_frm_buf[0].busy = 0; deo_frm_buf[1].frm_y_addr = (UINT8 *)__MM_FB4_Y_START_ADDR; deo_frm_buf[1].frm_y_len = __MM_FB4_Y_LEN; deo_frm_buf[1].frm_c_addr = (UINT8 *)__MM_FB4_C_START_ADDR; deo_frm_buf[1].frm_c_len = __MM_FB4_C_LEN; deo_frm_buf[1].busy = 0; deo_frm_buf[2].frm_y_addr = (UINT8 *)__MM_FB5_Y_START_ADDR; deo_frm_buf[2].frm_y_len = __MM_FB5_Y_LEN; deo_frm_buf[2].frm_c_addr = (UINT8 *)__MM_FB5_C_START_ADDR; deo_frm_buf[2].frm_c_len = __MM_FB5_C_LEN; deo_frm_buf[2].busy = 0; deo_frm_buf[3].frm_y_addr = (UINT8 *)__MM_FB6_Y_START_ADDR; deo_frm_buf[3].frm_y_len = __MM_FB6_Y_LEN; deo_frm_buf[3].frm_c_addr = (UINT8 *)__MM_FB6_C_START_ADDR; deo_frm_buf[3].frm_c_len = __MM_FB6_C_LEN; deo_frm_buf[3].busy = 0; imagedec_ioctl(1, IMAGEDEC_IO_CMD_CFG_DEO_FRM, (UINT32)(&deo_frm_buf)); } }
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 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; }
//the parameter of rect is the showing region on GE static INT32 ad_pic_img_dec(struct OSDRect *rect) { imagedec_id id = 0; UINT32 file_handle = 0xFF; BOOL ret = 0; Imagedec_Init_Config img_init_info; MEMSET(&img_init_info,0,sizeof(Imagedec_Init_Config)); img_init_info.frm_y_size = __MM_FB0_Y_LEN; img_init_info.frm_y_addr = __MM_FB0_Y_START_ADDR; img_init_info.frm_c_size = __MM_FB0_C_LEN; img_init_info.frm_c_addr = __MM_FB0_C_START_ADDR; img_init_info.frm2_y_size = __MM_FB1_Y_LEN; img_init_info.frm2_y_addr = __MM_FB1_Y_START_ADDR; img_init_info.frm2_c_size = __MM_FB1_C_LEN; img_init_info.frm2_c_addr = __MM_FB1_C_START_ADDR; img_init_info.frm3_y_size = __MM_FB2_Y_LEN; img_init_info.frm3_y_addr = __MM_FB2_Y_START_ADDR; img_init_info.frm3_c_size = __MM_FB2_C_LEN; img_init_info.frm3_c_addr = __MM_FB2_C_START_ADDR; img_init_info.frm_mb_type = 0; img_init_info.decoder_buf = (UINT8 *)((__MM_IMAGEDEC_BUF_ADDR+0x10000) & ~(3<<29));//__MM_IMG_DEC_ADDR; img_init_info.decoder_buf_len = 0x54600; //0x7E800;//0x3FA40; // 0x3FA40=320*240*1.5+0x20000 ;0x15180=320*240//__MM_IMG_DEC_LEN; img_init_info.fread_callback = img_read_data; img_init_info.fseek_callback = img_seek_data; id = imagedec_init(&img_init_info); if(0 == id) { AD_IMG_PRINTF("%s() imagedec_init failed(%d)!\n", __FUNCTION__, id); return !SUCCESS; } if (TRUE != imagedec_ioctl(id, IMAGEDEC_IO_CMD_OPEN_HW_ACCE, 0)) { AD_IMG_PRINTF("%s() imagedec_ioctl(IMAGEDEC_IO_CMD_OPEN_HW_ACCE) failed!\n", __FUNCTION__); return !SUCCESS; } Imagedec_Osd_Config config; MEMSET((void *)&config, 0, sizeof(Imagedec_Osd_Config)); config.blt = ad_pic_img_blt; config.handle = (void *)ad_pic_get_ge_surface(AD_DST_SURFACE); config.pic_frmt = 0; imagedec_osd_init(&config); Imagedec_Mode_Par dec_par; MEMSET((void *)&dec_par,0,sizeof(Imagedec_Mode_Par)); dec_par.vp_close_control = 0; dec_par.pro_show = 1; dec_par.dis_rect.uStartX = 0; //rect->uLeft; dec_par.dis_rect.uStartY = 0; dec_par.dis_rect.uWidth = 720;//rect->uWidth; dec_par.dis_rect.uHeight = 576;//rect->uHeight; dec_par.src_rect.uStartX = 0;//rect->uLeft; dec_par.src_rect.uStartY = 0;//rect->uTop; dec_par.src_rect.uWidth = 720;//rect->uWidth; dec_par.src_rect.uHeight = 576;//rect->uHeight; imagedec_set_mode(id, IMAGEDEC_FULL_SRN, &dec_par); Imagedec_Osd_Io_Cmd cmd; MEMSET((void *)&cmd,0,sizeof(Imagedec_Osd_Io_Cmd)); cmd.on = 1; cmd.bitmap_start = (UINT8 *)((__MM_IMAGEDEC_BUF_ADDR+0x64600)& ~(3<<29)); //__MM_IMG_BITMAP_ADDR; cmd.bitmap_size = 0x2A300; //0x2A300= 320*240*2 //__MM_IMG_BITMAP_LEN; //for testing, remember to delete the malloc size // cmd.bitmap_start = (UINT8 *)(MALLOC(0x2A300)); // cmd.bitmap_size = 0x2A300; //0x2A300= 320*240*2 //__MM_IMG_BITMAP_LEN; cmd.dis_rect.uStartX = rect->uLeft; cmd.dis_rect.uStartY = rect->uTop;//0; cmd.dis_rect.uWidth = rect->uWidth; cmd.dis_rect.uHeight = rect->uHeight; imagedec_ioctl(id, IMAGEDEC_IO_CMD_OSD_SHOW, (UINT32)&cmd); img_input_pos = 0; ret = imagedec_decode(id, file_handle); if(ret!=TRUE) AD_IMG_PRINTF("\n Decode Image Unsuccessfully"); if(imagedec_stop(id)!=TRUE) AD_IMG_PRINTF("\n Stop Image decoding unsuccessfully!\n"); if(imagedec_release(id)!=TRUE) AD_IMG_PRINTF("\n Release Image decoder unsuccessfully!\n"); }
static void mbx_unkown_act_proc(VACTION act) { POBJECT_HEAD win; PMATRIX_BOX pmbx = &imgpreview_mbx_img; UINT16 curpos; switch(act) { case VACT_CURSOR_PGUP: case VACT_CURSOR_PGDN: if(act == VACT_CURSOR_PGUP) { if(image_multiview_first <=1 ) { break; } else if(image_multiview_first > MULTI_IMG_COUNT) { image_multiview_first -= MULTI_IMG_COUNT; image_cnt_inpage = MULTI_IMG_COUNT; } else { image_multiview_first = 1; image_cnt_inpage = (image_multiview_total<MULTI_IMG_COUNT)?image_multiview_total:(MULTI_IMG_COUNT); } } else //(act == VACT_CURSOR_PGDN) { if(image_multiview_first <= image_multiview_total - MULTI_IMG_COUNT) { image_multiview_first += MULTI_IMG_COUNT; image_cnt_inpage = ((image_multiview_total-image_multiview_first+1) < MULTI_IMG_COUNT)? \ (image_multiview_total-image_multiview_first+1):(MULTI_IMG_COUNT); } else break; } // OSD_ClearObject((POBJECT_HEAD)&g_win_imagepreview,0); OSD_SetMtrxboxCount(pmbx, image_cnt_inpage, MULTI_IMG_COUNT/MULTI_IMG_X_COUNT, MULTI_IMG_X_COUNT); curpos = OSD_GetMtrxboxCurPos(pmbx); if(curpos > image_cnt_inpage-1) { curpos = image_cnt_inpage-1; OSD_SetMtrxboxCurPos(pmbx, curpos); } OSD_TrackObject((POBJECT_HEAD)pmbx,C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL | C_DRAW_TYPE_HIGHLIGHT); hl_index = image_multiview_first + curpos; show_loadinglogo(1); //imagedec_ioctl(1,IMAGEDEC_IO_CMD_FILL_LOGO,0xB9748F);//yvu imagedec_ioctl(1, IMAGEDEC_IO_CMD_FILL_LOGO, 0x356B9D);//yvu image_abort(); image_idx_inpage = 0; preview_image(image_idx_inpage, image_multiview_first + image_idx_inpage); show_title(hl_index); break; case VACT_ENTER: win = (POBJECT_HEAD)(&g_win_imagepreview); OSD_ObjClose(win,C_CLOSE_CLRBACK_FLG); image_abort(); from_imagepreview = TRUE; curpos = OSD_GetMtrxboxCurPos(pmbx); win_set_image_slide_idx(image_multiview_first+curpos); win = (POBJECT_HEAD)(&g_win_imageslide); if(OSD_ObjOpen(win,(UINT32)(~0)) != PROC_LEAVE) menu_stack_push(win); break; default: break; } }
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; }
static PRESULT map_display_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; UINT8 back_saved; OSD_RECT rect = {PREVIEW_L, PREVIEW_T, PREVIEW_W, PREVIEW_H}; struct YCbCrColor bgcolor; switch(event) { case EVN_PRE_OPEN: OSD_ClearScreen();//-a by wangyang 2011-09-20 win_media_player_init_ex(mp_apcallback, 1); bMapDownloading = FALSE; zoom_level = 12; //api_set_preview_vpo_color(TRUE); bgcolor.uY = 16; bgcolor.uCb = 128; bgcolor.uCr = 128; api_set_vpo_bgcolor(&bgcolor); image_restore_vpo_rect();//TODO #if 0 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 osal_task_sleep(30); if(is_cur_decoder_avc()) { h264_decoder_select(0, hde_get_mode() == VIEW_MODE_PREVIEW); } #endif // system_state = SYS_STATE_USB_MP; //osal_cache_flush_all(); image_abort(); //map_show(rect); break; case EVN_POST_OPEN: //wincom_open_subtitle(pObj,RS_MAP,0); wincom_open_help_OK_list_small(pObj, map_display_helpinfo, 2); //wincom_open_help(pObj, map_display_helpinfo, 2); libc_printf("map_dl_param2 = %d\n", param2); map_show(rect, param2); break; case EVN_PRE_CLOSE://-a by wangyang 2011-09-20 map_download_abort(s_mapdisp_dl_handle); s_mapdisp_dl_handle = 0; media_player_release_ex(); imagedec_ioctl(1, IMAGEDEC_IO_CMD_CLEAN_FRM, TRUE); //when quit win_slide, clean 2 frm buffer image_abort(); break; case EVN_POST_CLOSE: wincom_close_subtitle(); image_restore_vpo_rect();//-a by wangyang 2011-09-20 break; case EVN_MSG_GOT: if (param1 == CTRL_MSG_SUBTYPE_STATUS_DOWNLOAD_FINISH) { bMapDownloading = FALSE; map_download_abort(s_mapdisp_dl_handle); s_mapdisp_dl_handle = 0; if ((int)param2 >= 0) { win_compopup_smsg_restoreback(); map_show(rect, param2); } } break; default: break; } return ret; }