#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. */
static const char * progname; /* program name for error messages */
static char * outfilename; /* for -outfile switch */
-
+static char * ip_address;
static int f_num;
outfilename = NULL;
cinfo->err->trace_level = 0;
+ ip_address = NULL;
/* Scan command line options, adjust parameters */
for (argn = 1; argn < argc; argn++) {
/* 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 */
}
/*
* 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;
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 */