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

📄 image change.c

📁 基于DSP的类MP4播放器使用C语言在DSP++平台上编码
💻 C
字号:
//#include "stdio.h"
/*
void Get_ITU656_frame_from_NTSC(unsigned char*c_in,unsigned char *c_out)
{
	int i,line;
	int row=0,count;

	for(line=1;line<526;line++)
{
	if((3<line && line<21) || (263<line && line<267))//奇场的场消隐
	{	//255,0,0,182
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=182;
		c_out+=4;
		for(i=0;i<134;i++)
		{
		 *c_out=128;
		 *(c_out+1)=16;
		 c_out+=2;
		}
		//255,0,0,171
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=171;
		c_out+=4;
		for(i=0;i<288;i++)
		{
		 *c_out=0;
		 *(c_out+1)=0;
		 *(c_out+2)=0;
		 *(c_out+3)=0;
		 *(c_out+4)=0;
		 c_out+=5;
		}
	}
	else if(line<4 || (266<line && line<283))//偶场的场消隐
	{	//255,0,0,241
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=241;
		c_out+=4;
		for(i=0;i<268/2;i++)
		{
		 *c_out=128;
		 *(c_out+1)=16;
		 c_out+=2;
		}
		//255,0,0,236
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=236;
		c_out+=4;
		for(i=0;i<1440;i++)
		{
		 *c_out=0;
		 c_out++;
		}
	}
		else if(20<line && line<264)//奇场的有效行
	{	
		row=2*(line-21);
		//255,0,0,157
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=157;
		c_out+=4;
		for(i=0;i<268/2;i++)
		{
		 *c_out=128;
		 *(c_out+1)=16;
		 c_out+=2;
		}
		//255,0,0,128
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=128;
		c_out+=4;
		count=1440*row;
		for(i=0;i<1440;i++)
		{
		 *c_out=*(c_in+i+count);
		 c_out++;
		}
	}
	else					//偶场的有效行
	{	
		row=2*(line-283)+1;
		//255,0,0,218
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=218;
		c_out+=4;
		for(i=0;i<268/2;i++)
		{
		 *c_out=128;
		 *(c_out+1)=16;
		 c_out+=2;
		}
		//255,0,0,199
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=199;
		c_out+=4;
		count=1440*row;
		for(i=0;i<1440;i++)
		{
		 *c_out=*(c_in+i+1440*row);
		 c_out++;
		}
	}
}
}
*/

void Get_ITU656_frame_from_NTSC(unsigned char*c_in,unsigned char *c_out)
{
	int i,line;
	int row=0,count;

	for(line=1;line<526;line++)
{
	if((3<line && line<21) || (263<line && line<267))//奇场的场消隐
	{	//255,0,0,182
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=182;
		c_out+=4;
		for(i=0;i<67;i++)	//67=268/4
		{
		 *c_out=128;		*(c_out+1)=16;
		 *(c_out+2)=128;	*(c_out+3)=16;
		 c_out+=4;
		}
		//255,0,0,171
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=171;
		c_out+=4;
		for(i=0;i<144;i++)	//144=1440/10
		{
		 *c_out=0;		*(c_out+1)=0;	*(c_out+2)=0;
		 *(c_out+3)=0;	*(c_out+4)=0;	*(c_out+5)=0;
		 *(c_out+6)=0;	*(c_out+7)=0;	*(c_out+8)=0;
		 *(c_out+9)=0;	 c_out+=10;
		}
	}
	else if(line<4 || (266<line && line<283))//偶场的场消隐
	{	//255,0,0,241
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=241;
		c_out+=4;
		for(i=0;i<67;i++)
		{
		 *c_out=128;		*(c_out+1)=16;
		 *(c_out+2)=128;	*(c_out+3)=16;
		 c_out+=4;
		}
		//255,0,0,236
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=236;
		c_out+=4;
		for(i=0;i<144;i++)
		{
		 *c_out=0;		*(c_out+1)=0;	*(c_out+2)=0;
		 *(c_out+3)=0;	*(c_out+4)=0;	*(c_out+5)=0;
		 *(c_out+6)=0;	*(c_out+7)=0;	*(c_out+8)=0;
		 *(c_out+9)=0;	 c_out+=10;
		}
	}
		else if(20<line && line<264)//奇场的有效行
	{	
		row=2*(line-21)+1;	count=1440*row;
		//255,0,0,157
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=157;
		c_out+=4;
		for(i=0;i<67;i++)
		{
		 *c_out=128;		*(c_out+1)=16;
		 *(c_out+2)=128;	*(c_out+3)=16;
		 c_out+=4;
		}
		//255,0,0,128
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=128;
		c_out+=4;
	
			for(i=0;i<1440;)
		{
		 *c_out=*(c_in+i+count);
		 *(c_out+1)=*(c_in+i+count+1);
		 *(c_out+2)=*(c_in+i+count+2);
		 *(c_out+3)=*(c_in+i+count+3);
		 *(c_out+4)=*(c_in+i+count+4);
		 c_out+=5;	i+=5;
		}
		/*
		for(i=0;i<1440;i++)
		{
		 *c_out=*(c_in+i+count);
		 c_out++;
		}*/
	}
	else					//偶场的有效行
	{	
		row=2*(line-283);	count=1440*row;
		//255,0,0,218
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=218;
		c_out+=4;
		for(i=0;i<67;i++)
		{
		 *c_out=128;		*(c_out+1)=16;
		 *(c_out+2)=128;	*(c_out+3)=16;
		 c_out+=4;
		}
		//255,0,0,199
		*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=199;
		c_out+=4;
	
		for(i=0;i<1440;)
		{
		 *c_out=*(c_in+i+count);
		 *(c_out+1)=*(c_in+i+count+1);
		 *(c_out+2)=*(c_in+i+count+2);
		 *(c_out+3)=*(c_in+i+count+3);
		 *(c_out+4)=*(c_in+i+count+4);
		 c_out+=5;	i+=5;
		}
	}
}
}

#define str_ad 0x20010000
void Read_Flash (unsigned char* buffer_656)
{
	unsigned char* pic_in,*pic_in_V;
	unsigned char* pic_Y,*pic_U,*pic_V;
	long i ;
	int line;
		i = str_ad+349920;
		pic_in_V=str_ad+437400;//437400=720*486+360*243
		pic_U = buffer_656;		//输出U的首地址下分别是Y和V	
		pic_Y = buffer_656+1;	
		pic_V = buffer_656+2;
	

	for(pic_in=str_ad;pic_in<i;)	//输出Y的值  349920=720*486
	 {
		*(pic_Y)=*(pic_in);
		*(pic_Y+2)=*(pic_in+1);
		*(pic_Y+4)=*(pic_in+2);
		*(pic_Y+6)=*(pic_in+3);
		*(pic_Y+8)=*(pic_in+4);
		pic_Y+=10;	pic_in+=5;
	 }	 
	// printf("pic_in=%d",pic_in);
	for(line=0;line<243;line++)	//将4:2:0的U,V转成4:2:2并输出U,V
	 { 

	   for(i=0;i<360;i++)
	    {
		 *(pic_U)=*(pic_in+i);
		 *(pic_V)=*(pic_in_V+i);		 
		 pic_V+=4;	pic_U+=4;	 
	    }

	    for(i=0;i<360;i++)
	    {
		 *(pic_U)=*(pic_in+i);
		 *(pic_V)=*(pic_in_V+i);
		 pic_V+=4;	pic_U+=4;
	    }
    	pic_in+=360;
	 	pic_in_V+=360;	
	// 	printf("pic_in=%0x,pic_in_V=%0x\n",pic_in,pic_in_V); 
	 }
}

#define pic_count 4
void get_fourpic_form_one(unsigned char *image,unsigned char *pic1,unsigned char *pic2,unsigned char *pic3,unsigned char *pic4)
{
	int l,i,p_numb=0;
	unsigned char *pic_pointer,*flash;
	
	for(;p_numb<pic_count;p_numb++)
	 {	
	 	if(p_numb==0) 		{	pic_pointer=pic1;	flash=image; 	}	//指针来指向当前的输出图片数据和读出的首地址
	 	else if(p_numb==1)	{	pic_pointer=pic2;	flash=image+720;	}
	 	else if(p_numb==2)	{	pic_pointer=pic3;	flash=image+349920;	}//349920=1440*243
	 	else 				{	pic_pointer=pic4;	flash=image+349920+720;	}
	 	for(l=0;l<243;l++)		//把小图转成大图
		{
	  	 for(i=0;i<1440;)
	  	  {
			*(pic_pointer+i  )=*flash;
			*(pic_pointer+i+1)=*(flash+1);
			*(pic_pointer+i+2)=*(flash+2);
			*(pic_pointer+i+3)=*(flash+3);
			*(pic_pointer+i+4)=*flash;
			*(pic_pointer+i+5)=*(flash+1);
			*(pic_pointer+i+6)=*(flash+2);
			*(pic_pointer+i+7)=*(flash+3);		
			flash+=4;		i+=8;
		  }
			flash-=720;		pic_pointer+=1440;
		 for(i=0;i<1440;)
	  	  {
			*(pic_pointer+i  )=*flash;
			*(pic_pointer+i+1)=*(flash+1);
			*(pic_pointer+i+2)=*(flash+2);
			*(pic_pointer+i+3)=*(flash+3);
			*(pic_pointer+i+4)=*flash;
			*(pic_pointer+i+5)=*(flash+1);
			*(pic_pointer+i+6)=*(flash+2);
			*(pic_pointer+i+7)=*(flash+3);		
			flash+=4;		i+=8;
	  	  }
	 		flash+=720;	pic_pointer+=1440;
	  	 }
	}
}

⌨️ 快捷键说明

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