Fixed issues with generation of SOP marker.
This commit is contained in:
parent
a6ba04cdf4
commit
7e40a9475a
|
@ -5,6 +5,9 @@ What's New for OpenJPEG
|
||||||
! : changed
|
! : changed
|
||||||
+ : added
|
+ : added
|
||||||
|
|
||||||
|
September 19, 2007
|
||||||
|
* [Parvatha] Fixed issues with generation of SOP marker.
|
||||||
|
|
||||||
September 18, 2007
|
September 18, 2007
|
||||||
* [Parvatha] Fixed issues with Reading and Writing TIF images in convert.c to avoid segmentation fault.
|
* [Parvatha] Fixed issues with Reading and Writing TIF images in convert.c to avoid segmentation fault.
|
||||||
* [Parvatha] Fixed issues relating to using user specified rates for CINEMA option for multiple images.
|
* [Parvatha] Fixed issues relating to using user specified rates for CINEMA option for multiple images.
|
||||||
|
|
|
@ -1423,7 +1423,7 @@ typedef struct tiff_infoheader{
|
||||||
}tiff_infoheader_t;
|
}tiff_infoheader_t;
|
||||||
|
|
||||||
int imagetotif(opj_image_t * image, const char *outfile) {
|
int imagetotif(opj_image_t * image, const char *outfile) {
|
||||||
int width, height, imgsize;
|
int width, height, imgsize ;
|
||||||
int bps,index,adjust = 0;
|
int bps,index,adjust = 0;
|
||||||
int last_i=0;
|
int last_i=0;
|
||||||
TIFF *tif;
|
TIFF *tif;
|
||||||
|
@ -1646,7 +1646,8 @@ int imagetotif(opj_image_t * image, const char *outfile) {
|
||||||
}
|
}
|
||||||
|
|
||||||
width = image->comps[0].w;
|
width = image->comps[0].w;
|
||||||
height= image->comps[0].h;
|
height = image->comps[0].h;
|
||||||
|
imgsize = image->comps[0].w * image->comps[0].h ;
|
||||||
bps = image->comps[0].prec;
|
bps = image->comps[0].prec;
|
||||||
|
|
||||||
/* Set tags */
|
/* Set tags */
|
||||||
|
@ -1670,38 +1671,47 @@ int imagetotif(opj_image_t * image, const char *outfile) {
|
||||||
dat8 = buf;
|
dat8 = buf;
|
||||||
if (image->comps[0].prec == 8){
|
if (image->comps[0].prec == 8){
|
||||||
for (i=0; i<TIFFStripSize(tif); i+=1) { // 8 bits per pixel
|
for (i=0; i<TIFFStripSize(tif); i+=1) { // 8 bits per pixel
|
||||||
int r = 0;
|
if(index < imgsize){
|
||||||
r = image->comps[0].data[index];
|
int r = 0;
|
||||||
if (image->comps[0].sgnd){
|
r = image->comps[0].data[index];
|
||||||
r += adjust;
|
if (image->comps[0].sgnd){
|
||||||
}
|
r += adjust;
|
||||||
dat8[i+0] = r;
|
}
|
||||||
index++;
|
dat8[i+0] = r;
|
||||||
|
index++;
|
||||||
|
}else
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}else if (image->comps[0].prec == 12){
|
}else if (image->comps[0].prec == 12){
|
||||||
for (i = 0; i<TIFFStripSize(tif); i+=3) { // 12 bits per pixel
|
for (i = 0; i<TIFFStripSize(tif); i+=3) { // 12 bits per pixel
|
||||||
int r = 0, r1 = 0;
|
if(index < imgsize){
|
||||||
r = image->comps[0].data[index];
|
int r = 0, r1 = 0;
|
||||||
r1 = image->comps[0].data[index+1];
|
r = image->comps[0].data[index];
|
||||||
if (image->comps[0].sgnd){
|
r1 = image->comps[0].data[index+1];
|
||||||
r += adjust;
|
if (image->comps[0].sgnd){
|
||||||
r1 += adjust;
|
r += adjust;
|
||||||
}
|
r1 += adjust;
|
||||||
dat8[i+0] = (r >> 4);
|
}
|
||||||
dat8[i+1] = ((r & 0x0f) << 4 )|((r1 >> 8)& 0x0f);
|
dat8[i+0] = (r >> 4);
|
||||||
dat8[i+2] = r1 ;
|
dat8[i+1] = ((r & 0x0f) << 4 )|((r1 >> 8)& 0x0f);
|
||||||
index+=2;
|
dat8[i+2] = r1 ;
|
||||||
|
index+=2;
|
||||||
|
}else
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}else if (image->comps[0].prec == 16){
|
}else if (image->comps[0].prec == 16){
|
||||||
for (i=0; i<TIFFStripSize(tif); i+=2) { // 16 bits per pixel
|
for (i=0; i<TIFFStripSize(tif); i+=2) { // 16 bits per pixel
|
||||||
int r = 0;
|
if(index < imgsize){
|
||||||
r = image->comps[0].data[index];
|
int r = 0;
|
||||||
if (image->comps[0].sgnd){
|
r = image->comps[0].data[index];
|
||||||
r += adjust;
|
if (image->comps[0].sgnd){
|
||||||
}
|
r += adjust;
|
||||||
dat8[i+0] = r;
|
}
|
||||||
dat8[i+1] = r >> 8;
|
dat8[i+0] = r;
|
||||||
index++;
|
dat8[i+1] = r >> 8;
|
||||||
|
index++;
|
||||||
|
}else
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
fprintf(stderr,"Bits=%d, Only 8,12,16 bits implemented\n",image->comps[0].prec);
|
fprintf(stderr,"Bits=%d, Only 8,12,16 bits implemented\n",image->comps[0].prec);
|
||||||
|
@ -1733,7 +1743,7 @@ opj_image_t* tiftoimage(const char *filename, opj_cparameters_t *parameters)
|
||||||
OPJ_COLOR_SPACE color_space;
|
OPJ_COLOR_SPACE color_space;
|
||||||
opj_image_cmptparm_t cmptparm[3];
|
opj_image_cmptparm_t cmptparm[3];
|
||||||
opj_image_t * image = NULL;
|
opj_image_t * image = NULL;
|
||||||
int imgsize;
|
int imgsize = 0;
|
||||||
|
|
||||||
tif = TIFFOpen(filename, "r");
|
tif = TIFFOpen(filename, "r");
|
||||||
|
|
||||||
|
@ -1889,6 +1899,7 @@ opj_image_t* tiftoimage(const char *filename, opj_cparameters_t *parameters)
|
||||||
strip_size = 0;
|
strip_size = 0;
|
||||||
strip_size = TIFFStripSize(tif);
|
strip_size = TIFFStripSize(tif);
|
||||||
index = 0;
|
index = 0;
|
||||||
|
imgsize = image->comps[0].w * image->comps[0].h ;
|
||||||
/* Read the Image components*/
|
/* Read the Image components*/
|
||||||
for (strip = 0; strip < TIFFNumberOfStrips(tif); strip++) {
|
for (strip = 0; strip < TIFFNumberOfStrips(tif); strip++) {
|
||||||
unsigned char *dat8;
|
unsigned char *dat8;
|
||||||
|
|
|
@ -1444,8 +1444,10 @@ static void j2k_write_sod(opj_j2k_t *j2k, void *tile_coder) {
|
||||||
for (layno = 0; layno < tcp->numlayers; layno++) {
|
for (layno = 0; layno < tcp->numlayers; layno++) {
|
||||||
tcp->rates[layno] -= tcp->rates[layno] ? (j2k->sod_start / (cp->th * cp->tw)) : 0;
|
tcp->rates[layno] -= tcp->rates[layno] ? (j2k->sod_start / (cp->th * cp->tw)) : 0;
|
||||||
}
|
}
|
||||||
if(cstr_info && (j2k->cur_tp_num == 0)) {
|
if(j2k->cur_tp_num == 0){
|
||||||
cstr_info->packno = 0;
|
tcd->tcd_image->tiles->packno = 0;
|
||||||
|
if(cstr_info)
|
||||||
|
cstr_info->packno = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
l = tcd_encode_tile(tcd, j2k->curtileno, cio_getbp(cio), cio_numbytesleft(cio) - 2, cstr_info);
|
l = tcd_encode_tile(tcd, j2k->curtileno, cio_getbp(cio), cio_numbytesleft(cio) - 2, cstr_info);
|
||||||
|
|
|
@ -147,8 +147,8 @@ static int t2_encode_packet(opj_tcd_tile_t * tile, opj_tcp_t * tcp, opj_pi_itera
|
||||||
c[1] = 145;
|
c[1] = 145;
|
||||||
c[2] = 0;
|
c[2] = 0;
|
||||||
c[3] = 4;
|
c[3] = 4;
|
||||||
c[4] = (cstr_info->packno % 65536) / 256;
|
c[4] = (tile->packno % 65536) / 256;
|
||||||
c[5] = (cstr_info->packno % 65536) % 256;
|
c[5] = (tile->packno % 65536) % 256;
|
||||||
c += 6;
|
c += 6;
|
||||||
}
|
}
|
||||||
/* </SOP> */
|
/* </SOP> */
|
||||||
|
@ -656,6 +656,7 @@ int t2_encode_packets(opj_t2_t* t2,int tileno, opj_tcd_tile_t *tile, int maxlaye
|
||||||
cstr_info->packno++;
|
cstr_info->packno++;
|
||||||
}
|
}
|
||||||
/* << INDEX */
|
/* << INDEX */
|
||||||
|
tile->packno++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,6 +144,8 @@ typedef struct opj_tcd_tile {
|
||||||
int numpix; /* add fixed_quality */
|
int numpix; /* add fixed_quality */
|
||||||
double distotile; /* add fixed_quality */
|
double distotile; /* add fixed_quality */
|
||||||
double distolayer[100]; /* add fixed_quality */
|
double distolayer[100]; /* add fixed_quality */
|
||||||
|
/** packet number */
|
||||||
|
int packno;
|
||||||
} opj_tcd_tile_t;
|
} opj_tcd_tile_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue