Skip to content

Commit 25dd59f

Browse files
author
Grok Compression
committed
ImageFormat: refactor
1 parent 8463f60 commit 25dd59f

18 files changed

Lines changed: 325 additions & 301 deletions

src/lib/codec/apps/GrkCompareImages.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ GrkImagePtr readImageFromFilePGX(const std::string& filename, uint16_t numFiles,
153153
separator.empty() ? filename : createMultiComponentsFilename(filename, i, separator);
154154

155155
PGXFormat<int32_t> pgx;
156-
GrkImagePtr src(pgx.decode(file.c_str(), &parameters));
156+
GrkImagePtr src(pgx.readImage(file.c_str(), &parameters));
157157
if(!src || !src->comps || !src->comps->h || !src->comps->w)
158158
{
159159
spdlog::error("Unable to load pgx file: {}", file);
@@ -189,7 +189,7 @@ GrkImagePtr readImageFromFileBMP(const std::string& filename)
189189
parameters.decod_format = GRK_FMT_BMP;
190190

191191
BMPFormat<int32_t> bmp;
192-
GrkImagePtr img(bmp.decode(filename.c_str(), &parameters));
192+
GrkImagePtr img(bmp.readImage(filename.c_str(), &parameters));
193193
if(!img)
194194
{
195195
spdlog::error("Unable to load BMP file: {}", filename);
@@ -205,7 +205,7 @@ GrkImagePtr readImageFromFilePNG(const std::string& filename)
205205
parameters.decod_format = GRK_FMT_PNG;
206206

207207
PNGFormat<int32_t> png;
208-
GrkImagePtr img(png.decode(filename.c_str(), &parameters));
208+
GrkImagePtr img(png.readImage(filename.c_str(), &parameters));
209209
if(!img)
210210
{
211211
spdlog::error("Unable to load PNG file: {}", filename);
@@ -231,7 +231,7 @@ GrkImagePtr readImageFromFileTIF(const std::string& filename, const std::string&
231231
parameters.decod_format = GRK_FMT_TIF;
232232

233233
TIFFFormat<int32_t> tif;
234-
GrkImagePtr img(tif.decode(filename.c_str(), &parameters));
234+
GrkImagePtr img(tif.readImage(filename.c_str(), &parameters));
235235
if(!img)
236236
{
237237
spdlog::error("Unable to load TIF file: {}", filename);
@@ -269,7 +269,7 @@ GrkImagePtr readImageFromFilePPM(const std::string& filename, uint16_t numFiles,
269269
separator.empty() ? filename : createMultiComponentsFilename(filename, i, separator);
270270

271271
PNMFormat<int32_t> pnm(false);
272-
GrkImagePtr src(pnm.decode(file.c_str(), &parameters));
272+
GrkImagePtr src(pnm.readImage(file.c_str(), &parameters));
273273
if(!src || !src->comps || !src->comps->h || !src->comps->w)
274274
{
275275
spdlog::error("Unable to load ppm file: {}", file);

src/lib/codec/apps/GrkCompress.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -281,52 +281,52 @@ static grk_image* loadInputImage(const char* filename, grk_cparameters* paramete
281281
{
282282
case GRK_FMT_PGX: {
283283
PGXFormat<int32_t> pgx;
284-
image = pgx.decode(filename, parameters);
284+
image = pgx.readImage(filename, parameters);
285285
}
286286
break;
287287
case GRK_FMT_PXM: {
288288
PNMFormat<int32_t> pnm(false);
289-
image = pnm.decode(filename, parameters);
289+
image = pnm.readImage(filename, parameters);
290290
}
291291
break;
292292
case GRK_FMT_BMP: {
293293
BMPFormat<int32_t> bmp;
294-
image = bmp.decode(filename, parameters);
294+
image = bmp.readImage(filename, parameters);
295295
}
296296
break;
297297
#ifdef GROK_HAVE_LIBTIFF
298298
case GRK_FMT_TIF: {
299299
TIFFFormat<int32_t> tif;
300-
image = tif.decode(filename, parameters);
300+
image = tif.readImage(filename, parameters);
301301
}
302302
break;
303303
#endif
304304
case GRK_FMT_RAW: {
305305
RAWFormat<int32_t> raw(true);
306-
image = raw.decode(filename, parameters);
306+
image = raw.readImage(filename, parameters);
307307
}
308308
break;
309309
case GRK_FMT_RAWL: {
310310
RAWFormat<int32_t> raw(false);
311-
image = raw.decode(filename, parameters);
311+
image = raw.readImage(filename, parameters);
312312
}
313313
break;
314314
case GRK_FMT_YUV: {
315315
YUVFormat yuv;
316-
image = yuv.decode(filename, parameters);
316+
image = yuv.readImage(filename, parameters);
317317
}
318318
break;
319319
#ifdef GROK_HAVE_LIBPNG
320320
case GRK_FMT_PNG: {
321321
PNGFormat<int32_t> png;
322-
image = png.decode(filename, parameters);
322+
image = png.readImage(filename, parameters);
323323
}
324324
break;
325325
#endif
326326
#ifdef GROK_HAVE_LIBJPEG
327327
case GRK_FMT_JPG: {
328328
JPEGFormat<int32_t> jpeg;
329-
image = jpeg.decode(filename, parameters);
329+
image = jpeg.readImage(filename, parameters);
330330
}
331331
break;
332332
#endif
@@ -2081,7 +2081,7 @@ static uint64_t pluginCompressCallback(grk_plugin_compress_user_callback_info* i
20812081
{
20822082
case GRK_FMT_PGX: {
20832083
PGXFormat<int32_t> pgx;
2084-
image = pgx.decode(info->input_file_name, info->compressor_parameters);
2084+
image = pgx.readImage(info->input_file_name, info->compressor_parameters);
20852085
if(!image)
20862086
{
20872087
spdlog::error("Unable to load pgx file");
@@ -2092,7 +2092,7 @@ static uint64_t pluginCompressCallback(grk_plugin_compress_user_callback_info* i
20922092

20932093
case GRK_FMT_PXM: {
20942094
PNMFormat<int32_t> pnm(false);
2095-
image = pnm.decode(info->input_file_name, info->compressor_parameters);
2095+
image = pnm.readImage(info->input_file_name, info->compressor_parameters);
20962096
if(!image)
20972097
{
20982098
spdlog::error("Unable to load pnm file");
@@ -2103,7 +2103,7 @@ static uint64_t pluginCompressCallback(grk_plugin_compress_user_callback_info* i
21032103

21042104
case GRK_FMT_BMP: {
21052105
BMPFormat<int32_t> bmp;
2106-
image = bmp.decode(info->input_file_name, info->compressor_parameters);
2106+
image = bmp.readImage(info->input_file_name, info->compressor_parameters);
21072107
if(!image)
21082108
{
21092109
spdlog::error("Unable to load bmp file");
@@ -2115,7 +2115,7 @@ static uint64_t pluginCompressCallback(grk_plugin_compress_user_callback_info* i
21152115
#ifdef GROK_HAVE_LIBTIFF
21162116
case GRK_FMT_TIF: {
21172117
TIFFFormat<int32_t> tif;
2118-
image = tif.decode(info->input_file_name, info->compressor_parameters);
2118+
image = tif.readImage(info->input_file_name, info->compressor_parameters);
21192119
if(!image)
21202120
goto cleanup;
21212121
}
@@ -2124,7 +2124,7 @@ static uint64_t pluginCompressCallback(grk_plugin_compress_user_callback_info* i
21242124

21252125
case GRK_FMT_RAW: {
21262126
RAWFormat<int32_t> raw(true);
2127-
image = raw.decode(info->input_file_name, info->compressor_parameters);
2127+
image = raw.readImage(info->input_file_name, info->compressor_parameters);
21282128
if(!image)
21292129
{
21302130
spdlog::error("Unable to load raw file");
@@ -2135,7 +2135,7 @@ static uint64_t pluginCompressCallback(grk_plugin_compress_user_callback_info* i
21352135

21362136
case GRK_FMT_RAWL: {
21372137
RAWFormat<int32_t> raw(false);
2138-
image = raw.decode(info->input_file_name, info->compressor_parameters);
2138+
image = raw.readImage(info->input_file_name, info->compressor_parameters);
21392139
if(!image)
21402140
{
21412141
spdlog::error("Unable to load raw file");
@@ -2146,7 +2146,7 @@ static uint64_t pluginCompressCallback(grk_plugin_compress_user_callback_info* i
21462146

21472147
case GRK_FMT_YUV: {
21482148
YUVFormat yuv;
2149-
image = yuv.decode(info->input_file_name, info->compressor_parameters);
2149+
image = yuv.readImage(info->input_file_name, info->compressor_parameters);
21502150
if(!image)
21512151
{
21522152
spdlog::error("Unable to load raw file");
@@ -2158,7 +2158,7 @@ static uint64_t pluginCompressCallback(grk_plugin_compress_user_callback_info* i
21582158
#ifdef GROK_HAVE_LIBPNG
21592159
case GRK_FMT_PNG: {
21602160
PNGFormat<int32_t> png;
2161-
image = png.decode(info->input_file_name, info->compressor_parameters);
2161+
image = png.readImage(info->input_file_name, info->compressor_parameters);
21622162
if(!image)
21632163
{
21642164
spdlog::error("Unable to load png file");
@@ -2171,7 +2171,7 @@ static uint64_t pluginCompressCallback(grk_plugin_compress_user_callback_info* i
21712171
#ifdef GROK_HAVE_LIBJPEG
21722172
case GRK_FMT_JPG: {
21732173
JPEGFormat<int32_t> jpeg;
2174-
image = jpeg.decode(info->input_file_name, info->compressor_parameters);
2174+
image = jpeg.readImage(info->input_file_name, info->compressor_parameters);
21752175
if(!image)
21762176
{
21772177
spdlog::error("Unable to load jpeg file");

src/lib/codec/apps/GrkDecompress.cpp

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -907,34 +907,34 @@ static void cleanUpFile(const char* outfile)
907907
free(p);
908908
}
909909

910-
static void grkSerializeRegisterClientCallback(grk_io_init io_init,
910+
static void grkRegisterReclaimCallback(grk_io_init io_init,
911911
grk_io_callback reclaim_callback, void* io_user_data,
912912
void* reclaim_user_data)
913913
{
914914
if(!io_user_data || !reclaim_user_data)
915915
return;
916916
auto imageFormat = (IImageFormat*)io_user_data;
917917

918-
imageFormat->registerGrkReclaimCallback(io_init, reclaim_callback, reclaim_user_data);
918+
imageFormat->registerReclaimCallback(io_init, reclaim_callback, reclaim_user_data);
919919
}
920920

921-
static bool grkSerializeBufferCallback(uint32_t workerId, grk_io_buf buffer, void* user_data)
921+
static bool grkWriteStripCallback(uint32_t workerId, grk_io_buf buffer, void* user_data)
922922
{
923923
if(!user_data)
924924
return false;
925925
auto imageFormat = (IImageFormat*)user_data;
926926

927-
return imageFormat->encodePixels(workerId, buffer);
927+
return imageFormat->writeStrip(workerId, buffer);
928928
}
929929

930-
bool GrkDecompress::encodeHeader(grk_plugin_decompress_callback_info* info)
930+
bool GrkDecompress::writeHeader(grk_plugin_decompress_callback_info* info)
931931
{
932932
if(!storeToDisk)
933933
return true;
934-
if(!encodeInit(info))
934+
if(!writeInit(info))
935935
return false;
936936
auto fmt = info->format_private ? (IImageFormat*)info->format_private : imageFormat;
937-
if(!fmt->encodeHeader())
937+
if(!fmt->writeHeader())
938938
{
939939
spdlog::error("Encode header failed.");
940940
return false;
@@ -943,7 +943,7 @@ bool GrkDecompress::encodeHeader(grk_plugin_decompress_callback_info* info)
943943
return true;
944944
}
945945

946-
bool GrkDecompress::encodeInit(grk_plugin_decompress_callback_info* info)
946+
bool GrkDecompress::writeInit(grk_plugin_decompress_callback_info* info)
947947
{
948948
if(!storeToDisk)
949949
return true;
@@ -959,7 +959,7 @@ bool GrkDecompress::encodeInit(grk_plugin_decompress_callback_info* info)
959959
else if(cod_format == GRK_FMT_JPG || cod_format == GRK_FMT_PNG)
960960
compression_level = parameters->compression_level;
961961
auto fmt = info->format_private ? (IImageFormat*)info->format_private : imageFormat;
962-
if(!fmt->encodeInit(info->image, outfileStr, compression_level,
962+
if(!fmt->writeInit(info->image, outfileStr, compression_level,
963963
info->decompressor_parameters->num_threads
964964
? info->decompressor_parameters->num_threads
965965
: std::thread::hardware_concurrency()))
@@ -1035,9 +1035,9 @@ int GrkDecompress::preProcess(grk_plugin_decompress_callback_info* info)
10351035
goto cleanup;
10361036
break;
10371037
}
1038-
parameters->core.io_buffer_callback = grkSerializeBufferCallback;
1038+
parameters->core.io_buffer_callback = grkWriteStripCallback;
10391039
parameters->core.io_user_data = imageFormat;
1040-
parameters->core.io_register_client_callback = grkSerializeRegisterClientCallback;
1040+
parameters->core.io_register_client_callback = grkRegisterReclaimCallback;
10411041
info->format_private = imageFormat;
10421042

10431043
// 1. initialize
@@ -1135,9 +1135,9 @@ int GrkDecompress::preProcess(grk_plugin_decompress_callback_info* info)
11351135
failed = false;
11361136
goto cleanup;
11371137
}
1138-
if(!encodeInit(info))
1138+
if(!writeInit(info))
11391139
return false;
1140-
if(!encodeHeader(info))
1140+
if(!writeHeader(info))
11411141
goto cleanup;
11421142
failed = false;
11431143
cleanup:
@@ -1252,10 +1252,10 @@ int GrkDecompress::postProcess(grk_plugin_decompress_callback_info* info)
12521252
if(storeToDisk)
12531253
{
12541254
// GPU decode path: format was not initialized during preProcess
1255-
// (encodeInit was skipped because grk_decompress was not called).
1255+
// (writeInit was skipped because grk_decompress was not called).
12561256
// Initialize the format now with the bridge image that has actual data.
12571257
if(info->decompress_flags & GRK_DECODE_POST_T1 &&
1258-
fmt->getEncodeState() == IMAGE_FORMAT_UNENCODED)
1258+
fmt->getWriteState() == IMAGE_FORMAT_UNWRITTEN)
12591259
{
12601260
// Set decompress output fields on the bridge image
12611261
if(image->numcomps > 0)
@@ -1277,7 +1277,7 @@ int GrkDecompress::postProcess(grk_plugin_decompress_callback_info* info)
12771277
if(image->rows_per_strip == 0)
12781278
image->rows_per_strip = std::min((uint32_t)32, image->comps[0].h);
12791279
}
1280-
if(!fmt->encodeInit(
1280+
if(!fmt->writeInit(
12811281
image, outfile ? std::string(outfile) : "",
12821282
info->cod_format == GRK_FMT_TIF ? info->decompressor_parameters->compression : 0,
12831283
info->decompressor_parameters->num_threads ? info->decompressor_parameters->num_threads
@@ -1288,12 +1288,12 @@ int GrkDecompress::postProcess(grk_plugin_decompress_callback_info* info)
12881288
}
12891289
}
12901290
auto outfileStr = outfile ? std::string(outfile) : "";
1291-
if(!fmt->encodePixels())
1291+
if(!fmt->writeImage())
12921292
{
12931293
spdlog::error("Outfile {} not generated", outfileStr);
12941294
goto cleanup;
12951295
}
1296-
if(!fmt->encodeFinish())
1296+
if(!fmt->writeFinish())
12971297
{
12981298
spdlog::error("Outfile {} not generated", outfileStr);
12991299
goto cleanup;
@@ -1480,8 +1480,8 @@ int GrkDecompress::main(int argc, const char* argv[])
14801480
goto cleanup;
14811481
}
14821482

1483-
if(!fmt->encodeInit(img, outFilePath, initParams.parameters.compression_level, 1) ||
1484-
!fmt->encodeHeader() || !fmt->encodePixels() || !fmt->encodeFinish())
1483+
if(!fmt->writeInit(img, outFilePath, initParams.parameters.compression_level, 1) ||
1484+
!fmt->writeHeader() || !fmt->writeImage() || !fmt->writeFinish())
14851485
{
14861486
spdlog::error("MJ2 decompress: failed to save sample {} to {}", s, outFilePath);
14871487
delete fmt;

src/lib/codec/apps/GrkDecompress.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ class GrkDecompress
6464

6565
private:
6666
static void generateCompletion(const CLI::App& app);
67-
bool encodeHeader(grk_plugin_decompress_callback_info* info);
68-
bool encodeInit(grk_plugin_decompress_callback_info* info);
67+
bool writeHeader(grk_plugin_decompress_callback_info* info);
68+
bool writeInit(grk_plugin_decompress_callback_info* info);
6969
// returns 0 for failure, 1 for success, and 2 if file is not suitable for decoding
7070
int decompress(const std::string& fileName, DecompressInitParams* initParams);
7171
GrkRC pluginMain(int argc, const char* argv[], DecompressInitParams* initParams);

0 commit comments

Comments
 (0)