summaryrefslogtreecommitdiff
path: root/codec/j2k_to_image.c
diff options
context:
space:
mode:
authorAntonin Descampe <antonin@gmail.com>2004-07-20 05:40:55 +0000
committerAntonin Descampe <antonin@gmail.com>2004-07-20 05:40:55 +0000
commitd38080aa00f777a5e7e6788941b945b52f1b9219 (patch)
tree0fcf12924bd3a1993bbbe66abfa15cfcfb19882a /codec/j2k_to_image.c
parentaa6c1d28ad5525f281fcc34961adcbde43090611 (diff)
* Bug fixed in jpt decoding
* Bug fixed in pcrl progression order (profile-1 compliance) * Change in tcd_dump
Diffstat (limited to 'codec/j2k_to_image.c')
-rw-r--r--codec/j2k_to_image.c72
1 files changed, 40 insertions, 32 deletions
diff --git a/codec/j2k_to_image.c b/codec/j2k_to_image.c
index 4a2ab0c3..53104736 100644
--- a/codec/j2k_to_image.c
+++ b/codec/j2k_to_image.c
@@ -48,14 +48,13 @@ int main(int argc, char **argv)
j2k_cp_t cp;
int w, wr, wrr, h, hr, hrr, max;
- int i, image_type = -1, compno, pad,j;
+ int i, image_type = -1, compno, pad, j;
int adjust;
- jp2_struct_t * jp2_struct;
+ jp2_struct_t *jp2_struct;
if (argc < 3) {
fprintf(stderr,
- "usage: %s j2k-file image-file [-reduce n]\n",
- argv[0]);
+ "usage: %s j2k-file image-file [-reduce n]\n", argv[0]);
return 1;
}
@@ -141,40 +140,48 @@ int main(int argc, char **argv)
S1 = *src_name;
/* J2K format */
- if ((S1 == 'j' && S2 == '2' && S3 == 'k') || (S1 == 'J' && S2 == '2' && S3 == 'K')) {
-
+ if ((S1 == 'j' && S2 == '2' && S3 == 'k')
+ || (S1 == 'J' && S2 == '2' && S3 == 'K') || (S1 == 'j' && S2 == '2'
+ && S3 == 'c')
+ || (S1 == 'J' && S2 == '2' && S3 == 'C')) {
if (!j2k_decode(src, len, &img, &cp)) {
fprintf(stderr, "j2k_to_image: failed to decode image!\n");
return 1;
}
}
+
/* JP2 format */
- else if ((S1 == 'j' && S2 == 'p' && S3 == '2') || (S1 == 'J' && S2 == 'P' && S3 == '2')) {
+ else if ((S1 == 'j' && S2 == 'p' && S3 == '2')
+ || (S1 == 'J' && S2 == 'P' && S3 == '2')) {
jp2_struct = (jp2_struct_t *) malloc(sizeof(jp2_struct_t));
- jp2_struct->image=&img;
+ jp2_struct->image = &img;
- if (jp2_decode(src,len,jp2_struct,&cp)) {
+ if (jp2_decode(src, len, jp2_struct, &cp)) {
fprintf(stderr, "j2k_to_image: failed to decode image!\n");
return 1;
}
/* Insert code here if you want to create actions on jp2_struct before deleting it */
free(jp2_struct);
}
+
/* JPT format */
- else if ((S1 == 'j' && S2 == 'p' && S3 == 't') || (S1 == 'J' && S2 == 'P' && S3 == 'T')){
- if (!j2k_decode_jpt_stream(src, len, &img, &cp)) {
- fprintf(stderr, "j2k_to_image: failed to decode image!\n");
- return 1;
- }
- else {
- fprintf(stderr,
- "j2k_to_image : Unknown format image *.%c%c%c [only *.j2k, *.jp2 or *.jpt]!! \n",
- S1, S2, S3);
+ else if ((S1 == 'j' && S2 == 'p' && S3 == 't')
+ || (S1 == 'J' && S2 == 'P' && S3 == 'T')) {
+ if (!j2k_decode_jpt_stream(src, len, &img, &cp)) {
+ fprintf(stderr, "j2k_to_image: failed to decode image!\n");
return 1;
}
}
+ /* otherwise : error */
+ else {
+ fprintf(stderr,
+ "j2k_to_image : Unknown format image *.%c%c%c [only *.j2k, *.jp2, *.jpc or *.jpt]!! \n",
+ S1, S2, S3);
+ return 1;
+ }
+
free(src);
/* ------------------ CREATE OUT IMAGE WITH THE RIGHT FORMAT ----------------------- */
@@ -305,43 +312,44 @@ int main(int argc, char **argv)
j2k_comp_t *comp = &img.comps[compno];
char name[256];
- int nbytes=0;
+ int nbytes = 0;
//if (img.numcomps > 1)
- sprintf(name, "%s-%d.pgx", argv[2], compno);
+ sprintf(name, "%s-%d.pgx", argv[2], compno);
//else
- //sprintf(name, "%s.pgx", argv[2]);
+ //sprintf(name, "%s.pgx", argv[2]);
f = fopen(name, "wb");
// w = ceildiv(img.x1 - img.x0, comp->dx);
// wr = ceildiv(int_ceildivpow2(img.x1 - img.x0,img.factor), comp->dx);
w = img.comps[compno].w;
- wr = int_ceildivpow2(img.comps[compno].w,
- img.comps[compno].factor);
+ wr = int_ceildivpow2(img.comps[compno].w, img.comps[compno].factor);
// h = ceildiv(img.y1 - img.y0, comp->dy);
// hr = ceildiv(int_ceildivpow2(img.y1 - img.y0,img.factor), comp->dy);
h = img.comps[compno].h;
- hr = int_ceildivpow2(img.comps[compno].h,
- img.comps[compno].factor);
+ hr = int_ceildivpow2(img.comps[compno].h, img.comps[compno].factor);
fprintf(f, "PG ML %c %d %d %d\n", comp->sgnd ? '-' : '+',
comp->prec, wr, hr);
- if (comp->prec <= 8) nbytes=1;
+ if (comp->prec <= 8)
+ nbytes = 1;
- else if (comp->prec <= 16) nbytes=2;
+ else if (comp->prec <= 16)
+ nbytes = 2;
- else nbytes=4;
+ else
+ nbytes = 4;
for (i = 0; i < wr * hr; i++) {
int v = img.comps[compno].data[i / wr * w + i % wr];
- for (j=nbytes-1 ; j>=0 ; j--) {
+ for (j = nbytes - 1; j >= 0; j--) {
- char byte=(char)(v>>(j*8));
+ char byte = (char) (v >> (j * 8));
- fwrite(&byte, 1, 1, f);
+ fwrite(&byte, 1, 1, f);
}
}
@@ -530,7 +538,7 @@ int main(int argc, char **argv)
// fprintf(f, "%c", img.comps[0].data[w * h - ((i) / (w) + 1) * w + (i) % (w)]);
fprintf(f, "%c",
img.comps[0].data[w * hr - ((i) / (wr) + 1) * w +
- (i) % (wr)]);
+ (i) % (wr)]);
/*if (((i + 1) % w == 0 && w % 2))
fprintf(f, "%c", 0); */
if ((i + 1) % wr == 0) {