Commit 861a8889 authored by Jan Kiene's avatar Jan Kiene
Browse files

Merge branch 'main' into ci/check-for-warnings-in-clang-build

parents 344f8ecd 65440ad3
Loading
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -2072,9 +2072,13 @@ void dec_FDCNG_MSVQ_stage1(

    for ( col = 0; col < cdk1_ivas_cols_per_segment[segm_ind]; col++ )
    {
#ifdef FIX_612_MSVQ_UBSAN_LEFTSHIFT
        dct_vec[col] = (float) shl( (Word16) cbpW8[col], dct_col_shift_tab[col] );
#else
        dct_vec[col] = (float) ( ( (Word16) cbpW8[col] ) << dct_col_shift_tab[col] );
        /* LOGIC( 1 ); SHIFT( 1 );  ADD( 1 );
           in BASOP:   s_and(for W8->W16), shl(), sub()
#endif
        /*             LOGIC( 1 )        , SHIFT( 1 );
           in BASOP:   s_and(for W8->W16), shl()
         */
    }
    dctT2_N_apply_matrix( (const float *) dct_vec, idct_vec, cdk1_ivas_cols_per_segment[segm_ind], n, invTrfMatrix, FDCNG_VQ_DCT_MAXTRUNC, idcttype );
+4 −0
Original line number Diff line number Diff line
@@ -192,6 +192,10 @@
#define FIX_582_INDEX_OUT_OF_BOUNDS_SNS_AVQ_DEC         /* FhG: fix an undefined behaviour error in SNS AVQ decoding */
#define FIX_614_ADD_TO_NULL_PTR_DIRAC_SETUP             /* FhG: Issue 614: prevent adding to a null pointer in dirac setup code */
#define UPDATE_REVERB_UTILS                             /* Use CLDFB HRTFs of the appropriate SBA order in get_IR_from_filter_taps() */
#define FIX_612_MSVQ_UBSAN_LEFTSHIFT                    /* Eri: Issue 612 :  UBSAN: left shift of negative values in 1st stage of MSVQ  */
#define FIX_621_MSVQ_UBSAN_NULL_PTR_OFFSET              /* Eri: Issue 621 :  UBSAN:  applying non-zero offset 7200 to null pointer in lsf_msvq_ma_enc.c  */
#define FIX_600_CLEANUP_OF_MANUAL_INSTRUMENTATION       /* Eri: Issue 600 :  removed manual WMCtool instrumentation outside of WMC_TOOL_SKIP defines     */
#define NONBE_FIX_539_MASA_384K_CHIRP                   /* Nokia: issue 539, puts the normalization of the energy ratios at the correct place, affect MASA 384k only */

/* Fixes for bugs found during split rendering contribution development */
#define REND_STATIC_MEM_OPT                             /* Dlb: Static memory optimisation for external renderer */
+2 −0
Original line number Diff line number Diff line
@@ -200,7 +200,9 @@ static void dsDiracPerQuanta(
    if ( t_quanta_o > sv[nsv >> 1] )
    {
        dsIndex = nsv - dsIndex; /*single op*/
#ifndef FIX_600_CLEANUP_OF_MANUAL_INSTRUMENTATION
        ADD( 1 );
#endif
    }
    for ( i = frQuanta[0][td] - 1; i >= 0; i-- )
    {
+57 −1
Original line number Diff line number Diff line
@@ -908,6 +908,60 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512(
    }
    if ( hQMetaData->no_directions == 2 )
    {
#ifdef NONBE_FIX_539_MASA_384K_CHIRP
        float ratioSum;
        if ( bits_sph_idx == 16 )
        {
            for ( b = hQMetaData->q_direction[1].cfg.start_band; b < hQMetaData->q_direction[1].cfg.nbands; b++ )
            {
                for ( m = 0; m < hQMetaData->q_direction[1].cfg.nblocks; m++ )
                {
                    hQMetaData->q_direction[1].band_data[b].energy_ratio[m] = 1.0f - diffuseness_reconstructions_hr[hQMetaData->q_direction[1].band_data[b].energy_ratio_index[m]];

                    /* Scale energy ratios that sum to over one */
                    ratioSum = hQMetaData->q_direction[0].band_data[b].energy_ratio[m] + hQMetaData->q_direction[1].band_data[b].energy_ratio[m];

                    if ( ratioSum > 1.0f )
                    {
                        hQMetaData->q_direction[0].band_data[b].energy_ratio[m] /= ratioSum;
                        hQMetaData->q_direction[1].band_data[b].energy_ratio[m] /= ratioSum;
                    }
                }
            }
        }
        else
        {
            int16_t pos_2dir_band[MASA_MAXIMUM_CODING_SUBBANDS];
            d = 0;
            for ( b = hQMetaData->q_direction[0].cfg.start_band; b < hQMetaData->q_direction[0].cfg.nbands; b++ )
            {
                if ( hQMetaData->twoDirBands[b] == 1 )
                {
                    pos_2dir_band[d] = b;
                    d++;
                }
                else
                {
                    pos_2dir_band[d] = 0;
                }
            }
            for ( b = hQMetaData->q_direction[1].cfg.start_band; b < hQMetaData->q_direction[1].cfg.nbands; b++ )
            {
                for ( m = 0; m < hQMetaData->q_direction[1].cfg.nblocks; m++ )
                {
                    hQMetaData->q_direction[1].band_data[b].energy_ratio[m] = 1.0f - diffuseness_reconstructions_hr[hQMetaData->q_direction[1].band_data[b].energy_ratio_index[m]];

                    ratioSum = hQMetaData->q_direction[0].band_data[pos_2dir_band[b]].energy_ratio[m] + hQMetaData->q_direction[1].band_data[b].energy_ratio[m];

                    if ( ratioSum > 1.0f )
                    {
                        hQMetaData->q_direction[0].band_data[pos_2dir_band[b]].energy_ratio[m] /= ratioSum;
                        hQMetaData->q_direction[1].band_data[b].energy_ratio[m] /= ratioSum;
                    }
                }
            }
        }
#else
#ifdef FIX_566_2DIR_MASA_384K
        float ratioSum;
        for ( b = hQMetaData->q_direction[1].cfg.start_band; b < hQMetaData->q_direction[1].cfg.nbands; b++ )
@@ -938,6 +992,7 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512(
                }
            }
        }
#endif
#endif
    }

@@ -1085,7 +1140,7 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512(
                }
            }
        }

#ifndef NONBE_FIX_539_MASA_384K_CHIRP
        /* Scale energy ratios that sum to over one */
        for ( b = 0; b < hQMetaData->q_direction[0].cfg.nbands; b++ )
        {
@@ -1101,6 +1156,7 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512(
                }
            }
        }
#endif
    }

#ifdef DEBUG_MODE_QMETADATA
+65 −0
Original line number Diff line number Diff line
@@ -1558,6 +1558,70 @@ static void ivas_qmetadata_quantize_diffuseness_nrg_ratios_hr_512(

    if ( hQMetaData->no_directions == 2 )
    {
#ifdef NONBE_FIX_539_MASA_384K_CHIRP
        float ratioSum;
        if ( bits_dir_hr == 16 )
        {
            for ( j = hQMetaData->q_direction[1].cfg.start_band; j < hQMetaData->q_direction[1].cfg.nbands; j++ )
            {
                for ( k = 0; k < hQMetaData->q_direction[1].cfg.nblocks; k++ )
                {
                    index = masa_sq( 1.0f - hQMetaData->q_direction[1].band_data[j].energy_ratio[k], diffuseness_thresholds_hr, HR_MASA_ER_LEVELS );
                    push_next_indice( hMetaData, index, MASA_BITS_ER_HR );
                    hQMetaData->q_direction[1].band_data[j].energy_ratio_index[k] = index;
                    hQMetaData->q_direction[1].band_data[j].energy_ratio[k] = 1.0f - diffuseness_reconstructions_hr[index];

                    ratioSum = hQMetaData->q_direction[0].band_data[j].energy_ratio[k] + hQMetaData->q_direction[1].band_data[j].energy_ratio[k];
                    if ( ratioSum > 1.0f )
                    {
                        hQMetaData->q_direction[0].band_data[j].energy_ratio[k] /= ratioSum;
                        hQMetaData->q_direction[1].band_data[j].energy_ratio[k] /= ratioSum;
                    }

                    needed_bits[1] += MASA_BITS_ER_HR;
                    hQMetaData->q_direction[1].band_data[j].bits_sph_idx[k] = bits_dir_hr;
                }
            }
        }
        else
        {
            int16_t pos_2dir_band[MASA_MAXIMUM_CODING_SUBBANDS];
            k = 0;
            for ( j = hQMetaData->q_direction[0].cfg.start_band; j < hQMetaData->q_direction[0].cfg.nbands; j++ )
            {
                if ( hQMetaData->twoDirBands[j] == 1 )
                {
                    pos_2dir_band[k] = j;
                    k++;
                }
                else
                {
                    pos_2dir_band[k] = 0;
                }
            }
            for ( j = hQMetaData->q_direction[1].cfg.start_band; j < hQMetaData->q_direction[1].cfg.nbands; j++ )
            {
                for ( k = 0; k < hQMetaData->q_direction[1].cfg.nblocks; k++ )
                {
                    index = masa_sq( 1.0f - hQMetaData->q_direction[1].band_data[j].energy_ratio[k], diffuseness_thresholds_hr, HR_MASA_ER_LEVELS );
                    push_next_indice( hMetaData, index, MASA_BITS_ER_HR );
                    hQMetaData->q_direction[1].band_data[j].energy_ratio_index[k] = index;
                    hQMetaData->q_direction[1].band_data[j].energy_ratio[k] = 1.0f - diffuseness_reconstructions_hr[index];

                    ratioSum = hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio[k] + hQMetaData->q_direction[1].band_data[j].energy_ratio[k];

                    if ( ratioSum > 1.0f )
                    {
                        hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio[k] /= ratioSum;
                        hQMetaData->q_direction[1].band_data[j].energy_ratio[k] /= ratioSum;
                    }

                    needed_bits[1] += MASA_BITS_ER_HR;
                    hQMetaData->q_direction[1].band_data[j].bits_sph_idx[k] = bits_dir_hr;
                }
            }
        }
#else
#ifdef FIX_566_2DIR_MASA_384K
        float ratioSum;
#endif
@@ -1586,6 +1650,7 @@ static void ivas_qmetadata_quantize_diffuseness_nrg_ratios_hr_512(
                hQMetaData->q_direction[1].band_data[j].bits_sph_idx[k] = bits_dir_hr;
            }
        }
#endif
    }

    return;
Loading