📄 main.bak
字号:
#include <stdio.h>#include <stdlib.h>#include <asm/ioctl.h>#include <asm/errno.h>#include <linux/slab.h>#include <fcntl.h>#include <pthread.h>#include <string.h>#include <time.h>#include <unistd.h> #include "main.h"#include "typedef.h"#include "at2041reg.h" #include "stream_server.h"/*netbsd*/#include "packet.h"//#include "netpacket/packet.h"#include "linux/if_packet.h"#include "linux/if_ether.h"#include "linux/if.h"#include "common.h"#include "hanzi_display.h" #include "state_define.h" #define ENV_TO_FLASH 0x1000#define CFG_ENV_SIZE 0x20000#define ENV_HEADER_SIZE (sizeof(unsigned long))#define ENV_SIZE (CFG_ENV_SIZE - ENV_HEADER_SIZE) unsigned char env_dat_sv[CFG_ENV_SIZE];volatile unsigned long frame_number_5=0;FILE *fp,*fb;int fl;time_t t;struct tm *tm_t;char filename[50]="/mnt/nfs/";unsigned int file_state = 0;unsigned char replay_state = 0;long file_length = 0;unsigned short key_value = 0;unsigned char input_state;unsigned char record_state=0;//uns8 image_data[6000];uns8 palette_data[80]; int i; int ch; int num; uns16 *mux_data; uns32 m,n; uns16 rx_id; uns16 enc_txmsg_size = 4; uns16 key; unsigned long decoder_size; unsigned long stream_size; unsigned char temp; unsigned char string1[20]; unsigned char string0[5]; uns32 count; uns8 y_data,u_data,v_data; uns8 r_data,g_data,b_data; uns8 trans_data,mode_data; char a,b,c; char focus_index=0; unsigned char file_name[10][80]; unsigned int line_count; unsigned int line_current; unsigned int line_sel; //image_data[0]=5; //image_data[1]=0; //image_data[2]=100; //image_data[3]=0; //image_data[4]=100; unsigned char bool_state=0; #define BOOL_STATE_NONE 0x0#define BOOL_STATE_SELECT 0X01unsigned char play_state=0;#define PLAY_STOP 0X0#define PLAY_START 0X01#define PLAY_PAUSE 0X02char file_to_play[200]; /*2005-04-15 netbsd*/volatile unsigned long gop_number_1=0;volatile unsigned long frame_number_1=0;uns8 palette_data[80];int open_mykey(void){ fl = open("/dev/my_key",O_RDWR); if(!fl) { printf("open device is fail !!! \n"); return 0; } printf("key device is normal !!!\n"); return 1;}#define KEY_UP 0X01#define KEY_DOWN 0X02unsigned char key_state=KEY_UP;unsigned int key_count=0;unsigned char mykey(void){ uns16 temp = 0; read(fl,&key_value,sizeof(short)); if(key_value != 0x006f) { //usleep(500); key_count++; switch(input_state) { case INPUT_RECORD: //if(key_count<2) // return 0xff; break; case INPUT_PLAY_START: break; default: if(key_count<100) return 0xff; break; } read(fl,&key_value,sizeof(short)); if(key_value != 0x006f && key_state==KEY_UP) { key_state=KEY_DOWN; switch(key_value) { case 0x004f : temp = 1;break; case 0x002f : temp = 2;break; case 0x0067 : temp = 3;break; case 0x006e : temp = 4;break; case 0x006d : temp = 5;break; case 0x006b : temp = 6;break; default : temp = 0xffff; break; } printf("the key value is %d\n",temp); key_count=0; return temp&0xff; } else { key_count=0; return 0xff; } } else { if( key_state==KEY_DOWN) { key_state=KEY_UP; } temp = 0xffff;return temp&0xff; } }void rgb_to_yuv(uns8 R,uns8 G,uns8 B,uns8 *y,uns8 *u,uns8 *v){ double Y,U,V; #if 0 //Y =((0.257*R)+(0.504*G)+(0.098*B))+16; //U =((-0.148*R)-(0.291*G)+(0.439*B))+128; //V =((0.439*R)-(0.368*G)-(0.071*B))+128; //#else Y =((0.229*R)+(0.587*G)+(0.114*B)); U =0.564*(B-Y); V =0.713*(R-Y); //#else //Y =((0.257*R)+(0.504*G)+(0.098*B))+16; //Y =((0.229*R)+(0.587*G)+(0.114*B))+16; //U=((-0.147*R)-(0.281*G)+(0.436*B))+128; //V =((0.615*R)-(0.518*G)-(0.01*B))+128; #else Y =((0.229*R)+(0.587*G)+(0.114*B)); V =((-0.1687*R)-(0.3133*G)+(0.5*B))+128; U =((0.5*R)-(0.4187*G)-(0.0813*B))+128; #endif //U=U+128; //V=V+128; if(Y>255) Y=255; if(U>255) U=255; if(V>255) V=255; if(Y<0) Y=0; if(U<0) U=0; if(V<0) V=0; *y=(uns8)Y; *u=(uns8)U; *v=(uns8)U;}void set_palette_color(uns8 trans,uns8 mode){ int i; //int trans=0; //int mode=0; uns8 y_data,u_data,v_data; //black i=0; rgb_to_yuv(0x0,0xff,0x0,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=4; palette_data[5*i+4]=mode; //blue i=1; rgb_to_yuv(0,0,128,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //dark green i=2; rgb_to_yuv(0x00,128,128,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //dark cyan i=3; rgb_to_yuv(0,128,0,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //maroon i=4; rgb_to_yuv(128,0,0,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //purple i=5; rgb_to_yuv(128,0,128,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //olive i=6; rgb_to_yuv(128,128,0,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //light gray i=7; rgb_to_yuv(192,192,192,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //dark gray i=8; rgb_to_yuv(128,128,128,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //blue i=9; rgb_to_yuv(0,0x00,250,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //green i=10; rgb_to_yuv(0x00,250,0x0,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //cyan i=11; rgb_to_yuv(0x0,255,255,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //red i=12; rgb_to_yuv(255,0x00,0x0,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //megenta i=13; rgb_to_yuv(255,0x0,255,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //yellow i=14; rgb_to_yuv(250,250,0x00,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode; //white i=15; rgb_to_yuv(250,250,250,&y_data,&u_data,&v_data); palette_data[5*i+0]=y_data; palette_data[5*i+1]=u_data; palette_data[5*i+2]=v_data; palette_data[5*i+3]=trans; palette_data[5*i+4]=mode;}extern const unsigned char image_data0[];extern const unsigned char image_data1[];uns16 image_buffer[4000];void image_fill_data(char *image_from,char* image_to,int width,int height){ uns16 i,j; for(j=0; j<height; j++) { for(i=0;i<width;i++) { image_to[j*width+i]=image_from[j*width+i]; #if 0 if(i%2 == 0) { image_to[j*width+i/2]=4<<(image_from[j*width+i]/27); } else { image_to[j*width+i/2]|=(image_from[j*width+i]/27); } #endif } }}#define CREATE_FILE_OK 0x01#define CREATE_FILE_NO 0x00/******************************************************************/// 功能: 录像////// 2007.12.18/*****************************************************************/int kinescope(void){ //osd_on_off(0,0); 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); }/******************************************************************************/// 功能 回放 //// 2007.12.18/*****************************************************************************/void get_file_length(void){ char replay_name[50]="/mnt/nfs/"; printf("Get file bath !!! \n"); strcat(replay_name,file_to_play); printf("the file bath is %s\n",replay_name); if((fp = fopen(replay_name,"r")) == NULL) { printf("Open file is fail !!!\n"); return ; } fseek(fp,0L,SEEK_END); file_length = ftell(fp); fseek(fp,0L,SEEK_SET); rx_id = RxID(0x09, 0, 0x01, W_FLAG);write_rx_fifo (rx_id); rx_id = 4;write_rx_fifo (rx_id); usleep(1000); video_decoder_start(VIDEO_ONLY); usleep(10000); video_decoder_start(VIDEO_ONLY); replay_state = 0;}#define REPLAY_NORMAL 0x00#define REPLAY_FAST 0x01#define REPLAY_STOP 0x02#define REPLAY_PAUSE 0x03int replay(void){ int i; printf("replay is start !!! \n"); switch(replay_state) { case REPLAY_NORMAL :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -