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