Added the knowledge of JPSEC SEC and INSEC markers (you have to compile the JPWL...
authorGiuseppe Baruffa <gbaruffa@users.noreply.github.com>
Mon, 3 Sep 2007 13:30:59 +0000 (13:30 +0000)
committerGiuseppe Baruffa <gbaruffa@users.noreply.github.com>
Mon, 3 Sep 2007 13:30:59 +0000 (13:30 +0000)
ChangeLog
OPJViewer/OPJViewer.dsp
OPJViewer/source/build.h
OPJViewer/source/wxj2kparser.cpp
doc/Doxyfile.dox
jpwl/JPWL_image_to_j2k.dsp
jpwl/JPWL_j2k_to_image.dsp
jpwl/jpwl.c
jpwl/jpwl.h
libopenjpeg/j2k.c
libopenjpeg/j2k.h

index 98275da3af826acfc31870b2d51326403cbad864..6dbb09abe6fc19c0a1494e664ae025e03295168e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,9 @@ What's New for OpenJPEG
 ! : changed
 + : added
 
+September 3, 2007
++ [GB] Added the knowledge of JPSEC SEC and INSEC markers (you have to compile the JPWL project). Management of these markers is limited to skipping them without crashing: no real security function at this stage. Deprecated USE_JPSEC will be removed next
+
 August 31, 2007
 * [GB] Fixed save capabilities in OPJViewer due to recent code upgrade
 
index c7f33354c104f79b37f8fbf9c41373a8485b11b3..73f7c851f4baecd7dc18422e13fb2b32f0faf8cd 100644 (file)
@@ -42,7 +42,7 @@ RSC=rc.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
-# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /I "d:\programmi\wxWidgets-2.8.0\lib\vc_lib\msw" /I "d:\programmi\wxWidgets-2.8.0\include" /I ".." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "wxUSE_LIBOPENJPEG" /D "OPJ_STATIC" /D "USE_JPWL" /D "OPJ_HTMLABOUT" /D "OPJ_MANYFORMATS" /D "OPJ_INICONFIG" /FR /FD /c\r
+# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /I "d:\programmi\wxWidgets-2.8.0\lib\vc_lib\msw" /I "d:\programmi\wxWidgets-2.8.0\include" /I ".." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "wxUSE_LIBOPENJPEG" /D "OPJ_STATIC" /D "USE_JPWL" /D "USE_JPSEC" /D "OPJ_HTMLABOUT" /D "OPJ_MANYFORMATS" /D "OPJ_INICONFIG" /FR /FD /c\r
 # ADD BASE RSC /l 0x410 /d "NDEBUG"\r
 # ADD RSC /l 0x409 /i "d:\programmi\wxWidgets-2.8.0\include" /d "NDEBUG"\r
 BSC32=bscmake.exe\r
index cfbcdd1dda90433214eb39486d167116e24c4717..176e98c13b7c6022e74a9bd806822b6bb07d1b88 100644 (file)
@@ -1 +1 @@
-wxT("204") \r
+wxT("207") \r
index 69d89989d9a28451bf2ba59802c9a8d9fa3efd50..a82ecab1313c1878136b2412002d21c5e8c4b2a0 100644 (file)
@@ -303,6 +303,7 @@ void OPJParseThread::ParseJ2KFile(wxFile *m_file, wxFileOffset offset, wxFileOff
                        };\r
                        break;\r
 \r
+#ifdef USE_JPWL\r
                /////////\r
                // RED //\r
                /////////\r
@@ -550,6 +551,15 @@ void OPJParseThread::ParseJ2KFile(wxFile *m_file, wxFileOffset offset, wxFileOff
 \r
                        }\r
                        break;\r
+#endif // USE_JPWL\r
+\r
+#ifdef USE_JPSEC\r
+               case SEC_VAL:\r
+                       {\r
+\r
+                       }\r
+                       break;\r
+#endif // USE_JPSEC\r
 \r
                /////////\r
                // SIZ //\r
index 52f5c196458a680966e965b751d0147032aa1302..f0aa47897a17d22edeeaa4b9c18f2d38c23a73e0 100644 (file)
@@ -190,7 +190,8 @@ EXPAND_ONLY_PREDEF     = NO
 SEARCH_INCLUDES        = YES
 INCLUDE_PATH           = 
 INCLUDE_FILE_PATTERNS  = 
-PREDEFINED             = USE_JPWL
+PREDEFINED             = USE_JPWL \
+                         USE_JPSEC
 EXPAND_AS_DEFINED      = 
 SKIP_FUNCTION_MACROS   = YES
 #---------------------------------------------------------------------------
index a7b9563566258bfc5d90e2cbc3ad87a82e64a093..f7c4e35c0f6900eb9cc4ca7445a4e06a78bd027e 100644 (file)
@@ -42,7 +42,7 @@ RSC=rc.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../libopenjpeg" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "OPJ_STATIC" /D "USE_JPWL" /FR /YX /FD /c\r
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../libopenjpeg" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "OPJ_STATIC" /D "USE_JPWL" /D "USE_JPSEC" /FR /YX /FD /c\r
 # ADD BASE RSC /l 0x80c /d "NDEBUG"\r
 # ADD RSC /l 0x80c /d "NDEBUG"\r
 BSC32=bscmake.exe\r
@@ -50,7 +50,7 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo\r
 LINK32=link.exe\r
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib LibOpenJPEG_JPWL.lib ../libs/libtiff/libtiff.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt.lib" /libpath:"Release"\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib LibOpenJPEG_JPWL.lib ../libs/libtiff/libtiff.lib /nologo /subsystem:console /machine:I386 /libpath:"Release"\r
 \r
 !ELSEIF  "$(CFG)" == "JPWL_image_to_j2k - Win32 Debug"\r
 \r
@@ -66,7 +66,7 @@ LINK32=link.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c\r
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../libopenjpeg" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "OPJ_STATIC" /D "USE_JPWL" /FR /FD /GZ /c\r
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../libopenjpeg" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "OPJ_STATIC" /D "USE_JPWL" /D "USE_JPSEC" /FR /FD /GZ /c\r
 # ADD BASE RSC /l 0x80c /d "_DEBUG"\r
 # ADD RSC /l 0x80c /d "_DEBUG"\r
 BSC32=bscmake.exe\r
index 411d4ee2bf898d105659f8c967869e91e50aaaa0..408c3d6bee34e84a3dae4da7e68fc69226ff77a8 100644 (file)
@@ -42,7 +42,7 @@ RSC=rc.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../libopenjpeg" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "OPJ_STATIC" /D "USE_JPWL" /YX /FD /c\r
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../libopenjpeg" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "OPJ_STATIC" /D "USE_JPWL" /D "USE_JPSEC" /YX /FD /c\r
 # ADD BASE RSC /l 0x80c /d "NDEBUG"\r
 # ADD RSC /l 0x80c /d "NDEBUG"\r
 BSC32=bscmake.exe\r
@@ -50,7 +50,7 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo\r
 LINK32=link.exe\r
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib  ../libs/libtiff/libtiff.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt.lib"\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libs/libtiff/libtiff.lib /nologo /subsystem:console /machine:I386\r
 \r
 !ELSEIF  "$(CFG)" == "JPWL_j2k_to_image - Win32 Debug"\r
 \r
@@ -66,7 +66,7 @@ LINK32=link.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c\r
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../libopenjpeg" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "OPJ_STATIC" /D "USE_JPWL" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../libopenjpeg" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "OPJ_STATIC" /D "USE_JPWL" /D "USE_JPSEC" /YX /FD /GZ /c\r
 # ADD BASE RSC /l 0x80c /d "_DEBUG"\r
 # ADD RSC /l 0x80c /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -74,7 +74,7 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo\r
 LINK32=link.exe\r
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib  ../libs/libtiff/libtiff.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libcmtd.lib" /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libs/libtiff/libtiff.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libcmtd.lib" /pdbtype:sept\r
 \r
 !ENDIF \r
 \r
@@ -91,28 +91,12 @@ SOURCE=..\codec\convert.c
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=.\crc.c\r
-# End Source File\r
-# Begin Source File\r
-\r
 SOURCE=..\codec\compat\getopt.c\r
 # End Source File\r
 # Begin Source File\r
 \r
 SOURCE=..\codec\j2k_to_image.c\r
 # End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\jpwl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\jpwl_lib.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\rs.c\r
-# End Source File\r
 # End Group\r
 # Begin Group "Header Files"\r
 \r
index dbd145f69abe1ab1ac994d407092291ad513e460..f687c529278d9917b24c87c7fc4b3d14e53ecbfe 100644 (file)
  * POSSIBILITY OF SUCH DAMAGE.\r
  */\r
 \r
-#ifdef USE_JPWL\r
-\r
 #include "../libopenjpeg/opj_includes.h"\r
 \r
+#ifdef USE_JPWL\r
+\r
 /** @defgroup JPWL JPWL - JPEG-2000 Part11 (JPWL) codestream manager */\r
 /*@{*/\r
 \r
@@ -1136,3 +1136,69 @@ bool jpwl_check_tile(opj_j2k_t *j2k, opj_tcd_t *tcd, int tileno) {
 /*@}*/\r
 \r
 #endif /* USE_JPWL */\r
+\r
+\r
+#ifdef USE_JPSEC\r
+\r
+/** @defgroup JPSEC JPSEC - JPEG-2000 Part 8 (JPSEC) codestream manager */\r
+/*@{*/\r
+\r
+\r
+/** @name Local static functions */\r
+/*@{*/\r
+\r
+void j2k_read_sec(opj_j2k_t *j2k) {\r
+       unsigned short int Lsec;\r
+       \r
+       opj_cio_t *cio = j2k->cio;\r
+\r
+       /* Simply read the SEC length */\r
+       Lsec = cio_read(cio, 2);\r
+\r
+       /* Now we write them to screen */\r
+       opj_event_msg(j2k->cinfo, EVT_INFO,\r
+               "SEC(%d)\n",\r
+               cio_tell(cio) - 2\r
+               );\r
+\r
+       cio_skip(cio, Lsec - 2);  \r
+}\r
+\r
+void j2k_write_sec(opj_j2k_t *j2k) {\r
+       unsigned short int Lsec = 24;\r
+       int i;\r
+\r
+       opj_cio_t *cio = j2k->cio;\r
+\r
+       cio_write(cio, J2K_MS_SEC, 2);  /* SEC */\r
+       cio_write(cio, Lsec, 2);\r
+\r
+       /* write dummy data */\r
+       for (i = 0; i < Lsec - 2; i++)\r
+               cio_write(cio, 0, 1);\r
+}\r
+\r
+void j2k_read_insec(opj_j2k_t *j2k) {\r
+       unsigned short int Linsec;\r
+       \r
+       opj_cio_t *cio = j2k->cio;\r
+\r
+       /* Simply read the INSEC length */\r
+       Linsec = cio_read(cio, 2);\r
+\r
+       /* Now we write them to screen */\r
+       opj_event_msg(j2k->cinfo, EVT_INFO,\r
+               "INSEC(%d)\n",\r
+               cio_tell(cio) - 2\r
+               );\r
+\r
+       cio_skip(cio, Linsec - 2);  \r
+}\r
+\r
+\r
+/*@}*/\r
+\r
+/*@}*/\r
+\r
+#endif /* USE_JPSEC */\r
+\r
index 667869d48dbc30184302bc1c91d325acb5f11f44..a18c148093e036b0b6d0337d545bf003c12660c4 100644 (file)
@@ -379,5 +379,32 @@ Computes the minimum between two integers
 
 #endif /* USE_JPWL */
 
+#ifdef USE_JPSEC
+
+/** @defgroup JPSEC JPSEC - JPEG-2000 Part 8 (JPSEC) codestream manager */
+/*@{*/
+
+/**
+Read the SEC marker (SEcured Codestream)
+@param j2k J2K handle
+*/
+void j2k_read_sec(opj_j2k_t *j2k);
+
+/**
+Write the SEC marker (SEcured Codestream)
+@param j2k J2K handle
+*/
+void j2k_write_sec(opj_j2k_t *j2k);
+
+/**
+Read the INSEC marker (SEcured Codestream)
+@param j2k J2K handle
+*/
+void j2k_read_insec(opj_j2k_t *j2k);
+
+/*@}*/
+
+#endif /* USE_JPSEC */
+
 #endif /* __JPWL_H */
 
index f020167cbd086e7ad9f91db467cd336e48d296a6..476b68c5b581e441c4f22ee8b85dca7a3730b154 100644 (file)
@@ -1541,6 +1541,10 @@ opj_dec_mstabent_t j2k_dec_mstab[] = {
   {J2K_MS_ESD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_esd},
   {J2K_MS_RED, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_red},
 #endif /* USE_JPWL */
+#ifdef USE_JPSEC
+  {J2K_MS_SEC, J2K_STATE_MH, j2k_read_sec},
+  {J2K_MS_INSEC, 0, j2k_read_insec},
+#endif /* USE_JPSEC */
 
   {0, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_unk}
 };
@@ -2261,6 +2265,9 @@ bool j2k_encode(opj_j2k_t *j2k, opj_cio_t *cio, opj_image_t *image, opj_codestre
                }
        }
 
+       /* uncomment only for testing JPSEC marker writing */
+       /* j2k_write_sec(j2k); */
+
        /* INDEX >> */
        if(cstr_info && cstr_info->index_on) {
                cstr_info->main_head_end = cio_tell(cio) - 1;
index 8ed758c2bed4e2beafa099bb73557021f895b75a..fa63b7fadaae712031970655a20a1207092abd13 100644 (file)
@@ -79,13 +79,18 @@ The functions in J2K.C have for goal to read/write the several parts of the code
 #define J2K_MS_COM 0xff64      /**< COM marker value */
 /* UniPG>> */
 #ifdef USE_JPWL
-#define J2K_MS_EPC 0xff68      /**< EPC marker value (Part11) */
-#define J2K_MS_EPB 0xff66      /**< EPB marker value (Part11) */ 
-#define J2K_MS_ESD 0xff67      /**< ESD marker value (Part11) */ 
-#define J2K_MS_RED 0xff69      /**< RED marker value (Part11) */
+#define J2K_MS_EPC 0xff68      /**< EPC marker value (Part 11: JPEG 2000 for Wireless) */
+#define J2K_MS_EPB 0xff66      /**< EPB marker value (Part 11: JPEG 2000 for Wireless) */ 
+#define J2K_MS_ESD 0xff67      /**< ESD marker value (Part 11: JPEG 2000 for Wireless) */ 
+#define J2K_MS_RED 0xff69      /**< RED marker value (Part 11: JPEG 2000 for Wireless) */
 #endif /* USE_JPWL */
+#ifdef USE_JPSEC
+#define J2K_MS_SEC 0xff65    /**< SEC marker value (Part 8: Secure JPEG 2000) */
+#define J2K_MS_INSEC 0xff94  /**< INSEC marker value (Part 8: Secure JPEG 2000) */
+#endif /* USE_JPSEC */
 /* <<UniPG */
 
+
 /* ----------------------------------------------------------------------- */
 
 /**