Provided by: libg2c-dev_2.1.0-1_amd64 bug

NAME

       jpcpack.c - Pack and unpack an array of float/double using JPEG2000.

SYNOPSIS

       #include 'grib2_int.h'
       #include <math.h>
       #include <stdlib.h>

   Functions
       int g2c_jpcpackd (double *fld, size_t width, size_t height, int *idrstmpl, unsigned char *cpack, size_t
           *lcpack)
           This function packs up a double array into a JPEG2000 code stream.
       int g2c_jpcpackf (float *fld, size_t width, size_t height, int *idrstmpl, unsigned char *cpack, size_t
           *lcpack)
           This function packs up a float array into a JPEG2000 code stream.
       void jpcpack (float *fld, g2int width, g2int height, g2int *idrstmpl, unsigned char *cpack, g2int
           *lcpack)
           This function packs up a float array into a JPEG2000 code stream.
       static int jpcpack_int (void *fld, int fld_is_double, g2int width, g2int height, g2int *idrstmpl,
           unsigned char *cpack, g2int *lcpack, int verbose)
           Packs a float or double array into a JPEG2000 code stream.

Detailed Description

       Pack and unpack an array of float/double using JPEG2000.

       Author
           Stephen Gilbert

       Date
           2003-08-17

   Program History Log
       Date   Programmer   Comments    2003-08-17   Gilbert   Initial.    2004-11-92   Gilbert   Fixed bug
       packing a near constant field.    2004-07-19   Gilbert   If jpeg2000 encoding fails, try again with
       different encoder options.    2005-05-10   Gilbert   Imposed minimum size on cpack.    2022-08-12
       Hartnett   Now handle doubles too.

       Definition in file jpcpack.c.

Function Documentation

   int g2c_jpcpackd (double * fld, size_t width, size_t height, int * idrstmpl, unsigned char * cpack, size_t *
       lcpack)
       This function packs up a double array into a JPEG2000 code stream. After the data are scaled, and the
       reference value is subtracted out, the data are treated as a grayscale image and passed to a JPEG2000
       encoder.

       This function also fills in GRIB2 Data Representation Template 5.40 or 5.40000 with the appropriate
       values.

       This function is the V2 API version of jpcpack() for doubles.

       Parameters
           fld Pointer to the double data values to pack.
           width The number of points in the x direction.
           height The number of points in the y direction.
           idrstmpl Contains the array of values for Data Representation Template Table 5.40 or 5.40000.

           • 0 Reference value - ignored on input, set by jpcpack routine.

           • 1 Binary Scale Factor - used on input, unchanged by jpcpack routine.

           • 2 Decimal Scale Factor - used on input, unchanged by jpcpack routine.

           • 3 number of bits for each data value - ignored on input

           • 4  Original  field  type  - currently ignored on input Data values assumed to be reals. Set to 0 on
             output.

           • 5 if 0 use lossless compression, if 1 use lossy compression.

           • 6 Desired compression ratio, if idrstmpl[5]=1. Set to 255, if idrstmpl[5]=0.  May  be  modified  in
             this function.

           cpack  A  pointer  that  will  get  the  packed data field. Must be allocated before this function is
           called. Pass the allocated size in the lcpack parameter.
           lcpack Pointer that gets the length of packed field in  cpack.  This  must  be  set  by  the  calling
           function to the size available in cpack.

       ReturnsG2C_NOERROR No error.

           • G2C_EJPEG Error encoding/decoding JPEG data.

       Author
           Ed Hartnett

       Definition at line 386 of file jpcpack.c.

       References G2C_JPEG_DRS_TEMPLATE_LEN, and jpcpack_int().

   int  g2c_jpcpackf  (float * fld, size_t width, size_t height, int * idrstmpl, unsigned char * cpack, size_t *
       lcpack)
       This function packs up a float array into a JPEG2000 code stream. After the  data  are  scaled,  and  the
       reference  value  is  subtracted  out, the data are treated as a grayscale image and passed to a JPEG2000
       encoder.

       This function also fills in GRIB2 Data Representation Template  5.40  or  5.40000  with  the  appropriate
       values.

       This function is the V2 API version of jpcpack() for floats.

       Parameters
           fld Pointer to the float data values to pack.
           width The number of points in the x direction.
           height The number of points in the y direction.
           idrstmpl Contains the array of values for Data Representation Template Table 5.40 or 5.40000.

           • 0 Reference value - ignored on input, set by jpcpack routine.

           • 1 Binary Scale Factor - used on input, unchanged by jpcpack routine.

           • 2 Decimal Scale Factor - used on input, unchanged by jpcpack routine.

           • 3 number of bits for each data value - ignored on input

           • 4  Original  field  type  - currently ignored on input Data values assumed to be reals. Set to 0 on
             output.

           • 5 if 0 use lossless compression, if 1 use lossy compression.

           • 6 Desired compression ratio, if idrstmpl[5]=1. Set to 255, if idrstmpl[5]=0.  May  be  modified  in
             this function.

           cpack  A  pointer  that  will  get  the  packed data field. Must be allocated before this function is
           called. Pass the allocated size in the lcpack parameter.
           lcpack Pointer that gets the length of packed field in  cpack.  This  must  be  set  by  the  calling
           function to the size available in cpack.

       ReturnsG2C_NOERROR No error.

           • G2C_EJPEG Error encoding/decoding JPEG data.

       Author
           Ed Hartnett

       Definition at line 320 of file jpcpack.c.

       References G2C_JPEG_DRS_TEMPLATE_LEN, and jpcpack_int().

   void  jpcpack  (float  *  fld,  g2int  width,  g2int height, g2int * idrstmpl, unsigned char * cpack, g2int *
       lcpack)
       This function packs up a float array into a JPEG2000 code stream. After the  data  are  scaled,  and  the
       reference  value  is  subtracted  out, the data are treated as a grayscale image and passed to a JPEG2000
       encoder.

       This function also fills in GRIB2 Data Representation Template  5.40  or  5.40000  with  the  appropriate
       values.

       Parameters
           fld Pointer to the float data values to pack.
           width The number of points in the x direction.
           height The number of points in the y direction.
           idrstmpl Contains the array of values for Data Representation Template Table 5.40 or 5.40000.

           • 0 Reference value - ignored on input, set by jpcpack routine.

           • 1 Binary Scale Factor - used on input, unchanged by jpcpack routine.

           • 2 Decimal Scale Factor - used on input, unchanged by jpcpack routine.

           • 3 number of bits for each data value - ignored on input

           • 4  Original  field  type  - currently ignored on input Data values assumed to be reals. Set to 0 on
             output.

           • 5 if 0 use lossless compression, if 1 use lossy compression.

           • 6 Desired compression ratio, if idrstmpl[5]=1. Set to 255, if idrstmpl[5]=0.  May  be  modified  in
             this function.

           cpack  A  pointer  that  will  get  the  packed data field. Must be allocated before this function is
           called. Pass the allocated size in the lcpack parameter.
           lcpack Pointer that gets the length of packed field in  cpack.  This  must  be  set  by  the  calling
           function to the size available in cpack.

       Author
           Stephen Gilbert, Ed Hartnett

       Definition at line 269 of file jpcpack.c.

       References jpcpack_int().

       Referenced by g2_addfield().

   static  int jpcpack_int (void * fld, int fld_is_double, g2int width, g2int height, g2int * idrstmpl, unsigned
       char * cpack, g2int * lcpack, int verbose) [static]
       Packs a float or double array  into  a  JPEG2000  code  stream.  This  function  is  used  by  jpcpack(),
       g2c_jpcpackf(), and g2c_jpcpackd().

       Parameters
           fld Pointer to the float or double data values to pack.
           fld_is_double If non-zero, then fld points to array of doubles, otherwise an array of floats.
           width The number of points in the x direction.
           height The number of points in the y direction.
           idrstmpl  Contains the array of values for Data Representation Template Table 5.40 or 5.40000. May be
           modified in this function.
           cpack A pointer that will get the packed data field.  Must  be  allocated  before  this  function  is
           called. Pass the allocated size in the lcpack parameter.
           lcpack  Pointer  that  gets the length of packed field in cpack. This must also be set by the calling
           function to the size available in cpack.
           verbose If non-zero, error messages will be printed in case of error. Otherwise, error codes will  be
           return  but  no  error messages printed. Calls to the original g2c API may cause error messages to be
           printed in case of error. For the new g2c_ API, no error messages will be printed - instead an  error
           code will be returned. Call g2c_strerror() to get the error message for any error code.

       ReturnsG2C_NOERROR No error.

           • G2C_EJPEG Error encoding/decoding JPEG data.

       Author
           Stephen Gilbert, Ed Hartnett

       Definition at line 54 of file jpcpack.c.

       References ALOG2, enc_jpeg2000(), G2C_EJPEG, G2C_NOERROR, int_power(), LOG, mkieee(), and sbits().

       Referenced by g2c_jpcpackd(), g2c_jpcpackf(), and jpcpack().

Author

       Generated automatically by Doxygen for NCEPLIBS-g2c from the source code.

NCEPLIBS-g2c                                      Version 2.1.0                                     jpcpack.c(3)