⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msvd.lst

📁 Maria2 CarTV 20060707 Tony
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -