Loading lib_com/ivas_cnst.h +7 −0 Original line number Diff line number Diff line Loading @@ -1335,11 +1335,18 @@ typedef struct { unsigned short length[81]; } HUFF_ELEMENTS; #ifdef FIX_891_PARAMUPMIX_CLEANUP typedef struct { HUFF_ELEMENTS df0; HUFF_ELEMENTS df; } HUFF_TABLE; #else typedef struct { HUFF_ELEMENTS df0; HUFF_ELEMENTS df; HUFF_ELEMENTS dt; } HUFF_TABLE; #endif typedef enum { ALPHA, Loading lib_dec/ivas_mc_paramupmix_dec.c +45 −52 Original line number Diff line number Diff line Loading @@ -1360,34 +1360,42 @@ static void huffman_decode( int32_t *vq ) { const int16_t( *huff_node_table )[2]; int16_t iv, bdt, nquant, offset; #ifdef FIX_891_PARAMUPMIX_CLEANUP int16_t iv, nquant, offset; nquant = 0; switch ( parType ) { #ifdef FIX_891_PARAMUPMIX_CLEANUP case ALPHA: nquant = ivas_mc_paramupmix_alpha_quant_table.nquant; break; case BETA: nquant = ivas_mc_paramupmix_beta_quant_table[0].nquant; break; default: assert( 0 ); } offset = nquant - 1; /* range of df [-(nquant - 1), nquant - 1] */ #else int16_t iv, bdt, nquant, offset; nquant = 0; switch ( parType ) { case ALPHA: nquant = ivas_mc_paramupmix_alpha_quant_table[quant_type].nquant; break; case BETA: nquant = ivas_mc_paramupmix_beta_quant_table[quant_type][0].nquant; break; #endif default: assert( 0 ); } offset = nquant - 1; /* range of df/dt [-(nquant - 1), nquant - 1] */ #endif #ifdef FIX_891_PARAMUPMIX_CLEANUP bdt = st->bit_stream[st->next_bit_pos]; st->next_bit_pos++; #else if ( bNoDt ) Loading @@ -1400,76 +1408,61 @@ static void huffman_decode( st->next_bit_pos++; } #endif if ( bdt ) { /* Get dt */ #ifdef FIX_891_PARAMUPMIX_CLEANUP switch ( parType ) { #ifdef FIX_891_PARAMUPMIX_CLEANUP case ALPHA: huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.alpha; huff_node_table = ivas_mc_paramupmix_huff_nodes_df0.alpha; break; case BETA: huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.beta; huff_node_table = ivas_mc_paramupmix_huff_nodes_df0.beta; break; default: huff_node_table = NULL; assert( 0 ); } for ( iv = 0; iv < IVAS_MAX_NUM_BANDS; iv++ ) vq[0] = huff_read( st, huff_node_table ); switch ( parType ) { vq[iv] = huff_read( st, huff_node_table ) + vq[iv] - offset; } #else case ALPHA: huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.alpha[quant_type]; huff_node_table = ivas_mc_paramupmix_huff_nodes_df.alpha; break; case BETA: huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.beta[quant_type]; huff_node_table = ivas_mc_paramupmix_huff_nodes_df.beta; break; default: huff_node_table = NULL; assert( 0 ); } for ( iv = ivStart; iv < nv; iv++ ) for ( iv = 1; iv < IVAS_MAX_NUM_BANDS; iv++ ) { vq[iv] = huff_read( st, huff_node_table ) + vq[iv] - offset; } #endif vq[iv] = huff_read( st, huff_node_table ) + vq[iv - 1] - offset; } else /* Get f0, df */ { #else if ( bdt ) { /* Get dt */ switch ( parType ) { #ifdef FIX_891_PARAMUPMIX_CLEANUP case ALPHA: huff_node_table = ivas_mc_paramupmix_huff_nodes_df0.alpha; huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.alpha[quant_type]; break; case BETA: huff_node_table = ivas_mc_paramupmix_huff_nodes_df0.beta; huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.beta[quant_type]; break; default: huff_node_table = NULL; assert( 0 ); } vq[0] = huff_read( st, huff_node_table ); switch ( parType ) for ( iv = ivStart; iv < nv; iv++ ) { case ALPHA: huff_node_table = ivas_mc_paramupmix_huff_nodes_df.alpha; break; case BETA: huff_node_table = ivas_mc_paramupmix_huff_nodes_df.beta; break; default: assert( 0 ); vq[iv] = huff_read( st, huff_node_table ) + vq[iv] - offset; } for ( iv = 1; iv < IVAS_MAX_NUM_BANDS; iv++ ) { vq[iv] = huff_read( st, huff_node_table ) + vq[iv - 1] - offset; } #else else /* Get f0, df */ { switch ( parType ) { case ALPHA: huff_node_table = ivas_mc_paramupmix_huff_nodes_df0.alpha[quant_type]; break; Loading Loading @@ -1498,8 +1491,8 @@ static void huffman_decode( { vq[iv] = huff_read( st, huff_node_table ) + vq[iv - 1] - offset; } #endif } #endif return; } Loading lib_enc/ivas_mc_paramupmix_enc.c +10 −7 Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ static void ivas_mc_paramupmix_dmx( MC_PARAMUPMIX_ENC_HANDLE hMCParamUpmix, floa static void ivas_mc_paramupmix_param_est_enc( MC_PARAMUPMIX_ENC_HANDLE hMCParamUpmix, float *input_frame_t[], const int16_t input_frame, float alphas[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS], float betas[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS] ); #ifdef FIX_891_PARAMUPMIX_CLEANUP static void get_huff_table( const PAR_TYPE par_type, HUFF_TAB *df0, HUFF_TAB *df, HUFF_TAB *dt ); static void get_huff_table( const PAR_TYPE par_type, HUFF_TAB *df0, HUFF_TAB *df ); #else static void get_huff_table( const PAR_TYPE par_type, const QUANT_TYPE quant_type, HUFF_TAB *df0, HUFF_TAB *df, HUFF_TAB *dt ); #endif Loading Loading @@ -374,10 +374,13 @@ static void get_huff_table( const PAR_TYPE par_type, #ifndef FIX_891_PARAMUPMIX_CLEANUP const QUANT_TYPE quant_type, #endif HUFF_TAB *df0, HUFF_TAB *df, HUFF_TAB *dt ) #else HUFF_TAB *df0, HUFF_TAB *df ) #endif { switch ( par_type ) { Loading @@ -387,16 +390,12 @@ static void get_huff_table( df0->length = huff_alpha_table.df0.length; df->value = huff_alpha_table.df.value; df->length = huff_alpha_table.df.length; dt->value = huff_alpha_table.dt.value; dt->length = huff_alpha_table.dt.length; break; case BETA: df0->value = huff_beta_table.df0.value; df0->length = huff_beta_table.df0.length; df->value = huff_beta_table.df.value; df->length = huff_beta_table.df.length; dt->value = huff_beta_table.dt.value; dt->length = huff_beta_table.dt.length; break; #else case ALPHA: Loading Loading @@ -463,10 +462,14 @@ static void huffman_encode( #endif int32_t icode; int16_t offset; #ifdef FIX_891_PARAMUPMIX_CLEANUP HUFF_TAB df0, df; #else HUFF_TAB df0, df, dt; #endif #ifdef FIX_891_PARAMUPMIX_CLEANUP get_huff_table( parType, &df0, &df, &dt ); get_huff_table( parType, &df0, &df ); #else get_huff_table( parType, quant_type, &df0, &df, &dt ); #endif Loading lib_enc/ivas_rom_enc.c +0 −22 Original line number Diff line number Diff line Loading @@ -750,22 +750,6 @@ const HUFF_TABLE huff_alpha_table = 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 14, 15, 15, 16, 16, 17, 16, 16, 17, 16, 16, 17, 17, 17, 13 } }, { /* dt */ { 0x00eeee, 0x03b3ee, 0x03b3f6, 0x03b3fc, 0x01d9bc, 0x01d9bd, 0x01d9b2, 0x03b3fe, 0x01d9be, 0x01d9f6, 0x01d9fc, 0x00ecda, 0x00ecfa, 0x00eeef, 0x00766e, 0x007776, 0x003b3a, 0x003bba, 0x001d9a, 0x001ddc, 0x001dde, 0x000eec, 0x000764, 0x000772, 0x0003b0, 0x0003b8, 0x0001da, 0x0001de, 0x000072, 0x000038, 0x00001e, 0x000006, 0x000000, 0x000002, 0x00001f, 0x00003a, 0x000073, 0x0001df, 0x0001db, 0x0003ba, 0x0003b1, 0x000773, 0x000765, 0x000eed, 0x000ecc, 0x001d9e, 0x001d9c, 0x003bbe, 0x003b3b, 0x00777e, 0x00767c, 0x00eefe, 0x00ecfc, 0x00ecd8, 0x01d9fd, 0x01d9fa, 0x01d9bf, 0x01d9b6, 0x01d9b3, 0x03b3fd, 0x01d9b7, 0x03b3ff, 0x03b3ef, 0x03b3f7, 0x00eeff }, { 16, 18, 18, 18, 17, 17, 17, 18, 17, 17, 17, 16, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 11, 11, 10, 10, 9, 9, 7, 6, 5, 3, 1, 2, 5, 6, 7, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 16, 17, 17, 17, 17, 17, 18, 17, 18, 18, 18, 16 } } }; Loading @@ -780,12 +764,6 @@ const HUFF_TABLE huff_beta_table = 0x00000e, 0x00007f, 0x0000fb, 0x0001f3, 0x0001f0, 0x0007c6, 0x001f1f }, { 13, 12, 10, 9, 8, 7, 5, 3, 1, 2, 4, 7, 8, 9, 9, 11, 13 } }, { /* dt */ { 0x007dfe, 0x003efe, 0x000fbe, 0x0003ee, 0x0000fa, 0x00007e, 0x00001e, 0x000006, 0x000000, 0x000002, 0x00000e, 0x00007f, 0x00007c, 0x0001f6, 0x0007de, 0x001f7e, 0x007dff }, { 15, 14, 12, 10, 8, 7, 5, 3, 1, 2, 4, 7, 7, 9, 11, 13, 15 } } }; #else Loading Loading
lib_com/ivas_cnst.h +7 −0 Original line number Diff line number Diff line Loading @@ -1335,11 +1335,18 @@ typedef struct { unsigned short length[81]; } HUFF_ELEMENTS; #ifdef FIX_891_PARAMUPMIX_CLEANUP typedef struct { HUFF_ELEMENTS df0; HUFF_ELEMENTS df; } HUFF_TABLE; #else typedef struct { HUFF_ELEMENTS df0; HUFF_ELEMENTS df; HUFF_ELEMENTS dt; } HUFF_TABLE; #endif typedef enum { ALPHA, Loading
lib_dec/ivas_mc_paramupmix_dec.c +45 −52 Original line number Diff line number Diff line Loading @@ -1360,34 +1360,42 @@ static void huffman_decode( int32_t *vq ) { const int16_t( *huff_node_table )[2]; int16_t iv, bdt, nquant, offset; #ifdef FIX_891_PARAMUPMIX_CLEANUP int16_t iv, nquant, offset; nquant = 0; switch ( parType ) { #ifdef FIX_891_PARAMUPMIX_CLEANUP case ALPHA: nquant = ivas_mc_paramupmix_alpha_quant_table.nquant; break; case BETA: nquant = ivas_mc_paramupmix_beta_quant_table[0].nquant; break; default: assert( 0 ); } offset = nquant - 1; /* range of df [-(nquant - 1), nquant - 1] */ #else int16_t iv, bdt, nquant, offset; nquant = 0; switch ( parType ) { case ALPHA: nquant = ivas_mc_paramupmix_alpha_quant_table[quant_type].nquant; break; case BETA: nquant = ivas_mc_paramupmix_beta_quant_table[quant_type][0].nquant; break; #endif default: assert( 0 ); } offset = nquant - 1; /* range of df/dt [-(nquant - 1), nquant - 1] */ #endif #ifdef FIX_891_PARAMUPMIX_CLEANUP bdt = st->bit_stream[st->next_bit_pos]; st->next_bit_pos++; #else if ( bNoDt ) Loading @@ -1400,76 +1408,61 @@ static void huffman_decode( st->next_bit_pos++; } #endif if ( bdt ) { /* Get dt */ #ifdef FIX_891_PARAMUPMIX_CLEANUP switch ( parType ) { #ifdef FIX_891_PARAMUPMIX_CLEANUP case ALPHA: huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.alpha; huff_node_table = ivas_mc_paramupmix_huff_nodes_df0.alpha; break; case BETA: huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.beta; huff_node_table = ivas_mc_paramupmix_huff_nodes_df0.beta; break; default: huff_node_table = NULL; assert( 0 ); } for ( iv = 0; iv < IVAS_MAX_NUM_BANDS; iv++ ) vq[0] = huff_read( st, huff_node_table ); switch ( parType ) { vq[iv] = huff_read( st, huff_node_table ) + vq[iv] - offset; } #else case ALPHA: huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.alpha[quant_type]; huff_node_table = ivas_mc_paramupmix_huff_nodes_df.alpha; break; case BETA: huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.beta[quant_type]; huff_node_table = ivas_mc_paramupmix_huff_nodes_df.beta; break; default: huff_node_table = NULL; assert( 0 ); } for ( iv = ivStart; iv < nv; iv++ ) for ( iv = 1; iv < IVAS_MAX_NUM_BANDS; iv++ ) { vq[iv] = huff_read( st, huff_node_table ) + vq[iv] - offset; } #endif vq[iv] = huff_read( st, huff_node_table ) + vq[iv - 1] - offset; } else /* Get f0, df */ { #else if ( bdt ) { /* Get dt */ switch ( parType ) { #ifdef FIX_891_PARAMUPMIX_CLEANUP case ALPHA: huff_node_table = ivas_mc_paramupmix_huff_nodes_df0.alpha; huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.alpha[quant_type]; break; case BETA: huff_node_table = ivas_mc_paramupmix_huff_nodes_df0.beta; huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.beta[quant_type]; break; default: huff_node_table = NULL; assert( 0 ); } vq[0] = huff_read( st, huff_node_table ); switch ( parType ) for ( iv = ivStart; iv < nv; iv++ ) { case ALPHA: huff_node_table = ivas_mc_paramupmix_huff_nodes_df.alpha; break; case BETA: huff_node_table = ivas_mc_paramupmix_huff_nodes_df.beta; break; default: assert( 0 ); vq[iv] = huff_read( st, huff_node_table ) + vq[iv] - offset; } for ( iv = 1; iv < IVAS_MAX_NUM_BANDS; iv++ ) { vq[iv] = huff_read( st, huff_node_table ) + vq[iv - 1] - offset; } #else else /* Get f0, df */ { switch ( parType ) { case ALPHA: huff_node_table = ivas_mc_paramupmix_huff_nodes_df0.alpha[quant_type]; break; Loading Loading @@ -1498,8 +1491,8 @@ static void huffman_decode( { vq[iv] = huff_read( st, huff_node_table ) + vq[iv - 1] - offset; } #endif } #endif return; } Loading
lib_enc/ivas_mc_paramupmix_enc.c +10 −7 Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ static void ivas_mc_paramupmix_dmx( MC_PARAMUPMIX_ENC_HANDLE hMCParamUpmix, floa static void ivas_mc_paramupmix_param_est_enc( MC_PARAMUPMIX_ENC_HANDLE hMCParamUpmix, float *input_frame_t[], const int16_t input_frame, float alphas[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS], float betas[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS] ); #ifdef FIX_891_PARAMUPMIX_CLEANUP static void get_huff_table( const PAR_TYPE par_type, HUFF_TAB *df0, HUFF_TAB *df, HUFF_TAB *dt ); static void get_huff_table( const PAR_TYPE par_type, HUFF_TAB *df0, HUFF_TAB *df ); #else static void get_huff_table( const PAR_TYPE par_type, const QUANT_TYPE quant_type, HUFF_TAB *df0, HUFF_TAB *df, HUFF_TAB *dt ); #endif Loading Loading @@ -374,10 +374,13 @@ static void get_huff_table( const PAR_TYPE par_type, #ifndef FIX_891_PARAMUPMIX_CLEANUP const QUANT_TYPE quant_type, #endif HUFF_TAB *df0, HUFF_TAB *df, HUFF_TAB *dt ) #else HUFF_TAB *df0, HUFF_TAB *df ) #endif { switch ( par_type ) { Loading @@ -387,16 +390,12 @@ static void get_huff_table( df0->length = huff_alpha_table.df0.length; df->value = huff_alpha_table.df.value; df->length = huff_alpha_table.df.length; dt->value = huff_alpha_table.dt.value; dt->length = huff_alpha_table.dt.length; break; case BETA: df0->value = huff_beta_table.df0.value; df0->length = huff_beta_table.df0.length; df->value = huff_beta_table.df.value; df->length = huff_beta_table.df.length; dt->value = huff_beta_table.dt.value; dt->length = huff_beta_table.dt.length; break; #else case ALPHA: Loading Loading @@ -463,10 +462,14 @@ static void huffman_encode( #endif int32_t icode; int16_t offset; #ifdef FIX_891_PARAMUPMIX_CLEANUP HUFF_TAB df0, df; #else HUFF_TAB df0, df, dt; #endif #ifdef FIX_891_PARAMUPMIX_CLEANUP get_huff_table( parType, &df0, &df, &dt ); get_huff_table( parType, &df0, &df ); #else get_huff_table( parType, quant_type, &df0, &df, &dt ); #endif Loading
lib_enc/ivas_rom_enc.c +0 −22 Original line number Diff line number Diff line Loading @@ -750,22 +750,6 @@ const HUFF_TABLE huff_alpha_table = 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 14, 15, 15, 16, 16, 17, 16, 16, 17, 16, 16, 17, 17, 17, 13 } }, { /* dt */ { 0x00eeee, 0x03b3ee, 0x03b3f6, 0x03b3fc, 0x01d9bc, 0x01d9bd, 0x01d9b2, 0x03b3fe, 0x01d9be, 0x01d9f6, 0x01d9fc, 0x00ecda, 0x00ecfa, 0x00eeef, 0x00766e, 0x007776, 0x003b3a, 0x003bba, 0x001d9a, 0x001ddc, 0x001dde, 0x000eec, 0x000764, 0x000772, 0x0003b0, 0x0003b8, 0x0001da, 0x0001de, 0x000072, 0x000038, 0x00001e, 0x000006, 0x000000, 0x000002, 0x00001f, 0x00003a, 0x000073, 0x0001df, 0x0001db, 0x0003ba, 0x0003b1, 0x000773, 0x000765, 0x000eed, 0x000ecc, 0x001d9e, 0x001d9c, 0x003bbe, 0x003b3b, 0x00777e, 0x00767c, 0x00eefe, 0x00ecfc, 0x00ecd8, 0x01d9fd, 0x01d9fa, 0x01d9bf, 0x01d9b6, 0x01d9b3, 0x03b3fd, 0x01d9b7, 0x03b3ff, 0x03b3ef, 0x03b3f7, 0x00eeff }, { 16, 18, 18, 18, 17, 17, 17, 18, 17, 17, 17, 16, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 11, 11, 10, 10, 9, 9, 7, 6, 5, 3, 1, 2, 5, 6, 7, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 16, 17, 17, 17, 17, 17, 18, 17, 18, 18, 18, 16 } } }; Loading @@ -780,12 +764,6 @@ const HUFF_TABLE huff_beta_table = 0x00000e, 0x00007f, 0x0000fb, 0x0001f3, 0x0001f0, 0x0007c6, 0x001f1f }, { 13, 12, 10, 9, 8, 7, 5, 3, 1, 2, 4, 7, 8, 9, 9, 11, 13 } }, { /* dt */ { 0x007dfe, 0x003efe, 0x000fbe, 0x0003ee, 0x0000fa, 0x00007e, 0x00001e, 0x000006, 0x000000, 0x000002, 0x00000e, 0x00007f, 0x00007c, 0x0001f6, 0x0007de, 0x001f7e, 0x007dff }, { 15, 14, 12, 10, 8, 7, 5, 3, 1, 2, 4, 7, 7, 9, 11, 13, 15 } } }; #else Loading