From ff1f022d47ae4f53d1844f0472c1660cfc8c9067 Mon Sep 17 00:00:00 2001 From: Kaori Hagihara Date: Wed, 16 Nov 2011 16:54:53 +0000 Subject: [PATCH] [1.5][JPIP] new feature to target JP2 files from www (libcurl required) --- applications/jpip/CHANGES | 1 + applications/jpip/README | 11 ++- applications/jpip/doc/jpip_architect.png | Bin 63041 -> 62577 bytes .../jpip/libopenjpip/cachemodel_manager.c | 2 +- .../jpip/libopenjpip/channel_manager.c | 2 +- .../jpip/libopenjpip/target_manager.c | 87 ++++++++++++++---- .../jpip/libopenjpip/target_manager.h | 7 +- applications/jpip/mainpage.h | 1 + applications/jpip/util/Makefile.nix | 4 +- applications/jpip/util/opj_server.c | 12 ++- 10 files changed, 90 insertions(+), 37 deletions(-) diff --git a/applications/jpip/CHANGES b/applications/jpip/CHANGES index 71fe35f7..4ab53e90 100644 --- a/applications/jpip/CHANGES +++ b/applications/jpip/CHANGES @@ -7,6 +7,7 @@ What's New for OpenJPIP November 16, 2011 * [kaori] fixed Region of Interest option, and memory leak of opj_dec_server ++ [kaori] new feature to target JP2 files from www (libcurl required) November 8, 2011 ! [kaori] updated main page of doxygen diff --git a/applications/jpip/README b/applications/jpip/README index 9842b936..c6bb3028 100644 --- a/applications/jpip/README +++ b/applications/jpip/README @@ -1,5 +1,5 @@ ======================================================================== - OpenJPIP software 2.0 ReadMe + OpenJPIP software 2.1 ReadMe OpenJPEG: http://www.openjpeg.org @@ -26,13 +26,14 @@ OpenJPIP software is an implementation of JPEG 2000 Part9: Interactivity tools, ( For more info about JPIP, check the website: http://www.jpeg.org/jpeg2000/j2kpart9.html) The current implementation uses some results from the 2KAN project (http://www.2kan.org). -First Version 2.0 covers: +Version 2.1 covers: - JPT-stream (Tile) and JPP-stream (Precinct) media types - Session, channels, cache model managements - JPIP over HTTP - Indexing JPEG 2000 files - Embedding XML formatted metadata - Region Of Interest (ROI) requests + - Access to JP2 files with their URL ---------- 2. License @@ -46,8 +47,8 @@ Neither the author, nor the university accept any responsibility for any kind of 3. System requirements ---------- - - OpenJPEG library (currently assumes it is installed on the system => will not use the one built higher in the directory structure) - FastCGI development kit (C libraries) at server (http://www.fastcgi.com) + - libcURL library - Java application launcher at client - Xerces2 java XML parser on the client for accessing embedded image metadata (http://xerces.apache.org/xerces2-j) @@ -103,10 +104,10 @@ Client: % ../opj_dec_server 2. Open image viewers (as many as needed) - % java -jar opj_viewer.jar http://hostname/myFCGI JP2_filename.jp2 [stateless/session] [jptstream/jppstream] + % java -jar opj_viewer.jar http://hostname/myFCGI path/filename.jp2 [stateless/session] [jptstream/jppstream] ( The arguments - http://hostname/myFCGI is the HTTP server URI (myFCGI refers to opj_server by the server setting) - - JP2_filename.jp2 is the name of a JP2 file available on the server. + - path/filename.jp2 is the server local path or URL of a JP2 file - request type stateless for no caching, session (default) for caching - return media type, JPT-stream tile based stream, or JPP-stream (default) precinct based stream Image viewer GUI instructions: diff --git a/applications/jpip/doc/jpip_architect.png b/applications/jpip/doc/jpip_architect.png index 035a4b65e7a7446b649de57c2aedd8f0d6a772c4..5375bf91f1305181ddcddcd0ab2fe63b9a2446ee 100644 GIT binary patch literal 62577 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 literal 63041 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 diff --git a/applications/jpip/libopenjpip/cachemodel_manager.c b/applications/jpip/libopenjpip/cachemodel_manager.c index ba5a3ec1..4c2d3a7a 100644 --- a/applications/jpip/libopenjpip/cachemodel_manager.c +++ b/applications/jpip/libopenjpip/cachemodel_manager.c @@ -118,7 +118,7 @@ void print_cachemodel( cachemodel_param_t cachemodel) target = cachemodel.target; - fprintf( logstream, "target: %s\n", target->filename); + fprintf( logstream, "target: %s\n", target->targetname); fprintf( logstream, "\t main header model: %d\n", cachemodel.mhead_model); fprintf( logstream, "\t tile part model:\n"); diff --git a/applications/jpip/libopenjpip/channel_manager.c b/applications/jpip/libopenjpip/channel_manager.c index 3523161b..e4727f2b 100644 --- a/applications/jpip/libopenjpip/channel_manager.c +++ b/applications/jpip/libopenjpip/channel_manager.c @@ -139,7 +139,7 @@ void print_allchannel( channellist_param_t *channellist) ptr = channellist->first; while( ptr != NULL){ - fprintf( logstream,"channel-ID=%s \t target=%s\n", ptr->cid, ptr->cachemodel->target->filename); + fprintf( logstream,"channel-ID=%s \t target=%s\n", ptr->cid, ptr->cachemodel->target->targetname); ptr=ptr->next; } } diff --git a/applications/jpip/libopenjpip/target_manager.c b/applications/jpip/libopenjpip/target_manager.c index 813c1a99..56f23a6f 100644 --- a/applications/jpip/libopenjpip/target_manager.c +++ b/applications/jpip/libopenjpip/target_manager.c @@ -36,6 +36,7 @@ #include #include #include +#include #include "target_manager.h" #ifdef SERVER @@ -64,24 +65,26 @@ targetlist_param_t * gene_targetlist() /** * open jp2 format image file * - * @param[in] filename file name (.jp2) - * @return file descriptor + * @param[in] filepath file name (.jp2) + * @param[out] tmpfname new file name if filepath is a URL + * @return file descriptor */ -int open_jp2file( char filename[]); +int open_jp2file( char filepath[], char tmpfname[]); target_param_t * gene_target( targetlist_param_t *targetlist, char *targetpath) { target_param_t *target; int fd; index_param_t *jp2idx; + char tmpfname[MAX_LENOFTID]; static int last_csn = 0; - + if( targetpath[0]=='\0'){ fprintf( FCGI_stderr, "Error: exception, no targetpath in gene_target()\n"); return NULL; } - if((fd = open_jp2file( targetpath)) == -1){ + if((fd = open_jp2file( targetpath, tmpfname)) == -1){ fprintf( FCGI_stdout, "Status: 404\r\n"); return NULL; } @@ -93,8 +96,12 @@ target_param_t * gene_target( targetlist_param_t *targetlist, char *targetpath) target = (target_param_t *)malloc( sizeof(target_param_t)); snprintf( target->tid, MAX_LENOFTID, "%x-%x", (unsigned int)time(NULL), (unsigned int)rand()); - target->filename = strdup( targetpath); + target->targetname = strdup( targetpath); target->fd = fd; + if( tmpfname[0]) + target->tmpfname = strdup( tmpfname); + else + target->tmpfname = NULL; target->csn = last_csn++; target->codeidx = jp2idx; target->num_of_use = 0; @@ -129,15 +136,20 @@ void unrefer_target( target_param_t *target) void delete_target( target_param_t **target) { close( (*target)->fd); - + + if( (*target)->tmpfname){ + fprintf( FCGI_stderr, "Temporal file %s is deleted\n", (*target)->tmpfname); + remove( (*target)->tmpfname); + } + if( (*target)->codeidx) delete_index ( &(*target)->codeidx); - + #ifndef SERVER - fprintf( logstream, "local log: target: %s deleted\n", (*target)->filename); + fprintf( logstream, "local log: target: %s deleted\n", (*target)->targetname); #endif - free( (*target)->filename); + free( (*target)->targetname); free(*target); } @@ -180,7 +192,7 @@ void print_target( target_param_t *target) fprintf( logstream, "target:\n"); fprintf( logstream, "\t tid=%s\n", target->tid); fprintf( logstream, "\t csn=%d\n", target->csn); - fprintf( logstream, "\t target=%s\n\n", target->filename); + fprintf( logstream, "\t target=%s\n\n", target->targetname); } void print_alltarget( targetlist_param_t *targetlist) @@ -202,7 +214,7 @@ target_param_t * search_target( char targetname[], targetlist_param_t *targetlis while( foundtarget != NULL){ - if( strcmp( targetname, foundtarget->filename) == 0) + if( strcmp( targetname, foundtarget->targetname) == 0) return foundtarget; foundtarget = foundtarget->next; @@ -227,27 +239,52 @@ target_param_t * search_targetBytid( char tid[], targetlist_param_t *targetlist) return NULL; } -int open_jp2file( char filename[]) +static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream); + +int open_jp2file( char filepath[], char tmpfname[]) { int fd; char *data; - - if( (fd = open( filename, O_RDONLY)) == -1){ - fprintf( FCGI_stdout, "Reason: Target %s not found\r\n", filename); - return -1; + CURL *curl_handle; + + // download remote target file to local storage + if( strncmp( filepath, "http://", 7) == 0){ + curl_handle = curl_easy_init(); + curl_easy_setopt(curl_handle, CURLOPT_URL, filepath); + curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L); + curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data); + + snprintf( tmpfname, MAX_LENOFTID, "%x-%x.jp2", (unsigned int)time(NULL), (unsigned int)rand()); + fprintf( FCGI_stderr, "%s is downloaded to a temporal new file %s\n", filepath, tmpfname); + if( (fd = open( tmpfname, O_RDWR|O_CREAT|O_EXCL, S_IRWXU)) == -1){ + fprintf( FCGI_stdout, "Reason: File open error %s\r\n", tmpfname); + curl_easy_cleanup(curl_handle); + return -1; + } + curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, &fd); + curl_easy_perform(curl_handle); + curl_easy_cleanup(curl_handle); + } + else{ + tmpfname[0] = 0; + if( (fd = open( filepath, O_RDONLY)) == -1){ + fprintf( FCGI_stdout, "Reason: Target %s not found\r\n", filepath); + return -1; + } } // Check resource is a JP family file. if( lseek( fd, 0, SEEK_SET)==-1){ close(fd); - fprintf( FCGI_stdout, "Reason: Target %s broken (lseek error)\r\n", filename); + fprintf( FCGI_stdout, "Reason: Target %s broken (lseek error)\r\n", filepath); return -1; } data = (char *)malloc( 12); // size of header + if( read( fd, data, 12) != 12){ free( data); close(fd); - fprintf( FCGI_stdout, "Reason: Target %s broken (read error)\r\n", filename); + fprintf( FCGI_stdout, "Reason: Target %s broken (read error)\r\n", filepath); return -1; } @@ -255,9 +292,19 @@ int open_jp2file( char filename[]) *(data + 3) != 12 || strncmp (data + 4, "jP \r\n\x87\n", 8)){ free( data); close(fd); - fprintf( FCGI_stdout, "Reason: No JPEG 2000 Signature box in target %s\r\n", filename); + fprintf( FCGI_stdout, "Reason: No JPEG 2000 Signature box in target %s\r\n", filepath); return -1; } + free( data); + return fd; } + +static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream) +{ + int *fd = (int *)stream; + int written = write( *fd, ptr, size*nmemb); + + return written; +} diff --git a/applications/jpip/libopenjpip/target_manager.h b/applications/jpip/libopenjpip/target_manager.h index a5469e79..f51b6a41 100644 --- a/applications/jpip/libopenjpip/target_manager.h +++ b/applications/jpip/libopenjpip/target_manager.h @@ -40,8 +40,9 @@ //! target parameters typedef struct target_param{ char tid[MAX_LENOFTID]; //!< taregt identifier - char *filename; //!< file name + char *targetname; //!< local file path or URL int fd; //!< file descriptor + char *tmpfname; //!< temporal file name to download a remote target file int csn; //!< codestream number index_param_t *codeidx; //!< index information of codestream int num_of_use; //!< numbers of sessions refering to this target @@ -134,9 +135,9 @@ void print_alltarget( targetlist_param_t *targetlist); /** - * search a target by filename + * search a target by target name * - * @param[in] targetname target filename + * @param[in] targetname target name * @param[in] targetlist target list pointer * @return found target pointer */ diff --git a/applications/jpip/mainpage.h b/applications/jpip/mainpage.h index a3c4e0ac..1ac921e7 100644 --- a/applications/jpip/mainpage.h +++ b/applications/jpip/mainpage.h @@ -52,6 +52,7 @@ * \section reqlibs Required libraries * - OpenJPEG library * - FastCGI development kit (C libraries) at server (http://www.fastcgi.com) + * - libcURL library * * We tested this software with a virtual server running on the same Linux machine as the clients. * diff --git a/applications/jpip/util/Makefile.nix b/applications/jpip/util/Makefile.nix index 532b743d..418c5da3 100644 --- a/applications/jpip/util/Makefile.nix +++ b/applications/jpip/util/Makefile.nix @@ -2,13 +2,13 @@ JPIPLIBDIR = ../libopenjpip SLIBFNAME = $(JPIPLIBDIR)/libopenjpip_server.a SCFLAGS = -O3 -Wall -m32 -I$(JPIPLIBDIR) -DSERVER -DQUIT_SIGNAL=\"quitJPIP\" -SLDFLAGS = -L$(JPIPLIBDIR) -lm -lfcgi -lopenjpip_server +SLDFLAGS = -L$(JPIPLIBDIR) -lm -lfcgi -lcurl -lopenjpip_server J2KINCDIR = ../../../libopenjpeg J2KLIBDIR = $(J2KINCDIR)/.libs LIBFNAME = $(JPIPLIBDIR)/libopenjpip_local.a $(J2KLIBDIR)/libopenjpeg.a CFLAGS = -O3 -Wall -I$(JPIPLIBDIR) -LDFLAGS = -L$(JPIPLIBDIR) -L$(J2KLIBDIR) -lm -lopenjpip_local +LDFLAGS = -L$(JPIPLIBDIR) -L$(J2KLIBDIR) -lm -lcurl -lopenjpip_local ALL = opj_server opj_dec_server jpip_to_jp2 jpip_to_j2k test_index addXMLinJP2 diff --git a/applications/jpip/util/opj_server.c b/applications/jpip/util/opj_server.c index a2344c8b..5b435cfb 100644 --- a/applications/jpip/util/opj_server.c +++ b/applications/jpip/util/opj_server.c @@ -83,17 +83,19 @@ int main(void) qr = parse_querystring( query_string); - if( !(parse_status = process_JPIPrequest( server_record, qr))) - fprintf( FCGI_stderr, "Error: JPIP request failed\n"); - + parse_status = process_JPIPrequest( server_record, qr); + #ifndef SERVER local_log( true, true, parse_status, false, qr, server_record); #endif fprintf( FCGI_stdout, "\r\n"); - send_responsedata( qr); - + if( parse_status) + send_responsedata( qr); + else + fprintf( FCGI_stderr, "Error: JPIP request failed\n"); + end_QRprocess( server_record, &qr); }