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 + -
显示快捷键?