📄 monitor.c
字号:
UTL_GetCurrentTime(); //get current CD-IF time
// Chuan 277-3 2002/09/20: Don't need send stream. __dwTimeNow = __dwTimeEnd: Reach End, __dwTimeNow > __dwTimeEnd ? strange~
if (__dwTimeNow<__dwTimeEnd)
{
__dwTimeNow++; //next start time for data input
//LJY1.23, LJY1.11d, play from the time before buffer was cleared when freeze->AST switching->play.
#ifdef SUPPORT_ANTISHOCK
#ifdef SUPPORT_ANTISHOCK_SOFT_RESET_VIDEO
if((__bModeCmd == KEY_FREEZE) && (__btResetBuffer))
__dwTimeNow = __dwTimeRecover;
#endif
#endif
//LJY1.11d, using audio remainder for buffer control, and not to open CDIF if finding header failed..
UTL_PlayFromTime ( __dwTimeNow );
// if ( ! UTL_PlayFromTime ( __dwTimeNow ) )
// HAL_ControlCDIF(HAL_CDIF_OPEN);
//LJY1.11d, clear __btResetBuffer after finding hearder success. Avoid showing incorrct OSD time.
#ifdef SUPPORT_ANTISHOCK
#ifdef SUPPORT_ANTISHOCK_SOFT_RESET_VIDEO
if((__bModeCmd == KEY_FREEZE) && (__btResetBuffer))
__btResetBuffer = FALSE;
#endif
#endif
}
//__btFreeze= FALSE;
}
}
#if 0
if (__btFreeze) // Means that SF had enter VideoOverFlow
{
// ** TCH-.21;
{
__wTemp= W99AV_GetPSR ();
if ( __wTemp & INT_AU )
__btTemp= TRUE;
}
if ( __btTemp )
{
UTL_GetCurrentTime(); //get current CD-IF time
__dwTimeNow++; //next start time for data input
if ( ! UTL_PlayFromTime ( __dwTimeNow ) )
HAL_ControlCDIF(HAL_CDIF_OPEN);
__btFreeze= FALSE;
}
}
else
{
// ** TCH-.21;
{
__wTemp= W99AV_GetPSR ();
if ( __wTemp & INT_AO )
__btTemp= TRUE;
}
if ( __btTemp )
{
HAL_CheckCDIF ( HAL_CDIF_FREEZE_TIME, (BYTE)NULL );
__btFreeze= TRUE;
}
}
#endif
break;
// Micky2.78, fix VCD Step will hang and picture uncomplete(28C only)
// Found on title "Christmas Song", several steps(>60~70) will hang at UV ready
// modify the Step buffer control to be same as KEY_PLAY
// need monitor audio buffer too.
/*
// TCC274, add check overflow for KEY_STEP.
case KEY_STEP:
if ( __bServoAutoCtrl)
{
HAL_ControlCDIF(HAL_CDIF_OPEN); // ** TCH0.48P;
break;
}
W99AV_ReadInfo ( W99AV_INFO_VIDEO_REMAIN , &__dwTemp ); // DWORD unit
if ( __dwTemp> __dwVOBuffer )
{
HAL_CheckCDIF ( HAL_CDIF_FREEZE_TIME, (BYTE)NULL );
__btFreeze= TRUE;
}
break ;
*/
#if 0
// Why don't check audio part ???
case KEY_SF :
//DVD_046-1DVD_IF
if ( __bServoAutoCtrl)
{
HAL_ControlCDIF(HAL_CDIF_OPEN); // ** TCH0.48P;
break;
}
if( !( W99AV_ReadRegW(DVDCTLR) & 0x000C ) ) // not in stop mode
__bTemp = TRUE ; // CDIF is opened
else
__bTemp = FALSE ; // CDIF is closed
W99AV_ReadInfo ( W99AV_INFO_VIDEO_REMAIN , &__dwTemp ); // DWORD unit
// wait until buffer underflow, then re-open CD-IF
// check video buffer underflow
// if (__btFreeze) // Means that SF had enter VideoOverFlow
if (!__bTemp)
{
if ( __dwTemp < __dwVUBuffer )
{
UTL_GetCurrentTime(); //get current CD-IF time
__dwTimeNow++; //next start time for data input
if ( ! UTL_PlayFromTime ( __dwTimeNow ) )
HAL_ControlCDIF(HAL_CDIF_OPEN);
__btFreeze= FALSE;
}
}
else
{
if ( __dwTemp> __dwVOBuffer )
{
HAL_CheckCDIF ( HAL_CDIF_FREEZE_TIME, (BYTE)NULL );
__btFreeze= TRUE;
}
}
break;
#endif
// Need control the next data input point when a I frame is scanned
case KEY_SCF:
case KEY_SCB:
{
//DVD_049Micky
// for supporting CD-DA w/ audio
#ifdef _WINDVD
// DVD_045q-1, DVD scan mode is controled by CELL module
if (__wDiscType & BOOK_DVD)
break;
#endif // #ifdef _WINDVD
_bReadCDDA = FALSE;
// LLY.274p, checking playing mode method has updated
//if (__bModePlay & MODE_PLAYCDDA)
if(__bAttrPlay == ATTR_CDDA)
{
UTL_DelayTime ((WORD)COUNT_50_MSEC,TRUE); // 1 sec --> 50 msec
// wyc.160
if ((UTL_GetSysTimer() - _dwCDDAScanTime) >= COUNT_400_MSEC)
{
_dwCDDAScanTime = UTL_GetSysTimer();
_bReadCDDA = TRUE;
CHIPS_SoftMute();
// Chuan1.00, Reset A-Buffer for SCF/SCB // wyc1.00
HAL_Reset(HAL_RESET_AUDIO);
}
}
//Kevin1.24a, support MP3/MP2 SCB
#if (FM_KEY_SCF_KEY_SCB_MODE == MODE_SCAN_ONLY) || (FM_KEY_SCF_KEY_SCB_MODE == MODE_SCAN_PAGE) //Kevin1.26-2
if ( (__bAttrPlay==ATTR_MP3 || __bAttrPlay==ATTR_MP2) && __bModeCmd==KEY_SCB && __bScanLevel )
{
if ( (UTL_GetSysTimer() - _dwCDDAScanTime) >= COUNT_1_SEC ) //can't hear clear sound if < 1 sec
{
_dwCDDAScanTime = UTL_GetSysTimer();
_bReadCDDA = TRUE;
CHIPS_SoftMute();
//compensate audio buffer remaining sectors
//below hasn't considered SI buffer
/*
__dwTimeNow = UTL_GetCurrentTime(); //parser sector ID
W99AV_ReadInfo (W99AV_INFO_AUDIO_REMAIN, &__dwTemp) ;
__dwTemp /= SECTOR_512; //(4/2352)
__dwTemp = (__dwTemp*8)/5;
if (__dwTimeNow> __dwTemp)
__dwTimeNow -= __dwTemp; //DSP decoding sector ID
*/
W99AV_ReadDM(W99AV_DM_FRAME_COUNT, &__dwTemp); //DSP decoded frames
__dwTemp *=__wW99AVSamplesPerFrame; //decoded samples
if (__dwW99AVAudioFreq)
__dwTemp /= __dwW99AVAudioFreq; //decoded seconds
__dwTemp = (__dwTemp*__wW99AVAudioBitrate)/16; // * (bitrate*1024/(8*2048)
__dwTimeNow = __dwTimeBegin + __dwTemp; //DSP decoded sector ID
// Chuan1.00, Reset A-Buffer for SCF/SCB // wyc1.00
HAL_Reset(HAL_RESET_AUDIO);
//Kevin1.25, comment
//DSP sets DM[0xe9d]=0 & W99AV_DM_FREQ_WMA after reset
//W99AV_WriteDM(W99AV_DM_MP3_FREQ_READ_FLAG, 1); //host tells DSP to start decoding
if (__bAttrPlay==ATTR_MP2)
{
//DSP refers to frame count to do mute after reset. But now frame count is modified bt F/W below
W99AV_WriteDM(W99AV_DM_PTS_FINDING, 0); //disable PTS finding
W99AV_WriteDM(W99AV_DM_MUTE_COUNTER, 0); //clear mute counter
}
}
}
#endif //
// wyc.160
if (HAL_CheckInterrupt(INT_IFSC) || _bReadCDDA) // video underflow
{
if(__bAttrPlay == ATTR_CDDA)
{
UTL_OutputShowTime (); // update OSD/VFD time
#ifdef CDDA_WAITSERVO
__dwTemp= __dwTimeNow+ 150;
__dwTemp/=75;
__bMinActual= __dwTemp/ 60;
__bSecActual= __dwTemp% 60;
#endif // #ifdef CDDA_WAITSERVO
//LJY1.26, LJY1.11f, fix ASP CDDA OSD time abnormal in the beginning of SCF/SCB.
#ifdef SUPPORT_ANTISHOCK
if(__btResetBuffer)
{
__btResetBuffer = FALSE;
__dwTimeNow = __dwTimeRecover;
}
#endif
// Means that Complete scan an I frame
__bScan= SCAN_END;
if ( __bModeCmd == KEY_SCF )
__dwTimeNow= SERVO_JumpGroove( TRUE, __dwTimeNow );
else
__dwTimeNow= SERVO_JumpGroove( FALSE, __dwTimeNow );
_bReadCDDA = FALSE;
CHIPS_OpenAudio( TRUE );
SERVO_ReadSectors(__dwTimeNow, __dwTimeEnd);
}
//Kevin1.24a, support MP3/MP2 SCB
#if (FM_KEY_SCF_KEY_SCB_MODE == MODE_SCAN_ONLY) || (FM_KEY_SCF_KEY_SCB_MODE == MODE_SCAN_PAGE) //Kevin1.26-2
else if ( (__bAttrPlay==ATTR_MP3 || __bAttrPlay==ATTR_MP2) && __bModeCmd==KEY_SCB && __bScanLevel) //Kevin1.24a, support MP3/MP2 SCB
{
extern DWORD _dwTotalFrameCount;
__dwTemp = (__bScanLevel<<2); //jump sec
__dwTemp = (__dwTemp*__wW99AVAudioBitrate)/16; // * (bitrate*1024)/(8*2048) //jump sector
if ( __dwTimeNow > __dwTimeBegin+__dwTemp )
__dwTimeNow -= __dwTemp;
else
__dwTimeNow = __dwTimeBegin;
//printf("__dwTimeNow=%lx\n", __dwTimeNow);
if (__wW99AVAudioBitrate)
__dwTemp=(__dwTimeNow-__dwTimeBegin)*16/__wW99AVAudioBitrate; //sec // * (2048*8)/(bitrate*1024)
__dwTemp *= __dwW99AVAudioFreq; //sample
__dwTemp /=__wW99AVSamplesPerFrame; //frame
W99AV_WriteDM(W99AV_DM_FRAME_COUNT, __dwTemp);
_dwTotalFrameCount = 0;
_bReadCDDA = FALSE;
CHIPS_OpenAudio( TRUE );
UTL_PlayFromTime(__dwTimeNow);
}
#endif //
else
{
// for SCF and cross Track
HAL_Display(HAL_DISPLAY_VIDEO, TRUE);
// close CD-IF, stop data input
HAL_CheckCDIF(HAL_CDIF_FREEZE_TIME, (BYTE)NULL);
UTL_OutputShowTime (); // update OSD/VFD time
// Means that Complete scan an I frame
__bScan= SCAN_END;
// clear the ISR status
// Jump time forward or backward
// only __dwTimeNow is changed
// but the CDROM still not goto new time
if ( __bModeCmd == KEY_SCF )
__dwTimeNow= SERVO_JumpGroove( TRUE, __dwTimeNow );
else
__dwTimeNow= SERVO_JumpGroove( FALSE, __dwTimeNow );
}
// Step1:
// check for over-bitstream
if ( __bModeCmd == KEY_SCF )
{
// change > into >=
if ( (__dwTimeNow+ __wScanGap) >= __dwTimeEnd )
{
// SCF is playing to the end of Playing RANGE
// ignore the next OSD display
// wyc1.10-3, don't support this message now.
//OSD_Output(MSG_IGNORENEXT, 1, (BYTE)NULL);
if ( __btPBC )
{
// let VCD20_Trigger process the next action
__btPlayEnd=TRUE;
__btPlaying=FALSE;
// will force to reset
__bModePlay=MODE_PLAYUNKNOW;
return FALSE;
}
else
{
// must check repeat mode then decide to play next
// modify for use by LINEAR_ChangeTrack call
LINEAR_ChangeTrack(KEY_NEXT, (BYTE)NULL);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -