📄 uiop_lib.c
字号:
* Description : Executes user requested operation and updates the UI messages accordingly
*
****************************************************************************************************/
static void _UIOPLib_Pause(void)
{
dbg_printf(("_UIOPLib_Pause()\n"));
if (gcs.pstate == PST_PAUSE)
{
_UIOPLib_StepForward();
return;
}
if ( (gcs.pstate != PST_PLAY) &&
(gcs.pstate != PST_SCAN) &&
(gcs.pstate != PST_SLOW) &&
(gcs.pstate != PST_STILL))
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
if ( !IS_COP_ENABLE(COP_PAUSE) || CoreAPI_IsInMenu() )
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
MS_SendOp(MS_OP_MSG_PLAYSTATE_PAUSE, 0);
CoreAPI_Pause();
}
#endif // D_CUSTOM__UIOPLib_Pause
#ifndef D_CUSTOM__UIOPLib_SlowF
/****************************************************************************************************
* Function : _UIOPLib_SlowF
*
* Input :
*
* Output : None
*
* Return : None
*
* Description : Executes user requested operation and updates the UI messages accordingly
*
****************************************************************************************************/
static void _UIOPLib_SlowF(void)
{
dbg_printf(("_UIOPLib_SlowF()\n"));
_UIOPLib_Slow(SlowForward);
}
#endif // D_CUSTOM__UIOPLib_SlowF
#ifndef D_CUSTOM__UIOPLib_SlowB
/****************************************************************************************************
* Function : _UIOPLib_SlowB
*
* Input :
*
* Output : None
*
* Return : None
*
* Description : Executes user requested operation and updates the UI messages accordingly
*
****************************************************************************************************/
static void _UIOPLib_SlowB(void)
{
dbg_printf(("_UIOPLib_SlowB()\n"));
_UIOPLib_Slow(SlowBackward);
}
#endif // D_CUSTOM__UIOPLib_SlowB
#ifndef D_CUSTOM__UIOPLib_Mute
/****************************************************************************************************
* Function : _UIOPLib_Mute
*
* Input :
*
* Output : None
*
* Return : None
*
* Description : Executes user requested operation and updates the UI messages accordingly
*
****************************************************************************************************/
static void _UIOPLib_Mute(void)
{
EVENT evt = IE_CORE_UPDATE_PS;
void *param = (void *)((((DWORD)PS_UPDATE_MUTE_SETTING)<<16) + (DWORD)!gtps.mMute);
MS_SendOp(MS_OP_MSG_MUTE, !gtps.mMute);
_UIOPLib_Send_Event(evt,param);
}
#endif // D_CUSTOM__UIOPLib_Mute
#ifndef D_CUSTOM__UIOPLib_Audio
/****************************************************************************************************
* Function : _UIOPLib_Audio
*
* Input :
*
* Output : None
*
* Return : None
*
* Description : Executes user requested operation and updates the UI messages accordingly
*
****************************************************************************************************/
static void _UIOPLib_Audio(void)
{
UINT16 wSetting;
BOOL bChange = FALSE;
dbg_printf(("_UIOPLib_Audio()\n"));
if ( gcs.pstate != PST_PLAY )
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
if(IS_DISC_TYPE_DVD || (DEC_DISC_TYPE_SVCD == g_disc_type))
{
#ifdef D_PRESSED_AGAIN
if( SCREENPROC_MessageIsDisplayed(MS_OP_MSG_SYS_AUDIO) )
#endif // D_PRESSED_AGAIN
{
if (!IS_COP_ENABLE(COP_AUDIO_CHANGE))
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
wSetting = CoreAPI_GetCurrentAudioNum();
if (CoreAPI_GetTotalAudioNum() > 1)
{
bChange = TRUE;
if ( ++wSetting > CoreAPI_GetTotalAudioNum() )
wSetting = UI_MIN_AUDIO_STREAM;
}
dbg_printf(("\nSelect audio stream %08li / %x",wSetting, (INT16)CoreAPI_GetTotalAudioNum()) );
}
#ifdef D_PRESSED_AGAIN
else
{
wSetting = CoreAPI_GetCurrentAudioNum();
}
#endif
}
else
{
PROHIBIT(MSG_PROHIBIT_NOT_SUPPORTED_BY_DISC);
return;
}
//dvd audio is a special case: we can get channel infor only from current Audio
// No way we can get channel infor of arbitory Audio Number
// So we must call API to set the Audio Number first , and send the message after setting had been finished.
#ifdef DVD_AUDIO_SUPPORT
if((MEDIA_TYPE_DVD_AUDIO== CoreAPI_GetCurrentMediaType()))
{
UINT16 wTimeOut = 20;
if(bChange)
{
CoreAPI_SelectAudioStream((UINT32)wSetting);
//after CoreAPI_SelectAudioStream is return , the setting is not finished and we don't know when it finished
while(wTimeOut)
{
if(wSetting != CoreAPI_GetCurrentAudioNum())
{
usleep(10000);
wTimeOut--;
}
else
break;
}
}
if(wTimeOut )
MS_SendOp(MS_OP_MSG_SYS_AUDIO, wSetting);
}
else
#endif//DVD_AUDIO_SUPPORT
{
MS_SendOp(MS_OP_MSG_SYS_AUDIO, wSetting);
if (bChange)
CoreAPI_SelectAudioStream((UINT32)wSetting);
}
}
#endif // D_CUSTOM__UIOPLib_Audio
#ifndef D_CUSTOM__UIOPLib_SubTitle
/****************************************************************************************************
* Function : _UIOPLib_SubTitle
*
* Input :
*
* Output : None
*
* Return : None
*
* Description : Executes user requested operation and updates the UI messages accordingly
*
****************************************************************************************************/
static void _UIOPLib_SubTitle(void)
{
UINT16 wSetting;
BOOL bChange = FALSE;
dbg_printf(("_UIOPLib_SubTitle()\n"));
if ((DEC_DISC_TYPE_DVD_VIDEO != g_disc_type)
#ifdef DVD_VR_SUPPORT
&& (DEC_DISC_TYPE_DVD_VR != g_disc_type)
#endif
)
{
PROHIBIT(MSG_PROHIBIT_NOT_SUPPORTED_BY_DISC);
return;
}
else if (gcs.pstate != PST_PLAY)
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
else
{
#ifdef D_PRESSED_AGAIN
if( SCREENPROC_MessageIsDisplayed(MS_OP_MSG_SYS_SUBTITLE) )
#endif
{
if (!IS_COP_ENABLE(COP_SUBPIC_CHANGE))
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
wSetting = CoreAPI_GetCurrentSubPicNum();
if (CoreAPI_GetTotalSubPicNum() > 0)
{
bChange = TRUE;
if ( ++wSetting > CoreAPI_GetTotalSubPicNum() )
wSetting = UI_MIN_SUBPIC_STREAM;
}
dbg_printf(("\nSelect subtitle %08li / %x",(int)wSetting, CoreAPI_GetTotalSubPicNum()));
}
#ifdef D_PRESSED_AGAIN
else
{
wSetting = CoreAPI_GetCurrentSubPicNum();
}
#endif
}
//
// Display String
//
MS_SendOp(MS_OP_MSG_SYS_SUBTITLE, wSetting);
//
// Send event to core
//
if (bChange)
CoreAPI_SelectSubPicStream((UINT32)wSetting);
}
#endif // D_CUSTOM__UIOPLib_SubTitle
#ifndef D_CUSTOM__UIOPLib_Angle
/****************************************************************************************************
* Function : _UIOPLib_Angle
*
* Input :
*
* Output : None
*
* Return : None
*
* Description : Executes user requested operation and updates the UI messages accordingly
*
****************************************************************************************************/
static void _UIOPLib_Angle(void)
{
UINT16 wSetting;
BOOL bChange = FALSE;
extern BOOL __NEAR SCHEDULE_STOP_PENDING;//AngieHe_1118_2005: Temp solution:Prohibit angle change when schedule stop pending.
if(!IS_DISC_TYPE_DVD)
{
PROHIBIT(MSG_PROHIBIT_NOT_SUPPORTED_BY_DISC);
return;
}
else if ((gcs.pstate != PST_PLAY)
#ifndef D_UICC_ANGLE_IN_REPEATAB
||PM_GetRepeatAB()
#endif
)
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
#ifdef D_PRESSED_AGAIN
if( SCREENPROC_MessageIsDisplayed(MS_OP_MSG_SYS_ANGLE) )
#endif
{
if ( !IS_COP_ENABLE(COP_ANGLE_CHANGE)
|| SCHEDULE_STOP_PENDING)//AngieHe_1118_2005: Temp solution:Prohibit angle change when schedule stop pending.
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
wSetting = CoreAPI_GetCurrentAngleNum();
if ( CoreAPI_GetTotalAngleNum() > 1 )
{
bChange = TRUE;
if(++wSetting > CoreAPI_GetTotalAngleNum())
wSetting = UI_MIN_ANGLE;
}
dbg_printf(("Select angle %x / %x\n", (int)wSetting, CoreAPI_GetTotalAngleNum()));
}
#ifdef D_PRESSED_AGAIN
else
{
// just showing the current angle
wSetting = CoreAPI_GetCurrentAngleNum();
}
#endif
//
// Display String
//
MS_SendOp(MS_OP_MSG_SYS_ANGLE, wSetting);
//
//Send event to core
//
if (bChange)
CoreAPI_SelectAngleStream(wSetting);
}
#endif // D_CUSTOM__UIOPLib_Angle
#ifndef D_CUSTOM__UIOPLib_Zoom
/****************************************************************************************************
* Function : _UIOPLib_Zoom
*
* Input :
*
* Output : None
*
* Return : None
*
* Description : Executes user requested operation and updates the UI messages accordingly
*
****************************************************************************************************/
static void _UIOPLib_Zoom(void)
{
int iIndex;
#ifdef D_GINGER_I96
ZOOM_FACTOR zfLast = ZOOM_IN_FACTOR_MAX;
ZOOM_FACTOR zfLevel = VPU_GetZoomLevel();
#else //D_GINGER_I96
ZOOM_FACTOR zfLast = ZOOM_IN_MAX;
ZOOM_FACTOR zfLevel = gcs.mZoomLevel;
#endif //D_GINGER_I96
BYTE bValid;
dbg_printf(("_UIOPLib_Zoom()\n"));
if(PST_STOP == gcs.pstate)
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
#ifdef EZVIEW_ENABLED
else if(CoreAPI_IsEZViewModeOn())
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
#endif
else if(!IS_COP_ENABLE(COP_ZOOM))
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
else if(CoreAPI_IsInMenu())
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
else if(g_disc_type == DEC_DISC_TYPE_NO_DISK)
{
PROHIBIT(MSG_PROHIBIT_NOT_SUPPORTED_BY_DISC);
return;
}
#ifdef D_PRESSED_AGAIN
if( SCREENPROC_MessageIsDisplayed(MS_OP_MSG_SYS_ZOOM) )
#endif
{
for ( iIndex = 0; iIndex < zfLast; iIndex++ )
{
zfLevel= ((zfLevel+1) % zfLast);
query_core( CQ_VALID_ZOOM, (void *) (int) zfLevel, (void *) &bValid );
//Invalid, try find next available zoom level.
if ( CQ_ZOOM_INVALID != bValid )
break;
}
// Busy, then ignore this zoom button press
if(CQ_ZOOM_BUSY == bValid )
return;
else if (CQ_ZOOM_INVALID == bValid) // Reached the end of the loop, if all zoom levels are not available
zfLevel = NO_ZOOM;
if ( iIndex != zfLast ) //JG_2004_0722
{
MS_SendOp(MS_OP_MSG_SYS_ZOOM, zfLevel);
CoreAPI_SetZoomLevel(zfLevel);
}
}
#ifdef D_PRESSED_AGAIN
else
{
query_core( CQ_VALID_ZOOM, (void *) (int) zfLevel, (void *) &bValid );
if ( CQ_ZOOM_INVALID != bValid )
{
MS_SendOp(MS_OP_MSG_SYS_ZOOM, zfLevel);
}
else
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
}
}
#endif
}
#endif // D_CUSTOM__UIOPLib_Zoom
#ifdef EZVIEW_ENABLED
#ifndef D_CUSTOM__UIOPLib_EZView
/****************************************************************************************************
* Function : _UIOPLib_EZView
*
* Input :
*
* Output : None
*
* Return : None
*
* Description : Executes user requested operation on changing DVD EZView mode
*
****************************************************************************************************/
static void _UIOPLib_EZView(void)
{
enEZViewModeName eName;
if(PST_STOP == gcs.pstate || NO_ZOOM != gcs.mZoomLevel || CoreAPI_IsInMenu())
{
PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
return;
}
#ifdef D_PRESSED_AGAIN
if(SCREENPROC_MessageIsDisplayed(MS_OP_MSG_SYS_EZ_VIEW))
#endif // D_PRESSED_AGAIN
{
if(CoreAPI_SetEZViewMode(&eName))
{
MS_SEND_OP(MS_OP_MSG_SYS_EZ_VIEW, eName);
}
else PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
}
#ifdef D_PRESSED_AGAIN
else
{
if(CoreAPI_GetEZViewMode(&eName))
{
MS_SendOp(MS_OP_MSG_SYS_EZ_VIEW, eName);
}
else PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
}
#endif // D_PRESSED_AGAIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -