/******************************************************************************
 *                                                                            *
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 *****************************************************************************
 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
*/
#include <string.h>
#include <stdio.h>
#include <math.h>
#include "ixheaacd_type_def.h"
#include "ixheaacd_sbr_common.h"

#include "ixheaacd_cnst.h"
#include "ixheaacd_constants.h"
#include "ixheaacd_basic_ops32.h"
#include "ixheaacd_basic_ops16.h"
#include "ixheaacd_basic_ops40.h"
#include "ixheaacd_basic_ops.h"
#include "ixheaacd_bitbuffer.h"
#include "ixheaacd_error_standards.h"
#include "ixheaacd_basic_op.h"
#include "ixheaacd_intrinsics.h"
#include "ixheaacd_defines.h"

#include "ixheaacd_aac_rom.h"

#include "ixheaacd_definitions.h"

#include "ixheaacd_error_codes.h"

#include "ixheaacd_pulsedata.h"

#include "ixheaacd_pns.h"
#include "ixheaacd_drc_data_struct.h"

#include "ixheaacd_lt_predict.h"

#include "ixheaacd_channelinfo.h"
#include "ixheaacd_drc_dec.h"
#include "ixheaacd_sbrdecoder.h"
#include "ixheaacd_block.h"
#include "ixheaacd_channel.h"

#include "ixheaacd_sbr_payload.h"
#include "ixheaacd_common_rom.h"
#include "ixheaacd_sbrdecsettings.h"
#include "ixheaacd_sbr_scale.h"
#include "ixheaacd_env_extr_part.h"
#include "ixheaacd_sbr_rom.h"
#include "ixheaacd_stereo.h"
#include "ixheaacd_lpp_tran.h"
#include "ixheaacd_hybrid.h"
#include "ixheaacd_ps_dec.h"

#include "ixheaacd_env_extr.h"
#include "ixheaacd_adts.h"
#include "ixheaacd_audioobjtypes.h"

#include "ixheaacd_memory_standards.h"

#include "ixheaacd_latmdemux.h"

#include "ixheaacd_aacdec.h"
#include "ixheaacd_config.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"

#define DRC_SBR_ONE_Q25 (1 << 25)

static PLATFORM_INLINE WORD32 ixheaacd_mult32x16in32_shift29(WORD32 a,
                                                             WORD32 b) {
  WORD32 result;
  WORD64 temp_result;

  temp_result = (WORD64)a * (WORD64)b;

  result = (WORD32)(temp_result >> 29);

  return (result);
}

static PLATFORM_INLINE WORD32 ixheaacd_mult32x16in32_shift25(WORD32 a,
                                                             WORD32 b) {
  WORD32 result;
  WORD64 temp_result;

  temp_result = (WORD64)a * (WORD64)b;

  temp_result = temp_result >> 25;

  if (temp_result >= MAX_32)
    result = MAX_32;
  else if (temp_result < MIN_32)
    result = MIN_32;
  else
    result = (WORD32)temp_result;

  return (result);
}

static const WORD32 ixheaacd_drc_pow_tbl_2_q29[] = {
    536870912,  537242967,  537615991,  537988562,  538361391,  538734479,
    539108539,  539482144,  539856009,  540230847,  540605230,  540979873,
    541354776,  541730654,  542106077,  542481760,  542858421,  543234626,
    543611091,  543987817,  544365523,  544742772,  545120282,  545498775,
    545876810,  546255106,  546633664,  547013208,  547392292,  547771638,
    548151972,  548531845,  548911981,  549293107,  549673770,  550054698,
    550435889,  550818073,  551199794,  551581779,  551964758,  552347273,
    552730053,  553113099,  553497142,  553880719,  554264562,  554649404,
    555033779,  555418421,  555803330,  556189241,  556574683,  556960393,
    557347107,  557733352,  558119865,  558506646,  558894433,  559281751,
    559669337,  560057931,  560446055,  560834448,  561223110,  561612784,
    562001985,  562391456,  562781941,  563171952,  563562234,  563952786,
    564344355,  564735450,  565126815,  565519199,  565911108,  566303288,
    566695739,  567089213,  567482209,  567875478,  568269771,  568663586,
    569057673,  569452034,  569847421,  570242329,  570637511,  571033721,
    571429451,  571825455,  572221734,  572619044,  573015873,  573412977,
    573811114,  574208769,  574606699,  575005666,  575404148,  575802907,
    576201942,  576602016,  577001605,  577401471,  577802378,  578202799,
    578603497,  579004473,  579406493,  579808025,  580209836,  580612693,
    581015061,  581417708,  581820634,  582224610,  582628095,  583031860,
    583436676,  583841002,  584245607,  584650493,  585056433,  585461881,
    585867610,  586274395,  586680687,  587087260,  587494116,  587902030,
    588309450,  588717152,  589125916,  589534184,  589942735,  590351569,
    590761467,  591170869,  591580554,  591991306,  592401560,  592812098,
    593222920,  593634813,  594046205,  594457883,  594870633,  595282882,
    595695417,  596108238,  596522133,  596935527,  597349207,  597763964,
    598178218,  598592760,  599008380,  599423497,  599838901,  600254594,
    600671368,  601087637,  601504195,  601921837,  602338973,  602756397,
    603174111,  603592913,  604011207,  604429790,  604849464,  605268628,
    605688083,  606107829,  606528668,  606948996,  607369615,  607791330,
    608212533,  608634029,  609055816,  609478701,  609901074,  610323739,
    610747505,  611170757,  611594302,  612018141,  612443083,  612867510,
    613292231,  613718058,  614143369,  614568974,  614994874,  615421883,
    615848375,  616275162,  616703060,  617130439,  617558114,  617986086,
    618415172,  618843738,  619272600,  619702579,  620132037,  620561793,
    620991846,  621423019,  621853669,  622284618,  622716688,  623148235,
    623580081,  624012226,  624445496,  624878241,  625311285,  625745457,
    626179103,  626613049,  627048125,  627482673,  627917523,  628352674,
    628788957,  629224712,  629660769,  630097961,  630534623,  630971588,
    631408855,  631847261,  632285135,  632723313,  633162631,  633601417,
    634040507,  634479901,  634920439,  635360443,  635800752,  636242207,
    636683127,  637124352,  637565884,  638008564,  638450708,  638893159,
    639336761,  639779826,  640223197,  640666876,  641111710,  641556004,
    642000607,  642446367,  642891586,  643337114,  643782951,  644229948,
    644676404,  645123169,  645571097,  646018482,  646466177,  646914182,
    647363354,  647811981,  648260918,  648711025,  649160586,  649610458,
    650060643,  650511999,  650962808,  651413929,  651866225,  652317973,
    652770033,  653223271,  653675959,  654128960,  654582276,  655036772,
    655490716,  655944976,  656400417,  656855307,  657310512,  657766033,
    658222739,  658678891,  659135360,  659593017,  660050119,  660507538,
    660965274,  661424202,  661882573,  662341262,  662801145,  663260471,
    663720114,  664180077,  664641237,  665101837,  665562757,  666024877,
    666486436,  666948316,  667410515,  667873918,  668336759,  668799921,
    669264288,  669728093,  670192218,  670656666,  671122323,  671587415,
    672052829,  672519455,  672985516,  673451899,  673918605,  674386527,
    674853881,  675321559,  675790455,  676258782,  676727434,  677196410,
    677666608,  678136235,  678606188,  679077364,  679547969,  680018900,
    680490157,  680962642,  681434553,  681906792,  682380260,  682853154,
    683326375,  683800829,  684274707,  684748914,  685223450,  685699220,
    686174414,  686649938,  687126699,  687602882,  688079395,  688556239,
    689034324,  689511829,  689989665,  690468745,  690947244,  691426075,
    691905238,  692385648,  692865476,  693345636,  693827046,  694307873,
    694789033,  695270526,  695753273,  696235434,  696717930,  697201682,
    697684847,  698168347,  698652182,  699137277,  699621784,  700106626,
    700592731,  701078246,  701564098,  702050286,  702537740,  703024604,
    703511804,  704000273,  704488150,  704976365,  705464918,  705954743,
    706443974,  706933544,  707424389,  707914639,  708405228,  708896158,
    709388365,  709879976,  710371927,  710865159,  711357793,  711850769,
    712345028,  712838688,  713332689,  713827033,  714322665,  714817695,
    715313068,  715809731,  716305792,  716802196,  717298945,  717796987,
    718294425,  718792207,  719291286,  719789759,  720288578,  720787743,
    721288207,  721788064,  722288268,  722789774,  723290672,  723791917,
    724293510,  724796408,  725298697,  725801333,  726305278,  726808613,
    727312296,  727816328,  728321672,  728826404,  729331485,  729837881,
    730343664,  730849797,  731356280,  731864082,  732371269,  732878807,
    733387666,  733895909,  734404503,  734913450,  735423722,  735933376,
    736443382,  736954717,  737465431,  737976499,  738487922,  739000676,
    739512808,  740025295,  740539116,  741052315,  741565869,  742079779,
    742595027,  743109650,  743624629,  744140950,  744656644,  745172696,
    745690092,  746206860,  746723986,  747241470,  747760302,  748278505,
    748797067,  749316978,  749836260,  750355901,  750875903,  751397258,
    751917981,  752439065,  752961506,  753483313,  754005482,  754528012,
    755051903,  755575159,  756098778,  756623759,  757148104,  757672813,
    758197885,  758724324,  759250125,  759776290,  760303825,  760830721,
    761357981,  761885607,  762414607,  762942965,  763471690,  764001790,
    764531249,  765061074,  765591266,  766122838,  766653766,  767185062,
    767717742,  768249775,  768782177,  769314948,  769849106,  770382616,
    770916497,  771451767,  771986388,  772521379,  773057763,  773593497,
    774129603,  774666080,  775203953,  775741174,  776278768,  776817761,
    777356101,  777894814,  778433900,  778974389,  779514224,  780054432,
    780596047,  781137005,  781678338,  782220046,  782763164,  783305624,
    783848460,  784392709,  784936298,  785480264,  786024607,  786570367,
    787115466,  787660942,  788207838,  788754071,  789300683,  789847673,
    790396087,  790943837,  791491966,  792041522,  792590412,  793139683,
    793689333,  794240415,  794790829,  795341624,  795893853,  796445413,
    796997355,  797549679,  798103441,  798656532,  799210006,  799764921,
    800319163,  800873790,  801428800,  801985256,  802541037,  803097203,
    803654817,  804211755,  804769079,  805326789,  805885951,  806444435,
    807003307,  807563633,  808123280,  808683314,  809243737,  809805619,
    810366819,  810928409,  811491460,  812053829,  812616587,  813179736,
    813744351,  814308281,  814872602,  815438392,  816003496,  816568991,
    817135959,  817702240,  818268913,  818835978,  819404520,  819972373,
    820540619,  821110344,  821679379,  822248808,  822818632,  823389939,
    823960554,  824531564,  825104060,  825675863,  826248061,  826820657,
    827394742,  827968132,  828541920,  829117201,  829691784,  830266766,
    830842146,  831419024,  831995203,  832571781,  833149860,  833727238,
    834305017,  834883195,  835462879,  836041861,  836621243,  837202134,
    837782320,  838362909,  838943900,  839526403,  840108200,  840690401,
    841274117,  841857125,  842440538,  843025469,  843609691,  844194318,
    844779350,  845365905,  845951749,  846537999,  847125775,  847712839,
    848300310,  848888187,  849477595,  850066289,  850655390,  851246025,
    851835944,  852426272,  853017009,  853609284,  854200840,  854792807,
    855386315,  855979103,  856572302,  857165912,  857761068,  858355502,
    858950348,  859546742,  860142413,  860738498,  861334995,  861933045,
    862530370,  863128110,  863727405,  864325973,  864924957,  865524355,
    866125314,  866725545,  867326191,  867928401,  868529881,  869131778,
    869734092,  870337974,  870941124,  871544692,  872149831,  872754236,
    873359061,  873964304,  874571123,  875177207,  875783710,  876391792,
    876999138,  877606904,  878215091,  878824861,  879433893,  880043346,
    880654386,  881264685,  881875407,  882486553,  883099289,  883711283,
    884323700,  884937712,  885550980,  886164672,  886778790,  887394507,
    888009477,  888624873,  889241872,  889858122,  890474799,  891093082,
    891710615,  892328577,  892946966,  893566965,  894186213,  894805890,
    895427180,  896047717,  896668684,  897290081,  897913096,  898535355,
    899158046,  899782358,  900405913,  901029900,  901654319,  902280365,
    902905651,  903531370,  904158719,  904785306,  905412328,  906039785,
    906668875,  907297202,  907925965,  908556365,  909186000,  909816072,
    910446581,  911078730,  911710114,  912341935,  912975401,  913608099,
    914241235,  914874810,  915510034,  916144489,  916779383,  917415930,
    918051705,  918687921,  919325793,  919962891,  920600432,  921238414,
    921878057,  922516924,  923156234,  923797209,  924437406,  925078047,
    925719132,  926361886,  927003861,  927646281,  928290373,  928933684,
    929577441,  930221644,  930867524,  931512622,  932158166,  932805391,
    933451831,  934098719,  934746055,  935395077,  936043312,  936691996,
    937342369,  937991953,  938641988,  939292472,  939944651,  940596039,
    941247878,  941901414,  942554158,  943207354,  943861002,  944516353,
    945170909,  945825918,  946482633,  947138552,  947794925,  948451753,
    949110291,  949768030,  950426226,  951086135,  951745243,  952404809,
    953064832,  953726573,  954387511,  955048908,  955712027,  956374341,
    957037115,  957700348,  958365307,  959029460,  959694074,  960360418,
    961025954,  961691951,  962358410,  963026603,  963693987,  964361833,
    965031418,  965700191,  966369428,  967039128,  967710571,  968381201,
    969052296,  969725137,  970397163,  971069654,  971743897,  972417321,
    973091213,  973765571,  974441685,  975116980,  975792742,  976470264,
    977146964,  977824133,  978501771,  979181174,  979859753,  980538802,
    981219619,  981899611,  982580073,  983261008,  983943715,  984625594,
    985307946,  985992074,  986675373,  987359145,  988043392,  988729419,
    989414615,  990100286,  990787742,  991474364,  992161462,  992849036,
    993538401,  994226929,  994915935,  995606734,  996296696,  996987136,
    997678055,  998370772,  999062649,  999755006,  1000449165, 1001142483,
    1001836281, 1002531886, 1003226647, 1003921889, 1004617614, 1005315149,
    1006011839, 1006709012, 1007407999, 1008106140, 1008804764, 1009503872,
    1010204800, 1010904879, 1011605442, 1012307830, 1013009365, 1013711388,
    1014413896, 1015118233, 1015821717, 1016525688, 1017231492, 1017936440,
    1018641876, 1019347801, 1020055565, 1020762470, 1021469865, 1022179101,
    1022887478, 1023596346, 1024305704, 1025016910, 1025727253, 1026438089,
    1027150775, 1027862597, 1028574913, 1029287722, 1030002386, 1030716185,
    1031430478, 1032146630, 1032861915, 1033577694, 1034293970, 1035012111,
    1035729381, 1036447148, 1037166784, 1037885547, 1038604809, 1039324569,
    1040046202, 1040766961, 1041488219, 1042211355, 1042933614, 1043656374,
    1044379635, 1045104778, 1045829042, 1046553809, 1047280462, 1048006234,
    1048732509, 1049459287, 1050187958, 1050915745, 1051644036, 1052374224,
    1053103526, 1053833333, 1054563647, 1055295861, 1056027188, 1056759022,
    1057492761, 1058225610, 1058958967, 1059694233, 1060428608, 1061163492,
    1061898885, 1062636193, 1063372607, 1064109531, 1064848373, 1065586320,
    1066324778, 1067063748, 1067804642, 1068544637, 1069285146, 1070027582,
    1070769118, 1071511168, 1072253732, 1072998229};

static const WORD32 ixheaacd_drc_pow_tbl_1_2_q29[] = {
    536870912, 536499115, 536126866, 535755584, 535384559, 535013791, 534642573,
    534272319, 533902321, 533531874, 533162389, 532793160, 532424187, 532054765,
    531686303, 531318096, 530949443, 530581746, 530214304, 529847117, 529479484,
    529112805, 528746380, 528379511, 528013594, 527647931, 527282520, 526916667,
    526551763, 526187112, 525822018, 525457872, 525093979, 524729644, 524366255,
    524003117, 523640231, 523276904, 522914521, 522552389, 522189817, 521828187,
    521466807, 521105678, 520744110, 520383480, 520023101, 519662284, 519302404,
    518942774, 518583392, 518223574, 517864691, 517506056, 517146985, 516788847,
    516430957, 516073315, 515715239, 515358092, 515001193, 514643861, 514287456,
    513931299, 513575388, 513219044, 512863627, 512508455, 512152852, 511798173,
    511443739, 511089551, 510734932, 510381235, 510027782, 509673901, 509320938,
    508968220, 508615746, 508262844, 507910858, 507559117, 507206948, 506855694,
    506504683, 506153915, 505802721, 505452439, 505102400, 504751936, 504402382,
    504053070, 503704000, 503354506, 503005920, 502657575, 502308807, 501960945,
    501613323, 501265280, 500918141, 500571242, 500224583, 499877503, 499531325,
    499185386, 498839027, 498493568, 498148348, 497803367, 497457967, 497113465,
    496769200, 496424518, 496080731, 495737182, 495393871, 495050143, 494707308,
    494364710, 494021696, 493679573, 493337687, 492996037, 492653973, 492312797,
    491971857, 491630504, 491290037, 490949805, 490609809, 490269401, 489929876,
    489590587, 489250886, 488912067, 488573482, 488235132, 487896371, 487558490,
    487220843, 486882786, 486545606, 486208661, 485871948, 485534827, 485198581,
    484862569, 484526148, 484190601, 483855286, 483520203, 483184714, 482850096,
    482515709, 482180917, 481846994, 481513302, 481179205, 480845976, 480512977,
    480180209, 479847037, 479514730, 479182654, 478850174, 478518557, 478187171,
    477856013, 477524454, 477193756, 476863286, 476532416, 476202404, 475872622,
    475543067, 475213113, 474884015, 474555145, 474225876, 473897462, 473569276,
    473241317, 472912959, 472585454, 472258176, 471930501, 471603677, 471277079,
    470950707, 470623939, 470298019, 469972325, 469646236, 469320994, 468995977,
    468671184, 468345998, 468021656, 467697539, 467373028, 467049359, 466725915,
    466402695, 466079083, 465756311, 465433762, 465110822, 464788720, 464466842,
    464145186, 463823140, 463501930, 463180943, 462859566, 462539024, 462218703,
    461898604, 461578117, 461258462, 460939028, 460619207, 460300216, 459981446,
    459662289, 459343960, 459025852, 458707965, 458389691, 458072244, 457755017,
    457437405, 457120617, 456804049, 456487700, 456170967, 455855057, 455539365,
    455223290, 454908036, 454593000, 454278182, 453962983, 453648601, 453334438,
    453019893, 452706164, 452392653, 452079359, 451765685, 451452825, 451140182,
    450827160, 450514950, 450202956, 449891179, 449579023, 449267678, 448956548,
    448645040, 448334342, 448023858, 447713590, 447402945, 447093107, 446783483,
    446473483, 446164288, 445855308, 445546541, 445237400, 444929061, 444620936,
    444312437, 444004738, 443697253, 443389981, 443082336, 442775490, 442468856,
    442161850, 441855641, 441549645, 441243276, 440937704, 440632343, 440327193,
    440021673, 439716946, 439412431, 439107545, 438803452, 438499569, 438195896,
    437891855, 437588603, 437285562, 436982152, 436679530, 436377118, 436074915,
    435772346, 435470562, 435168987, 434867046, 434565889, 434264941, 433964201,
    433663096, 433362772, 433062657, 432762178, 432462478, 432162987, 431863702,
    431564055, 431265185, 430966523, 430667498, 430369249, 430071207, 429773371,
    429475174, 429177751, 428880534, 428582956, 428286151, 427989552, 427693157,
    427396403, 427100420, 426804642, 426508504, 426213136, 425917972, 425623013,
    425327695, 425033144, 424738798, 424444094, 424150155, 423856420, 423562888,
    423269000, 422975875, 422682953, 422389675, 422097159, 421804845, 421512177,
    421220269, 420928563, 420637058, 420345200, 420054100, 419763202, 419471950,
    419181454, 418891160, 418601067, 418310622, 418020930, 417731440, 417441598,
    417152508, 416863619, 416574930, 416285891, 415997602, 415709512, 415421073,
    415133383, 414845892, 414558600, 414270960, 413984066, 413697371, 413410328,
    413124031, 412837931, 412552030, 412265782, 411980277, 411694970, 411409316,
    411124404, 410839690, 410555172, 410270309, 409986186, 409702260, 409417989,
    409134456, 408851120, 408567980, 408284496, 408001748, 407719196, 407436301,
    407154140, 406872175, 406590406, 406308294, 406026914, 405745730, 405464204,
    405183410, 404902809, 404621868, 404341657, 404061640, 403781816, 403501653,
    403222218, 402942976, 402663395, 402384540, 402105878, 401827409, 401548602,
    401270518, 400992628, 400714400, 400436895, 400159582, 399882461, 399605003,
    399328266, 399051721, 398774839, 398498677, 398222706, 397946927, 397670812,
    397395415, 397120208, 396844667, 396569841, 396295206, 396020761, 395745983,
    395471919, 395198044, 394923836, 394650341, 394377035, 394103919, 393830471,
    393557733, 393285184, 393012304, 392740132, 392468149, 392196355, 391924230,
    391652812, 391381582, 391110023, 390839169, 390568502, 390298023, 390027216,
    389757112, 389487195, 389216950, 388947407, 388678050, 388408881, 388139384,
    387870587, 387601977, 387333040, 387064801, 386796749, 386528371, 386260690,
    385993194, 385725883, 385458248, 385191308, 384924553, 384657474, 384391089,
    384124887, 383858871, 383592531, 383326883, 383061419, 382795633, 382530537,
    382265624, 382000895, 381735845, 381471483, 381207303, 380942804, 380678991,
    380415360, 380151913, 379888145, 379625062, 379362162, 379098943, 378836406,
    378574052, 378311880, 378049389, 377787580, 377525952, 377264006, 377002741,
    376741656, 376480753, 376219533, 375958991, 375698629, 375437951, 375177951,
    374918130, 374658489, 374398533, 374139252, 373880151, 373620735, 373361993,
    373103430, 372844553, 372586348, 372328322, 372070475, 371812315, 371554825,
    371297513, 371039889, 370782934, 370526157, 370269558, 370012648, 369756404,
    369500338, 369243961, 368988250, 368732715, 368477358, 368221691, 367966688,
    367711861, 367456725, 367202252, 366947954, 366693833, 366439403, 366185634,
    365932041, 365678140, 365424898, 365171832, 364918941, 364665743, 364413202,
    364160836, 363908164, 363656148, 363404306, 363152639, 362900667, 362649348,
    362398204, 362146755, 361895959, 361645336, 361394887, 361144134, 360894032,
    360644103, 360393871, 360144289, 359894880, 359645643, 359396104, 359147212,
    358898493, 358649472, 358401098, 358152896, 357904865, 357656534, 357408847,
    357161332, 356913517, 356666345, 356419344, 356172514, 355925384, 355678897,
    355432580, 355185964, 354939988, 354694182, 354448547, 354202614, 353957319,
    353712195, 353466772, 353221987, 352977371, 352732459, 352488182, 352244075,
    352000137, 351755902, 351512302, 351268870, 351025143, 350782049, 350539123,
    350296365, 350053313, 349810892, 349568639, 349326091, 349084174, 348842424,
    348600841, 348358965, 348117717, 347876636, 347635263, 347394516, 347153937,
    346913523, 346672818, 346432738, 346192824, 345952619, 345713038, 345473622,
    345234373, 344994832, 344755914, 344517162, 344278119, 344039698, 343801441,
    343563349, 343324969, 343087207, 342849610, 342611725, 342374457, 342137354,
    341899962, 341663188, 341426577, 341190130, 340953396, 340717277, 340481321,
    340245079, 340009450, 339773984, 339538682, 339303094, 339068117, 338833304,
    338598205, 338363717, 338129391, 337895227, 337660780, 337426941, 337193263,
    336959303, 336725949, 336492758, 336259728, 336026415, 335793707, 335561161,
    335328333, 335096109, 334864046, 334632144, 334399960, 334168380, 333936959,
    333705258, 333474158, 333243218, 333012438, 332781379, 332550919, 332320618,
    332090038, 331860057, 331630235, 331400573, 331170631, 330941287, 330712101,
    330482637, 330253769, 330025060, 329796509, 329567680, 329339446, 329111369,
    328883016, 328655256, 328427654, 328200209, 327972488, 327745358, 327518386,
    327291138, 327064480, 326837979, 326611635, 326385017, 326158986, 325933113,
    325706965, 325481404, 325255999, 325030751, 324805229, 324580293, 324355513,
    324130459, 323905990, 323681677, 323457091, 323233088, 323009241, 322785548,
    322561584, 322338202, 322114974, 321891476, 321668557, 321445793, 321223183,
    321000303, 320778002, 320555855, 320333438, 320111599, 319889913, 319668381,
    319446579, 319225354, 319004282, 318782942, 318562176, 318341563, 318121103,
    317900376, 317680221, 317460219, 317239950, 317020253, 316800708, 316581315,
    316361656, 316142567, 315923630, 315704427, 315485794, 315267311, 315048981,
    314830385, 314612356, 314394479, 314176337, 313958761, 313741337, 313523648,
    313306525, 313089551, 312872729, 312655643, 312439120, 312222748, 312006113,
    311790040, 311574117, 311358344, 311142309, 310926835, 310711510, 310495923,
    310280896, 310066019, 309851290, 309636300, 309421869, 309207586, 308993043,
    308779057, 308565219, 308351530, 308137581, 307924187, 307710942, 307497437,
    307284487, 307071684, 306859029, 306646116, 306433755, 306221542, 306009071,
    305797151, 305585378, 305373753, 305161870, 304950537, 304739351, 304527908,
    304317014, 304106267, 303895665, 303684808, 303474498, 303264334, 303053915,
    302844042, 302634314, 302424732, 302214895, 302005603, 301796456, 301587056,
    301378199, 301169486, 300960918, 300752097, 300543819, 300335684, 300127297,
    299919451, 299711748, 299504190, 299296380, 299089109, 298881982, 298674603,
    298467763, 298261067, 298054513, 297847708, 297641441, 297435316, 297228942,
    297023103, 296817406, 296611460, 296406049, 296200780, 295995653, 295790277,
    295585435, 295380734, 295175785, 294971367, 294767092, 294562958, 294358576,
    294154725, 293951015, 293747058, 293543630, 293340343, 293137197, 292933805,
    292730940, 292528217, 292325247, 292122804, 291920501, 291718338, 291515930,
    291314047, 291112305, 290910317, 290708854, 290507530, 290306346, 290104918,
    289904013, 289703246, 289502236, 289301748, 289101399, 288901189, 288700736,
    288500803, 288301008, 288100971, 287901454, 287702074, 287502453, 287303350,
    287104385, 286905557, 286706488, 286507937, 286309522, 286110867, 285912728,
    285714725, 285516860, 285318755, 285121164, 284923710, 284726017, 284528837,
    284331793, 284134885, 283937739, 283741105, 283544606, 283347870, 283151644,
    282955554, 282759600, 282563407, 282367725, 282172178, 281976393, 281781117,
    281585976, 281390970, 281195728, 281000992, 280806392, 280611555, 280417224,
    280223028, 280028966, 279834668, 279640875, 279447217, 279253323, 279059933,
    278866676, 278673554, 278480197, 278287342, 278094620, 277901665, 277709211,
    277516890, 277324702, 277132281, 276940359, 276748571, 276556549, 276365027,
    276173637, 275982379, 275790889, 275599897, 275409037, 275217945, 275027349,
    274836885, 274646553, 274455990, 274265922, 274075986, 273885819, 273696146,
    273506604, 273317193, 273127553, 272938405, 272749388, 272560141, 272371386,
    272182762, 271993908, 271805545, 271617313, 271429211, 271240880, 271053039,
    270865327, 270677388, 270489937, 270302615, 270115423, 269928004, 269741072,
    269554269, 269367240, 269180696, 268994281, 268807995, 268621484};

#define MUL_DRC_BAND 4

static PLATFORM_INLINE WORD32 ixheaacd_div_by_30(WORD32 op) {
  WORD32 ret;
  WORD64 temp;

  temp = (WORD64)op * 35791394;

  ret = (WORD32)((temp + 17895697) >> 30);

  return ret;
}

static PLATFORM_INLINE WORD32 ixheaacd_div_by_15(WORD64 op) {
  WORD32 ret;
  WORD64 temp;

  temp = (WORD64)op * 71582788;

  ret = (WORD32)((temp + 134217728) >> 30);

  return ret;
}

static VOID ixheaacd_copy_drc_data(ixheaac_drc_data_struct *ch_data,
                                   ixheaac_drc_bs_data_struct *ptr_bs_data,
                                   WORD32 frame_size) {
  WORD32 band_num;

  ch_data->n_drc_bands = ptr_bs_data->drc_num_bands;

  if (ch_data->n_drc_bands == 1) {
    ch_data->n_mdct_bands[0] = frame_size;
    ch_data->drc_fac[0] = ptr_bs_data->dyn_rng_dlbl[0];
    ch_data->drc_fac_dvb[0] = ptr_bs_data->dyn_rng_dlbl_dvb[0];

  } else {
    for (band_num = 0; band_num < ptr_bs_data->drc_num_bands; band_num++) {
      ch_data->n_mdct_bands[band_num] =
          (ptr_bs_data->drc_band_top[band_num] + 1) * MUL_DRC_BAND;
      ch_data->drc_fac[band_num] = ptr_bs_data->dyn_rng_dlbl[band_num];
      ch_data->drc_fac_dvb[band_num] = ptr_bs_data->dyn_rng_dlbl_dvb[band_num];
    }
  }

  ch_data->drc_interp_scheme = ptr_bs_data->drc_interpolation_scheme;
}

WORD32 ixheaacd_drc_map_channels(ia_drc_dec_struct *pstr_drc_dec,
                                 WORD32 num_channels, WORD32 frame_size) {
  WORD32 i, element;
  WORD32 num_drc_elements;
  ixheaac_drc_bs_data_struct *ptr_bs_data;

  num_drc_elements = pstr_drc_dec->num_drc_elements;

  if (num_drc_elements == 0) {
    return IA_NO_ERROR;
  }

  if (num_drc_elements == 1) {
  }

  if (num_drc_elements > 1) {
    for (i = 0; i < num_channels; i++) {
      WORD32 drc_on = 0;

      for (element = 0; element < num_drc_elements; element++) {
        ptr_bs_data = &pstr_drc_dec->str_drc_bs_data[element];
        if (ptr_bs_data->b_channel_on[i]) drc_on++;
      }

      if (drc_on > 1) {
        return IA_ENHAACPLUS_DEC_EXE_FATAL_INVALID_DRC_DATA;
      }
    }
  }

  for (element = 0; element < num_drc_elements; element++) {
    ptr_bs_data = &pstr_drc_dec->str_drc_bs_data[element];
    if (ptr_bs_data->prog_ref_level_present)
      pstr_drc_dec->prog_ref_level = ptr_bs_data->prog_ref_level;

    for (i = 0; i < num_channels; i++) {
      if (!ptr_bs_data->b_channel_on[i]) continue;

      ixheaacd_copy_drc_data(&pstr_drc_dec->str_drc_channel_data[i],
                             &pstr_drc_dec->str_drc_bs_data[element],
                             frame_size);
    }
  }
  return IA_NO_ERROR;
}

VOID ixheaacd_drc_dec_create(ia_drc_dec_struct *pstr_drc_dec,
                             WORD16 drc_ref_level, WORD16 drc_def_level) {
  WORD32 j, k;
  WORD32 ch;

  pstr_drc_dec->sbr_allowed = 1;
  pstr_drc_dec->sbr_found = 0;

  pstr_drc_dec->drc_element_found = 0;

  pstr_drc_dec->max_audio_channels = MAX_BS_ELEMENT;
  pstr_drc_dec->drc_ref_level = drc_ref_level;
  pstr_drc_dec->drc_def_level = drc_def_level;

  pstr_drc_dec->num_drc_elements = 0;
  pstr_drc_dec->target_ref_level = 108;
  pstr_drc_dec->prog_ref_level = 108;
  pstr_drc_dec->cut_factor = 0;
  pstr_drc_dec->boost_factor = 0;
  pstr_drc_dec->drc_on = 0;
  pstr_drc_dec->drc_dig_norm = 1;
  pstr_drc_dec->pres_mode = -1;

  pstr_drc_dec->length_history = 2;
  if (pstr_drc_dec->sbr_allowed) pstr_drc_dec->length_history++;

  for (ch = 0; ch < MAX_BS_ELEMENT; ch++) {
    ixheaac_drc_data_struct *pstr_drc_data =
        (ixheaac_drc_data_struct *)&pstr_drc_dec->str_drc_channel_data[ch];
    pstr_drc_dec->drc_channel_next_index[ch] = 0;
    pstr_drc_dec->state = 0;

    for (j = 0; j < 64; j++)
      for (k = 0; k < 64; k++)
        pstr_drc_data->drc_factors_sbr[j][k] = DRC_SBR_ONE_Q25;
    for (j = 0; j < MAX_DRC_BANDS; j++) pstr_drc_data->drc_fac[j] = 0;

    pstr_drc_data->n_mdct_bands[0] = FRAME_SIZE;
    pstr_drc_data->drc_exp = 1;
    pstr_drc_data->short_block = 0;
    pstr_drc_data->drc_interp_scheme = 0;
    pstr_drc_data->n_drc_bands = 1;
    pstr_drc_data->new_prog_ref_level = 0;
    pstr_drc_data->new_drc_fac = 0;
  }
}

static WORD32 ixheaacd_drc_excluded_channels(ia_handle_bit_buf_struct bs,
                                             WORD32 nch, UWORD8 *b_channel_on) {
  WORD32 ich, nbyte = 0;
  WORD32 num_excl_chan;
  UWORD8 exclude_mask;

  num_excl_chan = 7;
  for (ich = 0; ich < 7; ich++) {
    exclude_mask = ixheaacd_read_bits_buf(bs, 1);
    if (ich < nch) {
      b_channel_on[ich] = !exclude_mask;
    }
  }
  nbyte++;

  while (ixheaacd_read_bits_buf(bs, 1)) {
    for (ich = num_excl_chan; ich < num_excl_chan + 7; ich++) {
      exclude_mask = ixheaacd_read_bits_buf(bs, 1);
      if (ich < nch) {
        b_channel_on[ich] = !exclude_mask;
      }
    }
    nbyte++;
    num_excl_chan += 7;
  }

  return nbyte;
}

static WORD32 ixheaacd_drc_element_read(
    ia_handle_bit_buf_struct bs, ixheaac_drc_bs_data_struct *pstr_bs_data) {
  WORD32 ich, idrc, nbyte = 1;
  WORD32 pce_tag_present, drc_bands_present;
  WORD32 pce_instance_tag, drc_tag_reserved_bits;
  WORD32 prog_ref_level_reserved_bits;
  WORD32 excluded_chns_present;
  UWORD8 drc_band_incr;
  WORD8 max_dyn_rng_dlbl = -128;

  pstr_bs_data->drc_num_bands = 1;

  pce_tag_present = ixheaacd_read_bits_buf(bs, 1);
  if (pce_tag_present) {
    pce_instance_tag = ixheaacd_read_bits_buf(bs, 4);
    drc_tag_reserved_bits = ixheaacd_read_bits_buf(bs, 4);
    nbyte++;
  }

  for (ich = 0; ich < MAX_AUDIO_CHANNELS; ich++) {
    pstr_bs_data->b_channel_on[ich] = 1;
  }

  excluded_chns_present = ixheaacd_read_bits_buf(bs, 1);
  if (excluded_chns_present) {
    nbyte += ixheaacd_drc_excluded_channels(bs, MAX_AUDIO_CHANNELS,
                                            pstr_bs_data->b_channel_on);
  }

  drc_bands_present = ixheaacd_read_bits_buf(bs, 1);
  if (drc_bands_present) {
    drc_band_incr = ixheaacd_read_bits_buf(bs, 4);
    pstr_bs_data->drc_interpolation_scheme = ixheaacd_read_bits_buf(bs, 4);
    nbyte++;

    pstr_bs_data->drc_num_bands += drc_band_incr;
    for (idrc = 0; idrc < pstr_bs_data->drc_num_bands; idrc++) {
      pstr_bs_data->drc_band_top[idrc] = ixheaacd_read_bits_buf(bs, 8);
      nbyte++;
    }
  } else {
    pstr_bs_data->drc_band_top[0] = FRAME_SIZE / 4 - 1;
    pstr_bs_data->drc_interpolation_scheme = 0;
  }

  pstr_bs_data->prog_ref_level_present = ixheaacd_read_bits_buf(bs, 1);
  if (pstr_bs_data->prog_ref_level_present) {
    pstr_bs_data->prog_ref_level = ixheaacd_read_bits_buf(bs, 7);

    prog_ref_level_reserved_bits = ixheaacd_read_bits_buf(bs, 1);
    nbyte++;
  }

  for (idrc = 0; idrc < pstr_bs_data->drc_num_bands; idrc++) {
    WORD32 sign = ixheaacd_read_bits_buf(bs, 1);
    pstr_bs_data->dyn_rng_dlbl[idrc] = ixheaacd_read_bits_buf(bs, 7);
    if (sign)
      pstr_bs_data->dyn_rng_dlbl[idrc] = -pstr_bs_data->dyn_rng_dlbl[idrc];
    max_dyn_rng_dlbl = max(max_dyn_rng_dlbl, pstr_bs_data->dyn_rng_dlbl[idrc]);

    nbyte++;
  }
  pstr_bs_data->max_dyn_rng_dlbl = max_dyn_rng_dlbl;

  return nbyte;
}

static int ixheaacd_drc_read_compression(ia_handle_bit_buf_struct bs,
                                         ia_drc_dec_struct *pstr_drc_dec,
                                         WORD32 bs_pos) {
  int bit_count = 0;
  int dmx_lvl_present, ext_present, compression_present;
  int coarse_gain_present, fine_grain_present;
  ia_bit_buf_struct local_bs = {0};
  WORD32 bytes = 0, bits = 0;

  memcpy(&local_bs, bs, sizeof(ia_bit_buf_struct));

  if (local_bs.size < bs_pos) {
    longjmp(*(local_bs.xaac_jmp_buf),
            IA_ENHAACPLUS_DEC_EXE_NONFATAL_INSUFFICIENT_INPUT_BYTES);
  }
  bytes = (local_bs.size - bs_pos) >> 3;
  bits = (local_bs.size - bs_pos) % 8;

  local_bs.cnt_bits = bs_pos;
  local_bs.ptr_read_next = local_bs.ptr_bit_buf_base;
  local_bs.ptr_read_next += bytes;
  local_bs.bit_pos = 7 - bits;

  if (ixheaacd_read_bits_buf(&local_bs, 8) != DVB_ANC_DATA_SYNC_BYTE) {
    return 0;
  }

  if (ixheaacd_read_bits_buf(&local_bs, 2) != 3) return 0;

  ixheaacd_read_bits_buf(&local_bs, 2);
  pstr_drc_dec->pres_mode = ixheaacd_read_bits_buf(&local_bs, 2);
  ixheaacd_read_bits_buf(&local_bs, 1);
  if (ixheaacd_read_bits_buf(&local_bs, 1) != 0) return 0;

  if (ixheaacd_read_bits_buf(&local_bs, 3) != 0) return 0;

  dmx_lvl_present = ixheaacd_read_bits_buf(&local_bs, 1);
  ext_present = ixheaacd_read_bits_buf(&local_bs, 1);
  compression_present = ixheaacd_read_bits_buf(&local_bs, 1);
  coarse_gain_present = ixheaacd_read_bits_buf(&local_bs, 1);
  fine_grain_present = ixheaacd_read_bits_buf(&local_bs, 1);
  bit_count += 24;

  if (dmx_lvl_present) {
    ixheaacd_read_bits_buf(&local_bs, 8);
    bit_count += 8;
  }

  if (compression_present) {
    UWORD8 compression_on, compression_val;

    if (ixheaacd_read_bits_buf(&local_bs, 7) != 0) return 0;

    compression_on = (UWORD8)ixheaacd_read_bits_buf(&local_bs, 1);
    compression_val = (UWORD8)ixheaacd_read_bits_buf(&local_bs, 8);
    bit_count += 16;

    if (compression_on) {
      pstr_drc_dec->str_drc_bs_data[0].drc_num_bands = 1;
      pstr_drc_dec->str_drc_bs_data[0].dyn_rng_dlbl_dvb[0] = compression_val;
      pstr_drc_dec->str_drc_bs_data[0].drc_band_top[0] = (1024 >> 2) - 1;
      pstr_drc_dec->drc_ref_level = -1;
      pstr_drc_dec->str_drc_bs_data[0].drc_data_type = DVB_DRC_ANC_DATA;
    } else {
      pstr_drc_dec->str_drc_bs_data[0].drc_num_bands = 1;
      pstr_drc_dec->str_drc_bs_data[0].dyn_rng_dlbl_dvb[0] = (WORD8)0x80;
      pstr_drc_dec->str_drc_bs_data[0].drc_band_top[0] = (1024 >> 2) - 1;
      pstr_drc_dec->str_drc_bs_data[0].drc_data_type = DVB_DRC_ANC_DATA;

      if (compression_val != 0) return 0;
    }
  }

  if (coarse_gain_present) {
    ixheaacd_read_bits_buf(&local_bs, 16);
    bit_count += 16;
  }
  if (fine_grain_present) {
    ixheaacd_read_bits_buf(&local_bs, 16);
    bit_count += 16;
  }

  if (ext_present) {
    int ext_bits = 8;

    ixheaacd_read_bits_buf(&local_bs, 1);
    if (ixheaacd_read_bits_buf(&local_bs, 1)) ext_bits += 8;
    if (ixheaacd_read_bits_buf(&local_bs, 1)) ext_bits += 16;
    if (ixheaacd_read_bits_buf(&local_bs, 1)) ext_bits += 8;

    ixheaacd_read_bits_buf(&local_bs, ext_bits - 4);
    bit_count += ext_bits;
  }

  return (bit_count);
}

WORD32 ixheaacd_dec_drc_read_element(ia_drc_dec_struct *pstr_drc_dec,
                                     ia_drc_dec_struct *drc_dummy,
                                     ia_handle_bit_buf_struct bs) {
  WORD32 bits_read = 0;
  WORD32 bits_parse = 0;
  if (pstr_drc_dec->num_drc_elements < pstr_drc_dec->max_audio_channels) {
    bits_read = ixheaacd_drc_element_read(
        bs, &pstr_drc_dec->str_drc_bs_data[pstr_drc_dec->num_drc_elements]);

    if (pstr_drc_dec->dvb_anc_data_present) {
      bits_parse = ixheaacd_drc_read_compression(
          bs, pstr_drc_dec, pstr_drc_dec->dvb_anc_data_pos);
    }
    pstr_drc_dec->num_drc_elements++;

  } else {
    ixheaac_drc_bs_data_struct drc_ele_dummy;

    bits_read = ixheaacd_drc_element_read(bs, &drc_ele_dummy);
    if (pstr_drc_dec->dvb_anc_data_present) {
      bits_parse = ixheaacd_drc_read_compression(
          bs, drc_dummy, pstr_drc_dec->dvb_anc_data_pos);
    }
  }

  pstr_drc_dec->dvb_anc_data_present = 0;

  return bits_read;
}

static const WORD32 ixheaacd_drc_offset[2][16] = {
    {0, 4, 8, 12, 16, 20, 24, 28, 0, 0, 0, 0, 0, 0, 0, 0},

    {0, 4, 8, 12, 16, 19, 22, 26, 0, 0, 0, 0, 0, 0, 0, 0}};

WORD32 ixheaacd_get_div_value_24(WORD32 value) {
  WORD32 ret;
  WORD64 temp;

  temp = (WORD64)value * 44739243;

  ret = (WORD32)((temp + 22369621) >> 30);

  return ret;
}

WORD32 ixheaacd_get_div_value_2400(WORD32 value) {
  WORD32 ret;
  WORD64 temp;

  temp = (WORD64)value * 447392;

  ret = (WORD32)((temp + 223696) >> 30);

  return ret;
}

static WORD32 ixheaacd_drc_div_120_floor(WORD32 value) {
  WORD32 ret_val;
  WORD64 temp;

  temp = (WORD64)value * 8947849;

  ret_val = (WORD32)(temp >> 30);

  return ret_val;
}

static WORD32 ixheaacd_drc_floor(WORD32 bottom, WORD32 frame_size) {
  WORD32 ret_val;
  if (960 == frame_size) {
    ret_val = ixheaacd_drc_div_120_floor(bottom);
    ret_val *= 30;
    ret_val = ret_val >> 3;
  } else {
    ret_val = bottom >> 7;
    ret_val = ret_val << 2;
  }
  return ret_val;
}

static WORD32 ixheaacd_drc_ceil(WORD32 top, WORD32 frame_size) {
  WORD32 ret_val;
  if (960 == frame_size) {
    top += 119;
    ret_val = ixheaacd_drc_div_120_floor(top);
    ret_val *= 30;
    ret_val = ret_val >> 3;
  } else {
    top += 127;
    ret_val = top >> 7;
    ret_val = ret_val << 2;
  }
  return ret_val;
}

static WORD32 ixheaacd_drc_get_bottom_qmf(WORD32 bottom, WORD32 frame_size) {
  WORD32 ret_val;
  if (960 == frame_size) {
    ret_val = bottom % 120;
    ret_val = ret_val << 5;
    ret_val = ixheaacd_drc_div_120_floor(ret_val);
  } else {
    ret_val = bottom & 0x7F;
    ret_val = ret_val >> 2;
  }
  return ret_val;
};

VOID ixheaacd_drc_apply(ia_drc_dec_struct *pstr_drc_dec,
                        WORD32 *ptr_spectral_coef, WORD32 win_seq,
                        WORD32 channel, WORD32 frame_size) {
  WORD32 drc_band, spec_pos, start_pos, end_pos;
  WORD32 low_hi, drc_norm, drc_freq_fac;
  WORD32 drc_fac, div_val, mod_val, ret_val, offset_value;
  const WORD32 *table;
  ixheaac_drc_data_struct *pstr_drc_data;
  WORD32 num_qmf_sub_sample = (frame_size >> 5);
  WORD32 num_qmf_sub_sample_by_2 = (frame_size >> 6);
  WORD32 diff_ref_level;

  WORD32 *drc_sbr_factors[64];
  WORD32 qmf_start_pos, qmf_stop_pos, qmf_start, i, j;
  WORD32 prev_frame_drc_sbr_factors[64];
  WORD32 *ptr_drc_fac;
  ptr_drc_fac =
      &pstr_drc_dec->str_drc_channel_data[channel].drc_factors_sbr[0][0];

  for (i = 0; i < 64; i++) {
    drc_sbr_factors[i] = ptr_drc_fac;
    ptr_drc_fac += 64;
  }

  memcpy(prev_frame_drc_sbr_factors,
         drc_sbr_factors[2 * num_qmf_sub_sample - 1], 64 * sizeof(WORD32));

  pstr_drc_data = &pstr_drc_dec->str_drc_channel_data[channel];
  if (!pstr_drc_dec->drc_on) return;

  if (pstr_drc_dec->drc_dig_norm) {
    diff_ref_level =
        pstr_drc_dec->target_ref_level - pstr_drc_dec->prog_ref_level;

    if (diff_ref_level < 0) {
      diff_ref_level = -diff_ref_level;
      table = ixheaacd_drc_pow_tbl_2_q29;
      div_val = ixheaacd_get_div_value_24(diff_ref_level);
      drc_norm = 1 << (25 + div_val);
      mod_val = diff_ref_level - (div_val * 24);
      diff_ref_level = mod_val * 1000;

    } else {
      table = ixheaacd_drc_pow_tbl_1_2_q29;
      div_val = ixheaacd_get_div_value_24(diff_ref_level);
      drc_norm = 1 << (25 - div_val);
      mod_val = diff_ref_level - (div_val * 24);
      diff_ref_level = mod_val * 1000;
    }
    ret_val = ixheaacd_get_div_value_24(diff_ref_level);
    drc_norm = ixheaacd_mult32x16in32_shift29(drc_norm, table[ret_val]);

  } else {
    drc_norm = (1 << 25);
  }

  start_pos = 0;
  for (drc_band = 0; drc_band < pstr_drc_data->n_drc_bands; drc_band++) {
    if ((pstr_drc_dec->str_drc_bs_data[0].drc_data_type == DVB_DRC_ANC_DATA) &&
        (pstr_drc_dec->heavy_mode)) {
      int val_x, val_y;
      float compression_factor;
      float temp;
      val_x = ((UWORD8)pstr_drc_data->drc_fac_dvb[drc_band]) >> 4;
      val_y = ((UWORD8)pstr_drc_data->drc_fac_dvb[drc_band]) & 0x0F;

      compression_factor = (FLOAT32)(48.164 - 6.0206 * val_x - 0.4014 * val_y);

      temp = (FLOAT32)(pow(10, (float)compression_factor / 20.0));
      drc_freq_fac = (WORD32)(temp * 33554431);

    } else {
      if (pstr_drc_data->drc_fac[drc_band] < 0) {
        low_hi = pstr_drc_dec->cut_factor;
      } else {
        low_hi = pstr_drc_dec->boost_factor;
      }

      {
        drc_fac =
            pstr_drc_dec->str_drc_channel_data[channel].drc_fac[drc_band] *
            low_hi;
        if (drc_fac < 0) {
          drc_fac *= -1;
          table = ixheaacd_drc_pow_tbl_1_2_q29;

          div_val = ixheaacd_get_div_value_2400(drc_fac);
          drc_freq_fac = 1 << (25 - div_val);

          mod_val = drc_fac - (div_val * 2400);
          drc_fac = mod_val * 10;
        } else {
          table = ixheaacd_drc_pow_tbl_2_q29;

          div_val = ixheaacd_get_div_value_2400(drc_fac);
          drc_freq_fac = 1 << (25 + div_val);

          mod_val = drc_fac - (div_val * 2400);
          drc_fac = mod_val * 10;
        }

        ret_val = ixheaacd_get_div_value_24(drc_fac);

        drc_freq_fac =
            ixheaacd_mult32x16in32_shift29(drc_freq_fac, table[ret_val]);

        drc_freq_fac = ixheaacd_mult32x16in32_shift25(drc_freq_fac, drc_norm);
      }
    }

    end_pos = pstr_drc_data->n_mdct_bands[drc_band];

    if (!pstr_drc_dec->sbr_found) {
      for (spec_pos = start_pos; spec_pos < end_pos; spec_pos++) {
        ptr_spectral_coef[spec_pos] = ixheaacd_mult32x16in32_shift25(
            ptr_spectral_coef[spec_pos], drc_freq_fac);
      }
    }

    if (pstr_drc_dec->sbr_found) {
      if (win_seq != EIGHT_SHORT_SEQUENCE) {
        if (960 == frame_size) {
          qmf_start = ixheaacd_div_by_30(start_pos);
          offset_value = 1;
        } else {
          qmf_start = start_pos >> 5;
          offset_value = 0;
        }

        for (j = -num_qmf_sub_sample_by_2; j < num_qmf_sub_sample; j++) {
          WORD32 alpha_val = 0;

          if (j + num_qmf_sub_sample_by_2 < num_qmf_sub_sample) {
            if (pstr_drc_data->drc_interp_scheme == 0) {
              alpha_val = (j + num_qmf_sub_sample_by_2);
              for (i = qmf_start; i < 64; i++) {
                WORD64 temp_drc = (WORD64)alpha_val * drc_freq_fac +
                                  (num_qmf_sub_sample - alpha_val) *
                                      (WORD64)prev_frame_drc_sbr_factors[i];

                if (frame_size == 512) {
                  drc_sbr_factors[num_qmf_sub_sample + j][i] =
                      (WORD32)(temp_drc >> 4);
                } else if (frame_size == 480) {
                  drc_sbr_factors[num_qmf_sub_sample + j][i] =
                      ixheaacd_div_by_15(temp_drc);
                } else {
                  drc_sbr_factors[num_qmf_sub_sample + j][i] =
                      (WORD32)(temp_drc >> 5);
                }

                if (960 == frame_size) {
                  drc_sbr_factors[num_qmf_sub_sample + j][i] =
                      ixheaacd_div_by_30(
                          drc_sbr_factors[num_qmf_sub_sample + j][i]);
                }
              }

            } else {
              if (j + num_qmf_sub_sample_by_2 >=
                  ixheaacd_drc_offset[offset_value]
                                     [pstr_drc_data->drc_interp_scheme - 1]) {
                alpha_val = 1;
                for (i = qmf_start; i < 64; i++) {
                  drc_sbr_factors[num_qmf_sub_sample + j][i] = drc_freq_fac;
                }
              } else {
                alpha_val = 0;
                for (i = qmf_start; i < 64; i++) {
                  drc_sbr_factors[num_qmf_sub_sample + j][i] =
                      prev_frame_drc_sbr_factors[i];
                }
              }
            }
          } else {
            alpha_val = 1;
            for (i = qmf_start; i < 64; i++) {
              drc_sbr_factors[num_qmf_sub_sample + j][i] = drc_freq_fac;
            }
          }
        }
      } else {
        qmf_start_pos = ixheaacd_drc_floor(start_pos, frame_size);

        qmf_stop_pos = ixheaacd_drc_ceil(end_pos, frame_size);

        qmf_start = ixheaacd_drc_get_bottom_qmf(start_pos, frame_size);
        for (j = qmf_start_pos; j < qmf_stop_pos; j++) {
          if (j > qmf_start_pos && ((j & 0x03) == 0)) {
            qmf_start = 0;
          }
          for (i = qmf_start; i < 64; i++) {
            drc_sbr_factors[num_qmf_sub_sample + j][i] = drc_freq_fac;
          }
        }
      }
    }

    start_pos = end_pos;
  }

  if (win_seq != EIGHT_SHORT_SEQUENCE) {
    pstr_drc_data->prev_interp_scheme = pstr_drc_data->drc_interp_scheme;
  } else {
    pstr_drc_data->prev_interp_scheme = 8;
  }
}
