📄 msapi_vd.c
字号:
break;
case VD_STATE_UNSTABLE_1:
API_VD_DBG(puts("\r\nUNSTABLE_1"));
--g_VdInfo.ucVideoStableCounter;
if ( g_VdInfo.ucVideoStableCounter <= 0 )
{
g_VdInfo.u16VideoStatus = u16CurSyncStatus; // set flag
g_VdInfo.u16LastVideoStatus = VD_RESET_ON;
g_VdInfo.ucVideoStableCounter = 0;
msAPI_Scaler_SetDisplayWindowStatus(0);
if ( msAPI_VD_IsSyncLock() )
{
enState = VD_STATE_SET_MODE_SYNC;
g_VdInfo.ucVideoSystem = msAPI_VD_GetVideoSystem( g_VdInfo.u16VideoStatus );
// Do different thing when different mode!!
msAPI_VD_ProgramDiffField(g_VdInfo.ucVideoSystem, &stSystemInfo );
}
else
{
enState = VD_STATE_SET_MODE_NO_SYNC;
}
}
break;
default:
break;
}
return enState;
}
#if ( KEEP_UNUSED_FUNC == 1 )
/******************************************************************************/
///-Get WSS information
///@return
///WSS Information
/******************************************************************************/
U16 msAPI_VD_GetWSS( void )
{
return MDrv_VD_GetWSS();
}
#endif
//////////////////////////////////////////////////////
// Std 50/60 Vtotal FSC HTotal Color
//-----------------------------------------
// NTSC 60 525 358 910
// PAL-M 60 525 358 909 PAL-Switch
// NTSC-443 60 525 443 1127
// PAL-60 60 525 443 1127 PAL-Switch
// xxx 50 625 358
// PAL-Nc 50 625 358 917 PAL-Switch
// xxx 50 625 443
// PAL 50 625 443 1135 PAL-Switch
// SECAM 50 625 428 1097
///////////////////////////////////////////////////////
/******************************************************************************/
///-Get VD video system
///@param u16VideoStatus \b IN
///@return
///-SIG_NTSC
///-SIG_PAL
///-SIG_NTSC_443
///-SIG_PAL_M
///-SIG_PAL_NC
///-SIG_NUMS
/******************************************************************************/
U8 msAPI_VD_GetVideoSystem( U16 u16VideoStatus )
{
U8 u8SignalType;
// TODO: disable for Saturn2 temporarily
// MDrv_VD_ColorShift (); <- disable for Saturn2 temporarily
switch ( u16VideoStatus & VD_FSC_TYPE )
{
case VD_FSC_4285:
MDrv_VD_SetGmcTune (0x06);
//if ( u16VideoStatus & VD_VSYNC_50HZ ) // SECAM must 50 Hz
{
u8SignalType = SIG_SECAM;
API_VD_STATUS(printf( "[SECAM]" ));
}
break;
case VD_FSC_4433:
// 4.43361875MHz, PAL or NTSC443 or PAL(60)
MDrv_VD_SetGmcTune (0x06);
if ( u16VideoStatus & VD_VSYNC_50HZ ) // 50Hz
{
u8SignalType = SIG_PAL;
API_VD_STATUS(printf( "[PAL]" ));
}
else // 60Hz
{
u8SignalType = SIG_NTSC_443;
API_VD_STATUS(printf( "[NTSC-443/PAL-60]" ));
}
break;
case VD_FSC_3579:
// 3.579545MHz, NTSC
MDrv_VD_SetGmcTune (0x07);
u8SignalType = SIG_NTSC;
API_VD_STATUS(printf("[NTSC]"));
break;
case VD_FSC_3575:
// 3.57561149MHz,PAL(M)
MDrv_VD_SetGmcTune (0x07);
u8SignalType = SIG_PAL_M;
API_VD_STATUS(printf("[PAL-M]"));
break;
case VD_FSC_3582:
// 3.58205625MHz,PAL(Nc)
MDrv_VD_SetGmcTune (0x07);
u8SignalType = SIG_PAL_NC;
API_VD_STATUS(printf("[PAL-NC]"));
break;
}
return u8SignalType;
}
//*************************************************************************
//Function name: msAPI_VD_ChkStatusLoop
//Passing parameter: none
//Return parameter: U16: Status represented bits from VD
//Description: Get stable VD status
//*************************************************************************
U16 msAPI_VD_ChkStatusLoop( void )
{
U16 wCurrentStatus = VD_RESET_ON;
U16 u8VdHsyncLockedCount;
u8VdHsyncLockedCount = MDrv_VD_GetHsyncCountAndVdStatus1stCheck (&wCurrentStatus);
API_VD_DBG(printf(" vdLoop1=%d", u8VdHsyncLockedCount));
if( u8VdHsyncLockedCount>14 )
{
u8VdHsyncLockedCount = MDrv_VD_GetHsyncCountAndVdStatus2ndCheck ();
API_VD_DBG(printf(" vdLoop2=%d", u8VdHsyncLockedCount));
if( u8VdHsyncLockedCount<8 )
wCurrentStatus = VD_RESET_ON;
}
else
wCurrentStatus = VD_RESET_ON;
return wCurrentStatus;
}
//*************************************************************************
//Function name: msAPI_VD_GetHWHSYNC
//Passing parameter: none
//Return parameter: U16: Status represented bits from VD
//Description: Get stable VD status
//*************************************************************************
U16 msAPI_VD_GetHWHSYNC( void )
{
return MDrv_VD_Scan_HsyncCheck();
}
U8 msAPI_VD_CheckIsTVSys( void )
{
return MDrv_VD_CheckTVSys();
}
/******************************************************************************/
/// -Program Field information for different signal type.
/// @param enSignalType
/// -SIG_NTSC
/// -SIG_PAL
/// -SIG_SECAM
/// -SIG_NTSC_443
/// -SIG_PAL_M
/// -SIG_PAL_NC
/// -SIG_NUMS
/// @param *penMsSysInfo
/// -enInputSourceType
/// -enInputPortType
/******************************************************************************/
void msAPI_VD_ProgramDiffField ( EN_VD_SIGNALTYPE enSignalType, MS_SYS_INFO *penMsSysInfo )
{
MDrv_VD_ProgramDiffField(enSignalType, penMsSysInfo);
}
/******************************************************************************/
/// -Initial the VD's parameter
/******************************************************************************/
void msAPI_VD_Parameter_Initial(void)
{
MDrv_VD_Parameter_Initial();
}
/******************************************************************************/
/// -Set video out by input port type
/******************************************************************************/
void msAPI_EnableOutputVideo(MS_SYS_INFO *penMsSysInfo)
{
// video
MDrv_VD_ProgMultiInput(penMsSysInfo);
}
/******************************************************************************/
/// Adjust blacklevel
/// @param u16Blacklevel \b IN: blacklevel value
/// -Range: 0 - 0x1FF
/******************************************************************************/
void msAPI_VD_SetBlacklevel( U16 u16Blacklevel )
{
MDrv_VD_SetBlacklevel( u16Blacklevel );
}
/******************************************************************************/
/// Set register directory
///
/******************************************************************************/
void msAPI_VD_SetRegister(U16 reg_offset, U8 value, U8 bit_mask)
{
MDrv_WriteByteMask(reg_offset, value, bit_mask);
}
#undef MSAPI_VD_C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -