⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slideplay.c

📁 M3355的源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
//*****************************************************************************/

#include <comsub.h>
#include <pe.h>
#include <panel.h>
#include <osd.h>
#include <nv.h>
#include <ui.h>
#include <ui_sub.h>
#include <panel.h>
#include "../../cstm/fend/frntp.h"
#include "nmnvlib.h"
#include "normal.h"
//#include "nm_func.h"
#if(CLOSE_CAPTION_DEFAULT==CLOSE_CAPTION_ENABLE)
#include "closecaption.h"
#endif
#include <stdio.h>
#include <stdlib.h>
#include <audio.h>
#include <fileopen.h>
#include <rscstruc.h>
#include <resource.h>
#include <platform.h>
#include <filesys.h>
#if(_SDRAM_MODE==_SDRAM_4M16x1_MODE_)
#include <picture_cd.h>//cliff 30512-01cf for make the behavier(rotate and mirror) of JPG and PICTURECD same
#endif
#include <setupfunc.h>
//20021115 Tom Yang for perhibit KEY_SETUP start
#include <atapi.h>
#include <vobu.h>

#include "uiosd.h"
#include "NMOSD.h"
#include "../FileopenMenu/MediaPlayerOutlook.h"

#ifdef _MPLAY_ENABLE_

extern BOOL bVCD20JumpFlag;
extern WORD MaxKaraTTN;

extern BOOL bIsKaraDVD;

extern BOOL bNeedPLChk;//030814-01lily:for lastplay pl check
extern BOOL bIsFromStop;

extern int g_iServoCloseTrayTime;
#if(_DEALER_LOCK_MODE == _DEALER_LOCK_ENABLE_)
extern BOOL bDealerUnlockTimer;//maggie40210
extern BOOL bDealerLockTimer;//maggie40210
extern BOOL bDealerLock;//maggie40212
extern BOOL bDoneDealerLock;
#endif
#define VOBU_STL_OK_EVENT           0x00010000
#define VOBU_STL_SKIP_EVENT        0x00020000
#define MIC_3DSUR_MUTEX				1     //MIC and 3D surround can't exist the same time
extern BOOL flag_UserSetKey_standby;  //30216-01jf
extern BOOL bPowerOff;			//Added by brook,set this variable to TRUE when enter power off
#if(_SDRAM_MODE==_SDRAM_4M16x1_MODE_)
extern void AutoOpenTray();
#endif
//below used in zoom's screen fit.
//0 mean normal 1 to 9 mean large -1 to -9 mean small.
extern int bZoomVRatio;
extern int bZoomHRatio;
//------------------


extern BYTE JpgNextState;
extern BYTE JpgResumeState;
extern BYTE DVDVRMenuStop;

extern WORD modeGuiType;

extern BOOL isKaraoke,haveMelody;
extern BYTE isMultiVoise;

extern BOOL IsWaitPrev;
extern BOOL bFPLastplay;
//extern BOOL bLogoState;//301010-01mi

//--> Gordon. used to Draw Slide Show OSD, which is used among Normal.c, MediaPlayFunc.c
extern BOOL bDrawSlideShowHelp;

extern int ZoomPreSub;
extern BYTE ZoomPreOnOff ;
extern bDVDSetup_NoShowLogo;
extern WORD	wShowedNum;//benjamin add ,means the number of jpeg which is acutually showed on screen;

#define ZOOMBRIGHT_NONE 0
#define ZOOMBRIGHT_ZOOM 1
#define ZOOMBRIGHT_BRIGHT 2
BYTE bZoomBrightFlag=ZOOMBRIGHT_NONE;

void Slide_RespondNVSegEnd(void);
//add by Joey for new_512k 04.0520
void UiFuncSlideProc(WORD MsgType, DWORD MsgInput)
{
	if(bZoomBrightFlag==ZOOMBRIGHT_BRIGHT)
		SlideBrightContrastSharp_Proc(MsgType, MsgInput);
	else if (bZoomBrightFlag==ZOOMBRIGHT_ZOOM)
		SlideFuncZoomProc(MsgType,MsgInput);
	else
		SlideProc(MsgType,MsgInput);
	
}

void SlideProc(WORD MsgType, DWORD MsgInput)
{
	LoaderStatus status;
	PLAYPOINT iPlayPoint;
	WORD iCurPic, iTotalPic;
    extern BYTE JpgNextState,JpgResumeState;
    extern WORD zoomnum;
	
	switch (MsgType)
		{
		case C_FP_KEY:
        	SlideRespondFPKey(MsgInput);
        	break;
    	case C_TIMER_ACTIVE:
//    		GPRINTF("process C_TIMER_ACTIVE\n"); 
        	SlideRespondTimerActive(MsgInput);
        	break;        	
		case C_NV_NOTICE:
        	if (MachineState == C_MACHINE_ST_READY)
            	{
            		BasalRespondNVNotice(MsgInput);
//		        	GPRINTF("process c_nv_notice\n");            	
        		}
        	break;
        case C_PLAYBACK_MANAGE:
        if((MsgInput==C_NV_SEG_END)&&(bZoomCount == ZOOMNORMAL))
        {
            if(g_UiCoreState!=UI_CORE_STOP)
            {
                GetLoaderStatus(&status);
                if(status.tray==LOADER_TRAY_CLOSE)
                	{
                    	Slide_RespondNVSegEnd();
                	}
            }
        }
        
        break;
        case C_SLIDESHOW_HELP:
        	gAuxParam.bDrawSlideShowHelp=&bDrawSlideShowHelp;
        	iTotalPic=FileOpenMenuGetTTNs();
			iCurPic = wShowedNum+1;
			gAuxParam.iCurPic = &iCurPic;
        	gAuxParam.iTotalPic=&iTotalPic;
        	MPA_RefreshAuxiliary(AT_SLIDESHOWHELP_INIT, &gAuxParam);
        	SendVFDPart1Show();
        	break;
        case C_SLIDESHOW_TT:
		//benjamin change here,
		//when current is zoom sub function ,then show the vfd 
		//not show the help osd
        NVGetCurInfo(&iPlayPoint);
        iCurPic=iPlayPoint.wTTN+1;
        iTotalPic=FileOpenMenuGetTTNs();
	    wShowedNum=iPlayPoint.wTTN;
		if(zoomnum!=wShowedNum)
			zoomnum=0xffff;
		SendVFDPart1Show();
		if(g_UiCrntSubFunc==UI_SUBFUNC_ZOOM)
		{
			break;
		}
        gAuxParam.iCurPic=&iCurPic;
        gAuxParam.iTotalPic=&iTotalPic;
        MPA_RefreshAuxiliary(AT_SLIDESHOWHELP_CHG_NUM, &gAuxParam);
        break;
        
		case C_SHOWJPG_OK:
			JpgNextState =0;//benjamin add for jpg play ,skip one ,ignore othe skip before complete
			JpgResumeState = 0;
		break;
		
 		case C_PROCESS_BAR:
    		switch(MsgInput)       
    		{
//    		GPRINTF("process C_process_bar\n"); 
    			case C_PROCESS_INIT:
            		MPA_RefreshAuxiliary(AT_PROGRESSBAR_INIT, &gAuxParam);
    				break;
    			case C_PROCESS_END:
            		MPA_RefreshAuxiliary(AT_PROGRESSBAR_CLOSE, &gAuxParam);
    				break;
    			default:
    				MPA_RefreshAuxiliary(AT_PROGRESSBAR_INC, &gAuxParam);
    				break;
    		}
    		break;
    	default:
//    		GPRINTF("process default slideplay\n"); 
    		break;
		}
}

void UiFuncSlideInit(void)
{
#if 0
	tPositionInfo iPos;
#endif
	bDrawSlideShowHelp = TRUE;
	bZoomBrightFlag=ZOOMBRIGHT_NONE;
//#if(_SDRAM_MODE==_SDRAM_1M16x2_MODE_)
//	 DownLoadJpegCode();
//#endif
    
#if 0
	gui_hdc = CreateDC("DISPLAY", "OSD", NULL, NULL);
    SetBkMode(gui_hdc, TRANSPARENT);
#endif
}
void SlideV_KEY_OPEN(void);
extern void UiSubFuncBrightContrastSharpInit(void);
extern void (*ptr_UiSubFuncBrightContrastSharpInit)(void);
extern HDC gAUXdc;             

void SlideRespondFPKey(DWORD MsgInput)
{
    WORD iCurPic, iTotalPic;
#if(_SDRAM_MODE==_SDRAM_4M16x1_MODE_)
 extern BOOL bDiscErrorOpen;
#endif
   // if(MsgInput==V_KEY_LGMP2)
   //     (VKeyProc[MsgInput])();
#if(_SDRAM_MODE==_SDRAM_4M16x1_MODE_)
   if(MsgInput!=V_KEY_OPEN&&MsgInput!=V_KEY_POWER
		&&bDiscErrorOpen)
		return;
#endif

	switch(MsgInput)
		{
		case V_KEY_UP:
		case V_KEY_PREV:	
//			GPRINTF("V_KEY_UP\n");
			SlideV_KEY_UP();
			break;
		case V_KEY_DOWN:
		case V_KEY_NEXT:	
//			GPRINTF("V_KEY_DOWN\n");
			SlideV_KEY_DOWN();
			break;
		case V_KEY_LEFT:
//			GPRINTF("V_KEY_left\n");
			SlideV_KEY_LEFT();
			break;
		case V_KEY_RIGHT:
//			GPRINTF("V_KEY_right\n");
			SlideV_KEY_RIGHT();
			break;
		case V_KEY_ZOOM:
			if(CanZoom())
				return;
//			GPRINTF("V_KEY_zoom\n");
			//-->Alan, bug fix for clear next/prev button when zoom
			bZoomBrightFlag=ZOOMBRIGHT_ZOOM;
			if(g_UiCoreState != UI_CORE_PAUSE)
				MPA_RefreshAuxiliary(AT_PLAYMODE_CLR, &gAuxParam);
			SlideV_KEY_ZOOM();
			break;
		case V_KEY_SETUP:
			MPA_RefreshAuxiliary(AT_CLOSE, &gAuxParam);
			CaseV_KEY_SETUP();
			break;
		case V_KEY_STOP:
//			GPRINTF("V_KEY_stop\n");
			SlideV_KEY_STOP();
			break;
		case V_KEY_RETURN:
			if(bZoomCount == ZOOMNORMAL)
				SlideV_KEY_RETURN();
			break;
		case V_KEY_PAUSE:
			SlideV_KEY_PAUSE();
			break;
		case V_KEY_PLAY:
			SlideV_KEY_PLAY();
			break;
		case V_KEY_FILEOPEN:
//			GPRINTF("V_KEY_file\n");
			SlideV_KEY_FILEOPEN();
			break;
		case V_KEY_OPEN:
			MPF_Open();
			break;
#ifdef _BRIGHT_ENABLE_
		case V_KEY_VOLDOWN:
			bZoomBrightFlag=ZOOMBRIGHT_BRIGHT;
			gui_hdc=gAUXdc;
			ptr_UiSubFuncBrightContrastSharpInit = UiSubFuncBrightContrastSharpInit;
			(*ptr_UiSubFuncBrightContrastSharpInit)();
			gAuxParam.bDrawSlideShowHelp=&bDrawSlideShowHelp;
       		iTotalPic=FileOpenMenuGetTTNs();
			iCurPic = wShowedNum+1;
			gAuxParam.iCurPic = &iCurPic;
       		gAuxParam.iTotalPic=&iTotalPic;
       		MPA_RefreshAuxiliary(AT_SLIDESHOWHELP_INIT, &gAuxParam);
			break;
#endif
		default:
//			GPRINTF("V_KEY_default\n");
			//ShowDiscInfo( MSG_INVALID, MSG_NULL );
			break;
		}

}
/*
void SlideV_KEY_OPEN(void)
{
    MPA_RefreshAuxiliary(AT_CLOSE, &gAuxParam);
}
*/
void SlideV_KEY_UP(void)
{
    DWORD dwRotateMode ;
	extern unsigned char bzoomokflag;
    PLAYPOINT playPoint;
    extern int JpgUserRotateState;

#if 0	
	tPositionInfo  iPos;
	MPO_GetPositionInfo(&iPos);
#endif	
    if (bZoomCount == ZOOMNORMAL)  //benjamin add,only normal mode ,this is next key
	{
#if 0
	switch(iPos.iPlayerFocused)
			{
			case MPLR_PHOTO:
#endif 				
				if(JpgNextState)//benjamin add ,for jpeg play skip only one 
					return;
				JpgNextState=1;//benjamin add ,for jpeg play skip only one 
				GPRINTF("bMixPlay=%d\n",bMixPlay);
				if(!bMixPlay)
					NVPlayModeChg(C_NV_Stop,C_STOP_SHOWLOGO);//in jpg ,it is call vobu to peabort
				ShowPlayModeGui(RS_FUN_OSD_REV_SKIP, MSG_NULL);
				Slide_NextPrevProc(V_KEY_PREV,-1);
				return;
#if 0				
			default:
				break;
			}
#endif	
    }
	else
#if 0		
    if (bZoomCount != ZOOMNORMAL)  //when osd disappear it can renew by diddy
#endif		
    {
		MPA_RefreshAuxiliary(AT_SLIDESHOWHELP_CLOSE, &gAuxParam);
        ShowZoomOSD();
    }
    if(g_UiCoreState != UI_CORE_STOP)
    {
	    if (!NVHLKey(HL_UP))
	        ShowDiscInfo(MSG_INVALID, MSG_NULL);
    }
}

void SlideV_KEY_DOWN(void)
{
    extern int JpgUserRotateState;
    extern BYTE bPcState;
	extern unsigned char bzoomokflag;
    PLAYPOINT playPoint;
	WORD PTTNums;

#if 0	
	tPositionInfo  iPos;
	MPO_GetPositionInfo(&iPos);
#endif	
    if (bZoomCount == ZOOMNORMAL)  //benjamin add,only normal mode ,this is next key
    {
#if 0    
			switch(iPos.iPlayerFocused)
			{
			case MPLR_PHOTO:
#endif				
				GPRINTF("jpgstate=%d\n",JpgNextState);
				if(JpgNextState)//benjamin add ,for jpeg play skip only one 
					return;
				JpgNextState=1;//benjamin add ,for jpeg play skip only one 
				if(!bMixPlay)
					NVPlayModeChg(C_NV_Stop,C_STOP_SHOWLOGO);//in jpg ,it is call vobu to peabort
				ShowPlayModeGui(RS_FUN_OSD_SKIP, MSG_NULL);
				Slide_NextPrevProc(V_KEY_NEXT,1);
				return;
#if 0					
			default:
				break;
			}
#endif			
    }
	else
#if 0
	if (bZoomCount != ZOOMNORMAL)  //when osd disappear it can renew by diddy]
#endif		
    {
 		//if(iPos.iPlayerFocused==MPLR_PHOTO)//benjamin add ,close help osd
		MPA_RefreshAuxiliary(AT_SLIDESHOWHELP_CLOSE, &gAuxParam);
 		ShowZoomOSD();
    }
    if(g_UiCoreState != UI_CORE_STOP)
    {
	    if (!NVHLKey(HL_DOWN))
	        ShowDiscInfo(MSG_INVALID, MSG_NULL);
    }
}

/*---------------------------------------------------------------------------
 * Function_Name: SlideV_KEY_LEFT
 * Arguments    : None
 * Return value : None
 * Remark  : Proccess user press "LEFT" key.
 *---------------------------------------------------------------------------*/
void SlideV_KEY_LEFT(void)
{
    DWORD dwRotateMode ;
    extern int JpgUserRotateState;
	extern unsigned char bzoomokflag;

#if 0	
	tPositionInfo  iPos;
	MPO_GetPositionInfo(&iPos);
#endif	
	if(bZoomCount==ZOOMNORMAL)//benjamin change
	{
#if 0	
		switch(iPos.iPlayerFocused)
		{
		case MPLR_PHOTO:
#endif			
			if(JpgNextState)//benjamin add ,for jpeg play skip only one 
				return;
			if(bzoomokflag)//benjamin add,when restore to nomal decoded,not allowed zoom
				return;
	        if (ISJpgRotateOk() == 1)
	        {
				if(!bMixPlay)
					NVPlayModeChg(0x26,0);
	            if (JpgUserRotateState - 90 == 0)
	                JpgUserRotateState = 360;
	            else if (JpgUserRotateState - 90 < 0)
	                JpgUserRotateState = 270;
	            else
	                JpgUserRotateState -= 90;
				return;//benjamin add ,for normal mode
	        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -