Loading lib_rend/ivas_limiter.c +818 −204 Original line number Diff line number Diff line Loading @@ -49,7 +49,617 @@ #define ATTACK_CNST_8k ( 1913946752 ) // Q31 #endif Word32 release_cnst_table[201] = // Q31 Word32 release_cnst_table[4][201] = // Q31 { { 1913946752, 1919716352, 1925351680, 1930855552, 1936230784, 1941479808, 1946605312, 1951609728, 1956495744, 1961265792, 1965922304, 1970467584, 1974904320, 1979234560, 1983460736, 1987585024, 1991609856, 1995537280, 1999369344, 2003108480, 2006756480, 2010315520, 2013787520, 2017174528, 2020478464, 2023701248, 2026844672, 2029910656, 2032900992, 2035817344, 2038661376, 2041435008, 2044139648, 2046777088, 2049348864, 2051856384, 2054301440, 2056685312, 2059009536, 2061275520, 2063484672, 2065638272, 2067737856, 2069784448, 2071779584, 2073724416, 2075620096, 2077467904, 2079268992, 2081024512, 2082735488, 2084403200, 2086028416, 2087612544, 2089156352, 2090660864, 2092127104, 2093555968, 2094948480, 2096305408, 2097627776, 2098916352, 2100172032, 2101395584, 2102587776, 2103749504, 2104881408, 2105984384, 2107059072, 2108106112, 2109126400, 2110120448, 2111088896, 2112032512, 2112951808, 2113847552, 2114720128, 2115570304, 2116398592, 2117205504, 2117991552, 2118757504, 2119503616, 2120230400, 2120938496, 2121628288, 2122300288, 2122954880, 2123592576, 2124213760, 2124818944, 2125408384, 2125982592, 2126541952, 2127086848, 2127617664, 2128134656, 2128638336, 2129128832, 2129606784, 2130072192, 2130525568, 2130967296, 2131397376, 2131816448, 2132224640, 2132622080, 2133009408, 2133386496, 2133753856, 2134111744, 2134460288, 2134799744, 2135130368, 2135452416, 2135766144, 2136071680, 2136369152, 2136659072, 2136941312, 2137216256, 2137484160, 2137744896, 2137998976, 2138246400, 2138487424, 2138722176, 2138950656, 2139173376, 2139390208, 2139601408, 2139807104, 2140007424, 2140202624, 2140392576, 2140577664, 2140758016, 2140933504, 2141104512, 2141271040, 2141433216, 2141591168, 2141745024, 2141894912, 2142040832, 2142182912, 2142321408, 2142456192, 2142587392, 2142715264, 2142839808, 2142961152, 2143079296, 2143194240, 2143306240, 2143415424, 2143521664, 2143625216, 2143725952, 2143824128, 2143919744, 2144012800, 2144103424, 2144191744, 2144277760, 2144361472, 2144443136, 2144522496, 2144599936, 2144675200, 2144748544, 2144820096, 2144889600, 2144957440, 2145023488, 2145087744, 2145150336, 2145211264, 2145270656, 2145328512, 2145384832, 2145439616, 2145493120, 2145545088, 2145595776, 2145645056, 2145693184, 2145739904, 2145785472, 2145829888, 2145873152, 2145915136, 2145956224, 2145996032, 2146034944, 2146072832, 2146109696, 2146145664, 2146180608, 2146214656, 2146247808, }, { 2027355264, 2030408704, 2033386624, 2036290944, 2039123328, 2041885440, 2044578944, 2047205376, 2049766528, 2052263680, 2054698496, 2057072384, 2059387008, 2061643520, 2063843328, 2065987968, 2068078720, 2070116864, 2072103552, 2074040192, 2075927936, 2077767936, 2079561472, 2081309568, 2083013376, 2084673920, 2086292352, 2087869696, 2089406976, 2090905216, 2092365184, 2093788032, 2095174528, 2096525824, 2097842432, 2099125632, 2100375808, 2101594240, 2102781312, 2103938048, 2105065216, 2106163456, 2107233536, 2108276096, 2109292032, 2110281728, 2111246080, 2112185728, 2113101056, 2113992960, 2114861824, 2115708288, 2116532992, 2117336448, 2118119168, 2118881792, 2119624704, 2120348416, 2121053440, 2121740288, 2122409344, 2123061120, 2123696128, 2124314624, 2124917120, 2125504128, 2126075776, 2126632832, 2127175296, 2127703808, 2128218624, 2128720000, 2129208448, 2129684352, 2130147712, 2130599168, 2131038976, 2131467264, 2131884416, 2132290816, 2132686592, 2133072256, 2133447680, 2133813504, 2134169856, 2134516864, 2134854784, 2135184000, 2135504640, 2135816960, 2136121216, 2136417536, 2136706048, 2136987136, 2137260928, 2137527552, 2137787264, 2138040192, 2138286592, 2138526464, 2138760192, 2138987776, 2139209472, 2139425408, 2139635712, 2139840512, 2140039936, 2140234240, 2140423424, 2140607744, 2140787200, 2140962048, 2141132288, 2141298048, 2141459584, 2141616896, 2141769984, 2141919232, 2142064512, 2142205952, 2142343808, 2142478080, 2142608768, 2142736128, 2142860032, 2142980864, 2143098368, 2143212928, 2143324544, 2143433088, 2143538944, 2143641984, 2143742336, 2143840000, 2143935232, 2144027904, 2144118144, 2144206080, 2144291712, 2144375168, 2144456320, 2144535424, 2144612480, 2144687488, 2144760448, 2144831616, 2144900992, 2144968448, 2145034112, 2145098112, 2145160448, 2145221248, 2145280256, 2145337856, 2145393920, 2145448576, 2145501696, 2145553536, 2145603968, 2145653120, 2145700992, 2145747456, 2145792896, 2145837056, 2145880064, 2145922048, 2145962880, 2146002560, 2146041344, 2146078976, 2146115712, 2146151424, 2146186240, 2146220160, 2146253184, 2146285312, 2146316672, 2146347136, 2146376832, 2146405760, 2146433920, 2146461440, 2146488192, 2146514176, 2146539520, 2146564224, 2146588160, 2146611584, 2146634368, 2146656640, 2146678272, 2146699264, 2146719744, 2146739712, 2146759168, 2146778112, 2146796544, 2146814464, 2146832000, 2146849024, 2146865664, }, { 2086555136, 2088125824, 2089656576, 2091148416, 2092602240, 2094018944, 2095399680, 2096745088, 2098056192, 2099333888, 2100578816, 2101792000, 2102974080, 2104125824, 2105248128, 2106341760, 2107407232, 2108445440, 2109456896, 2110442496, 2111402624, 2112338176, 2113249664, 2114137728, 2115002880, 2115845760, 2116666880, 2117466880, 2118246272, 2119005568, 2119745280, 2120465920, 2121167872, 2121851776, 2122517888, 2123166976, 2123799168, 2124414976, 2125014912, 2125599360, 2126168704, 2126723200, 2127263360, 2127789568, 2128302208, 2128801408, 2129287808, 2129761536, 2130222976, 2130672512, 2131110272, 2131536768, 2131952128, 2132356736, 2132750848, 2133134720, 2133508736, 2133872896, 2134227584, 2134573184, 2134909696, 2135237504, 2135556736, 2135867648, 2136170624, 2136465536, 2136752896, 2137032832, 2137305344, 2137570816, 2137829376, 2138081280, 2138326528, 2138565504, 2138798080, 2139024768, 2139245440, 2139460480, 2139669888, 2139873792, 2140072320, 2140265856, 2140454144, 2140637696, 2140816384, 2140990464, 2141159936, 2141325056, 2141485824, 2141642368, 2141794944, 2141943424, 2142088064, 2142228992, 2142366208, 2142499840, 2142630016, 2142756736, 2142880128, 2143000448, 2143117440, 2143231488, 2143342592, 2143450752, 2143556096, 2143658624, 2143758592, 2143855872, 2143950592, 2144043008, 2144132864, 2144220416, 2144305664, 2144388608, 2144469504, 2144548224, 2144624896, 2144699648, 2144772352, 2144843264, 2144912256, 2144979328, 2145044864, 2145108480, 2145170560, 2145231104, 2145289856, 2145347200, 2145403008, 2145457408, 2145510400, 2145561984, 2145612160, 2145661056, 2145708672, 2145755136, 2145800192, 2145844224, 2145887104, 2145928832, 2145969408, 2146008960, 2146047616, 2146085120, 2146121600, 2146157184, 2146191872, 2146225664, 2146258560, 2146290560, 2146321792, 2146352128, 2146381696, 2146410496, 2146438528, 2146465920, 2146492416, 2146518400, 2146543616, 2146568192, 2146592128, 2146615424, 2146638080, 2146660224, 2146681728, 2146702720, 2146723072, 2146743040, 2146762368, 2146781184, 2146799616, 2146817408, 2146834816, 2146851840, 2146868352, 2146884352, 2146900096, 2146915328, 2146930176, 2146944640, 2146958720, 2146972416, 2146985856, 2146998784, 2147011456, 2147023872, 2147035904, 2147047552, 2147058944, 2147070080, 2147080832, 2147091456, 2147101696, 2147111680, 2147121408, 2147130880, 2147140096, 2147149056, 2147157760, 2147166336, 2147174656, }, { 2106670080, 2107727232, Loading Loading @@ -252,6 +862,8 @@ Word32 release_cnst_table[201] = // Q31 2147266432, 2147272064, 2147277568, }, }; Loading Loading @@ -648,6 +1260,7 @@ void limiter_process_fx( Word16 num_channels, scale, result; Word32 release_constant, compare_value; Word32 div32, gain, frame_gain, attack_constant; Word16 idx; /* return early if given nonsensical values */ test(); Loading Loading @@ -780,7 +1393,8 @@ void limiter_process_fx( move32(); result = BASOP_Util_Divide3232_Scale( releaseHeuristic, div32, &scale ); release_constant = release_cnst_table[shr( result, sub( 15, scale ) )]; /* Q31 */ idx = extract_l( Mpy_32_32( hLimiter->sampling_rate, 134218 ) ); release_constant = release_cnst_table[idx][shr( result, sub( 15, scale ) )]; /* Q31 */ move32(); /* Unoptimized code for reference */ /* releaseTimeInSeconds = 0.005f * powf(200.f, releaseHeuristic); <-- Map heuristic value (0; 1) exponentially to range (0.005; 1) Loading Loading
lib_rend/ivas_limiter.c +818 −204 Original line number Diff line number Diff line Loading @@ -49,7 +49,617 @@ #define ATTACK_CNST_8k ( 1913946752 ) // Q31 #endif Word32 release_cnst_table[201] = // Q31 Word32 release_cnst_table[4][201] = // Q31 { { 1913946752, 1919716352, 1925351680, 1930855552, 1936230784, 1941479808, 1946605312, 1951609728, 1956495744, 1961265792, 1965922304, 1970467584, 1974904320, 1979234560, 1983460736, 1987585024, 1991609856, 1995537280, 1999369344, 2003108480, 2006756480, 2010315520, 2013787520, 2017174528, 2020478464, 2023701248, 2026844672, 2029910656, 2032900992, 2035817344, 2038661376, 2041435008, 2044139648, 2046777088, 2049348864, 2051856384, 2054301440, 2056685312, 2059009536, 2061275520, 2063484672, 2065638272, 2067737856, 2069784448, 2071779584, 2073724416, 2075620096, 2077467904, 2079268992, 2081024512, 2082735488, 2084403200, 2086028416, 2087612544, 2089156352, 2090660864, 2092127104, 2093555968, 2094948480, 2096305408, 2097627776, 2098916352, 2100172032, 2101395584, 2102587776, 2103749504, 2104881408, 2105984384, 2107059072, 2108106112, 2109126400, 2110120448, 2111088896, 2112032512, 2112951808, 2113847552, 2114720128, 2115570304, 2116398592, 2117205504, 2117991552, 2118757504, 2119503616, 2120230400, 2120938496, 2121628288, 2122300288, 2122954880, 2123592576, 2124213760, 2124818944, 2125408384, 2125982592, 2126541952, 2127086848, 2127617664, 2128134656, 2128638336, 2129128832, 2129606784, 2130072192, 2130525568, 2130967296, 2131397376, 2131816448, 2132224640, 2132622080, 2133009408, 2133386496, 2133753856, 2134111744, 2134460288, 2134799744, 2135130368, 2135452416, 2135766144, 2136071680, 2136369152, 2136659072, 2136941312, 2137216256, 2137484160, 2137744896, 2137998976, 2138246400, 2138487424, 2138722176, 2138950656, 2139173376, 2139390208, 2139601408, 2139807104, 2140007424, 2140202624, 2140392576, 2140577664, 2140758016, 2140933504, 2141104512, 2141271040, 2141433216, 2141591168, 2141745024, 2141894912, 2142040832, 2142182912, 2142321408, 2142456192, 2142587392, 2142715264, 2142839808, 2142961152, 2143079296, 2143194240, 2143306240, 2143415424, 2143521664, 2143625216, 2143725952, 2143824128, 2143919744, 2144012800, 2144103424, 2144191744, 2144277760, 2144361472, 2144443136, 2144522496, 2144599936, 2144675200, 2144748544, 2144820096, 2144889600, 2144957440, 2145023488, 2145087744, 2145150336, 2145211264, 2145270656, 2145328512, 2145384832, 2145439616, 2145493120, 2145545088, 2145595776, 2145645056, 2145693184, 2145739904, 2145785472, 2145829888, 2145873152, 2145915136, 2145956224, 2145996032, 2146034944, 2146072832, 2146109696, 2146145664, 2146180608, 2146214656, 2146247808, }, { 2027355264, 2030408704, 2033386624, 2036290944, 2039123328, 2041885440, 2044578944, 2047205376, 2049766528, 2052263680, 2054698496, 2057072384, 2059387008, 2061643520, 2063843328, 2065987968, 2068078720, 2070116864, 2072103552, 2074040192, 2075927936, 2077767936, 2079561472, 2081309568, 2083013376, 2084673920, 2086292352, 2087869696, 2089406976, 2090905216, 2092365184, 2093788032, 2095174528, 2096525824, 2097842432, 2099125632, 2100375808, 2101594240, 2102781312, 2103938048, 2105065216, 2106163456, 2107233536, 2108276096, 2109292032, 2110281728, 2111246080, 2112185728, 2113101056, 2113992960, 2114861824, 2115708288, 2116532992, 2117336448, 2118119168, 2118881792, 2119624704, 2120348416, 2121053440, 2121740288, 2122409344, 2123061120, 2123696128, 2124314624, 2124917120, 2125504128, 2126075776, 2126632832, 2127175296, 2127703808, 2128218624, 2128720000, 2129208448, 2129684352, 2130147712, 2130599168, 2131038976, 2131467264, 2131884416, 2132290816, 2132686592, 2133072256, 2133447680, 2133813504, 2134169856, 2134516864, 2134854784, 2135184000, 2135504640, 2135816960, 2136121216, 2136417536, 2136706048, 2136987136, 2137260928, 2137527552, 2137787264, 2138040192, 2138286592, 2138526464, 2138760192, 2138987776, 2139209472, 2139425408, 2139635712, 2139840512, 2140039936, 2140234240, 2140423424, 2140607744, 2140787200, 2140962048, 2141132288, 2141298048, 2141459584, 2141616896, 2141769984, 2141919232, 2142064512, 2142205952, 2142343808, 2142478080, 2142608768, 2142736128, 2142860032, 2142980864, 2143098368, 2143212928, 2143324544, 2143433088, 2143538944, 2143641984, 2143742336, 2143840000, 2143935232, 2144027904, 2144118144, 2144206080, 2144291712, 2144375168, 2144456320, 2144535424, 2144612480, 2144687488, 2144760448, 2144831616, 2144900992, 2144968448, 2145034112, 2145098112, 2145160448, 2145221248, 2145280256, 2145337856, 2145393920, 2145448576, 2145501696, 2145553536, 2145603968, 2145653120, 2145700992, 2145747456, 2145792896, 2145837056, 2145880064, 2145922048, 2145962880, 2146002560, 2146041344, 2146078976, 2146115712, 2146151424, 2146186240, 2146220160, 2146253184, 2146285312, 2146316672, 2146347136, 2146376832, 2146405760, 2146433920, 2146461440, 2146488192, 2146514176, 2146539520, 2146564224, 2146588160, 2146611584, 2146634368, 2146656640, 2146678272, 2146699264, 2146719744, 2146739712, 2146759168, 2146778112, 2146796544, 2146814464, 2146832000, 2146849024, 2146865664, }, { 2086555136, 2088125824, 2089656576, 2091148416, 2092602240, 2094018944, 2095399680, 2096745088, 2098056192, 2099333888, 2100578816, 2101792000, 2102974080, 2104125824, 2105248128, 2106341760, 2107407232, 2108445440, 2109456896, 2110442496, 2111402624, 2112338176, 2113249664, 2114137728, 2115002880, 2115845760, 2116666880, 2117466880, 2118246272, 2119005568, 2119745280, 2120465920, 2121167872, 2121851776, 2122517888, 2123166976, 2123799168, 2124414976, 2125014912, 2125599360, 2126168704, 2126723200, 2127263360, 2127789568, 2128302208, 2128801408, 2129287808, 2129761536, 2130222976, 2130672512, 2131110272, 2131536768, 2131952128, 2132356736, 2132750848, 2133134720, 2133508736, 2133872896, 2134227584, 2134573184, 2134909696, 2135237504, 2135556736, 2135867648, 2136170624, 2136465536, 2136752896, 2137032832, 2137305344, 2137570816, 2137829376, 2138081280, 2138326528, 2138565504, 2138798080, 2139024768, 2139245440, 2139460480, 2139669888, 2139873792, 2140072320, 2140265856, 2140454144, 2140637696, 2140816384, 2140990464, 2141159936, 2141325056, 2141485824, 2141642368, 2141794944, 2141943424, 2142088064, 2142228992, 2142366208, 2142499840, 2142630016, 2142756736, 2142880128, 2143000448, 2143117440, 2143231488, 2143342592, 2143450752, 2143556096, 2143658624, 2143758592, 2143855872, 2143950592, 2144043008, 2144132864, 2144220416, 2144305664, 2144388608, 2144469504, 2144548224, 2144624896, 2144699648, 2144772352, 2144843264, 2144912256, 2144979328, 2145044864, 2145108480, 2145170560, 2145231104, 2145289856, 2145347200, 2145403008, 2145457408, 2145510400, 2145561984, 2145612160, 2145661056, 2145708672, 2145755136, 2145800192, 2145844224, 2145887104, 2145928832, 2145969408, 2146008960, 2146047616, 2146085120, 2146121600, 2146157184, 2146191872, 2146225664, 2146258560, 2146290560, 2146321792, 2146352128, 2146381696, 2146410496, 2146438528, 2146465920, 2146492416, 2146518400, 2146543616, 2146568192, 2146592128, 2146615424, 2146638080, 2146660224, 2146681728, 2146702720, 2146723072, 2146743040, 2146762368, 2146781184, 2146799616, 2146817408, 2146834816, 2146851840, 2146868352, 2146884352, 2146900096, 2146915328, 2146930176, 2146944640, 2146958720, 2146972416, 2146985856, 2146998784, 2147011456, 2147023872, 2147035904, 2147047552, 2147058944, 2147070080, 2147080832, 2147091456, 2147101696, 2147111680, 2147121408, 2147130880, 2147140096, 2147149056, 2147157760, 2147166336, 2147174656, }, { 2106670080, 2107727232, Loading Loading @@ -252,6 +862,8 @@ Word32 release_cnst_table[201] = // Q31 2147266432, 2147272064, 2147277568, }, }; Loading Loading @@ -648,6 +1260,7 @@ void limiter_process_fx( Word16 num_channels, scale, result; Word32 release_constant, compare_value; Word32 div32, gain, frame_gain, attack_constant; Word16 idx; /* return early if given nonsensical values */ test(); Loading Loading @@ -780,7 +1393,8 @@ void limiter_process_fx( move32(); result = BASOP_Util_Divide3232_Scale( releaseHeuristic, div32, &scale ); release_constant = release_cnst_table[shr( result, sub( 15, scale ) )]; /* Q31 */ idx = extract_l( Mpy_32_32( hLimiter->sampling_rate, 134218 ) ); release_constant = release_cnst_table[idx][shr( result, sub( 15, scale ) )]; /* Q31 */ move32(); /* Unoptimized code for reference */ /* releaseTimeInSeconds = 0.005f * powf(200.f, releaseHeuristic); <-- Map heuristic value (0; 1) exponentially to range (0.005; 1) Loading