]> Creatis software - gdcm.git/blobdiff - src/gdcmjpegls/Encoder/jpegmark.h
ENH: Adding an open source, BSD compatible jpeg-ls library. Thanks to UBC for releasi...
[gdcm.git] / src / gdcmjpegls / Encoder / jpegmark.h
diff --git a/src/gdcmjpegls/Encoder/jpegmark.h b/src/gdcmjpegls/Encoder/jpegmark.h
new file mode 100644 (file)
index 0000000..452949e
--- /dev/null
@@ -0,0 +1,86 @@
+/* SPMG/JPEG-LS IMPLEMENTATION V.2.1
+   =====================================
+   These programs are Copyright (c) University of British Columbia. All rights reserved.
+   They may be freely redistributed in their entirety provided that this copyright
+   notice is not removed. THEY MAY NOT BE SOLD FOR PROFIT OR INCORPORATED IN
+   COMMERCIAL PROGRAMS WITHOUT THE WRITTEN PERMISSION OF THE COPYRIGHT HOLDER.
+   Each program is provided as is, without any express or implied warranty,
+   without even the warranty of fitness for a particular purpose.
+
+   =========================================================
+   THIS SOFTWARE IS BASED ON HP's implementation of jpeg-ls:
+   =========================================================
+
+   LOCO-I/JPEG-LS IMPLEMENTATION V.0.90
+   -------------------------------------------------------------------------------
+   (c) COPYRIGHT HEWLETT-PACKARD COMPANY, 1995-1999.
+        HEWLETT-PACKARD COMPANY ("HP") DOES NOT WARRANT THE ACCURACY OR
+   COMPLETENESS OF THE INFORMATION GIVEN HERE.  ANY USE MADE OF, OR
+   RELIANCE ON, SUCH INFORMATION IS ENTIRELY AT USER'S OWN RISK.
+        BY DOWNLOADING THE LOCO-I/JPEG-LS COMPRESSORS/DECOMPRESSORS
+   ("THE SOFTWARE") YOU AGREE TO BE BOUND BY THE TERMS AND CONDITIONS
+   OF THIS LICENSING AGREEMENT.
+        YOU MAY DOWNLOAD AND USE THE SOFTWARE FOR NON-COMMERCIAL PURPOSES
+   FREE OF CHARGE OR FURTHER OBLIGATION.  YOU MAY NOT, DIRECTLY OR
+   INDIRECTLY, DISTRIBUTE THE SOFTWARE FOR A FEE, INCORPORATE THIS
+   SOFTWARE INTO ANY PRODUCT OFFERED FOR SALE, OR USE THE SOFTWARE
+   TO PROVIDE A SERVICE FOR WHICH A FEE IS CHARGED.
+        YOU MAY MAKE COPIES OF THE SOFTWARE AND DISTRIBUTE SUCH COPIES TO
+   OTHER PERSONS PROVIDED THAT SUCH COPIES ARE ACCOMPANIED BY
+   HEWLETT-PACKARD'S COPYRIGHT NOTICE AND THIS AGREEMENT AND THAT
+   SUCH OTHER PERSONS AGREE TO BE BOUND BY THE TERMS OF THIS AGREEMENT.
+        THE SOFTWARE IS NOT OF PRODUCT QUALITY AND MAY HAVE ERRORS OR DEFECTS.
+   THE JPEG-LS STANDARD IS STILL UNDER DEVELOPMENT. THE SOFTWARE IS NOT A
+   FINAL OR FULL IMPLEMENTATION OF THE STANDARD.  HP GIVES NO EXPRESS OR
+   IMPLIED WARRANTY OF ANY KIND AND ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY AND FITNESS FOR PURPOSE ARE DISCLAIMED.
+        HP SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL,
+   OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE.
+   -------------------------------------------------------------------------------
+*/
+
+/* jpegmark.h --- for JPEG markers
+ *
+ * Initial code by Alex Jakulin,  Aug. 1995
+ *
+ * Modified and optimized: Gadiel Seroussi, October 1995
+ *
+ * Color Enhancement: Guillermo Sapiro, August 1996
+ *
+ * Modified and added Restart marker and input tables by:
+ * David Cheng-Hsiu Chu, and Ismail R. Ismail march 1999
+ */
+
+#define BUFINPUT
+#ifndef BIG_ENDIAN
+#  define BIG_ENDIAN
+#endif
+
+/*  Marker identifiers */
+
+#define  SOI    0xFFD8  /* start of image */
+#define EOI    0xFFD9  /* end of image */
+
+#define SOS    0xFFDA  /* Start of scan */
+#define DNL    0xFFDC  /* Define number of lines */
+#define DRI    0xFFDD  /* Define restart interval */
+#define RSTm    0xFFD0  /* Restart marker (FFD0-FFD7) */
+#define COM    0xFFFE  /* Comment */
+
+
+/* JPEG-LS specific */
+#define SOF_LS    0xFFF7  /* Start of JPEG-LS regular frame */
+#define LSE    0xFFF8  /* JPEG-LS extension marker */
+#define LSE_PARAMS  1  /* Marker type within LSE - parameters */
+#define LSE_MAPTABLE  2  /* Marker type within LSE - map tables */
+#define LSE_XMAPTABLE  3  /* Marker type within LSE - map table continuation */
+#define LSE_XY          4  /* Marker type within LSE - image dimensions */
+
+
+/* Functions to write markers */
+int write_n_bytes(FILE *out, int value, int n);
+int write_2_bytes(FILE *out, int value);
+int write_marker(FILE *out, int marker);
+int write_jpegls_frame(FILE *out, jpeg_ls_header *jp);
+int write_jpegls_scan(FILE *out, jpeg_ls_header *jp);
+int write_jpegls_extmarker(FILE *out, jpeg_ls_header *jp, int IDtype, char *mapfilename);