Commit fdcaee46 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

do not scale down channels in format conversions

parent b5db8f0f
Loading
Loading
Loading
Loading
+1 −18
Original line number Diff line number Diff line
@@ -73,9 +73,6 @@ static const float N3D_SN3D[AMBI_MAX_CHANNELS] = { 1.0f,
                                                   INV_SQRT_5_, INV_SQRT_5_, INV_SQRT_5_, INV_SQRT_5_, INV_SQRT_5_,
                                                   INV_SQRT_7_, INV_SQRT_7_, INV_SQRT_7_, INV_SQRT_7_, INV_SQRT_7_, INV_SQRT_7_, INV_SQRT_7_ };

static const float N3D_SN3D_SCALING_FACTOR = 1.0f;
static const float SN3D_N3D_SCALING_FACTOR = INV_SQRT_7_;


static const float SN3D_MAXN[AMBI_MAX_CHANNELS] = { 1.0f,
                                                    1.0f, 1.0f, 1.0f,
@@ -87,10 +84,6 @@ static const float MAXN_SN3D[AMBI_MAX_CHANNELS] = { 1.0f,
                                                    INV_TWO_OVER_SQRT_3_, INV_TWO_OVER_SQRT_3_, 1.0f, INV_TWO_OVER_SQRT_3_, INV_TWO_OVER_SQRT_3_,
                                                    INV_SQRT_8_OVER_5_, INV_THREE_OVER_SQRT_5_, INV_SQRT_45_OVER_32_, 1.0f, INV_SQRT_45_OVER_32_, INV_THREE_OVER_SQRT_5_, INV_SQRT_8_OVER_5_ };

static const float MAXN_SN3D_SCALING_FACTOR = 1.0f;
static const float SN3D_MAXN_SCALING_FACTOR = INV_THREE_OVER_SQRT_5_;


static const float SN3D_FM[AMBI_MAX_CHANNELS] = { INV_SQRT_2,
                                                  1.0f, 1.0f, 1.0f,
                                                  TWO_OVER_SQRT_3_, TWO_OVER_SQRT_3_, 1.0f, TWO_OVER_SQRT_3_, TWO_OVER_SQRT_3_,
@@ -101,10 +94,6 @@ static const float FM_SN3D[AMBI_MAX_CHANNELS] = { SQRT_2_,
                                                  INV_TWO_OVER_SQRT_3_, INV_TWO_OVER_SQRT_3_, 1.0f, INV_TWO_OVER_SQRT_3_, INV_TWO_OVER_SQRT_3_,
                                                  INV_SQRT_8_OVER_5_, INV_THREE_OVER_SQRT_5_, INV_SQRT_45_OVER_32_, 1.0f, INV_SQRT_45_OVER_32_, INV_THREE_OVER_SQRT_5_, INV_SQRT_8_OVER_5_ };

static const float FM_SN3D_SCALING_FACTOR = INV_SQRT_2;
static const float SN3D_FM_SCALING_FACTOR = INV_THREE_OVER_SQRT_5_;


/* ----------------------------
    channel re-ordering tables
   ---------------------------- */
@@ -236,17 +225,14 @@ int16_t renormalize_channels( float *in[], float *out[], int16_t order, AMBI_CHA
        if ( out_format == AMBI_NORM_N3D )
        {
            conversion_table = SN3D_N3D;
            sf = SN3D_N3D_SCALING_FACTOR;
        }
        else if ( out_format == AMBI_NORM_MAXN )
        {
            conversion_table = SN3D_MAXN;
            sf = SN3D_MAXN_SCALING_FACTOR;
        }
        else if ( out_format == AMBI_NORM_FM )
        {
            conversion_table = SN3D_FM;
            sf = SN3D_FM_SCALING_FACTOR;
        }
        else
        {
@@ -258,17 +244,14 @@ int16_t renormalize_channels( float *in[], float *out[], int16_t order, AMBI_CHA
        if ( in_format == AMBI_NORM_N3D )
        {
            conversion_table = N3D_SN3D;
            sf = N3D_SN3D_SCALING_FACTOR;
        }
        else if ( in_format == AMBI_NORM_MAXN )
        {
            conversion_table = MAXN_SN3D;
            sf = MAXN_SN3D_SCALING_FACTOR;
        }
        else if ( in_format == AMBI_NORM_FM )
        {
            conversion_table = FM_SN3D;
            sf = FM_SN3D_SCALING_FACTOR;
        }
        else
        {
@@ -286,7 +269,7 @@ int16_t renormalize_channels( float *in[], float *out[], int16_t order, AMBI_CHA
        float conversion_factor = conversion_table[i_chan];
        for ( i = 0; i < L_FRAME48k; i++ )
        {
            out[i_chan][i] = sf * in[i_chan][i] * conversion_factor;
            out[i_chan][i] = in[i_chan][i] * conversion_factor;
        }
    }