summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHecklezz <tj8@live.com.au>2025-09-19 18:49:25 +1000
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2025-09-19 19:16:35 +0300
commit569d7c6a8b1e44b66dad16a3367547cdf3395620 (patch)
tree4d7e500e132f89a235f9d58f82b6a16428c037b0
parentacd879477508e8389607d5eeb0e91531fd7703e9 (diff)
Fix OpenJPEG uploading small textures by correctly accounting for the maximum numresolutions
-rw-r--r--indra/llimagej2coj/llimagej2coj.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp
index 5fa53657a0..7cfadb889d 100644
--- a/indra/llimagej2coj/llimagej2coj.cpp
+++ b/indra/llimagej2coj/llimagej2coj.cpp
@@ -554,11 +554,6 @@ public:
}
- if (!opj_setup_encoder(encoder, &parameters, image))
- {
- return false;
- }
-
U32 width_tiles = (rawImageIn.getWidth() >> 6);
U32 height_tiles = (rawImageIn.getHeight() >> 6);
@@ -572,6 +567,19 @@ public:
height_tiles = 1;
}
+ if (width_tiles == 1 || height_tiles == 1)
+ {
+ // Images with either dimension less than 32 need less number of resolutions otherwise they error
+ int min_dim = rawImageIn.getWidth() < rawImageIn.getHeight() ? rawImageIn.getWidth() : rawImageIn.getHeight();
+ int max_res = 1 + (int)floor(log2(min_dim));
+ parameters.numresolution = max_res;
+ }
+
+ if (!opj_setup_encoder(encoder, &parameters, image))
+ {
+ return false;
+ }
+
U32 tile_count = width_tiles * height_tiles;
U32 data_size_guess = tile_count * TILE_SIZE;