Update to current libjxl API

This commit is contained in:
xiota 2024-04-10 12:32:49 +00:00
parent 8c4ab0277a
commit 7715d15615

View File

@ -859,7 +859,6 @@ int ImageIO::loadJxl(const Glib::ustring &fname)
std::istreambuf_iterator<char>()); std::istreambuf_iterator<char>());
instream.close(); instream.close();
// multi-threaded parallel runner. // multi-threaded parallel runner.
auto runner = JxlResizableParallelRunnerMake(nullptr); auto runner = JxlResizableParallelRunnerMake(nullptr);
@ -886,15 +885,14 @@ int ImageIO::loadJxl(const Glib::ustring &fname)
JxlDecoderStatus status = JxlDecoderProcessInput(dec.get()); JxlDecoderStatus status = JxlDecoderProcessInput(dec.get());
if (status == JXL_DEC_BASIC_INFO) { if (status == JXL_DEC_BASIC_INFO) {
if (JXL_DEC_SUCCESS != if (JXL_DEC_SUCCESS != JxlDecoderGetBasicInfo(dec.get(), &info)) {
JxlDecoderGetBasicInfo(dec.get(), &info)) {
g_printerr("Error: JxlDecoderGetBasicInfo failed\n"); g_printerr("Error: JxlDecoderGetBasicInfo failed\n");
return IMIO_HEADERERROR; return IMIO_HEADERERROR;
} }
JxlResizableParallelRunnerSetThreads( JxlResizableParallelRunnerSetThreads(
runner.get(), JxlResizableParallelRunnerSuggestThreads( runner.get(),
info.xsize, info.ysize)); JxlResizableParallelRunnerSuggestThreads(info.xsize, info.ysize));
} else if (status == JXL_DEC_COLOR_ENCODING) { } else if (status == JXL_DEC_COLOR_ENCODING) {
// check for ICC profile // check for ICC profile
deleteLoadedProfileData(); deleteLoadedProfileData();
@ -902,8 +900,7 @@ int ImageIO::loadJxl(const Glib::ustring &fname)
size_t icc_size = 0; size_t icc_size = 0;
if (JXL_DEC_SUCCESS != if (JXL_DEC_SUCCESS !=
JxlDecoderGetICCProfileSize(dec.get(), &format, JxlDecoderGetICCProfileSize(dec.get(), _PROFILE_, &icc_size)) {
_PROFILE_, &icc_size)) {
g_printerr("Warning: JxlDecoderGetICCProfileSize failed\n"); g_printerr("Warning: JxlDecoderGetICCProfileSize failed\n");
} }
@ -911,7 +908,7 @@ int ImageIO::loadJxl(const Glib::ustring &fname)
icc_profile.resize(icc_size); icc_profile.resize(icc_size);
if (JXL_DEC_SUCCESS != if (JXL_DEC_SUCCESS !=
JxlDecoderGetColorAsICCProfile( JxlDecoderGetColorAsICCProfile(
dec.get(), &format, _PROFILE_, dec.get(), _PROFILE_,
icc_profile.data(), icc_profile.size())) { icc_profile.data(), icc_profile.size())) {
g_printerr( g_printerr(
"Warning: JxlDecoderGetColorAsICCProfile failed\n"); "Warning: JxlDecoderGetColorAsICCProfile failed\n");
@ -924,14 +921,15 @@ int ImageIO::loadJxl(const Glib::ustring &fname)
} }
} else if (status == JXL_DEC_NEED_IMAGE_OUT_BUFFER) { } else if (status == JXL_DEC_NEED_IMAGE_OUT_BUFFER) {
format.data_type = JXL_TYPE_FLOAT; format.data_type = JXL_TYPE_FLOAT;
if (JXL_DEC_SUCCESS != JxlDecoderImageOutBufferSize(
dec.get(), &format, &buffer_size)) { if (JXL_DEC_SUCCESS !=
JxlDecoderImageOutBufferSize(dec.get(), &format, &buffer_size)) {
g_printerr("Error: JxlDecoderImageOutBufferSize failed\n"); g_printerr("Error: JxlDecoderImageOutBufferSize failed\n");
return IMIO_READERROR; return IMIO_READERROR;
} }
buffer = g_malloc(buffer_size); buffer = g_malloc(buffer_size);
if (JXL_DEC_SUCCESS != JxlDecoderSetImageOutBuffer(dec.get(), &format, if (JXL_DEC_SUCCESS != JxlDecoderSetImageOutBuffer(dec.get(), &format, buffer, buffer_size)) {
buffer, buffer_size)) {
g_printerr("Error: JxlDecoderSetImageOutBuffer failed\n"); g_printerr("Error: JxlDecoderSetImageOutBuffer failed\n");
g_free(buffer); g_free(buffer);
return IMIO_READERROR; return IMIO_READERROR;