summaryrefslogtreecommitdiff
path: root/indra/llimagej2coj/llimagej2coj.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llimagej2coj/llimagej2coj.cpp')
-rw-r--r--indra/llimagej2coj/llimagej2coj.cpp74
1 files changed, 25 insertions, 49 deletions
diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp
index 431f5aa001..5fa53657a0 100644
--- a/indra/llimagej2coj/llimagej2coj.cpp
+++ b/indra/llimagej2coj/llimagej2coj.cpp
@@ -29,8 +29,6 @@
// this is defined so that we get static linking.
#include "openjpeg.h"
-#include "event.h"
-#include "cio.h"
// Factory function: see declaration in llimagej2c.cpp
LLImageJ2CImpl* fallbackCreateLLImageJ2CImpl()
@@ -48,6 +46,7 @@ std::string LLImageJ2COJ::getEngineInfo() const
#endif
}
+#if WANT_VERBOSE_OPJ_SPAM
// Return string from message, eliminating final \n if present
static std::string chomp(const char* msg)
{
@@ -63,27 +62,34 @@ static std::string chomp(const char* msg)
}
return message;
}
+#endif
/**
sample error callback expecting a LLFILE* client object
*/
void error_callback(const char* msg, void*)
{
- LL_DEBUGS() << "LLImageJ2COJ: " << chomp(msg) << LL_ENDL;
+#if WANT_VERBOSE_OPJ_SPAM
+ LL_WARNS() << "LLImageJ2COJ: " << chomp(msg) << LL_ENDL;
+#endif
}
/**
sample warning callback expecting a LLFILE* client object
*/
void warning_callback(const char* msg, void*)
{
- LL_DEBUGS() << "LLImageJ2COJ: " << chomp(msg) << LL_ENDL;
+#if WANT_VERBOSE_OPJ_SPAM
+ LL_WARNS() << "LLImageJ2COJ: " << chomp(msg) << LL_ENDL;
+#endif
}
/**
sample debug callback expecting no client object
*/
void info_callback(const char* msg, void*)
{
- LL_DEBUGS() << "LLImageJ2COJ: " << chomp(msg) << LL_ENDL;
+#if WANT_VERBOSE_OPJ_SPAM
+ LL_INFOS() << "LLImageJ2COJ: " << chomp(msg) << LL_ENDL;
+#endif
}
// Divide a by 2 to the power of b and round upwards
@@ -95,39 +101,13 @@ int ceildivpow2(int a, int b)
class JPEG2KBase
{
public:
- JPEG2KBase() {}
+ JPEG2KBase() = default;
U8* buffer = nullptr;
OPJ_SIZE_T size = 0;
OPJ_OFF_T offset = 0;
};
-#define WANT_VERBOSE_OPJ_SPAM LL_DEBUG
-
-static void opj_info(const char* msg, void* user_data)
-{
- llassert(user_data);
-#if WANT_VERBOSE_OPJ_SPAM
- LL_INFOS("OpenJPEG") << msg << LL_ENDL;
-#endif
-}
-
-static void opj_warn(const char* msg, void* user_data)
-{
- llassert(user_data);
-#if WANT_VERBOSE_OPJ_SPAM
- LL_WARNS("OpenJPEG") << msg << LL_ENDL;
-#endif
-}
-
-static void opj_error(const char* msg, void* user_data)
-{
- llassert(user_data);
-#if WANT_VERBOSE_OPJ_SPAM
- LL_WARNS("OpenJPEG") << msg << LL_ENDL;
-#endif
-}
-
static OPJ_SIZE_T opj_read(void * buffer, OPJ_SIZE_T bytes, void* user_data)
{
llassert(user_data && buffer);
@@ -283,11 +263,7 @@ public:
JPEG2KDecode(S8 discardLevel)
{
- memset(&event_mgr, 0, sizeof(opj_event_mgr_t));
memset(&parameters, 0, sizeof(opj_dparameters_t));
- event_mgr.error_handler = error_callback;
- event_mgr.warning_handler = warning_callback;
- event_mgr.info_handler = info_callback;
opj_set_default_decoder_parameters(&parameters);
parameters.cp_reduce = discardLevel;
}
@@ -331,6 +307,11 @@ public:
decoder = opj_create_decompress(OPJ_CODEC_J2K);
+ /* catch events using our callbacks and give a local context */
+ opj_set_error_handler(decoder, error_callback, nullptr);
+ opj_set_warning_handler(decoder, warning_callback, nullptr);
+ opj_set_info_handler(decoder, info_callback, nullptr);
+
if (!opj_setup_decoder(decoder, &parameters))
{
return false;
@@ -401,9 +382,9 @@ public:
decoder = opj_create_decompress(OPJ_CODEC_J2K);
opj_setup_decoder(decoder, &parameters);
- opj_set_info_handler(decoder, opj_info, this);
- opj_set_warning_handler(decoder, opj_warn, this);
- opj_set_error_handler(decoder, opj_error, this);
+ opj_set_info_handler(decoder, info_callback, this);
+ opj_set_warning_handler(decoder, warning_callback, this);
+ opj_set_error_handler(decoder, error_callback, this);
if (stream)
{
@@ -469,7 +450,6 @@ public:
private:
opj_dparameters_t parameters;
- opj_event_mgr_t event_mgr;
opj_image_t* image = nullptr;
opj_codec_t* decoder = nullptr;
opj_stream_t* stream = nullptr;
@@ -484,10 +464,6 @@ public:
JPEG2KEncode(const char* comment_text_in, bool reversible)
{
memset(&parameters, 0, sizeof(opj_cparameters_t));
- memset(&event_mgr, 0, sizeof(opj_event_mgr_t));
- event_mgr.error_handler = error_callback;
- event_mgr.warning_handler = warning_callback;
- event_mgr.info_handler = info_callback;
opj_set_default_encoder_parameters(&parameters);
parameters.cod_format = OPJ_CODEC_J2K;
@@ -555,6 +531,11 @@ public:
encoder = opj_create_compress(OPJ_CODEC_J2K);
+ /* catch events using our callbacks and give a local context */
+ opj_set_error_handler(encoder, error_callback, nullptr);
+ opj_set_warning_handler(encoder, warning_callback, nullptr);
+ opj_set_info_handler(encoder, info_callback, nullptr);
+
parameters.tcp_mct = (image->numcomps >= 3) ? 1 : 0; // no color transform for RGBA images
@@ -578,10 +559,6 @@ public:
return false;
}
- opj_set_info_handler(encoder, opj_info, this);
- opj_set_warning_handler(encoder, opj_warn, this);
- opj_set_error_handler(encoder, opj_error, this);
-
U32 width_tiles = (rawImageIn.getWidth() >> 6);
U32 height_tiles = (rawImageIn.getHeight() >> 6);
@@ -786,7 +763,6 @@ public:
private:
opj_cparameters_t parameters;
- opj_event_mgr_t event_mgr;
opj_image_t* image = nullptr;
opj_codec_t* encoder = nullptr;
opj_stream_t* stream = nullptr;