static opj_bool jp2_read_cdef(opj_jp2_t *jp2, opj_cio_t *cio, opj_jp2_box_t *box, opj_jp2_color_t *color) { opj_jp2_cdef_info_t *info; unsigned short i, n; OPJ_ARG_NOT_USED(box); OPJ_ARG_NOT_USED(jp2); /* Part 1, I.5.3.6: 'The shall be at most one Channel Definition box * inside a JP2 Header box.' */ if(color->jp2_cdef) return OPJ_FALSE; if((n = (unsigned short)cio_read(cio, 2)) == 0) return OPJ_FALSE; /* szukw000: FIXME */ info = (opj_jp2_cdef_info_t*) opj_malloc(n * sizeof(opj_jp2_cdef_info_t)); color->jp2_cdef = (opj_jp2_cdef_t*)opj_malloc(sizeof(opj_jp2_cdef_t)); color->jp2_cdef->info = info; color->jp2_cdef->n = n; for(i = 0; i < n; ++i) { info[i].cn = (unsigned short)cio_read(cio, 2); info[i].typ = (unsigned short)cio_read(cio, 2); info[i].asoc = (unsigned short)cio_read(cio, 2); } return OPJ_TRUE; }/* jp2_read_cdef() */
OPJ_SIZE_T opj_stream_default_write (void * p_buffer, OPJ_SIZE_T p_nb_bytes, void * p_user_data) { OPJ_ARG_NOT_USED(p_buffer); OPJ_ARG_NOT_USED(p_nb_bytes); OPJ_ARG_NOT_USED(p_user_data); return (OPJ_SIZE_T) -1; }
static opj_bool jp2_read_cmap(opj_jp2_t *jp2, opj_cio_t *cio, opj_jp2_box_t *box, opj_jp2_color_t *color) { opj_jp2_cmap_comp_t *cmap; unsigned short i, nr_channels; OPJ_ARG_NOT_USED(box); OPJ_ARG_NOT_USED(jp2); /* Need nr_channels: */ if(color->jp2_pclr == NULL) return OPJ_FALSE; /* Part 1, I.5.3.5: 'There shall be at most one Component Mapping box * inside a JP2 Header box' : */ if(color->jp2_pclr->cmap) return OPJ_FALSE; nr_channels = color->jp2_pclr->nr_channels; cmap = (opj_jp2_cmap_comp_t*) opj_malloc(nr_channels * sizeof(opj_jp2_cmap_comp_t)); for(i = 0; i < nr_channels; ++i) { cmap[i].cmp = (unsigned short)cio_read(cio, 2); cmap[i].mtyp = cio_read(cio, 1); cmap[i].pcol = cio_read(cio, 1); } color->jp2_pclr->cmap = cmap; return OPJ_TRUE; }/* jp2_read_cmap() */
static opj_bool jp2_read_pclr(opj_jp2_t *jp2, opj_cio_t *cio, opj_jp2_box_t *box, opj_jp2_color_t *color) { opj_jp2_pclr_t *jp2_pclr; unsigned char *channel_size, *channel_sign; unsigned int *entries; unsigned short nr_entries, nr_channels; unsigned short i, j; unsigned char uc; OPJ_ARG_NOT_USED(box); OPJ_ARG_NOT_USED(jp2); /* Part 1, I.5.3.4: 'There shall be at most one Palette box inside * a JP2 Header box' : */ if(color->jp2_pclr) return OPJ_FALSE; nr_entries = (unsigned short)cio_read(cio, 2); /* NE */ nr_channels = (unsigned short)cio_read(cio, 1);/* NPC */ entries = (unsigned int*) opj_malloc(nr_channels * nr_entries * sizeof(unsigned int)); channel_size = (unsigned char*)opj_malloc(nr_channels); channel_sign = (unsigned char*)opj_malloc(nr_channels); jp2_pclr = (opj_jp2_pclr_t*)opj_malloc(sizeof(opj_jp2_pclr_t)); jp2_pclr->channel_sign = channel_sign; jp2_pclr->channel_size = channel_size; jp2_pclr->entries = entries; jp2_pclr->nr_entries = nr_entries; jp2_pclr->nr_channels = nr_channels; jp2_pclr->cmap = NULL; color->jp2_pclr = jp2_pclr; for(i = 0; i < nr_channels; ++i) { uc = cio_read(cio, 1); /* Bi */ channel_size[i] = (uc & 0x7f) + 1; channel_sign[i] = (uc & 0x80)?1:0; } for(j = 0; j < nr_entries; ++j) { for(i = 0; i < nr_channels; ++i) { /* Cji */ *entries++ = cio_read(cio, (channel_size[i]+7)>>3); } } return OPJ_TRUE; }/* jp2_read_pclr() */
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { OPJ_ARG_NOT_USED(lpReserved); OPJ_ARG_NOT_USED(hModule); switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH : break; case DLL_PROCESS_DETACH : break; case DLL_THREAD_ATTACH : case DLL_THREAD_DETACH : break; } return TRUE; }
OPJ_BOOL opj_stream_read_seek (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, opj_event_mgr_t * p_event_mgr) { OPJ_ARG_NOT_USED(p_event_mgr); p_stream->m_current_data = p_stream->m_stored_data; p_stream->m_bytes_in_buffer = 0; if( !(p_stream->m_seek_fn(p_size,p_stream->m_user_data)) ) { p_stream->m_status |= opj_stream_e_end; return OPJ_FALSE; } else { /* reset stream status */ p_stream->m_status &= (~opj_stream_e_end); p_stream->m_byte_offset = p_size; } return OPJ_TRUE; }
static void t1_dec_clnpass_step_partial( opj_t1_t *t1, flag_t *flagsp, int *datap, int orient, int oneplushalf) { int v, flag; opj_mqc_t *mqc = t1->mqc; /* MQC component */ OPJ_ARG_NOT_USED(orient); flag = *flagsp; mqc_setcurctx(mqc, t1_getctxno_sc(flag)); v = mqc_decode(mqc) ^ t1_getspb(flag); *datap = v ? -oneplushalf : oneplushalf; t1_updateflags(flagsp, v, t1->flags_stride); *flagsp &= ~T1_VISIT; } /* VSC and BYPASS by Antonin */
static INLINE void t1_dec_sigpass_step_raw( opj_t1_t *t1, flag_t *flagsp, int *datap, int orient, int oneplushalf, int vsc) { int v, flag; opj_raw_t *raw = t1->raw; /* RAW component */ OPJ_ARG_NOT_USED(orient); flag = vsc ? ((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S))) : (*flagsp); if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) { if (raw_decode(raw)) { v = raw_decode(raw); /* ESSAI */ *datap = v ? -oneplushalf : oneplushalf; t1_updateflags(flagsp, v, t1->flags_stride); } *flagsp |= T1_VISIT; } } /* VSC and BYPASS by Antonin */
/** * Default callback function. * Do nothing. */ static void opj_default_callback (const char *msg, void *client_data) { OPJ_ARG_NOT_USED(msg); OPJ_ARG_NOT_USED(client_data); }
OPJ_BOOL opj_stream_default_seek (OPJ_OFF_T p_nb_bytes, void * p_user_data) { OPJ_ARG_NOT_USED(p_nb_bytes); OPJ_ARG_NOT_USED(p_user_data); return OPJ_FALSE; }
OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes, void * p_user_data) { OPJ_ARG_NOT_USED(p_nb_bytes); OPJ_ARG_NOT_USED(p_user_data); return (OPJ_OFF_T) -1; }
/* -------------------------------------------------------------------------- */ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,img_fol_t *img_fol, char *indexfilename) { /* parse the command line */ int totlen, c; opj_option_t long_option[]={ {"ImgDir",REQ_ARG, NULL ,'y'}, }; const char optlist[] = "i:o:h"; OPJ_ARG_NOT_USED(indexfilename); totlen=sizeof(long_option); img_fol->set_out_format = 0; do { c = opj_getopt_long(argc, argv,optlist,long_option,totlen); if (c == -1) break; switch (c) { case 'i': /* input file */ { char *infile = opj_optarg; parameters->decod_format = get_file_format(infile); switch(parameters->decod_format) { case J2K_CFMT: case JP2_CFMT: case JPT_CFMT: break; default: fprintf(stderr, "!! Unrecognized format for infile : %s [accept only *.j2k, *.jp2, *.jpc or *.jpt] !!\n\n", infile); return 1; } strncpy(parameters->infile, infile, sizeof(parameters->infile)-1); } break; /* ------------------------------------------------------ */ case 'o': /* output file */ { char *outfile = opj_optarg; strncpy(parameters->outfile, outfile, sizeof(parameters->outfile)-1); } break; /* ----------------------------------------------------- */ case 'h': /* display an help description */ decode_help_display(); return 1; /* ------------------------------------------------------ */ case 'y': /* Image Directory path */ { img_fol->imgdirpath = (char*)malloc(strlen(opj_optarg) + 1); strcpy(img_fol->imgdirpath,opj_optarg); img_fol->set_imgdir=1; } break; /* ----------------------------------------------------- */ default: fprintf(stderr,"WARNING -> this option is not valid \"-%c %s\"\n",c, opj_optarg); break; } }while(c != -1); /* check for possible errors */ if(img_fol->set_imgdir==1){ if(!(parameters->infile[0]==0)){ fprintf(stderr, "Error: options -ImgDir and -i cannot be used together !!\n"); return 1; } if(img_fol->set_out_format == 0){ fprintf(stderr, "Error: When -ImgDir is used, -OutFor <FORMAT> must be used !!\n"); fprintf(stderr, "Only one format allowed! Valid format PGM, PPM, PNM, PGX, BMP, TIF, RAW and TGA!!\n"); return 1; } if(!((parameters->outfile[0] == 0))){ fprintf(stderr, "Error: options -ImgDir and -o cannot be used together !!\n"); return 1; } }else{ if((parameters->infile[0] == 0) ) { fprintf(stderr, "Example: %s -i image.j2k\n",argv[0]); fprintf(stderr, " Try: %s -h\n",argv[0]); return 1; } } return 0; }