📄 play_com.c
字号:
return (fgRet);
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
BOOL fgCheckTimeValid(sTimeChkInfo *prChkTime) large
{
BYTE bHH;
BYTE bMM;
BYTE bSS;
switch (prChkTime->bType)
{
case E_TITLE_TIME:
case E_DISC_TIME:
bHH = bSharedInfo(SI_TIME_TOTAL_HH);
bMM = bSharedInfo(SI_TIME_TOTAL_MM);
bSS = bSharedInfo(SI_TIME_TOTAL_SS);
break;
case E_CHAP_TIME:
case E_TRACK_TIME:
/*
SI_TIME_TOTAL_CHAPTER_HH/MM/SS and SI_TIME_TOTAL_TRACK_HH/MM/SS share
the same share info position.
*/
bHH = bSharedInfo(SI_TIME_TOTAL_CHAPTER_HH);
bMM = bSharedInfo(SI_TIME_TOTAL_CHAPTER_MM);
bSS = bSharedInfo(SI_TIME_TOTAL_CHAPTER_SS);
break;
default:
return (FALSE);
}
if (prChkTime->bHH > bHH)
{
return (FALSE);
}
else if (prChkTime->bHH < bHH)
{
return (TRUE);
}
if (prChkTime->bMM > bMM)
{
return (FALSE);
}
else if (prChkTime->bMM < bMM)
{
return (TRUE);
}
if (prChkTime->bSS > bSS)
{
return (FALSE);
}
else
{
return (TRUE);
}
}
#ifdef NEW_PLAY
BYTE bDiscHandleUopRet(BYTE bUopId, BYTE bUopRet) large
{
BYTE bRet;
BYTE bTmp1, bTmp2;
#ifdef PLAYER_FLMENU
vFlHandleUopRet(bUopId, bUopRet);
#endif
if (bUopRet != SV_NO_ERROR)
{
bRet = UOP_FAIL; /* show error */
}
else
{
bRet = UOP_UPDATE;
}
#ifdef PLAYER_FLMENU
if (fgIsIsoPlay())
{ // fix the issue : jpeg slideshow and press IR_ROOT_MENU can't go back to FILE MENU
extern void vFlHandleUopCheck();
vFlHandleUopCheck();
}
#endif
switch (bUopId)
{
case UOP_DIGITAL_BTN:
if (fgIsVcdPlay())
break;
case UOP_ARROW_BTN:
{
bRet = UOP_OK; /* no show error */
break;
}
/* normal playback */
case UOP_PLAY:
case UOP_RESUME_PLAY:
if (bUopRet == SV_NO_ERROR)
{
vOsdShowPlayStatus(OSD_SHOW_PLAY, OSD_TIMEOUT_SHORT);
if (fgIsDvdPlay() && (bSharedInfo(SI_DVD_DOM) == SV_VTSTT_DOM))
{
VfdShowPlayInfo(VFD_INFO_TITLE_CHAPTER, bSharedInfo(SI_TT_NO), bSharedInfo(SI_TRACK_NO));
}
#ifdef VCD_SUPPORT
else if(fgIsVcdPlay())
{
VfdShowPlayInfo(VFD_INFO_TRACK, 0, bSharedInfo(SI_TRACK_NO));
}
#endif
}
if (fgIsDvdPlay() )
{
_fgDVDStopPlayWait = FALSE ;
}
break;
/* case UOP_STOP: */
case UOP_NEXT:
if(fgIsDvdPlay())
{
#ifdef DVD_SHOW_MSG_FIRST
if (bUopRet != SV_NO_ERROR)
{
/* TODO: recall play status */
vOsdShowPlayStatus(OSD_SHOW_CLEAR, 0);
}
#else
if (bUopRet == SV_NO_ERROR)
{
vOsdShowPlayStatus(OSD_SHOW_NEXT_CH, OSD_TIMEOUT_SHORT);
}
#endif
}
#ifdef VCD_SUPPORT
else if(fgIsVcdPlay())
{
if (bUopRet == SV_NO_ERROR)
{
if (!fgIsInDigest(bSharedInfo(SI_PBC_STATE)))
vOsdShowPlayStatus(OSD_SHOW_NEXT_TRK, OSD_TIMEOUT_SHORT);
}
}
#endif
break;
case UOP_TOP:
case UOP_PREVIOUS:
if(fgIsDvdPlay())
{
#ifdef DVD_SHOW_MSG_FIRST
if (bUopRet != SV_NO_ERROR)
{
/* TODO: recall play status */
vOsdShowPlayStatus(OSD_SHOW_CLEAR, 0);
}
#else
if (bUopRet == SV_NO_ERROR)
{
vOsdShowPlayStatus(OSD_SHOW_PREV_CH, OSD_TIMEOUT_SHORT);
}
#endif
}
#ifdef VCD_SUPPORT
else if(fgIsVcdPlay())
{
if (bUopRet == SV_NO_ERROR)
{
if (!fgIsInDigest(bSharedInfo(SI_PBC_STATE)))
vOsdShowPlayStatus(OSD_SHOW_PREV_TRK, OSD_TIMEOUT_SHORT);
}
}
#endif
break;
case UOP_REPEAT:
bTmp1 = bSharedInfo(SI_REPEAT_MODE);
bTmp2 = bSharedInfo(SI_USR_AUX_CTRL);
if ((bUopRet == SV_NO_ERROR) && (!fgISUsrSeqPlay(bTmp2)))
{
switch (bTmp1)
{
case SV_REPEAT_ALL:
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_ALL, OSD_TIMEOUT_SHORT);
break;
case SV_REPEAT_TITLE:
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_TITLE, OSD_TIMEOUT_SHORT);
break;
case SV_REPEAT_TRACK:
case SV_REPEAT_LIST:
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_TRACK, OSD_TIMEOUT_SHORT);
break;
case SV_REPEAT_CHAPTER:
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_CHAPTER, OSD_TIMEOUT_SHORT);
break;
case SV_REPEAT_NONE:
case SV_REPEAT_ABNONE:
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_OFF, OSD_TIMEOUT_SHORT);
break;
default:
break;
} /* switch () */
}
break;
#ifdef DVD_SHOW_MSG_FIRST
case UOP_FORWARD:
case UOP_REVERSE:
/* note only for FF/FR/SF/SR */
if(fgIsDvdPlay())
{
if (bUopRet == SV_NO_ERROR)
{
vOsdShowPlayStatus(OSD_SHOW_CLEAR, 0);
bRet = UOP_OK; /* no need to update again! */
}
}
break;
#endif /* DVD_SHOW_MSG_FIRST */
case UOP_MENU_CALL:
if(fgIsDvdPlay())
{
if (bUopRet == SV_NO_ERROR)
{
vDVDShowMenuType(OSD_TIMEOUT);
}
}
break;
case UOP_RETURN:
#ifdef VCD_SUPPORT
if(fgIsVcdPlay())
{
if (bUopRet == SV_NO_ERROR)
{
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_PBC_MENU, OSD_TIMEOUT);
}
} /* UOP_RETURN */
#endif
break;
case UOP_CHANGE_ASTN:
case UOP_NEXT_ASTN:
#ifdef VCD_SUPPORT
if(fgIsVcdPlay())
{
if (bUopRet == SV_NO_ERROR)
{
bTmp1 = bSharedInfo(SI_DISC_TYPE);
bTmp2 = bSharedInfo(SI_AST_NS);
if (IS_SVCD_TYPE(bTmp1)
)
{
if (bTmp2 > 0)
{
{
vOsdShowAudioN(OSD_AUDIO_NORMAL | OSD_TIMEOUT, bSharedInfo(SI_AST_NO) + 1, bTmp2);
}
}
else
{
vOsdShowAudioN(OSD_AUDIO_CLEAR, 0, 0);
}
}
}
} /* UOP_NEXT_ASTN */
else
#endif
{
bTmp1 = bSharedInfo(SI_AST_NO);
bTmp2 = bSharedInfo(SI_AST_NS);
#ifdef AUDIO_STREAM_CHANGE_MUTE
if (!fgIsMute()) /* if mute off */
{
// TODO: if change from PCM to PCM?
if (bSharedInfo(SI_A_CODE_MODE) == SV_A_CODE_PCM)
{
vAdspMute(ADSP_ON, AST_PCM_CHANGE_UNMUTE_CNT); // extra mute time for PCM
}
}
#endif /* AUDIO_STREAM_CHANGE_MUTE */
if ((bUopRet == SV_NO_ERROR) && (bTmp1 < bTmp2) && (bTmp2 > 0))
{
#ifdef PLAYER_KARAOKE
if ((bAdspCurrVocal() != VOCAL_AUDIO1) && (bAdspCurrVocal() != VOCAL_AUDIO2))
#endif
{
vDVDShowAudio(bTmp1, bTmp2);
}
}
else
{
#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_DIRECT)
vOsdShowAudio(OSD_AUDIO_CLEAR, 0, 0, 0, 0, 0, 0);
#else
if (fgIsInputStateValid(INPUT_STATE_AUDIO_CHANGE))
{
fgSetPlayPostKey(IR_TIME_OUT);
}
#endif
}
break;
}
break;
case UOP_PBC_SWITCH:
#ifdef VCD_SUPPORT
if(fgIsVcdPlay())
{
if (bUopRet == SV_NO_ERROR)
{
bTmp1 = bSharedInfo(SI_PBC_SWITCH);
if (bTmp1 == SV_PBC_ON)
{
vOsdPosShow(OSD_POS_PBC_2, OSD_MSG_PBC_ON, OSD_TIMEOUT_SHORT);
}
else
{
vOsdPosShow(OSD_POS_PBC_2, OSD_MSG_PBC_OFF, OSD_TIMEOUT_SHORT);
}
#ifndef PLAYER_NO_VFD
VfdShowPbcSwitch(bTmp1 == SV_PBC_ON);
#endif
/* note no need to update VFD in combine.c */
//bRet = UOP_OK;
}
} /* UOP_PBC_SWITCH */
#endif
break;
case UOP_SHUFFLE:
if (bUopRet == SV_NO_ERROR)
{
if(!fgIsIsoPlay())
{
bTmp1 = bSharedInfo(SI_USR_AUX_CTRL);
bTmp2 = bSharedInfo(SI_REPEAT_MODE);
if (fgISUsrSeqPlay(bTmp1) && fgISUsrSeqPlay(bTmp2))
{
break;
}
if (bSharedInfo(SI_USR_PBC_CTRL) == SV_SHUFFLE)
{
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_SHUFFLE_ON, OSD_TIMEOUT_SHORT);
}
else
{
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_SHUFFLE_OFF, OSD_TIMEOUT_SHORT);
}
}
#if(defined(DDISC_PB_SHUFFLE_ENABLED) || defined(DDISC_PB_RANDOM_ENABLED))
else if(fgIsIsoPlay())
{
bTmp1 = bSharedInfo(SI_USR_PBC_CTRL);
bTmp2 = bSharedInfo(SI_ISO_ITEM_TYPE);
if (fgFlCheckStatus(FL_STATUS_IN_MENU))
{
vFlIpShowInfo(IP_INFO_RPT_TYPE, bTmp1, 0);
}
else if ((fgIsIsoItemStill(bTmp2) || fgIsIsoItemAV(bTmp2)) && (bUopRet == SV_NO_ERROR))
{
switch (bTmp1)
{
#ifdef DDISC_PB_SHUFFLE_ENABLED
case SV_SHUFFLE:
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_MP3_SHUFFLE, OSD_TIMEOUT_SHORT);
break;
#endif
#ifdef DDISC_PB_RANDOM_ENABLED
case SV_RANDOM:
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_MP3_RANDOM, OSD_TIMEOUT_SHORT);
break;
#endif
case SV_REPEAT_NONE:
case SV_REPEAT_ABNONE:
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_NORMAL_MODE, OSD_TIMEOUT_SHORT);
break;
default:
break;
}
bRet = UOP_OK;
}
}
#endif /* (defined(DDISC_PB_SHUFFLE_ENABLED) || defined(DDISC_PB_RANDOM_ENABLED)) */
}
break;
#ifdef PLAYER_DIGEST
case UOP_DIGEST:
if (fgIsInputStateValid(INPUT_STATE_DIGEST))
{
if (bUopRet == SV_NO_ERROR)
{
fgSetPlayPostKey(IR_DONE);
}
else /* error occur */
{
fgSetPlayPostKey(IR_TIME_OUT);
}
}
break;
#endif
case UOP_GROUP_PLAY:
case UOP_TITLE_PLAY:
if (_bInputState == INPUT_STATE_TITLE_SEARCH)
{
if (bUopRet != SV_NO_ERROR)
{
/* title search failed, escape */
fgSetPlayPostKey(IR_TIME_OUT);
break;
}
if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_WAIT)
{
/* call the title search state to switch to time search */
fgSetPlayPostKey(IR_SELECT);
_rSearchStateCtx.bType = SEARCH_DVD_TIME_CHANGE;
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
break;
}
else if (_rSearchStateCtx.bType == SEARCH_DVD_PTT_WAIT)
{
/* call the title search state to switch to PTT search */
fgSetPlayPostKey(IR_SELECT);
_rSearchStateCtx.bType = SEARCH_DVD_PTT_CHANGE;
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
break;
}
}
case UOP_PTT_PLAY:
if ((_bInputState == INPUT_STATE_PTT_SEARCH) &&
(_rSearchStateCtx.bType == SEARCH_DVD_TIME_CH_WAIT))
{
if (bUopRet != SV_NO_ERROR)
{
/* title search failed, escape */
fgSetPlayPostKey(IR_TIME_OUT);
break;
}
/* call the chapter search state to switch to time search */
fgSetPlayPostKey(IR_SELECT);
_rSearchStateCtx.bType = SEARCH_DVD_TIME_CH_CHANGE;
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
break;
}
else
{
vOsdDisplayChange(DISP_PLAY_INFO, 0);
}
break;
case UOP_TRACK_PLAY:
#ifdef VCD_SUPPORT
if(fgIsVcdPlay())
{
if (!fgIsInGoto()) // megaa Goto
{
if (bUopRet == SV_NO_ERROR)
{
vOsdDisplayChange(DISP_PLAY_INFO, 0);
}
else
{
vOsdDisplayChange(DISP_PLAY_INFO, PLAY_INFO_CLEAR);
}
}
}
else
#endif
if(fgIsDvdPlay())
{
if ((_bInputState == INPUT_STATE_PTT_SEARCH) &&
(_rSearchStateCtx.bType == SEARCH_DVD_TIME_CH_WAIT))
{
if (bUopRet != SV_NO_ERROR)
{
/* title search failed, escape */
fgSetPlayPostKey(IR_TIME_OUT);
break;
}
/* call the chapter search state to switch to time search */
fgSetPlayPostKey(IR_SELECT);
_rSearchStateCtx.bType = SEARCH_DVD_TIME_CH_CHANGE;
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
break;
}
else
{
vOsdDisplayChange(DISP_PLAY_INFO, 0);
}
}
break;
case UOP_CHANGE_SPSTN:
case UOP_NEXT_SPSTN:
case UOP_SP_SWITCH:
case UOP_NEXT_SPSTN_NOSP:
{
bTmp1 = bSharedInfo(SI_SPST_NO);
bTmp2 = bSharedInfo(SI_SPST_NS);
if ((bUopRet == SV_NO_ERROR) && (bTmp2 > 0) && ((bTmp1 & 0x1f) < bTmp2))
{
vDVDShowSubtitle(bTmp1, bTmp2);
}
else
{
#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_DIRECT)
vOsdShowSubtitle(OSD_SUBTITLE_CLEAR, 0, 0, 0, 0, 0);
#else
if (fgIsInputStateValid(INPUT_STATE_SUBTITLE_CHANGE))
{
fgSetPlayPostKey(IR_TIME_OUT);
}
#endif
}
}
break;
#ifdef DVD_ANGLE_CHANGE_SELECT
case UOP_NEXT_AGL:
case UOP_CHANGE_AGL:
{
if (bUopRet == SV_NO_ERROR)
{
if (fgIsInputStateValid(INPUT_STATE_ANGLE_CHANGE))
{
vOsdShowAngle(OSD_ANGLE_HILI, bSharedInfo(SI_AGL_NO), bSharedInfo(SI_AGL_NS));
}
else /* not in angle select mode */
{
if (fgIsAngleShow())
{
vOsdShowAngle(OSD_ANGLE_NORMAL, bSharedInfo(SI_AGL_NO), bSharedInfo(SI_AGL_NS));
}
else
{
vOsdShowAngle(OSD_ANGLE_CLEAR, 0, 0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -