📄 msvd.lst
字号:
552
553
554
555 void msVDColorKill( BOOL bColorKill )
556 {
557 1
558 1 msWriteByte( BK0_00_REGBK, REG_BANK2_VD);
559 1
560 1 if( bColorKill ) // COLOR_OFF
561 1 {
562 2 printMsg("color kill");
563 2
564 2 msWriteByteMask( BK2_55_COLOR_OFF, 0xC0, 0xC0 );
565 2 msWriteByte( BK0_00_REGBK, REG_BANK3_COMB);
566 2 msWriteByteMask( BK3_60_IMGCTRL, 0x00, 0x30 ); // Disable Auto Chrom Gain
567 2
568 2
569 2 if( msDSP_Std_GetNoiseMag() < 10 )
570 2 msWriteByteMask(BK3_21_COMB2DCFGB, 0x30, 0x70); // Notch mode of Y
571 2 else
572 2 msWriteByteMask(BK3_21_COMB2DCFGB, 0x20, 0x70); // Notch mode of Y
573 2
574 2 }
575 1 else // COLOR return
576 1 {
577 2 printMsg("color return");
578 2 msWriteByteMask( BK2_55_COLOR_OFF, 0x80, 0xC0 );
579 2 msWriteByte( BK0_00_REGBK, REG_BANK3_COMB);
580 2 msWriteByteMask(BK3_21_COMB2DCFGB, 0x60, 0x70); // Notch mode of Y
581 2
582 2 msWriteByteMask( BK3_60_IMGCTRL, 0x10, 0x30 ); // Enable HW Auto Chrom Gain
583 2 }
584 1
585 1 msWriteByte( BK0_00_REGBK, REG_BANK_SCALER);
586 1 }
587
588 void msVDLineLockCtl( BOOL bLock )
589 {
590 1 BYTE ucBank;
591 1
592 1 ucBank = msReadByte( BK0_00_REGBK );
593 1 msWriteByte(BK0_00_REGBK, REG_BANK2_VD);
594 1
595 1 if( bLock )
596 1 {
597 2 msVDDSPWriteByte( DSP_20, 0x00 );
598 2 msVDDSPWriteByte( DSP_21, 0x80 );
599 2 //if( (g_VdInfo.wVideoStatus&VD_FSC_TYPE) != VD_FSC_4XXX ) // NTSC
600 2 {
601 3 msWriteBit( BK2_23_APLL_TRANGE, 1, _BIT0 ); // 20060103.Daniel
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 11
602 3 msWriteByte( BK2_26_APL_K1_NORMAL, 0x04 ); // APL_K1: 20060328.CY.Ko
603 3 msWriteByte( BK2_27_APL_K2_NORMAL, 0 ); // APL_K2
604 3 }
605 2 g_bVDCurLineLockStatus = 1;
606 2 putstr("\r\nLine Lock");
607 2 }
608 1 else
609 1 {
610 2 msVDDSPWriteByte( DSP_20, 0x00 );
611 2 msVDDSPWriteByte( DSP_21, 0x00 );
612 2 msWriteBit( BK2_23_APLL_TRANGE, 0, _BIT0 ); // 20060103.Daniel
613 2 msWriteByte( BK2_26_APL_K1_NORMAL, 0x10 ); // APL_K1: 20060328.CY.Ko
614 2 msWriteByte( BK2_27_APL_K2_NORMAL, 0x08 ); // APL_K2
615 2 g_bVDCurLineLockStatus = 0;
616 2 putstr("\r\nNo Line Lock");
617 2 }
618 1 msVDCombLineBufferCtl( MSVD_COMB_LINE_BUFFER_CTL_SW );
619 1
620 1 msWriteByte( BK0_00_REGBK, ucBank );
621 1 }
622
623 void msVDColorBurstHandler(BYTE ucFlag)
624 {
625 1 bit bCurColorBurstStatus;
626 1
627 1 if( ucFlag&VD_COLOR_BURST_HANDLER_RESET )
628 1 {
629 2 msVDColorKill(FALSE);
630 2 msVDLineLockCtl( _DISABLE );
631 2 msDSP_Std_Init(); // ???
632 2
633 2 msVD_FSC_ResetColorBurstStatus();
634 2
635 2 bCurColorBurstStatus = 1;
636 2 g_bVDColorBurstHandler_LastColorBurstStatus = 1;
637 2 g_ucVDColorBurstHandlerStableCounter = 0;
638 2
639 2 g_wVDColorBurstHandlerTimer = 400;
640 2
641 2 }
642 1 else if( 0 == g_wVDColorBurstHandlerTimer )
643 1 {
644 2 if( g_VdInfo.ucVideoSystem == SIG_SECAM )
645 2 {
646 3 return;
647 3 }
648 2
649 2 g_wVDColorBurstHandlerTimer = 20;
650 2
651 2 bCurColorBurstStatus = msVDGetColorLockBit();
652 2
653 2 if( bCurColorBurstStatus != g_bVDColorBurstHandler_LastColorBurstStatus )
654 2 {
655 3 ++ g_ucVDColorBurstHandlerStableCounter;
656 3 if(g_ucVDColorBurstHandlerStableCounter >= 5)
657 3 {
658 4 g_ucVDColorBurstHandlerStableCounter = 0;
659 4 g_bVDColorBurstHandler_LastColorBurstStatus = bCurColorBurstStatus;
660 4 if( bCurColorBurstStatus ) // Has color
661 4 {
662 5 msVDColorKill(FALSE);
663 5 }
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 12
664 4 else // No color
665 4 {
666 5 msVDColorKill(TRUE);
667 5 }
668 4 g_wVDColorBurstHandlerTimer = 100;
669 4 }
670 3 }
671 2 else
672 2 {
673 3 g_ucVDColorBurstHandlerStableCounter = 0;
674 3 }
675 2
676 2
677 2 // Line lock handler
678 2 {
679 3 bit bForceLineLock = 0;
680 3
681 3
682 3 // Detect if should line lock
683 3 if( ( g_bVDColorBurstHandler_LastColorBurstStatus == 0 ) // Color kill
684 3 &&( ( msDSP_Std_GetBurstMag() < 0x23 ) ))// No burst pattern
685 3 bForceLineLock = 1;
686 3
687 3 if( bForceLineLock != g_bVDCurLineLockStatus )
688 3 {
689 4 g_ucMSVDSwitchLineLockCnt ++;
690 4 if( g_ucMSVDSwitchLineLockCnt >= 5 )
691 4 {
692 5 g_ucMSVDSwitchLineLockCnt = 0;
693 5 if( bForceLineLock )
694 5 {
695 6 msVDLineLockCtl(_ENABLE); // Switch to line lock
696 6 //putstr("\r\nLine lock");
697 6 }
698 5 else
699 5 {
700 6 msVDLineLockCtl(_DISABLE); // Switch to no line lock
701 6 //putstr("\r\nNo Line lock");
702 6 }
703 5 }
704 4 }
705 3 else
706 3 {
707 4 g_ucMSVDSwitchLineLockCnt = 0;
708 4 }
709 3 }
710 2 }
711 1 //else
712 1 //msVD_FSC_Detect();
713 1 }
714
715
716 code StuVideoSystemInfo tVideoSystemInfo[SIG_NUMS] =
717 {
718 { MSVD_HTOTAL_NTSC, MSVD_HACTIVE_NTSC },// SIG_NTSC, // M
*** ERROR C202 IN LINE 718 OF ..\..\TV\MSVD.C: 'MSVD_HTOTAL_NTSC': undefined identifier
*** ERROR C202 IN LINE 718 OF ..\..\TV\MSVD.C: 'MSVD_HACTIVE_NTSC': undefined identifier
719 { MSVD_HTOTAL_PAL, MSVD_HACTIVE_PAL },// SIG_PAL, // B/G, D/K, I, H, N
*** ERROR C202 IN LINE 719 OF ..\..\TV\MSVD.C: 'MSVD_HTOTAL_PAL': undefined identifier
*** ERROR C202 IN LINE 719 OF ..\..\TV\MSVD.C: 'MSVD_HACTIVE_PAL': undefined identifier
720 { MSVD_HTOTAL_SECAM, MSVD_HACTIVE_SECAM },// SIG_SECAM,
*** ERROR C202 IN LINE 720 OF ..\..\TV\MSVD.C: 'MSVD_HTOTAL_SECAM': undefined identifier
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 13
*** ERROR C202 IN LINE 720 OF ..\..\TV\MSVD.C: 'MSVD_HACTIVE_SECAM': undefined identifier
721 { MSVD_HTOTAL_NTSC_443, MSVD_HACTIVE_NTSC_443 },// SIG_NTSC_443,
*** ERROR C202 IN LINE 721 OF ..\..\TV\MSVD.C: 'MSVD_HTOTAL_NTSC_443': undefined identifier
*** ERROR C202 IN LINE 721 OF ..\..\TV\MSVD.C: 'MSVD_HACTIVE_NTSC_443': undefined identifier
722 { MSVD_HTOTAL_PAL_60, MSVD_HACTIVE_PAL_60 },// SIG_PAL_60,
*** ERROR C202 IN LINE 722 OF ..\..\TV\MSVD.C: 'MSVD_HTOTAL_NTSC_443': undefined identifier
*** ERROR C202 IN LINE 722 OF ..\..\TV\MSVD.C: 'MSVD_HACTIVE_NTSC_443': undefined identifier
723 { MSVD_HTOTAL_PAL_M, MSVD_HACTIVE_PAL_M },// SIG_PAL_M,
*** ERROR C202 IN LINE 723 OF ..\..\TV\MSVD.C: 'MSVD_HTOTAL_PAL_M': undefined identifier
*** ERROR C202 IN LINE 723 OF ..\..\TV\MSVD.C: 'MSVD_HACTIVE_PAL_M': undefined identifier
724 { MSVD_HTOTAL_PAL_NC, MSVD_HACTIVE_PAL_NC },// SIG_PAL_NC,
*** ERROR C202 IN LINE 724 OF ..\..\TV\MSVD.C: 'MSVD_HTOTAL_PAL_NC': undefined identifier
*** ERROR C202 IN LINE 724 OF ..\..\TV\MSVD.C: 'MSVD_HACTIVE_PAL_NC': undefined identifier
725 };
726
727 void msVDSetupMode( WORD wStatus, BYTE ucSignalType)
728 {
729 1 BYTE ucBank;
730 1
731 1 ucBank = msReadByte( BK0_00_REGBK);
732 1
733 1 msVDColorBurstHandler( VD_COLOR_BURST_HANDLER_RESET );
734 1
735 1 //if( g_ucmsVDCtl&MSVD_CTL_FLAG_NOISE_HANDLER )
736 1 msVDNoiseHandlerReset();
737 1
738 1 #if(ENABLE_VCR_HANDLER)
if( g_ucmsVDCtl2&MSVD_CTL2_FLAG_VCR )
msVDVCRHandlerReset();
#endif
742 1
743 1 //if( g_ucmsVDCtl2&MSVD_CTL2_FLAG_AGC_PROCESSOR )
744 1 {
745 2 if( wStatus&VD_HSYNC_LOCKED )
746 2 VD_AGC_SetFscThreshold(wStatus&VD_VSYNC_50HZ);
747 2 }
748 1
749 1 #if( ENABLE_HSYNC_HANDLER )
750 1 //if( g_ucmsVDCtl2&MSVD_CTL2_FLAG_HSYNC )
751 1 {
752 2 msVDHSyncHandlerReset();
753 2 }
754 1 #endif
755 1
756 1 // Setup VD H total and DE width
757 1 {
758 2 WORD wHTotal;
759 2 WORD wHActive;
760 2
761 2 if( wStatus&VD_HSYNC_LOCKED )
762 2 {
763 3 wHTotal = tVideoSystemInfo[ucSignalType]._wHTotal;
764 3 wHActive = tVideoSystemInfo[ucSignalType]._wHActive;
765 3 }
766 2 else
767 2 {
768 3 if( wStatus&VD_VSYNC_50HZ )
769 3 {
770 4 wHTotal = tVideoSystemInfo[SIG_PAL]._wHTotal;
771 4 wHActive = tVideoSystemInfo[SIG_PAL]._wHActive;
772 4 }
773 3 else
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 14
774 3 {
775 4 wHTotal = tVideoSystemInfo[SIG_NTSC]._wHTotal;
776 4 wHActive = tVideoSystemInfo[SIG_NTSC]._wHActive;
777 4 }
778 3 }
779 2 wHActive += 24;
780 2 msWriteByte( BK0_00_REGBK, REG_BANK2_VD );
781 2
782 2 if( wHActive > 1024 )
783 2 msWriteByte( BK2_7B_656_HDEW, 0 ); // 656_HDEW
784 2 else
785 2 {
786 3 #if(PANEL_ANALOG_TCON)
787 3 msWriteByte( BK2_7B_656_HDEW, ((((wHActive)-4)/4)+0x20) ); // 656_HDEW
788 3 #else
msWriteByte( BK2_7B_656_HDEW, (((wHActive)-4)/4)); // 656_HDEW
#endif
791 3 }
792 2
793 2 #if(PANEL_TYPE==PanelPVI030_AT)
msWriteByte( BK2_9D_DPL_NSPL_HIGH, _656_PLL_VALUE ); // bit3~10
msWriteByte( BK2_9E_DPL_NSPL_LOW, (wHTotal&7)<<5 ); // bit0~2
#else
797 2 wHTotal -= 1;
798 2 msWriteByte( BK2_9D_DPL_NSPL_HIGH, (wHTotal/8) ); // bit3~10
799 2 msWriteByte( BK2_9E_DPL_NSPL_LOW, (wHTotal&7)<<5 ); // bit0~2
800 2 #endif
801 2 }
802 1
803 1 msWriteByte( BK0_00_REGBK, REG_BANK2_VD );
804 1
805 1 msWriteByte( BK0_00_REGBK, REG_BANK3_COMB );
806 1
807 1 // if( wStatus&VD_VSYNC_50HZ ) // 50 Hz
808 1 // {
809 1 // msWriteByteMask(BK3_40, 0x03, 0x03); // Force 625 lines
810 1 // }
811 1 // else // 60 Hz
812 1 // {
813 1 // msWriteByteMask(BK3_40, 0x02, 0x03); // Force 525 lines
814 1 // }
815 1
816 1 if( VD_Type == MARIA2_D )
817 1 {
818 2 if( ucSignalType == SIG_SECAM )
819 2 msWriteByte( BK3_6F_MAX_CRMA, 0x0F );
820 2 else
821 2 msWriteByte( BK3_6F_MAX_CRMA, 0x04 );
822 2 }
823 1
824 1 if( IsCVBSInUse())
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -