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

📄 at2042_inf-old.c

📁 这个是Linux下的关于2042的程序
💻 C
📖 第 1 页 / 共 4 页
字号:
{
	volatile unsigned short id_conf;
	volatile unsigned short OPT=1;
	
#ifdef VIDEO_ONLY
	id_conf = RxID(GID_ENCODER, 0x00, 0x03, W_FLAG);	
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif
	AT2042_DELAY(100000);

	/*20041004_1*/
 	/*adds "reference picture selection" function for network camera application*/
    	/*GID=4,CID=0,PID=0x11*/
      	/*Data0[0]*/
      	/*0 : Last I/P-Picture Reference mode (default, ISO standard)*/
      	/*1 : I-Picture Reference mode (non ISO standard)*/
	
	if (opt<=0) {
		OPT=0;
		/* GOP Structure : 0x07 */
		id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x07, W_FLAG);
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1;		// closed gop
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = MAX_FRAME_IPB;		// n/m	//IP
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1;		// m
		printk ("[I-Picture Reference mode OFF]\n");
	}
	else {
		OPT=1;
		/* GOP Structure : 0x07 */
		id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x07, W_FLAG);
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1;		// closed gop
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = MAX_FRAME_IPB;		// n/m	//IP
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1;		// m
		printk ("[I-Picture Reference mode ON]\n"); 
	}
	
	id_conf = RxID(GID_ENC_VIDEO, 0x00, 0x11, W_FLAG);	
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = OPT;
	
	AT2042_DELAY(100000);
#ifdef VIDEO_ONLY
	id_conf = RxID(GID_ENCODER, 0x00, 0x02, W_FLAG);	
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif

	return ;
}



static  void set_enc_mode (unsigned short mode)
{
	volatile unsigned short id_conf;
	volatile unsigned short MODE=1;
	
#ifdef VIDEO_ONLY
	id_conf = RxID(GID_ENCODER, 0x00, 0x03, W_FLAG);	
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif
	AT2042_DELAY(100000);

	if (mode<=0) {
		MODE=0;
		printk ("[ENC_MODE : VBR]\n"); 
	}
	else {
		MODE=1;
		printk ("[ENC_MODE : CBR]\n"); 
	}
	/* Rate Control Mode : CBR : VBR */
	id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x04, W_FLAG);		
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = MODE;	//0:VBR  1~2:CBR
	
	AT2042_DELAY(100000);
#ifdef VIDEO_ONLY
	id_conf = RxID(GID_ENCODER, 0x00, 0x02, W_FLAG);	
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif

	return ;
}


static void set_res (unsigned short res, unsigned short frm)
{
	volatile unsigned short id_conf;
	volatile unsigned short frame_rate;
		
#ifdef VIDEO_ONLY
	id_conf = RxID(GID_ENCODER, 0x00, 0x03, W_FLAG);
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif	
	AT2042_DELAY(100000);

	if (res==RES_MODE_DI)		/*RES_MODE_DI*/
	{
		/* Input Video Format : 0x01 */
		id_conf = RxID(GID_ENC_VIDEO, 0x00, 0x01, W_FLAG);
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 720;		// hor_size

		if (PAL_NTSC==NTSC) {
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 480;	// ver_size
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 4;		// video_input_rate 30000/10001
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;		// field_mode (d1=>interlaced '0')
			//printk ("[Input video Format 720, 480, 4, 0]\n"); 
		}
		else {
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 576;	// ver_size
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 3;	// video_input_rate 25
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;	// field_mode (d1=>interlaced '0')
			//printk ("[Input video Format 720, 576, 3, 0]\n"); 		
		}
		
		/*Input  video scale mode*/
		id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x22, W_FLAG);
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;		// hor_scale 1
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;		// ver_scale 1
		//printk ("[Input  video scale mode : 100, 100]\n"); 
		
		/*Encoding region information*/
		id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x23, W_FLAG);
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;		//hor_offset	0
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;		//ver_offset	0
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (720>>4);	//hor_MB	45
		if (PAL_NTSC==NTSC)  {	/*NTSC D1*/
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (480>>4);	//ver_MB		30
			printk ("[RESOLUTION : NTSC 720x480]\n"); 
		}
		else {	/*PAL D1*/
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (576>>4);	//ver_MB		30
			printk ("[RESOLUTION : PAL 720x576]\n"); 			
		}		

		id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x24, W_FLAG);
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1;		//Input frames
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1;		//recoded frames

		/*Recoding frame rate control*/
		if (frm>=30) frame_rate=30;	
		else if (frm<=1) frame_rate=1;	
		else frame_rate=frm;
		printk ("[FRAME_RATE : %d/SEC]\n" , frame_rate);
		
#if 0		
		/* Zoomin */
		id_conf = RxID(GID_DEC_VIDEO, 0, 0x10, W_FLAG);	
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0 |0);	//hor_zoom |ver_zoom
		printk ("[Zoomin : OFF]\n"); 
#endif		

#if 0		/*2005-01-07*/
		/*Rescale*/
		id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x10, W_FLAG);
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 4;// 2/3 Hor scale
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 4;// 2/3 Ver scale
		//printf ("[Display Rescale]\n"); 
		/*Deocding video offset*/		
		id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x11, W_FLAG);
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x0c);// Hor offset
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x08);// Ver offset
#else	/*2005-01-18*/
		/*Rescale*/
		id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x10, W_FLAG);
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;// 1/1 Hor scale
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;// 1/1 Ver scale
		//printf ("[Display Rescale]\n"); 
		/*Deocding video offset*/		
		id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x11, W_FLAG);
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x00);// Hor offset
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x00);// Ver offset
#endif		
	}
	else 		/*RES_MODE_CIF*/
	{
		/* Input Video Format : 0x01 */
		id_conf = RxID(GID_ENC_VIDEO, 0x00, 0x01, W_FLAG);
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 720;		// hor_size
		
		if (PAL_NTSC==NTSC) {
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) =480;	// ver_size
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 7;		// video_input_rate 60000/10001
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1;		// field_mode (d1=>progressive '1')
			//printk ("[Input video Format 720, 480, 4, 0]\n"); 
		}
		else {
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) =576;	// ver_size
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 6;		// video_input_rate 50
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1;		// field_mode (d1=>progressive '1')
			//printk ("[Input video Format 720, 576, 3, 0]\n"); 		
		}

 		/*Input  video scale mode*/
		id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x22, W_FLAG);
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) =  2;		// hor_scale 1/2
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;		// ver_scale 1/1 progressive
		//*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1;	// ver_scale 1/2 interace
		//printk ("[Input  video scale mode 50, 100]\n"); 
		
		/*Encoding region information*/
		id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x23, W_FLAG);
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) =  0;			//hor_offset	0
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) =  0;			//ver_offset	0
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) =  (360>>4);	//hor_MB	0x16
		
		if (PAL_NTSC==NTSC) {	/*NTSC CIF*/
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) =   (240>>4);	//ver_MB		0x0F
			printk ("[RESOLUTION : NTSC 360x240]\n"); 
		}
		else {		/*PAL CIF*/
			*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) =   (288>>4);	//ver_MB		0x12
			printk ("[RESOLUTION : PAL 360x288]\n"); 
		}
		
		id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x24, W_FLAG);
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) =  2;		//Input frames
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) =  1;		//recoded frames

		/*Recoding frame rate control*/
		if (frm>=30) frame_rate=30;	
		else if (frm<=1) frame_rate=1;	
		else frame_rate=frm;
		printk ("[FRAME_RATE : %d/SEC]\n" , frame_rate);

#if 0		
		/* Zoomin */
		id_conf = RxID(GID_DEC_VIDEO, 0, 0x10, W_FLAG);	
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (1 |2);	//hor_zoom  | ver_zoom
		printk ("[Zoomin : ON]\n"); 
#endif		

#if 0		/*2005-01-07*/
		/*Rescale*/
		id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x10, W_FLAG);
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;// 1/1 Hor scale
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;// 1/1 Ver scale
		//printf ("[Display Rescale]\n"); 
		/*Deocding video offset*/		
		id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x11, W_FLAG);
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x15);// Hor offset
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x0d);// Ver offset
#else	/*2005-01-18*/
		/*Rescale*/
		id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x10, W_FLAG);
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;// 1/1 Hor scale
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;// 1/1 Ver scale
		//printf ("[Display Rescale]\n"); 
		/*Deocding video offset*/		
		id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x11, W_FLAG);
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x00);// Hor offset
		*((unsigned short  *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x00);// Ver offset	
#endif		
	}
	
	AT2042_DELAY(100000);
#ifdef VIDEO_ONLY
	for (id_conf=0;id_conf<20;id_conf++) {AT2042_DELAY(100000);}
	id_conf = RxID(GID_ENCODER, 0x00, 0x02, W_FLAG);	
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif

	return ;	
}



/* decoder parameters */
void video_decoder_cfg(void) 
{
	volatile unsigned short id_conf;

#ifdef VIDEO_ONLY
	id_conf = RxID(GID_ENCODER, 0x00, 0x03, W_FLAG);
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif	
	AT2042_DELAY(100000);

	id_conf = RxID(GID_DEC_AUDIO, 0, 0x01, W_FLAG);	
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 9;
	
	id_conf = RxID(GID_DEC_AUDIO, 0, 0x03, W_FLAG);	
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;
	
	id_conf = RxID(GID_DEC_AUDIO, 0, 0x04, W_FLAG);	
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;

	id_conf = RxID(GID_DEC_AUDIO, 0, 0x05, W_FLAG);	
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;
	
	id_conf = RxID(GID_DEC_AUDIO, 0, 0x06, W_FLAG);	
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 64;

	id_conf = RxID(GID_DEC_AUDIO, 0, 0x07, W_FLAG);	
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
	*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;
	printk ("[video_decoder_cfg]\n"); 

⌨️ 快捷键说明

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