Merge branch 'master' into meshupload

This commit is contained in:
Drake Arconis
2013-01-06 04:03:49 -05:00
5 changed files with 60 additions and 84 deletions

View File

@@ -2,18 +2,6 @@
include(Linking) include(Linking)
if(INSTALL_PROPRIETARY)
include(Prebuilt)
use_prebuilt_binary(fmodex)
endif(INSTALL_PROPRIETARY)
find_library(FMODEX_LIBRARY
NAMES fmodex fmodexL fmodex_vc fmodexL_vc
PATHS
optimized ${ARCH_PREBUILT_DIRS_RELEASE}
debug ${ARCH_PREBUILT_DIRS_DEBUG}
)
if (NOT FMODEX_LIBRARY) if (NOT FMODEX_LIBRARY)
set(FMODEX_SDK_DIR CACHE PATH "Path to the FMOD Ex SDK.") set(FMODEX_SDK_DIR CACHE PATH "Path to the FMOD Ex SDK.")
if (FMODEX_SDK_DIR) if (FMODEX_SDK_DIR)
@@ -21,19 +9,19 @@ if (NOT FMODEX_LIBRARY)
find_library(FMODEX_LIBRARY find_library(FMODEX_LIBRARY
fmodex_vc fmodexL_vc fmodex fmodexL fmodex_vc fmodexL_vc fmodex fmodexL
PATHS PATHS
${FMODEX_SDK_DIR}/api/lib "${FMODEX_SDK_DIR}/api/lib"
${FMODEX_SDK_DIR}/api "${FMODEX_SDK_DIR}/api"
${FMODEX_SDK_DIR}/lib "${FMODEX_SDK_DIR}/lib"
${FMODEX_SDK_DIR} "${FMODEX_SDK_DIR}"
) )
elseif(WORD_SIZE EQUAL 64) elseif(WORD_SIZE EQUAL 64)
find_library(FMODEX_LIBRARY find_library(FMODEX_LIBRARY
fmodex64 fmodexL64 fmodex64 fmodexL64
PATHS PATHS
${FMODEX_SDK_DIR}/api/lib "${FMODEX_SDK_DIR}/api/lib"
${FMODEX_SDK_DIR}/api "${FMODEX_SDK_DIR}/api"
${FMODEX_SDK_DIR}/lib "${FMODEX_SDK_DIR}/lib"
${FMODEX_SDK_DIR} "${FMODEX_SDK_DIR}"
) )
endif(WORD_SIZE EQUAL 32) endif(WORD_SIZE EQUAL 32)
endif(FMODEX_SDK_DIR) endif(FMODEX_SDK_DIR)
@@ -42,24 +30,24 @@ if (NOT FMODEX_LIBRARY)
find_library(FMODEX_LIBRARY find_library(FMODEX_LIBRARY
fmodex_vc fmodexL_vc fmodex_vc fmodexL_vc
PATHS PATHS
${FMODEX_PROG_DIR}/api/lib "${FMODEX_PROG_DIR}/api/lib"
${FMODEX_PROG_DIR}/api "${FMODEX_PROG_DIR}/api"
${FMODEX_PROG_DIR} "${FMODEX_PROG_DIR}"
) )
if(FMODEX_LIBRARY) if(FMODEX_LIBRARY)
message(STATUS "Found fmodex in ${FMODEX_PROG_DIR}") message(STATUS "Found fmodex in ${FMODEX_PROG_DIR}")
set(FMODEX_SDK_DIR ${FMODEX_PROG_DIR}) set(FMODEX_SDK_DIR "${FMODEX_PROG_DIR}")
set(FMODEX_SDK_DIR ${FMODEX_PROG_DIR} CACHE PATH "Path to the FMOD Ex SDK." FORCE) set(FMODEX_SDK_DIR "${FMODEX_PROG_DIR}" CACHE PATH "Path to the FMOD Ex SDK." FORCE)
endif(FMODEX_LIBRARY) endif(FMODEX_LIBRARY)
endif(WINDOWS AND NOT FMODEX_LIBRARY) endif(WINDOWS AND NOT FMODEX_LIBRARY)
endif (NOT FMODEX_LIBRARY) endif (NOT FMODEX_LIBRARY)
find_path(FMODEX_INCLUDE_DIR fmod.hpp find_path(FMODEX_INCLUDE_DIR fmod.hpp
${LIBS_PREBUILT_DIR}/include/fmodex "${LIBS_PREBUILT_DIR}/include/fmodex"
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/fmodex "${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/fmodex"
${FMODEX_SDK_DIR}/api/inc "${FMODEX_SDK_DIR}/api/inc"
${FMODEX_SDK_DIR}/inc "${FMODEX_SDK_DIR}/inc"
${FMODEX_SDK_DIR} "${FMODEX_SDK_DIR}"
) )
if(DARWIN) if(DARWIN)

View File

@@ -703,15 +703,15 @@ static void j2k_read_cox(opj_j2k_t *j2k, int compno) {
/* If user wants to remove more resolutions than the codestream contains, return error*/ /* If user wants to remove more resolutions than the codestream contains, return error*/
if (cp->reduce >= tccp->numresolutions) { if (cp->reduce >= tccp->numresolutions) {
opj_event_msg(j2k->cinfo, EVT_ERROR, "Error decoding component %d.\nThe number of resolutions to remove is higher than the number " opj_event_msg(j2k->cinfo, EVT_ERROR, "Error decoding component %d.\nThe number of resolutions to remove is higher than the number "
"of resolutions of this component\nModify the cp_reduce parameter.\n\n", compno); "of resolutions of this component\nModify the cp_reduce parameter.\n\n", compno);
j2k->state |= J2K_STATE_ERR; j2k->state |= J2K_STATE_ERR;
} }
if( tccp->numresolutions > J2K_MAXRLVLS ) { if( tccp->numresolutions > J2K_MAXRLVLS ) {
opj_event_msg(j2k->cinfo, EVT_ERROR, "Error decoding component %d.\nThe number of resolutions is too big: %d vs max= %d. Truncating.\n\n", opj_event_msg(j2k->cinfo, EVT_ERROR, "Error decoding component %d.\nThe number of resolutions is too big: %d vs max= %d. Truncating.\n\n",
compno, tccp->numresolutions, J2K_MAXRLVLS); compno, tccp->numresolutions, J2K_MAXRLVLS);
j2k->state |= J2K_STATE_ERR; j2k->state |= J2K_STATE_ERR;
tccp->numresolutions = J2K_MAXRLVLS; tccp->numresolutions = J2K_MAXRLVLS;
} }
tccp->cblkw = cio_read(cio, 1) + 2; /* SPcox (E) */ tccp->cblkw = cio_read(cio, 1) + 2; /* SPcox (E) */
tccp->cblkh = cio_read(cio, 1) + 2; /* SPcox (F) */ tccp->cblkh = cio_read(cio, 1) + 2; /* SPcox (F) */
@@ -1516,25 +1516,7 @@ static void j2k_read_sod(opj_j2k_t *j2k) {
if (len == cio_numbytesleft(cio) + 1) { if (len == cio_numbytesleft(cio) + 1) {
truncate = 1; /* Case of a truncate codestream */ truncate = 1; /* Case of a truncate codestream */
} }
{/* chop padding bytes: */
unsigned char *s, *e;
s = cio_getbp(cio);
e = s + len;
if(len > 8) s = e - 8;
if(e[-2] == 0x00 && e[-1] == 0x00) /* padding bytes */
{
while(e > s)
{
if(e[-2] == 0xff && e[-1] == 0xd9) break;
--len; --e; truncate = 1;
}
}
}
data = j2k->tile_data[curtileno]; data = j2k->tile_data[curtileno];
data = (unsigned char*) opj_realloc(data, (j2k->tile_len[curtileno] + len) * sizeof(unsigned char)); data = (unsigned char*) opj_realloc(data, (j2k->tile_len[curtileno] + len) * sizeof(unsigned char));
@@ -1935,15 +1917,9 @@ opj_image_t* j2k_decode(opj_j2k_t *j2k, opj_cio_t *cio, opj_codestream_info_t *c
#endif /* USE_JPWL */ #endif /* USE_JPWL */
if (id >> 8 != 0xff) { if (id >> 8 != 0xff) {
if(cio_numbytesleft(cio) != 0) /* not end of file reached and no EOC */ opj_image_destroy(image);
{ opj_event_msg(cinfo, EVT_ERROR, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id);
opj_event_msg(cinfo, EVT_ERROR, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id); return 0;
opj_image_destroy(image);
return 0;
}
opj_event_msg(cinfo, EVT_WARNING, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id);
j2k->state = J2K_STATE_NEOC;
break;
} }
e = j2k_dec_mstab_lookup(id); e = j2k_dec_mstab_lookup(id);
/* Check if the marker is known*/ /* Check if the marker is known*/
@@ -2037,15 +2013,9 @@ opj_image_t* j2k_decode_jpt_stream(opj_j2k_t *j2k, opj_cio_t *cio, opj_codestre
id = cio_read(cio, 2); id = cio_read(cio, 2);
if (id >> 8 != 0xff) { if (id >> 8 != 0xff) {
if(cio_numbytesleft(cio) != 0) /* no end of file reached and no EOC */ opj_image_destroy(image);
{ opj_event_msg(cinfo, EVT_ERROR, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id);
opj_event_msg(cinfo, EVT_ERROR, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id); return 0;
opj_image_destroy(image);
return 0;
}
opj_event_msg(cinfo, EVT_WARNING, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id);
j2k->state = J2K_STATE_NEOC;
break;
} }
e = j2k_dec_mstab_lookup(id); e = j2k_dec_mstab_lookup(id);
if (!(j2k->state & e->states)) { if (!(j2k->state & e->states)) {

View File

@@ -1091,14 +1091,27 @@ static double t1_getwmsedec(
int numcomps, int numcomps,
int mct) int mct)
{ {
double w1, w2, wmsedec; double w1 = 1, w2, wmsedec;
// Prevent running an MCT on more than 3 components. NB openjpeg v2.0 will support this via
// custom MCT tables that can be passed as encode parameters, 1.3 cannot support this as it
// uses a static table of 3 entries and there for can only cope with 3 components with out an
// array overflow
if(numcomps==3) {
if (qmfbid == 1) {
w1 = (numcomps > 1) ? mct_getnorm(compno) : 1.0;
} else {
w1 = (numcomps > 1) ? mct_getnorm_real(compno) : 1.0;
}
}
if (qmfbid == 1) { if (qmfbid == 1) {
w1 = (mct && numcomps==3) ? mct_getnorm(compno) : 1.0;
w2 = dwt_getnorm(level, orient); w2 = dwt_getnorm(level, orient);
} else { /* if (qmfbid == 0) */ } else { /* if (qmfbid == 0) */
w1 = (mct && numcomps==3) ? mct_getnorm_real(compno) : 1.0;
w2 = dwt_getnorm_real(level, orient); w2 = dwt_getnorm_real(level, orient);
} }
wmsedec = w1 * w2 * stepsize * (1 << bpno); wmsedec = w1 * w2 * stepsize * (1 << bpno);
wmsedec *= wmsedec * nmsedec / 8192.0; wmsedec *= wmsedec * nmsedec / 8192.0;

View File

@@ -1418,15 +1418,20 @@ opj_bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno
int numres2decode; int numres2decode;
if (tcd->cp->reduce != 0) { if (tcd->cp->reduce != 0) {
if ( tile->comps[compno].numresolutions < ( tcd->cp->reduce - 1 ) ) { if ( tile->comps[compno].numresolutions < ( tcd->cp->reduce - 1 ) ) {
opj_event_msg(tcd->cinfo, EVT_ERROR, "Error decoding tile. The number of resolutions to remove [%d+1] is higher than the number " opj_event_msg(tcd->cinfo, EVT_ERROR, "Error decoding tile. The number of resolutions to remove [%d+1] is higher than the number "
" of resolutions in the original codestream [%d]\nModify the cp_reduce parameter.\n", tcd->cp->reduce, tile->comps[compno].numresolutions); " of resolutions in the original codestream [%d]\nModify the cp_reduce parameter.\n", tcd->cp->reduce, tile->comps[compno].numresolutions);
return OPJ_FALSE; return OPJ_FALSE;
} }
else { else {
tcd->image->comps[compno].resno_decoded = tcd->image->comps[compno].resno_decoded =
tile->comps[compno].numresolutions - tcd->cp->reduce - 1; tile->comps[compno].numresolutions - tcd->cp->reduce - 1;
} }
}
if(!tilec->data) {
opj_event_msg(tcd->cinfo, EVT_ERROR, "Error decoding tile. null data\n");
return OPJ_FALSE;
} }
numres2decode = tcd->image->comps[compno].resno_decoded + 1; numres2decode = tcd->image->comps[compno].resno_decoded + 1;

View File

@@ -88,7 +88,7 @@ LLObjectSelectionHandle LLToolSelect::handleObjectSelection(const LLPickInfo& pi
} }
// [RLVa:KB] - Checked: 2010-11-29 (RLVa-1.3.0c) | Modified: RLVa-1.3.0c // [RLVa:KB] - Checked: 2010-11-29 (RLVa-1.3.0c) | Modified: RLVa-1.3.0c
if (rlv_handler_t::isEnabled()) if ( (object) && (rlv_handler_t::isEnabled()) )
{ {
if (!gRlvHandler.canEdit(object)) if (!gRlvHandler.canEdit(object))
{ {
@@ -109,7 +109,7 @@ LLObjectSelectionHandle LLToolSelect::handleObjectSelection(const LLPickInfo& pi
} }
} }
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_FARTOUCH)) && (object) && ((!object->isAttachment()) || (!object->permYouOwner())) && if ( (gRlvHandler.hasBehaviour(RLV_BHVR_FARTOUCH)) && ((!object->isAttachment()) || (!object->permYouOwner())) &&
(dist_vec_squared(gAgent.getPositionAgent(), object->getPositionRegion()) > 1.5f * 1.5f) ) (dist_vec_squared(gAgent.getPositionAgent(), object->getPositionRegion()) > 1.5f * 1.5f) )
{ {
// NOTE-RLVa: see behaviour notes for a rather lengthy explanation of why we're doing things this way // NOTE-RLVa: see behaviour notes for a rather lengthy explanation of why we're doing things this way