Isis 3 Programmer Reference
JP2Decoder.h
1#ifndef JP2Decoder_h
2#define JP2Decoder_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include <string>
11
12#if ENABLEJP2K
13#include "jp2.h"
14#include "kdu_stripe_decompressor.h"
15#endif
16
17#define MIN_STRIPE_HEIGHT 256
18#define MAX_STRIPE_HEIGHT 8192
19
20namespace Isis {
21 class JP2Error;
22
83 class JP2Decoder {
84 public:
85 JP2Decoder(const QString &jp2file);
87
88 // Register with the Kakadu error facility
89 JP2Error *kakadu_error() const {
90 return Kakadu_Error;
91 };
92
93 // Open and initialize the JP2 file for reading
94 void OpenFile();
95
96 // Get the sample dimension of the JP2 file
97 inline int GetSampleDimension() const {
98 return ((int) p_numSamples);
99 }
100
101 // Get the line dimension of the JP2 file
102 inline int GetLineDimension() const {
103 return ((int) p_numLines);
104 }
105
106 // Get the band dimension of the JP2 file
107 inline int GetBandDimension() const {
108 return ((int) p_numBands);
109 }
110
111 // Get number of bytes per pixel in the JP2 file
112 inline int GetPixelBytes() const {
113 return (p_pixelBytes);
114 }
115
116 // Determine if data in JP2 file is signed
117 inline bool GetSignedData() const {
118 return (p_signedData);
119 }
120
121 // Read byte data from the JP2 file
122 void Read(unsigned char **inbuf);
123
124 // Read 16-bit data from the JP2 file
125 void Read(short int **inbuf);
126
127 static bool IsJP2(QString filename);
128
129 private:
130 QString p_jp2File;
131 unsigned int p_numSamples;
132 unsigned int p_numLines;
133 unsigned int p_numBands;
134 unsigned int p_pixelBytes;
136
137#if ENABLEJP2K
138 unsigned int p_resolutionLevel;
140 unsigned int p_highestResLevel;
142 int *p_maxStripeHeights;
144 int *p_precisions;
146 bool *p_isSigned;
148 int *p_stripeHeights;
150
151 unsigned int p_pixelBits;
152 bool p_readStripes;
153
154
155 kdu_core::kdu_dims p_imageDims;
156 kdu_supp::jp2_family_src *JP2_Stream;
157 kdu_supp::jp2_source *JP2_Source;
158 kdu_core::kdu_codestream *JPEG2000_Codestream;
159 kdu_supp::kdu_stripe_decompressor p_decompressor;
161#endif
163
167 };
168};
169#endif
JPEG2000 decoder class.
Definition JP2Decoder.h:83
unsigned int p_numBands
Number of bands in JP2 file.
Definition JP2Decoder.h:133
void SetResolutionAndRegion()
Sets resolution of data that will be decompressed. Also determines the image dimensions at the reques...
bool p_signedData
Set to true if data in JP2 file is signed.
Definition JP2Decoder.h:135
unsigned int p_numSamples
Number of samples in JP2 file.
Definition JP2Decoder.h:131
void OpenFile()
Open the JPEG2000 file.
JP2Decoder(const QString &jp2file)
Constructs a JPEG2000 decoder object.
JP2Error * Kakadu_Error
JP2 Error handling facility.
Definition JP2Decoder.h:162
unsigned int p_numLines
Number of lines in JP2 file.
Definition JP2Decoder.h:132
unsigned int p_pixelBytes
Number of bytes per pixel in JP2 file.
Definition JP2Decoder.h:134
QString p_jp2File
Input file name.
Definition JP2Decoder.h:130
void Read(unsigned char **inbuf)
Read data from JP2 file containing 8-bit data.
~JP2Decoder()
JP2Decoder destructor.
Kakadu error messaging class.
Definition JP2Error.h:38
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16