NCEPLIBS-g2c  1.6.4
jpcpack.c File Reference

Pack up a data field into a JPEG2000 code stream. More...

#include <stdlib.h>
#include <math.h>
#include "grib2.h"

Go to the source code of this file.

Functions

int enc_jpeg2000 (unsigned char *, g2int, g2int, g2int, g2int, g2int, g2int, char *, g2int)
 This Function encodes a grayscale image into a JPEG2000 code stream specified in the JPEG2000 Part-1 standard (i.e., ISO/IEC 15444-1) using JasPer Software version 1.500.4 (or 1.700.2) written by the University of British Columbia, Image Power Inc, and others. More...
 
void jpcpack (g2float *fld, g2int width, g2int height, g2int *idrstmpl, unsigned char *cpack, g2int *lcpack)
 This subroutine packs up a data field into a JPEG2000 code stream. More...
 

Detailed Description

Pack up a data field into a JPEG2000 code stream.

Author
Stephen Gilbert
Date
2003-08-17

Definition in file jpcpack.c.

Function Documentation

◆ enc_jpeg2000()

int enc_jpeg2000 ( unsigned char *  cin,
g2int  width,
g2int  height,
g2int  nbits,
g2int  ltype,
g2int  ratio,
g2int  retry,
char *  outjpc,
g2int  jpclen 
)

This Function encodes a grayscale image into a JPEG2000 code stream specified in the JPEG2000 Part-1 standard (i.e., ISO/IEC 15444-1) using JasPer Software version 1.500.4 (or 1.700.2) written by the University of British Columbia, Image Power Inc, and others.

JasPer is available at http://www.ece.uvic.ca/~mdadams/jasper/.

Program History Log

Date Programmer Comments
2002-12-02 Gilbert Initial
2004-12-16 Gilbert Added retry argument allowing increased guard bits.
Parameters
cinPacked matrix of Grayscale image values to encode.
widthwidth of image.
heightheight of image.
nbitsdepth (in bits) of image. i.e number of bits used to hold each data value.
ltypeindicator of lossless or lossy compression.
  • 1, for lossy compression
  • != 1, for lossless compression
ratiotarget compression ratio. (ratio:1) Used only when ltype == 1.
retryIf 1 try increasing number of guard bits otherwise, no additional options.
outjpcOutput encoded JPEG2000 code stream.
jpclenNumber of bytes allocated for the output JPEG2000 code stream in outjpc.
Returns
  • > 0 = Length in bytes of encoded JPEG2000 code stream
  • -3 = Error decode jpeg2000 code stream.
  • -5 = decoded image had multiple color components. Only grayscale is expected.
Note
Requires JasPer Software version 1.500.4 or 1.700.2 or later.
Author
Stephen Gilbert
Date
2002-12-02

Definition at line 57 of file enc_jpeg2000.c.

References MAXOPTSSIZE.

Referenced by jpcpack().

◆ jpcpack()

void jpcpack ( g2float fld,
g2int  width,
g2int  height,
g2int idrstmpl,
unsigned char *  cpack,
g2int lcpack 
)

This subroutine packs up a data field into a JPEG2000 code stream.

After the data field is scaled, and the reference value is subtracted out, it is treated as a grayscale image and passed to a JPEG2000 encoder. It also fills in GRIB2 Data Representation Template 5.40 or 5.40000 with the appropriate values.

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.
Parameters
fldContains the data values to pack.
widthnumber of points in the x direction.
heightnumber of points in the y direction.
idrstmplContains 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.
cpackThe packed data field.
lcpackPointer that points to a g2int which contains the length of packed field in cpack. This must be set by the calling function.
Author
Stephen Gilbert
Date
2003-08-17

Definition at line 53 of file jpcpack.c.

References enc_jpeg2000(), int_power(), mkieee(), and sbits().

Referenced by g2_addfield().