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

📄 main.c

📁 这个是Linux下的应用程序
💻 C
📖 第 1 页 / 共 4 页
字号:
			for(i_fast = 0; i_fast < 5; i_fast++)                        {                                fread(mux_data,sizeof(unsigned short),3,fp);                                rx_id = ((mux_data[2] & 0xff00) >> 8);                                decoder_size = ((mux_data[2] << 8) & 0xff00) + rx_id;                                file_length -= decoder_size;                                fseek(fp,(unsigned long)decoder_size,SEEK_CUR);                                if(file_length <= 0 )                                {                                        replay_state = REPLAY_STOP;                                        break;                                }                        }                        for(i_fast = 0; i_fast < 10; i_fast++)                        {                                if(file_length <= 0)                                {                                        replay_state = REPLAY_STOP;                                        break;                                }                                fread(mux_data,sizeof(unsigned short),3,fp);                                rx_id = ((mux_data[2] & 0xff00) >> 8);                                decoder_size = ((mux_data[2] << 8) & 0xff00) + rx_id;                                printf("&&&& PES packet length is %x &&&&\n",decoder_size);                                file_length -= decoder_size;                                fread((mux_data + 3),sizeof(unsigned short),decoder_size/2,fp);                                decoding_stream_write(mux_data,(unsigned long )decoder_size+6);                        }			if(i_num == 1)                        {                                temp = ((length - (int)(file_length >> 16))*675/length);                                printf("temp1 is %f\n",temp);                                fill_rect(25,546,temp,30,1,0);                                usleep(50);                                i_num = 0;                        }                        i_num++;                        if(file_length <= 0)                                replay_state = REPLAY_STOP;			break;		case REPLAY_STOP	:				usleep(500000);			video_decoder_stop(VIDEO_ONLY);			fclose(fp);			replay_state = 5;			input_state=INPUT_PLAY;			fill_rect(0,0,720,576,0,0);                        file_osd_display();			break;		case REPLAY_PAUSE	:			break;		case REPLAY_PICTURE	:			printf("display picture\n");			display_picture();			replay_state = REPLAY_PAUSE;			break;	}	return 0;}#if 1//=======================================================================// 功能 监测U盘存储容量//// 2007.12.30// 2008.1.12	修改 U盘容量达到90%时报警// author:齐晓龙//========================================================================void u_memory(void){	char *u_str;	FILE *fu;	char u_tip[]="ALARM:STORAGE FULL";		u_str = (char *)malloc(50);	system("df /dev/sda1 | grep /dev/sda1>/tmp/m.txt");	if((fu = fopen("/tmp/m.txt","r")) == NULL)	{		printf("open memory fail !!!\n");		return ;	}	fseek(fu,51,SEEK_SET);	fread(u_str,sizeof(char),3,fu);	if(u_str[1] == '9' || u_str[0] == '1')	{		fill_rect(100,300,500,48,6,0);		display_string(200,316,u_tip,0);	}	fclose(fu);	free(u_str);}#endif/****************************************************************************/// 功能		配置	key = 1 display file  key = 2 format U disk//// 2007.12.18/****************************************************************************/#if 0int configure(void){	if(key == 1)	{		system("rm /tmp/u.txt");                usleep(10000);                system("ls /mnt/nfs > /tmp/u.txt");                usleep(20000);                if((fp = fopen("/tmp/u.txt","r")) == NULL)                {                        printf("open file %s is fail\n","/tmp/u.txt");                        return 0;                }                ch = 0;                num = 0;                while(!feof(fp))                {                        temp = fgetc(fp);                        if(temp != '\n')                        {                                string1[ch] = temp;                                ch++;                        }                        else                        {                                string1[ch] = '\0';                                ch = 0;                                string0[0] = num + 0x31;                //ASCII CODE                                string0[1] = '.';                                string0[3] = '\0';                                display_string (0x95,(0x80+num*20),string0, 0);                                display_string (0x100,(0x80+num*20),string1, 0);                                num++;                        }		}                while(mykey() != 2);                osd_on_off(0,1);	}	if(key == 2)	{		system("umount /dev/sda1");                usleep(5000);                system("mkfs.vfat /dev/sda1");                usleep(500000);		}	return 0;}#endif/***************************************************************************/// 功能		抓拍//// 2007.12.18/**************************************************************************/int capture(void){        encoding_stream_read(mux_data);        printf("the first word is 0x%4x\n",mux_data[0]);        if((mux_data[0] & 0x0002) != 0x0002)        {               printf("###### Stream Format is Wrong !!! ######\n");               return 0;        }        stream_size = mux_data[1]*16*2;        fwrite((mux_data +4),sizeof(unsigned short),(unsigned long)(stream_size/2),fp);        fclose(fp);	video_encoder_stop(VIDEO_ONLY);	return 0;}/************************************************************************/// 功能 显示图片//// 2007.12.18// 2008.1.10   修改 播放循环为50// author: 齐晓龙/***********************************************************************/ void display_picture(void){	int num;	fread(mux_data,sizeof(unsigned short),3,fp);        rx_id = ((mux_data[2] & 0xff00) >> 8);        decoder_size = ((mux_data[2] << 8) & 0xff00) + rx_id;        printf("&&&& PES packet length is %x &&&&\n",decoder_size);        file_length -= decoder_size;        fread((mux_data + 3),sizeof(unsigned short),decoder_size/2,fp);	for(num = 0 ; num < 50; num++)        	decoding_stream_write(mux_data,(unsigned long )decoder_size+6);	}unsigned char promt_text[200];unsigned char promt_sel_index=0;#define PROMT_LEFT    	200#define PROMT_TOP	400#define PROMT_WIDTH	320#define PRONT_HEIGHT	120#define PROMT_TEXT_LEFT		PROMT_LEFT+20#define PROMT_TEXT_TOP		PROMT_TOP+20#define PROMT_YES_LEFT		PROMT_LEFT+40#define PROMT_NO_LEFT		PROMT_LEFT+320-96#define PROMT_BUTTON_TOP 	PROMT_TOP+100-20#define PROMT_BACK_COLOR 	'd'-'a'#define PROMT_SEL_COLOR  	'h'-'a'#define PROMT_BUTTON_COLOR 	'l'-'a'#define PROMT_BUTTON_WIDTH 	56#define PROMT_BUTTON_HEIGHT 	24void promt_show(unsigned char promt_state){	if(promt_state ==0)	{		fill_rect(PROMT_LEFT,		PROMT_TOP,		PROMT_WIDTH,		PRONT_HEIGHT,		0,		0);		return;	}	fill_rect(PROMT_LEFT,                PROMT_TOP,                PROMT_WIDTH,                PRONT_HEIGHT,                PROMT_BACK_COLOR,                0);	display_string(PROMT_TEXT_LEFT,		PROMT_TEXT_TOP,		promt_text,0);	if(promt_sel_index==0)	{		fill_rect(PROMT_YES_LEFT-4,			PROMT_BUTTON_TOP-4,			PROMT_BUTTON_WIDTH,			PROMT_BUTTON_HEIGHT,			PROMT_SEL_COLOR,			0);		fill_rect(PROMT_NO_LEFT-4,                        PROMT_BUTTON_TOP-4,                        PROMT_BUTTON_WIDTH,                        PROMT_BUTTON_HEIGHT,                        PROMT_BUTTON_COLOR,			0);	}	else	{		fill_rect(PROMT_YES_LEFT-4,                        PROMT_BUTTON_TOP-4,                        PROMT_BUTTON_WIDTH,                        PROMT_BUTTON_HEIGHT,                        PROMT_BUTTON_COLOR,                        0);                fill_rect(PROMT_NO_LEFT-4,                        PROMT_BUTTON_TOP-4,                        PROMT_BUTTON_WIDTH,                        PROMT_BUTTON_HEIGHT,                        PROMT_SEL_COLOR,                        0);	}		display_string(PROMT_YES_LEFT,			PROMT_BUTTON_TOP,			"yes",			0);   		display_string(PROMT_NO_LEFT,                        PROMT_BUTTON_TOP,                        "no",                        0);}void key_left(void){	if(replay_state==REPLAY_FAST)	{		replay_state=REPLAY_NORMAL;		return;	}	if(bool_state == BOOL_STATE_SELECT)	{		if(promt_sel_index==1)		{			promt_sel_index=0;			promt_show(1);		}		return;	}	if(input_state==INPUT_MENU)	{		if(focus_index>0)                 	focus_index--;              	else              	        focus_index=3;                button_show('e'-'a','l'-'a',focus_index);		return;	}	}void key_right(void){	if(replay_state==REPLAY_NORMAL)	{		replay_state=REPLAY_FAST;		return;	}	if(bool_state==BOOL_STATE_SELECT)	{		if(promt_sel_index==0)		{			promt_sel_index=1;			promt_show(1);		}		return;	}	if(input_state==INPUT_MENU)        {                if(focus_index<3)                        focus_index++;                else                        focus_index=0;                button_show('e'-'a','l'-'a',focus_index); 		return;                                                                                       }}void key_up(void){    if(bool_state==BOOL_STATE_SELECT)    {         return;    }    if(input_state==INPUT_PLAY	|| input_state==INPUT_CONFIG)    {	if(line_current==0 && line_sel==0)		return;	if(line_sel==0)	{		line_current=line_current-10;		line_sel=9;			u_file_show();		file_osd_display();		return;	}	line_sel--;	file_osd_display();   }	}void key_down(void){     if(bool_state==BOOL_STATE_SELECT)	return;    if(input_state==INPUT_PLAY		|| input_state==INPUT_CONFIG)    {	if(line_count-line_current <=10 && line_sel==9)	{		return;	}	if(line_sel==line_count-1)		return;	if(line_sel==9)	{		line_current=line_current+10;		u_file_show();		line_sel=0;		file_osd_display();		return;	}	line_sel++;	file_osd_display();    }		}void key_yes(void){	if(bool_state==BOOL_STATE_SELECT)	{		if(promt_sel_index==1)		{			promt_show(0);			switch(input_state)			{			  	case INPUT_RECORD_CHECK:					input_state=INPUT_MENU;				break;							}		}		else		{		    switch(input_state)		    {                        case INPUT_PLAY:				fill_rect(0,0,720,576,'a'-'a',0);				sprintf(file_to_play,"%s",file_name[line_sel]);				input_state=INPUT_PLAY_START;				play_state=PLAY_STOP;			break;			case INPUT_PLAY_START:				input_state=INPUT_PLAY;				usleep(100000);	                        video_decoder_stop(VIDEO_ONLY);        	                fclose(fp);				fill_rect(0,0,720,576,0,0);				file_osd_display();				promt_show(0);				//play_stop			break;			case INPUT_CONFIG:				{ 				char cmd_delete[50]="rm /mnt/nfs/";                                sprintf(file_to_play,"%s",file_name[line_sel]);                                                                                      		//printf("Get file bath !!! \n");        			strcat(cmd_delete,file_to_play);				system(cmd_delete);				if(line_sel!=0)				{					if(line_count<line_current+line_sel+1)						line_sel-=1;										}				else				{					if(line_current >line_count-1					&& line_current >10)					{						line_current-=10;						line_sel=9;					}				}				//if(line_set!=0)				promt_show(0);				fill_rect(0,0,720,576,'a'-'a',0);				u_file_show();				file_osd_display();				bool_state=BOOL_STATE_NONE;				//key_up();				return;				}			break;			case INPUT_RECORD:				input_state=INPUT_MENU;                		fill_rect(0,0,720,576,'a'-'a',0);                		title_display();                		button_show('e'-'a','l'-'a',focus_index);				//video_encoder_stop(VIDEO_ONLY);                                //fclose(fp);			break;			case INPUT_RECORD_CHECK:				fill_rect(0,0,720,576,'a'-'a',0);				date_set();					//input_state=INPUT_RECORD;				input_state=INPUT_MENU;				fill_rect(0,0,720,576,'a'-'a',0);                                title_display();                                button_show('e'-'a','l'-'a',focus_index);				//record_state=RECORD_STOP;			break;		    }			}		bool_state=BOOL_STATE_NONE;		return;	}	if(input_state==INPUT_PLAY_START)	{		if(play_state==PLAY_START)		{			play_state=PLAY_PAUSE;		}		else		{			play_state=PLAY_START;		}	}	if(input_state==INPUT_NORMAL)	{		input_state=INPUT_MENU;		//齐晓龙 修改		//input_state = INPUT_RECORD; 		fill_rect(0,0,720,576,'a'-'a',0);                title_display();                button_show('e'-'a','l'-'a',focus_index);		return;	}	if(input_state==INPUT_MENU)	{		switch((focus_index))		{			case 0://record				//sprintf(promt_text,"%s","start record");				promt_sel_index=0;								fill_rect(0,0,720,576,'a'-'a',0);                                date_set();                                //input_state=INPUT_RECORD;                                input_state=INPUT_MENU;                                fill_rect(0,0,720,576,'a'-'a',0);                                title_display();                                button_show('e'-'a','l'-'a',focus_index);								//promt_show(1);				//input_state=INPUT_RECORD_CHECK;				//bool_state=BOOL_STATE_SELECT;				//video_encoder_stop(VIDEO_ONLY);                		//fclose(fp);			break;			case 1://capture				input_state=INPUT_CAPTURE;				capture_state = CAPTURE_NOW;				//promt_show(0);				fill_rect(0,0,720,576,'a'-'a',0);			break;			case 2://play	                	fill_rect(0,0,720,576,'a'-'a',0);				input_state=INPUT_PLAY;				line_current=0;				line_sel=0;				u_file_show();				usleep(100);				file_osd_display();			break;			case 3://config				input_state=INPUT_CONFIG;								fill_rect(0,0,720,576,'a'-'a',0);                                //input_state=INPUT_PLAY;                                line_current=0;                                line_sel=0;                                u_file_show();                                usleep(100);                                file_osd_display();			break;		}		return;	}	if(input_state==INPUT_PLAY)	{		sprintf(promt_text,"play:%s",file_name[line_sel]);		promt_sel_index=0;		promt_show(1);				bool_state=BOOL_STATE_SELECT;		return;	}	if(input_state==INPUT_CONFIG)	{		sprintf(promt_text,"delete:%s",file_name[line_sel]);                promt_sel_index=0;                promt_show(1);                                                                                                                               bool_state=BOOL_STATE_SELECT;		return;	}	}void key_no(void){

⌨️ 快捷键说明

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