#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).
/*
* 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;
int argn;
char * arg;
+ ip_address = NULL;
/* Set up default JPEG parameters. */
requested_fmt = DEFAULT_FMT; /* set default output file format */
outfilename = NULL;
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 */
}
}
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){