OSDN Git Service

tmporary works
[fpga-leon-mjpeg/leon-mjpeg.git] / snapgear-2.6-p42 / user / jpeg-6b-host / djpeg.c
index c180f8b..65d5706 100644 (file)
 #endif
 #endif
 
+/* Adding for motionJPEG*/
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+
 
 /* Create the add-on message string table. */
 
@@ -90,7 +97,7 @@ static IMAGE_FORMATS requested_fmt;
 static const char * progname;  /* program name for error messages */
 static char * outfilename;     /* for -outfile switch */
 
-
+static char * ip_address;
 static int f_num;
 
 
@@ -186,6 +193,7 @@ parse_switches (j_decompress_ptr cinfo, int argc, char **argv,
   outfilename = NULL;
   cinfo->err->trace_level = 0;
 
+  ip_address = NULL;
   /* Scan command line options, adjust parameters */
 
   for (argn = 1; argn < argc; argn++) {
@@ -342,6 +350,10 @@ parse_switches (j_decompress_ptr cinfo, int argc, char **argv,
       /* Targa output format. */
       requested_fmt = FMT_TARGA;
 
+    } else if(keymatch(arg, "ip", 1)) {
+      if (++argn >= argc)      /* advance to next argument */
+       usage();
+      ip_address = argv[argn]; /* save it away for later use */
     } else {
       usage();                 /* bogus switch */
     }
@@ -427,6 +439,66 @@ print_text_marker (j_decompress_ptr cinfo)
 /*
  * Add for LEON-mjpeg project
  */
+
+int setup_network( j_decompress_ptr cinfo)
+{
+  struct sockaddr_in server;
+  char buf[256];
+  unsigned int **addrptr;
+  int i;
+
+  cinfo->sock = socket(AF_INET,SOCK_STREAM,0);
+  if(cinfo->sock < 0){
+    perror("socket");
+    return 1;
+  }
+  server.sin_family = AF_INET;
+  server.sin_port = htons(8090);
+  server.sin_addr.s_addr = inet_addr(ip_address);
+  if(server.sin_addr.s_addr == 0xffffffff){
+    struct hostent *host;
+    host = gethostbyname(ip_address);
+    if(host == NULL){
+      printf("host not found : %s\n", ip_address);
+      return 1;
+    }
+    addrptr = (unsigned int **)host->h_addr_list;
+
+    while(*addrptr != NULL){
+      server.sin_addr.s_addr = *(*addrptr);
+      if(connect(cinfo->sock, (struct sockaddr *)&server, sizeof(server))==0){
+        break;
+      }
+      addrptr++;
+    }
+    if(*addrptr == NULL){
+      perror("connect");
+      return 1;
+    }
+  }else{
+    if(connect(cinfo->sock, (struct sockaddr *)&server, sizeof(server))!=0){
+      perror("connect");
+      return 1;
+    }
+  }
+  /*request string (HTTP) */
+  memset(buf, 0, sizeof(buf));
+  snprintf(buf, sizeof(buf), "GET /video.mjpeg HTTP/1.0\r\n\r\n");
+
+  int n = write(cinfo->sock, buf, (int)strlen(buf));
+  if(n < 0){
+    perror("write");
+    return 1;
+  }
+  n = read(cinfo->sock, buf, 66);
+  if(n<0){
+    perror("read");
+    return 1;
+  }
+}
+
+
+
 void setup_hardware(j_decompress_ptr cinfo)
 {
   JQUANT_TBL *qtbl;
@@ -668,6 +740,11 @@ main (int argc, char **argv)
   jpeg_stdio_src(&cinfo, input_file);
 
   /*LEON-mjpeg project */
+  cinfo.is_net = 0;
+  if(ip_address != NULL){
+    cinfo.is_net = 1;
+    setup_network(&cinfo);
+  }
   for(f_num=0;f_num<1000;f_num++){
 
   /* Read file header, set default decompression parameters */