NCEPLIBS-g2  3.4.8
jpcunpack.F90
Go to the documentation of this file.
1 
4 
19 subroutine jpcunpack(cpack,len,idrstmpl,ndpts,fld)
20  implicit none
21 
22  character(len=1),intent(in) :: cpack(len)
23  integer,intent(in) :: ndpts,len
24  integer,intent(in) :: idrstmpl(*)
25  real,intent(out) :: fld(ndpts)
26 
27  integer :: ifld(ndpts)
28  integer(4) :: ieee
29  integer(8) :: len8
30  real :: ref,bscale,dscale
31  integer :: nbits, j, iret
32 
33  interface
34  function dec_jpeg2000(cin, len, ifld) &
35  bind(c, name="g2c_dec_jpeg2000")
36  use iso_c_binding
37  character(kind = c_char), intent(in) :: cin(*)
38  integer(c_size_t), value, intent(in) :: len
39  integer(c_int), intent(inout) :: ifld(*)
40  integer(c_int) :: dec_jpeg2000
41  end function dec_jpeg2000
42  end interface
43 
44  ieee = idrstmpl(1)
45  call rdieee(ieee,ref,1)
46  bscale = 2.0**real(idrstmpl(2))
47  dscale = 10.0**real(-idrstmpl(3))
48  nbits = idrstmpl(4)
49 
50  ! if nbits equals 0, we have a constant field where the reference value
51  ! is the data value at each gridpoint
52  if (nbits.ne.0) then
53  ! call g2_gbytesc(cpack,ifld,0,nbits,0,ndpts)
54  len8 = len
55  iret=dec_jpeg2000(cpack,len8,ifld)
56  do j=1,ndpts
57  fld(j)=((real(ifld(j))*bscale)+ref)*dscale
58  enddo
59  else
60  do j=1,ndpts
61  fld(j)=ref
62  enddo
63  endif
64 
65 end subroutine jpcunpack
int dec_jpeg2000(char *injpc, g2int bufsize, g2int *outfld)
This Function decodes a JPEG2000 code stream specified in the JPEG2000 Part-1 standard (i....
Definition: dec_jpeg2000.c:192
subroutine jpcunpack(cpack, len, idrstmpl, ndpts, fld)
Unpack a data field from a JPEG2000 code stream.
Definition: jpcunpack.F90:20
subroutine rdieee(rieee, a, num)
Copy array of 32-bit IEEE floating point values to local floating point representation.
Definition: rdieee.F90:16