Merge branch 'master' of git://github.com/siana/SingularityViewer

This commit is contained in:
Lirusaito
2012-03-27 19:29:24 -04:00
5 changed files with 37 additions and 16 deletions

View File

@@ -363,8 +363,7 @@ S32 LLImageJ2C::calcHeaderSizeJ2C()
return FIRST_PACKET_SIZE; // Hack. just needs to be >= actual header size...
}
//static
S32 LLImageJ2C::calcDataSizeJ2C(S32 w, S32 h, S32 comp, S32 discard_level, F32 rate)
static S32 cald_data_size_help(S32 w, S32 h, S32 comp, S32 discard_level, F32 rate)
{
if (rate <= 0.f) rate = .125f;
while (discard_level > 0)
@@ -376,7 +375,22 @@ S32 LLImageJ2C::calcDataSizeJ2C(S32 w, S32 h, S32 comp, S32 discard_level, F32 r
discard_level--;
}
S32 bytes = (S32)((F32)(w*h*comp)*rate);
//bytes = llmax(bytes, calcHeaderSizeJ2C());
return bytes;
}
//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);
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;
}
@@ -392,15 +406,7 @@ S32 LLImageJ2C::calcDataSize(S32 discard_level)
static const LLCachedControl<bool> legacy_size("SianaLegacyJ2CSize", false);
if (legacy_size) {
static const LLCachedControl<F32> exponent("SianaJ2CSizeExponent", 1.0f);
static const LLCachedControl<S32> offset("SianaJ2CSizeOffset", 0);
S32 size = calcDataSizeJ2C(getWidth(), getHeight(), getComponents(), discard_level, mRate);
S32 size_d0 = calcDataSizeJ2C(getWidth(), getHeight(), getComponents(), 0, mRate);
llassert_always(size_d0);
S32 bytes = pow(size/size_d0, exponent)*size_d0 + offset;
bytes = llmax(bytes, calcHeaderSizeJ2C());
return bytes;
return calcDataSizeJ2C(getWidth(), getHeight(), getComponents(), discard_level, mRate);
}
discard_level = llclamp(discard_level, 0, MAX_DISCARD_LEVEL);

View File

@@ -149,7 +149,19 @@ BOOL LLImageJ2COJ::decodeImpl(LLImageJ2C &base, LLImageRaw &raw_image, F32 decod
opj_setup_decoder(dinfo, &parameters);
/* open a byte stream */
#if 1
std::vector<U8> data(base.getData(), base.getData()+base.getDataSize());
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());
#endif
/* decode the stream and fill the image structure */
image = opj_decode(dinfo, cio);

View File

@@ -2004,7 +2004,7 @@ template <class T,S32 type> struct VertexBufferStrider
}
else
{
llerrs << "VertexBufferStrider could not find valid vertex data." << llendl;
llwarns << "VertexBufferStrider could not find valid vertex data." << llendl;
}
return false;
}

View File

@@ -287,7 +287,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>0.5</real>
<real>1.0</real>
</map>
<key>SianaJ2CSizeOffset</key>
<map>
@@ -298,7 +298,7 @@
<key>Type</key>
<string>S32</string>
<key>Value</key>
<integer>100</integer>
<integer>0</integer>
</map>
<key>SianaLegacyJ2CSize</key>

View File

@@ -1740,7 +1740,10 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
}
}
if (rebuild_color)
// <FS:ND> FS-5132 Only use color strider if face has colors.
// if (rebuild_color)
if (rebuild_color && mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_COLOR) )
// </FS:ND>
{
LLFastTimer t(FTM_FACE_GEOM_COLOR);
mVertexBuffer->getColorStrider(colors, mGeomIndex, mGeomCount, map_range);