Skip to content

Commit a3ce3de

Browse files
author
Grok Compression
committed
core_simple: support j2k and jp2 formats
1 parent 229bf35 commit a3ce3de

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

examples/core/core_simple.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ with memory buffers as source and destination
3434
template<typename T>
3535
int 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,
122122
template<typename T>
123123
int 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

Comments
 (0)