parent
fac916f72a
commit
7b28bd2b72
|
@ -906,7 +906,8 @@ int imagetotga(opj_image_t * image, const char *outfile) {
|
||||||
for (i = 0; i < image->numcomps-1; i++) {
|
for (i = 0; i < image->numcomps-1; i++) {
|
||||||
if ((image->comps[0].dx != image->comps[i+1].dx)
|
if ((image->comps[0].dx != image->comps[i+1].dx)
|
||||||
||(image->comps[0].dy != image->comps[i+1].dy)
|
||(image->comps[0].dy != image->comps[i+1].dy)
|
||||||
||(image->comps[0].prec != image->comps[i+1].prec)) {
|
||(image->comps[0].prec != image->comps[i+1].prec)
|
||||||
|
||(image->comps[0].sgnd != image->comps[i+1].sgnd)) {
|
||||||
fclose(fdest);
|
fclose(fdest);
|
||||||
fprintf(stderr, "Unable to create a tga file with such J2K image charateristics.");
|
fprintf(stderr, "Unable to create a tga file with such J2K image charateristics.");
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -1743,7 +1744,7 @@ int imagetopnm(opj_image_t * image, const char *outfile, int force_split)
|
||||||
int *red, *green, *blue, *alpha;
|
int *red, *green, *blue, *alpha;
|
||||||
int wr, hr, max;
|
int wr, hr, max;
|
||||||
int i;
|
int i;
|
||||||
unsigned int compno, ncomp;
|
unsigned int compno, ncomp, ui;
|
||||||
int adjustR, adjustG, adjustB, adjustA;
|
int adjustR, adjustG, adjustB, adjustA;
|
||||||
int fails, two, want_gray, has_alpha, triple;
|
int fails, two, want_gray, has_alpha, triple;
|
||||||
int prec, v;
|
int prec, v;
|
||||||
|
@ -1768,6 +1769,27 @@ int imagetopnm(opj_image_t * image, const char *outfile, int force_split)
|
||||||
|
|
||||||
if(want_gray) ncomp = 1;
|
if(want_gray) ncomp = 1;
|
||||||
|
|
||||||
|
for (ui = 1; ui < ncomp; ++ui) {
|
||||||
|
if (image->comps[0].dx != image->comps[ui].dx) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (image->comps[0].dy != image->comps[ui].dy) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (image->comps[0].prec != image->comps[ui].prec) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (image->comps[0].sgnd != image->comps[ui].sgnd) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ui != ncomp) {
|
||||||
|
fprintf(stderr,"imagetopnm: All components\n shall have "
|
||||||
|
"the same subsampling, same bit depth, same sign.\n"
|
||||||
|
" Aborting\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
if ((force_split == 0) &&
|
if ((force_split == 0) &&
|
||||||
(ncomp == 2 /* GRAYA */
|
(ncomp == 2 /* GRAYA */
|
||||||
|| (ncomp > 2 /* RGB, RGBA */
|
|| (ncomp > 2 /* RGB, RGBA */
|
||||||
|
@ -2126,7 +2148,7 @@ static int imagetoraw_common(opj_image_t * image, const char *outfile, OPJ_BOOL
|
||||||
{
|
{
|
||||||
FILE *rawFile = NULL;
|
FILE *rawFile = NULL;
|
||||||
size_t res;
|
size_t res;
|
||||||
unsigned int compno;
|
unsigned int compno, numcomps;
|
||||||
int w, h, fails;
|
int w, h, fails;
|
||||||
int line, row, curr, mask;
|
int line, row, curr, mask;
|
||||||
int *ptr;
|
int *ptr;
|
||||||
|
@ -2139,6 +2161,31 @@ static int imagetoraw_common(opj_image_t * image, const char *outfile, OPJ_BOOL
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
numcomps = image->numcomps;
|
||||||
|
|
||||||
|
if (numcomps > 4) {
|
||||||
|
numcomps = 4;
|
||||||
|
}
|
||||||
|
for (compno = 1; compno < numcomps; ++compno) {
|
||||||
|
if (image->comps[0].dx != image->comps[compno].dx) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (image->comps[0].dy != image->comps[compno].dy) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (image->comps[0].prec != image->comps[compno].prec) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (image->comps[0].sgnd != image->comps[compno].sgnd) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (compno != numcomps) {
|
||||||
|
fprintf(stderr,"imagetoraw_common: All components shall have the same subsampling, same bit depth, same sign.\n");
|
||||||
|
fprintf(stderr,"\tAborting\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
rawFile = fopen(outfile, "wb");
|
rawFile = fopen(outfile, "wb");
|
||||||
if (!rawFile) {
|
if (!rawFile) {
|
||||||
fprintf(stderr, "Failed to open %s for writing !!\n", outfile);
|
fprintf(stderr, "Failed to open %s for writing !!\n", outfile);
|
||||||
|
@ -2146,9 +2193,9 @@ static int imagetoraw_common(opj_image_t * image, const char *outfile, OPJ_BOOL
|
||||||
}
|
}
|
||||||
|
|
||||||
fails = 1;
|
fails = 1;
|
||||||
fprintf(stdout,"Raw image characteristics: %d components\n", image->numcomps);
|
fprintf(stdout,"Raw image characteristics: %d components\n", numcomps);
|
||||||
|
|
||||||
for(compno = 0; compno < image->numcomps; compno++)
|
for(compno = 0; compno < numcomps; compno++)
|
||||||
{
|
{
|
||||||
fprintf(stdout,"Component %u characteristics: %dx%dx%d %s\n", compno, image->comps[compno].w,
|
fprintf(stdout,"Component %u characteristics: %dx%dx%d %s\n", compno, image->comps[compno].w,
|
||||||
image->comps[compno].h, image->comps[compno].prec, image->comps[compno].sgnd==1 ? "signed": "unsigned");
|
image->comps[compno].h, image->comps[compno].prec, image->comps[compno].sgnd==1 ? "signed": "unsigned");
|
||||||
|
@ -2238,7 +2285,7 @@ static int imagetoraw_common(opj_image_t * image, const char *outfile, OPJ_BOOL
|
||||||
}
|
}
|
||||||
else if (image->comps[compno].prec <= 32)
|
else if (image->comps[compno].prec <= 32)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"More than 16 bits per component no handled yet\n");
|
fprintf(stderr,"More than 16 bits per component not handled yet\n");
|
||||||
goto fin;
|
goto fin;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -806,8 +806,35 @@ int imagetobmp(opj_image_t * image, const char *outfile) {
|
||||||
FILE *fdest = NULL;
|
FILE *fdest = NULL;
|
||||||
int adjustR, adjustG, adjustB;
|
int adjustR, adjustG, adjustB;
|
||||||
|
|
||||||
|
{
|
||||||
|
unsigned int ui, ncomp = image->numcomps;
|
||||||
|
|
||||||
|
if (ncomp > 4) { /* RGBA in bmpmask32toimage */
|
||||||
|
ncomp = 4;
|
||||||
|
}
|
||||||
|
for (ui = 1; ui < ncomp; ++ui) {
|
||||||
|
if (image->comps[0].dx != image->comps[ui].dx) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (image->comps[0].dy != image->comps[ui].dy) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (image->comps[0].prec != image->comps[ui].prec) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (image->comps[0].sgnd != image->comps[ui].sgnd) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ui != ncomp) {
|
||||||
|
fprintf(stderr,"imagetobmp: All components shall have the same subsampling, same bit depth, same sign.\n");
|
||||||
|
fprintf(stderr,"\tAborting\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
if (image->comps[0].prec < 8) {
|
if (image->comps[0].prec < 8) {
|
||||||
fprintf(stderr, "Unsupported number of components: %d\n", image->comps[0].prec);
|
fprintf(stderr, "imagetobmp: Unsupported precision: %d\n", image->comps[0].prec);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (image->numcomps >= 3 && image->comps[0].dx == image->comps[1].dx
|
if (image->numcomps >= 3 && image->comps[0].dx == image->comps[1].dx
|
||||||
|
|
|
@ -1607,7 +1607,7 @@ fin:
|
||||||
if(dirptr->filename_buf) free(dirptr->filename_buf);
|
if(dirptr->filename_buf) free(dirptr->filename_buf);
|
||||||
free(dirptr);
|
free(dirptr);
|
||||||
}
|
}
|
||||||
if (numDecompressedImages) {
|
if (numDecompressedImages && !failed) {
|
||||||
fprintf(stdout, "decode time: %d ms\n", (int)( (tCumulative * 1000.0) / (OPJ_FLOAT64)numDecompressedImages));
|
fprintf(stdout, "decode time: %d ms\n", (int)( (tCumulative * 1000.0) / (OPJ_FLOAT64)numDecompressedImages));
|
||||||
}
|
}
|
||||||
return failed ? EXIT_FAILURE : EXIT_SUCCESS;
|
return failed ? EXIT_FAILURE : EXIT_SUCCESS;
|
||||||
|
|
|
@ -2158,7 +2158,7 @@ static OPJ_BOOL opj_j2k_read_siz(opj_j2k_t *p_j2k,
|
||||||
i, l_img_comp->dx, l_img_comp->dy);
|
i, l_img_comp->dx, l_img_comp->dy);
|
||||||
return OPJ_FALSE;
|
return OPJ_FALSE;
|
||||||
}
|
}
|
||||||
if( l_img_comp->prec > 38) { /* TODO openjpeg won't handle more than ? */
|
if( l_img_comp->prec < 1 || l_img_comp->prec > 38) { /* TODO openjpeg won't handle more than ? */
|
||||||
opj_event_msg(p_manager, EVT_ERROR,
|
opj_event_msg(p_manager, EVT_ERROR,
|
||||||
"Invalid values for comp = %d : prec=%u (should be between 1 and 38 according to the JPEG2000 norm)\n",
|
"Invalid values for comp = %d : prec=%u (should be between 1 and 38 according to the JPEG2000 norm)\n",
|
||||||
i, l_img_comp->prec);
|
i, l_img_comp->prec);
|
||||||
|
@ -10030,6 +10030,10 @@ OPJ_BOOL opj_j2k_decode(opj_j2k_t * p_j2k,
|
||||||
for (compno = 0; compno < p_image->numcomps; compno++) {
|
for (compno = 0; compno < p_image->numcomps; compno++) {
|
||||||
p_image->comps[compno].resno_decoded = p_j2k->m_output_image->comps[compno].resno_decoded;
|
p_image->comps[compno].resno_decoded = p_j2k->m_output_image->comps[compno].resno_decoded;
|
||||||
p_image->comps[compno].data = p_j2k->m_output_image->comps[compno].data;
|
p_image->comps[compno].data = p_j2k->m_output_image->comps[compno].data;
|
||||||
|
|
||||||
|
if(p_image->comps[compno].data == NULL) return OPJ_FALSE;
|
||||||
|
|
||||||
|
p_j2k->m_output_image->comps[compno].data = NULL;
|
||||||
#if 0
|
#if 0
|
||||||
char fn[256];
|
char fn[256];
|
||||||
sprintf( fn, "/tmp/%d.raw", compno );
|
sprintf( fn, "/tmp/%d.raw", compno );
|
||||||
|
@ -10037,7 +10041,6 @@ OPJ_BOOL opj_j2k_decode(opj_j2k_t * p_j2k,
|
||||||
fwrite( p_image->comps[compno].data, sizeof(OPJ_INT32), p_image->comps[compno].w * p_image->comps[compno].h, debug );
|
fwrite( p_image->comps[compno].data, sizeof(OPJ_INT32), p_image->comps[compno].w * p_image->comps[compno].h, debug );
|
||||||
fclose( debug );
|
fclose( debug );
|
||||||
#endif
|
#endif
|
||||||
p_j2k->m_output_image->comps[compno].data = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return OPJ_TRUE;
|
return OPJ_TRUE;
|
||||||
|
@ -10131,6 +10134,8 @@ OPJ_BOOL opj_j2k_get_tile( opj_j2k_t *p_j2k,
|
||||||
|
|
||||||
p_image->comps[compno].data = p_j2k->m_output_image->comps[compno].data;
|
p_image->comps[compno].data = p_j2k->m_output_image->comps[compno].data;
|
||||||
|
|
||||||
|
if (p_image->comps[compno].data == NULL) return OPJ_FALSE;
|
||||||
|
|
||||||
p_j2k->m_output_image->comps[compno].data = NULL;
|
p_j2k->m_output_image->comps[compno].data = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue