📄 slideplay.c
字号:
//*****************************************************************************/
#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 + -