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

📄 uiop_lib.c

📁 ZORAN 962/966 SOURCE CODE,DVD chip
💻 C
📖 第 1 页 / 共 5 页
字号:
	else if(gcs.pstate == PST_SLOW)
		_UIOPLib_Play();//resume play from slow mode
#endif //D_ENABLE_ENTER_KEY_AS_PLAY_IN_SLOWMODE
	else
	{
		PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
	}
}
#endif // D_CUSTOM__UIOPLib_Enter

#ifndef D_CUSTOM__UIOPLib_SkipF
/****************************************************************************************************
* Function	: _UIOPLib_SkipF
*
* Input		: 
*
* Output		: None
*
* Return		: None
*
* Description	: Executes user requested operation and updates the UI messages accordingly
*	
****************************************************************************************************/
static void _UIOPLib_SkipF(void)
{
#if defined(DVD_AUDIO_SUPPORT) && defined(DVD_AUDIO_INDEX)
	if((g_disc_type == DEC_DISC_TYPE_DVD_AUDIO)
		&& (gcs.pstate != PST_STOP)
		&& (IS_COP_ENABLE(COP_DVDA_INDEX_SEARCH))
		&& !SI_DVDA_LAST_INDEX)
	{
		_UIOPLib_NextIndex();
		return;
	}
#endif//defined(DVD_AUDIO_SUPPORT) && defined(DVD_AUDIO_INDEX)

#ifdef USE_SKIPF_KEY_FOR_STEPF_KEY_IN_PAUSE_MODE
	if ( (gcs.pstate == PST_PAUSE) && (IS_COP_ENABLE(COP_STEP)) )
	{
		_UIOPLib_StepForward();
		return;
	}
#endif//USE_SKIPF_KEY_FOR_STEPF_KEY_IN_PAUSE_MODE

	//if ((DEC_DISC_TYPE_DVD_VIDEO == g_disc_type) && !PCI_DECODED && (PST_STOP != gcs.pstate))
		//return;
	if (!IS_COP_ENABLE(COP_NEXT_CHAPTER))
	{
		if (!CoreAPI_IsNextChapterTrackAvailable())
			PROHIBIT(MSG_PROHIBIT_NO_NEXT_ITEM);
		else
			PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
		return;
	}
	else if(PST_STOP == gcs.pstate)
	{
		PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
		return;
	}
	else if (CoreAPI_IsRepeatABA() || CoreAPI_IsRepeatABB()
#ifdef D_PROHIBIT_SKIP_IN_SINGLE_REPEAT_NONCLIPS
				|| CoreAPI_IsRepeatSingle()
#endif //D_PROHIBIT_SKIP_IN_SINGLE_REPEAT_NONCLIPS
	)
	{
		PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
		return;
	}	

	MS_SendOp(MS_OP_MSG_PLAYSTATE_NEXT, 0);
	CoreAPI_Skip(TRUE);
}
#endif // D_CUSTOM__UIOPLib_SkipF

#ifndef D_CUSTOM__UIOPLib_SkipB
/****************************************************************************************************
* Function	: _UIOPLib_SkipB
*
* Input		: 
*
* Output		: None
*
* Return		: None
*
* Description	: Executes user requested operation and updates the UI messages accordingly
*	
****************************************************************************************************/
static void _UIOPLib_SkipB(void)
{
#if defined(DVD_AUDIO_SUPPORT) && defined(DVD_AUDIO_INDEX)
	if((g_disc_type == DEC_DISC_TYPE_DVD_AUDIO)
		&& (gcs.pstate != PST_STOP)
		&& (IS_COP_ENABLE(COP_DVDA_INDEX_SEARCH))
		&& !SI_DVDA_FIRST_INDEX)
	{
		_UIOPLib_PrevIndex();
		return;
	}
#endif//defined(DVD_AUDIO_SUPPORT) && defined(DVD_AUDIO_INDEX)

	//if ((DEC_DISC_TYPE_DVD_VIDEO == g_disc_type) && !PCI_DECODED && (PST_STOP != gcs.pstate))
		//return;

	if (!IS_COP_ENABLE(COP_PREVIOUS_CHAPTER))
	{
		if (!CoreAPI_IsPrevChapterTrackAvailable())
			PROHIBIT(MSG_PROHIBIT_NO_PREV_ITEM);
		else
			PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
		return;
	}
	else if(PST_STOP == gcs.pstate)
	{
		PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
		return;
	}
	else if (CoreAPI_IsRepeatABA() || CoreAPI_IsRepeatABB()
#ifdef D_PROHIBIT_SKIP_IN_SINGLE_REPEAT_NONCLIPS
					|| CoreAPI_IsRepeatSingle()
#endif //D_PROHIBIT_SKIP_IN_SINGLE_REPEAT_NONCLIPS
	)
	{
		PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
		return;
	}	

	MS_SendOp(MS_OP_MSG_PLAYSTATE_PREV, 0);
	CoreAPI_Skip(FALSE);
}
#endif // D_CUSTOM__UIOPLib_SkipB

#ifndef D_CUSTOM__UIOPLib_FastF
/****************************************************************************************************
* Function	: _UIOPLib_FastF
*
* Input		: 
*
* Output		: None
*
* Return		: None
*
* Description	: Executes user requested operation and updates the UI messages accordingly
*	
****************************************************************************************************/
static void _UIOPLib_FastF(void)
{
	dbg_printf(("_UIOPLib_FastF()\n"));
	
	_UIOPLib_Scan(ScanForward);
}
#endif // D_CUSTOM__UIOPLib_FastF

#ifndef D_CUSTOM__UIOPLib_FastB
/****************************************************************************************************
* Function	: _UIOPLib_FastB
*
* Input		: 
*
* Output		: None
*
* Return		: None
*
* Description	: Executes user requested operation and updates the UI messages accordingly
*	
****************************************************************************************************/
static void _UIOPLib_FastB(void)
{
	dbg_printf(("_UIOPLib_FastB()\n"));
	
	_UIOPLib_Scan(ScanBackward);
}
#endif // D_CUSTOM__UIOPLib_FastB

#ifndef D_CUSTOM__UIOPLib_Menu
/****************************************************************************************************
* Function	: _UIOPLib_Menu
*
* Input		: 
*
* Output		: None
*
* Return		: None
*
* Description	: Executes user requested operation and updates the UI messages accordingly
*	
****************************************************************************************************/
static void _UIOPLib_Menu(void)
{
	EVENT evt = 0;
	void *param = NULL;

// <<< Stivenz_0301_2005: Merge from I64_Ruby;
#ifdef D_ALWAYS_ENABLE_TITLE_MENU_RESUME
	if( (IS_COP_ENABLE(COP_ROOT_MENU))||(DEC_DISC_TYPE_DVD_VIDEO==g_disc_type) )
#else // D_ALWAYS_ENABLE_TITLE_MENU_RESUME
	if (IS_COP_ENABLE( COP_ROOT_MENU ))
#endif // D_ALWAYS_ENABLE_TITLE_MENU_RESUME
	{
		if (PM_IsPlaybackProgram(PM_GetPlaybackMode()))
		{
			PM_SetPlaybackMode((BYTE) PM_PLAYBACK_NORMAL);
			ie_send(IE_CORE_SEAMLESS_MODE_CHANGE);
		}

		evt = IE_CORE_ROOT_MENU;
		
		if(CoreAPI_IsDVDRootMenuResumePlay())
		{
			MS_SendOp(MS_OP_MSG_PLAYSTATE_RESUME_PLAY, 0);
		}
		else
			MS_SendOp(MS_OP_MSG_PLAYSTATE_ROOT_MENU, 0);
	}
	else
	{
		PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
	}
	_UIOPLib_Send_Event(evt,param);
}
#endif // D_CUSTOM__UIOPLib_Menu

#ifndef D_CUSTOM__UIOPLib_Title
/****************************************************************************************************
* Function	: _UIOPLib_Title
*
* Input		: 
*
* Output		: None
*
* Return		: None
*
* Description	: Executes user requested operation and updates the UI messages accordingly
*	
****************************************************************************************************/
static void _UIOPLib_Title(void)
{
	EVENT evt = 0;
	void *param = NULL;

#ifdef DVD_VR_SUPPORT
	if((MEDIA_TYPE_DVDVR == CoreAPI_GetCurrentMediaType()) && (PST_STOP == gcs.pstate))
	{
		_UIOPLib_Send_Event(evt, param);
		return;
	}
#endif // DVD_VR_SUPPORT

// <<< Stivenz_0301_2005: Merge from I64_Ruby;
#ifdef D_ALWAYS_ENABLE_TITLE_MENU_RESUME
	if( (IS_COP_ENABLE(COP_TITLE_MENU))||(MEDIA_TYPE_DVD_VIDEO == CoreAPI_GetCurrentMediaType() )
#else // D_ALWAYS_ENABLE_TITLE_MENU_RESUME
	if (IS_COP_ENABLE( COP_TITLE_MENU ))
#endif // D_ALWAYS_ENABLE_TITLE_MENU_RESUME
	{
		if (IS_DISC_TYPE_DVD)
		{
			if (PM_IsPlaybackProgram(PM_GetPlaybackMode()))
			{
				PM_SetPlaybackMode((BYTE) PM_PLAYBACK_NORMAL);
				ie_send(IE_CORE_SEAMLESS_MODE_CHANGE);
			}
			evt= IE_CORE_TITLE_MENU;
			
			if(CoreAPI_IsDVDTitleMenuResumePlay())
			{
				MS_SendOp(MS_OP_MSG_PLAYSTATE_RESUME_PLAY, 0);
			}
			else
				MS_SendOp(MS_OP_MSG_PLAYSTATE_TITLE_MENU, 0);
		}
		else
		{
			PROHIBIT(MSG_PROHIBIT_NOT_SUPPORTED_BY_DISC);
		}
	}
	else
	{
		PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
	}

	_UIOPLib_Send_Event(evt,param);
}
#endif // D_CUSTOM__UIOPLib_Title

#ifndef D_CUSTOM__UIOPLib_PBC
/****************************************************************************************************
* Function	: _UIOPLib_PBC
*
* Input		: 
*
* Output		: None
*
* Return		: None
*
* Description	: Executes user requested operation and updates the UI messages accordingly
*	
****************************************************************************************************/
static void _UIOPLib_PBC(void)
{
	dbg_printf(("_UIOPLib_PBC()\n"));
	
	if ( CoreAPI_IsPBCAvailabe())
	{
#ifdef D_PRESSED_AGAIN
		if( SCREENPROC_MessageIsDisplayed(MS_OP_MSG_SYS_PBC))
#endif
		{
			PM_SetPlaybackMode(PM_PLAYBACK_NORMAL);
#ifdef D_GINGER_I96
			if(!CoreAPI_IsRepeatABOff())
			{
				MS_SendOp(MS_OP_MSG_PLAYMODE_REPEAT_AB, PM_REPEAT_AB_OFF);
				CoreAPI_SetABRepeatMode(FALSE);
			}
#endif //D_GINGER_I96

			if (PM_IsPBC(PM_GetPlaybackMode()))
			{
				MS_SendOp(MS_OP_MSG_SYS_PBC, 0);
				PM_SetPBC(FALSE);
			}
			else
			{
				MS_SendOp(MS_OP_MSG_SYS_PBC, 1);
				PM_SetPBC(TRUE);
			}
		}
#ifdef D_PRESSED_AGAIN
		else
		{
			if (PM_IsPBC(PM_GetPlaybackMode()))
			{
				MS_SendOp(MS_OP_MSG_SYS_PBC, 1);
			}
			else
			{
				MS_SendOp(MS_OP_MSG_SYS_PBC, 0);
			}
		}
#endif
		CoreAPI_ChangePlaybackMode();
	}
	else
	{
		PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_BY_DISC);
	}	
}
#endif // D_CUSTOM__UIOPLib_PBC

#ifndef D_CUSTOM__UIOPLib_MarkAB
/****************************************************************************************************
* Function	: _UIOPLib_MarkAB
*
* Input		: 
*
* Output		: None
*
* Return		: None
*
* Description	: Executes user requested operation and updates the UI messages accordingly
*	
****************************************************************************************************/
static void _UIOPLib_MarkAB(void)
{
	dbg_printf(("_UIOPLib_MarkAB()\n"));

	if (IS_DISC_TYPE_DVD)
	{
		if (!IS_COP_ENABLE(COP_ABREPEAT)
#ifdef D_SUPPORT_ABREPEAT_ONLY_INPLAY
			|| (gcs.pstate != PST_PLAY)
#else // D_SUPPORT_ABREPEAT_ONLY_INPLAY
			|| (gcs.pstate == PST_STOP)
			|| (gcs.pstate == PST_STILL)
#endif // D_SUPPORT_ABREPEAT_ONLY_INPLAY
			|| CoreAPI_IsInMenu() 
			|| RESTRICTED_ACCESS)
		{
			PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
			return;
		}
	}
	else if((DEC_DISC_TYPE_VCD == g_disc_type) || (DEC_DISC_TYPE_SVCD == g_disc_type))
	{
		if ((!SI_SVCD_IS_REPEATAB_AVAILABLE) 
#ifdef D_SUPPORT_ABREPEAT_ONLY_INPLAY
			|| (gcs.pstate != PST_PLAY)
#else // D_SUPPORT_ABREPEAT_ONLY_INPLAY
			|| (gcs.pstate == PST_STOP)
			|| (gcs.pstate == PST_STILL)
#endif // D_SUPPORT_ABREPEAT_ONLY_INPLAY
		)
		{
			PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
			return;
		}
	}
#if D_SUPPORT_SACD
	else if (DEC_DISC_TYPE_SACD == g_disc_type)
	{
		if((gcs.pstate == PST_STOP) || (gcs.pstate == PST_STILL)
#ifdef D_SUPPORT_ABREPEAT_ONLY_INPLAY
			|| (gcs.pstate != PST_PLAY)
#endif // D_SUPPORT_ABREPEAT_ONLY_INPLAY			
		)
		{
			PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
			return;
		}
	}
#endif // D_SUPPORT_SACD


	if ( CoreAPI_IsRepeatABB() )
	{
		// User is cancelling AB
		MS_SendOp(MS_OP_MSG_PLAYMODE_REPEAT_AB, PM_REPEAT_AB_OFF);
		CoreAPI_SetABRepeatMode(FALSE);
		usleep(500000UL);				//Make sure core receive the event
	}
	else if ( CoreAPI_IsRepeatABA() )
	{
		//LX0609: at leat 3 seconds gap for A2B
		if (( g_disc_type == DEC_DISC_TYPE_DVD_VIDEO ) && 
			( (g_pDVDNav->dvd.Bookmark.pgc_time - g_pDVDNav->dwBookMarkATime) < 1) && ( g_pDVDNav->dsi.dsi_gi.VOBU_1STREF_EA != 0))
			return;						//LX082202: Change to 1 second gap and check if there is motion pictures

		// User has just selected B
		MS_SendOp(MS_OP_MSG_PLAYMODE_REPEAT_AB, PM_REPEAT_AB_B);
		CoreAPI_SetABRepeatMode(TRUE);
		usleep(500000UL);				//Make sure core receive the event
	}
	else
	{
		// User has just selected A
		MS_SendOp(MS_OP_MSG_PLAYMODE_REPEAT_AB, PM_REPEAT_AB_A);
		CoreAPI_SetABRepeatMode(TRUE);
		usleep(500000UL);				//Make sure core receive the event
	}
}
#endif // D_CUSTOM__UIOPLib_MarkAB

#ifndef D_CUSTOM__UIOPLib_StepForward
/****************************************************************************************************
* Function	: _UIOPLib_StepForward
*
* Input		: 
*
* Output		: None
*
* Return		: None
*
* Description	: Executes user requested operation and updates the UI messages accordingly
*	
****************************************************************************************************/
static void _UIOPLib_StepForward(void)
{
	dbg_printf(("_UIOPLib_StepForward()\n"));

	if ( (gcs.pstate == PST_PLAY)
			||(gcs.pstate == PST_SCAN)
			|| (gcs.pstate == PST_SLOW)
		|| (gcs.pstate == PST_STILL)
		)
	{
		if (IS_COP_ENABLE(COP_PAUSE) && !CoreAPI_IsInMenu() )
		{
			MS_SendOp(MS_OP_MSG_PLAYSTATE_STEP, 0);
			CoreAPI_Pause();
			return;
		}
	}

	if ( !IS_COP_ENABLE(COP_PAUSE) || !IS_COP_ENABLE(COP_STEP) || (PST_PAUSE != gcs.pstate) )	
	{
		PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
		return;
	}

	MS_SendOp(MS_OP_MSG_PLAYSTATE_STEP, 0);
	CoreAPI_Step(TRUE);
}
#endif // D_CUSTOM__UIOPLib_StepForward

#ifndef D_CUSTOM__UIOPLib_Pause
/****************************************************************************************************
* Function	: _UIOPLib_Pause
*
* Input		: 
*
* Output		: None
*
* Return		: None
*

⌨️ 快捷键说明

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