📄 uoctrl.cpp
字号:
tRetStatus = UOCTRL_PROHIBITED;
#ifdef VDVD_ENABLE_BDJ
BDJ_SystemEvent( bdj_handle, BDJ_UOP_MASKED, (UInt32)(UOP_MASK_SKIP_BACK_TO_PREVIOUS_POINT_MASK) );
#endif
}
}
}
/* Leaving playback control critical section */
PlayCtrlGiveSemaphore();
return (tRetStatus);
}
/**
* UOCtrlRestartPoint -- Restart playback at start of current entry mark.
*
* @param
* pOutChapterNumber - used to return the new chapter number.
*
* @retval
* UOCTRL_SUCCESS if UO is allowed
* UOCTRL_PROHIBITED if UO is prohibited
* UOCTRL_FAILURE if error occurs
*/
UOCTRL_STATUS UOCtrlRestartPoint(uint32 *pOutChapterNumber)
{
UOCTRL_STATUS tRetStatus = UOCTRL_SUCCESS;
uint64 UO_mask_table = 0;
DBGPRINT(DBG_ON(DBG_TRACE), ("UOCtrlRestartPoint: Enter\n"));
/* Entering playback control critical section */
PlayCtrlTakeSemaphore();
/* Get the UO Mask table */
if (PlayCtrlGetUOPMaskTable(&UO_mask_table) != PLAYCTRL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("UOCtrlRestartPoint: Failed to get UO Mask table!\n"));
tRetStatus = UOCTRL_FAILURE;
}
else
{
/* Check the UO Mask */
if ( (UO_mask_table & UOMASK_SKIP_TO_PREV_POINT) != 0)
{
/* UO is prohibited */
tRetStatus = UOCTRL_PROHIBITED;
#ifdef VDVD_ENABLE_BDJ
BDJ_SystemEvent( bdj_handle, BDJ_UOP_MASKED, (UInt32)(UOP_MASK_SKIP_BACK_TO_PREVIOUS_POINT_MASK) );
#endif
}
else
{
/* Tell playback control engine to restart current entry mark */
if (PlayCtrlRestartPoint(pOutChapterNumber) != PLAYCTRL_SUCCESS)
{
tRetStatus = UOCTRL_PROHIBITED;
#ifdef VDVD_ENABLE_BDJ
BDJ_SystemEvent( bdj_handle, BDJ_UOP_MASKED, (UInt32)(UOP_MASK_SKIP_BACK_TO_PREVIOUS_POINT_MASK) );
#endif
}
}
}
/* Leaving playback control critical section */
PlayCtrlGiveSemaphore();
return (tRetStatus);
}
/**
* UOCtrlStop -- stop AV playback.
*
* @param
* none.
*
* @retval
* UOCTRL_SUCCESS if UO is allowed
* UOCTRL_PROHIBITED if UO is prohibited
* UOCTRL_FAILURE if error occurs
*/
UOCTRL_STATUS UOCtrlStop(void)
{
UOCTRL_STATUS tRetStatus = UOCTRL_SUCCESS;
uint64 UO_mask_table = 0;
DBGPRINT(DBG_ON(DBG_TRACE), ("UOCtrlStop: Enter\n"));
/* Entering playback control critical section */
PlayCtrlTakeSemaphore();
/* Get the UO Mask table */
if (PlayCtrlGetUOPMaskTable(&UO_mask_table) != PLAYCTRL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("UOCtrlStop: Failed to get UO Mask table!\n"));
tRetStatus = UOCTRL_FAILURE;
}
else
{
/* Check the UO Mask */
if ( (UO_mask_table & UOMASK_STOP) != 0)
{
/* UO is prohibited */
tRetStatus = UOCTRL_PROHIBITED;
#ifdef VDVD_ENABLE_BDJ
BDJ_SystemEvent( bdj_handle, BDJ_UOP_MASKED, (UInt32)(UOP_MASK_STOP_MASK) );
#endif
}
else
{
/* Tell playback control engine to stop AV playback */
if (PlayCtrlStop() != PLAYCTRL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("UOCtrlStop: Failed to stop playback!\n"));
tRetStatus = UOCTRL_FAILURE;
}
}
}
/* Leaving playback control critical section */
PlayCtrlGiveSemaphore();
return (tRetStatus);
}
/**
* UOCtrlPauseOn -- pause playback.
*
* @param
* none.
*
* @retval
* UOCTRL_SUCCESS if UO is allowed
* UOCTRL_PROHIBITED if UO is prohibited
* UOCTRL_FAILURE if error occurs
*/
UOCTRL_STATUS UOCtrlPauseOn(void)
{
UOCTRL_STATUS tRetStatus = UOCTRL_SUCCESS;
uint64 UO_mask_table = 0;
DBGPRINT(DBG_ON(DBG_TRACE), ("UOCtrlPauseOn: Enter\n"));
/* Entering playback control critical section */
PlayCtrlTakeSemaphore();
/* Get the UO Mask table */
if (PlayCtrlGetUOPMaskTable(&UO_mask_table) != PLAYCTRL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("UOCtrlPauseOn: Failed to get UO Mask table!\n"));
tRetStatus = UOCTRL_FAILURE;
}
else
{
/* Check the UO Mask */
if ( (UO_mask_table & UOMASK_PAUSE_ON) != 0)
{
/* UO is prohibited */
tRetStatus = UOCTRL_PROHIBITED;
#ifdef VDVD_ENABLE_BDJ
BDJ_SystemEvent( bdj_handle, BDJ_UOP_MASKED, (UInt32)(UOP_MASK_PAUSE_ON_MASK) );
#endif
}
else
{
/* Tell playback control engine to pause */
if (PlayCtrlPauseOn() != PLAYCTRL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("UOCtrlPauseOn: Failed to pause!\n"));
tRetStatus = UOCTRL_FAILURE;
}
}
}
/* Leaving playback control critical section */
PlayCtrlGiveSemaphore();
return (tRetStatus);
}
/**
* UOCtrlPauseOff -- restart playback when it is paused.
*
* @param
* none.
*
* @retval
* UOCTRL_SUCCESS if UO is allowed
* UOCTRL_PROHIBITED if UO is prohibited
* UOCTRL_FAILURE if error occurs
*/
UOCTRL_STATUS UOCtrlPauseOff(void)
{
UOCTRL_STATUS tRetStatus = UOCTRL_SUCCESS;
DBGPRINT(DBG_ON(DBG_TRACE), ("UOCtrlPauseOff: Enter\n"));
/* Entering playback control critical section */
PlayCtrlTakeSemaphore();
/* Pause Off UO cannot be masked */
/* Tell playback control engine to unpause */
if (PlayCtrlPauseOff() != PLAYCTRL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("UOCtrlPauseOff: Failed to unpause!\n"));
tRetStatus = UOCTRL_FAILURE;
}
/* Leaving playback control critical section */
PlayCtrlGiveSemaphore();
return (tRetStatus);
}
/**
* UOCtrlStillOff -- release still state and restart playback.
*
* @param
* none.
*
* @retval
* UOCTRL_SUCCESS if UO is allowed
* UOCTRL_PROHIBITED if UO is prohibited
* UOCTRL_FAILURE if error occurs
*/
UOCTRL_STATUS UOCtrlStillOff(void)
{
UOCTRL_STATUS tRetStatus = UOCTRL_SUCCESS;
uint64 UO_mask_table = 0;
DBGPRINT(DBG_ON(DBG_TRACE), ("UOCtrlStillOff: Enter\n"));
/* Entering playback control critical section */
PlayCtrlTakeSemaphore();
/* Get the UO Mask table */
if (PlayCtrlGetUOPMaskTable(&UO_mask_table) != PLAYCTRL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("UOCtrlStillOff: Failed to get UO Mask table!\n"));
tRetStatus = UOCTRL_FAILURE;
}
else
{
/* Check the UO Mask */
if ( (UO_mask_table & UOMASK_STILL_OFF) != 0)
{
/* UO is prohibited */
tRetStatus = UOCTRL_PROHIBITED;
#ifdef VDVD_ENABLE_BDJ
BDJ_SystemEvent( bdj_handle, BDJ_UOP_MASKED, (UInt32)(UOP_MASK_STILL_OFF_MASK) );
#endif
}
else
{
/* Tell playback control engine to resume from still */
if (PlayCtrlStillOff() != PLAYCTRL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("UOCtrlStillOff: Failed to still off!\n"));
tRetStatus = UOCTRL_FAILURE;
}
}
}
/* Leaving playback control critical section */
PlayCtrlGiveSemaphore();
return (tRetStatus);
}
/**
* UOCtrlForwardPlay -- change playback speed in forward direction.
*
* @param
* speed -- playback speed.
*
* @retval
* UOCTRL_SUCCESS if UO is allowed
* UOCTRL_PROHIBITED if UO is prohibited
* UOCTRL_FAILURE if error occurs
*/
UOCTRL_STATUS UOCtrlForwardPlay(uint32 speed)
{
UOCTRL_STATUS tRetStatus = UOCTRL_SUCCESS;
uint64 UO_mask_table = 0;
DBGPRINT(DBG_ON(DBG_TRACE), ("UOCtrlForwardPlay: Enter\n"));
/* Entering playback control critical section */
PlayCtrlTakeSemaphore();
/* Get the UO Mask table */
if (PlayCtrlGetUOPMaskTable(&UO_mask_table) != PLAYCTRL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("UOCtrlForwardPlay: Failed to get UO Mask table!\n"));
tRetStatus = UOCTRL_FAILURE;
}
else
{
/* Check the UO Mask */
if ( (UO_mask_table & UOMASK_FORWARD_PLAY) != 0)
{
/* UO is prohibited */
tRetStatus = UOCTRL_PROHIBITED;
#ifdef VDVD_ENABLE_BDJ
BDJ_SystemEvent( bdj_handle, BDJ_UOP_MASKED, (UInt32)(UOP_MASK_FORWARD_PLAY_MASK) );
#endif
}
else
{
/* Tell playback control engine to play forward at specified speed */
if (PlayCtrlForwardPlay(speed) != PLAYCTRL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("UOCtrlForwardPlay: Failed to play forward!\n"));
tRetStatus = UOCTRL_FAILURE;
}
}
}
/* Leaving playback control critical section */
PlayCtrlGiveSemaphore();
return (tRetStatus);
}
/**
* UOCtrlBackwardPlay -- change playback speed in backward direction.
*
* @param
* speed -- playback speed.
*
* @retval
* UOCTRL_SUCCESS if UO is allowed
* UOCTRL_PROHIBITED if UO is prohibited
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -