X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libopenjpeg%2Fmct.c;h=ed34be9c6bdaa2ef0d38e539aed32f4a29125355;hb=94a5e081e5fb5e8b1ad00b95960b96d7093241d1;hp=c29218a43aa0e6e5f1be296ac179ea441d45ac2b;hpb=4a2673772a71a9468ecb5149e9d324835b306f3c;p=openjpeg.git diff --git a/libopenjpeg/mct.c b/libopenjpeg/mct.c index c29218a4..ed34be9c 100644 --- a/libopenjpeg/mct.c +++ b/libopenjpeg/mct.c @@ -45,6 +45,16 @@ static const double mct_norms[3] = { 1.732, .8292, .8292 }; /* */ static const double mct_norms_real[3] = { 1.732, 1.805, 1.573 }; +const OPJ_FLOAT64 * get_mct_norms () +{ + return mct_norms; +} + +const OPJ_FLOAT64 * get_mct_norms_real () +{ + return mct_norms_real; +} + /* */ /* Foward reversible MCT. */ /* */ @@ -190,6 +200,62 @@ double mct_getnorm_real(int compno) { } +opj_bool mct_encode_custom( + // MCT data + OPJ_BYTE * pCodingdata, + // size of components + OPJ_UINT32 n, + // components + OPJ_BYTE ** pData, + // nb of components (i.e. size of pData) + OPJ_UINT32 pNbComp, + // tells if the data is signed + OPJ_UINT32 isSigned) +{ + OPJ_FLOAT32 * lMct = (OPJ_FLOAT32 *) pCodingdata; + OPJ_UINT32 i; + OPJ_UINT32 j; + OPJ_UINT32 k; + OPJ_UINT32 lNbMatCoeff = pNbComp * pNbComp; + OPJ_INT32 * lCurrentData = 00; + OPJ_INT32 * lCurrentMatrix = 00; + OPJ_INT32 ** lData = (OPJ_INT32 **) pData; + OPJ_UINT32 lMultiplicator = 1 << 13; + OPJ_INT32 * lMctPtr; + + lCurrentData = (OPJ_INT32 *) opj_malloc((pNbComp + lNbMatCoeff) * sizeof(OPJ_INT32)); + if (! lCurrentData) { + return OPJ_FALSE; + } + + lCurrentMatrix = lCurrentData + pNbComp; + + for (i =0;i