@@ -34,7 +34,7 @@ with memory buffers as source and destination
3434template <typename T>
3535int core_compress (uint32_t dimX, uint32_t dimY, uint8_t precision,
3636 std::vector<std::unique_ptr<T[]>>& uncompressedData,
37- std::vector<uint8_t >& compressedData)
37+ std::vector<uint8_t >& compressedData, bool jp2 )
3838{
3939 const uint16_t numComps = (uint16_t )uncompressedData.size ();
4040 const auto colourSpace = numComps == 3 ? GRK_CLRSPC_SRGB : GRK_CLRSPC_GRAY;
@@ -47,7 +47,7 @@ int core_compress(uint32_t dimX, uint32_t dimY, uint8_t precision,
4747 // 1. initialize compress parameters
4848 grk_cparameters compressParams;
4949 grk_compress_set_default_params (&compressParams);
50- compressParams.cod_format = GRK_FMT_JP2;
50+ compressParams.cod_format = jp2 ? GRK_FMT_JP2 : GRK_FMT_J2K ;
5151 compressParams.verbose = true ;
5252 compressParams.irreversible = false ; // Enable reversible (lossless) compression
5353
@@ -122,7 +122,7 @@ int core_compress(uint32_t dimX, uint32_t dimY, uint8_t precision,
122122template <typename T>
123123int core_decompress (uint32_t dimX, uint32_t dimY, uint8_t precision,
124124 std::vector<std::unique_ptr<T[]>>& uncompressedData,
125- std::vector<uint8_t >& compressedData)
125+ std::vector<uint8_t >& compressedData, bool jp2 )
126126{
127127 const uint16_t numComps = (uint16_t )uncompressedData.size ();
128128 const auto colourSpace = numComps == 3 ? GRK_CLRSPC_SRGB : GRK_CLRSPC_GRAY;
@@ -161,7 +161,7 @@ int core_decompress(uint32_t dimX, uint32_t dimY, uint8_t precision,
161161 printf (" Decompression succeeded\n " );
162162
163163 // 3. compare original uncompressedData to decompressed decOutputImage
164- if (numComps != decOutputImage->numcomps || colourSpace != decOutputImage->color_space )
164+ if (numComps != decOutputImage->numcomps || (jp2 && colourSpace != decOutputImage->color_space ) )
165165 {
166166 images_equal = false ;
167167 }
@@ -247,9 +247,10 @@ int main([[maybe_unused]] int argc, [[maybe_unused]] const char** argv)
247247 std::vector<uint8_t > compressedData;
248248 size_t bufLen = (size_t )numComps * ((precision + 7 ) / 8 ) * dimX * dimY;
249249 compressedData.resize (bufLen);
250- int rc = core_compress<uint16_t >(dimX, dimY, precision, uncompressedData, compressedData);
250+ bool jp2 = false ;
251+ int rc = core_compress<uint16_t >(dimX, dimY, precision, uncompressedData, compressedData, jp2);
251252 if (rc == 0 )
252- rc = core_decompress<uint16_t >(dimX, dimY, precision, uncompressedData, compressedData);
253+ rc = core_decompress<uint16_t >(dimX, dimY, precision, uncompressedData, compressedData, jp2 );
253254
254255 return rc;
255256}
0 commit comments