OSDN Git Service

tmporary works
[fpga-leon-mjpeg/leon-mjpeg.git] / snapgear-2.6-p42 / user / jpeg-6b / dmjpeg.c
index 4621f1f..a008f95 100644 (file)
@@ -62,9 +62,18 @@ static const char * const cdjpeg_message_table[] = {
 #include <sys/ioctl.h>
 #include <sys/time.h>
 #include "kmjpeg.h"
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+
+static char * ip_address;
 static int f_num=0;
 static int markflag=0;
 
+
 /*
  * This list defines the known output image formats
  * (not all of which need be supported by a given version).
@@ -141,6 +150,66 @@ static char * outfilename; /* for -outfile switch */
 /*
  * 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)
 {
   //  int xres,yres,vbpp,line_len,yfac;
@@ -408,6 +477,7 @@ parse_switches (j_decompress_ptr cinfo, int argc, char **argv,
   int argn;
   char * arg;
 
+  ip_address = NULL;
   /* Set up default JPEG parameters. */
   requested_fmt = DEFAULT_FMT; /* set default output file format */
   outfilename = NULL;
@@ -577,9 +647,15 @@ parse_switches (j_decompress_ptr cinfo, int argc, char **argv,
        usage();
       if (sscanf(argv[argn], "%x", &xval) != 1)
        usage();
-      cinfo->fb_start_add = xval;
-
-    } else {
+      cinfo->fb_start_add = xval; 
+    } else if(keymatch(arg, "ip", 1)) {
+      if (++argn >= argc){       /* advance to next argument */
+        usage();
+      }else{
+      ip_address = argv[argn];
+      }
+                               /* save it away for later use */
+    }else {
       usage();                 /* bogus switch */
     }
   }
@@ -778,6 +854,11 @@ main (int argc, char **argv)
   jpeg_stdio_src(&cinfo, input_file);
 
  /*V1 LEON-mjpeg project */
+  cinfo.is_net = 0;
+  if(ip_address != NULL){
+    cinfo.is_net = 1;
+    setup_network(&cinfo);
+  }
   for(f_num=0;f_num<110;f_num++){
 
   if(f_num == 50){