Commit 597532f1 authored by vaclav's avatar vaclav
Browse files

harmonize 'nchan' terminology

parent 939dfcc7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4594,7 +4594,7 @@ void rotateFrame_shd_cldfb(
    float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: unrotated HOA3 signal buffer in cldfb domain real part  */
    float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: unrotated HOA3 signal buffer in cldfb domain imag part  */
    float Rmat[3][3],                                           /* i  : real-space rotation matrix                              */
    const int16_t nInChannels,                                  /* i  : number of channels                                      */
    const int16_t nchan_inp,                                    /* i  : number of channels                                      */
    const int16_t shd_rot_max_order                             /* i  : split-order rotation method                             */
);

+35 −35
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ static void ivas_binRenderer_filterModule(

    for ( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
    {
        for ( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
        for ( chIdx = 0; chIdx < hBinRenderer->nchan_inp; chIdx++ )
        {
            filterStatesLeftRealPtr = (float *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal[bandIdx][chIdx][0] );
            filterStatesLeftImagPtr = (float *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag[bandIdx][chIdx][0] );
@@ -140,11 +140,11 @@ static ivas_error ivas_binRenderer_convModuleOpen(

    if ( !isLoudspeaker )
    {
        hBinRenderer->nInChannels = 16;
        hBinRenderer->nchan_inp = 16;
    }
    else
    {
        hBinRenderer->nInChannels = ( audioCfg2channels( input_config ) - isLoudspeaker ); // TODO maybe an audioCfg2channels_woLFE() function? Works as long as only 1 LFE is present
        hBinRenderer->nchan_inp = ( audioCfg2channels( input_config ) - isLoudspeaker ); // TODO maybe an audioCfg2channels_woLFE() function? Works as long as only 1 LFE is present
    }

    if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && hRenderConfig->roomAcoustics.use_brir )
@@ -209,22 +209,22 @@ static ivas_error ivas_binRenderer_convModuleOpen(

    for ( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
    {
        if ( ( hBinRenConvModule->filterTapsLeftReal[bandIdx] = (float **) count_malloc( hBinRenderer->nInChannels * sizeof( float * ) ) ) == NULL )
        if ( ( hBinRenConvModule->filterTapsLeftReal[bandIdx] = (float **) count_malloc( hBinRenderer->nchan_inp * sizeof( float * ) ) ) == NULL )
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
        }

        if ( ( hBinRenConvModule->filterTapsLeftImag[bandIdx] = (float **) count_malloc( hBinRenderer->nInChannels * sizeof( float * ) ) ) == NULL )
        if ( ( hBinRenConvModule->filterTapsLeftImag[bandIdx] = (float **) count_malloc( hBinRenderer->nchan_inp * sizeof( float * ) ) ) == NULL )
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
        }

        if ( ( hBinRenConvModule->filterTapsRightReal[bandIdx] = (float **) count_malloc( hBinRenderer->nInChannels * sizeof( float * ) ) ) == NULL )
        if ( ( hBinRenConvModule->filterTapsRightReal[bandIdx] = (float **) count_malloc( hBinRenderer->nchan_inp * sizeof( float * ) ) ) == NULL )
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
        }

        if ( ( hBinRenConvModule->filterTapsRightImag[bandIdx] = (float **) count_malloc( hBinRenderer->nInChannels * sizeof( float * ) ) ) == NULL )
        if ( ( hBinRenConvModule->filterTapsRightImag[bandIdx] = (float **) count_malloc( hBinRenderer->nchan_inp * sizeof( float * ) ) ) == NULL )
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
        }
@@ -242,17 +242,17 @@ static ivas_error ivas_binRenderer_convModuleOpen(

    for ( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
    {
        if ( ( hBinRenConvModule->filterStatesLeftReal[bandIdx] = (float **) count_malloc( hBinRenderer->nInChannels * sizeof( float * ) ) ) == NULL )
        if ( ( hBinRenConvModule->filterStatesLeftReal[bandIdx] = (float **) count_malloc( hBinRenderer->nchan_inp * sizeof( float * ) ) ) == NULL )
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
        }

        if ( ( hBinRenConvModule->filterStatesLeftImag[bandIdx] = (float **) count_malloc( hBinRenderer->nInChannels * sizeof( float * ) ) ) == NULL )
        if ( ( hBinRenConvModule->filterStatesLeftImag[bandIdx] = (float **) count_malloc( hBinRenderer->nchan_inp * sizeof( float * ) ) ) == NULL )
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
        }

        for ( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
        for ( chIdx = 0; chIdx < hBinRenderer->nchan_inp; chIdx++ )
        {
            if ( ( hBinRenConvModule->filterStatesLeftReal[bandIdx][chIdx] = (float *) count_malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( float ) ) ) == NULL )
            {
@@ -269,7 +269,7 @@ static ivas_error ivas_binRenderer_convModuleOpen(
    /* set memories */
    for ( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
    {
        for ( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
        for ( chIdx = 0; chIdx < hBinRenderer->nchan_inp; chIdx++ )
        {
            int16_t tmp = 0;

@@ -369,7 +369,7 @@ static void ivas_binaural_obtain_DMX(
    float realDMX[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
    float imagDMX[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] )
{
    int16_t chIdx, bandIdx, k;
    int16_t ch_in, bandIdx, k;

    // ToDo: hBinRenderer->ivas_format is never set to ISM_FORMAT -> TBV
    if ( hBinRenderer->ivas_format == MC_FORMAT || hBinRenderer->ivas_format == ISM_FORMAT )
@@ -377,34 +377,34 @@ static void ivas_binaural_obtain_DMX(
        /* Obtain the downmix */
        float P_in[CLDFB_NO_CHANNELS_MAX];
        float P_out, factEQ;
        int16_t chOutIdx;
        int16_t ch_out;
        float temp1, temp2;

        for ( k = 0; k < numTimeSlots; k++ )
        {
            for ( chOutIdx = 0; chOutIdx < BINAURAL_CHANNELS; chOutIdx++ )
            for ( ch_out = 0; ch_out < BINAURAL_CHANNELS; ch_out++ )
            {
                set_zero( realDMX[chOutIdx][k], CLDFB_NO_CHANNELS_MAX );
                set_zero( imagDMX[chOutIdx][k], CLDFB_NO_CHANNELS_MAX );
                set_zero( realDMX[ch_out][k], CLDFB_NO_CHANNELS_MAX );
                set_zero( imagDMX[ch_out][k], CLDFB_NO_CHANNELS_MAX );
            }
        }

        for ( chOutIdx = 0; chOutIdx < BINAURAL_CHANNELS; chOutIdx++ )
        for ( ch_out = 0; ch_out < BINAURAL_CHANNELS; ch_out++ )
        {
            set_zero( P_in, hBinRenderer->conv_band );

            for ( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
            for ( ch_in = 0; ch_in < hBinRenderer->nchan_inp; ch_in++ )
            {
                float dmxConst = hBinRenderer->hReverb->dmxmtx[chOutIdx][chIdx];
                float dmxConst = hBinRenderer->hReverb->dmxmtx[ch_out][ch_in];

                for ( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
                {
                    for ( k = 0; k < numTimeSlots; k++ )
                    {
                        temp1 = RealBuffer[chIdx][k][bandIdx] * dmxConst;
                        temp2 = ImagBuffer[chIdx][k][bandIdx] * dmxConst;
                        realDMX[chOutIdx][k][bandIdx] += temp1;
                        imagDMX[chOutIdx][k][bandIdx] += temp2;
                        temp1 = RealBuffer[ch_in][k][bandIdx] * dmxConst;
                        temp2 = ImagBuffer[ch_in][k][bandIdx] * dmxConst;
                        realDMX[ch_out][k][bandIdx] += temp1;
                        imagDMX[ch_out][k][bandIdx] += temp2;

                        P_in[bandIdx] += temp1 * temp1 + temp2 * temp2;
                    }
@@ -416,8 +416,8 @@ static void ivas_binaural_obtain_DMX(
                P_out = 0.f;
                for ( k = 0; k < numTimeSlots; k++ )
                {
                    temp1 = realDMX[chOutIdx][k][bandIdx];
                    temp2 = imagDMX[chOutIdx][k][bandIdx];
                    temp1 = realDMX[ch_out][k][bandIdx];
                    temp2 = imagDMX[ch_out][k][bandIdx];
                    P_out += temp1 * temp1 + temp2 * temp2;
                }
                factEQ = sqrtf( P_in[bandIdx] / ( P_out + 1e-20f ) );
@@ -429,8 +429,8 @@ static void ivas_binaural_obtain_DMX(
                factEQ = max( min( factEQ, 2.0f ), 0.5f );
                for ( k = 0; k < numTimeSlots; k++ )
                {
                    realDMX[chOutIdx][k][bandIdx] *= factEQ;
                    imagDMX[chOutIdx][k][bandIdx] *= factEQ;
                    realDMX[ch_out][k][bandIdx] *= factEQ;
                    imagDMX[ch_out][k][bandIdx] *= factEQ;
                }
            }
        }
@@ -452,12 +452,12 @@ static void ivas_binaural_obtain_DMX(
            set_zero( outRealRightPtr, CLDFB_NO_CHANNELS_MAX );
            set_zero( outImagRightPtr, CLDFB_NO_CHANNELS_MAX );

            for ( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
            for ( ch_in = 0; ch_in < hBinRenderer->nchan_inp; ch_in++ )
            {
                float foa_const = hBinRenderer->hReverb->foa_enc[chIdx][1];
                float foa_const = hBinRenderer->hReverb->foa_enc[ch_in][1];

                inRealPtr = (float *) &( RealBuffer[chIdx][k][0] );
                inImagPtr = (float *) &( ImagBuffer[chIdx][k][0] );
                inRealPtr = (float *) &( RealBuffer[ch_in][k][0] );
                inImagPtr = (float *) &( ImagBuffer[ch_in][k][0] );

                for ( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
                {
@@ -588,7 +588,7 @@ ivas_error ivas_binRenderer_open(
        /* initialize the dmx matrix */
        for ( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ )
        {
            for ( k = 0; k < hBinRenderer->nInChannels; k++ )
            for ( k = 0; k < hBinRenderer->nchan_inp; k++ )
            {
                hBinRenderer->hReverb->dmxmtx[chIdx][k] = dmxmtx[chIdx][k];
            }
@@ -679,7 +679,7 @@ static void ivas_binRenderer_convModuleClose(

    for ( bandIdx = 0; bandIdx < ( *hBinRenderer )->conv_band; bandIdx++ )
    {
        for ( chIdx = 0; chIdx < ( *hBinRenderer )->nInChannels; chIdx++ )
        for ( chIdx = 0; chIdx < ( *hBinRenderer )->nchan_inp; chIdx++ )
        {
            count_free( hBinRenConvModule->filterStatesLeftReal[bandIdx][chIdx] );
            hBinRenConvModule->filterStatesLeftReal[bandIdx][chIdx] = NULL;
@@ -912,9 +912,9 @@ void ivas_binRenderer(
    }

    /* HOA decoding to CICP19 if needed*/
    if ( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 && hBinRenderer->nInChannels != 16 )
    if ( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 && hBinRenderer->nchan_inp != 16 )
    {
        ivas_sba2mc_cldfb( *( hBinRenderer->hInputSetup ), RealBuffer, ImagBuffer, hBinRenderer->nInChannels, hBinRenderer->conv_band, hBinRenderer->hoa_dec_mtx );
        ivas_sba2mc_cldfb( *( hBinRenderer->hInputSetup ), RealBuffer, ImagBuffer, hBinRenderer->nchan_inp, hBinRenderer->conv_band, hBinRenderer->hoa_dec_mtx );
    }

    ivas_binRenderer_filterModule( Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, RealBuffer, ImagBuffer, hBinRenderer );
+129 −131

File changed.

Preview size limit exceeded, changes collapsed.

+13 −14
Original line number Diff line number Diff line
@@ -559,7 +559,7 @@ void rotateFrame_shd_cldfb(
    float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: unrotated HOA3 signal buffer in cldfb domain real part */
    float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: unrotated HOA3 signal buffer in cldfb domain imag part */
    float Rmat[3][3],                                                             /* i  : real-space rotation matrix                             */
    const int16_t nInChannels,                                                    /* i  : number of channels                                     */
    const int16_t nchan_inp,                                                      /* i  : number of channels                                     */
    const int16_t shd_rot_max_order                                               /* i  : split-order rotation method                            */
)
{
@@ -571,7 +571,7 @@ void rotateFrame_shd_cldfb(
    float realRot[2 * HEADROT_ORDER + 1], imagRot[2 * HEADROT_ORDER + 1];
    float SHrotmat[HEADROT_SHMAT_DIM][HEADROT_SHMAT_DIM];

    assert( nInChannels == HEADROT_SHMAT_DIM && "Number of channels must be 16!" );
    assert( nchan_inp == HEADROT_SHMAT_DIM && "Number of channels must be 16!" );

    /* initialize rotation matrices with zeros */
    for ( i = 0; i < HEADROT_SHMAT_DIM; i++ )
@@ -618,18 +618,18 @@ void rotateFrame_shd_cldfb(
            }

            /* unoptimized code for reference (full matrix multiplication)
            for (n = 0; n < nInChannels; n++)
            for (n = 0; n < nchan_inp; n++)
            {
                realRot[n] = 0.f;
                imagRot[n] = 0.f;

                for (m = 0; m < nInChannels; m++)
                for (m = 0; m < nchan_inp; m++)
                {
                    realRot[n] += SHrotmat[n][m] * Cldfb_RealBuffer[m][i][iBand];
                    imagRot[n] += SHrotmat[n][m] * Cldfb_ImagBuffer[m][i][iBand];
                }
            }
            for (n = 0; n < nInChannels; n++)
            for (n = 0; n < nchan_inp; n++)
            {
                Cldfb_RealBuffer[n][i][iBand] = realRot[n];
                Cldfb_ImagBuffer[n][i][iBand] = imagRot[n];
@@ -666,14 +666,13 @@ void rotateFrame_sd_cldfb(
    float imagRot[MAX_CICP_CHANNELS - 1][MAX_PARAM_SPATIAL_SUBFRAMES * CLDFB_NO_CHANNELS_MAX];
    float *p_realRot, *p_imagRot;
    float *p_real, *p_imag;
    int16_t nInChannels;
    int16_t isPlanar;
    int16_t nchan_inp, isPlanar;

    wmops_sub_start( "rotateFrame_sd_cldfb" );

    nInChannels = hOutputSetup->nchan_out_woLFE;
    nchan_inp = hOutputSetup->nchan_out_woLFE;
    isPlanar = 1;
    for ( n = 0; n < nInChannels; n++ )
    for ( n = 0; n < nchan_inp; n++ )
    {
        if ( hOutputSetup->ls_elevation[n] != 0 )
        {
@@ -686,7 +685,7 @@ void rotateFrame_sd_cldfb(
    QuatToRotMat( hHeadTrackData->Quaternions[hHeadTrackData->num_quaternions++], Rmat );

    /* rotation of Euler angles */
    for ( n = 0; n < nInChannels; n++ )
    for ( n = 0; n < nchan_inp; n++ )
    {
        rotateAziEle( hOutputSetup->ls_azimuth[n], hOutputSetup->ls_elevation[n], &azimuth, &elevation, Rmat, isPlanar );
        if ( hEFAPdata != NULL && ( hOutputSetup->ls_azimuth[n] != azimuth || hOutputSetup->ls_elevation[n] != elevation ) )
@@ -695,17 +694,17 @@ void rotateFrame_sd_cldfb(
        }
        else
        {
            set_zero( gains[n], nInChannels );
            set_zero( gains[n], nchan_inp );
            gains[n][n] = 1.0f;
        }
    }

    /* Apply panning gains by mtx multiplication*/
    for ( n = 0; n < nInChannels; n++ )
    for ( n = 0; n < nchan_inp; n++ )
    {
        set_zero( realRot[n], MAX_PARAM_SPATIAL_SUBFRAMES * nb_band );
        set_zero( imagRot[n], MAX_PARAM_SPATIAL_SUBFRAMES * nb_band );
        for ( m = 0; m < nInChannels; m++ )
        for ( m = 0; m < nchan_inp; m++ )
        {
            g1 = gains[m][n];
            p_realRot = realRot[n];
@@ -728,7 +727,7 @@ void rotateFrame_sd_cldfb(
        }
    }

    for ( n = 0; n < nInChannels; n++ )
    for ( n = 0; n < nchan_inp; n++ )
    {
        p_realRot = realRot[n];
        p_imagRot = imagRot[n];
+5 −5
Original line number Diff line number Diff line
@@ -1016,7 +1016,7 @@ void ivas_spar_dec_upmixer(
     *---------------------------------------------------------------------*/

    /* set-up pointers */
    if ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_FOA )
    if ( hDecoderConfig->output_config != AUDIO_CONFIG_FOA )
    {
        /* at this point, output channels are used as intermediate procesing buffers */
        for ( in_ch = 0; in_ch < MAX_OUTPUT_CHANNELS; in_ch++ )
@@ -1076,7 +1076,7 @@ void ivas_spar_dec_upmixer(
        for ( ts = 0; ts < MAX_PARAM_SPATIAL_SUBFRAMES; ts++ )
        {
            /* determine SPAR parameters for this time slots */
            ivas_spar_get_parameters( hSpar, st_ivas->hDecoderConfig, ts + i_sf * MAX_PARAM_SPATIAL_SUBFRAMES, nchan_out, nchan_inp, num_spar_bands, mixer_mat );
            ivas_spar_get_parameters( hSpar, hDecoderConfig, ts + i_sf * MAX_PARAM_SPATIAL_SUBFRAMES, nchan_out, nchan_inp, num_spar_bands, mixer_mat );

            for ( cldfb_band = 0; cldfb_band < num_cldfb_bands; cldfb_band++ )
            {
@@ -1125,7 +1125,7 @@ void ivas_spar_dec_upmixer(
            }
        }

        if ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_FOA )
        if ( hDecoderConfig->output_config != AUDIO_CONFIG_FOA )
        {
            ivas_dirac_dec( st_ivas, output, nchan_internal, cldfb_in_ts_re, cldfb_in_ts_im, i_sf );
        }
@@ -1150,7 +1150,7 @@ void ivas_spar_dec_upmixer(
                }
                else
                {
                    if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_FOA ||
                    if ( hDecoderConfig->output_config == AUDIO_CONFIG_FOA ||
                         !( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM ) )
                    {
                        for ( ts = 0; ts < MAX_PARAM_SPATIAL_SUBFRAMES; ts++ )
@@ -1173,7 +1173,7 @@ void ivas_spar_dec_upmixer(
        else
        {
            /* CLDFB to time synthesis (overwrite mixer output) */
            for ( out_ch = 0; out_ch < st_ivas->hDecoderConfig->nchan_out; out_ch++ )
            for ( out_ch = 0; out_ch < hDecoderConfig->nchan_out; out_ch++ )
            {
                for ( ts = 0; ts < MAX_PARAM_SPATIAL_SUBFRAMES; ts++ )
                {
Loading