#include <string.h>
#include "jpegmark.h"
+
+void usage();
+
+
#define PGMNAME PGMPREFIX "d"
#define EPGMNAME PGMPREFIX "e"
-static char *banner="\n\
+/* define color mode strings */
+char plane_int_string[] = "plane by plane",
+ line_int_string[] = "line intlv",
+ pixel_int_string[] = "sample intlv";
+
+static char banner[]="\n\
=============================================\n\
SPMG/JPEG-LS DECOMPRESSOR " JPEGLSVERSION "\n\
=============================================\n\
int lutmax; /* lutmax is either 256 or 4501 */
-
-
/* reset */
#ifndef FIXRESET
int RESET;
int highmask;
#endif
-void usage();
-
-
/* Write one row of pixel values */
inline void write_one_line(pixel* line, int cols, FILE* outfile)
{
-
int i, index;
unsigned int* maptable;
line8 = (unsigned char*)safealloc(cols);
for (i=0; i< cols; i++)
- *(line8+i)=ENDIAN8(*(line+i));
+ *(line8+i)=(unsigned char)ENDIAN8(*(line+i));
fwrite(line8, sizeof(unsigned char), cols, outfile);
-void initbuffers(int multi, int comp) {
+void initbuffers(int multi, int comp)
+{
int i;
c_cscanline[i] = c_cscanl0[i] + (LEFTMARGIN-1);
}
-void closebuffers(int multi) {
+void closebuffers(int multi)
+{
- int i;
+ int i;
fclose(in);
if (multi==0)
- fclose(out);
- else
- for (i=0;i<components;i++)
- fclose(c_out[i]);
+ fclose(out);
+ else
+ for (i=0;i<components;i++)
+ fclose(c_out[i]);
- free(pscanl0);
- free(cscanl0);
+ free(pscanl0);
+ free(cscanl0);
}
-
-
-int initialize(int argc, char *argv[]) {
- char *infilename = NULL,
- *outfilename = OUTFILE ".out",
- *c_outfilename[MAX_COMPONENTS],
+/* command line argument parsing */
+int initialize(int argc, char *argv[])
+{
+ char *infilename = NULL;
+ const char *outfilename = OUTFILE ".out";
+ char *c_outfilename[MAX_COMPONENTS],
*color_mode_string;
int i, max_samp_columns, max_samp_rows, mk, n_s,
end_of_seek=0,
int pos; /* position in the file, after the header */
for (i=0;i<MAX_COMPONENTS;i++) {
- c_outfilename[i]=malloc(strlen(OUTFILE)+20);
+ c_outfilename[i]=(char*)malloc(strlen(OUTFILE)+20);
sprintf(c_outfilename[i],"%s%d.out",OUTFILE,i+1);
}
tot_out = 0;
pixel *local_scanl0,*local_scanl1,*local_pscanline,*local_cscanline;
int MCUs_counted;
+ local_cscanline = local_pscanline = NULL;
/* Parse the parameters, initialize */
}
if (head_scan[0]->need_table)
- fprintf(msgfile,"A mapping table was used which had %i entries of %i bytes each.\n",head_scan[0]->MAXTAB, head_scan[0]->Wt);
+ fprintf(msgfile,"A mapping table was used which had %d entries of %d bytes each.\n",head_scan[0]->MAXTAB, head_scan[0]->Wt);
if (got_restart)
fprintf(msgfile,"Restart markers were found with a restart interval of %i.\n",restart_interval);
t1 = get_utime();
- fprintf(msgfile,"Total bits in: %ld Symbols out: %ld %5.3lf bps\n",
+ fprintf(msgfile,"Total bits in: %ld Symbols out: %ld %5.3f bps\n",
tot_in,tot_out,tot_in/(double)tot_out);
- fprintf(msgfile,"Time = %1.3lf secs : %1.0lf KSymbols/sec\n",t1-t0,
+ fprintf(msgfile,"Time = %1.3f secs : %1.0f KSymbols/sec\n",t1-t0,
(tot_out)/(1024*(t1-t0)));
if ( found_EOF )
void usage()
{
fprintf(stderr,"Usage: %s [flags] [infile] [outfile1 [outfile2, ...]]\n\
-DEFAULTS:\n\
-infile = %s.\n\
-outfile1 = %s for color image in a single (PPM) output file.\n\
-outfile1 = %s for monochrome image in a single (PGM) output file.\n\
-outfile[1,2,...] = %s for multiple (PGM) output files \n\
- in plane or line interleaved modes.\n",
+ DEFAULTS:\n\
+ infile = %s.\n\
+ outfile1 = %s for color image in a single (PPM) output file.\n\
+ outfile1 = %s for monochrome image in a single (PGM) output file.\n\
+ outfile[1,2,...] = %s for multiple (PGM) output files \n\
+ in plane or line interleaved modes.\n",
"locod", "specified JLS file", OUTFILE ".out",
OUTFILE "1.out",
OUTFILE "[1,2,...].out");
-fprintf(stderr,"FLAGS:\n\
-outfile2, ... : Multiple output specification for plane or line int. mode.\n\
--i<infile> : Alternate input specification, use -i- for stdin.\n\
--o<outfile> : Alternate output specification, use -o- for stdout.\n\
--P : Generate single (.ppm) output file for sample/line int. mode.\n\
-");
- fprintf(stderr,"\
--h : Print this help.\n\
-*** No spaces allowed between a flag and its argument.\n\
-");
+ fprintf(stderr,"FLAGS:\n\
+ outfile2, ... : Multiple output specification for plane or line int. mode.\n\
+ -i<infile> : Alternate input specification, use -i- for stdin.\n\
+ -o<outfile> : Alternate output specification, use -o- for stdout.\n\
+ -P : Generate single (.ppm) output file for sample/line int. mode.\n\
+ ");
+ fprintf(stderr,"\
+ -h : Print this help.\n\
+ *** No spaces allowed between a flag and its argument.\n\
+ ");
}
void bad_flag(char *s)
{
- fprintf(stderr,"Bad flag %s\n",s);
- usage();
- exit(10);
+ fprintf(stderr,"Bad flag %s\n",s);
+ usage();
+ exit(10);
}