那位 高手 能帮我 大概讲一下 这是什么意思吗
这是 DVD的 某个段程序 说能为我讲一下 大概的意思吗 谢过了 BOOL fgDVDRepeatKey(void) large
{
#if 0
BYTE bUsrCtrl = bSharedInfo(SI_USR_PBC_CTRL);
BYTE bRepeatType;
if (0
#ifdef PROGRAM_NO_REPEAT
|| (bUsrCtrl == SV_PROGRAM)
#endif
#ifdef RANDOM_SHUFFLE_NO_REPEAT
|| (bUsrCtrl == SV_RANDOM) || (bUsrCtrl == SV_SHUFFLE)
#endif
)
{
vOsdShowError(SV_ERR_NORMAL_PLAY_ONLY, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
bRepeatType = bDVDGetRepeatType(bSharedInfo(SI_REPEAT_MODE));
if (bRepeatType == 0xff)
{
bRepeatType = bDVDGetRepeatType(bSharedInfo(SI_USR_PBC_CTRL));
}
if (bRepeatType == 0xff)
{
bRepeatType = SV_REPEAT_CHAPTER;
}
vSendUopCmd(UOP_REPEAT, bRepeatType, 0, 0);
return (UOP_OK);
#else
BYTE bUsrCtrl = bSharedInfo(SI_USR_PBC_CTRL);
BYTE bPbcState = bSharedInfo(SI_PBC_SWITCH);
BYTE bRepeatType= bSharedInfo(SI_REPEAT_MODE);
//luoqing[04\10\22] for STOP sign is gone when press repeat
if(!fgIsDiscPlay(bSharedInfo(SI_PBC_STATE)))
return (UOP_FAIL);
else if (bPbcState == SV_PBC_ON)
{
vOsdShowError(SV_ERR_PBC_OFF_ONLY, OSD_TIMEOUT_SHORT);
}
else /* SV_PBC_OFF */
{
if (0
#ifdef PROGRAM_NO_REPEAT
|| (bUsrCtrl == SV_PROGRAM)
#endif
#ifdef RANDOM_SHUFFLE_NO_REPEAT
|| (bUsrCtrl == SV_RANDOM) || (bUsrCtrl == SV_SHUFFLE)
#endif
)
{
vOsdShowError(SV_ERR_NORMAL_PLAY_ONLY, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
if( bUsrCtrl != SV_SHUFFLE){
vSendUopCmd(UOP_A_TO_B, SV_AB_OFF, 0, 0);
if(bRepeatType == SV_REPEAT_NONE)
vSendUopCmd(UOP_REPEAT, SV_REPEAT_CHAPTER, 0, 0);
else if(bRepeatType == SV_REPEAT_CHAPTER)
vSendUopCmd(UOP_REPEAT, SV_REPEAT_TITLE, 0, 0);
else if((bRepeatType == SV_REPEAT_TITLE) //:Christina: 030506 When repeat program is activate, Repeat key become no response
|| (bRepeatType == SV_REPEAT_ALL)){
vSendUopCmd(UOP_REPEAT, SV_REPEAT_NONE, 0, 0);
if(!fgIsInGoto()
&& (bUsrCtrl != SV_PROGRAM)) //:Simon To solve Yamaha PR#129 shuffle problem
vSendUopCmd(UOP_SHUFFLE, SV_ON, 0, 0);
}
}
else{
vSendUopCmd(UOP_A_TO_B, SV_AB_OFF, 0, 0);
if(bRepeatType == SV_REPEAT_NONE )
vSendUopCmd(UOP_REPEAT, SV_REPEAT_ALL, 0, 0);
else if(bRepeatType == SV_REPEAT_ALL){
vSendUopCmd(UOP_REPEAT, SV_REPEAT_NONE, 0, 0);
vSendUopCmd(UOP_SHUFFLE, SV_OFF, 0, 0);
vVfdTempMessage(VFD_MESSAGE_RPT_OFF, VFD_TMPMSG_TIMER); //CR12 : add repeat off
vOsdPosShow(OSD_POS_REPEAT_LEFT, OSD_MSG_REPEAT_OFF, OSD_TIMEOUT);
// set _flDontClearOSD so that in vShowUsrPbcCtrl, the REPEAT OFF woun't be cleared
_flDontClearOSD = 1;
}
else if(bRepeatType == SV_REPEAT_CHAPTER){
vSendUopCmd(UOP_REPEAT, SV_REPEAT_TITLE, 0, 0);
vSendUopCmd(UOP_SHUFFLE, SV_OFF, 0, 0);
}
}
}
return (UOP_OK);
#endif
}