📄 main.c
字号:
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 + -