531 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			531 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
#include "PlaybackTsk.h"
 | 
						|
#include "UIApp/Play/UIAppMoviePlay.h"
 | 
						|
#include "PrjInc.h"
 | 
						|
#include "NVTUserCommand.h"
 | 
						|
#include "FileDB.h"
 | 
						|
#include "PrjCfg.h"
 | 
						|
#include "PBXFileList/PBXFileList_DCF.h"
 | 
						|
#include "PBXFileList/PBXFileList_FileDB.h"
 | 
						|
#include "ImageApp/ImageApp_MoviePlay.h"
 | 
						|
#include "ImageApp/ImageApp_Play.h"
 | 
						|
#include "SysMain.h"
 | 
						|
#include "UIApp/AppDisp_PBView.h"
 | 
						|
#include "sys_mempool.h"
 | 
						|
#include "GxVideoFile.h"
 | 
						|
#include <kwrap/debug.h>
 | 
						|
#include "UIWnd/UIFlow.h"
 | 
						|
#if (USE_DCF == ENABLE)
 | 
						|
#include "DCF.h"
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
#if 0
 | 
						|
#define MoviePlay_Open(x)                        SMediaPlay_Open((PSMEDIAPLAY_USEROBJ)x)
 | 
						|
#define MoviePlay_WaitReady(x)                   SMediaPlay_WaitReady(x)
 | 
						|
#define MoviePlay_Close(x)                       SMediaPlay_Close(x)
 | 
						|
#define MoviePlay_Pause(x)                       SMediaPlay_PausePlay(x)
 | 
						|
#define MoviePlay_GetMediaInfo(x)                SMediaPlay_GetMediaInfo(x)
 | 
						|
#define MoviePlay_GetCurrFrame(x)                SMediaPlay_GetCurrVideoFrame(x)
 | 
						|
#define MoviePlay_GetNowDisplayFrame(x,y,z)      SMediaPlay_GetNowDisplayFrame(x,y,z)
 | 
						|
#define MoviePlay_StartPlay(x,y)                 SMediaPlay_StartPlay(x,y)
 | 
						|
#define MoviePlay_FWDOneStep(x)                  SMediaPlay_VideoOneStepPlay(SMEDIAPLAY_DIR_FORWARD)
 | 
						|
#define MoviePlay_BWDOneStep(x)                  SMediaPlay_VideoOneStepPlay(SMEDIAPLAY_DIR_BACKWARD)
 | 
						|
#define MoviePlay_GetVideoFrameRate(x)           SMediaPlay_GetVideoFrameRate(x)
 | 
						|
#define MoviePlay_GetTotalVideoFrame(x)          SMediaPlay_GetTotalVideoFrame(x)
 | 
						|
#define MoviePlay_GetCreateModifyTime(x,y)       SMediaPlay_GetCreateModifyTime(x,y)
 | 
						|
#define MoviePlay_GetThisVideoFrameOffset(x,y)   SMediaPlay_GetThisVideoFrameOffset(x,y)
 | 
						|
#define MoviePlay_JumpVideoToSpecificFrame(x)    SMediaPlay_JumpVideoToSpecFramePlay(x)
 | 
						|
#define MoviePlay_RestartTo1stFrame(x)           SMediaPlay_Restart1stFrmPlay(x)
 | 
						|
#define MoviePlay_SetOneDispFrameEvent(x)
 | 
						|
#define MoviePlay_Video_Step(x)
 | 
						|
#define MoviePlay_WaitStepFinish(x)
 | 
						|
#define MoviePlay_SetAudVolume(x)                SMediaPlay_SetAudVolume(x)
 | 
						|
#define MoviePlay_GetCurrPlaySecs(x)             SMediaPlay_GetCurrPlaySecs(x)
 | 
						|
#else
 | 
						|
#define MoviePlay_Open(x)
 | 
						|
#define MoviePlay_WaitReady(x)
 | 
						|
#define MoviePlay_Close(x)
 | 
						|
#define MoviePlay_Pause(x)
 | 
						|
#define MoviePlay_GetMediaInfo(x)
 | 
						|
#define MoviePlay_GetCurrFrame(x)
 | 
						|
#define MoviePlay_GetNowDisplayFrame(x,y,z)
 | 
						|
#define MoviePlay_StartPlay(x,y)
 | 
						|
#define MoviePlay_FWDOneStep(x)
 | 
						|
#define MoviePlay_BWDOneStep(x)
 | 
						|
#define MoviePlay_GetVideoFrameRate(x)
 | 
						|
#define MoviePlay_GetTotalVideoFrame(x)
 | 
						|
#define MoviePlay_GetCreateModifyTime(x,y)
 | 
						|
#define MoviePlay_GetThisVideoFrameOffset(x,y)
 | 
						|
#define MoviePlay_JumpVideoToSpecificFrame(x)
 | 
						|
#define MoviePlay_RestartTo1stFrame(x)
 | 
						|
#define MoviePlay_SetOneDispFrameEvent(x)
 | 
						|
#define MoviePlay_Video_Step(x)
 | 
						|
#define MoviePlay_WaitStepFinish(x)
 | 
						|
#define MoviePlay_SetAudVolume(x)
 | 
						|
#define MoviePlay_GetCurrPlaySecs(x)
 | 
						|
#endif
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
//header
 | 
						|
#define DBGINFO_BUFSIZE()	(0x200)
 | 
						|
 | 
						|
//RAW
 | 
						|
#define VDO_RAW_BUFSIZE(w, h, pxlfmt)   (ALIGN_CEIL_4((w) * HD_VIDEO_PXLFMT_BPP(pxlfmt) / 8) * (h))
 | 
						|
//NRX: RAW compress: Only support 12bit mode
 | 
						|
#define RAW_COMPRESS_RATIO 59
 | 
						|
#define VDO_NRX_BUFSIZE(w, h)           (ALIGN_CEIL_4(ALIGN_CEIL_64(w) * 12 / 8 * RAW_COMPRESS_RATIO / 100 * (h)))
 | 
						|
//CA for AWB
 | 
						|
#define VDO_CA_BUF_SIZE(win_num_w, win_num_h) ALIGN_CEIL_4((win_num_w * win_num_h << 3) << 1)
 | 
						|
//LA for AE
 | 
						|
#define VDO_LA_BUF_SIZE(win_num_w, win_num_h) ALIGN_CEIL_4((win_num_w * win_num_h << 1) << 1)
 | 
						|
 | 
						|
//YUV
 | 
						|
#define VDO_YUV_BUFSIZE(w, h, pxlfmt)	(ALIGN_CEIL_4((w) * HD_VIDEO_PXLFMT_BPP(pxlfmt) / 8) * (h))
 | 
						|
//NVX: YUV compress
 | 
						|
#define YUV_COMPRESS_RATIO 75
 | 
						|
#define VDO_NVX_BUFSIZE(w, h, pxlfmt)	(VDO_YUV_BUFSIZE(w, h, pxlfmt) * YUV_COMPRESS_RATIO / 100)
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
static UINT32         g_uiUIFlowWndPlayCurrenSpeed     = SMEDIAPLAY_SPEED_NORMAL;
 | 
						|
static UINT32         g_uiUIFlowWndPlayCurrenDirection = SMEDIAPLAY_DIR_FORWARD;
 | 
						|
static MOVIEPLAY_FILEPLAY_INFO gMovie_Play_Info         = {0};
 | 
						|
static MOVIEPLAY_CFG_DISP_INFO gMovPlay_Disp_Info;
 | 
						|
static MOVIEPLAY_AOUT_INFO_EX  g_aout_info_ex = {0};
 | 
						|
GXVIDEO_INFO g_MovieInfo;
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////////////////////////
 | 
						|
static HD_COMMON_MEM_INIT_CONFIG mem_cfg = {0};
 | 
						|
 | 
						|
static void _mem_pool_init(void)
 | 
						|
{
 | 
						|
	UINT32 i = 0;
 | 
						|
	HD_VIDEO_FRAME hd_vdoframe_info = {0};
 | 
						|
	ISIZE  disp_size = GxVideo_GetDeviceSize(DOUT1);
 | 
						|
 | 
						|
	// config common pool (decode)
 | 
						|
	PB_GetParam(PBPRMID_INFO_IMG, (UINT32 *)&hd_vdoframe_info);
 | 
						|
 | 
						|
	mem_cfg.pool_info[i].type = HD_COMMON_MEM_COMMON_POOL;
 | 
						|
#if PLAY_THUMB_AND_MOVIE // fixed common pool size to 2560x1440 for playing thumbnail and movie together
 | 
						|
	mem_cfg.pool_info[i].blk_size = DBGINFO_BUFSIZE()+VDO_YUV_BUFSIZE(ALIGN_CEIL_64(2560), ALIGN_CEIL_64(1440), HD_VIDEO_PXLFMT_YUV420);  // align to 64 for h265 raw buffer
 | 
						|
#else
 | 
						|
	mem_cfg.pool_info[i].blk_size = DBGINFO_BUFSIZE()+VDO_YUV_BUFSIZE(ALIGN_CEIL_64(hd_vdoframe_info.dim.w), ALIGN_CEIL_64(hd_vdoframe_info.dim.h), HD_VIDEO_PXLFMT_YUV420);  // align to 64 for h265 raw buffer
 | 
						|
#endif
 | 
						|
	/* ********************************************************
 | 
						|
	 * IVOT_N00028-346
 | 
						|
	 * 1.YUV blk cnt can be lowered to 3 from 5 (In general,only 3 blocked are needed. (SVC+1 or LTR +1))
 | 
						|
	 * 2.remove unused blocks(HD_COMMON_MEM_USER_POOL_BEGIN)
 | 
						|
	 * ********************************************************/
 | 
						|
#if (_BOARD_DRAM_SIZE_ <= 0x04000000)
 | 
						|
	mem_cfg.pool_info[i].blk_cnt = 3;
 | 
						|
#else
 | 
						|
	mem_cfg.pool_info[i].blk_cnt = 5;
 | 
						|
#endif
 | 
						|
	mem_cfg.pool_info[i].ddr_id = DDR_ID0;
 | 
						|
	i++;
 | 
						|
	// config common pool (scale & display)
 | 
						|
	mem_cfg.pool_info[i].type = HD_COMMON_MEM_COMMON_POOL;
 | 
						|
	mem_cfg.pool_info[i].blk_size = DBGINFO_BUFSIZE()+VDO_YUV_BUFSIZE(ALIGN_CEIL_16(disp_size.w), ALIGN_CEIL_16(disp_size.h), HD_VIDEO_PXLFMT_YUV420);  // align to 16 for rotation panel
 | 
						|
	mem_cfg.pool_info[i].blk_cnt = 5;
 | 
						|
	mem_cfg.pool_info[i].ddr_id = DDR_ID0;
 | 
						|
	i++;
 | 
						|
	// config common pool for filein bs block
 | 
						|
	mem_cfg.pool_info[i].type = HD_COMMON_MEM_COMMON_POOL;
 | 
						|
	#if (_BOARD_DRAM_SIZE_ == 0x04000000)
 | 
						|
	mem_cfg.pool_info[i].blk_size = 16 * 1024 * 1024;
 | 
						|
	#else
 | 
						|
	mem_cfg.pool_info[i].blk_size = 20 * 1024 * 1024;  // default at least 20MBytes for filein bitstream block.
 | 
						|
	#endif
 | 
						|
	mem_cfg.pool_info[i].blk_cnt = 1;
 | 
						|
	mem_cfg.pool_info[i].ddr_id = DDR_ID0;
 | 
						|
	i++;
 | 
						|
	// config common pool (main)
 | 
						|
	mem_cfg.pool_info[i].type = HD_COMMON_MEM_COMMON_POOL;
 | 
						|
	mem_cfg.pool_info[i].blk_size = 0x1000;
 | 
						|
	mem_cfg.pool_info[i].blk_cnt = 1;
 | 
						|
	mem_cfg.pool_info[i].ddr_id = DDR_ID0;
 | 
						|
	i++;
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
void UIAppMoviePlayExe_MoviePlayCB(UINT32 uiEventID, UINT32 p1, UINT32 p2, UINT32 p3)
 | 
						|
{
 | 
						|
	DBG_IND("MoviePlayCB event=%d\r\n", uiEventID);
 | 
						|
 | 
						|
	switch (uiEventID) {
 | 
						|
	case MOVIEPLAY_EVENT_MEDIAINFO_READY:
 | 
						|
		break;
 | 
						|
	case MOVIEPLAY_EVENT_STOP:
 | 
						|
		Ux_PostEvent(NVTEVT_CB_MOVIE_FINISH, 0);
 | 
						|
		break;
 | 
						|
	case MOVIEPLAY_EVENT_ONE_SECOND:
 | 
						|
		DBG_DUMP("play sec:%d!\r\n", p1);
 | 
						|
		FlowPB_SetMovPlayTime(p1);
 | 
						|
		Ux_PostEvent(NVTEVT_CB_MOVIE_ONE_SEC, 1, p1);
 | 
						|
		break;
 | 
						|
	case MOVIEPLAY_EVENT_ONE_DISPLAYFRAME:
 | 
						|
		PBView_DrawSingleView((HD_VIDEO_FRAME *)p1);
 | 
						|
		break;
 | 
						|
	case MOVIEPLAY_EVENT_DECODE_ERR:
 | 
						|
	{
 | 
						|
		MOVIEPLAY_EVENT_DECODE_ERR_INFO* info = (MOVIEPLAY_EVENT_DECODE_ERR_INFO*)p1;
 | 
						|
		if(info->ret == HD_ERR_BAD_DATA){
 | 
						|
			DBG_DUMP("media stream has bad data(%s decode error), stop play\r\n", info->is_video == TRUE? "video" : "audio");
 | 
						|
			Ux_PostEvent(NVTEVT_CB_MOVIE_FINISH, 0);
 | 
						|
			Ux_PostEvent(NVTEVT_CB_MOVIE_ERR, 0);
 | 
						|
		}
 | 
						|
	}
 | 
						|
		break;
 | 
						|
 | 
						|
	default:
 | 
						|
		DBG_ERR("Invalid eventID=0x%x\r\n", uiEventID);
 | 
						|
		break;
 | 
						|
	}	
 | 
						|
}
 | 
						|
 | 
						|
/* back to playback mode */
 | 
						|
void UIAppMoviePlayExe_MoviePlay_ConfigErr(void)
 | 
						|
{
 | 
						|
	Ux_PostEvent(NVTEVT_CB_MOVIE_FINISH, 0);
 | 
						|
	Ux_PostEvent(NVTEVT_CB_MOVIE_ERR, 0);
 | 
						|
}
 | 
						|
 | 
						|
UINT32 MoviePlayExe_LibGetTotalSecs(void)
 | 
						|
{
 | 
						|
	PB_GetParam(PBPRMID_INFO_VDO, (UINT32 *)&g_MovieInfo);
 | 
						|
 | 
						|
	return (g_MovieInfo.uiToltalSecs);
 | 
						|
}
 | 
						|
UINT32 MoviePlayExe_LibGetEV(void)
 | 
						|
{
 | 
						|
	return 0;
 | 
						|
}
 | 
						|
UINT32 MoviePlayExe_LibGetVideoWidth(void)
 | 
						|
{
 | 
						|
	PB_GetParam(PBPRMID_INFO_VDO, (UINT32 *)&g_MovieInfo);
 | 
						|
 | 
						|
	return (g_MovieInfo.uiVidWidth);
 | 
						|
}
 | 
						|
 | 
						|
INT32 MoviePlayExe_OpenPlay(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
    GXVIDEO_INFO VidInfo = {0};
 | 
						|
    SMEDIAPLAY_MAX_MEM_INFO SMPMaxMemInfo = {0};
 | 
						|
	UINT32 uiPBFileFmt = PBFMT_MP4;
 | 
						|
	FST_FILE       MovPlay_Filehdl         = NULL;
 | 
						|
 | 
						|
	DBG_IND("*************************************\n");
 | 
						|
	DBG_IND("*** imageapp_movieplay open test code ***\n");
 | 
						|
	DBG_IND("*************************************\n");
 | 
						|
 | 
						|
	if (paramNum > 0) {
 | 
						|
		MovPlay_Filehdl = (FST_FILE)paramArray[0];
 | 
						|
	} else {
 | 
						|
		DBG_ERR("Need movie file handle\r\n");
 | 
						|
		return NVTEVT_CONSUME;	
 | 
						|
	}
 | 
						|
 | 
						|
    // Config max mem info
 | 
						|
	_mem_pool_init();
 | 
						|
	if(ImageApp_MoviePlay_Config(MOVIEPLAY_CONFIG_MEM_POOL_INFO, (UINT32)&mem_cfg) != ISF_OK){
 | 
						|
		UIAppMoviePlayExe_MoviePlay_ConfigErr();
 | 
						|
		return NVTEVT_CONSUME;
 | 
						|
	}
 | 
						|
 | 
						|
	if (!MovPlay_Filehdl) {
 | 
						|
		DBG_ERR("UIFlowWndPlay_OnKeySelect: Can't open Video file!\r\n");
 | 
						|
		UIAppMoviePlayExe_MoviePlay_ConfigErr();
 | 
						|
		return NVTEVT_CONSUME;
 | 
						|
	}
 | 
						|
 | 
						|
#if 0 /* decrypt */
 | 
						|
 | 
						|
	/* **************************************************************************
 | 
						|
	 * IMPORTANT!!
 | 
						|
	 *
 | 
						|
	 * MOVIEPLAY_CONFIG_DECRYPT_INFO should be configured before MOVIEPLAY_CONFIG_FILEPLAY_INFO
 | 
						|
	 *
 | 
						|
	 * **************************************************************************/
 | 
						|
	UINT8 key[] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff};
 | 
						|
	MOVIEPLAY_FILE_DECRYPT crypt_info = {
 | 
						|
		.type    = MOVIEPLAY_DECRYPT_TYPE_CONTAINER | MOVIEPLAY_DECRYPT_TYPE_ALL_FRAME | MOVIEPLAY_DECRYPT_TYPE_AUDIO,
 | 
						|
		.mode    = MOVIEPLAY_DECRYPT_MODE_AES256,
 | 
						|
		.key     = key,
 | 
						|
		.key_len = 32,
 | 
						|
	};
 | 
						|
 | 
						|
	if(ImageApp_MoviePlay_Config(MOVIEPLAY_CONFIG_DECRYPT_INFO, (UINT32)&crypt_info) != ISF_OK){
 | 
						|
		UIAppMoviePlayExe_MoviePlay_ConfigErr();
 | 
						|
		return NVTEVT_CONSUME;
 | 
						|
	}
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
	gMovie_Play_Info.fileplay_id = _CFG_FILEPLAY_ID_1;
 | 
						|
	gMovie_Play_Info.file_handle = MovPlay_Filehdl;
 | 
						|
	gMovie_Play_Info.curr_speed  = g_uiUIFlowWndPlayCurrenSpeed;
 | 
						|
	gMovie_Play_Info.curr_direct = g_uiUIFlowWndPlayCurrenDirection;
 | 
						|
	gMovie_Play_Info.event_cb    = UIAppMoviePlayExe_MoviePlayCB;
 | 
						|
 | 
						|
	PB_GetParam(PBPRMID_CURR_FILEFMT, &uiPBFileFmt);
 | 
						|
	if (uiPBFileFmt & PBFMT_TS) {
 | 
						|
		SMPMaxMemInfo.FileFormat = MEDIA_FILEFORMAT_TS;
 | 
						|
	} else if (uiPBFileFmt & PBFMT_MP4) {
 | 
						|
		SMPMaxMemInfo.FileFormat = MEDIA_FILEFORMAT_MOV;
 | 
						|
	}
 | 
						|
	PB_GetParam(PBPRMID_INFO_VDO, (UINT32*) &VidInfo);
 | 
						|
 | 
						|
	SMPMaxMemInfo.VidFR = VidInfo.uiVidRate;
 | 
						|
	SMPMaxMemInfo.AudFR = VidInfo.AudInfo.uiSR / 1024;
 | 
						|
	SMPMaxMemInfo.TotalSecs = VidInfo.uiToltalSecs;
 | 
						|
	SMPMaxMemInfo.CodecType = VidInfo.uiVidType;
 | 
						|
	SMPMaxMemInfo.ImageWidth = VidInfo.uiVidWidth;
 | 
						|
	SMPMaxMemInfo.ImageHeight = VidInfo.uiVidHeight;
 | 
						|
	gMovie_Play_Info.pmax_mem_info = &SMPMaxMemInfo;
 | 
						|
 | 
						|
	if(ImageApp_MoviePlay_Config(MOVIEPLAY_CONFIG_FILEPLAY_INFO, (UINT32) &gMovie_Play_Info) != ISF_OK){
 | 
						|
		UIAppMoviePlayExe_MoviePlay_ConfigErr();
 | 
						|
		return NVTEVT_CONSUME;
 | 
						|
	}
 | 
						|
 | 
						|
	// config vout.
 | 
						|
	gMovPlay_Disp_Info.vout_ctrl = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_CTRLPATH);
 | 
						|
	gMovPlay_Disp_Info.vout_path = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_PATH);
 | 
						|
	gMovPlay_Disp_Info.ratio = GxVideo_GetDeviceAspect(0);
 | 
						|
 | 
						|
	/* do not change queue depth */
 | 
						|
	gMovPlay_Disp_Info.queue_depth = 2;
 | 
						|
 | 
						|
	if(ImageApp_MoviePlay_Config(MOVIEPLAY_CONFIG_DISP_INFO, (UINT32)&gMovPlay_Disp_Info) != ISF_OK){
 | 
						|
		UIAppMoviePlayExe_MoviePlay_ConfigErr();
 | 
						|
		return NVTEVT_CONSUME;
 | 
						|
	}
 | 
						|
 | 
						|
	// config aout.
 | 
						|
	g_aout_info_ex.drv_cfg.mono = HD_AUDIO_MONO_LEFT;
 | 
						|
	g_aout_info_ex.drv_cfg.output = HD_AUDIOOUT_OUTPUT_LINE;
 | 
						|
	g_aout_info_ex.pwr_en = TRUE;
 | 
						|
	if(ImageApp_MoviePlay_Config(MOVIEPLAY_CONFIG_AUDOUT_INFO_EX, (UINT32)&g_aout_info_ex) != ISF_OK){
 | 
						|
		UIAppMoviePlayExe_MoviePlay_ConfigErr();
 | 
						|
		return NVTEVT_CONSUME;
 | 
						|
	}
 | 
						|
 | 
						|
    if(ImageApp_MoviePlay_Open() != ISF_OK){
 | 
						|
		UIAppMoviePlayExe_MoviePlay_ConfigErr();
 | 
						|
		return NVTEVT_CONSUME;
 | 
						|
    }
 | 
						|
 | 
						|
    PBView_videoout_task_create();
 | 
						|
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
 | 
						|
INT32 MoviePlayExe_ClosePlay(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
#if 0	
 | 
						|
	MoviePlay_Pause();
 | 
						|
	MoviePlay_Close();
 | 
						|
#else
 | 
						|
	ImageApp_MoviePlay_Close();
 | 
						|
	PBView_videoout_task_destroy();
 | 
						|
 | 
						|
#if 0
 | 
						|
	if (gMovie_Play_Info.file_handle != NULL)
 | 
						|
		FileSys_CloseFile(gMovie_Play_Info.file_handle);
 | 
						|
#endif	
 | 
						|
 | 
						|
	#if 0
 | 
						|
	ImageApp_Play_Open();
 | 
						|
	#endif
 | 
						|
#endif
 | 
						|
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
 | 
						|
INT32 MoviePlayExe_PausePlay(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
	ImageApp_MoviePlay_FilePlay_Pause();
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
 | 
						|
INT32 MoviePlayExe_ResumePlay(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
	ImageApp_MoviePlay_FilePlay_Resume();
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
 | 
						|
INT32 MoviePlayExe_StartPlay(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
#if 0	
 | 
						|
	UINT32 uiSpeedLevel, direction;
 | 
						|
 | 
						|
	if (paramNum != 2) {
 | 
						|
		return NVTEVT_CONSUME;
 | 
						|
	}
 | 
						|
 | 
						|
	uiSpeedLevel = paramArray[0];
 | 
						|
	direction    = paramArray[1];
 | 
						|
 | 
						|
	MoviePlay_StartPlay(uiSpeedLevel, direction);
 | 
						|
#else
 | 
						|
	ImageApp_MoviePlay_Start();
 | 
						|
#endif	
 | 
						|
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
 | 
						|
UINT32 MoviePlayExe_GetDataPlay(PLAYMOVIE_GET_DATATYPE dataType)
 | 
						|
{
 | 
						|
	UINT32 retV = 0;
 | 
						|
	switch (dataType) {
 | 
						|
#if (USE_DCF == ENABLE)
 | 
						|
	case PLAYMOVIE_DIRID:
 | 
						|
		retV = DCF_GetDBInfo(DCF_INFO_CUR_DIR_ID);
 | 
						|
		break;
 | 
						|
	case PLAYMOVIE_FILEID:
 | 
						|
		retV = DCF_GetDBInfo(DCF_INFO_CUR_FILE_ID);
 | 
						|
		break;
 | 
						|
#endif
 | 
						|
	case PLAYMOVIE_TOTAL_SECOND:
 | 
						|
		retV = MoviePlayExe_LibGetTotalSecs();
 | 
						|
		break;
 | 
						|
	case PLAYMOVIE_EV:
 | 
						|
		retV = MoviePlayExe_LibGetEV();
 | 
						|
		break;
 | 
						|
	case PLAYMOVIE_WIDTH:
 | 
						|
		retV = MoviePlayExe_LibGetVideoWidth();
 | 
						|
		break;
 | 
						|
#if (USE_DCF == ENABLE)
 | 
						|
	case PLAYMOVIE_LOCKSTATUS: {
 | 
						|
			UINT32 CurIndex = 0, DirectoryID = 0, FilenameID = 0, uiThisFileFormat = 0;
 | 
						|
			CHAR   filePath[DCF_FULL_FILE_PATH_LEN];
 | 
						|
			BOOL   ReturnValue = FALSE;
 | 
						|
			UINT8  uAttrib = 0;
 | 
						|
 | 
						|
			CurIndex = DCF_GetDBInfo(DCF_INFO_CUR_INDEX);
 | 
						|
			DCF_GetObjInfo(CurIndex, &DirectoryID, &FilenameID, &uiThisFileFormat);
 | 
						|
			DCF_GetObjPath(CurIndex, uiThisFileFormat, filePath);
 | 
						|
			FileSys_GetAttrib(filePath, &uAttrib);
 | 
						|
			if (M_IsReadOnly(uAttrib)) {
 | 
						|
				ReturnValue = TRUE;
 | 
						|
			} else {
 | 
						|
				ReturnValue = FALSE;
 | 
						|
			}
 | 
						|
			retV = ReturnValue;
 | 
						|
		}
 | 
						|
		break;
 | 
						|
	case PLAYMOVIE_FILENUM:
 | 
						|
		retV = DCF_GetDBInfo(DCF_INFO_TOL_FILE_COUNT);
 | 
						|
		break;
 | 
						|
#endif
 | 
						|
	case PLAYMOVIE_OPENED:
 | 
						|
		retV = TRUE; // Always return true.
 | 
						|
		break;
 | 
						|
	case PLAYMOVIE_CURR_SECOND:
 | 
						|
		//retV = MoviePlay_GetCurrPlaySecs();
 | 
						|
		break;
 | 
						|
	case PLAYMOVIE_CURR_FRAME:
 | 
						|
		//retV = MoviePlay_GetCurrFrame();
 | 
						|
		break;
 | 
						|
	case PLAYMOVIE_TOTAL_FRAME:
 | 
						|
		//retV = MoviePlay_GetTotalVideoFrame();
 | 
						|
		break;
 | 
						|
 | 
						|
	default:
 | 
						|
		DBG_IND("Unknown type=%d\r\n", dataType);
 | 
						|
		break;
 | 
						|
	}
 | 
						|
	DBG_IND("-type=0x%x,v=0x%x\r\n", dataType, retV);
 | 
						|
	return retV;
 | 
						|
}
 | 
						|
 | 
						|
INT32 MoviePlayExe_SwitchFirstFrame(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
	MoviePlay_RestartTo1stFrame();
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
 | 
						|
INT32 MoviePlayExe_PlayStepFwd(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
	MoviePlay_FWDOneStep();
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
INT32 MoviePlayExe_PlayStepBwd(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
	MoviePlay_BWDOneStep();
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
 | 
						|
INT32 MoviePlayExe_PlayFwd(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
INT32 MoviePlayExe_PlayBwd(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
INT32 MoviePlayExe_SwitchLastFrame(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
void MoviePlayExe_SetDataPlay(PLAYMOVIE_SET_DATATYPE dataType, UINT32 data)
 | 
						|
{
 | 
						|
	return;
 | 
						|
}
 | 
						|
 | 
						|
INT32 MoviePlayExe_ChangeSize(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
 | 
						|
INT32 MoviePlayExe_OnAudPlayVolume(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
 | 
						|
{
 | 
						|
	UINT32 uhSelect = 0;
 | 
						|
	BOOL  bChangHWSetting = FALSE;
 | 
						|
 | 
						|
	if (paramNum == 1) { //save index only
 | 
						|
		uhSelect = paramArray[0];
 | 
						|
	} else if (paramNum == 2 && paramArray[1] == 1) { //save index and change HW setting
 | 
						|
		uhSelect = paramArray[0];
 | 
						|
		bChangHWSetting = TRUE;
 | 
						|
	} else {
 | 
						|
		DBG_ERR("paramNum error!\r\n");
 | 
						|
		return NVTEVT_CONSUME;
 | 
						|
	}
 | 
						|
	DBG_IND("+-idx=%d,val=%d\r\n", uhSelect, GetMovieAudioVolumeValue(uhSelect));
 | 
						|
	//if (UI_GetData(FL_MovieAudioPlayIndex) != uhSelect)
 | 
						|
	{
 | 
						|
		UI_SetData(FL_MovieAudioPlayIndex, uhSelect);
 | 
						|
		if (bChangHWSetting) {
 | 
						|
			ImageApp_MoviePlay_SetVolume(GetMovieAudioVolumeValue(uhSelect));
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return NVTEVT_CONSUME;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
EVENT_ENTRY CustomMoviePlayObjCmdMap[] = {
 | 
						|
	{NVTEVT_EXE_OPENPLAY,                   MoviePlayExe_OpenPlay},
 | 
						|
	{NVTEVT_EXE_CLOSEPLAY,                  MoviePlayExe_ClosePlay},
 | 
						|
	{NVTEVT_EXE_PAUSEPLAY,                  MoviePlayExe_PausePlay},
 | 
						|
	{NVTEVT_EXE_RESUMEPLAY,                 MoviePlayExe_ResumePlay},
 | 
						|
	{NVTEVT_EXE_STARTPLAY,                  MoviePlayExe_StartPlay},
 | 
						|
	{NVTEVT_EXE_FWDPLAY,                    MoviePlayExe_PlayFwd},
 | 
						|
	{NVTEVT_EXE_BWDPLAY,                    MoviePlayExe_PlayBwd},
 | 
						|
	{NVTEVT_EXE_FWDSTEPPLAY,                MoviePlayExe_PlayStepFwd},
 | 
						|
	{NVTEVT_EXE_BWDSTEPPLAY,                MoviePlayExe_PlayStepBwd},
 | 
						|
	{NVTEVT_EXE_SWITCH_FIRSTFRAME,          MoviePlayExe_SwitchFirstFrame},
 | 
						|
	{NVTEVT_EXE_SWITCH_LASTFRAME,           MoviePlayExe_SwitchLastFrame},
 | 
						|
	{NVTEVT_EXE_CHANGESIZE,                 MoviePlayExe_ChangeSize},
 | 
						|
	{NVTEVT_EXE_MOVIEAUDPLAYVOLUME,         MoviePlayExe_OnAudPlayVolume},
 | 
						|
	{NVTEVT_NULL,                           0},  //End of Command Map
 | 
						|
};
 | 
						|
 | 
						|
CREATE_APP(CustomMoviePlayObj, APP_SETUP)
 | 
						|
 | 
						|
 |