From 3adfd1860295da3ef57871d6eb3615d1596f9ed1 Mon Sep 17 00:00:00 2001 From: Giuseppe Baruffa Date: Tue, 5 Dec 2006 18:20:04 +0000 Subject: [PATCH] * Better fix of the TPH EPBs bug in JPWL module * Fixed the UEP bug in JPWL module + Added some lines in the help of JPWL_image_to_j2k --- ChangeLog | 5 +++++ codec/image_to_j2k.c | 9 +++++++-- jpwl/JPWL_j2k_to_image.dsp | 4 ++-- jpwl/jpwl.c | 6 +++--- jpwl/jpwl_lib.c | 10 +++++++++- 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index ecfc7b3d..20f816a8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,11 @@ What's New for OpenJPEG ! : changed + : added +December 05, 2006 +* [Giuseppe Baruffa] Better fix of the TPH EPBs bug in JPWL module +* [GB] Fixed the UEP bug in JPWL module; now, during a UEP specification, RS protection or CRC check can be switched off for selected range of packets, and consequently reswitched on without confusing the decoder ++ [GB] Added some lines in the help of JPWL_image_to_j2k, specifying that when using error protection on data packets, this must be paired with header protection, i.e. there cannot be packet protection without header protection + December 04, 2006 + [Francois-Olivier Devaux] New tag: version1.0 (includes codec and libopenjpeg directories) diff --git a/codec/image_to_j2k.c b/codec/image_to_j2k.c index 5a663a63..1709c379 100644 --- a/codec/image_to_j2k.c +++ b/codec/image_to_j2k.c @@ -201,10 +201,10 @@ void encode_help_display() { fprintf(stdout," 1/2 bytes, for the transformed pseudo-floating point value\n"); fprintf(stdout,"\n"); fprintf(stdout," ex.:\n"); - fprintf(stdout," h,h0=64,h3=16,h5=0,p0=78,p0:24=56,p1,p3:0=0,p3:20=32,s=0,s0=6,s3=-1,a=0,g=1,z=1\n"); + fprintf(stdout," h,h0=64,h3=16,h5=32,p0=78,p0:24=56,p1,p3:0=0,p3:20=32,s=0,s0=6,s3=-1,a=0,g=1,z=1\n"); fprintf(stdout," means\n"); fprintf(stdout," predefined EPB in MH, rs(64,32) from TPH 0 to TPH 2,\n"); - fprintf(stdout," CRC-16 in TPH 3 and TPH 4, no EPBs in remaining TPHs,\n"); + fprintf(stdout," CRC-16 in TPH 3 and TPH 4, CRC-32 in remaining TPHs,\n"); fprintf(stdout," UEP rs(78,32) for packets 0 to 23 of tile 0,\n"); fprintf(stdout," UEP rs(56,32) for packets 24 to the last of tile 0,\n"); fprintf(stdout," UEP rs default for packets of tile 1,\n"); @@ -219,6 +219,11 @@ void encode_help_display() { fprintf(stdout," means\n"); fprintf(stdout," default protection to headers (MH and TPHs) as well as\n"); fprintf(stdout," data packets, one ESD in MH\n"); + fprintf(stdout,"\n"); + fprintf(stdout," N.B.: use the following recommendations when specifying\n"); + fprintf(stdout," the JPWL parameters list\n"); + fprintf(stdout," - when you use UEP, always pair the 'p' option with 'h'\n"); + fprintf(stdout," \n"); #endif /* USE_JPWL */ /* <image_info->num; - jpwl_epb_ms_t *tph_epb; + jpwl_epb_ms_t *tph_epb = NULL; sot_pos = j2k->image_info->tile[tileno].start_pos; cio_seek(cio, sot_pos + 2); @@ -555,10 +555,10 @@ void jpwl_prepare_marks(opj_j2k_t *j2k, opj_cio_t *cio, opj_image_t *image) { } /* we can now check if the TPH EPB was really the last one */ - if (epb_index == 1) { + if (tph_epb && (epb_index == 1)) { /* set the TPH EPB to be the last one in current header */ tph_epb->Depb |= (unsigned char) ((true & 0x0001) << 6); - + tph_epb = NULL; } /* write back Psot */ diff --git a/jpwl/jpwl_lib.c b/jpwl/jpwl_lib.c index 45bafcc0..656ca7e5 100644 --- a/jpwl/jpwl_lib.c +++ b/jpwl/jpwl_lib.c @@ -1018,6 +1018,14 @@ bool jpwl_epb_correct(opj_j2k_t *j2k, unsigned char *buffer, int type, int pre_l } } + } else if (Pepb == 0xFFFFFFFF) { + /* no method */ + + /* advance without doing anything */ + remaining = L4; + while (remaining--) + L4_buf++; + } else if ((((Pepb & 0xF0000000) >> 28) == 2) || (((Pepb & 0xF0000000) >> 28) == 0)) { /* RS coding here */ @@ -1719,4 +1727,4 @@ bool jpwl_update_info(opj_j2k_t *j2k, jpwl_marker_t *jwmarker, int jwmarker_num) return true; } -#endif /* USE_JPWL */ \ No newline at end of file +#endif /* USE_JPWL */