Commit 052736f1 authored by lintervo's avatar lintervo
Browse files

Handle exp properly in 1TC case

parent 58707842
Loading
Loading
Loading
Loading
+38 −1
Original line number Diff line number Diff line
@@ -674,7 +674,11 @@ static void ivas_omasa_dmx_fx(
#ifdef NONBE_1362_FIX_OMASA_TO_MASA1_RENDERING
        IF( EQ_16( nchan_transport, 1 ) )
        {
            v_add_32( data_out_f_fx[0], data_in_f_fx[i], data_out_f_fx[0], input_frame );
            FOR( j = 0; j < input_frame; j++ )
            {
                data_out_f_fx[0][j] = L_add_sat( data_out_f_fx[0][j], data_in_f_fx[i][j] );
                move32();
            }
        }
        ELSE
        {
@@ -793,6 +797,9 @@ static void ivas_omasa_dmx_fx(
#endif
    }

#ifdef NONBE_1362_FIX_OMASA_TO_MASA1_RENDERING
    IF( NE_16( nchan_transport, 1 ) )
    {
        max_e = data_e[0];
        move16();
        FOR( i = 1; i < nchan_transport; i++ )
@@ -812,12 +819,42 @@ static void ivas_omasa_dmx_fx(
                move32();
            }
        }
    }
#else
    max_e = data_e[0];
    move16();
    FOR( i = 1; i < nchan_transport; i++ )
    {
        IF( LT_16( max_e, data_e[i] ) )
        {
            max_e = data_e[i];
            move16();
        }
    }

    FOR( i = 0; i < nchan_transport; i++ )
    {
        FOR( j = 0; j < input_frame; j++ )
        {
            data_out_f_fx[i][j] = L_shr( data_out_f_fx[i][j], sub( max_e, data_e[i] ) ); // exponent: max_e, Q: ( 15 - max_e )
            move32();
        }
    }
#endif

    FOR( i = 0; i < nchan_transport; i++ )
    {
        Copy32( data_out_f_fx[i], data_in_f_fx[i], input_frame );
#ifdef NONBE_1362_FIX_OMASA_TO_MASA1_RENDERING
        IF( NE_16( nchan_transport, 1 ) )
        {
            *data_in_q = sub( 31, max_e );
            move16();
        }
#else
        *data_in_q = sub( 31, max_e );
        move16();
#endif
    }

    return;