Commit 4ebf4487 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch '692-decoder-segmentation-fault-in-function-edxt_fx-2' into 'main'

Resolve "Decoder segmentation fault in function edxt_fx()"

Closes #692

See merge request !169
parents 33116eaa 26b8a7aa
Loading
Loading
Loading
Loading
Loading
+80 −0
Original line number Diff line number Diff line
@@ -45,10 +45,42 @@ static Word16 get_edxt_factor( Word16 length ) /* Returns value of sqrtf(2.f/len
    {
        factor = 5181;
    }
    ELSE IF( EQ_16( length, 40 ) )
    {
        factor = 7327;
    }
    ELSE IF( EQ_16( length, 960 ) )
    {
        factor = 1496;
    }
    ELSE IF( EQ_16( length, 480 ) )
    {
        factor = 2115;
    }
    ELSE IF( EQ_16( length, 240 ) )
    {
        factor = 2991;
    }
    ELSE IF( EQ_16( length, 120 ) )
    {
        factor = 4230;
    }
    ELSE IF( EQ_16( length, 1200 ) )
    {
        factor = 1338;
    }
    ELSE IF( EQ_16( length, 800 ) )
    {
        factor = 1638;
    }
    ELSE IF( EQ_16( length, 400 ) )
    {
        factor = 2317;
    }
    ELSE IF( EQ_16( length, 200 ) )
    {
        factor = 3277;
    }
    return factor;
}

@@ -555,12 +587,60 @@ void edxt_fx(
        sinPtr = sin_scale_tbl_640;
        n = 8;
    }
    ELSE IF( EQ_16( length, 40 ) )
    {
        cosPtr = cos_scale_tbl_640;
        sinPtr = sin_scale_tbl_640;
        n = 16;
    }
    ELSE IF( EQ_16( length, 960 ) )
    {
        cosPtr = cos_scale_tbl_960;
        sinPtr = sin_scale_tbl_960;
        n = 1;
    }
    ELSE IF( EQ_16( length, 480 ) )
    {
        cosPtr = cos_scale_tbl_960;
        sinPtr = sin_scale_tbl_960;
        n = 2;
    }
    ELSE IF( EQ_16( length, 240 ) )
    {
        cosPtr = cos_scale_tbl_960;
        sinPtr = sin_scale_tbl_960;
        n = 4;
    }
    ELSE IF( EQ_16( length, 120 ) )
    {
        cosPtr = cos_scale_tbl_960;
        sinPtr = sin_scale_tbl_960;
        n = 8;
    }
    ELSE IF( EQ_16( length, 1200 ) )
    {
        cosPtr = cos_scale_tbl_1200;
        sinPtr = sin_scale_tbl_1200;
        n = 1;
    }
    ELSE IF( EQ_16( length, 800 ) )
    {
        cosPtr = cos_scale_tbl_800;
        sinPtr = sin_scale_tbl_800;
        n = 1;
    }
    ELSE IF( EQ_16( length, 400 ) )
    {
        cosPtr = cos_scale_tbl_800;
        sinPtr = sin_scale_tbl_800;
        n = 2;
    }
    ELSE IF( EQ_16( length, 200 ) )
    {
        cosPtr = cos_scale_tbl_800;
        sinPtr = sin_scale_tbl_800;
        n = 4;
    }

#ifdef FAST_EDXT
    IF( EQ_16( kernelType, MDST_II ) || EQ_16( kernelType, MDCT_II ) )
+512 −0

File changed.

Preview size limit exceeded, changes collapsed.

+4 −0
Original line number Diff line number Diff line
@@ -2134,4 +2134,8 @@ extern const Word16 cos_scale_tbl_640[640];
extern const Word16 sin_scale_tbl_640[640];
extern const Word16 sin_scale_tbl_512[512];
extern const Word16 cos_scale_tbl_512[512];
extern const Word16 cos_scale_tbl_1200[1200];
extern const Word16 sin_scale_tbl_1200[1200];
extern const Word16 cos_scale_tbl_800[800];
extern const Word16 sin_scale_tbl_800[800];
#endif