Another stab at making textures work as they should
This commit is contained in:
@@ -382,16 +382,16 @@ static S32 cald_data_size_help(S32 w, S32 h, S32 comp, S32 discard_level, F32 ra
|
||||
//static
|
||||
S32 LLImageJ2C::calcDataSizeJ2C(S32 w, S32 h, S32 comp, S32 discard_level, F32 rate)
|
||||
{
|
||||
static const LLCachedControl<F32> exponent("SianaJ2CSizeExponent", 1.0f);
|
||||
static const LLCachedControl<S32> offset("SianaJ2CSizeOffset", 0);
|
||||
S32 size = cald_data_size_help(w, h, comp, discard_level, rate);
|
||||
S32 size_d0 = cald_data_size_help(w, h, comp, 0, rate);
|
||||
static const LLCachedControl<F32> exponent("SianaJ2CSizeExponent", 1.0f);
|
||||
static const LLCachedControl<S32> offset("SianaJ2CSizeOffset", 0);
|
||||
S32 size = cald_data_size_help(w, h, comp, discard_level, rate);
|
||||
S32 size_d0 = cald_data_size_help(w, h, comp, 0, rate);
|
||||
|
||||
llassert_always(size_d0);
|
||||
S32 bytes = pow(size/size_d0, exponent)*size_d0 + offset;
|
||||
bytes = llmax (0, bytes - 600);
|
||||
bytes = ((bytes + (1000 - 1))/1000)*1000 + 600;
|
||||
return bytes;
|
||||
llassert_always(size_d0);
|
||||
S32 bytes = size_d0*pow((double)size/size_d0, (double)exponent) + offset;
|
||||
bytes = llmax (0, bytes - 600);
|
||||
bytes = ((bytes + (1000 - 1))/1000)*1000 + 600;
|
||||
return bytes;
|
||||
}
|
||||
|
||||
S32 LLImageJ2C::calcHeaderSize()
|
||||
|
||||
@@ -149,10 +149,15 @@ BOOL LLImageJ2COJ::decodeImpl(LLImageJ2C &base, LLImageRaw &raw_image, F32 decod
|
||||
opj_setup_decoder(dinfo, ¶meters);
|
||||
|
||||
/* open a byte stream */
|
||||
#if 0
|
||||
#if 1
|
||||
std::vector<U8> data(base.getData(), base.getData()+base.getDataSize());
|
||||
data.push_back((U8)0xFF);
|
||||
data.push_back((U8)0xD9);
|
||||
S32 size = data.size();
|
||||
if (data[size-1] == 0xFF) {
|
||||
data.push_back((U8)0xD9);
|
||||
} else if (data[size-2] != 0xFF || data[size-1] != 0xD9) {
|
||||
data.push_back((U8)0xFF);
|
||||
data.push_back((U8)0xD9);
|
||||
}
|
||||
cio = opj_cio_open((opj_common_ptr)dinfo, &data[0], data.size());
|
||||
#else
|
||||
cio = opj_cio_open((opj_common_ptr)dinfo, base.getData(), base.getDataSize());
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
<key>Type</key>
|
||||
<string>S32</string>
|
||||
<key>Value</key>
|
||||
<integer>100</integer>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
|
||||
<key>SianaLegacyJ2CSize</key>
|
||||
|
||||
Reference in New Issue
Block a user