summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiuseppe Baruffa <gbaruffa@users.noreply.github.com>2006-12-05 18:20:04 +0000
committerGiuseppe Baruffa <gbaruffa@users.noreply.github.com>2006-12-05 18:20:04 +0000
commit3adfd1860295da3ef57871d6eb3615d1596f9ed1 (patch)
treea4dee65dbae7b5fe742b6c400f1e4cc19b3ee919
parent9e42842bb5c3f36a05cc9d2b2589726af634ad0c (diff)
* 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
-rw-r--r--ChangeLog5
-rw-r--r--codec/image_to_j2k.c9
-rw-r--r--jpwl/JPWL_j2k_to_image.dsp4
-rw-r--r--jpwl/jpwl.c6
-rw-r--r--jpwl/jpwl_lib.c10
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 */
/* <<UniPG */
fprintf(stdout,"IMPORTANT:\n");
diff --git a/jpwl/JPWL_j2k_to_image.dsp b/jpwl/JPWL_j2k_to_image.dsp
index 961afc2f..87c5a9e3 100644
--- a/jpwl/JPWL_j2k_to_image.dsp
+++ b/jpwl/JPWL_j2k_to_image.dsp
@@ -61,8 +61,8 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "JPWL_j2k_to_image___Win32_Debug"
-# PROP Intermediate_Dir "JPWL_j2k_to_image___Win32_Debug"
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
diff --git a/jpwl/jpwl.c b/jpwl/jpwl.c
index 72c5644d..0246100c 100644
--- a/jpwl/jpwl.c
+++ b/jpwl/jpwl.c
@@ -377,7 +377,7 @@ void jpwl_prepare_marks(opj_j2k_t *j2k, opj_cio_t *cio, opj_image_t *image) {
unsigned long sot_pos, post_sod_pos;
unsigned long int left_THmarks_len, epbs_len = 0;
int startpack = 0, stoppack = j2k->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 */