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

📄 al242decoder.c

📁 Averlogic AL576芯片MPEG4压缩示例源程序
💻 C
📖 第 1 页 / 共 3 页
字号:
// Function:   SetupAL242EVBVideoMode;                  
// Description:  Setup AL242EVB to assigned video standard  
//				 		    
// Input parameters:  _VideoFormatX:
//   _NTSC_M		0
//   _NTSC_443		1
//   _PAL_I			2
//   _PAL_M			3
//   _PAL_N			4
//   _SECAMx     	5
//   _PAL_CN		6
//   _PAL_60		7
//   _NTSC_J		8  
// Output parameters: None.
// Return values:     None.
// ********************************************************************************
  
unsigned char SetupAL242EVBVideoMode(unsigned int _VideoFormatX)
{
 unsigned char _dx;
 		 SetEncoderDisplayMode(_Black);	

	switch(_VideoFormatX){   
	case _PAL_M:
	 	 	    SetupAL242VideoModeX(_VideoFormatX,_InputChannel); 
				SetupSA7105To_NTSC_Mode();
				SetupAL260To_NTSC_Mode();				
				break;
	case _NTSC_M:	
	case _NTSC_J:

 	case _PAL_60:	 		 
  		
				SetupAL242VideoModeX(_VideoFormatX,_InputChannel);
				SetupSA7105To_NTSC_Mode();
				SetupAL260To_NTSC_Mode();	
	        	break;
	case _NTSC_443:
	            SetupAL242VideoModeX(_VideoFormatX,_InputChannel);
				SetupSA7105To_NTSC_Mode();
				SetupAL260To_NTSC_Mode();
				SetReg(0x88,0x65,0x09);
                SetReg(0x88,0x66,0x2a);
                break; 

    case _PAL_N:
	            SetupAL242VideoModeX(_VideoFormatX,_InputChannel);	 
				SetupSA7105To_PAL_Mode();
				SetupAL260To_PAL_Mode();
                break;
	case _PAL_CN: 
			    SetupAL242VideoModeX(_VideoFormatX,_InputChannel);	 
				SetupSA7105To_PAL_Mode();
				SetupAL260To_PAL_Mode();
	            _dx=GetReg(0x88,0x61);     
				_dx&=0x0f;               
				SetReg(0x88,0x61,_dx);       //set to PAL_CN(don't have 7.5 IRE)
				break;
	case _PAL_I:
	            SetupAL242VideoModeX(_VideoFormatX,_InputChannel);
			    SetupSA7105To_PAL_Mode();
				SetupAL260To_PAL_Mode();
                _dx=GetReg(0x88,0x61);     
				_dx&=0x0f;               
				SetReg(0x88,0x61,_dx);       //set to PAL_I(don't have 7.5 IRE)
				break;
	case _SECAMx:			 
 			
				SetupAL242VideoModeX(_VideoFormatX,_InputChannel);	 
 				SetupSA7105To_PAL_Mode(); 
				SetupAL260To_PAL_Mode();	
		        break;
	}
  			SetEncoderDisplayMode(0);
 		  	
 	return(_VideoFormatX);
}

 
// ********************************************************************************
// Function:    SetAL242OutputMode;                  
// Description:  Switching AL242 decoder to Blue screen or normal display    				 		    
// Input parameters:   _ModeX:
//   					0: Set AL242 to normal display 
//    					1: Set AL242 to blue mode display 
// Output parameters: None.
// Return values:     None.
// ********************************************************************************
void   SetAL242OutputMode(unsigned char _ModeX){
unsigned char _dx;	 
	 
			_dx=GetReg(_SubIDOfAL242,0x07);
  		    _dx&=0xcf;
		   if(_ModeX==1) _dx|=0x10;
		   else _dx|=0x20;
		    SetReg(_SubIDOfAL242,0x07,_dx);
			_VideoFormatDetect=7;
}

// ********************************************************************************
// Function:   InputChannelSelectAL240;                  
// Description:  Switching AL240 decoder input channel    				 		    
// Input parameters:    _InputChannelX:
//   					0: _CVBS0 
//    					1: _CVBS1
//						2: _svideo_0
// 						3: _svideo_1
// Output parameters:  None.
// Return values:     _Input been assign=_InputChannelX.
// ******************************************************************************** 
unsigned char InputChannelSelectAL240(unsigned char _InputChannelX){ 
unsigned char _dx;
				switch(_InputChannelX&0x03){
										case _Input0://_CVBS0:
										_dx=0x20;
								SetReg(_SubIDOfAL242,0x07,_dx);
								SetReg(_SubIDOfAL242,0xb2,_dx);
								_dx&=0xdf;
								SetReg(_SubIDOfAL242,0xb2,_dx);			
							 	 _dx=GetReg(_SubIDOfAL242,0x00);
								_dx&=0xfe;
								SetReg(_SubIDOfAL242,0x00,_dx);
								_dx=0;
								SetReg(_SubIDOfAL242,0xb7,_dx);							   					 
							     _dx=GetReg(_SubIDOfAL242,0x01);
								_dx&=0x3f;	 
							    SetReg(_SubIDOfAL242,0x01,_dx);
 
										break;					
  
										case _Input1://_CVBS1:
										_dx=0x20;
								SetReg(_SubIDOfAL242,0x07,_dx);
								 _dx=GetReg(_SubIDOfAL242,0xb2);
								_dx&=0xdf;
								SetReg(_SubIDOfAL242,0xb2,_dx);			
							 	 _dx=GetReg(_SubIDOfAL242,0x00);
								_dx&=0xfe;
								SetReg(_SubIDOfAL242,0x00,_dx);
									_dx=1;
								SetReg(_SubIDOfAL242,0xb7,_dx);							   					 
							     _dx=GetReg(_SubIDOfAL242,0x01);
								_dx&=0x3f;	 
							    SetReg(_SubIDOfAL242,0x01,_dx);
  
										break;
										case _Input2://_svideo_0
										_dx=0x20;
 								SetReg(_SubIDOfAL242,0x07,_dx);
								 _dx=GetReg(_SubIDOfAL242,0xb2);
								_dx&=0xdf;

								SetReg(_SubIDOfAL242,0xb2,_dx);

								 _dx=GetReg(_SubIDOfAL242,0x00);
								_dx|=0x01;
								SetReg(_SubIDOfAL242,0x00,_dx);
 								_dx=4;
 								SetReg(_SubIDOfAL242,0xb7,_dx);
 	 
								 _dx=GetReg(_SubIDOfAL242,0x01);
								_dx&=0x3f;
								SetReg(_SubIDOfAL242,0x01,_dx);
 					 
					 
										break;
 
										case _Input3:// _svideo_1
									_dx=0x20;
							 	SetReg(_SubIDOfAL242,0x07,_dx);
								 _dx=GetReg(_SubIDOfAL242,0xb2);
								_dx&=0xdf;

								SetReg(_SubIDOfAL242,0xb2,_dx);

								 _dx=GetReg(_SubIDOfAL242,0x00);
								_dx|=0x01;
								SetReg(_SubIDOfAL242,0x00,_dx);
 								_dx=5;
 								SetReg(_SubIDOfAL242,0xb7,_dx);
 	 
								 _dx=GetReg(_SubIDOfAL242,0x01);
								_dx&=0x3f;
								SetReg(_SubIDOfAL242,0x01,_dx);
                               
										break;

								}

				 return(_InputChannelX&0x03);
}

// ********************************************************************************
// Function:   InputChannelSelectAL242;                  
// Description:  Switching AL242 decoder input channel    				 		    
// Input parameters:    _InputChannelX:
//   					0: _CVBS0 
//    					1: _SVideo_0
//						2: _Component_1
// 						3: NULL
// Output parameters:  None.
// Return values:     _Input been assign=_InputChannelX.
// ******************************************************************************** 
unsigned char InputChannelSelectAL242(unsigned char  _InputChannelX){ 
unsigned char _dx;
				switch(_InputChannelX&0x03){
										case _Input0://_CVBS0:
										_dx=0x20;
								SetReg(_SubIDOfAL242,0x07,_dx);	

								 _dx=GetReg(_SubIDOfAL242,0xb2);
								_dx&=0xdf;
								SetReg(_SubIDOfAL242,0xb2,_dx);			

							 	 _dx=GetReg(_SubIDOfAL242,0x00);
								_dx&=0xfe;
								SetReg(_SubIDOfAL242,0x00,_dx);
								
								if(_FastSwitchMode==0){
								if (_CVBS_0==1){_dx=0;SetReg(_SubIDOfAL242,0xb7,_dx);}
							  	else{
								    if (_CVBS_1==1){SetReg(_SubIDOfAL242,0xb7,0x01);}
			 				        if (_CVBS_2==1){SetReg(_SubIDOfAL242,0xb7,0x02);}
                                    if (_CVBS_3==1){SetReg(_SubIDOfAL242,0xb7,0x03);}
								    }
								}
							     _dx=GetReg(_SubIDOfAL242,0x01);
								_dx&=0x3f;	 
							    SetReg(_SubIDOfAL242,0x01,_dx);
 
										break;					
  
										case _Input1://_SVideo0:
 							 		_dx=0x20;
								SetReg(_SubIDOfAL242,0x07,_dx);
								 _dx=GetReg(_SubIDOfAL242,0xb2);
								_dx&=0xdf;

								SetReg(_SubIDOfAL242,0xb2,_dx);

								 _dx=GetReg(_SubIDOfAL242,0x00);
								_dx|=0x01;
								SetReg(_SubIDOfAL242,0x00,_dx);
 								if (_SVIDEO_0==1){_dx=4;SetReg(_SubIDOfAL242,0xb7,_dx);}
								else {
								if (_SVIDEO_1==1){SetReg(_SubIDOfAL242,0xb7,0x05);}}
 	                              
								 _dx=GetReg(_SubIDOfAL242,0x01);
								_dx&=0x3f;
								SetReg(_SubIDOfAL242,0x01,_dx);

								  
										break;
										case _Input2://_Component1:
 
								 _dx=GetReg(_SubIDOfAL242,0xb2);
								_dx&=0xdf;
							    SetReg(_SubIDOfAL242,0xb2,_dx);

								 _dx=GetReg(_SubIDOfAL242,0x00);
								_dx&=0xfe;
								SetReg(_SubIDOfAL242,0x00,_dx);
 					
					 
								_dx=1;
							 SetReg(_SubIDOfAL242,0xb7,_dx);
								_dx=0x20;
							 SetReg(_SubIDOfAL242,0x07,_dx);	 
						 		 
					 			_dx=GetReg(_SubIDOfAL242,0x01);
								_dx&=0x3c;
								_dx|=0x41;
								SetReg(_SubIDOfAL242,0x01,_dx);
 				 
										break;
 
										case _Input3: 
										break;

								}
					_dx=_InputChannelX&0x03;
				 return(_dx);
}


// ********************************************************************************
// Function:    AutoDetectProgress;                  
// Description:  detect AL242 current video standard input then used to setup AL242 
//               video stand config.     				 		    
// Input parameters:   None.
// Output parameters:  None.
// Return values:      None. 
// ********************************************************************************  
/*
void AutoDetectProgress(void){

unsigned char _dx,_hx,_gx,_cx,_ax,_sx,_SignOf_hx; 
  // 			  _OSCType=GetAL242EVBOSCType();
  
	  _dx=GetReg(_SubIDOfAL242,0x3a);	 
	if((_dx&0x01)==0x01)  { // set to blue mode	  
							SetAL242OutputMode(1); } 
	 

	else {		 _hx=GetReg(_SubIDOfAL242,0x07);
				if((_hx&0x10)==0x10)  SetAL242OutputMode(0);
		
				_ax=GetReg(_SubIDOfAL242,0x00); 
				_ax&=0x0e;
				_ax>>=1;
				
			
				_sx=GetReg(_SubIDOfAL242,0x18); 
                _hx=GetReg(_SubIDOfAL242,0x7d); _SignOf_hx=0;
				if((_hx&0x80)==0x80){ _hx=~_hx; _SignOf_hx=1; }
 
				
				_gx=GetReg(_SubIDOfAL242,0x3c); 
 
				_gx&=0x07;			
			
				_cx=GetReg(_SubIDOfAL242,0x03);
				_cx&=0x07;	
               

		switch(_ax){
		case 0: //from _NTSC_M // _NTSC_443  				 
				

              		if(_cx==3){  //  _NTSC_443
							   
	                    
					           switch(_gx){
								case 0x00:	
									   	if (_KeyInCommand[_VideoInputSwitch]==_Input1){

                                           if(_sx==0x2d){  // From NTSC
 											 _VideoFormatDetect=_hx>0x1f?_NTSC_443:_NTSC_M;
										   }
										   else{ // From NTSC-443
	 										_VideoFormatDetect=_hx>0x30?_NTSC_M:_NTSC_443;}
                                        								
											}
									 	else{
											if(_dx!=0x0e) {			  
										_VideoFormatDetect=(((_gx&0x01)!=0x01)?_NTSC_443:_PAL_M); }
									 	else {_VideoFormatDetect=(((_hx>0x19)&&(_hx<0x80))?_NTSC_M:_NTSC_443);}																 										
										
										}
									break;
							
								case 0x04:
								case 0x05:    // PAL detected
											_VideoFormatDetect=_PAL_I;
											break;
								case 0x06:    // SECAM detected
											_VideoFormatDetect=_SECAMx;
											break;
								default:
											if(_SignOf_hx==1){ 
												if(_hx<0x10) _VideoFormatDetect=_PAL_I;
											}
											else {
												if(_hx>0x20) _VideoFormatDetect=_PAL_CN;
												else  _VideoFormatDetect=_SECAMx;		
											}								 
									break;
								}
						 
 			          
                      
                    }
					else {	// _NTSC_M
							switch(_gx){
								case 0x00:	
                                if (_KeyInCommand[_VideoInputSwitch]==_Input1){SetReg(_SubIDOfAL242,0x03,0X03);}
									if((_dx&0x0f)==0x0e){	
								

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -