mediaplayerfunc.c
来自「M3355的源代码」· C语言 代码 · 共 2,203 行 · 第 1/5 页
C
2,203 行
}
/*--------------------------------------------------------------------
* Function_Name FileOpenMenuGetTTNs
*
* Return Value: current dir file count
* .
*------------------------------------------------------------------*/
WORD FileOpenMenuGetTTNs(void)
{
return MPF_Attr.wFileCount;
}
/*--------------------------------------------------------------------
* Function_Name FileOpenMenuGetTTStrtNs
*
* Return Value: current dir folder count
* .
*------------------------------------------------------------------*/
/* 30905-57emily : Add WMA last play feature */
/*************** For WMA LastPlay *****************************/
WORD MPF_GetListDIRNs(void)
{
return (MPF_Attr.wItemCount-MPF_Attr.wFileCount);
}
WORD MPF_GetProgIndex(WORD wProgNum)
{
return 0;
}
/*************** For WMA LastPlay *****************************/
BOOL MPF_HighLightDir(void)
{
tPositionInfo tMPFCurPosition;
MPO_GetPositionInfo(&tMPFCurPosition);
if(g_pListTab[tMPFCurPosition.iListHighlightIndex].bType == C_DIR)
return TRUE;
else
return FALSE;
}
/*--------------------------------------------------------------------
* Function_Name MPF_GetCurFileType
*
* Return Value: current highlight item type
* .
*------------------------------------------------------------------*/
BYTE MPF_GetCurFileType(void)
{
tPositionInfo tMPFCurPosition;
MPO_GetPositionInfo(&tMPFCurPosition);
return(g_pListTab[tMPFCurPosition.iListHighlightIndex].bType);
}
BOOL MPF_BackedToOriginalDIR(void)
{
wNowDirStartNum=FileOpenGetDirStartNum();
if(wNowDirStartNum==wPrevDirStartNum)
{
if(g_bCurSessionNum==g_bPrevSessionNum)
return TRUE;
else
return FALSE;
}
else
return FALSE;
}
//////////////////////////////////////////////////////////////////////
//
// the below functions are interior functions for mediaplayer AP
//
//////////////////////////////////////////////////////////////////////
//cdda:it means if cdda can lastplay from autoplay.
//fileopen:it means if music can lastplay from setup.
BOOL bCddaLastPlay;
//mediaplayerfunc functions
void MPF_RespondNVSegEnd(void);
void MPF_RespondNVNotice(DWORD dwNotice);
void Kara_RespondFPKey( DWORD UserKey );
void KaraProc( WORD MsgType, DWORD MsgInput );
#ifdef _MUTE_ENABLE_
void MuteVolume_RespondFPKey( DWORD UserKey );
void MuteVolume_Proc( WORD MsgType, DWORD MsgInput );
#endif
#ifdef _BRIGHT_ENABLE_
void BrightContrastSharp_RespondFPKey( DWORD UserKey );
void BrightContrastSharp_Proc( WORD MsgType, DWORD MsgInput );
#endif
void MediaPlayerProc( WORD MsgType, DWORD MsgInput );
void MPF_RespondFPKey( DWORD UserKey );
void MPF_UpDown(int Direction);
void MPF_Play_LG(void);
void MPF_Play(BOOL bUserOp);
void MPF_PreStop(void);
void MPF_Stop(BOOL bUserOp);
void MPF_Title(void);
void MPF_Enter(void);
void MPF_Pause(void);
void MPF_Next(BOOL bUserOp);
//void MPF_Prev(void);
void MPF_Prev(BOOL bJump);
void MPF_Open(void);
void MPF_Standby(void);
void MPF_FastForword(void);
void MPF_Reverse(void);
void MPF_ClearA(void);
void MPF_Repeat(void);
void MPF_RepeatAB(void);
BOOL MPF_PlayNextFile(void);
BOOL MPF_NumPlay(WORD wNum, BOOL bUserOp, BYTE bNextPrev, BOOL bJump, BOOL bFocusFollowSign);
void MPF_PlayBackManager(BYTE bNextPrev, BOOL bUserOp);
void MPF_RespondMixEnd(BYTE FileType);
void MPF_RespondTimerActive(DWORD MsgInput);
void MPF_RespondNVPointEnd(void);
void MPF_LastPlay(void);
void MPF_SurroundOnOff(void);
void MPF_PageUpDown(int Direction);
BOOL CheckFileCanPlay(BYTE bNextPrev,BOOL bUserOp);
void CheckPlayback(DWORD UserKey,WORD wPlayTTN);
void CheckListPlayback(DWORD UserKey,WORD wPlayTTN);
void MPF_RespondSendAgain(DWORD showedNO,BYTE FileType);
/*--------------------------------------------------------------------
* Function_Name SlideShowNext
*
* Description:
* play hinder picture
* Arguments:
* int iNextNum : 1-n
*------------------------------------------------------------------*/
void SlideShowNext(int iNextNum)
{
PLAYPOINT PPtemp;
tPositionInfo curPositionInfo;
PLAYPOINT iPlayPoint;
extern BYTE JPG_Zoom_Period;
int i;
g_UiCoreState=UI_CORE_PLAY;
{
MPO_GetPositionInfo(&curPositionInfo);
if(JPG_Zoom_Period)//benjamin add,see commet at where JPG_Zoom_Period define
iNextNum=0;
if(curPositionInfo.wListHighlightIndex+1+iNextNum-(MPF_Attr.wItemCount-MPF_Attr.wFileCount) > MPF_Attr.wFileCount)
{
MPF_UpDown(Direction_DOWN);
CmdUIMsg(C_FP_KEY, C_KEY_STOP);
}
else
{
for(i=0;i<iNextNum;i++)
MPF_UpDown(Direction_DOWN);
MPO_GetPositionInfo(&curPositionInfo);
CloseZoom();
PPtemp.wTTN = curPositionInfo.wListHighlightIndex-(MPF_Attr.wItemCount-MPF_Attr.wFileCount) ;
PPtemp.FileTp = C_JPGFILE;
PPtemp.dwLBAAddr = 0;
PPtemp.bProPlay = FALSE;
PPtemp.bMixPlay = FALSE;
NVPlayModeChg(C_NV_Play,0);
NVPTTPlay( &PPtemp, C_STOP_SKIPPG, KEY_NULL );
}
}
}
/*--------------------------------------------------------------------
* Function_Name SlideShowPrev
*
* Description:
* play foregoing picture
* Arguments:
* int iPrevNum : -1 to -n
*------------------------------------------------------------------*/
void SlideShowPrev(int iPrevNum)
{
PLAYPOINT PPtemp;
tPositionInfo curPositionInfo;
PLAYPOINT iPlayPoint;
extern BYTE JPG_Zoom_Period;
int iNum,i;
iNum=-iPrevNum;
g_UiCoreState=UI_CORE_PLAY;
CloseZoom();
{
if(JPG_Zoom_Period)//benjamin add,see commet at where JPG_Zoom_Period define
iNum =2;
MPO_GetPositionInfo(&curPositionInfo);
if(curPositionInfo.wListHighlightIndex+1-iNum<=(MPF_Attr.wItemCount-MPF_Attr.wFileCount))
{
CmdUIMsg(C_FP_KEY, C_KEY_STOP);
}
else
{
for(i=0;i<iNum;i++)
MPF_UpDown(Direction_UP);
MPO_GetPositionInfo(&curPositionInfo);
PPtemp.wTTN = curPositionInfo.wListHighlightIndex-(MPF_Attr.wItemCount-MPF_Attr.wFileCount) ;
PPtemp.FileTp = C_JPGFILE;
PPtemp.dwLBAAddr = 0;
PPtemp.bProPlay = FALSE;
PPtemp.bMixPlay = FALSE;
NVPlayModeChg(C_NV_Play,0);
NVPTTPlay( &PPtemp, C_STOP_SKIPPG, KEY_NULL );
}
}
}
/*--------------------------------------------------------------------
* Function_Name CheckPlayback
*
* Description: Check if playback need change by all kinds of action
* .
* Arguments: Type: DWORD UserKey :V_KEY_...
* WORD wPlayTTN : for judgement
*
*------------------------------------------------------------------*/
void CheckPlayback(DWORD UserKey,WORD wPlayTTN)
{
CheckListPlayback(UserKey,wPlayTTN);
}
void CheckListPlayback(DWORD UserKey,WORD wPlayTTN)
{
tPositionInfo tMPFCurPosition;
MPO_GetPositionInfo(&tMPFCurPosition);
switch(UserKey)
{
case V_KEY_NEXT:
if(g_UiPlaybackRepeatRange==UI_PLAYBACKRANGE_REPEATONE)
{
g_UiPlaybackRepeatRange=UI_PLAYBACKRANGE_REPEATNONE;
MPO_RefreshOutlook( RT_PLAYBACK_CHG, &iRefreshParam);
}
break;
case V_KEY_PLAY:
wNowDirStartNum=FileOpenGetDirStartNum();
if(((g_bCurSessionNum!=g_bPrevSessionNum)||(wNowDirStartNum!=wPrevDirStartNum))&&(g_UiPlaybackRepeatRange!=UI_PLAYBACKRANGE_REPEATNONE))
{
g_UiPlaybackRepeatRange= UI_PLAYBACKRANGE_REPEATNONE;
RepeatAB_Counter = REPEAT_AB_OFF;
NVSetEndMode(C_NORMAL_END);
}
if((g_UiPlaybackRepeatRange == UI_PLAYBACKRANGE_REPEATAB)&&(wPlayTTN>PBInfo[ REPEATAB_BIG ].wTTN || wPlayTTN<PBInfo[ REPEATAB_SMALL ].wTTN))
{
g_UiPlaybackRepeatRange= UI_PLAYBACKRANGE_REPEATNONE;
RepeatAB_Counter = REPEAT_AB_OFF;
NVSetEndMode(C_NORMAL_END);
}
if((g_UiPlaybackRepeatRange == UI_PLAYBACKRANGE_REPEATONE)&&MPF_Attr.wListPlayingIndex!=tMPFCurPosition.wListPlayingIndex)
{
g_UiPlaybackRepeatRange= UI_PLAYBACKRANGE_REPEATNONE;
NVSetEndMode(C_NORMAL_END);
}
MPO_RefreshOutlook( RT_PLAYBACK_CHG, &iRefreshParam);
break;
}
}
/*--------------------------------------------------------------------
* Function_Name SpecialQuest
*
* Description:
* Process customer special quest
* Arguments:
* DWORD UserKey: V_KEY_...
* BOOL bUserOp: C_USEROP or C_NOUSER
* Return Value: Continue or stop
*------------------------------------------------------------------*/
BOOL SpecialQuest(DWORD UserKey, BOOL bUserOp)
{
tPositionInfo tMPFCurPosition;
WORD wRpt1TTN;
int iRes=0,i;
MPO_GetPositionInfo(&tMPFCurPosition);
#if(_CUSTOM==CUSTOM_LG)
switch(UserKey)
{
case V_KEY_NEXT:
if(tMPFCurPosition.iPlayerFocused==MPLR_PHOTO)
{
if((tMPFCurPosition.iFocusObj==OBJ_LIST))
MPF_UpDown(Direction_DOWN);
return FALSE;
}
if((DiscType==C_FILEOPENDISC)&&(MPF_Attr.wFileCount==0||g_bCurSessionNum==0xff)&&(bUserOp))
{
if((tMPFCurPosition.iFocusObj==OBJ_LIST))
{
MPF_UpDown(Direction_DOWN);
return FALSE;
}
}
if(bUserOp==C_NOUSER)
{
if(g_UiPlaybackRepeatRange==UI_PLAYBACKRANGE_REPEATONE&&g_bCurSessionNum==g_bPrevSessionNum&&wNowDirStartNum==wPrevDirStartNum)
{
wRpt1TTN = tMPFCurPosition.wListPlayingIndex+1-(MPF_Attr.wItemCount-MPF_Attr.wFileCount);
iRes=MPF_NumPlay(wRpt1TTN, C_USEROP,PLAY_PREV,C_NOJUMP,C_NOFOLLOW);
return FALSE;
}
}
if((g_UiPlaybackRepeatRange==UI_PLAYBACKRANGE_REPEATAB)&&(PBInfo[ REPEATAB_SMALL ].wTTN!=PBInfo[ REPEATAB_BIG ].wTTN)&& (bUserOp==C_NOUSER))
{
if(g_UiCoreState==UI_CORE_REVERSE)
{
wRpt1TTN = tMPFCurPosition.wListPlayingIndex+1-1-(MPF_Attr.wItemCount-MPF_Attr.wFileCount);
iRes=MPF_NumPlay(wRpt1TTN, bUserOp,PLAY_PREV,C_NOJUMP,C_NOFOLLOW);
}
else
{
wRpt1TTN = tMPFCurPosition.wListPlayingIndex+1+1-(MPF_Attr.wItemCount-MPF_Attr.wFileCount);
iRes=MPF_NumPlay(wRpt1TTN, bUserOp,PLAY_NEXT,C_NOJUMP,C_NOFOLLOW);
}
return FALSE;
}
if(g_UiPlaybackMethod==UI_PLAYBACKMETHOD_NORMAL&&g_UiPlaybackRepeatRange==UI_PLAYBACKRANGE_REPEATALL)
{
if((tMPFCurPosition.wListPlayingIndex+1==MPF_Attr.wItemCount)&&(g_UiCoreState==UI_CORE_FAST))
{
g_UiCoreState = UI_CORE_PLAY;
bActionCtl = 0;
NVPlayModeChg( C_NV_Play, 0 );
MPO_RefreshOutlook( RT_PLAYMODE_CHG, &iRefreshParam);
}
}
break;
case V_KEY_PREV:
if(tMPFCurPosition.iPlayerFocused==MPLR_PHOTO)
{
if((tMPFCurPosition.iFocusObj==OBJ_LIST))
MPF_UpDown(Direction_UP);
return FALSE;
}
if((DiscType==C_FILEOPENDISC)&&(MPF_Attr.wFileCount==0||g_bCurSessionNum==0xff))
{
if((tMPFCurPosition.iFocusObj==OBJ_LIST))
{
MPF_UpDown(Direction_UP);
return FALSE;
}
}
break;
case V_KEY_PLAY:
MPF_Play_LG();
break;
}
#endif
return TRUE;
}
/*--------------------------------------------------------------------
* Function_Name RemovedNumPlay
*
* Description:
* number play for removed file
* Arguments:
* WORD wNum:
*
* Return Value: Continue or stop
*------------------------------------------------------------------*/
BOOL RemovedNumPlay(WORD wNum, DWORD dwLBAAddr)
{
int iRes;
BYTE* pCurPath;
iRes=FileOpenPlayRemovedFile(wPrevDirStartNum, dwLBAAddr, wNum, MPF_Attr.wFilter, pCurPath);
if(iRes==C_NOFILE)
{
MPF_Stop(C_USEROP);
return FALSE;
}
iRefreshParam.szFileName_xDir=pCurPath;
iRefreshParam.wListPlayingIndex_xDir=&wNum;
MPO_RefreshOutlook(RT_REMOVED_PLAY, &iRefreshParam);
SendVFDPart1Show();
return TRUE;
}
/*--------------------------------------------------------------------
* Function_Name RemovedPlayBackManager
*
* Description:
* playback manager for removed file play
* Arguments:
* BYTE bNextPrev: PLAY_NEXT or PLAY_PREV
* BOOL bUserOp: C_USEROP or C_NOUSER
*------------------------------------------------------------------*/
void RemovedPlayBackManager(BYTE bNextPrev, BOOL bUserOp)
{
PLAYPOINT PPtemp;
WORD wTmpCount,wPlayNum;
if(g_UiCoreState==UI_CORE_STOP)
return;
NVGetCurInfo(&PPtemp);
wTmpCount=FileOpenGetRemovedFileCount(wPrevDirStartNum);
if(wTmpCount==MPF_NOTHING)
{
MPF_Stop(C_USEROP);
return;
}
if(bUserOp)
{
if(g_UiPlaybackRepeatRange==UI_PLAYBACKRANGE_REPEATONE)
g_UiPlaybackRepeatRange=UI_PLAYBACKRANGE_REPEATNONE;
NVPlayModeChg(C_NV_Play, 0);
g_UiCoreState = UI_CORE_PLAY;
bActionCtl = 0;
MPO_RefreshOutlook( RT_PLAYMODE_CHG, &iRefreshParam);
}
switch(g_UiPlaybackRepeatRange)
{
case UI_PLAYBACKRANGE_REPEATONE:
wPlayNum=PPtemp.wTTN;
RemovedNumPlay(wPlayNum, 0);
break;
case UI_PLAYBACKRANGE_REPEATALL:
if(bNextPrev)
{
wPlayNum=PPtemp.wTTN+1;
if(wPlayNum+1>=wTmpCount)
wPlayNum=0;
}
else
{
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?