Example #1
0
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));
	}
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
0
//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");
}
Example #5
0
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;
	}
}
Example #6
0
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;
}
Example #7
0
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;
}