📄 msvd.lst
字号:
268 3 wInHP = msGetHorizontalPeriod();
269 3 if( wInHP )
270 3 {
271 4 wInHF = MST_CLOCK_HZ/wInHP;
272 4 if( (wInHF >= 13500)&&(wInHF <= 17800) )
273 4 {
274 5 return wInHP;
275 5 }
276 4 }
277 3 }
278 2 }
279 1
280 1 // H period invalid...
281 1 if( (ucFlag&3) )
282 1 {
283 2 if( msVDGetVTotal() > 566 )
284 2 return MST_CLOCK_HZ/15625;
285 2 else
286 2 return MST_CLOCK_HZ/15734;
287 2 }
288 1 return 0;
289 1 }
290
291 #if(ENABLE_CHECK_AUTO_H_TOTAL)
*** WARNING C322 IN LINE 291 OF ..\..\tv\msVD.c: unknown identifier
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 6
BYTE msVDCheckScalerStatus( BYTE ucCheckFlag )
{
BYTE ucStatus = 0;
WORD wTmp;
WORD wHFreq;
WORD wVTotal;
// Calculate H frequency ...
wTmp = msGetHorizontalPeriod();
if( wTmp == 0x1fff || wTmp == 0 ) // Check H period
{
//printf("\r\nHP=%d", wTmp);
ucStatus |= VD_H_PERIOD_INVALID;
}
else // H period is valid
{
wHFreq = msCalculateHFreqX10(wTmp); // Cal H freq
if( wHFreq < 146 || wHFreq > 167 ) //200 ) // Hfreq < 14.6K, > 16.6K => freq invalid
{
ucStatus |= VD_H_FREQ_INVALID;
}
else // H freq is valid
{
if( ucCheckFlag&VD_V_TOTAL_INVALID )
{
wVTotal = msVDGetVTotal(); // Get VTotal from VD
wTmp = msVDGetVTotal(); // Get VTotal from scaler
// Check VD&Scaler VTotal
if( (wVTotal < 420) || (wVTotal > 730)
||(wTmp < 420) || (wTmp > 730)
||(abs((int)wVTotal - wTmp) > 50)) // The VTotal of VD and Scaler is different!!
{
ucStatus |= VD_V_TOTAL_INVALID;
}
else // VTotal is valid
{
if( ucCheckFlag&VD_V_FREQ_INVALID )
{
// Cal V freq
wTmp = msCalculateVFreqX10( wHFreq, wTmp )*2;
if( wTmp < 440 || wTmp > 660 )
{
ucStatus |= VD_V_FREQ_INVALID;
}
}
}
}
}
}
return ucStatus;
}
#endif
346
347 bit msVDGetColorLockBit(void)
348 {
349 1 return msVD_FSC_GetColorBurstStatus();
350 1 }
351
352 WORD msVDGetSyncStatus(void)
353 {
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 7
354 1 BYTE ucBank;
355 1 BYTE ucTmp;
356 1 WORD wVDStatus = 0;
357 1 BYTE ucCombStatus;
358 1 WORD wVDVtotal = msVDGetVTotal();
359 1
360 1 ucBank = msReadByte( BK0_00_REGBK);
361 1
362 1 msWriteByte(BK0_00_REGBK, REG_BANK3_COMB);
363 1 ucCombStatus = msReadByte( BK3_72_COMB_STSC);
364 1
365 1 // Check V total
366 1 #if( ENABLE_VD_DSP )
367 1 if( wVDVtotal > 566 ) // 625 lines
368 1 wVDStatus |= VD_VSYNC_50HZ;
369 1 #else
if( ucCombStatus&_BIT6 ) // 625 lines
wVDStatus |= VD_VSYNC_50HZ;
#endif
373 1
374 1 //if( 0 == (ucCombStatus&_BIT3) ) // Check comb: No any input signal
375 1 {
376 2 msWriteByte(BK0_00_REGBK, REG_BANK2_VD);
377 2 if( ((msVDSpecialRead( 0x00, BK2_01 )&0xF0) >= 0x60)// Sync ctl state > 6
378 2 &&(msVDDSPReadByte( 0x14 )&_BIT1) ) // SYNC_FOUND
379 2 {
380 3 #if( ENABLE_VD_DSP )
381 3 if( wVDVtotal >= 420 && wVDVtotal <= 730 )
382 3 #else
if( (ucCombStatus&0x07) != 7 )
#endif
385 3 {
386 4 wVDStatus |= (VD_HSYNC_LOCKED|VD_SYNC_LOCKED);
387 4 // Check interlace
388 4 if( msGetInterlaceBit() )
389 4 {
390 5 wVDStatus |= VD_INTERLACED;
391 5 }
392 4 }
393 3 }
394 2 }
395 1
396 1 // Get other VD status:
397 1 if( wVDStatus&VD_HSYNC_LOCKED )
398 1 {
399 2 {
400 3 // Get bk2_02 value
401 3 ucTmp = msVDSpecialRead( 0x00, BK2_02 );
402 3
403 3 // Check Color burst lock
404 3 if( (ucTmp&0x0C) == 0x04 )
405 3 {
406 4 wVDStatus |= VD_COLOR_LOCKED;
407 4 }
408 3 }
409 2
410 2 // Check FSC
411 2 ucTmp = msVDSpecialRead( 0x00, BK2_01 );
412 2 switch( ucTmp&0x07 )
413 2 {
414 3 default:
415 3 case 0: wVDStatus |= VD_FSC_4433;
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 8
416 3 break;
417 3 case 2: wVDStatus |= VD_FSC_3579;
418 3 break;
419 3 case 4: wVDStatus |= VD_FSC_3575;
420 3 break;
421 3 case 6: wVDStatus |= VD_FSC_3582;
422 3 break;
423 3 case 1: wVDStatus |= VD_FSC_4285;
424 3 break;
425 3 }
426 2
427 2 // Don't care PAL_SWITCH!!
428 2 // We do not support auto detect PAL-M
429 2 // Check PAL switch
430 2 if( g_ucMSVDForceSystem == VD_FORCE_AUTO )
431 2 {
432 3 if( wVDStatus&VD_VSYNC_50HZ ) // 50 Hz
433 3 {
434 4 wVDStatus |= VD_PAL_SWITCH;
435 4 }
436 3 else // 60 Hz
437 3 {
438 4 // ucTmp = wVDStatus&VD_FSC_TYPE;
439 4 // if( (ucTmp == VD_FSC_3579)
440 4 // ||(ucTmp == VD_FSC_3575)
441 4 // ||(ucTmp == VD_FSC_3582)
442 4 // ||(ucTmp == VD_FSC_4433)
443 4 // )
444 4 {
445 5 #if 1 // HW detect PAL/NTSC
446 5 ucTmp = msVDSpecialRead( 0x00, BK2_03 );
447 5 if( ucTmp&_BIT5 )
448 5 wVDStatus |= VD_PAL_SWITCH;
449 5 #elif 0 // Force PAL
wVDStatus |= VD_PAL_SWITCH;
#else // Force NTSC
#endif
454 5 }
455 4 }
456 3 }
457 2 else
458 2 {
459 3 if( (g_ucMSVDForceSystem == VD_FORCE_PAL)||(g_ucMSVDForceSystem == VD_FORCE_PAL_358) )
460 3 {
461 4 wVDStatus |= VD_PAL_SWITCH;
462 4 }
463 3 }
464 2
465 2
466 2 // if( ucTmp&_BIT6 )
467 2 // wVDStatus |= VD_MACROVISION;
468 2 }
469 1
470 1 msWriteByte( BK0_00_REGBK, ucBank );
471 1
472 1 return wVDStatus;
473 1 }
474
475 //////////////////////////////////////////////////////
476 // Std 50/60 Vtotal FSC HTotal Color
477 //-----------------------------------------
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 9
478 // NTSC 60 525 358 910
479 // PAL-M 60 525 358 909 PAL-Switch
480 // NTSC-443 60 525 443 1127
481 // PAL-60 60 525 443 1127 PAL-Switch
482 // xxx 50 625 358
483 // PAL-Nc 50 625 358 917 PAL-Switch
484 // xxx 50 625 443
485 // PAL 50 625 443 1135 PAL-Switch
486 // SECAM 50 625 428 1097
487 ///////////////////////////////////////////////////////
488 BYTE msVDGetVideoSystem( WORD wVideoStatus )
489 {
490 1 BYTE ucSignalType = SIG_NONE;
491 1
492 1 putstr("\r\n");
493 1 if( wVideoStatus&VD_HSYNC_LOCKED )
494 1 {
495 2 if( wVideoStatus&VD_VSYNC_50HZ ) // 50Hz
496 2 {
497 3 switch( wVideoStatus&VD_FSC_TYPE )
498 3 {
499 4 case VD_FSC_4285: // SECAM
500 4 ucSignalType = SIG_SECAM;
501 4 putstr("[SECAM]");
502 4 break;
503 4 case VD_FSC_4433: // 4.43361875MHz, PAL or NTSC443 or PAL(60)
504 4 ucSignalType = SIG_PAL;
505 4 putstr("[PAL]");
506 4 break;
507 4 case VD_FSC_3579: // 3.579545MHz, NTSC
508 4 case VD_FSC_3575: // 3.57561149MHz,PAL(M)
509 4 case VD_FSC_3582: // 3.58205625MHz,PAL(Nc)
510 4 ucSignalType = SIG_PAL_NC;
511 4 putstr("[PAL-NC]");
512 4 break;
513 4 }
514 3 }
515 2 else // 60Hz
516 2 {
517 3 switch( wVideoStatus&VD_FSC_TYPE )
518 3 {
519 4 case VD_FSC_4285: // SECAM
520 4 putstr("[SECAM60??-->");
521 4 case VD_FSC_4433: // 4.43361875MHz, PAL or NTSC443 or PAL(60)
522 4 if( wVideoStatus&VD_PAL_SWITCH )
523 4 {
524 5 ucSignalType = SIG_PAL_60;
525 5 putstr("[PAL-60]");
526 5 }
527 4 else
528 4 {
529 5 ucSignalType = SIG_NTSC_443;
530 5 putstr("[NTSC-443]");
531 5 }
532 4 break;
533 4 case VD_FSC_3579: // 3.579545MHz, NTSC
534 4 case VD_FSC_3575: // 3.57561149MHz,PAL(M)
535 4 case VD_FSC_3582: // 3.58205625MHz,PAL(Nc)
536 4 if( wVideoStatus&VD_PAL_SWITCH )
537 4 {
538 5 ucSignalType = SIG_PAL_M;
539 5 putstr("[PAL-M]");
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 10
540 5 }
541 4 else
542 4 {
543 5 ucSignalType = SIG_NTSC;
544 5 putstr("[NTSC]");
545 5 }
546 4 break;
547 4 }
548 3 }
549 2 }
550 1 return ucSignalType;
551 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -