summaryrefslogtreecommitdiff
path: root/src/lib/openjp2/j2k.c
diff options
context:
space:
mode:
authorMickael Savinaud <savmickael@users.noreply.github.com>2012-10-24 15:19:51 +0000
committerMickael Savinaud <savmickael@users.noreply.github.com>2012-10-24 15:19:51 +0000
commit76947f007466ea68cddabd915633d9670dabdb98 (patch)
tree278b9e644806b04dae27ab3e8b54ab8cab0f0f35 /src/lib/openjp2/j2k.c
parentf649754018f61269134e25cfca22eab9c79e22eb (diff)
[trunk] add the support of complex mct encoding when we setup the j2k encoder
Diffstat (limited to 'src/lib/openjp2/j2k.c')
-rw-r--r--src/lib/openjp2/j2k.c43
1 files changed, 19 insertions, 24 deletions
diff --git a/src/lib/openjp2/j2k.c b/src/lib/openjp2/j2k.c
index 5481a6c6..82bc0627 100644
--- a/src/lib/openjp2/j2k.c
+++ b/src/lib/openjp2/j2k.c
@@ -5909,36 +5909,31 @@ void opj_j2k_setup_encoder( opj_j2k_v2_t *p_j2k,
tcp->tccps = (opj_tccp_t*) opj_calloc(image->numcomps, sizeof(opj_tccp_t));
if (parameters->mct_data) {
+
+ OPJ_UINT32 lMctSize = image->numcomps * image->numcomps * sizeof(OPJ_FLOAT32);
+ OPJ_FLOAT32 * lTmpBuf = (OPJ_FLOAT32*)opj_malloc(lMctSize);
+ OPJ_INT32 * l_dc_shift = (OPJ_INT32 *) ((OPJ_BYTE *) parameters->mct_data + lMctSize);
- opj_event_msg_v2(p_manager, EVT_ERROR, "MCT not supported for now\n");
- return;
+ tcp->mct = 2;
+ tcp->m_mct_coding_matrix = (OPJ_FLOAT32*)opj_malloc(lMctSize);
+ memcpy(tcp->m_mct_coding_matrix,parameters->mct_data,lMctSize);
+ memcpy(lTmpBuf,parameters->mct_data,lMctSize);
- /* TODO MSD : merge v2 add invert.c or used a external lib ?
- OPJ_UINT32 lMctSize = image->numcomps * image->numcomps * sizeof(OPJ_FLOAT32);
- OPJ_FLOAT32 * lTmpBuf = (OPJ_FLOAT32*)opj_malloc(lMctSize);
- OPJ_INT32 * l_dc_shift = (OPJ_INT32 *) ((OPJ_BYTE *) parameters->mct_data + lMctSize);
+ tcp->m_mct_decoding_matrix = (OPJ_FLOAT32*)opj_malloc(lMctSize);
+ assert(opj_matrix_inversion_f(lTmpBuf,(tcp->m_mct_decoding_matrix),image->numcomps));
- tcp->mct = 2;
- tcp->m_mct_coding_matrix = (OPJ_FLOAT32*)opj_malloc(lMctSize);
- memcpy(tcp->m_mct_coding_matrix,parameters->mct_data,lMctSize);
- memcpy(lTmpBuf,parameters->mct_data,lMctSize);
+ tcp->mct_norms = (OPJ_FLOAT64*)
+ opj_malloc(image->numcomps * sizeof(OPJ_FLOAT64));
- tcp->m_mct_decoding_matrix = (OPJ_FLOAT32*)opj_malloc(lMctSize);
- assert(opj_matrix_inversion_f(lTmpBuf,(tcp->m_mct_decoding_matrix),image->numcomps));
+ opj_calculate_norms(tcp->mct_norms,image->numcomps,tcp->m_mct_decoding_matrix);
+ opj_free(lTmpBuf);
- tcp->mct_norms = (OPJ_FLOAT64*)
- opj_malloc(image->numcomps * sizeof(OPJ_FLOAT64));
-
- opj_calculate_norms(tcp->mct_norms,image->numcomps,tcp->m_mct_decoding_matrix);
- opj_free(lTmpBuf);
-
- for (i = 0; i < image->numcomps; i++) {
- opj_tccp_t *tccp = &tcp->tccps[i];
- tccp->m_dc_level_shift = l_dc_shift[i];
- }
+ for (i = 0; i < image->numcomps; i++) {
+ opj_tccp_t *tccp = &tcp->tccps[i];
+ tccp->m_dc_level_shift = l_dc_shift[i];
+ }
- opj_j2k_setup_mct_encoding(tcp,image);
- */
+ opj_j2k_setup_mct_encoding(tcp,image);
}
else {
for (i = 0; i < image->numcomps; i++) {