pgxtoimage(): fix write stack buffer overflow (#997)
[openjpeg.git] / src / bin / jp2 / convert.h
index 51018c0b3bbfa1d86d390c995b7feb782fa9eba2..61439d49a6ada42d97bec40f04f6ad04f87ad5a3 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * The copyright in this software is being made available under the 2-clauses 
- * BSD License, included below. This software may be subject to other third 
+ * The copyright in this software is being made available under the 2-clauses
+ * BSD License, included below. This software may be subject to other third
  * party and contributor rights, including patent rights, and no such rights
  * are granted under this license.
  *
@@ -8,7 +8,7 @@
  * Copyright (c) 2002-2014, Professor Benoit Macq
  * Copyright (c) 2001-2003, David Janssens
  * Copyright (c) 2002-2003, Yannick Verschueren
- * Copyright (c) 2003-2007, Francois-Olivier Devaux 
+ * Copyright (c) 2003-2007, Francois-Olivier Devaux
  * Copyright (c) 2003-2014, Antonin Descampe
  * Copyright (c) 2005, Herve Drolon, FreeImage Team
  * All rights reserved.
@@ -50,19 +50,19 @@ typedef struct raw_comp_cparameters {
 /**@name RAW image encoding parameters */
 /*@{*/
 typedef struct raw_cparameters {
-       /** width of the raw image */
-       int rawWidth;
-       /** height of the raw image */
-       int rawHeight;
+    /** width of the raw image */
+    int rawWidth;
+    /** height of the raw image */
+    int rawHeight;
     /** number of components of the raw image */
-       int rawComp;
+    int rawComp;
     /** bit depth of the raw image */
     int rawBitDepth;
     /** signed/unsigned raw image */
     OPJ_BOOL rawSigned;
     /** raw components parameters */
     raw_comp_cparameters_t *rawComps;
-       /*@}*/
+    /*@}*/
 } raw_cparameters_t;
 
 /* Component precision clipping */
@@ -70,6 +70,22 @@ void clip_component(opj_image_comp_t* component, OPJ_UINT32 precision);
 /* Component precision scaling */
 void scale_component(opj_image_comp_t* component, OPJ_UINT32 precision);
 
+/* planar / interleaved conversions */
+typedef void (* convert_32s_CXPX)(const OPJ_INT32* pSrc, OPJ_INT32* const* pDst,
+                                  OPJ_SIZE_T length);
+extern const convert_32s_CXPX convert_32s_CXPX_LUT[5];
+typedef void (* convert_32s_PXCX)(OPJ_INT32 const* const* pSrc, OPJ_INT32* pDst,
+                                  OPJ_SIZE_T length, OPJ_INT32 adjust);
+extern const convert_32s_PXCX convert_32s_PXCX_LUT[5];
+/* bit depth conversions */
+typedef void (* convert_XXx32s_C1R)(const OPJ_BYTE* pSrc, OPJ_INT32* pDst,
+                                    OPJ_SIZE_T length);
+extern const convert_XXx32s_C1R convert_XXu32s_C1R_LUT[9]; /* up to 8bpp */
+typedef void (* convert_32sXXx_C1R)(const OPJ_INT32* pSrc, OPJ_BYTE* pDst,
+                                    OPJ_SIZE_T length);
+extern const convert_32sXXx_C1R convert_32sXXu_C1R_LUT[9]; /* up to 8bpp */
+
+
 /* TGA conversion */
 opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters);
 int imagetotga(opj_image_t * image, const char *outfile);
@@ -96,12 +112,15 @@ int imagetopnm(opj_image_t *image, const char *outfile, int force_split);
 /* RAW conversion */
 int imagetoraw(opj_image_t * image, const char *outfile);
 int imagetorawl(opj_image_t * image, const char *outfile);
-opj_image_t* rawtoimage(const char *filename, opj_cparameters_t *parameters, raw_cparameters_t *raw_cp);
-opj_image_t* rawltoimage(const char *filename, opj_cparameters_t *parameters, raw_cparameters_t *raw_cp);
+opj_image_t* rawtoimage(const char *filename, opj_cparameters_t *parameters,
+                        raw_cparameters_t *raw_cp);
+opj_image_t* rawltoimage(const char *filename, opj_cparameters_t *parameters,
+                         raw_cparameters_t *raw_cp);
 
 /* PNG conversion*/
 extern int imagetopng(opj_image_t *image, const char *write_idf);
-extern opj_image_t* pngtoimage(const char *filename, opj_cparameters_t *parameters);
+extern opj_image_t* pngtoimage(const char *filename,
+                               opj_cparameters_t *parameters);
 
 #endif /* __J2K_CONVERT_H */