diff --git a/indra/llimage/llimagej2c.cpp b/indra/llimage/llimagej2c.cpp index e01e3adce..4daf0ec1f 100644 --- a/indra/llimage/llimagej2c.cpp +++ b/indra/llimage/llimagej2c.cpp @@ -381,7 +381,13 @@ S32 LLImageJ2C::calcDataSize(S32 discard_level) static const LLCachedControl legacy_size("SianaLegacyJ2CSize", false); if (legacy_size) { - return calcDataSizeJ2C(getWidth(), getHeight(), getComponents(), discard_level, mRate); + static const LLCachedControl exponent("SianaJ2CSizeExponent", 1.0f); + static const LLCachedControl offset("SianaJ2CSizeOffset", 0); + + S32 size = calcDataSizeJ2C(getWidth(), getHeight(), getComponents(), discard_level, mRate); + S32 size_d0 = calcDataSizeJ2C(getWidth(), getHeight(), getComponents(), discard_level, mRate); + + return pow(size/size_d0, exponent)*size_d0 + offset; } discard_level = llclamp(discard_level, 0, MAX_DISCARD_LEVEL); diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 07da20141..dc4aeef4a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -37,6 +37,29 @@ + SianaJ2CSizeExponent + + Comment + Exponent of size estimator. Should be between 0.0 and 1.0 + Persist + 1 + Type + F32 + Value + 0.5 + + SianaJ2CSizeOffset + + Comment + Number of bytes to add to size estimator. + Persist + 1 + Type + S32 + Value + 100 + + SianaLegacyJ2CSize Comment