oggenc.m.c 1.6 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111271122711327114271152711627117271182711927120271212712227123271242712527126271272712827129271302713127132271332713427135271362713727138271392714027141271422714327144271452714627147271482714927150271512715227153271542715527156271572715827159271602716127162271632716427165271662716727168271692717027171271722717327174271752717627177271782717927180271812718227183271842718527186271872718827189271902719127192271932719427195271962719727198271992720027201272022720327204272052720627207272082720927210272112721227213272142721527216272172721827219272202722127222272232722427225272262722727228272292723027231272322723327234272352723627237272382723927240272412724227243272442724527246272472724827249272502725127252272532725427255272562725727258272592726027261272622726327264272652726627267272682726927270272712727227273272742727527276272772727827279272802728127282272832728427285272862728727288272892729027291272922729327294272952729627297272982729927300273012730227303273042730527306273072730827309273102731127312273132731427315273162731727318273192732027321273222732327324273252732627327273282732927330273312733227333273342733527336273372733827339273402734127342273432734427345273462734727348273492735027351273522735327354273552735627357273582735927360273612736227363273642736527366273672736827369273702737127372273732737427375273762737727378273792738027381273822738327384273852738627387273882738927390273912739227393273942739527396273972739827399274002740127402274032740427405274062740727408274092741027411274122741327414274152741627417274182741927420274212742227423274242742527426274272742827429274302743127432274332743427435274362743727438274392744027441274422744327444274452744627447274482744927450274512745227453274542745527456274572745827459274602746127462274632746427465274662746727468274692747027471274722747327474274752747627477274782747927480274812748227483274842748527486274872748827489274902749127492274932749427495274962749727498274992750027501275022750327504275052750627507275082750927510275112751227513275142751527516275172751827519275202752127522275232752427525275262752727528275292753027531275322753327534275352753627537275382753927540275412754227543275442754527546275472754827549275502755127552275532755427555275562755727558275592756027561275622756327564275652756627567275682756927570275712757227573275742757527576275772757827579275802758127582275832758427585275862758727588275892759027591275922759327594275952759627597275982759927600276012760227603276042760527606276072760827609276102761127612276132761427615276162761727618276192762027621276222762327624276252762627627276282762927630276312763227633276342763527636276372763827639276402764127642276432764427645276462764727648276492765027651276522765327654276552765627657276582765927660276612766227663276642766527666276672766827669276702767127672276732767427675276762767727678276792768027681276822768327684276852768627687276882768927690276912769227693276942769527696276972769827699277002770127702277032770427705277062770727708277092771027711277122771327714277152771627717277182771927720277212772227723277242772527726277272772827729277302773127732277332773427735277362773727738277392774027741277422774327744277452774627747277482774927750277512775227753277542775527756277572775827759277602776127762277632776427765277662776727768277692777027771277722777327774277752777627777277782777927780277812778227783277842778527786277872778827789277902779127792277932779427795277962779727798277992780027801278022780327804278052780627807278082780927810278112781227813278142781527816278172781827819278202782127822278232782427825278262782727828278292783027831278322783327834278352783627837278382783927840278412784227843278442784527846278472784827849278502785127852278532785427855278562785727858278592786027861278622786327864278652786627867278682786927870278712787227873278742787527876278772787827879278802788127882278832788427885278862788727888278892789027891278922789327894278952789627897278982789927900279012790227903279042790527906279072790827909279102791127912279132791427915279162791727918279192792027921279222792327924279252792627927279282792927930279312793227933279342793527936279372793827939279402794127942279432794427945279462794727948279492795027951279522795327954279552795627957279582795927960279612796227963279642796527966279672796827969279702797127972279732797427975279762797727978279792798027981279822798327984279852798627987279882798927990279912799227993279942799527996279972799827999280002800128002280032800428005280062800728008280092801028011280122801328014280152801628017280182801928020280212802228023280242802528026280272802828029280302803128032280332803428035280362803728038280392804028041280422804328044280452804628047280482804928050280512805228053280542805528056280572805828059280602806128062280632806428065280662806728068280692807028071280722807328074280752807628077280782807928080280812808228083280842808528086280872808828089280902809128092280932809428095280962809728098280992810028101281022810328104281052810628107281082810928110281112811228113281142811528116281172811828119281202812128122281232812428125281262812728128281292813028131281322813328134281352813628137281382813928140281412814228143281442814528146281472814828149281502815128152281532815428155281562815728158281592816028161281622816328164281652816628167281682816928170281712817228173281742817528176281772817828179281802818128182281832818428185281862818728188281892819028191281922819328194281952819628197281982819928200282012820228203282042820528206282072820828209282102821128212282132821428215282162821728218282192822028221282222822328224282252822628227282282822928230282312823228233282342823528236282372823828239282402824128242282432824428245282462824728248282492825028251282522825328254282552825628257282582825928260282612826228263282642826528266282672826828269282702827128272282732827428275282762827728278282792828028281282822828328284282852828628287282882828928290282912829228293282942829528296282972829828299283002830128302283032830428305283062830728308283092831028311283122831328314283152831628317283182831928320283212832228323283242832528326283272832828329283302833128332283332833428335283362833728338283392834028341283422834328344283452834628347283482834928350283512835228353283542835528356283572835828359283602836128362283632836428365283662836728368283692837028371283722837328374283752837628377283782837928380283812838228383283842838528386283872838828389283902839128392283932839428395283962839728398283992840028401284022840328404284052840628407284082840928410284112841228413284142841528416284172841828419284202842128422284232842428425284262842728428284292843028431284322843328434284352843628437284382843928440284412844228443284442844528446284472844828449284502845128452284532845428455284562845728458284592846028461284622846328464284652846628467284682846928470284712847228473284742847528476284772847828479284802848128482284832848428485284862848728488284892849028491284922849328494284952849628497284982849928500285012850228503285042850528506285072850828509285102851128512285132851428515285162851728518285192852028521285222852328524285252852628527285282852928530285312853228533285342853528536285372853828539285402854128542285432854428545285462854728548285492855028551285522855328554285552855628557285582855928560285612856228563285642856528566285672856828569285702857128572285732857428575285762857728578285792858028581285822858328584285852858628587285882858928590285912859228593285942859528596285972859828599286002860128602286032860428605286062860728608286092861028611286122861328614286152861628617286182861928620286212862228623286242862528626286272862828629286302863128632286332863428635286362863728638286392864028641286422864328644286452864628647286482864928650286512865228653286542865528656286572865828659286602866128662286632866428665286662866728668286692867028671286722867328674286752867628677286782867928680286812868228683286842868528686286872868828689286902869128692286932869428695286962869728698286992870028701287022870328704287052870628707287082870928710287112871228713287142871528716287172871828719287202872128722287232872428725287262872728728287292873028731287322873328734287352873628737287382873928740287412874228743287442874528746287472874828749287502875128752287532875428755287562875728758287592876028761287622876328764287652876628767287682876928770287712877228773287742877528776287772877828779287802878128782287832878428785287862878728788287892879028791287922879328794287952879628797287982879928800288012880228803288042880528806288072880828809288102881128812288132881428815288162881728818288192882028821288222882328824288252882628827288282882928830288312883228833288342883528836288372883828839288402884128842288432884428845288462884728848288492885028851288522885328854288552885628857288582885928860288612886228863288642886528866288672886828869288702887128872288732887428875288762887728878288792888028881288822888328884288852888628887288882888928890288912889228893288942889528896288972889828899289002890128902289032890428905289062890728908289092891028911289122891328914289152891628917289182891928920289212892228923289242892528926289272892828929289302893128932289332893428935289362893728938289392894028941289422894328944289452894628947289482894928950289512895228953289542895528956289572895828959289602896128962289632896428965289662896728968289692897028971289722897328974289752897628977289782897928980289812898228983289842898528986289872898828989289902899128992289932899428995289962899728998289992900029001290022900329004290052900629007290082900929010290112901229013290142901529016290172901829019290202902129022290232902429025290262902729028290292903029031290322903329034290352903629037290382903929040290412904229043290442904529046290472904829049290502905129052290532905429055290562905729058290592906029061290622906329064290652906629067290682906929070290712907229073290742907529076290772907829079290802908129082290832908429085290862908729088290892909029091290922909329094290952909629097290982909929100291012910229103291042910529106291072910829109291102911129112291132911429115291162911729118291192912029121291222912329124291252912629127291282912929130291312913229133291342913529136291372913829139291402914129142291432914429145291462914729148291492915029151291522915329154291552915629157291582915929160291612916229163291642916529166291672916829169291702917129172291732917429175291762917729178291792918029181291822918329184291852918629187291882918929190291912919229193291942919529196291972919829199292002920129202292032920429205292062920729208292092921029211292122921329214292152921629217292182921929220292212922229223292242922529226292272922829229292302923129232292332923429235292362923729238292392924029241292422924329244292452924629247292482924929250292512925229253292542925529256292572925829259292602926129262292632926429265292662926729268292692927029271292722927329274292752927629277292782927929280292812928229283292842928529286292872928829289292902929129292292932929429295292962929729298292992930029301293022930329304293052930629307293082930929310293112931229313293142931529316293172931829319293202932129322293232932429325293262932729328293292933029331293322933329334293352933629337293382933929340293412934229343293442934529346293472934829349293502935129352293532935429355293562935729358293592936029361293622936329364293652936629367293682936929370293712937229373293742937529376293772937829379293802938129382293832938429385293862938729388293892939029391293922939329394293952939629397293982939929400294012940229403294042940529406294072940829409294102941129412294132941429415294162941729418294192942029421294222942329424294252942629427294282942929430294312943229433294342943529436294372943829439294402944129442294432944429445294462944729448294492945029451294522945329454294552945629457294582945929460294612946229463294642946529466294672946829469294702947129472294732947429475294762947729478294792948029481294822948329484294852948629487294882948929490294912949229493294942949529496294972949829499295002950129502295032950429505295062950729508295092951029511295122951329514295152951629517295182951929520295212952229523295242952529526295272952829529295302953129532295332953429535295362953729538295392954029541295422954329544295452954629547295482954929550295512955229553295542955529556295572955829559295602956129562295632956429565295662956729568295692957029571295722957329574295752957629577295782957929580295812958229583295842958529586295872958829589295902959129592295932959429595295962959729598295992960029601296022960329604296052960629607296082960929610296112961229613296142961529616296172961829619296202962129622296232962429625296262962729628296292963029631296322963329634296352963629637296382963929640296412964229643296442964529646296472964829649296502965129652296532965429655296562965729658296592966029661296622966329664296652966629667296682966929670296712967229673296742967529676296772967829679296802968129682296832968429685296862968729688296892969029691296922969329694296952969629697296982969929700297012970229703297042970529706297072970829709297102971129712297132971429715297162971729718297192972029721297222972329724297252972629727297282972929730297312973229733297342973529736297372973829739297402974129742297432974429745297462974729748297492975029751297522975329754297552975629757297582975929760297612976229763297642976529766297672976829769297702977129772297732977429775297762977729778297792978029781297822978329784297852978629787297882978929790297912979229793297942979529796297972979829799298002980129802298032980429805298062980729808298092981029811298122981329814298152981629817298182981929820298212982229823298242982529826298272982829829298302983129832298332983429835298362983729838298392984029841298422984329844298452984629847298482984929850298512985229853298542985529856298572985829859298602986129862298632986429865298662986729868298692987029871298722987329874298752987629877298782987929880298812988229883298842988529886298872988829889298902989129892298932989429895298962989729898298992990029901299022990329904299052990629907299082990929910299112991229913299142991529916299172991829919299202992129922299232992429925299262992729928299292993029931299322993329934299352993629937299382993929940299412994229943299442994529946299472994829949299502995129952299532995429955299562995729958299592996029961299622996329964299652996629967299682996929970299712997229973299742997529976299772997829979299802998129982299832998429985299862998729988299892999029991299922999329994299952999629997299982999930000300013000230003300043000530006300073000830009300103001130012300133001430015300163001730018300193002030021300223002330024300253002630027300283002930030300313003230033300343003530036300373003830039300403004130042300433004430045300463004730048300493005030051300523005330054300553005630057300583005930060300613006230063300643006530066300673006830069300703007130072300733007430075300763007730078300793008030081300823008330084300853008630087300883008930090300913009230093300943009530096300973009830099301003010130102301033010430105301063010730108301093011030111301123011330114301153011630117301183011930120301213012230123301243012530126301273012830129301303013130132301333013430135301363013730138301393014030141301423014330144301453014630147301483014930150301513015230153301543015530156301573015830159301603016130162301633016430165301663016730168301693017030171301723017330174301753017630177301783017930180301813018230183301843018530186301873018830189301903019130192301933019430195301963019730198301993020030201302023020330204302053020630207302083020930210302113021230213302143021530216302173021830219302203022130222302233022430225302263022730228302293023030231302323023330234302353023630237302383023930240302413024230243302443024530246302473024830249302503025130252302533025430255302563025730258302593026030261302623026330264302653026630267302683026930270302713027230273302743027530276302773027830279302803028130282302833028430285302863028730288302893029030291302923029330294302953029630297302983029930300303013030230303303043030530306303073030830309303103031130312303133031430315303163031730318303193032030321303223032330324303253032630327303283032930330303313033230333303343033530336303373033830339303403034130342303433034430345303463034730348303493035030351303523035330354303553035630357303583035930360303613036230363303643036530366303673036830369303703037130372303733037430375303763037730378303793038030381303823038330384303853038630387303883038930390303913039230393303943039530396303973039830399304003040130402304033040430405304063040730408304093041030411304123041330414304153041630417304183041930420304213042230423304243042530426304273042830429304303043130432304333043430435304363043730438304393044030441304423044330444304453044630447304483044930450304513045230453304543045530456304573045830459304603046130462304633046430465304663046730468304693047030471304723047330474304753047630477304783047930480304813048230483304843048530486304873048830489304903049130492304933049430495304963049730498304993050030501305023050330504305053050630507305083050930510305113051230513305143051530516305173051830519305203052130522305233052430525305263052730528305293053030531305323053330534305353053630537305383053930540305413054230543305443054530546305473054830549305503055130552305533055430555305563055730558305593056030561305623056330564305653056630567305683056930570305713057230573305743057530576305773057830579305803058130582305833058430585305863058730588305893059030591305923059330594305953059630597305983059930600306013060230603306043060530606306073060830609306103061130612306133061430615306163061730618306193062030621306223062330624306253062630627306283062930630306313063230633306343063530636306373063830639306403064130642306433064430645306463064730648306493065030651306523065330654306553065630657306583065930660306613066230663306643066530666306673066830669306703067130672306733067430675306763067730678306793068030681306823068330684306853068630687306883068930690306913069230693306943069530696306973069830699307003070130702307033070430705307063070730708307093071030711307123071330714307153071630717307183071930720307213072230723307243072530726307273072830729307303073130732307333073430735307363073730738307393074030741307423074330744307453074630747307483074930750307513075230753307543075530756307573075830759307603076130762307633076430765307663076730768307693077030771307723077330774307753077630777307783077930780307813078230783307843078530786307873078830789307903079130792307933079430795307963079730798307993080030801308023080330804308053080630807308083080930810308113081230813308143081530816308173081830819308203082130822308233082430825308263082730828308293083030831308323083330834308353083630837308383083930840308413084230843308443084530846308473084830849308503085130852308533085430855308563085730858308593086030861308623086330864308653086630867308683086930870308713087230873308743087530876308773087830879308803088130882308833088430885308863088730888308893089030891308923089330894308953089630897308983089930900309013090230903309043090530906309073090830909309103091130912309133091430915309163091730918309193092030921309223092330924309253092630927309283092930930309313093230933309343093530936309373093830939309403094130942309433094430945309463094730948309493095030951309523095330954309553095630957309583095930960309613096230963309643096530966309673096830969309703097130972309733097430975309763097730978309793098030981309823098330984309853098630987309883098930990309913099230993309943099530996309973099830999310003100131002310033100431005310063100731008310093101031011310123101331014310153101631017310183101931020310213102231023310243102531026310273102831029310303103131032310333103431035310363103731038310393104031041310423104331044310453104631047310483104931050310513105231053310543105531056310573105831059310603106131062310633106431065310663106731068310693107031071310723107331074310753107631077310783107931080310813108231083310843108531086310873108831089310903109131092310933109431095310963109731098310993110031101311023110331104311053110631107311083110931110311113111231113311143111531116311173111831119311203112131122311233112431125311263112731128311293113031131311323113331134311353113631137311383113931140311413114231143311443114531146311473114831149311503115131152311533115431155311563115731158311593116031161311623116331164311653116631167311683116931170311713117231173311743117531176311773117831179311803118131182311833118431185311863118731188311893119031191311923119331194311953119631197311983119931200312013120231203312043120531206312073120831209312103121131212312133121431215312163121731218312193122031221312223122331224312253122631227312283122931230312313123231233312343123531236312373123831239312403124131242312433124431245312463124731248312493125031251312523125331254312553125631257312583125931260312613126231263312643126531266312673126831269312703127131272312733127431275312763127731278312793128031281312823128331284312853128631287312883128931290312913129231293312943129531296312973129831299313003130131302313033130431305313063130731308313093131031311313123131331314313153131631317313183131931320313213132231323313243132531326313273132831329313303133131332313333133431335313363133731338313393134031341313423134331344313453134631347313483134931350313513135231353313543135531356313573135831359313603136131362313633136431365313663136731368313693137031371313723137331374313753137631377313783137931380313813138231383313843138531386313873138831389313903139131392313933139431395313963139731398313993140031401314023140331404314053140631407314083140931410314113141231413314143141531416314173141831419314203142131422314233142431425314263142731428314293143031431314323143331434314353143631437314383143931440314413144231443314443144531446314473144831449314503145131452314533145431455314563145731458314593146031461314623146331464314653146631467314683146931470314713147231473314743147531476314773147831479314803148131482314833148431485314863148731488314893149031491314923149331494314953149631497314983149931500315013150231503315043150531506315073150831509315103151131512315133151431515315163151731518315193152031521315223152331524315253152631527315283152931530315313153231533315343153531536315373153831539315403154131542315433154431545315463154731548315493155031551315523155331554315553155631557315583155931560315613156231563315643156531566315673156831569315703157131572315733157431575315763157731578315793158031581315823158331584315853158631587315883158931590315913159231593315943159531596315973159831599316003160131602316033160431605316063160731608316093161031611316123161331614316153161631617316183161931620316213162231623316243162531626316273162831629316303163131632316333163431635316363163731638316393164031641316423164331644316453164631647316483164931650316513165231653316543165531656316573165831659316603166131662316633166431665316663166731668316693167031671316723167331674316753167631677316783167931680316813168231683316843168531686316873168831689316903169131692316933169431695316963169731698316993170031701317023170331704317053170631707317083170931710317113171231713317143171531716317173171831719317203172131722317233172431725317263172731728317293173031731317323173331734317353173631737317383173931740317413174231743317443174531746317473174831749317503175131752317533175431755317563175731758317593176031761317623176331764317653176631767317683176931770317713177231773317743177531776317773177831779317803178131782317833178431785317863178731788317893179031791317923179331794317953179631797317983179931800318013180231803318043180531806318073180831809318103181131812318133181431815318163181731818318193182031821318223182331824318253182631827318283182931830318313183231833318343183531836318373183831839318403184131842318433184431845318463184731848318493185031851318523185331854318553185631857318583185931860318613186231863318643186531866318673186831869318703187131872318733187431875318763187731878318793188031881318823188331884318853188631887318883188931890318913189231893318943189531896318973189831899319003190131902319033190431905319063190731908319093191031911319123191331914319153191631917319183191931920319213192231923319243192531926319273192831929319303193131932319333193431935319363193731938319393194031941319423194331944319453194631947319483194931950319513195231953319543195531956319573195831959319603196131962319633196431965319663196731968319693197031971319723197331974319753197631977319783197931980319813198231983319843198531986319873198831989319903199131992319933199431995319963199731998319993200032001320023200332004320053200632007320083200932010320113201232013320143201532016320173201832019320203202132022320233202432025320263202732028320293203032031320323203332034320353203632037320383203932040320413204232043320443204532046320473204832049320503205132052320533205432055320563205732058320593206032061320623206332064320653206632067320683206932070320713207232073320743207532076320773207832079320803208132082320833208432085320863208732088320893209032091320923209332094320953209632097320983209932100321013210232103321043210532106321073210832109321103211132112321133211432115321163211732118321193212032121321223212332124321253212632127321283212932130321313213232133321343213532136321373213832139321403214132142321433214432145321463214732148321493215032151321523215332154321553215632157321583215932160321613216232163321643216532166321673216832169321703217132172321733217432175321763217732178321793218032181321823218332184321853218632187321883218932190321913219232193321943219532196321973219832199322003220132202322033220432205322063220732208322093221032211322123221332214322153221632217322183221932220322213222232223322243222532226322273222832229322303223132232322333223432235322363223732238322393224032241322423224332244322453224632247322483224932250322513225232253322543225532256322573225832259322603226132262322633226432265322663226732268322693227032271322723227332274322753227632277322783227932280322813228232283322843228532286322873228832289322903229132292322933229432295322963229732298322993230032301323023230332304323053230632307323083230932310323113231232313323143231532316323173231832319323203232132322323233232432325323263232732328323293233032331323323233332334323353233632337323383233932340323413234232343323443234532346323473234832349323503235132352323533235432355323563235732358323593236032361323623236332364323653236632367323683236932370323713237232373323743237532376323773237832379323803238132382323833238432385323863238732388323893239032391323923239332394323953239632397323983239932400324013240232403324043240532406324073240832409324103241132412324133241432415324163241732418324193242032421324223242332424324253242632427324283242932430324313243232433324343243532436324373243832439324403244132442324433244432445324463244732448324493245032451324523245332454324553245632457324583245932460324613246232463324643246532466324673246832469324703247132472324733247432475324763247732478324793248032481324823248332484324853248632487324883248932490324913249232493324943249532496324973249832499325003250132502325033250432505325063250732508325093251032511325123251332514325153251632517325183251932520325213252232523325243252532526325273252832529325303253132532325333253432535325363253732538325393254032541325423254332544325453254632547325483254932550325513255232553325543255532556325573255832559325603256132562325633256432565325663256732568325693257032571325723257332574325753257632577325783257932580325813258232583325843258532586325873258832589325903259132592325933259432595325963259732598325993260032601326023260332604326053260632607326083260932610326113261232613326143261532616326173261832619326203262132622326233262432625326263262732628326293263032631326323263332634326353263632637326383263932640326413264232643326443264532646326473264832649326503265132652326533265432655326563265732658326593266032661326623266332664326653266632667326683266932670326713267232673326743267532676326773267832679326803268132682326833268432685326863268732688326893269032691326923269332694326953269632697326983269932700327013270232703327043270532706327073270832709327103271132712327133271432715327163271732718327193272032721327223272332724327253272632727327283272932730327313273232733327343273532736327373273832739327403274132742327433274432745327463274732748327493275032751327523275332754327553275632757327583275932760327613276232763327643276532766327673276832769327703277132772327733277432775327763277732778327793278032781327823278332784327853278632787327883278932790327913279232793327943279532796327973279832799328003280132802328033280432805328063280732808328093281032811328123281332814328153281632817328183281932820328213282232823328243282532826328273282832829328303283132832328333283432835328363283732838328393284032841328423284332844328453284632847328483284932850328513285232853328543285532856328573285832859328603286132862328633286432865328663286732868328693287032871328723287332874328753287632877328783287932880328813288232883328843288532886328873288832889328903289132892328933289432895328963289732898328993290032901329023290332904329053290632907329083290932910329113291232913329143291532916329173291832919329203292132922329233292432925329263292732928329293293032931329323293332934329353293632937329383293932940329413294232943329443294532946329473294832949329503295132952329533295432955329563295732958329593296032961329623296332964329653296632967329683296932970329713297232973329743297532976329773297832979329803298132982329833298432985329863298732988329893299032991329923299332994329953299632997329983299933000330013300233003330043300533006330073300833009330103301133012330133301433015330163301733018330193302033021330223302333024330253302633027330283302933030330313303233033330343303533036330373303833039330403304133042330433304433045330463304733048330493305033051330523305333054330553305633057330583305933060330613306233063330643306533066330673306833069330703307133072330733307433075330763307733078330793308033081330823308333084330853308633087330883308933090330913309233093330943309533096330973309833099331003310133102331033310433105331063310733108331093311033111331123311333114331153311633117331183311933120331213312233123331243312533126331273312833129331303313133132331333313433135331363313733138331393314033141331423314333144331453314633147331483314933150331513315233153331543315533156331573315833159331603316133162331633316433165331663316733168331693317033171331723317333174331753317633177331783317933180331813318233183331843318533186331873318833189331903319133192331933319433195331963319733198331993320033201332023320333204332053320633207332083320933210332113321233213332143321533216332173321833219332203322133222332233322433225332263322733228332293323033231332323323333234332353323633237332383323933240332413324233243332443324533246332473324833249332503325133252332533325433255332563325733258332593326033261332623326333264332653326633267332683326933270332713327233273332743327533276332773327833279332803328133282332833328433285332863328733288332893329033291332923329333294332953329633297332983329933300333013330233303333043330533306333073330833309333103331133312333133331433315333163331733318333193332033321333223332333324333253332633327333283332933330333313333233333333343333533336333373333833339333403334133342333433334433345333463334733348333493335033351333523335333354333553335633357333583335933360333613336233363333643336533366333673336833369333703337133372333733337433375333763337733378333793338033381333823338333384333853338633387333883338933390333913339233393333943339533396333973339833399334003340133402334033340433405334063340733408334093341033411334123341333414334153341633417334183341933420334213342233423334243342533426334273342833429334303343133432334333343433435334363343733438334393344033441334423344333444334453344633447334483344933450334513345233453334543345533456334573345833459334603346133462334633346433465334663346733468334693347033471334723347333474334753347633477334783347933480334813348233483334843348533486334873348833489334903349133492334933349433495334963349733498334993350033501335023350333504335053350633507335083350933510335113351233513335143351533516335173351833519335203352133522335233352433525335263352733528335293353033531335323353333534335353353633537335383353933540335413354233543335443354533546335473354833549335503355133552335533355433555335563355733558335593356033561335623356333564335653356633567335683356933570335713357233573335743357533576335773357833579335803358133582335833358433585335863358733588335893359033591335923359333594335953359633597335983359933600336013360233603336043360533606336073360833609336103361133612336133361433615336163361733618336193362033621336223362333624336253362633627336283362933630336313363233633336343363533636336373363833639336403364133642336433364433645336463364733648336493365033651336523365333654336553365633657336583365933660336613366233663336643366533666336673366833669336703367133672336733367433675336763367733678336793368033681336823368333684336853368633687336883368933690336913369233693336943369533696336973369833699337003370133702337033370433705337063370733708337093371033711337123371333714337153371633717337183371933720337213372233723337243372533726337273372833729337303373133732337333373433735337363373733738337393374033741337423374333744337453374633747337483374933750337513375233753337543375533756337573375833759337603376133762337633376433765337663376733768337693377033771337723377333774337753377633777337783377933780337813378233783337843378533786337873378833789337903379133792337933379433795337963379733798337993380033801338023380333804338053380633807338083380933810338113381233813338143381533816338173381833819338203382133822338233382433825338263382733828338293383033831338323383333834338353383633837338383383933840338413384233843338443384533846338473384833849338503385133852338533385433855338563385733858338593386033861338623386333864338653386633867338683386933870338713387233873338743387533876338773387833879338803388133882338833388433885338863388733888338893389033891338923389333894338953389633897338983389933900339013390233903339043390533906339073390833909339103391133912339133391433915339163391733918339193392033921339223392333924339253392633927339283392933930339313393233933339343393533936339373393833939339403394133942339433394433945339463394733948339493395033951339523395333954339553395633957339583395933960339613396233963339643396533966339673396833969339703397133972339733397433975339763397733978339793398033981339823398333984339853398633987339883398933990339913399233993339943399533996339973399833999340003400134002340033400434005340063400734008340093401034011340123401334014340153401634017340183401934020340213402234023340243402534026340273402834029340303403134032340333403434035340363403734038340393404034041340423404334044340453404634047340483404934050340513405234053340543405534056340573405834059340603406134062340633406434065340663406734068340693407034071340723407334074340753407634077340783407934080340813408234083340843408534086340873408834089340903409134092340933409434095340963409734098340993410034101341023410334104341053410634107341083410934110341113411234113341143411534116341173411834119341203412134122341233412434125341263412734128341293413034131341323413334134341353413634137341383413934140341413414234143341443414534146341473414834149341503415134152341533415434155341563415734158341593416034161341623416334164341653416634167341683416934170341713417234173341743417534176341773417834179341803418134182341833418434185341863418734188341893419034191341923419334194341953419634197341983419934200342013420234203342043420534206342073420834209342103421134212342133421434215342163421734218342193422034221342223422334224342253422634227342283422934230342313423234233342343423534236342373423834239342403424134242342433424434245342463424734248342493425034251342523425334254342553425634257342583425934260342613426234263342643426534266342673426834269342703427134272342733427434275342763427734278342793428034281342823428334284342853428634287342883428934290342913429234293342943429534296342973429834299343003430134302343033430434305343063430734308343093431034311343123431334314343153431634317343183431934320343213432234323343243432534326343273432834329343303433134332343333433434335343363433734338343393434034341343423434334344343453434634347343483434934350343513435234353343543435534356343573435834359343603436134362343633436434365343663436734368343693437034371343723437334374343753437634377343783437934380343813438234383343843438534386343873438834389343903439134392343933439434395343963439734398343993440034401344023440334404344053440634407344083440934410344113441234413344143441534416344173441834419344203442134422344233442434425344263442734428344293443034431344323443334434344353443634437344383443934440344413444234443344443444534446344473444834449344503445134452344533445434455344563445734458344593446034461344623446334464344653446634467344683446934470344713447234473344743447534476344773447834479344803448134482344833448434485344863448734488344893449034491344923449334494344953449634497344983449934500345013450234503345043450534506345073450834509345103451134512345133451434515345163451734518345193452034521345223452334524345253452634527345283452934530345313453234533345343453534536345373453834539345403454134542345433454434545345463454734548345493455034551345523455334554345553455634557345583455934560345613456234563345643456534566345673456834569345703457134572345733457434575345763457734578345793458034581345823458334584345853458634587345883458934590345913459234593345943459534596345973459834599346003460134602346033460434605346063460734608346093461034611346123461334614346153461634617346183461934620346213462234623346243462534626346273462834629346303463134632346333463434635346363463734638346393464034641346423464334644346453464634647346483464934650346513465234653346543465534656346573465834659346603466134662346633466434665346663466734668346693467034671346723467334674346753467634677346783467934680346813468234683346843468534686346873468834689346903469134692346933469434695346963469734698346993470034701347023470334704347053470634707347083470934710347113471234713347143471534716347173471834719347203472134722347233472434725347263472734728347293473034731347323473334734347353473634737347383473934740347413474234743347443474534746347473474834749347503475134752347533475434755347563475734758347593476034761347623476334764347653476634767347683476934770347713477234773347743477534776347773477834779347803478134782347833478434785347863478734788347893479034791347923479334794347953479634797347983479934800348013480234803348043480534806348073480834809348103481134812348133481434815348163481734818348193482034821348223482334824348253482634827348283482934830348313483234833348343483534836348373483834839348403484134842348433484434845348463484734848348493485034851348523485334854348553485634857348583485934860348613486234863348643486534866348673486834869348703487134872348733487434875348763487734878348793488034881348823488334884348853488634887348883488934890348913489234893348943489534896348973489834899349003490134902349033490434905349063490734908349093491034911349123491334914349153491634917349183491934920349213492234923349243492534926349273492834929349303493134932349333493434935349363493734938349393494034941349423494334944349453494634947349483494934950349513495234953349543495534956349573495834959349603496134962349633496434965349663496734968349693497034971349723497334974349753497634977349783497934980349813498234983349843498534986349873498834989349903499134992349933499434995349963499734998349993500035001350023500335004350053500635007350083500935010350113501235013350143501535016350173501835019350203502135022350233502435025350263502735028350293503035031350323503335034350353503635037350383503935040350413504235043350443504535046350473504835049350503505135052350533505435055350563505735058350593506035061350623506335064350653506635067350683506935070350713507235073350743507535076350773507835079350803508135082350833508435085350863508735088350893509035091350923509335094350953509635097350983509935100351013510235103351043510535106351073510835109351103511135112351133511435115351163511735118351193512035121351223512335124351253512635127351283512935130351313513235133351343513535136351373513835139351403514135142351433514435145351463514735148351493515035151351523515335154351553515635157351583515935160351613516235163351643516535166351673516835169351703517135172351733517435175351763517735178351793518035181351823518335184351853518635187351883518935190351913519235193351943519535196351973519835199352003520135202352033520435205352063520735208352093521035211352123521335214352153521635217352183521935220352213522235223352243522535226352273522835229352303523135232352333523435235352363523735238352393524035241352423524335244352453524635247352483524935250352513525235253352543525535256352573525835259352603526135262352633526435265352663526735268352693527035271352723527335274352753527635277352783527935280352813528235283352843528535286352873528835289352903529135292352933529435295352963529735298352993530035301353023530335304353053530635307353083530935310353113531235313353143531535316353173531835319353203532135322353233532435325353263532735328353293533035331353323533335334353353533635337353383533935340353413534235343353443534535346353473534835349353503535135352353533535435355353563535735358353593536035361353623536335364353653536635367353683536935370353713537235373353743537535376353773537835379353803538135382353833538435385353863538735388353893539035391353923539335394353953539635397353983539935400354013540235403354043540535406354073540835409354103541135412354133541435415354163541735418354193542035421354223542335424354253542635427354283542935430354313543235433354343543535436354373543835439354403544135442354433544435445354463544735448354493545035451354523545335454354553545635457354583545935460354613546235463354643546535466354673546835469354703547135472354733547435475354763547735478354793548035481354823548335484354853548635487354883548935490354913549235493354943549535496354973549835499355003550135502355033550435505355063550735508355093551035511355123551335514355153551635517355183551935520355213552235523355243552535526355273552835529355303553135532355333553435535355363553735538355393554035541355423554335544355453554635547355483554935550355513555235553355543555535556355573555835559355603556135562355633556435565355663556735568355693557035571355723557335574355753557635577355783557935580355813558235583355843558535586355873558835589355903559135592355933559435595355963559735598355993560035601356023560335604356053560635607356083560935610356113561235613356143561535616356173561835619356203562135622356233562435625356263562735628356293563035631356323563335634356353563635637356383563935640356413564235643356443564535646356473564835649356503565135652356533565435655356563565735658356593566035661356623566335664356653566635667356683566935670356713567235673356743567535676356773567835679356803568135682356833568435685356863568735688356893569035691356923569335694356953569635697356983569935700357013570235703357043570535706357073570835709357103571135712357133571435715357163571735718357193572035721357223572335724357253572635727357283572935730357313573235733357343573535736357373573835739357403574135742357433574435745357463574735748357493575035751357523575335754357553575635757357583575935760357613576235763357643576535766357673576835769357703577135772357733577435775357763577735778357793578035781357823578335784357853578635787357883578935790357913579235793357943579535796357973579835799358003580135802358033580435805358063580735808358093581035811358123581335814358153581635817358183581935820358213582235823358243582535826358273582835829358303583135832358333583435835358363583735838358393584035841358423584335844358453584635847358483584935850358513585235853358543585535856358573585835859358603586135862358633586435865358663586735868358693587035871358723587335874358753587635877358783587935880358813588235883358843588535886358873588835889358903589135892358933589435895358963589735898358993590035901359023590335904359053590635907359083590935910359113591235913359143591535916359173591835919359203592135922359233592435925359263592735928359293593035931359323593335934359353593635937359383593935940359413594235943359443594535946359473594835949359503595135952359533595435955359563595735958359593596035961359623596335964359653596635967359683596935970359713597235973359743597535976359773597835979359803598135982359833598435985359863598735988359893599035991359923599335994359953599635997359983599936000360013600236003360043600536006360073600836009360103601136012360133601436015360163601736018360193602036021360223602336024360253602636027360283602936030360313603236033360343603536036360373603836039360403604136042360433604436045360463604736048360493605036051360523605336054360553605636057360583605936060360613606236063360643606536066360673606836069360703607136072360733607436075360763607736078360793608036081360823608336084360853608636087360883608936090360913609236093360943609536096360973609836099361003610136102361033610436105361063610736108361093611036111361123611336114361153611636117361183611936120361213612236123361243612536126361273612836129361303613136132361333613436135361363613736138361393614036141361423614336144361453614636147361483614936150361513615236153361543615536156361573615836159361603616136162361633616436165361663616736168361693617036171361723617336174361753617636177361783617936180361813618236183361843618536186361873618836189361903619136192361933619436195361963619736198361993620036201362023620336204362053620636207362083620936210362113621236213362143621536216362173621836219362203622136222362233622436225362263622736228362293623036231362323623336234362353623636237362383623936240362413624236243362443624536246362473624836249362503625136252362533625436255362563625736258362593626036261362623626336264362653626636267362683626936270362713627236273362743627536276362773627836279362803628136282362833628436285362863628736288362893629036291362923629336294362953629636297362983629936300363013630236303363043630536306363073630836309363103631136312363133631436315363163631736318363193632036321363223632336324363253632636327363283632936330363313633236333363343633536336363373633836339363403634136342363433634436345363463634736348363493635036351363523635336354363553635636357363583635936360363613636236363363643636536366363673636836369363703637136372363733637436375363763637736378363793638036381363823638336384363853638636387363883638936390363913639236393363943639536396363973639836399364003640136402364033640436405364063640736408364093641036411364123641336414364153641636417364183641936420364213642236423364243642536426364273642836429364303643136432364333643436435364363643736438364393644036441364423644336444364453644636447364483644936450364513645236453364543645536456364573645836459364603646136462364633646436465364663646736468364693647036471364723647336474364753647636477364783647936480364813648236483364843648536486364873648836489364903649136492364933649436495364963649736498364993650036501365023650336504365053650636507365083650936510365113651236513365143651536516365173651836519365203652136522365233652436525365263652736528365293653036531365323653336534365353653636537365383653936540365413654236543365443654536546365473654836549365503655136552365533655436555365563655736558365593656036561365623656336564365653656636567365683656936570365713657236573365743657536576365773657836579365803658136582365833658436585365863658736588365893659036591365923659336594365953659636597365983659936600366013660236603366043660536606366073660836609366103661136612366133661436615366163661736618366193662036621366223662336624366253662636627366283662936630366313663236633366343663536636366373663836639366403664136642366433664436645366463664736648366493665036651366523665336654366553665636657366583665936660366613666236663366643666536666366673666836669366703667136672366733667436675366763667736678366793668036681366823668336684366853668636687366883668936690366913669236693366943669536696366973669836699367003670136702367033670436705367063670736708367093671036711367123671336714367153671636717367183671936720367213672236723367243672536726367273672836729367303673136732367333673436735367363673736738367393674036741367423674336744367453674636747367483674936750367513675236753367543675536756367573675836759367603676136762367633676436765367663676736768367693677036771367723677336774367753677636777367783677936780367813678236783367843678536786367873678836789367903679136792367933679436795367963679736798367993680036801368023680336804368053680636807368083680936810368113681236813368143681536816368173681836819368203682136822368233682436825368263682736828368293683036831368323683336834368353683636837368383683936840368413684236843368443684536846368473684836849368503685136852368533685436855368563685736858368593686036861368623686336864368653686636867368683686936870368713687236873368743687536876368773687836879368803688136882368833688436885368863688736888368893689036891368923689336894368953689636897368983689936900369013690236903369043690536906369073690836909369103691136912369133691436915369163691736918369193692036921369223692336924369253692636927369283692936930369313693236933369343693536936369373693836939369403694136942369433694436945369463694736948369493695036951369523695336954369553695636957369583695936960369613696236963369643696536966369673696836969369703697136972369733697436975369763697736978369793698036981369823698336984369853698636987369883698936990369913699236993369943699536996369973699836999370003700137002370033700437005370063700737008370093701037011370123701337014370153701637017370183701937020370213702237023370243702537026370273702837029370303703137032370333703437035370363703737038370393704037041370423704337044370453704637047370483704937050370513705237053370543705537056370573705837059370603706137062370633706437065370663706737068370693707037071370723707337074370753707637077370783707937080370813708237083370843708537086370873708837089370903709137092370933709437095370963709737098370993710037101371023710337104371053710637107371083710937110371113711237113371143711537116371173711837119371203712137122371233712437125371263712737128371293713037131371323713337134371353713637137371383713937140371413714237143371443714537146371473714837149371503715137152371533715437155371563715737158371593716037161371623716337164371653716637167371683716937170371713717237173371743717537176371773717837179371803718137182371833718437185371863718737188371893719037191371923719337194371953719637197371983719937200372013720237203372043720537206372073720837209372103721137212372133721437215372163721737218372193722037221372223722337224372253722637227372283722937230372313723237233372343723537236372373723837239372403724137242372433724437245372463724737248372493725037251372523725337254372553725637257372583725937260372613726237263372643726537266372673726837269372703727137272372733727437275372763727737278372793728037281372823728337284372853728637287372883728937290372913729237293372943729537296372973729837299373003730137302373033730437305373063730737308373093731037311373123731337314373153731637317373183731937320373213732237323373243732537326373273732837329373303733137332373333733437335373363733737338373393734037341373423734337344373453734637347373483734937350373513735237353373543735537356373573735837359373603736137362373633736437365373663736737368373693737037371373723737337374373753737637377373783737937380373813738237383373843738537386373873738837389373903739137392373933739437395373963739737398373993740037401374023740337404374053740637407374083740937410374113741237413374143741537416374173741837419374203742137422374233742437425374263742737428374293743037431374323743337434374353743637437374383743937440374413744237443374443744537446374473744837449374503745137452374533745437455374563745737458374593746037461374623746337464374653746637467374683746937470374713747237473374743747537476374773747837479374803748137482374833748437485374863748737488374893749037491374923749337494374953749637497374983749937500375013750237503375043750537506375073750837509375103751137512375133751437515375163751737518375193752037521375223752337524375253752637527375283752937530375313753237533375343753537536375373753837539375403754137542375433754437545375463754737548375493755037551375523755337554375553755637557375583755937560375613756237563375643756537566375673756837569375703757137572375733757437575375763757737578375793758037581375823758337584375853758637587375883758937590375913759237593375943759537596375973759837599376003760137602376033760437605376063760737608376093761037611376123761337614376153761637617376183761937620376213762237623376243762537626376273762837629376303763137632376333763437635376363763737638376393764037641376423764337644376453764637647376483764937650376513765237653376543765537656376573765837659376603766137662376633766437665376663766737668376693767037671376723767337674376753767637677376783767937680376813768237683376843768537686376873768837689376903769137692376933769437695376963769737698376993770037701377023770337704377053770637707377083770937710377113771237713377143771537716377173771837719377203772137722377233772437725377263772737728377293773037731377323773337734377353773637737377383773937740377413774237743377443774537746377473774837749377503775137752377533775437755377563775737758377593776037761377623776337764377653776637767377683776937770377713777237773377743777537776377773777837779377803778137782377833778437785377863778737788377893779037791377923779337794377953779637797377983779937800378013780237803378043780537806378073780837809378103781137812378133781437815378163781737818378193782037821378223782337824378253782637827378283782937830378313783237833378343783537836378373783837839378403784137842378433784437845378463784737848378493785037851378523785337854378553785637857378583785937860378613786237863378643786537866378673786837869378703787137872378733787437875378763787737878378793788037881378823788337884378853788637887378883788937890378913789237893378943789537896378973789837899379003790137902379033790437905379063790737908379093791037911379123791337914379153791637917379183791937920379213792237923379243792537926379273792837929379303793137932379333793437935379363793737938379393794037941379423794337944379453794637947379483794937950379513795237953379543795537956379573795837959379603796137962379633796437965379663796737968379693797037971379723797337974379753797637977379783797937980379813798237983379843798537986379873798837989379903799137992379933799437995379963799737998379993800038001380023800338004380053800638007380083800938010380113801238013380143801538016380173801838019380203802138022380233802438025380263802738028380293803038031380323803338034380353803638037380383803938040380413804238043380443804538046380473804838049380503805138052380533805438055380563805738058380593806038061380623806338064380653806638067380683806938070380713807238073380743807538076380773807838079380803808138082380833808438085380863808738088380893809038091380923809338094380953809638097380983809938100381013810238103381043810538106381073810838109381103811138112381133811438115381163811738118381193812038121381223812338124381253812638127381283812938130381313813238133381343813538136381373813838139381403814138142381433814438145381463814738148381493815038151381523815338154381553815638157381583815938160381613816238163381643816538166381673816838169381703817138172381733817438175381763817738178381793818038181381823818338184381853818638187381883818938190381913819238193381943819538196381973819838199382003820138202382033820438205382063820738208382093821038211382123821338214382153821638217382183821938220382213822238223382243822538226382273822838229382303823138232382333823438235382363823738238382393824038241382423824338244382453824638247382483824938250382513825238253382543825538256382573825838259382603826138262382633826438265382663826738268382693827038271382723827338274382753827638277382783827938280382813828238283382843828538286382873828838289382903829138292382933829438295382963829738298382993830038301383023830338304383053830638307383083830938310383113831238313383143831538316383173831838319383203832138322383233832438325383263832738328383293833038331383323833338334383353833638337383383833938340383413834238343383443834538346383473834838349383503835138352383533835438355383563835738358383593836038361383623836338364383653836638367383683836938370383713837238373383743837538376383773837838379383803838138382383833838438385383863838738388383893839038391383923839338394383953839638397383983839938400384013840238403384043840538406384073840838409384103841138412384133841438415384163841738418384193842038421384223842338424384253842638427384283842938430384313843238433384343843538436384373843838439384403844138442384433844438445384463844738448384493845038451384523845338454384553845638457384583845938460384613846238463384643846538466384673846838469384703847138472384733847438475384763847738478384793848038481384823848338484384853848638487384883848938490384913849238493384943849538496384973849838499385003850138502385033850438505385063850738508385093851038511385123851338514385153851638517385183851938520385213852238523385243852538526385273852838529385303853138532385333853438535385363853738538385393854038541385423854338544385453854638547385483854938550385513855238553385543855538556385573855838559385603856138562385633856438565385663856738568385693857038571385723857338574385753857638577385783857938580385813858238583385843858538586385873858838589385903859138592385933859438595385963859738598385993860038601386023860338604386053860638607386083860938610386113861238613386143861538616386173861838619386203862138622386233862438625386263862738628386293863038631386323863338634386353863638637386383863938640386413864238643386443864538646386473864838649386503865138652386533865438655386563865738658386593866038661386623866338664386653866638667386683866938670386713867238673386743867538676386773867838679386803868138682386833868438685386863868738688386893869038691386923869338694386953869638697386983869938700387013870238703387043870538706387073870838709387103871138712387133871438715387163871738718387193872038721387223872338724387253872638727387283872938730387313873238733387343873538736387373873838739387403874138742387433874438745387463874738748387493875038751387523875338754387553875638757387583875938760387613876238763387643876538766387673876838769387703877138772387733877438775387763877738778387793878038781387823878338784387853878638787387883878938790387913879238793387943879538796387973879838799388003880138802388033880438805388063880738808388093881038811388123881338814388153881638817388183881938820388213882238823388243882538826388273882838829388303883138832388333883438835388363883738838388393884038841388423884338844388453884638847388483884938850388513885238853388543885538856388573885838859388603886138862388633886438865388663886738868388693887038871388723887338874388753887638877388783887938880388813888238883388843888538886388873888838889388903889138892388933889438895388963889738898388993890038901389023890338904389053890638907389083890938910389113891238913389143891538916389173891838919389203892138922389233892438925389263892738928389293893038931389323893338934389353893638937389383893938940389413894238943389443894538946389473894838949389503895138952389533895438955389563895738958389593896038961389623896338964389653896638967389683896938970389713897238973389743897538976389773897838979389803898138982389833898438985389863898738988389893899038991389923899338994389953899638997389983899939000390013900239003390043900539006390073900839009390103901139012390133901439015390163901739018390193902039021390223902339024390253902639027390283902939030390313903239033390343903539036390373903839039390403904139042390433904439045390463904739048390493905039051390523905339054390553905639057390583905939060390613906239063390643906539066390673906839069390703907139072390733907439075390763907739078390793908039081390823908339084390853908639087390883908939090390913909239093390943909539096390973909839099391003910139102391033910439105391063910739108391093911039111391123911339114391153911639117391183911939120391213912239123391243912539126391273912839129391303913139132391333913439135391363913739138391393914039141391423914339144391453914639147391483914939150391513915239153391543915539156391573915839159391603916139162391633916439165391663916739168391693917039171391723917339174391753917639177391783917939180391813918239183391843918539186391873918839189391903919139192391933919439195391963919739198391993920039201392023920339204392053920639207392083920939210392113921239213392143921539216392173921839219392203922139222392233922439225392263922739228392293923039231392323923339234392353923639237392383923939240392413924239243392443924539246392473924839249392503925139252392533925439255392563925739258392593926039261392623926339264392653926639267392683926939270392713927239273392743927539276392773927839279392803928139282392833928439285392863928739288392893929039291392923929339294392953929639297392983929939300393013930239303393043930539306393073930839309393103931139312393133931439315393163931739318393193932039321393223932339324393253932639327393283932939330393313933239333393343933539336393373933839339393403934139342393433934439345393463934739348393493935039351393523935339354393553935639357393583935939360393613936239363393643936539366393673936839369393703937139372393733937439375393763937739378393793938039381393823938339384393853938639387393883938939390393913939239393393943939539396393973939839399394003940139402394033940439405394063940739408394093941039411394123941339414394153941639417394183941939420394213942239423394243942539426394273942839429394303943139432394333943439435394363943739438394393944039441394423944339444394453944639447394483944939450394513945239453394543945539456394573945839459394603946139462394633946439465394663946739468394693947039471394723947339474394753947639477394783947939480394813948239483394843948539486394873948839489394903949139492394933949439495394963949739498394993950039501395023950339504395053950639507395083950939510395113951239513395143951539516395173951839519395203952139522395233952439525395263952739528395293953039531395323953339534395353953639537395383953939540395413954239543395443954539546395473954839549395503955139552395533955439555395563955739558395593956039561395623956339564395653956639567395683956939570395713957239573395743957539576395773957839579395803958139582395833958439585395863958739588395893959039591395923959339594395953959639597395983959939600396013960239603396043960539606396073960839609396103961139612396133961439615396163961739618396193962039621396223962339624396253962639627396283962939630396313963239633396343963539636396373963839639396403964139642396433964439645396463964739648396493965039651396523965339654396553965639657396583965939660396613966239663396643966539666396673966839669396703967139672396733967439675396763967739678396793968039681396823968339684396853968639687396883968939690396913969239693396943969539696396973969839699397003970139702397033970439705397063970739708397093971039711397123971339714397153971639717397183971939720397213972239723397243972539726397273972839729397303973139732397333973439735397363973739738397393974039741397423974339744397453974639747397483974939750397513975239753397543975539756397573975839759397603976139762397633976439765397663976739768397693977039771397723977339774397753977639777397783977939780397813978239783397843978539786397873978839789397903979139792397933979439795397963979739798397993980039801398023980339804398053980639807398083980939810398113981239813398143981539816398173981839819398203982139822398233982439825398263982739828398293983039831398323983339834398353983639837398383983939840398413984239843398443984539846398473984839849398503985139852398533985439855398563985739858398593986039861398623986339864398653986639867398683986939870398713987239873398743987539876398773987839879398803988139882398833988439885398863988739888398893989039891398923989339894398953989639897398983989939900399013990239903399043990539906399073990839909399103991139912399133991439915399163991739918399193992039921399223992339924399253992639927399283992939930399313993239933399343993539936399373993839939399403994139942399433994439945399463994739948399493995039951399523995339954399553995639957399583995939960399613996239963399643996539966399673996839969399703997139972399733997439975399763997739978399793998039981399823998339984399853998639987399883998939990399913999239993399943999539996399973999839999400004000140002400034000440005400064000740008400094001040011400124001340014400154001640017400184001940020400214002240023400244002540026400274002840029400304003140032400334003440035400364003740038400394004040041400424004340044400454004640047400484004940050400514005240053400544005540056400574005840059400604006140062400634006440065400664006740068400694007040071400724007340074400754007640077400784007940080400814008240083400844008540086400874008840089400904009140092400934009440095400964009740098400994010040101401024010340104401054010640107401084010940110401114011240113401144011540116401174011840119401204012140122401234012440125401264012740128401294013040131401324013340134401354013640137401384013940140401414014240143401444014540146401474014840149401504015140152401534015440155401564015740158401594016040161401624016340164401654016640167401684016940170401714017240173401744017540176401774017840179401804018140182401834018440185401864018740188401894019040191401924019340194401954019640197401984019940200402014020240203402044020540206402074020840209402104021140212402134021440215402164021740218402194022040221402224022340224402254022640227402284022940230402314023240233402344023540236402374023840239402404024140242402434024440245402464024740248402494025040251402524025340254402554025640257402584025940260402614026240263402644026540266402674026840269402704027140272402734027440275402764027740278402794028040281402824028340284402854028640287402884028940290402914029240293402944029540296402974029840299403004030140302403034030440305403064030740308403094031040311403124031340314403154031640317403184031940320403214032240323403244032540326403274032840329403304033140332403334033440335403364033740338403394034040341403424034340344403454034640347403484034940350403514035240353403544035540356403574035840359403604036140362403634036440365403664036740368403694037040371403724037340374403754037640377403784037940380403814038240383403844038540386403874038840389403904039140392403934039440395403964039740398403994040040401404024040340404404054040640407404084040940410404114041240413404144041540416404174041840419404204042140422404234042440425404264042740428404294043040431404324043340434404354043640437404384043940440404414044240443404444044540446404474044840449404504045140452404534045440455404564045740458404594046040461404624046340464404654046640467404684046940470404714047240473404744047540476404774047840479404804048140482404834048440485404864048740488404894049040491404924049340494404954049640497404984049940500405014050240503405044050540506405074050840509405104051140512405134051440515405164051740518405194052040521405224052340524405254052640527405284052940530405314053240533405344053540536405374053840539405404054140542405434054440545405464054740548405494055040551405524055340554405554055640557405584055940560405614056240563405644056540566405674056840569405704057140572405734057440575405764057740578405794058040581405824058340584405854058640587405884058940590405914059240593405944059540596405974059840599406004060140602406034060440605406064060740608406094061040611406124061340614406154061640617406184061940620406214062240623406244062540626406274062840629406304063140632406334063440635406364063740638406394064040641406424064340644406454064640647406484064940650406514065240653406544065540656406574065840659406604066140662406634066440665406664066740668406694067040671406724067340674406754067640677406784067940680406814068240683406844068540686406874068840689406904069140692406934069440695406964069740698406994070040701407024070340704407054070640707407084070940710407114071240713407144071540716407174071840719407204072140722407234072440725407264072740728407294073040731407324073340734407354073640737407384073940740407414074240743407444074540746407474074840749407504075140752407534075440755407564075740758407594076040761407624076340764407654076640767407684076940770407714077240773407744077540776407774077840779407804078140782407834078440785407864078740788407894079040791407924079340794407954079640797407984079940800408014080240803408044080540806408074080840809408104081140812408134081440815408164081740818408194082040821408224082340824408254082640827408284082940830408314083240833408344083540836408374083840839408404084140842408434084440845408464084740848408494085040851408524085340854408554085640857408584085940860408614086240863408644086540866408674086840869408704087140872408734087440875408764087740878408794088040881408824088340884408854088640887408884088940890408914089240893408944089540896408974089840899409004090140902409034090440905409064090740908409094091040911409124091340914409154091640917409184091940920409214092240923409244092540926409274092840929409304093140932409334093440935409364093740938409394094040941409424094340944409454094640947409484094940950409514095240953409544095540956409574095840959409604096140962409634096440965409664096740968409694097040971409724097340974409754097640977409784097940980409814098240983409844098540986409874098840989409904099140992409934099440995409964099740998409994100041001410024100341004410054100641007410084100941010410114101241013410144101541016410174101841019410204102141022410234102441025410264102741028410294103041031410324103341034410354103641037410384103941040410414104241043410444104541046410474104841049410504105141052410534105441055410564105741058410594106041061410624106341064410654106641067410684106941070410714107241073410744107541076410774107841079410804108141082410834108441085410864108741088410894109041091410924109341094410954109641097410984109941100411014110241103411044110541106411074110841109411104111141112411134111441115411164111741118411194112041121411224112341124411254112641127411284112941130411314113241133411344113541136411374113841139411404114141142411434114441145411464114741148411494115041151411524115341154411554115641157411584115941160411614116241163411644116541166411674116841169411704117141172411734117441175411764117741178411794118041181411824118341184411854118641187411884118941190411914119241193411944119541196411974119841199412004120141202412034120441205412064120741208412094121041211412124121341214412154121641217412184121941220412214122241223412244122541226412274122841229412304123141232412334123441235412364123741238412394124041241412424124341244412454124641247412484124941250412514125241253412544125541256412574125841259412604126141262412634126441265412664126741268412694127041271412724127341274412754127641277412784127941280412814128241283412844128541286412874128841289412904129141292412934129441295412964129741298412994130041301413024130341304413054130641307413084130941310413114131241313413144131541316413174131841319413204132141322413234132441325413264132741328413294133041331413324133341334413354133641337413384133941340413414134241343413444134541346413474134841349413504135141352413534135441355413564135741358413594136041361413624136341364413654136641367413684136941370413714137241373413744137541376413774137841379413804138141382413834138441385413864138741388413894139041391413924139341394413954139641397413984139941400414014140241403414044140541406414074140841409414104141141412414134141441415414164141741418414194142041421414224142341424414254142641427414284142941430414314143241433414344143541436414374143841439414404144141442414434144441445414464144741448414494145041451414524145341454414554145641457414584145941460414614146241463414644146541466414674146841469414704147141472414734147441475414764147741478414794148041481414824148341484414854148641487414884148941490414914149241493414944149541496414974149841499415004150141502415034150441505415064150741508415094151041511415124151341514415154151641517415184151941520415214152241523415244152541526415274152841529415304153141532415334153441535415364153741538415394154041541415424154341544415454154641547415484154941550415514155241553415544155541556415574155841559415604156141562415634156441565415664156741568415694157041571415724157341574415754157641577415784157941580415814158241583415844158541586415874158841589415904159141592415934159441595415964159741598415994160041601416024160341604416054160641607416084160941610416114161241613416144161541616416174161841619416204162141622416234162441625416264162741628416294163041631416324163341634416354163641637416384163941640416414164241643416444164541646416474164841649416504165141652416534165441655416564165741658416594166041661416624166341664416654166641667416684166941670416714167241673416744167541676416774167841679416804168141682416834168441685416864168741688416894169041691416924169341694416954169641697416984169941700417014170241703417044170541706417074170841709417104171141712417134171441715417164171741718417194172041721417224172341724417254172641727417284172941730417314173241733417344173541736417374173841739417404174141742417434174441745417464174741748417494175041751417524175341754417554175641757417584175941760417614176241763417644176541766417674176841769417704177141772417734177441775417764177741778417794178041781417824178341784417854178641787417884178941790417914179241793417944179541796417974179841799418004180141802418034180441805418064180741808418094181041811418124181341814418154181641817418184181941820418214182241823418244182541826418274182841829418304183141832418334183441835418364183741838418394184041841418424184341844418454184641847418484184941850418514185241853418544185541856418574185841859418604186141862418634186441865418664186741868418694187041871418724187341874418754187641877418784187941880418814188241883418844188541886418874188841889418904189141892418934189441895418964189741898418994190041901419024190341904419054190641907419084190941910419114191241913419144191541916419174191841919419204192141922419234192441925419264192741928419294193041931419324193341934419354193641937419384193941940419414194241943419444194541946419474194841949419504195141952419534195441955419564195741958419594196041961419624196341964419654196641967419684196941970419714197241973419744197541976419774197841979419804198141982419834198441985419864198741988419894199041991419924199341994419954199641997419984199942000420014200242003420044200542006420074200842009420104201142012420134201442015420164201742018420194202042021420224202342024420254202642027420284202942030420314203242033420344203542036420374203842039420404204142042420434204442045420464204742048420494205042051420524205342054420554205642057420584205942060420614206242063420644206542066420674206842069420704207142072420734207442075420764207742078420794208042081420824208342084420854208642087420884208942090420914209242093420944209542096420974209842099421004210142102421034210442105421064210742108421094211042111421124211342114421154211642117421184211942120421214212242123421244212542126421274212842129421304213142132421334213442135421364213742138421394214042141421424214342144421454214642147421484214942150421514215242153421544215542156421574215842159421604216142162421634216442165421664216742168421694217042171421724217342174421754217642177421784217942180421814218242183421844218542186421874218842189421904219142192421934219442195421964219742198421994220042201422024220342204422054220642207422084220942210422114221242213422144221542216422174221842219422204222142222422234222442225422264222742228422294223042231422324223342234422354223642237422384223942240422414224242243422444224542246422474224842249422504225142252422534225442255422564225742258422594226042261422624226342264422654226642267422684226942270422714227242273422744227542276422774227842279422804228142282422834228442285422864228742288422894229042291422924229342294422954229642297422984229942300423014230242303423044230542306423074230842309423104231142312423134231442315423164231742318423194232042321423224232342324423254232642327423284232942330423314233242333423344233542336423374233842339423404234142342423434234442345423464234742348423494235042351423524235342354423554235642357423584235942360423614236242363423644236542366423674236842369423704237142372423734237442375423764237742378423794238042381423824238342384423854238642387423884238942390423914239242393423944239542396423974239842399424004240142402424034240442405424064240742408424094241042411424124241342414424154241642417424184241942420424214242242423424244242542426424274242842429424304243142432424334243442435424364243742438424394244042441424424244342444424454244642447424484244942450424514245242453424544245542456424574245842459424604246142462424634246442465424664246742468424694247042471424724247342474424754247642477424784247942480424814248242483424844248542486424874248842489424904249142492424934249442495424964249742498424994250042501425024250342504425054250642507425084250942510425114251242513425144251542516425174251842519425204252142522425234252442525425264252742528425294253042531425324253342534425354253642537425384253942540425414254242543425444254542546425474254842549425504255142552425534255442555425564255742558425594256042561425624256342564425654256642567425684256942570425714257242573425744257542576425774257842579425804258142582425834258442585425864258742588425894259042591425924259342594425954259642597425984259942600426014260242603426044260542606426074260842609426104261142612426134261442615426164261742618426194262042621426224262342624426254262642627426284262942630426314263242633426344263542636426374263842639426404264142642426434264442645426464264742648426494265042651426524265342654426554265642657426584265942660426614266242663426644266542666426674266842669426704267142672426734267442675426764267742678426794268042681426824268342684426854268642687426884268942690426914269242693426944269542696426974269842699427004270142702427034270442705427064270742708427094271042711427124271342714427154271642717427184271942720427214272242723427244272542726427274272842729427304273142732427334273442735427364273742738427394274042741427424274342744427454274642747427484274942750427514275242753427544275542756427574275842759427604276142762427634276442765427664276742768427694277042771427724277342774427754277642777427784277942780427814278242783427844278542786427874278842789427904279142792427934279442795427964279742798427994280042801428024280342804428054280642807428084280942810428114281242813428144281542816428174281842819428204282142822428234282442825428264282742828428294283042831428324283342834428354283642837428384283942840428414284242843428444284542846428474284842849428504285142852428534285442855428564285742858428594286042861428624286342864428654286642867428684286942870428714287242873428744287542876428774287842879428804288142882428834288442885428864288742888428894289042891428924289342894428954289642897428984289942900429014290242903429044290542906429074290842909429104291142912429134291442915429164291742918429194292042921429224292342924429254292642927429284292942930429314293242933429344293542936429374293842939429404294142942429434294442945429464294742948429494295042951429524295342954429554295642957429584295942960429614296242963429644296542966429674296842969429704297142972429734297442975429764297742978429794298042981429824298342984429854298642987429884298942990429914299242993429944299542996429974299842999430004300143002430034300443005430064300743008430094301043011430124301343014430154301643017430184301943020430214302243023430244302543026430274302843029430304303143032430334303443035430364303743038430394304043041430424304343044430454304643047430484304943050430514305243053430544305543056430574305843059430604306143062430634306443065430664306743068430694307043071430724307343074430754307643077430784307943080430814308243083430844308543086430874308843089430904309143092430934309443095430964309743098430994310043101431024310343104431054310643107431084310943110431114311243113431144311543116431174311843119431204312143122431234312443125431264312743128431294313043131431324313343134431354313643137431384313943140431414314243143431444314543146431474314843149431504315143152431534315443155431564315743158431594316043161431624316343164431654316643167431684316943170431714317243173431744317543176431774317843179431804318143182431834318443185431864318743188431894319043191431924319343194431954319643197431984319943200432014320243203432044320543206432074320843209432104321143212432134321443215432164321743218432194322043221432224322343224432254322643227432284322943230432314323243233432344323543236432374323843239432404324143242432434324443245432464324743248432494325043251432524325343254432554325643257432584325943260432614326243263432644326543266432674326843269432704327143272432734327443275432764327743278432794328043281432824328343284432854328643287432884328943290432914329243293432944329543296432974329843299433004330143302433034330443305433064330743308433094331043311433124331343314433154331643317433184331943320433214332243323433244332543326433274332843329433304333143332433334333443335433364333743338433394334043341433424334343344433454334643347433484334943350433514335243353433544335543356433574335843359433604336143362433634336443365433664336743368433694337043371433724337343374433754337643377433784337943380433814338243383433844338543386433874338843389433904339143392433934339443395433964339743398433994340043401434024340343404434054340643407434084340943410434114341243413434144341543416434174341843419434204342143422434234342443425434264342743428434294343043431434324343343434434354343643437434384343943440434414344243443434444344543446434474344843449434504345143452434534345443455434564345743458434594346043461434624346343464434654346643467434684346943470434714347243473434744347543476434774347843479434804348143482434834348443485434864348743488434894349043491434924349343494434954349643497434984349943500435014350243503435044350543506435074350843509435104351143512435134351443515435164351743518435194352043521435224352343524435254352643527435284352943530435314353243533435344353543536435374353843539435404354143542435434354443545435464354743548435494355043551435524355343554435554355643557435584355943560435614356243563435644356543566435674356843569435704357143572435734357443575435764357743578435794358043581435824358343584435854358643587435884358943590435914359243593435944359543596435974359843599436004360143602436034360443605436064360743608436094361043611436124361343614436154361643617436184361943620436214362243623436244362543626436274362843629436304363143632436334363443635436364363743638436394364043641436424364343644436454364643647436484364943650436514365243653436544365543656436574365843659436604366143662436634366443665436664366743668436694367043671436724367343674436754367643677436784367943680436814368243683436844368543686436874368843689436904369143692436934369443695436964369743698436994370043701437024370343704437054370643707437084370943710437114371243713437144371543716437174371843719437204372143722437234372443725437264372743728437294373043731437324373343734437354373643737437384373943740437414374243743437444374543746437474374843749437504375143752437534375443755437564375743758437594376043761437624376343764437654376643767437684376943770437714377243773437744377543776437774377843779437804378143782437834378443785437864378743788437894379043791437924379343794437954379643797437984379943800438014380243803438044380543806438074380843809438104381143812438134381443815438164381743818438194382043821438224382343824438254382643827438284382943830438314383243833438344383543836438374383843839438404384143842438434384443845438464384743848438494385043851438524385343854438554385643857438584385943860438614386243863438644386543866438674386843869438704387143872438734387443875438764387743878438794388043881438824388343884438854388643887438884388943890438914389243893438944389543896438974389843899439004390143902439034390443905439064390743908439094391043911439124391343914439154391643917439184391943920439214392243923439244392543926439274392843929439304393143932439334393443935439364393743938439394394043941439424394343944439454394643947439484394943950439514395243953439544395543956439574395843959439604396143962439634396443965439664396743968439694397043971439724397343974439754397643977439784397943980439814398243983439844398543986439874398843989439904399143992439934399443995439964399743998439994400044001440024400344004440054400644007440084400944010440114401244013440144401544016440174401844019440204402144022440234402444025440264402744028440294403044031440324403344034440354403644037440384403944040440414404244043440444404544046440474404844049440504405144052440534405444055440564405744058440594406044061440624406344064440654406644067440684406944070440714407244073440744407544076440774407844079440804408144082440834408444085440864408744088440894409044091440924409344094440954409644097440984409944100441014410244103441044410544106441074410844109441104411144112441134411444115441164411744118441194412044121441224412344124441254412644127441284412944130441314413244133441344413544136441374413844139441404414144142441434414444145441464414744148441494415044151441524415344154441554415644157441584415944160441614416244163441644416544166441674416844169441704417144172441734417444175441764417744178441794418044181441824418344184441854418644187441884418944190441914419244193441944419544196441974419844199442004420144202442034420444205442064420744208442094421044211442124421344214442154421644217442184421944220442214422244223442244422544226442274422844229442304423144232442334423444235442364423744238442394424044241442424424344244442454424644247442484424944250442514425244253442544425544256442574425844259442604426144262442634426444265442664426744268442694427044271442724427344274442754427644277442784427944280442814428244283442844428544286442874428844289442904429144292442934429444295442964429744298442994430044301443024430344304443054430644307443084430944310443114431244313443144431544316443174431844319443204432144322443234432444325443264432744328443294433044331443324433344334443354433644337443384433944340443414434244343443444434544346443474434844349443504435144352443534435444355443564435744358443594436044361443624436344364443654436644367443684436944370443714437244373443744437544376443774437844379443804438144382443834438444385443864438744388443894439044391443924439344394443954439644397443984439944400444014440244403444044440544406444074440844409444104441144412444134441444415444164441744418444194442044421444224442344424444254442644427444284442944430444314443244433444344443544436444374443844439444404444144442444434444444445444464444744448444494445044451444524445344454444554445644457444584445944460444614446244463444644446544466444674446844469444704447144472444734447444475444764447744478444794448044481444824448344484444854448644487444884448944490444914449244493444944449544496444974449844499445004450144502445034450444505445064450744508445094451044511445124451344514445154451644517445184451944520445214452244523445244452544526445274452844529445304453144532445334453444535445364453744538445394454044541445424454344544445454454644547445484454944550445514455244553445544455544556445574455844559445604456144562445634456444565445664456744568445694457044571445724457344574445754457644577445784457944580445814458244583445844458544586445874458844589445904459144592445934459444595445964459744598445994460044601446024460344604446054460644607446084460944610446114461244613446144461544616446174461844619446204462144622446234462444625446264462744628446294463044631446324463344634446354463644637446384463944640446414464244643446444464544646446474464844649446504465144652446534465444655446564465744658446594466044661446624466344664446654466644667446684466944670446714467244673446744467544676446774467844679446804468144682446834468444685446864468744688446894469044691446924469344694446954469644697446984469944700447014470244703447044470544706447074470844709447104471144712447134471444715447164471744718447194472044721447224472344724447254472644727447284472944730447314473244733447344473544736447374473844739447404474144742447434474444745447464474744748447494475044751447524475344754447554475644757447584475944760447614476244763447644476544766447674476844769447704477144772447734477444775447764477744778447794478044781447824478344784447854478644787447884478944790447914479244793447944479544796447974479844799448004480144802448034480444805448064480744808448094481044811448124481344814448154481644817448184481944820448214482244823448244482544826448274482844829448304483144832448334483444835448364483744838448394484044841448424484344844448454484644847448484484944850448514485244853448544485544856448574485844859448604486144862448634486444865448664486744868448694487044871448724487344874448754487644877448784487944880448814488244883448844488544886448874488844889448904489144892448934489444895448964489744898448994490044901449024490344904449054490644907449084490944910449114491244913449144491544916449174491844919449204492144922449234492444925449264492744928449294493044931449324493344934449354493644937449384493944940449414494244943449444494544946449474494844949449504495144952449534495444955449564495744958449594496044961449624496344964449654496644967449684496944970449714497244973449744497544976449774497844979449804498144982449834498444985449864498744988449894499044991449924499344994449954499644997449984499945000450014500245003450044500545006450074500845009450104501145012450134501445015450164501745018450194502045021450224502345024450254502645027450284502945030450314503245033450344503545036450374503845039450404504145042450434504445045450464504745048450494505045051450524505345054450554505645057450584505945060450614506245063450644506545066450674506845069450704507145072450734507445075450764507745078450794508045081450824508345084450854508645087450884508945090450914509245093450944509545096450974509845099451004510145102451034510445105451064510745108451094511045111451124511345114451154511645117451184511945120451214512245123451244512545126451274512845129451304513145132451334513445135451364513745138451394514045141451424514345144451454514645147451484514945150451514515245153451544515545156451574515845159451604516145162451634516445165451664516745168451694517045171451724517345174451754517645177451784517945180451814518245183451844518545186451874518845189451904519145192451934519445195451964519745198451994520045201452024520345204452054520645207452084520945210452114521245213452144521545216452174521845219452204522145222452234522445225452264522745228452294523045231452324523345234452354523645237452384523945240452414524245243452444524545246452474524845249452504525145252452534525445255452564525745258452594526045261452624526345264452654526645267452684526945270452714527245273452744527545276452774527845279452804528145282452834528445285452864528745288452894529045291452924529345294452954529645297452984529945300453014530245303453044530545306453074530845309453104531145312453134531445315453164531745318453194532045321453224532345324453254532645327453284532945330453314533245333453344533545336453374533845339453404534145342453434534445345453464534745348453494535045351453524535345354453554535645357453584535945360453614536245363453644536545366453674536845369453704537145372453734537445375453764537745378453794538045381453824538345384453854538645387453884538945390453914539245393453944539545396453974539845399454004540145402454034540445405454064540745408454094541045411454124541345414454154541645417454184541945420454214542245423454244542545426454274542845429454304543145432454334543445435454364543745438454394544045441454424544345444454454544645447454484544945450454514545245453454544545545456454574545845459454604546145462454634546445465454664546745468454694547045471454724547345474454754547645477454784547945480454814548245483454844548545486454874548845489454904549145492454934549445495454964549745498454994550045501455024550345504455054550645507455084550945510455114551245513455144551545516455174551845519455204552145522455234552445525455264552745528455294553045531455324553345534455354553645537455384553945540455414554245543455444554545546455474554845549455504555145552455534555445555455564555745558455594556045561455624556345564455654556645567455684556945570455714557245573455744557545576455774557845579455804558145582455834558445585455864558745588455894559045591455924559345594455954559645597455984559945600456014560245603456044560545606456074560845609456104561145612456134561445615456164561745618456194562045621456224562345624456254562645627456284562945630456314563245633456344563545636456374563845639456404564145642456434564445645456464564745648456494565045651456524565345654456554565645657456584565945660456614566245663456644566545666456674566845669456704567145672456734567445675456764567745678456794568045681456824568345684456854568645687456884568945690456914569245693456944569545696456974569845699457004570145702457034570445705457064570745708457094571045711457124571345714457154571645717457184571945720457214572245723457244572545726457274572845729457304573145732457334573445735457364573745738457394574045741457424574345744457454574645747457484574945750457514575245753457544575545756457574575845759457604576145762457634576445765457664576745768457694577045771457724577345774457754577645777457784577945780457814578245783457844578545786457874578845789457904579145792457934579445795457964579745798457994580045801458024580345804458054580645807458084580945810458114581245813458144581545816458174581845819458204582145822458234582445825458264582745828458294583045831458324583345834458354583645837458384583945840458414584245843458444584545846458474584845849458504585145852458534585445855458564585745858458594586045861458624586345864458654586645867458684586945870458714587245873458744587545876458774587845879458804588145882458834588445885458864588745888458894589045891458924589345894458954589645897458984589945900459014590245903459044590545906459074590845909459104591145912459134591445915459164591745918459194592045921459224592345924459254592645927459284592945930459314593245933459344593545936459374593845939459404594145942459434594445945459464594745948459494595045951459524595345954459554595645957459584595945960459614596245963459644596545966459674596845969459704597145972459734597445975459764597745978459794598045981459824598345984459854598645987459884598945990459914599245993459944599545996459974599845999460004600146002460034600446005460064600746008460094601046011460124601346014460154601646017460184601946020460214602246023460244602546026460274602846029460304603146032460334603446035460364603746038460394604046041460424604346044460454604646047460484604946050460514605246053460544605546056460574605846059460604606146062460634606446065460664606746068460694607046071460724607346074460754607646077460784607946080460814608246083460844608546086460874608846089460904609146092460934609446095460964609746098460994610046101461024610346104461054610646107461084610946110461114611246113461144611546116461174611846119461204612146122461234612446125461264612746128461294613046131461324613346134461354613646137461384613946140461414614246143461444614546146461474614846149461504615146152461534615446155461564615746158461594616046161461624616346164461654616646167461684616946170461714617246173461744617546176461774617846179461804618146182461834618446185461864618746188461894619046191461924619346194461954619646197461984619946200462014620246203462044620546206462074620846209462104621146212462134621446215462164621746218462194622046221462224622346224462254622646227462284622946230462314623246233462344623546236462374623846239462404624146242462434624446245462464624746248462494625046251462524625346254462554625646257462584625946260462614626246263462644626546266462674626846269462704627146272462734627446275462764627746278462794628046281462824628346284462854628646287462884628946290462914629246293462944629546296462974629846299463004630146302463034630446305463064630746308463094631046311463124631346314463154631646317463184631946320463214632246323463244632546326463274632846329463304633146332463334633446335463364633746338463394634046341463424634346344463454634646347463484634946350463514635246353463544635546356463574635846359463604636146362463634636446365463664636746368463694637046371463724637346374463754637646377463784637946380463814638246383463844638546386463874638846389463904639146392463934639446395463964639746398463994640046401464024640346404464054640646407464084640946410464114641246413464144641546416464174641846419464204642146422464234642446425464264642746428464294643046431464324643346434464354643646437464384643946440464414644246443464444644546446464474644846449464504645146452464534645446455464564645746458464594646046461464624646346464464654646646467464684646946470464714647246473464744647546476464774647846479464804648146482464834648446485464864648746488464894649046491464924649346494464954649646497464984649946500465014650246503465044650546506465074650846509465104651146512465134651446515465164651746518465194652046521465224652346524465254652646527465284652946530465314653246533465344653546536465374653846539465404654146542465434654446545465464654746548465494655046551465524655346554465554655646557465584655946560465614656246563465644656546566465674656846569465704657146572465734657446575465764657746578465794658046581465824658346584465854658646587465884658946590465914659246593465944659546596465974659846599466004660146602466034660446605466064660746608466094661046611466124661346614466154661646617466184661946620466214662246623466244662546626466274662846629466304663146632466334663446635466364663746638466394664046641466424664346644466454664646647466484664946650466514665246653466544665546656466574665846659466604666146662466634666446665466664666746668466694667046671466724667346674466754667646677466784667946680466814668246683466844668546686466874668846689466904669146692466934669446695466964669746698466994670046701467024670346704467054670646707467084670946710467114671246713467144671546716467174671846719467204672146722467234672446725467264672746728467294673046731467324673346734467354673646737467384673946740467414674246743467444674546746467474674846749467504675146752467534675446755467564675746758467594676046761467624676346764467654676646767467684676946770467714677246773467744677546776467774677846779467804678146782467834678446785467864678746788467894679046791467924679346794467954679646797467984679946800468014680246803468044680546806468074680846809468104681146812468134681446815468164681746818468194682046821468224682346824468254682646827468284682946830468314683246833468344683546836468374683846839468404684146842468434684446845468464684746848468494685046851468524685346854468554685646857468584685946860468614686246863468644686546866468674686846869468704687146872468734687446875468764687746878468794688046881468824688346884468854688646887468884688946890468914689246893468944689546896468974689846899469004690146902469034690446905469064690746908469094691046911469124691346914469154691646917469184691946920469214692246923469244692546926469274692846929469304693146932469334693446935469364693746938469394694046941469424694346944469454694646947469484694946950469514695246953469544695546956469574695846959469604696146962469634696446965469664696746968469694697046971469724697346974469754697646977469784697946980469814698246983469844698546986469874698846989469904699146992469934699446995469964699746998469994700047001470024700347004470054700647007470084700947010470114701247013470144701547016470174701847019470204702147022470234702447025470264702747028470294703047031470324703347034470354703647037470384703947040470414704247043470444704547046470474704847049470504705147052470534705447055470564705747058470594706047061470624706347064470654706647067470684706947070470714707247073470744707547076470774707847079470804708147082470834708447085470864708747088470894709047091470924709347094470954709647097470984709947100471014710247103471044710547106471074710847109471104711147112471134711447115471164711747118471194712047121471224712347124471254712647127471284712947130471314713247133471344713547136471374713847139471404714147142471434714447145471464714747148471494715047151471524715347154471554715647157471584715947160471614716247163471644716547166471674716847169471704717147172471734717447175471764717747178471794718047181471824718347184471854718647187471884718947190471914719247193471944719547196471974719847199472004720147202472034720447205472064720747208472094721047211472124721347214472154721647217472184721947220472214722247223472244722547226472274722847229472304723147232472334723447235472364723747238472394724047241472424724347244472454724647247472484724947250472514725247253472544725547256472574725847259472604726147262472634726447265472664726747268472694727047271472724727347274472754727647277472784727947280472814728247283472844728547286472874728847289472904729147292472934729447295472964729747298472994730047301473024730347304473054730647307473084730947310473114731247313473144731547316473174731847319473204732147322473234732447325473264732747328473294733047331473324733347334473354733647337473384733947340473414734247343473444734547346473474734847349473504735147352473534735447355473564735747358473594736047361473624736347364473654736647367473684736947370473714737247373473744737547376473774737847379473804738147382473834738447385473864738747388473894739047391473924739347394473954739647397473984739947400474014740247403474044740547406474074740847409474104741147412474134741447415474164741747418474194742047421474224742347424474254742647427474284742947430474314743247433474344743547436474374743847439474404744147442474434744447445474464744747448474494745047451474524745347454474554745647457474584745947460474614746247463474644746547466474674746847469474704747147472474734747447475474764747747478474794748047481474824748347484474854748647487474884748947490474914749247493474944749547496474974749847499475004750147502475034750447505475064750747508475094751047511475124751347514475154751647517475184751947520475214752247523475244752547526475274752847529475304753147532475334753447535475364753747538475394754047541475424754347544475454754647547475484754947550475514755247553475544755547556475574755847559475604756147562475634756447565475664756747568475694757047571475724757347574475754757647577475784757947580475814758247583475844758547586475874758847589475904759147592475934759447595475964759747598475994760047601476024760347604476054760647607476084760947610476114761247613476144761547616476174761847619476204762147622476234762447625476264762747628476294763047631476324763347634476354763647637476384763947640476414764247643476444764547646476474764847649476504765147652476534765447655476564765747658476594766047661476624766347664476654766647667476684766947670476714767247673476744767547676476774767847679476804768147682476834768447685476864768747688476894769047691476924769347694476954769647697476984769947700477014770247703477044770547706477074770847709477104771147712477134771447715477164771747718477194772047721477224772347724477254772647727477284772947730477314773247733477344773547736477374773847739477404774147742477434774447745477464774747748477494775047751477524775347754477554775647757477584775947760477614776247763477644776547766477674776847769477704777147772477734777447775477764777747778477794778047781477824778347784477854778647787477884778947790477914779247793477944779547796477974779847799478004780147802478034780447805478064780747808478094781047811478124781347814478154781647817478184781947820478214782247823478244782547826478274782847829478304783147832478334783447835478364783747838478394784047841478424784347844478454784647847478484784947850478514785247853478544785547856478574785847859478604786147862478634786447865478664786747868478694787047871478724787347874478754787647877478784787947880478814788247883478844788547886478874788847889478904789147892478934789447895478964789747898478994790047901479024790347904479054790647907479084790947910479114791247913479144791547916479174791847919479204792147922479234792447925479264792747928479294793047931479324793347934479354793647937479384793947940479414794247943479444794547946479474794847949479504795147952479534795447955479564795747958479594796047961479624796347964479654796647967479684796947970479714797247973479744797547976479774797847979479804798147982479834798447985479864798747988479894799047991479924799347994479954799647997479984799948000480014800248003480044800548006480074800848009480104801148012480134801448015480164801748018480194802048021480224802348024480254802648027480284802948030480314803248033480344803548036480374803848039480404804148042480434804448045480464804748048480494805048051480524805348054480554805648057480584805948060480614806248063480644806548066480674806848069480704807148072480734807448075480764807748078480794808048081480824808348084480854808648087480884808948090480914809248093480944809548096480974809848099481004810148102481034810448105481064810748108481094811048111481124811348114481154811648117481184811948120481214812248123481244812548126481274812848129481304813148132481334813448135481364813748138481394814048141481424814348144481454814648147481484814948150481514815248153481544815548156481574815848159481604816148162481634816448165481664816748168481694817048171481724817348174481754817648177481784817948180481814818248183481844818548186481874818848189481904819148192481934819448195481964819748198481994820048201482024820348204482054820648207482084820948210482114821248213482144821548216482174821848219482204822148222482234822448225482264822748228482294823048231482324823348234482354823648237482384823948240482414824248243482444824548246482474824848249482504825148252482534825448255482564825748258482594826048261482624826348264482654826648267482684826948270482714827248273482744827548276482774827848279482804828148282482834828448285482864828748288482894829048291482924829348294482954829648297482984829948300483014830248303483044830548306483074830848309483104831148312483134831448315483164831748318483194832048321483224832348324483254832648327483284832948330483314833248333483344833548336483374833848339483404834148342483434834448345483464834748348483494835048351483524835348354483554835648357483584835948360483614836248363483644836548366483674836848369483704837148372483734837448375483764837748378483794838048381483824838348384483854838648387483884838948390483914839248393483944839548396483974839848399484004840148402484034840448405484064840748408484094841048411484124841348414484154841648417484184841948420484214842248423484244842548426484274842848429484304843148432484334843448435484364843748438484394844048441484424844348444484454844648447484484844948450484514845248453484544845548456484574845848459484604846148462484634846448465484664846748468484694847048471484724847348474484754847648477484784847948480484814848248483484844848548486484874848848489484904849148492484934849448495484964849748498484994850048501485024850348504485054850648507485084850948510485114851248513485144851548516485174851848519485204852148522485234852448525485264852748528485294853048531485324853348534485354853648537485384853948540485414854248543485444854548546485474854848549485504855148552485534855448555485564855748558485594856048561485624856348564485654856648567485684856948570485714857248573485744857548576485774857848579485804858148582485834858448585485864858748588485894859048591485924859348594485954859648597485984859948600486014860248603486044860548606486074860848609486104861148612486134861448615486164861748618486194862048621486224862348624486254862648627486284862948630486314863248633486344863548636486374863848639486404864148642486434864448645486464864748648486494865048651486524865348654486554865648657486584865948660486614866248663486644866548666486674866848669486704867148672486734867448675486764867748678486794868048681486824868348684486854868648687486884868948690486914869248693486944869548696486974869848699487004870148702487034870448705487064870748708487094871048711487124871348714487154871648717487184871948720487214872248723487244872548726487274872848729487304873148732487334873448735487364873748738487394874048741487424874348744487454874648747487484874948750487514875248753487544875548756487574875848759487604876148762487634876448765487664876748768487694877048771487724877348774487754877648777487784877948780487814878248783487844878548786487874878848789487904879148792487934879448795487964879748798487994880048801488024880348804488054880648807488084880948810488114881248813488144881548816488174881848819488204882148822488234882448825488264882748828488294883048831488324883348834488354883648837488384883948840488414884248843488444884548846488474884848849488504885148852488534885448855488564885748858488594886048861488624886348864488654886648867488684886948870488714887248873488744887548876488774887848879488804888148882488834888448885488864888748888488894889048891488924889348894488954889648897488984889948900489014890248903489044890548906489074890848909489104891148912489134891448915489164891748918489194892048921489224892348924489254892648927489284892948930489314893248933489344893548936489374893848939489404894148942489434894448945489464894748948489494895048951489524895348954489554895648957489584895948960489614896248963489644896548966489674896848969489704897148972489734897448975489764897748978489794898048981489824898348984489854898648987489884898948990489914899248993489944899548996489974899848999490004900149002490034900449005490064900749008490094901049011490124901349014490154901649017490184901949020490214902249023490244902549026490274902849029490304903149032490334903449035490364903749038490394904049041490424904349044490454904649047490484904949050490514905249053490544905549056490574905849059490604906149062490634906449065490664906749068490694907049071490724907349074490754907649077490784907949080490814908249083490844908549086490874908849089490904909149092490934909449095490964909749098490994910049101491024910349104491054910649107491084910949110491114911249113491144911549116491174911849119491204912149122491234912449125491264912749128491294913049131491324913349134491354913649137491384913949140491414914249143491444914549146491474914849149491504915149152491534915449155491564915749158491594916049161491624916349164491654916649167491684916949170491714917249173491744917549176491774917849179491804918149182491834918449185491864918749188491894919049191491924919349194491954919649197491984919949200492014920249203492044920549206492074920849209492104921149212492134921449215492164921749218492194922049221492224922349224492254922649227492284922949230492314923249233492344923549236492374923849239492404924149242492434924449245492464924749248492494925049251492524925349254492554925649257492584925949260492614926249263492644926549266492674926849269492704927149272492734927449275492764927749278492794928049281492824928349284492854928649287492884928949290492914929249293492944929549296492974929849299493004930149302493034930449305493064930749308493094931049311493124931349314493154931649317493184931949320493214932249323493244932549326493274932849329493304933149332493334933449335493364933749338493394934049341493424934349344493454934649347493484934949350493514935249353493544935549356493574935849359493604936149362493634936449365493664936749368493694937049371493724937349374493754937649377493784937949380493814938249383493844938549386493874938849389493904939149392493934939449395493964939749398493994940049401494024940349404494054940649407494084940949410494114941249413494144941549416494174941849419494204942149422494234942449425494264942749428494294943049431494324943349434494354943649437494384943949440494414944249443494444944549446494474944849449494504945149452494534945449455494564945749458494594946049461494624946349464494654946649467494684946949470494714947249473494744947549476494774947849479494804948149482494834948449485494864948749488494894949049491494924949349494494954949649497494984949949500495014950249503495044950549506495074950849509495104951149512495134951449515495164951749518495194952049521495224952349524495254952649527495284952949530495314953249533495344953549536495374953849539495404954149542495434954449545495464954749548495494955049551495524955349554495554955649557495584955949560495614956249563495644956549566495674956849569495704957149572495734957449575495764957749578495794958049581495824958349584495854958649587495884958949590495914959249593495944959549596495974959849599496004960149602496034960449605496064960749608496094961049611496124961349614496154961649617496184961949620496214962249623496244962549626496274962849629496304963149632496334963449635496364963749638496394964049641496424964349644496454964649647496484964949650496514965249653496544965549656496574965849659496604966149662496634966449665496664966749668496694967049671496724967349674496754967649677496784967949680496814968249683496844968549686496874968849689496904969149692496934969449695496964969749698496994970049701497024970349704497054970649707497084970949710497114971249713497144971549716497174971849719497204972149722497234972449725497264972749728497294973049731497324973349734497354973649737497384973949740497414974249743497444974549746497474974849749497504975149752497534975449755497564975749758497594976049761497624976349764497654976649767497684976949770497714977249773497744977549776497774977849779497804978149782497834978449785497864978749788497894979049791497924979349794497954979649797497984979949800498014980249803498044980549806498074980849809498104981149812498134981449815498164981749818498194982049821498224982349824498254982649827498284982949830498314983249833498344983549836498374983849839498404984149842498434984449845498464984749848498494985049851498524985349854498554985649857498584985949860498614986249863498644986549866498674986849869498704987149872498734987449875498764987749878498794988049881498824988349884498854988649887498884988949890498914989249893498944989549896498974989849899499004990149902499034990449905499064990749908499094991049911499124991349914499154991649917499184991949920499214992249923499244992549926499274992849929499304993149932499334993449935499364993749938499394994049941499424994349944499454994649947499484994949950499514995249953499544995549956499574995849959499604996149962499634996449965499664996749968499694997049971499724997349974499754997649977499784997949980499814998249983499844998549986499874998849989499904999149992499934999449995499964999749998499995000050001500025000350004500055000650007500085000950010500115001250013500145001550016500175001850019500205002150022500235002450025500265002750028500295003050031500325003350034500355003650037500385003950040500415004250043500445004550046500475004850049500505005150052500535005450055500565005750058500595006050061500625006350064500655006650067500685006950070500715007250073500745007550076500775007850079500805008150082500835008450085500865008750088500895009050091500925009350094500955009650097500985009950100501015010250103501045010550106501075010850109501105011150112501135011450115501165011750118501195012050121501225012350124501255012650127501285012950130501315013250133501345013550136501375013850139501405014150142501435014450145501465014750148501495015050151501525015350154501555015650157501585015950160501615016250163501645016550166501675016850169501705017150172501735017450175501765017750178501795018050181501825018350184501855018650187501885018950190501915019250193501945019550196501975019850199502005020150202502035020450205502065020750208502095021050211502125021350214502155021650217502185021950220502215022250223502245022550226502275022850229502305023150232502335023450235502365023750238502395024050241502425024350244502455024650247502485024950250502515025250253502545025550256502575025850259502605026150262502635026450265502665026750268502695027050271502725027350274502755027650277502785027950280502815028250283502845028550286502875028850289502905029150292502935029450295502965029750298502995030050301503025030350304503055030650307503085030950310503115031250313503145031550316503175031850319503205032150322503235032450325503265032750328503295033050331503325033350334503355033650337503385033950340503415034250343503445034550346503475034850349503505035150352503535035450355503565035750358503595036050361503625036350364503655036650367503685036950370503715037250373503745037550376503775037850379503805038150382503835038450385503865038750388503895039050391503925039350394503955039650397503985039950400504015040250403504045040550406504075040850409504105041150412504135041450415504165041750418504195042050421504225042350424504255042650427504285042950430504315043250433504345043550436504375043850439504405044150442504435044450445504465044750448504495045050451504525045350454504555045650457504585045950460504615046250463504645046550466504675046850469504705047150472504735047450475504765047750478504795048050481504825048350484504855048650487504885048950490504915049250493504945049550496504975049850499505005050150502505035050450505505065050750508505095051050511505125051350514505155051650517505185051950520505215052250523505245052550526505275052850529505305053150532505335053450535505365053750538505395054050541505425054350544505455054650547505485054950550505515055250553505545055550556505575055850559505605056150562505635056450565505665056750568505695057050571505725057350574505755057650577505785057950580505815058250583505845058550586505875058850589505905059150592505935059450595505965059750598505995060050601506025060350604506055060650607506085060950610506115061250613506145061550616506175061850619506205062150622506235062450625506265062750628506295063050631506325063350634506355063650637506385063950640506415064250643506445064550646506475064850649506505065150652506535065450655506565065750658506595066050661506625066350664506655066650667506685066950670506715067250673506745067550676506775067850679506805068150682506835068450685506865068750688506895069050691506925069350694506955069650697506985069950700507015070250703507045070550706507075070850709507105071150712507135071450715507165071750718507195072050721507225072350724507255072650727507285072950730507315073250733507345073550736507375073850739507405074150742507435074450745507465074750748507495075050751507525075350754507555075650757507585075950760507615076250763507645076550766507675076850769507705077150772507735077450775507765077750778507795078050781507825078350784507855078650787507885078950790507915079250793507945079550796507975079850799508005080150802508035080450805508065080750808508095081050811508125081350814508155081650817508185081950820508215082250823508245082550826508275082850829508305083150832508335083450835508365083750838508395084050841508425084350844508455084650847508485084950850508515085250853508545085550856508575085850859508605086150862508635086450865508665086750868508695087050871508725087350874508755087650877508785087950880508815088250883508845088550886508875088850889508905089150892508935089450895508965089750898508995090050901509025090350904509055090650907509085090950910509115091250913509145091550916509175091850919509205092150922509235092450925509265092750928509295093050931509325093350934509355093650937509385093950940509415094250943509445094550946509475094850949509505095150952509535095450955509565095750958509595096050961509625096350964509655096650967509685096950970509715097250973509745097550976509775097850979509805098150982509835098450985509865098750988509895099050991509925099350994509955099650997509985099951000510015100251003510045100551006510075100851009510105101151012510135101451015510165101751018510195102051021510225102351024510255102651027510285102951030510315103251033510345103551036510375103851039510405104151042510435104451045510465104751048510495105051051510525105351054510555105651057510585105951060510615106251063510645106551066510675106851069510705107151072510735107451075510765107751078510795108051081510825108351084510855108651087510885108951090510915109251093510945109551096510975109851099511005110151102511035110451105511065110751108511095111051111511125111351114511155111651117511185111951120511215112251123511245112551126511275112851129511305113151132511335113451135511365113751138511395114051141511425114351144511455114651147511485114951150511515115251153511545115551156511575115851159511605116151162511635116451165511665116751168511695117051171511725117351174511755117651177511785117951180511815118251183511845118551186511875118851189511905119151192511935119451195511965119751198511995120051201512025120351204512055120651207512085120951210512115121251213512145121551216512175121851219512205122151222512235122451225512265122751228512295123051231512325123351234512355123651237512385123951240512415124251243512445124551246512475124851249512505125151252512535125451255512565125751258512595126051261512625126351264512655126651267512685126951270512715127251273512745127551276512775127851279512805128151282512835128451285512865128751288512895129051291512925129351294512955129651297512985129951300513015130251303513045130551306513075130851309513105131151312513135131451315513165131751318513195132051321513225132351324513255132651327513285132951330513315133251333513345133551336513375133851339513405134151342513435134451345513465134751348513495135051351513525135351354513555135651357513585135951360513615136251363513645136551366513675136851369513705137151372513735137451375513765137751378513795138051381513825138351384513855138651387513885138951390513915139251393513945139551396513975139851399514005140151402514035140451405514065140751408514095141051411514125141351414514155141651417514185141951420514215142251423514245142551426514275142851429514305143151432514335143451435514365143751438514395144051441514425144351444514455144651447514485144951450514515145251453514545145551456514575145851459514605146151462514635146451465514665146751468514695147051471514725147351474514755147651477514785147951480514815148251483514845148551486514875148851489514905149151492514935149451495514965149751498514995150051501515025150351504515055150651507515085150951510515115151251513515145151551516515175151851519515205152151522515235152451525515265152751528515295153051531515325153351534515355153651537515385153951540515415154251543515445154551546515475154851549515505155151552515535155451555515565155751558515595156051561515625156351564515655156651567515685156951570515715157251573515745157551576515775157851579515805158151582515835158451585515865158751588515895159051591515925159351594515955159651597515985159951600516015160251603516045160551606516075160851609516105161151612516135161451615516165161751618516195162051621516225162351624516255162651627516285162951630516315163251633516345163551636516375163851639516405164151642516435164451645516465164751648516495165051651516525165351654516555165651657516585165951660516615166251663516645166551666516675166851669516705167151672516735167451675516765167751678516795168051681516825168351684516855168651687516885168951690516915169251693516945169551696516975169851699517005170151702517035170451705517065170751708517095171051711517125171351714517155171651717517185171951720517215172251723517245172551726517275172851729517305173151732517335173451735517365173751738517395174051741517425174351744517455174651747517485174951750517515175251753517545175551756517575175851759517605176151762517635176451765517665176751768517695177051771517725177351774517755177651777517785177951780517815178251783517845178551786517875178851789517905179151792517935179451795517965179751798517995180051801518025180351804518055180651807518085180951810518115181251813518145181551816518175181851819518205182151822518235182451825518265182751828518295183051831518325183351834518355183651837518385183951840518415184251843518445184551846518475184851849518505185151852518535185451855518565185751858518595186051861518625186351864518655186651867518685186951870518715187251873518745187551876518775187851879518805188151882518835188451885518865188751888518895189051891518925189351894518955189651897518985189951900519015190251903519045190551906519075190851909519105191151912519135191451915519165191751918519195192051921519225192351924519255192651927519285192951930519315193251933519345193551936519375193851939519405194151942519435194451945519465194751948519495195051951519525195351954519555195651957519585195951960519615196251963519645196551966519675196851969519705197151972519735197451975519765197751978519795198051981519825198351984519855198651987519885198951990519915199251993519945199551996519975199851999520005200152002520035200452005520065200752008520095201052011520125201352014520155201652017520185201952020520215202252023520245202552026520275202852029520305203152032520335203452035520365203752038520395204052041520425204352044520455204652047520485204952050520515205252053520545205552056520575205852059520605206152062520635206452065520665206752068520695207052071520725207352074520755207652077520785207952080520815208252083520845208552086520875208852089520905209152092520935209452095520965209752098520995210052101521025210352104521055210652107521085210952110521115211252113521145211552116521175211852119521205212152122521235212452125521265212752128521295213052131521325213352134521355213652137521385213952140521415214252143521445214552146521475214852149521505215152152521535215452155521565215752158521595216052161521625216352164521655216652167521685216952170521715217252173521745217552176521775217852179521805218152182521835218452185521865218752188521895219052191521925219352194521955219652197521985219952200522015220252203522045220552206522075220852209522105221152212522135221452215522165221752218522195222052221522225222352224522255222652227522285222952230522315223252233522345223552236522375223852239522405224152242522435224452245522465224752248522495225052251522525225352254522555225652257522585225952260522615226252263522645226552266522675226852269522705227152272522735227452275522765227752278522795228052281522825228352284522855228652287522885228952290522915229252293522945229552296522975229852299523005230152302523035230452305523065230752308523095231052311523125231352314523155231652317523185231952320523215232252323523245232552326523275232852329523305233152332523335233452335523365233752338523395234052341523425234352344523455234652347523485234952350523515235252353523545235552356523575235852359523605236152362523635236452365523665236752368523695237052371523725237352374523755237652377523785237952380523815238252383523845238552386523875238852389523905239152392523935239452395523965239752398523995240052401524025240352404524055240652407524085240952410524115241252413524145241552416524175241852419524205242152422524235242452425524265242752428524295243052431524325243352434524355243652437524385243952440524415244252443524445244552446524475244852449524505245152452524535245452455524565245752458524595246052461524625246352464524655246652467524685246952470524715247252473524745247552476524775247852479524805248152482524835248452485524865248752488524895249052491524925249352494524955249652497524985249952500525015250252503525045250552506525075250852509525105251152512525135251452515525165251752518525195252052521525225252352524525255252652527525285252952530525315253252533525345253552536525375253852539525405254152542525435254452545525465254752548525495255052551525525255352554525555255652557525585255952560525615256252563525645256552566525675256852569525705257152572525735257452575525765257752578525795258052581525825258352584525855258652587525885258952590525915259252593525945259552596525975259852599526005260152602526035260452605526065260752608526095261052611526125261352614526155261652617526185261952620526215262252623526245262552626526275262852629526305263152632526335263452635526365263752638526395264052641526425264352644526455264652647526485264952650526515265252653526545265552656526575265852659526605266152662526635266452665526665266752668526695267052671526725267352674526755267652677526785267952680526815268252683526845268552686526875268852689526905269152692526935269452695526965269752698526995270052701527025270352704527055270652707527085270952710527115271252713527145271552716527175271852719527205272152722527235272452725527265272752728527295273052731527325273352734527355273652737527385273952740527415274252743527445274552746527475274852749527505275152752527535275452755527565275752758527595276052761527625276352764527655276652767527685276952770527715277252773527745277552776527775277852779527805278152782527835278452785527865278752788527895279052791527925279352794527955279652797527985279952800528015280252803528045280552806528075280852809528105281152812528135281452815528165281752818528195282052821528225282352824528255282652827528285282952830528315283252833528345283552836528375283852839528405284152842528435284452845528465284752848528495285052851528525285352854528555285652857528585285952860528615286252863528645286552866528675286852869528705287152872528735287452875528765287752878528795288052881528825288352884528855288652887528885288952890528915289252893528945289552896528975289852899529005290152902529035290452905529065290752908529095291052911529125291352914529155291652917529185291952920529215292252923529245292552926529275292852929529305293152932529335293452935529365293752938529395294052941529425294352944529455294652947529485294952950529515295252953529545295552956529575295852959529605296152962529635296452965529665296752968529695297052971529725297352974529755297652977529785297952980529815298252983529845298552986529875298852989529905299152992529935299452995529965299752998529995300053001530025300353004530055300653007530085300953010530115301253013530145301553016530175301853019530205302153022530235302453025530265302753028530295303053031530325303353034530355303653037530385303953040530415304253043530445304553046530475304853049530505305153052530535305453055530565305753058530595306053061530625306353064530655306653067530685306953070530715307253073530745307553076530775307853079530805308153082530835308453085530865308753088530895309053091530925309353094530955309653097530985309953100531015310253103531045310553106531075310853109531105311153112531135311453115531165311753118531195312053121531225312353124531255312653127531285312953130531315313253133531345313553136531375313853139531405314153142531435314453145531465314753148531495315053151531525315353154531555315653157531585315953160531615316253163531645316553166531675316853169531705317153172531735317453175531765317753178531795318053181531825318353184531855318653187531885318953190531915319253193531945319553196531975319853199532005320153202532035320453205532065320753208532095321053211532125321353214532155321653217532185321953220532215322253223532245322553226532275322853229532305323153232532335323453235532365323753238532395324053241532425324353244532455324653247532485324953250532515325253253532545325553256532575325853259532605326153262532635326453265532665326753268532695327053271532725327353274532755327653277532785327953280532815328253283532845328553286532875328853289532905329153292532935329453295532965329753298532995330053301533025330353304533055330653307533085330953310533115331253313533145331553316533175331853319533205332153322533235332453325533265332753328533295333053331533325333353334533355333653337533385333953340533415334253343533445334553346533475334853349533505335153352533535335453355533565335753358533595336053361533625336353364533655336653367533685336953370533715337253373533745337553376533775337853379533805338153382533835338453385533865338753388533895339053391533925339353394533955339653397533985339953400534015340253403534045340553406534075340853409534105341153412534135341453415534165341753418534195342053421534225342353424534255342653427534285342953430534315343253433534345343553436534375343853439534405344153442534435344453445534465344753448534495345053451534525345353454534555345653457534585345953460534615346253463534645346553466534675346853469534705347153472534735347453475534765347753478534795348053481534825348353484534855348653487534885348953490534915349253493534945349553496534975349853499535005350153502535035350453505535065350753508535095351053511535125351353514535155351653517535185351953520535215352253523535245352553526535275352853529535305353153532535335353453535535365353753538535395354053541535425354353544535455354653547535485354953550535515355253553535545355553556535575355853559535605356153562535635356453565535665356753568535695357053571535725357353574535755357653577535785357953580535815358253583535845358553586535875358853589535905359153592535935359453595535965359753598535995360053601536025360353604536055360653607536085360953610536115361253613536145361553616536175361853619536205362153622536235362453625536265362753628536295363053631536325363353634536355363653637536385363953640536415364253643536445364553646536475364853649536505365153652536535365453655536565365753658536595366053661536625366353664536655366653667536685366953670536715367253673536745367553676536775367853679536805368153682536835368453685536865368753688536895369053691536925369353694536955369653697536985369953700537015370253703537045370553706537075370853709537105371153712537135371453715537165371753718537195372053721537225372353724537255372653727537285372953730537315373253733537345373553736537375373853739537405374153742537435374453745537465374753748537495375053751537525375353754537555375653757537585375953760537615376253763537645376553766537675376853769537705377153772537735377453775537765377753778537795378053781537825378353784537855378653787537885378953790537915379253793537945379553796537975379853799538005380153802538035380453805538065380753808538095381053811538125381353814538155381653817538185381953820538215382253823538245382553826538275382853829538305383153832538335383453835538365383753838538395384053841538425384353844538455384653847538485384953850538515385253853538545385553856538575385853859538605386153862538635386453865538665386753868538695387053871538725387353874538755387653877538785387953880538815388253883538845388553886538875388853889538905389153892538935389453895538965389753898538995390053901539025390353904539055390653907539085390953910539115391253913539145391553916539175391853919539205392153922539235392453925539265392753928539295393053931539325393353934539355393653937539385393953940539415394253943539445394553946539475394853949539505395153952539535395453955539565395753958539595396053961539625396353964539655396653967539685396953970539715397253973539745397553976539775397853979539805398153982539835398453985539865398753988539895399053991539925399353994539955399653997539985399954000540015400254003540045400554006540075400854009540105401154012540135401454015540165401754018540195402054021540225402354024540255402654027540285402954030540315403254033540345403554036540375403854039540405404154042540435404454045540465404754048540495405054051540525405354054540555405654057540585405954060540615406254063540645406554066540675406854069540705407154072540735407454075540765407754078540795408054081540825408354084540855408654087540885408954090540915409254093540945409554096540975409854099541005410154102541035410454105541065410754108541095411054111541125411354114541155411654117541185411954120541215412254123541245412554126541275412854129541305413154132541335413454135541365413754138541395414054141541425414354144541455414654147541485414954150541515415254153541545415554156541575415854159541605416154162541635416454165541665416754168541695417054171541725417354174541755417654177541785417954180541815418254183541845418554186541875418854189541905419154192541935419454195541965419754198541995420054201542025420354204542055420654207542085420954210542115421254213542145421554216542175421854219542205422154222542235422454225542265422754228542295423054231542325423354234542355423654237542385423954240542415424254243542445424554246542475424854249542505425154252542535425454255542565425754258542595426054261542625426354264542655426654267542685426954270542715427254273542745427554276542775427854279542805428154282542835428454285542865428754288542895429054291542925429354294542955429654297542985429954300543015430254303543045430554306543075430854309543105431154312543135431454315543165431754318543195432054321543225432354324543255432654327543285432954330543315433254333543345433554336543375433854339543405434154342543435434454345543465434754348543495435054351543525435354354543555435654357543585435954360543615436254363543645436554366543675436854369543705437154372543735437454375543765437754378543795438054381543825438354384543855438654387543885438954390543915439254393543945439554396543975439854399544005440154402544035440454405544065440754408544095441054411544125441354414544155441654417544185441954420544215442254423544245442554426544275442854429544305443154432544335443454435544365443754438544395444054441544425444354444544455444654447544485444954450544515445254453544545445554456544575445854459544605446154462544635446454465544665446754468544695447054471544725447354474544755447654477544785447954480544815448254483544845448554486544875448854489544905449154492544935449454495544965449754498544995450054501545025450354504545055450654507545085450954510545115451254513545145451554516545175451854519545205452154522545235452454525545265452754528545295453054531545325453354534545355453654537545385453954540545415454254543545445454554546545475454854549545505455154552545535455454555545565455754558545595456054561545625456354564545655456654567545685456954570545715457254573545745457554576545775457854579545805458154582545835458454585545865458754588545895459054591545925459354594545955459654597545985459954600546015460254603546045460554606546075460854609546105461154612546135461454615546165461754618546195462054621546225462354624546255462654627546285462954630546315463254633546345463554636546375463854639546405464154642546435464454645546465464754648546495465054651546525465354654546555465654657546585465954660546615466254663546645466554666546675466854669546705467154672546735467454675546765467754678546795468054681546825468354684546855468654687546885468954690546915469254693546945469554696546975469854699547005470154702547035470454705547065470754708547095471054711547125471354714547155471654717547185471954720547215472254723547245472554726547275472854729547305473154732547335473454735547365473754738547395474054741547425474354744547455474654747547485474954750547515475254753547545475554756547575475854759547605476154762547635476454765547665476754768547695477054771547725477354774547755477654777547785477954780547815478254783547845478554786547875478854789547905479154792547935479454795547965479754798547995480054801548025480354804548055480654807548085480954810548115481254813548145481554816548175481854819548205482154822548235482454825548265482754828548295483054831548325483354834548355483654837548385483954840548415484254843548445484554846548475484854849548505485154852548535485454855548565485754858548595486054861548625486354864548655486654867548685486954870548715487254873548745487554876548775487854879548805488154882548835488454885548865488754888548895489054891548925489354894548955489654897548985489954900549015490254903549045490554906549075490854909549105491154912549135491454915549165491754918549195492054921549225492354924549255492654927549285492954930549315493254933549345493554936549375493854939549405494154942549435494454945549465494754948549495495054951549525495354954549555495654957549585495954960549615496254963549645496554966549675496854969549705497154972549735497454975549765497754978549795498054981549825498354984549855498654987549885498954990549915499254993549945499554996549975499854999550005500155002550035500455005550065500755008550095501055011550125501355014550155501655017550185501955020550215502255023550245502555026550275502855029550305503155032550335503455035550365503755038550395504055041550425504355044550455504655047550485504955050550515505255053550545505555056550575505855059550605506155062550635506455065550665506755068550695507055071550725507355074550755507655077550785507955080550815508255083550845508555086550875508855089550905509155092550935509455095550965509755098550995510055101551025510355104551055510655107551085510955110551115511255113551145511555116551175511855119551205512155122551235512455125551265512755128551295513055131551325513355134551355513655137551385513955140551415514255143551445514555146551475514855149551505515155152551535515455155551565515755158551595516055161551625516355164551655516655167551685516955170551715517255173551745517555176551775517855179551805518155182551835518455185551865518755188551895519055191551925519355194551955519655197551985519955200552015520255203552045520555206552075520855209552105521155212552135521455215552165521755218552195522055221552225522355224552255522655227552285522955230552315523255233552345523555236552375523855239552405524155242552435524455245552465524755248552495525055251552525525355254552555525655257552585525955260552615526255263552645526555266552675526855269552705527155272552735527455275552765527755278552795528055281552825528355284552855528655287552885528955290552915529255293552945529555296552975529855299553005530155302553035530455305553065530755308553095531055311553125531355314553155531655317553185531955320553215532255323553245532555326553275532855329553305533155332553335533455335553365533755338553395534055341553425534355344553455534655347553485534955350553515535255353553545535555356553575535855359553605536155362553635536455365553665536755368553695537055371553725537355374553755537655377553785537955380553815538255383553845538555386553875538855389553905539155392553935539455395553965539755398553995540055401554025540355404554055540655407554085540955410554115541255413554145541555416554175541855419554205542155422554235542455425554265542755428554295543055431554325543355434554355543655437554385543955440554415544255443554445544555446554475544855449554505545155452554535545455455554565545755458554595546055461554625546355464554655546655467554685546955470554715547255473554745547555476554775547855479554805548155482554835548455485554865548755488554895549055491554925549355494554955549655497554985549955500555015550255503555045550555506555075550855509555105551155512555135551455515555165551755518555195552055521555225552355524555255552655527555285552955530555315553255533555345553555536555375553855539555405554155542555435554455545555465554755548555495555055551555525555355554555555555655557555585555955560555615556255563555645556555566555675556855569555705557155572555735557455575555765557755578555795558055581555825558355584555855558655587555885558955590555915559255593555945559555596555975559855599556005560155602556035560455605556065560755608556095561055611556125561355614556155561655617556185561955620556215562255623556245562555626556275562855629556305563155632556335563455635556365563755638556395564055641556425564355644556455564655647556485564955650556515565255653556545565555656556575565855659556605566155662556635566455665556665566755668556695567055671556725567355674556755567655677556785567955680556815568255683556845568555686556875568855689556905569155692556935569455695556965569755698556995570055701557025570355704557055570655707557085570955710557115571255713557145571555716557175571855719557205572155722557235572455725557265572755728557295573055731557325573355734557355573655737557385573955740557415574255743557445574555746557475574855749557505575155752557535575455755557565575755758557595576055761557625576355764557655576655767557685576955770557715577255773557745577555776557775577855779557805578155782557835578455785557865578755788557895579055791557925579355794557955579655797557985579955800558015580255803558045580555806558075580855809558105581155812558135581455815558165581755818558195582055821558225582355824558255582655827558285582955830558315583255833558345583555836558375583855839558405584155842558435584455845558465584755848558495585055851558525585355854558555585655857558585585955860558615586255863558645586555866558675586855869558705587155872558735587455875558765587755878558795588055881558825588355884558855588655887558885588955890558915589255893558945589555896558975589855899559005590155902559035590455905559065590755908559095591055911559125591355914559155591655917559185591955920559215592255923559245592555926559275592855929559305593155932559335593455935559365593755938559395594055941559425594355944559455594655947559485594955950559515595255953559545595555956559575595855959559605596155962559635596455965559665596755968559695597055971559725597355974559755597655977559785597955980559815598255983559845598555986559875598855989559905599155992559935599455995559965599755998559995600056001560025600356004560055600656007560085600956010560115601256013560145601556016560175601856019560205602156022560235602456025560265602756028560295603056031560325603356034560355603656037560385603956040560415604256043560445604556046560475604856049560505605156052560535605456055560565605756058560595606056061560625606356064560655606656067560685606956070560715607256073560745607556076560775607856079560805608156082560835608456085560865608756088560895609056091560925609356094560955609656097560985609956100561015610256103561045610556106561075610856109561105611156112561135611456115561165611756118561195612056121561225612356124561255612656127561285612956130561315613256133561345613556136561375613856139561405614156142561435614456145561465614756148561495615056151561525615356154561555615656157561585615956160561615616256163561645616556166561675616856169561705617156172561735617456175561765617756178561795618056181561825618356184561855618656187561885618956190561915619256193561945619556196561975619856199562005620156202562035620456205562065620756208562095621056211562125621356214562155621656217562185621956220562215622256223562245622556226562275622856229562305623156232562335623456235562365623756238562395624056241562425624356244562455624656247562485624956250562515625256253562545625556256562575625856259562605626156262562635626456265562665626756268562695627056271562725627356274562755627656277562785627956280562815628256283562845628556286562875628856289562905629156292562935629456295562965629756298562995630056301563025630356304563055630656307563085630956310563115631256313563145631556316563175631856319563205632156322563235632456325563265632756328563295633056331563325633356334563355633656337563385633956340563415634256343563445634556346563475634856349563505635156352563535635456355563565635756358563595636056361563625636356364563655636656367563685636956370563715637256373563745637556376563775637856379563805638156382563835638456385563865638756388563895639056391563925639356394563955639656397563985639956400564015640256403564045640556406564075640856409564105641156412564135641456415564165641756418564195642056421564225642356424564255642656427564285642956430564315643256433564345643556436564375643856439564405644156442564435644456445564465644756448564495645056451564525645356454564555645656457564585645956460564615646256463564645646556466564675646856469564705647156472564735647456475564765647756478564795648056481564825648356484564855648656487564885648956490564915649256493564945649556496564975649856499565005650156502565035650456505565065650756508565095651056511565125651356514565155651656517565185651956520565215652256523565245652556526565275652856529565305653156532565335653456535565365653756538565395654056541565425654356544565455654656547565485654956550565515655256553565545655556556565575655856559565605656156562565635656456565565665656756568565695657056571565725657356574565755657656577565785657956580565815658256583565845658556586565875658856589565905659156592565935659456595565965659756598565995660056601566025660356604566055660656607566085660956610566115661256613566145661556616566175661856619566205662156622566235662456625566265662756628566295663056631566325663356634566355663656637566385663956640566415664256643566445664556646566475664856649566505665156652566535665456655566565665756658566595666056661566625666356664566655666656667566685666956670566715667256673566745667556676566775667856679566805668156682566835668456685566865668756688566895669056691566925669356694566955669656697566985669956700567015670256703567045670556706567075670856709567105671156712567135671456715567165671756718567195672056721567225672356724567255672656727567285672956730567315673256733567345673556736567375673856739567405674156742567435674456745567465674756748567495675056751567525675356754567555675656757567585675956760567615676256763567645676556766567675676856769567705677156772567735677456775567765677756778567795678056781567825678356784567855678656787567885678956790567915679256793567945679556796567975679856799568005680156802568035680456805568065680756808568095681056811568125681356814568155681656817568185681956820568215682256823568245682556826568275682856829568305683156832568335683456835568365683756838568395684056841568425684356844568455684656847568485684956850568515685256853568545685556856568575685856859568605686156862568635686456865568665686756868568695687056871568725687356874568755687656877568785687956880568815688256883568845688556886568875688856889568905689156892568935689456895568965689756898568995690056901569025690356904569055690656907569085690956910569115691256913569145691556916569175691856919569205692156922569235692456925569265692756928569295693056931569325693356934569355693656937569385693956940569415694256943569445694556946569475694856949569505695156952569535695456955569565695756958569595696056961569625696356964569655696656967569685696956970569715697256973569745697556976569775697856979569805698156982569835698456985569865698756988569895699056991569925699356994569955699656997569985699957000570015700257003570045700557006570075700857009570105701157012570135701457015570165701757018570195702057021570225702357024570255702657027570285702957030570315703257033570345703557036570375703857039570405704157042570435704457045570465704757048570495705057051570525705357054570555705657057570585705957060570615706257063570645706557066570675706857069570705707157072570735707457075570765707757078570795708057081570825708357084570855708657087570885708957090570915709257093570945709557096570975709857099571005710157102571035710457105571065710757108571095711057111571125711357114571155711657117571185711957120571215712257123571245712557126571275712857129571305713157132571335713457135571365713757138571395714057141571425714357144571455714657147571485714957150571515715257153571545715557156571575715857159571605716157162571635716457165571665716757168571695717057171571725717357174571755717657177571785717957180571815718257183571845718557186571875718857189571905719157192571935719457195571965719757198571995720057201572025720357204572055720657207572085720957210572115721257213572145721557216572175721857219572205722157222572235722457225572265722757228572295723057231572325723357234572355723657237572385723957240572415724257243572445724557246572475724857249572505725157252572535725457255572565725757258572595726057261572625726357264572655726657267572685726957270572715727257273572745727557276572775727857279572805728157282572835728457285572865728757288572895729057291572925729357294572955729657297572985729957300573015730257303573045730557306573075730857309573105731157312573135731457315573165731757318573195732057321573225732357324573255732657327573285732957330573315733257333573345733557336573375733857339573405734157342573435734457345573465734757348573495735057351573525735357354573555735657357573585735957360573615736257363573645736557366573675736857369573705737157372573735737457375573765737757378573795738057381573825738357384573855738657387573885738957390573915739257393573945739557396573975739857399574005740157402574035740457405574065740757408574095741057411574125741357414574155741657417574185741957420574215742257423574245742557426574275742857429574305743157432574335743457435574365743757438574395744057441574425744357444574455744657447574485744957450574515745257453574545745557456574575745857459574605746157462574635746457465574665746757468574695747057471574725747357474574755747657477574785747957480574815748257483574845748557486574875748857489574905749157492574935749457495574965749757498574995750057501575025750357504575055750657507575085750957510575115751257513575145751557516575175751857519575205752157522575235752457525575265752757528575295753057531575325753357534575355753657537575385753957540575415754257543575445754557546575475754857549575505755157552575535755457555575565755757558575595756057561575625756357564575655756657567575685756957570575715757257573575745757557576575775757857579575805758157582575835758457585575865758757588575895759057591575925759357594575955759657597575985759957600576015760257603576045760557606576075760857609576105761157612576135761457615576165761757618576195762057621576225762357624576255762657627576285762957630576315763257633576345763557636576375763857639576405764157642576435764457645576465764757648576495765057651576525765357654576555765657657576585765957660576615766257663576645766557666576675766857669576705767157672576735767457675576765767757678576795768057681576825768357684576855768657687576885768957690576915769257693576945769557696576975769857699577005770157702577035770457705577065770757708577095771057711577125771357714577155771657717577185771957720577215772257723577245772557726577275772857729577305773157732577335773457735577365773757738577395774057741577425774357744577455774657747577485774957750577515775257753577545775557756577575775857759577605776157762577635776457765577665776757768577695777057771577725777357774577755777657777577785777957780577815778257783577845778557786577875778857789577905779157792577935779457795577965779757798577995780057801578025780357804578055780657807578085780957810578115781257813578145781557816578175781857819578205782157822578235782457825578265782757828578295783057831578325783357834578355783657837578385783957840578415784257843578445784557846578475784857849578505785157852578535785457855578565785757858578595786057861578625786357864578655786657867578685786957870578715787257873578745787557876578775787857879578805788157882578835788457885578865788757888578895789057891578925789357894578955789657897578985789957900579015790257903579045790557906579075790857909579105791157912579135791457915579165791757918579195792057921579225792357924579255792657927579285792957930579315793257933579345793557936579375793857939579405794157942579435794457945579465794757948579495795057951579525795357954579555795657957579585795957960579615796257963579645796557966579675796857969579705797157972579735797457975579765797757978579795798057981579825798357984579855798657987579885798957990579915799257993579945799557996579975799857999580005800158002580035800458005580065800758008580095801058011580125801358014580155801658017580185801958020580215802258023580245802558026580275802858029580305803158032580335803458035580365803758038580395804058041580425804358044580455804658047580485804958050580515805258053580545805558056580575805858059580605806158062580635806458065580665806758068580695807058071580725807358074580755807658077580785807958080580815808258083580845808558086580875808858089580905809158092580935809458095580965809758098580995810058101581025810358104581055810658107581085810958110581115811258113581145811558116581175811858119581205812158122581235812458125581265812758128581295813058131581325813358134581355813658137581385813958140581415814258143581445814558146581475814858149581505815158152581535815458155581565815758158581595816058161581625816358164581655816658167581685816958170581715817258173581745817558176581775817858179581805818158182581835818458185581865818758188581895819058191581925819358194581955819658197581985819958200582015820258203582045820558206582075820858209582105821158212582135821458215582165821758218582195822058221582225822358224582255822658227582285822958230582315823258233582345823558236582375823858239582405824158242582435824458245582465824758248582495825058251582525825358254582555825658257582585825958260582615826258263582645826558266582675826858269582705827158272582735827458275582765827758278582795828058281582825828358284582855828658287582885828958290582915829258293582945829558296582975829858299583005830158302583035830458305583065830758308583095831058311583125831358314583155831658317583185831958320583215832258323583245832558326583275832858329583305833158332583335833458335583365833758338583395834058341583425834358344583455834658347583485834958350583515835258353583545835558356583575835858359583605836158362583635836458365583665836758368583695837058371583725837358374583755837658377583785837958380583815838258383583845838558386583875838858389583905839158392583935839458395583965839758398583995840058401584025840358404584055840658407584085840958410584115841258413
  1. /* OggEnc
  2. *
  3. * This program is distributed under the GNU General Public License, version 2.
  4. * A copy of this license is included with this source.
  5. *
  6. * Copyright 2000-2002, Michael Smith <msmith@xiph.org>
  7. *
  8. * Portions from Vorbize, (c) Kenneth Arnold <kcarnold@yahoo.com>
  9. * and libvorbis examples, (c) Monty <monty@xiph.org>
  10. */
  11. #include <alloca.h>
  12. #include <assert.h>
  13. #include <ctype.h>
  14. #include <errno.h>
  15. #include <fcntl.h>
  16. #include <locale.h>
  17. #include <math.h>
  18. #include <stdarg.h>
  19. #include <stdio.h>
  20. #include <stdlib.h>
  21. #include <string.h>
  22. #include <sys/stat.h>
  23. #include <sys/time.h>
  24. #include <sys/types.h>
  25. #include <time.h>
  26. #include <unistd.h>
  27. struct option
  28. {
  29. # if (defined __STDC__ && __STDC__) || defined __cplusplus
  30. const char *name;
  31. # else
  32. char *name;
  33. # endif
  34. /* has_arg can't be an enum because some compilers complain about
  35. type mismatches in all the code that assumes it is an int. */
  36. int has_arg;
  37. int *flag;
  38. int val;
  39. };
  40. # define no_argument 0
  41. # define required_argument 1
  42. # define optional_argument 2
  43. extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
  44. extern int getopt_long (int ___argc, char *const *___argv,
  45. const char *__shortopts,
  46. const struct option *__longopts, int *__longind);
  47. extern int getopt_long_only (int ___argc, char *const *___argv,
  48. const char *__shortopts,
  49. const struct option *__longopts, int *__longind);
  50. extern int _getopt_internal (int ___argc, char *const *___argv,
  51. const char *__shortopts,
  52. const struct option *__longopts, int *__longind,
  53. int __long_only);
  54. #define setbinmode(x) {}
  55. #define DEFAULT_NAMEFMT_REMOVE "/"
  56. #define DEFAULT_NAMEFMT_REPLACE NULL
  57. #define __ENCODE_H
  58. /********************************************************************
  59. * *
  60. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  61. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  62. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  63. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  64. * *
  65. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
  66. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  67. ********************************************************************
  68. function: libvorbis codec headers
  69. last mod: $Id: codec.h,v 1.45 2003/09/05 22:34:46 giles Exp $
  70. ********************************************************************/
  71. #define _vorbis_codec_h_
  72. /********************************************************************
  73. * *
  74. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  75. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  76. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  77. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  78. * *
  79. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  80. * by the Xiph.Org Foundation http://www.xiph.org/ *
  81. * *
  82. ********************************************************************
  83. function: toplevel libogg include
  84. last mod: $Id: ogg.h,v 1.19 2002/09/15 23:48:02 xiphmont Exp $
  85. ********************************************************************/
  86. #define _OGG_H
  87. /********************************************************************
  88. * *
  89. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  90. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  91. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  92. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  93. * *
  94. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  95. * by the Xiph.Org Foundation http://www.xiph.org/ *
  96. * *
  97. ********************************************************************
  98. function: #ifdef jail to whip a few platforms into the UNIX ideal.
  99. last mod: $Id: os_types.h,v 1.14 2003/09/02 05:09:14 xiphmont Exp $
  100. ********************************************************************/
  101. #define _OS_TYPES_H
  102. /* make it easy on the folks that want to compile the libs with a
  103. different malloc than stdlib */
  104. #define _ogg_malloc malloc
  105. #define _ogg_calloc calloc
  106. #define _ogg_realloc realloc
  107. #define _ogg_free free
  108. #define __CONFIG_TYPES_H__
  109. /* these are filled in by configure */
  110. typedef int16_t ogg_int16_t;
  111. typedef u_int16_t ogg_uint16_t;
  112. typedef int32_t ogg_int32_t;
  113. typedef u_int32_t ogg_uint32_t;
  114. typedef int64_t ogg_int64_t;
  115. typedef struct {
  116. long endbyte;
  117. int endbit;
  118. unsigned char *buffer;
  119. unsigned char *ptr;
  120. long storage;
  121. } oggpack_buffer;
  122. /* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/
  123. typedef struct {
  124. unsigned char *header;
  125. long header_len;
  126. unsigned char *body;
  127. long body_len;
  128. } ogg_page;
  129. /* ogg_stream_state contains the current encode/decode state of a logical
  130. Ogg bitstream **********************************************************/
  131. typedef struct {
  132. unsigned char *body_data; /* bytes from packet bodies */
  133. long body_storage; /* storage elements allocated */
  134. long body_fill; /* elements stored; fill mark */
  135. long body_returned; /* elements of fill returned */
  136. int *lacing_vals; /* The values that will go to the segment table */
  137. ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
  138. this way, but it is simple coupled to the
  139. lacing fifo */
  140. long lacing_storage;
  141. long lacing_fill;
  142. long lacing_packet;
  143. long lacing_returned;
  144. unsigned char header[282]; /* working space for header encode */
  145. int header_fill;
  146. int e_o_s; /* set when we have buffered the last packet in the
  147. logical bitstream */
  148. int b_o_s; /* set after we've written the initial page
  149. of a logical bitstream */
  150. long serialno;
  151. long pageno;
  152. ogg_int64_t packetno; /* sequence number for decode; the framing
  153. knows where there's a hole in the data,
  154. but we need coupling so that the codec
  155. (which is in a seperate abstraction
  156. layer) also knows about the gap */
  157. ogg_int64_t granulepos;
  158. } ogg_stream_state;
  159. /* ogg_packet is used to encapsulate the data and metadata belonging
  160. to a single raw Ogg/Vorbis packet *************************************/
  161. typedef struct {
  162. unsigned char *packet;
  163. long bytes;
  164. long b_o_s;
  165. long e_o_s;
  166. ogg_int64_t granulepos;
  167. ogg_int64_t packetno; /* sequence number for decode; the framing
  168. knows where there's a hole in the data,
  169. but we need coupling so that the codec
  170. (which is in a seperate abstraction
  171. layer) also knows about the gap */
  172. } ogg_packet;
  173. typedef struct {
  174. unsigned char *data;
  175. int storage;
  176. int fill;
  177. int returned;
  178. int unsynced;
  179. int headerbytes;
  180. int bodybytes;
  181. } ogg_sync_state;
  182. /* Ogg BITSTREAM PRIMITIVES: bitstream ************************/
  183. extern void oggpack_writeinit(oggpack_buffer *b);
  184. extern void oggpack_writetrunc(oggpack_buffer *b,long bits);
  185. extern void oggpack_writealign(oggpack_buffer *b);
  186. extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits);
  187. extern void oggpack_reset(oggpack_buffer *b);
  188. extern void oggpack_writeclear(oggpack_buffer *b);
  189. extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
  190. extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits);
  191. extern long oggpack_look(oggpack_buffer *b,int bits);
  192. extern long oggpack_look1(oggpack_buffer *b);
  193. extern void oggpack_adv(oggpack_buffer *b,int bits);
  194. extern void oggpack_adv1(oggpack_buffer *b);
  195. extern long oggpack_read(oggpack_buffer *b,int bits);
  196. extern long oggpack_read1(oggpack_buffer *b);
  197. extern long oggpack_bytes(oggpack_buffer *b);
  198. extern long oggpack_bits(oggpack_buffer *b);
  199. extern unsigned char *oggpack_get_buffer(oggpack_buffer *b);
  200. extern void oggpackB_writeinit(oggpack_buffer *b);
  201. extern void oggpackB_writetrunc(oggpack_buffer *b,long bits);
  202. extern void oggpackB_writealign(oggpack_buffer *b);
  203. extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits);
  204. extern void oggpackB_reset(oggpack_buffer *b);
  205. extern void oggpackB_writeclear(oggpack_buffer *b);
  206. extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
  207. extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits);
  208. extern long oggpackB_look(oggpack_buffer *b,int bits);
  209. extern long oggpackB_look1(oggpack_buffer *b);
  210. extern void oggpackB_adv(oggpack_buffer *b,int bits);
  211. extern void oggpackB_adv1(oggpack_buffer *b);
  212. extern long oggpackB_read(oggpack_buffer *b,int bits);
  213. extern long oggpackB_read1(oggpack_buffer *b);
  214. extern long oggpackB_bytes(oggpack_buffer *b);
  215. extern long oggpackB_bits(oggpack_buffer *b);
  216. extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b);
  217. /* Ogg BITSTREAM PRIMITIVES: encoding **************************/
  218. extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op);
  219. extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og);
  220. extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og);
  221. /* Ogg BITSTREAM PRIMITIVES: decoding **************************/
  222. extern int ogg_sync_init(ogg_sync_state *oy);
  223. extern int ogg_sync_clear(ogg_sync_state *oy);
  224. extern int ogg_sync_reset(ogg_sync_state *oy);
  225. extern int ogg_sync_destroy(ogg_sync_state *oy);
  226. extern char *ogg_sync_buffer(ogg_sync_state *oy, long size);
  227. extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes);
  228. extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og);
  229. extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og);
  230. extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og);
  231. extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
  232. extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op);
  233. /* Ogg BITSTREAM PRIMITIVES: general ***************************/
  234. extern int ogg_stream_init(ogg_stream_state *os,int serialno);
  235. extern int ogg_stream_clear(ogg_stream_state *os);
  236. extern int ogg_stream_reset(ogg_stream_state *os);
  237. extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno);
  238. extern int ogg_stream_destroy(ogg_stream_state *os);
  239. extern int ogg_stream_eos(ogg_stream_state *os);
  240. extern void ogg_page_checksum_set(ogg_page *og);
  241. extern int ogg_page_version(ogg_page *og);
  242. extern int ogg_page_continued(ogg_page *og);
  243. extern int ogg_page_bos(ogg_page *og);
  244. extern int ogg_page_eos(ogg_page *og);
  245. extern ogg_int64_t ogg_page_granulepos(ogg_page *og);
  246. extern int ogg_page_serialno(ogg_page *og);
  247. extern long ogg_page_pageno(ogg_page *og);
  248. extern int ogg_page_packets(ogg_page *og);
  249. extern void ogg_packet_clear(ogg_packet *op);
  250. typedef struct vorbis_info{
  251. int version;
  252. int channels;
  253. long rate;
  254. /* The below bitrate declarations are *hints*.
  255. Combinations of the three values carry the following implications:
  256. all three set to the same value:
  257. implies a fixed rate bitstream
  258. only nominal set:
  259. implies a VBR stream that averages the nominal bitrate. No hard
  260. upper/lower limit
  261. upper and or lower set:
  262. implies a VBR bitstream that obeys the bitrate limits. nominal
  263. may also be set to give a nominal rate.
  264. none set:
  265. the coder does not care to speculate.
  266. */
  267. long bitrate_upper;
  268. long bitrate_nominal;
  269. long bitrate_lower;
  270. long bitrate_window;
  271. void *codec_setup;
  272. } vorbis_info;
  273. /* vorbis_dsp_state buffers the current vorbis audio
  274. analysis/synthesis state. The DSP state belongs to a specific
  275. logical bitstream ****************************************************/
  276. typedef struct vorbis_dsp_state{
  277. int analysisp;
  278. vorbis_info *vi;
  279. float **pcm;
  280. float **pcmret;
  281. int pcm_storage;
  282. int pcm_current;
  283. int pcm_returned;
  284. int preextrapolate;
  285. int eofflag;
  286. long lW;
  287. long W;
  288. long nW;
  289. long centerW;
  290. ogg_int64_t granulepos;
  291. ogg_int64_t sequence;
  292. ogg_int64_t glue_bits;
  293. ogg_int64_t time_bits;
  294. ogg_int64_t floor_bits;
  295. ogg_int64_t res_bits;
  296. void *backend_state;
  297. } vorbis_dsp_state;
  298. typedef struct vorbis_block{
  299. /* necessary stream state for linking to the framing abstraction */
  300. float **pcm; /* this is a pointer into local storage */
  301. oggpack_buffer opb;
  302. long lW;
  303. long W;
  304. long nW;
  305. int pcmend;
  306. int mode;
  307. int eofflag;
  308. ogg_int64_t granulepos;
  309. ogg_int64_t sequence;
  310. vorbis_dsp_state *vd; /* For read-only access of configuration */
  311. /* local storage to avoid remallocing; it's up to the mapping to
  312. structure it */
  313. void *localstore;
  314. long localtop;
  315. long localalloc;
  316. long totaluse;
  317. struct alloc_chain *reap;
  318. /* bitmetrics for the frame */
  319. long glue_bits;
  320. long time_bits;
  321. long floor_bits;
  322. long res_bits;
  323. void *internal;
  324. } vorbis_block;
  325. /* vorbis_block is a single block of data to be processed as part of
  326. the analysis/synthesis stream; it belongs to a specific logical
  327. bitstream, but is independant from other vorbis_blocks belonging to
  328. that logical bitstream. *************************************************/
  329. struct alloc_chain{
  330. void *ptr;
  331. struct alloc_chain *next;
  332. };
  333. /* vorbis_info contains all the setup information specific to the
  334. specific compression/decompression mode in progress (eg,
  335. psychoacoustic settings, channel setup, options, codebook
  336. etc). vorbis_info and substructures are in backends.h.
  337. *********************************************************************/
  338. /* the comments are not part of vorbis_info so that vorbis_info can be
  339. static storage */
  340. typedef struct vorbis_comment{
  341. /* unlimited user comment fields. libvorbis writes 'libvorbis'
  342. whatever vendor is set to in encode */
  343. char **user_comments;
  344. int *comment_lengths;
  345. int comments;
  346. char *vendor;
  347. } vorbis_comment;
  348. /* libvorbis encodes in two abstraction layers; first we perform DSP
  349. and produce a packet (see docs/analysis.txt). The packet is then
  350. coded into a framed OggSquish bitstream by the second layer (see
  351. docs/framing.txt). Decode is the reverse process; we sync/frame
  352. the bitstream and extract individual packets, then decode the
  353. packet back into PCM audio.
  354. The extra framing/packetizing is used in streaming formats, such as
  355. files. Over the net (such as with UDP), the framing and
  356. packetization aren't necessary as they're provided by the transport
  357. and the streaming layer is not used */
  358. /* Vorbis PRIMITIVES: general ***************************************/
  359. extern void vorbis_info_init(vorbis_info *vi);
  360. extern void vorbis_info_clear(vorbis_info *vi);
  361. extern int vorbis_info_blocksize(vorbis_info *vi,int zo);
  362. extern void vorbis_comment_init(vorbis_comment *vc);
  363. extern void vorbis_comment_add(vorbis_comment *vc, char *comment);
  364. extern void vorbis_comment_add_tag(vorbis_comment *vc,
  365. char *tag, char *contents);
  366. extern char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count);
  367. extern int vorbis_comment_query_count(vorbis_comment *vc, char *tag);
  368. extern void vorbis_comment_clear(vorbis_comment *vc);
  369. extern int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb);
  370. extern int vorbis_block_clear(vorbis_block *vb);
  371. extern void vorbis_dsp_clear(vorbis_dsp_state *v);
  372. extern double vorbis_granule_time(vorbis_dsp_state *v,
  373. ogg_int64_t granulepos);
  374. /* Vorbis PRIMITIVES: analysis/DSP layer ****************************/
  375. extern int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi);
  376. extern int vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op);
  377. extern int vorbis_analysis_headerout(vorbis_dsp_state *v,
  378. vorbis_comment *vc,
  379. ogg_packet *op,
  380. ogg_packet *op_comm,
  381. ogg_packet *op_code);
  382. extern float **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals);
  383. extern int vorbis_analysis_wrote(vorbis_dsp_state *v,int vals);
  384. extern int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb);
  385. extern int vorbis_analysis(vorbis_block *vb,ogg_packet *op);
  386. extern int vorbis_bitrate_addblock(vorbis_block *vb);
  387. extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,
  388. ogg_packet *op);
  389. /* Vorbis PRIMITIVES: synthesis layer *******************************/
  390. extern int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,
  391. ogg_packet *op);
  392. extern int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi);
  393. extern int vorbis_synthesis_restart(vorbis_dsp_state *v);
  394. extern int vorbis_synthesis(vorbis_block *vb,ogg_packet *op);
  395. extern int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op);
  396. extern int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb);
  397. extern int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm);
  398. extern int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm);
  399. extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples);
  400. extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op);
  401. extern int vorbis_synthesis_halfrate(vorbis_info *v,int flag);
  402. extern int vorbis_synthesis_halfrate_p(vorbis_info *v);
  403. /* Vorbis ERRORS and return codes ***********************************/
  404. #define OV_FALSE -1
  405. #define OV_EOF -2
  406. #define OV_HOLE -3
  407. #define OV_EREAD -128
  408. #define OV_EFAULT -129
  409. #define OV_EIMPL -130
  410. #define OV_EINVAL -131
  411. #define OV_ENOTVORBIS -132
  412. #define OV_EBADHEADER -133
  413. #define OV_EVERSION -134
  414. #define OV_ENOTAUDIO -135
  415. #define OV_EBADPACKET -136
  416. #define OV_EBADLINK -137
  417. #define OV_ENOSEEK -138
  418. typedef void TIMER;
  419. typedef long (*audio_read_func)(void *src, float **buffer, int samples);
  420. typedef void (*progress_func)(char *fn, long totalsamples,
  421. long samples, double time);
  422. typedef void (*enc_end_func)(char *fn, double time, int rate,
  423. long samples, long bytes);
  424. typedef void (*enc_start_func)(char *fn, char *outfn, int bitrate,
  425. float quality, int qset, int managed, int min_br, int max_br);
  426. typedef void (*error_func)(char *errormessage);
  427. void *timer_start(void);
  428. double timer_time(void *);
  429. void timer_clear(void *);
  430. int create_directories(char *);
  431. void update_statistics_full(char *fn, long total, long done, double time);
  432. void update_statistics_notime(char *fn, long total, long done, double time);
  433. void update_statistics_null(char *fn, long total, long done, double time);
  434. void start_encode_full(char *fn, char *outfn, int bitrate, float quality, int qset,
  435. int managed, int min, int max);
  436. void start_encode_null(char *fn, char *outfn, int bitrate, float quality, int qset,
  437. int managed, int min, int max);
  438. void final_statistics(char *fn, double time, int rate, long total_samples,
  439. long bytes);
  440. void final_statistics_null(char *fn, double time, int rate, long total_samples,
  441. long bytes);
  442. void encode_error(char *errmsg);
  443. typedef struct {
  444. char *arg;
  445. char *val;
  446. } adv_opt;
  447. typedef struct
  448. {
  449. char **title;
  450. int title_count;
  451. char **artist;
  452. int artist_count;
  453. char **album;
  454. int album_count;
  455. char **comments;
  456. int comment_count;
  457. char **tracknum;
  458. int track_count;
  459. char **dates;
  460. int date_count;
  461. char **genre;
  462. int genre_count;
  463. adv_opt *advopt;
  464. int advopt_count;
  465. int copy_comments;
  466. int quiet;
  467. int rawmode;
  468. int raw_samplesize;
  469. int raw_samplerate;
  470. int raw_channels;
  471. int raw_endianness;
  472. char *namefmt;
  473. char *namefmt_remove;
  474. char *namefmt_replace;
  475. char *outfile;
  476. /* All 3 in kbps */
  477. int managed;
  478. int min_bitrate;
  479. int nominal_bitrate;
  480. int max_bitrate;
  481. /* Float from 0 to 1 (low->high) */
  482. float quality;
  483. int quality_set;
  484. int resamplefreq;
  485. int downmix;
  486. float scale;
  487. unsigned int serial;
  488. } oe_options;
  489. typedef struct
  490. {
  491. vorbis_comment *comments;
  492. unsigned int serialno;
  493. audio_read_func read_samples;
  494. progress_func progress_update;
  495. enc_end_func end_encode;
  496. enc_start_func start_encode;
  497. error_func error;
  498. void *readdata;
  499. long total_samples_per_channel;
  500. int channels;
  501. long rate;
  502. int samplesize;
  503. int endianness;
  504. int resamplefreq;
  505. int copy_comments;
  506. /* Various bitrate/quality options */
  507. int managed;
  508. int bitrate;
  509. int min_bitrate;
  510. int max_bitrate;
  511. float quality;
  512. int quality_set;
  513. adv_opt *advopt;
  514. int advopt_count;
  515. FILE *out;
  516. char *filename;
  517. char *infilename;
  518. } oe_enc_opt;
  519. int oe_encode(oe_enc_opt *opt);
  520. #define __AUDIO_H
  521. int setup_resample(oe_enc_opt *opt);
  522. void clear_resample(oe_enc_opt *opt);
  523. void setup_downmix(oe_enc_opt *opt);
  524. void clear_downmix(oe_enc_opt *opt);
  525. void setup_scaler(oe_enc_opt *opt, float scale);
  526. void clear_scaler(oe_enc_opt *opt);
  527. typedef struct
  528. {
  529. int (*id_func)(unsigned char *buf, int len); /* Returns true if can load file */
  530. int id_data_len; /* Amount of data needed to id whether this can load the file */
  531. int (*open_func)(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen);
  532. void (*close_func)(void *);
  533. char *format;
  534. char *description;
  535. } input_format;
  536. typedef struct {
  537. short format;
  538. short channels;
  539. int samplerate;
  540. int bytespersec;
  541. short align;
  542. short samplesize;
  543. } wav_fmt;
  544. typedef struct {
  545. short channels;
  546. short samplesize;
  547. long totalsamples;
  548. long samplesread;
  549. FILE *f;
  550. short bigendian;
  551. } wavfile;
  552. typedef struct {
  553. short channels;
  554. int totalframes;
  555. short samplesize;
  556. int rate;
  557. int offset;
  558. int blocksize;
  559. } aiff_fmt;
  560. typedef wavfile aifffile; /* They're the same */
  561. input_format *open_audio_file(FILE *in, oe_enc_opt *opt);
  562. int raw_open(FILE *in, oe_enc_opt *opt);
  563. int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen);
  564. int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen);
  565. int wav_id(unsigned char *buf, int len);
  566. int aiff_id(unsigned char *buf, int len);
  567. void wav_close(void *);
  568. void raw_close(void *);
  569. long wav_read(void *, float **buffer, int samples);
  570. long wav_ieee_read(void *, float **buffer, int samples);
  571. long raw_read_stereo(void *, float **buffer, int samples);
  572. #define _(X) (X)
  573. #define textdomain(X)
  574. #define bindtextdomain(X, Y)
  575. #define N_(X) (X)
  576. #define VERSION_STRING "OggEnc v1.0.1 (libvorbis 1.0.1)\n"
  577. #define COPYRIGHT "(c) 2000-2003 Michael Smith <msmith@xiph.org>\n"
  578. #define CHUNK 4096 /* We do reads, etc. in multiples of this */
  579. struct option long_options[] = {
  580. {"quiet",0,0,'Q'},
  581. {"help",0,0,'h'},
  582. {"comment",1,0,'c'},
  583. {"artist",1,0,'a'},
  584. {"album",1,0,'l'},
  585. {"title",1,0,'t'},
  586. {"genre",1,0,'G'},
  587. {"names",1,0,'n'},
  588. {"name-remove",1,0,'X'},
  589. {"name-replace",1,0,'P'},
  590. {"output",1,0,'o'},
  591. {"version",0,0,'v'},
  592. {"raw",0,0,'r'},
  593. {"raw-bits",1,0,'B'},
  594. {"raw-chan",1,0,'C'},
  595. {"raw-rate",1,0,'R'},
  596. {"raw-endianness",1,0, 0},
  597. {"bitrate",1,0,'b'},
  598. {"min-bitrate",1,0,'m'},
  599. {"max-bitrate",1,0,'M'},
  600. {"quality",1,0,'q'},
  601. {"date",1,0,'d'},
  602. {"tracknum",1,0,'N'},
  603. {"serial",1,0,'s'},
  604. {"managed", 0, 0, 0},
  605. {"resample",1,0,0},
  606. {"downmix", 0,0,0},
  607. {"scale", 1, 0, 0},
  608. {"advanced-encode-option", 1, 0, 0},
  609. {"discard-comments", 0, 0, 0},
  610. {NULL,0,0,0}
  611. };
  612. static char *generate_name_string(char *format, char *remove_list,
  613. char *replace_list, char *artist, char *title, char *album,
  614. char *track, char *date, char *genre);
  615. static void parse_options(int argc, char **argv, oe_options *opt);
  616. static void build_comments(vorbis_comment *vc, oe_options *opt, int filenum,
  617. char **artist,char **album, char **title, char **tracknum, char **date,
  618. char **genre);
  619. static void usage(void);
  620. int main(int argc, char **argv)
  621. {
  622. /* Default values */
  623. oe_options opt = {NULL, 0, NULL, 0, NULL, 0, NULL, 0, NULL,
  624. 0, NULL, 0, NULL, 0, NULL, 0, 1, 0, 0,16,44100,2, 0, NULL,
  625. DEFAULT_NAMEFMT_REMOVE, DEFAULT_NAMEFMT_REPLACE,
  626. NULL, 0, -1,-1,-1,.3,-1,0, 0,0.f, 0};
  627. int i;
  628. char **infiles;
  629. int numfiles;
  630. int errors=0;
  631. parse_options(argc, argv, &opt);
  632. if(optind >= argc)
  633. {
  634. fprintf(stderr, _("%s%s\nERROR: No input files specified. Use -h for help.\n"), VERSION_STRING, COPYRIGHT);
  635. return 1;
  636. }
  637. else
  638. {
  639. infiles = argv + optind;
  640. numfiles = argc - optind;
  641. }
  642. /* Now, do some checking for illegal argument combinations */
  643. for(i = 0; i < numfiles; i++)
  644. {
  645. if(!strcmp(infiles[i], "-") && numfiles > 1)
  646. {
  647. fprintf(stderr, _("ERROR: Multiple files specified when using stdin\n"));
  648. exit(1);
  649. }
  650. }
  651. if(numfiles > 1 && opt.outfile)
  652. {
  653. fprintf(stderr, _("ERROR: Multiple input files with specified output filename: suggest using -n\n"));
  654. exit(1);
  655. }
  656. if(opt.serial == 0)
  657. {
  658. /* We randomly pick a serial number. This is then incremented for each file */
  659. srand(time(NULL));
  660. opt.serial = rand();
  661. }
  662. for(i = 0; i < numfiles; i++)
  663. {
  664. /* Once through the loop for each file */
  665. oe_enc_opt enc_opts;
  666. vorbis_comment vc;
  667. char *out_fn = NULL;
  668. FILE *in, *out = NULL;
  669. int foundformat = 0;
  670. int closeout = 0, closein = 0;
  671. char *artist=NULL, *album=NULL, *title=NULL, *track=NULL;
  672. char *date=NULL, *genre=NULL;
  673. input_format *format;
  674. /* Set various encoding defaults */
  675. enc_opts.serialno = opt.serial++;
  676. enc_opts.progress_update = update_statistics_full;
  677. enc_opts.start_encode = start_encode_full;
  678. enc_opts.end_encode = final_statistics;
  679. enc_opts.error = encode_error;
  680. enc_opts.comments = &vc;
  681. enc_opts.copy_comments = opt.copy_comments;
  682. /* OK, let's build the vorbis_comments structure */
  683. build_comments(&vc, &opt, i, &artist, &album, &title, &track,
  684. &date, &genre);
  685. if(!strcmp(infiles[i], "-"))
  686. {
  687. setbinmode(stdin);
  688. in = stdin;
  689. infiles[i] = NULL;
  690. if(!opt.outfile)
  691. {
  692. setbinmode(stdout);
  693. out = stdout;
  694. }
  695. }
  696. else
  697. {
  698. in = fopen(infiles[i], "rb");
  699. if(in == NULL)
  700. {
  701. fprintf(stderr, _("ERROR: Cannot open input file \"%s\": %s\n"), infiles[i], strerror(errno));
  702. free(out_fn);
  703. errors++;
  704. continue;
  705. }
  706. closein = 1;
  707. }
  708. /* Now, we need to select an input audio format - we do this before opening
  709. the output file so that we don't end up with a 0-byte file if the input
  710. file can't be read */
  711. if(opt.rawmode)
  712. {
  713. enc_opts.rate=opt.raw_samplerate;
  714. enc_opts.channels=opt.raw_channels;
  715. enc_opts.samplesize=opt.raw_samplesize;
  716. enc_opts.endianness=opt.raw_endianness;
  717. raw_open(in, &enc_opts);
  718. foundformat=1;
  719. }
  720. else
  721. {
  722. format = open_audio_file(in, &enc_opts);
  723. if(format)
  724. {
  725. if(!opt.quiet)
  726. fprintf(stderr, _("Opening with %s module: %s\n"),
  727. format->format, format->description);
  728. foundformat=1;
  729. }
  730. }
  731. if(!foundformat)
  732. {
  733. fprintf(stderr, _("ERROR: Input file \"%s\" is not a supported format\n"), infiles[i]?infiles[i]:"(stdin)");
  734. if(closein)
  735. fclose(in);
  736. errors++;
  737. continue;
  738. }
  739. /* Ok. We can read the file - so now open the output file */
  740. if(opt.outfile && !strcmp(opt.outfile, "-"))
  741. {
  742. setbinmode(stdout);
  743. out = stdout;
  744. }
  745. else if(out == NULL)
  746. {
  747. if(opt.outfile)
  748. {
  749. out_fn = strdup(opt.outfile);
  750. }
  751. else if(opt.namefmt)
  752. {
  753. out_fn = generate_name_string(opt.namefmt, opt.namefmt_remove,
  754. opt.namefmt_replace, artist, title, album, track,date,
  755. genre);
  756. }
  757. /* This bit was widely derided in mid-2002, so it's been removed */
  758. /*
  759. else if(opt.title)
  760. {
  761. out_fn = malloc(strlen(title) + 5);
  762. strcpy(out_fn, title);
  763. strcat(out_fn, ".ogg");
  764. }
  765. */
  766. else if(infiles[i])
  767. {
  768. /* Create a filename from existing filename, replacing extension with .ogg */
  769. char *start, *end;
  770. start = infiles[i];
  771. end = strrchr(infiles[i], '.');
  772. end = end?end:(start + strlen(infiles[i])+1);
  773. out_fn = malloc(end - start + 5);
  774. strncpy(out_fn, start, end-start);
  775. out_fn[end-start] = 0;
  776. strcat(out_fn, ".ogg");
  777. }
  778. else {
  779. fprintf(stderr, _("WARNING: No filename, defaulting to \"default.ogg\"\n"));
  780. out_fn = strdup("default.ogg");
  781. }
  782. /* Create any missing subdirectories, if possible */
  783. if(create_directories(out_fn)) {
  784. if(closein)
  785. fclose(in);
  786. fprintf(stderr, _("ERROR: Could not create required subdirectories for output filename \"%s\"\n"), out_fn);
  787. errors++;
  788. free(out_fn);
  789. continue;
  790. }
  791. out = fopen(out_fn, "wb");
  792. if(out == NULL)
  793. {
  794. if(closein)
  795. fclose(in);
  796. fprintf(stderr, _("ERROR: Cannot open output file \"%s\": %s\n"), out_fn, strerror(errno));
  797. errors++;
  798. free(out_fn);
  799. continue;
  800. }
  801. closeout = 1;
  802. }
  803. /* Now, set the rest of the options */
  804. enc_opts.out = out;
  805. enc_opts.comments = &vc;
  806. enc_opts.filename = out_fn;
  807. enc_opts.infilename = infiles[i];
  808. enc_opts.managed = opt.managed;
  809. enc_opts.bitrate = opt.nominal_bitrate;
  810. enc_opts.min_bitrate = opt.min_bitrate;
  811. enc_opts.max_bitrate = opt.max_bitrate;
  812. enc_opts.quality = opt.quality;
  813. enc_opts.quality_set = opt.quality_set;
  814. enc_opts.advopt = opt.advopt;
  815. enc_opts.advopt_count = opt.advopt_count;
  816. if(opt.resamplefreq && opt.resamplefreq != enc_opts.rate) {
  817. int fromrate = enc_opts.rate;
  818. enc_opts.resamplefreq = opt.resamplefreq;
  819. if(setup_resample(&enc_opts)) {
  820. errors++;
  821. goto clear_all;
  822. }
  823. else if(!opt.quiet)
  824. fprintf(stderr, _("Resampling input from %d Hz to %d Hz\n"), fromrate, opt.resamplefreq);
  825. }
  826. if(opt.downmix) {
  827. if(enc_opts.channels == 2) {
  828. setup_downmix(&enc_opts);
  829. if(!opt.quiet)
  830. fprintf(stderr, _("Downmixing stereo to mono\n"));
  831. }
  832. else {
  833. fprintf(stderr, _("ERROR: Can't downmix except from stereo to mono\n"));
  834. errors++;
  835. if(opt.resamplefreq && opt.resamplefreq != enc_opts.rate)
  836. clear_resample(&enc_opts);
  837. goto clear_all;
  838. }
  839. }
  840. if(opt.scale > 0.f) {
  841. setup_scaler(&enc_opts, opt.scale);
  842. if(!opt.quiet)
  843. fprintf(stderr, _("Scaling input to %f\n"), opt.scale);
  844. }
  845. if(!enc_opts.total_samples_per_channel)
  846. enc_opts.progress_update = update_statistics_notime;
  847. if(opt.quiet)
  848. {
  849. enc_opts.start_encode = start_encode_null;
  850. enc_opts.progress_update = update_statistics_null;
  851. enc_opts.end_encode = final_statistics_null;
  852. }
  853. if(oe_encode(&enc_opts))
  854. errors++;
  855. if(opt.scale > 0)
  856. clear_scaler(&enc_opts);
  857. if(opt.downmix)
  858. clear_downmix(&enc_opts);
  859. if(opt.resamplefreq && opt.resamplefreq != enc_opts.rate)
  860. clear_resample(&enc_opts);
  861. clear_all:
  862. if(out_fn) free(out_fn);
  863. if(opt.outfile) free(opt.outfile);
  864. vorbis_comment_clear(&vc);
  865. if(!opt.rawmode)
  866. format->close_func(enc_opts.readdata);
  867. if(closein)
  868. fclose(in);
  869. if(closeout)
  870. fclose(out);
  871. }/* Finished this file, loop around to next... */
  872. return errors?1:0;
  873. }
  874. static void usage(void)
  875. {
  876. fprintf(stdout,
  877. _("%s%s\n"
  878. "Usage: oggenc [options] input.wav [...]\n"
  879. "\n"
  880. "OPTIONS:\n"
  881. " General:\n"
  882. " -Q, --quiet Produce no output to stderr\n"
  883. " -h, --help Print this help text\n"
  884. " -r, --raw Raw mode. Input files are read directly as PCM data\n"
  885. " -B, --raw-bits=n Set bits/sample for raw input. Default is 16\n"
  886. " -C, --raw-chan=n Set number of channels for raw input. Default is 2\n"
  887. " -R, --raw-rate=n Set samples/sec for raw input. Default is 44100\n"
  888. " --raw-endianness 1 for bigendian, 0 for little (defaults to 0)\n"
  889. " -b, --bitrate Choose a nominal bitrate to encode at. Attempt\n"
  890. " to encode at a bitrate averaging this. Takes an\n"
  891. " argument in kbps. This uses the bitrate management\n"
  892. " engine, and is not recommended for most users.\n"
  893. " See -q, --quality for a better alternative.\n"
  894. " -m, --min-bitrate Specify a minimum bitrate (in kbps). Useful for\n"
  895. " encoding for a fixed-size channel.\n"
  896. " -M, --max-bitrate Specify a maximum bitrate in kbps. Useful for\n"
  897. " streaming applications.\n"
  898. " -q, --quality Specify quality between 0 (low) and 10 (high),\n"
  899. " instead of specifying a particular bitrate.\n"
  900. " This is the normal mode of operation.\n"
  901. " Fractional qualities (e.g. 2.75) are permitted\n"
  902. " Quality -1 is also possible, but may not be of\n"
  903. " acceptable quality.\n"
  904. " --resample n Resample input data to sampling rate n (Hz)\n"
  905. " --downmix Downmix stereo to mono. Only allowed on stereo\n"
  906. " input.\n"
  907. " -s, --serial Specify a serial number for the stream. If encoding\n"
  908. " multiple files, this will be incremented for each\n"
  909. " stream after the first.\n"
  910. " --discard-comments Prevents comments in FLAC and Ogg FLAC files from\n"
  911. " being copied to the output Ogg Vorbis file.\n"
  912. "\n"
  913. " Naming:\n"
  914. " -o, --output=fn Write file to fn (only valid in single-file mode)\n"
  915. " -n, --names=string Produce filenames as this string, with %%a, %%t, %%l,\n"
  916. " %%n, %%d replaced by artist, title, album, track number,\n"
  917. " and date, respectively (see below for specifying these).\n"
  918. " %%%% gives a literal %%.\n"
  919. " -X, --name-remove=s Remove the specified characters from parameters to the\n"
  920. " -n format string. Useful to ensure legal filenames.\n"
  921. " -P, --name-replace=s Replace characters removed by --name-remove with the\n"
  922. " characters specified. If this string is shorter than the\n"
  923. " --name-remove list or is not specified, the extra\n"
  924. " characters are just removed.\n"
  925. " Default settings for the above two arguments are platform\n"
  926. " specific.\n"
  927. " -c, --comment=c Add the given string as an extra comment. This may be\n"
  928. " used multiple times. The argument should be in the\n"
  929. " format \"tag=value\".\n"
  930. " -d, --date Date for track (usually date of performance)\n"
  931. " -N, --tracknum Track number for this track\n"
  932. " -t, --title Title for this track\n"
  933. " -l, --album Name of album\n"
  934. " -a, --artist Name of artist\n"
  935. " -G, --genre Genre of track\n"
  936. " If multiple input files are given, then multiple\n"
  937. " instances of the previous five arguments will be used,\n"
  938. " in the order they are given. If fewer titles are\n"
  939. " specified than files, OggEnc will print a warning, and\n"
  940. " reuse the final one for the remaining files. If fewer\n"
  941. " track numbers are given, the remaining files will be\n"
  942. " unnumbered. For the others, the final tag will be reused\n"
  943. " for all others without warning (so you can specify a date\n"
  944. " once, for example, and have it used for all the files)\n"
  945. "\n"
  946. "INPUT FILES:\n"
  947. " OggEnc input files must currently be 24, 16, or 8 bit PCM WAV, AIFF, or AIFF/C\n"
  948. " files, 32 bit IEEE floating point WAV, and optionally FLAC or Ogg FLAC. Files\n"
  949. " may be mono or stereo (or more channels) and any sample rate.\n"
  950. " Alternatively, the --raw option may be used to use a raw PCM data file, which\n"
  951. " must be 16 bit stereo little-endian PCM ('headerless wav'), unless additional\n"
  952. " parameters for raw mode are specified.\n"
  953. " You can specify taking the file from stdin by using - as the input filename.\n"
  954. " In this mode, output is to stdout unless an output filename is specified\n"
  955. " with -o\n"
  956. "\n"), VERSION_STRING, COPYRIGHT);
  957. }
  958. static int strncpy_filtered(char *dst, char *src, int len, char *remove_list,
  959. char *replace_list)
  960. {
  961. char *hit, *drop_margin;
  962. int used=0;
  963. if(remove_list == NULL || *remove_list == 0)
  964. {
  965. strncpy(dst, src, len-1);
  966. dst[len-1] = 0;
  967. return strlen(dst);
  968. }
  969. drop_margin = remove_list + (replace_list == NULL?0:strlen(replace_list));
  970. while(*src && used < len-1)
  971. {
  972. if((hit = strchr(remove_list, *src)) != NULL)
  973. {
  974. if(hit < drop_margin)
  975. {
  976. *dst++ = replace_list[hit - remove_list];
  977. used++;
  978. }
  979. }
  980. else
  981. {
  982. *dst++ = *src;
  983. used++;
  984. }
  985. src++;
  986. }
  987. *dst = 0;
  988. return used;
  989. }
  990. static char *generate_name_string(char *format, char *remove_list,
  991. char *replace_list, char *artist, char *title, char *album,
  992. char *track, char *date, char *genre)
  993. {
  994. char *buffer;
  995. char next;
  996. char *string;
  997. int used=0;
  998. int buflen;
  999. buffer = calloc(CHUNK+1,1);
  1000. buflen = CHUNK;
  1001. while(*format && used < buflen)
  1002. {
  1003. next = *format++;
  1004. if(next == '%')
  1005. {
  1006. switch(*format++)
  1007. {
  1008. case '%':
  1009. *(buffer+(used++)) = '%';
  1010. break;
  1011. case 'a':
  1012. string = artist?artist:_("(none)");
  1013. used += strncpy_filtered(buffer+used, string, buflen-used,
  1014. remove_list, replace_list);
  1015. break;
  1016. case 'd':
  1017. string = date?date:_("(none)");
  1018. used += strncpy_filtered(buffer+used, string, buflen-used,
  1019. remove_list, replace_list);
  1020. break;
  1021. case 'g':
  1022. string = genre?genre:_("(none)");
  1023. used += strncpy_filtered(buffer+used, string, buflen-used,
  1024. remove_list, replace_list);
  1025. break;
  1026. case 't':
  1027. string = title?title:_("(none)");
  1028. used += strncpy_filtered(buffer+used, string, buflen-used,
  1029. remove_list, replace_list);
  1030. break;
  1031. case 'l':
  1032. string = album?album:_("(none)");
  1033. used += strncpy_filtered(buffer+used, string, buflen-used,
  1034. remove_list, replace_list);
  1035. break;
  1036. case 'n':
  1037. string = track?track:_("(none)");
  1038. used += strncpy_filtered(buffer+used, string, buflen-used,
  1039. remove_list, replace_list);
  1040. break;
  1041. default:
  1042. fprintf(stderr, _("WARNING: Ignoring illegal escape character '%c' in name format\n"), *(format - 1));
  1043. break;
  1044. }
  1045. }
  1046. else
  1047. *(buffer + (used++)) = next;
  1048. }
  1049. return buffer;
  1050. }
  1051. static void parse_options(int argc, char **argv, oe_options *opt)
  1052. {
  1053. int ret;
  1054. int option_index = 1;
  1055. while((ret = getopt_long(argc, argv, "A:a:b:B:c:C:d:G:hl:m:M:n:N:o:P:q:QrR:s:t:vX:",
  1056. long_options, &option_index)) != -1)
  1057. {
  1058. switch(ret)
  1059. {
  1060. case 0:
  1061. if(!strcmp(long_options[option_index].name, "managed")) {
  1062. if(!opt->managed){
  1063. if(!opt->quiet)
  1064. fprintf(stderr,
  1065. _("Enabling bitrate management engine\n"));
  1066. opt->managed = 1;
  1067. }
  1068. }
  1069. else if(!strcmp(long_options[option_index].name,
  1070. "raw-endianness")) {
  1071. if (opt->rawmode != 1)
  1072. {
  1073. opt->rawmode = 1;
  1074. fprintf(stderr, _("WARNING: Raw endianness specified for non-raw data. Assuming input is raw.\n"));
  1075. }
  1076. if(sscanf(optarg, "%d", &opt->raw_endianness) != 1) {
  1077. fprintf(stderr, _("WARNING: Couldn't read endianness argument \"%s\"\n"), optarg);
  1078. opt->raw_endianness = 0;
  1079. }
  1080. }
  1081. else if(!strcmp(long_options[option_index].name,
  1082. "resample")) {
  1083. if(sscanf(optarg, "%d", &opt->resamplefreq) != 1) {
  1084. fprintf(stderr, _("WARNING: Couldn't read resampling frequency \"%s\"\n"), optarg);
  1085. opt->resamplefreq = 0;
  1086. }
  1087. if(opt->resamplefreq < 100) /* User probably specified it
  1088. in kHz accidently */
  1089. fprintf(stderr,
  1090. _("Warning: Resample rate specified as %d Hz. Did you mean %d Hz?\n"),
  1091. opt->resamplefreq, opt->resamplefreq*1000);
  1092. }
  1093. else if(!strcmp(long_options[option_index].name, "downmix")) {
  1094. opt->downmix = 1;
  1095. }
  1096. else if(!strcmp(long_options[option_index].name, "scale")) {
  1097. opt->scale = atof(optarg);
  1098. if(sscanf(optarg, "%f", &opt->scale) != 1) {
  1099. opt->scale = 0;
  1100. fprintf(stderr, _("Warning: Couldn't parse scaling factor \"%s\"\n"),
  1101. optarg);
  1102. }
  1103. }
  1104. else if(!strcmp(long_options[option_index].name, "advanced-encode-option")) {
  1105. char *arg = strdup(optarg);
  1106. char *val;
  1107. val = strchr(arg, '=');
  1108. if(val == NULL) {
  1109. fprintf(stderr, _("No value for advanced encoder option found\n"));
  1110. continue;
  1111. }
  1112. else
  1113. *val++=0;
  1114. opt->advopt = realloc(opt->advopt, (++opt->advopt_count)*sizeof(adv_opt));
  1115. opt->advopt[opt->advopt_count - 1].arg = arg;
  1116. opt->advopt[opt->advopt_count - 1].val = val;
  1117. }
  1118. else if(!strcmp(long_options[option_index].name, "discard-comments")) {
  1119. opt->copy_comments = 0;
  1120. }
  1121. else {
  1122. fprintf(stderr, _("Internal error parsing command line options\n"));
  1123. exit(1);
  1124. }
  1125. break;
  1126. case 'a':
  1127. opt->artist = realloc(opt->artist, (++opt->artist_count)*sizeof(char *));
  1128. opt->artist[opt->artist_count - 1] = strdup(optarg);
  1129. break;
  1130. case 'c':
  1131. if(strchr(optarg, '=') == NULL) {
  1132. fprintf(stderr, _("Warning: Illegal comment used (\"%s\"), ignoring.\n"), optarg);
  1133. break;
  1134. }
  1135. opt->comments = realloc(opt->comments, (++opt->comment_count)*sizeof(char *));
  1136. opt->comments[opt->comment_count - 1] = strdup(optarg);
  1137. break;
  1138. case 'd':
  1139. opt->dates = realloc(opt->dates, (++opt->date_count)*sizeof(char *));
  1140. opt->dates[opt->date_count - 1] = strdup(optarg);
  1141. break;
  1142. case 'G':
  1143. opt->genre = realloc(opt->genre, (++opt->genre_count)*sizeof(char *));
  1144. opt->genre[opt->genre_count - 1] = strdup(optarg);
  1145. break;
  1146. case 'h':
  1147. usage();
  1148. exit(0);
  1149. break;
  1150. case 'l':
  1151. opt->album = realloc(opt->album, (++opt->album_count)*sizeof(char *));
  1152. opt->album[opt->album_count - 1] = strdup(optarg);
  1153. break;
  1154. case 's':
  1155. /* Would just use atoi(), but that doesn't deal with unsigned
  1156. * ints. Damn */
  1157. if(sscanf(optarg, "%u", &opt->serial) != 1)
  1158. opt->serial = 0; /* Failed, so just set to zero */
  1159. break;
  1160. case 't':
  1161. opt->title = realloc(opt->title, (++opt->title_count)*sizeof(char *));
  1162. opt->title[opt->title_count - 1] = strdup(optarg);
  1163. break;
  1164. case 'b':
  1165. if(sscanf(optarg, "%d", &opt->nominal_bitrate)
  1166. != 1) {
  1167. fprintf(stderr, _("Warning: nominal bitrate \"%s\" not recognised\n"), optarg);
  1168. opt->nominal_bitrate = -1;
  1169. }
  1170. break;
  1171. case 'm':
  1172. if(sscanf(optarg, "%d", &opt->min_bitrate)
  1173. != 1) {
  1174. fprintf(stderr, _("Warning: minimum bitrate \"%s\" not recognised\n"), optarg);
  1175. opt->min_bitrate = -1;
  1176. }
  1177. if(!opt->managed){
  1178. if(!opt->quiet)
  1179. fprintf(stderr,
  1180. _("Enabling bitrate management engine\n"));
  1181. opt->managed = 1;
  1182. }
  1183. break;
  1184. case 'M':
  1185. if(sscanf(optarg, "%d", &opt->max_bitrate)
  1186. != 1) {
  1187. fprintf(stderr, _("Warning: maximum bitrate \"%s\" not recognised\n"), optarg);
  1188. opt->max_bitrate = -1;
  1189. }
  1190. if(!opt->managed){
  1191. if(!opt->quiet)
  1192. fprintf(stderr,
  1193. _("Enabling bitrate management engine\n"));
  1194. opt->managed = 1;
  1195. }
  1196. break;
  1197. case 'q':
  1198. if(sscanf(optarg, "%f", &opt->quality) != 1) {
  1199. fprintf(stderr, _("Quality option \"%s\" not recognised, ignoring\n"), optarg);
  1200. break;
  1201. }
  1202. opt->quality_set=1;
  1203. opt->quality *= 0.1;
  1204. if(opt->quality > 1.0f)
  1205. {
  1206. opt->quality = 1.0f;
  1207. fprintf(stderr, _("WARNING: quality setting too high, setting to maximum quality.\n"));
  1208. }
  1209. break;
  1210. case 'n':
  1211. if(opt->namefmt)
  1212. {
  1213. fprintf(stderr, _("WARNING: Multiple name formats specified, using final\n"));
  1214. free(opt->namefmt);
  1215. }
  1216. opt->namefmt = strdup(optarg);
  1217. break;
  1218. case 'X':
  1219. if(opt->namefmt_remove && opt->namefmt_remove !=
  1220. DEFAULT_NAMEFMT_REMOVE)
  1221. {
  1222. fprintf(stderr, _("WARNING: Multiple name format filters specified, using final\n"));
  1223. free(opt->namefmt_remove);
  1224. }
  1225. opt->namefmt_remove = strdup(optarg);
  1226. break;
  1227. case 'P':
  1228. if(opt->namefmt_replace && opt->namefmt_replace !=
  1229. DEFAULT_NAMEFMT_REPLACE)
  1230. {
  1231. fprintf(stderr, _("WARNING: Multiple name format filter replacements specified, using final\n"));
  1232. free(opt->namefmt_replace);
  1233. }
  1234. opt->namefmt_replace = strdup(optarg);
  1235. break;
  1236. case 'o':
  1237. if(opt->outfile)
  1238. {
  1239. fprintf(stderr, _("WARNING: Multiple output files specified, suggest using -n\n"));
  1240. free(opt->outfile);
  1241. }
  1242. opt->outfile = strdup(optarg);
  1243. break;
  1244. case 'Q':
  1245. opt->quiet = 1;
  1246. break;
  1247. case 'r':
  1248. opt->rawmode = 1;
  1249. break;
  1250. case 'v':
  1251. fprintf(stdout, VERSION_STRING);
  1252. exit(0);
  1253. break;
  1254. case 'B':
  1255. if (opt->rawmode != 1)
  1256. {
  1257. opt->rawmode = 1;
  1258. fprintf(stderr, _("WARNING: Raw bits/sample specified for non-raw data. Assuming input is raw.\n"));
  1259. }
  1260. if(sscanf(optarg, "%u", &opt->raw_samplesize) != 1)
  1261. {
  1262. opt->raw_samplesize = 16; /* Failed, so just set to 16 */
  1263. fprintf(stderr, _("WARNING: Invalid bits/sample specified, assuming 16.\n"));
  1264. }
  1265. if((opt->raw_samplesize != 8) && (opt->raw_samplesize != 16))
  1266. {
  1267. fprintf(stderr, _("WARNING: Invalid bits/sample specified, assuming 16.\n"));
  1268. }
  1269. break;
  1270. case 'C':
  1271. if (opt->rawmode != 1)
  1272. {
  1273. opt->rawmode = 1;
  1274. fprintf(stderr, _("WARNING: Raw channel count specified for non-raw data. Assuming input is raw.\n"));
  1275. }
  1276. if(sscanf(optarg, "%u", &opt->raw_channels) != 1)
  1277. {
  1278. opt->raw_channels = 2; /* Failed, so just set to 2 */
  1279. fprintf(stderr, _("WARNING: Invalid channel count specified, assuming 2.\n"));
  1280. }
  1281. break;
  1282. case 'N':
  1283. opt->tracknum = realloc(opt->tracknum, (++opt->track_count)*sizeof(char *));
  1284. opt->tracknum[opt->track_count - 1] = strdup(optarg);
  1285. break;
  1286. case 'R':
  1287. if (opt->rawmode != 1)
  1288. {
  1289. opt->rawmode = 1;
  1290. fprintf(stderr, _("WARNING: Raw sample rate specified for non-raw data. Assuming input is raw.\n"));
  1291. }
  1292. if(sscanf(optarg, "%u", &opt->raw_samplerate) != 1)
  1293. {
  1294. opt->raw_samplerate = 44100; /* Failed, so just set to 44100 */
  1295. fprintf(stderr, _("WARNING: Invalid sample rate specified, assuming 44100.\n"));
  1296. }
  1297. break;
  1298. case '?':
  1299. fprintf(stderr, _("WARNING: Unknown option specified, ignoring->\n"));
  1300. break;
  1301. default:
  1302. usage();
  1303. exit(0);
  1304. }
  1305. }
  1306. }
  1307. static void add_tag(vorbis_comment *vc, oe_options *opt,char *name, char *value)
  1308. {
  1309. if(name == NULL)
  1310. vorbis_comment_add(vc, value);
  1311. else
  1312. vorbis_comment_add_tag(vc, name, value);
  1313. }
  1314. static void build_comments(vorbis_comment *vc, oe_options *opt, int filenum,
  1315. char **artist, char **album, char **title, char **tracknum,
  1316. char **date, char **genre)
  1317. {
  1318. int i;
  1319. vorbis_comment_init(vc);
  1320. for(i = 0; i < opt->comment_count; i++)
  1321. add_tag(vc, opt, NULL, opt->comments[i]);
  1322. if(opt->title_count)
  1323. {
  1324. if(filenum >= opt->title_count)
  1325. {
  1326. if(!opt->quiet)
  1327. fprintf(stderr, _("WARNING: Insufficient titles specified, defaulting to final title.\n"));
  1328. i = opt->title_count-1;
  1329. }
  1330. else
  1331. i = filenum;
  1332. *title = opt->title[i];
  1333. add_tag(vc, opt, "title", opt->title[i]);
  1334. }
  1335. if(opt->artist_count)
  1336. {
  1337. if(filenum >= opt->artist_count)
  1338. i = opt->artist_count-1;
  1339. else
  1340. i = filenum;
  1341. *artist = opt->artist[i];
  1342. add_tag(vc, opt, "artist", opt->artist[i]);
  1343. }
  1344. if(opt->genre_count)
  1345. {
  1346. if(filenum >= opt->genre_count)
  1347. i = opt->genre_count-1;
  1348. else
  1349. i = filenum;
  1350. *genre = opt->genre[i];
  1351. add_tag(vc, opt, "genre", opt->genre[i]);
  1352. }
  1353. if(opt->date_count)
  1354. {
  1355. if(filenum >= opt->date_count)
  1356. i = opt->date_count-1;
  1357. else
  1358. i = filenum;
  1359. *date = opt->dates[i];
  1360. add_tag(vc, opt, "date", opt->dates[i]);
  1361. }
  1362. if(opt->album_count)
  1363. {
  1364. if(filenum >= opt->album_count)
  1365. {
  1366. i = opt->album_count-1;
  1367. }
  1368. else
  1369. i = filenum;
  1370. *album = opt->album[i];
  1371. add_tag(vc, opt, "album", opt->album[i]);
  1372. }
  1373. if(filenum < opt->track_count)
  1374. {
  1375. i = filenum;
  1376. *tracknum = opt->tracknum[i];
  1377. add_tag(vc, opt, "tracknumber", opt->tracknum[i]);
  1378. }
  1379. }
  1380. /* OggEnc
  1381. **
  1382. ** This program is distributed under the GNU General Public License, version 2.
  1383. ** A copy of this license is included with this source.
  1384. **
  1385. ** Copyright 2000-2002, Michael Smith <msmith@xiph.org>
  1386. **
  1387. ** AIFF/AIFC support from OggSquish, (c) 1994-1996 Monty <xiphmont@xiph.org>
  1388. **/
  1389. /* This program is licensed under the GNU Library General Public License,
  1390. * version 2, a copy of which is included with this program (LICENCE.LGPL).
  1391. *
  1392. * (c) 2002 Simon Hosie <gumboot@clear.net.nz>
  1393. *
  1394. *
  1395. * A resampler
  1396. *
  1397. * reference:
  1398. * 'Digital Filters', third edition, by R. W. Hamming ISBN 0-486-65088-X
  1399. *
  1400. * history:
  1401. * 2002-05-31 ready for the world (or some small section thereof)
  1402. *
  1403. *
  1404. * TOOD:
  1405. * zero-crossing clipping in coefficient table
  1406. */
  1407. #define _RESAMPLE_H_INCLUDED
  1408. typedef float SAMPLE;
  1409. typedef struct
  1410. {
  1411. unsigned int channels, infreq, outfreq, taps;
  1412. float *table;
  1413. SAMPLE *pool;
  1414. /* dynamic bits */
  1415. int poolfill;
  1416. int offset;
  1417. } res_state;
  1418. typedef enum
  1419. {
  1420. RES_END,
  1421. RES_GAIN, /* (double)1.0 */
  1422. RES_CUTOFF, /* (double)0.80 */
  1423. RES_TAPS, /* (int)45 */
  1424. RES_BETA /* (double)16.0 */
  1425. } res_parameter;
  1426. int res_init(res_state *state, int channels, int outfreq, int infreq, res_parameter op1, ...);
  1427. /*
  1428. * Configure *state to manage a data stream with the specified parameters. The
  1429. * string 'params' is currently unspecified, but will configure the parameters
  1430. * of the filter.
  1431. *
  1432. * This function allocates memory, and requires that res_clear() be called when
  1433. * the buffer is no longer needed.
  1434. *
  1435. *
  1436. * All counts/lengths used in the following functions consider only the data in
  1437. * a single channel, and in numbers of samples rather than bytes, even though
  1438. * functionality will be mirrored across as many channels as specified here.
  1439. */
  1440. int res_push_max_input(res_state const *state, size_t maxoutput);
  1441. /*
  1442. * Returns the maximum number of input elements that may be provided without
  1443. * risk of flooding an output buffer of size maxoutput. maxoutput is
  1444. * specified in counts of elements, NOT in bytes.
  1445. */
  1446. int res_push_check(res_state const *state, size_t srclen);
  1447. /*
  1448. * Returns the number of elements that will be returned if the given srclen
  1449. * is used in the next call to res_push().
  1450. */
  1451. int res_push(res_state *state, SAMPLE **dstlist, SAMPLE const **srclist, size_t srclen);
  1452. int res_push_interleaved(res_state *state, SAMPLE *dest, SAMPLE const *source, size_t srclen);
  1453. /*
  1454. * Pushes srclen samples into the front end of the filter, and returns the
  1455. * number of resulting samples.
  1456. *
  1457. * res_push(): srclist and dstlist point to lists of pointers, each of which
  1458. * indicates the beginning of a list of samples.
  1459. *
  1460. * res_push_interleaved(): source and dest point to the beginning of a list of
  1461. * interleaved samples.
  1462. */
  1463. int res_drain(res_state *state, SAMPLE **dstlist);
  1464. int res_drain_interleaved(res_state *state, SAMPLE *dest);
  1465. /*
  1466. * Recover the remaining elements by flushing the internal pool with 0 values,
  1467. * and storing the resulting samples.
  1468. *
  1469. * After either of these functions are called, *state should only re-used in a
  1470. * final call to res_clear().
  1471. */
  1472. void res_clear(res_state *state);
  1473. /*
  1474. * Free allocated buffers, etc.
  1475. */
  1476. #define WAV_HEADER_SIZE 44
  1477. /* Macros to read header data */
  1478. #define READ_U32_LE(buf) \
  1479. (((buf)[3]<<24)|((buf)[2]<<16)|((buf)[1]<<8)|((buf)[0]&0xff))
  1480. #define READ_U16_LE(buf) \
  1481. (((buf)[1]<<8)|((buf)[0]&0xff))
  1482. #define READ_U32_BE(buf) \
  1483. (((buf)[0]<<24)|((buf)[1]<<16)|((buf)[2]<<8)|((buf)[3]&0xff))
  1484. #define READ_U16_BE(buf) \
  1485. (((buf)[0]<<8)|((buf)[1]&0xff))
  1486. /* Define the supported formats here */
  1487. input_format formats[] = {
  1488. {wav_id, 12, wav_open, wav_close, "wav", N_("WAV file reader")},
  1489. {aiff_id, 12, aiff_open, wav_close, "aiff", N_("AIFF/AIFC file reader")},
  1490. #ifdef HAVE_LIBFLAC
  1491. {flac_id, 4, flac_open, flac_close, "flac", N_("FLAC file reader")},
  1492. {oggflac_id, 32, flac_open, flac_close, "ogg", N_("Ogg FLAC file reader")},
  1493. #endif
  1494. {NULL, 0, NULL, NULL, NULL, NULL}
  1495. };
  1496. input_format *open_audio_file(FILE *in, oe_enc_opt *opt)
  1497. {
  1498. int j=0;
  1499. unsigned char *buf=NULL;
  1500. int buf_size=0, buf_filled=0;
  1501. int size,ret;
  1502. while(formats[j].id_func)
  1503. {
  1504. size = formats[j].id_data_len;
  1505. if(size >= buf_size)
  1506. {
  1507. buf = realloc(buf, size);
  1508. buf_size = size;
  1509. }
  1510. if(size > buf_filled)
  1511. {
  1512. ret = fread(buf+buf_filled, 1, buf_size-buf_filled, in);
  1513. buf_filled += ret;
  1514. if(buf_filled < size)
  1515. { /* File truncated */
  1516. j++;
  1517. continue;
  1518. }
  1519. }
  1520. if(formats[j].id_func(buf, buf_filled))
  1521. {
  1522. /* ok, we now have something that can handle the file */
  1523. if(formats[j].open_func(in, opt, buf, buf_filled)) {
  1524. free(buf);
  1525. return &formats[j];
  1526. }
  1527. }
  1528. j++;
  1529. }
  1530. free(buf);
  1531. return NULL;
  1532. }
  1533. static int seek_forward(FILE *in, int length)
  1534. {
  1535. if(fseek(in, length, SEEK_CUR))
  1536. {
  1537. /* Failed. Do it the hard way. */
  1538. unsigned char buf[1024];
  1539. int seek_needed = length, seeked;
  1540. while(seek_needed > 0)
  1541. {
  1542. seeked = fread(buf, 1, seek_needed>1024?1024:seek_needed, in);
  1543. if(!seeked)
  1544. return 0; /* Couldn't read more, can't read file */
  1545. else
  1546. seek_needed -= seeked;
  1547. }
  1548. }
  1549. return 1;
  1550. }
  1551. static int find_wav_chunk(FILE *in, char *type, unsigned int *len)
  1552. {
  1553. unsigned char buf[8];
  1554. while(1)
  1555. {
  1556. if(fread(buf,1,8,in) < 8) /* Suck down a chunk specifier */
  1557. {
  1558. fprintf(stderr, _("Warning: Unexpected EOF in reading WAV header\n"));
  1559. return 0; /* EOF before reaching the appropriate chunk */
  1560. }
  1561. if(memcmp(buf, type, 4))
  1562. {
  1563. *len = READ_U32_LE(buf+4);
  1564. if(!seek_forward(in, *len))
  1565. return 0;
  1566. buf[4] = 0;
  1567. fprintf(stderr, _("Skipping chunk of type \"%s\", length %d\n"), buf, *len);
  1568. }
  1569. else
  1570. {
  1571. *len = READ_U32_LE(buf+4);
  1572. return 1;
  1573. }
  1574. }
  1575. }
  1576. static int find_aiff_chunk(FILE *in, char *type, unsigned int *len)
  1577. {
  1578. unsigned char buf[8];
  1579. while(1)
  1580. {
  1581. if(fread(buf,1,8,in) <8)
  1582. {
  1583. fprintf(stderr, _("Warning: Unexpected EOF in AIFF chunk\n"));
  1584. return 0;
  1585. }
  1586. *len = READ_U32_BE(buf+4);
  1587. if(memcmp(buf,type,4))
  1588. {
  1589. if((*len) & 0x1)
  1590. (*len)++;
  1591. if(!seek_forward(in, *len))
  1592. return 0;
  1593. }
  1594. else
  1595. return 1;
  1596. }
  1597. }
  1598. double read_IEEE80(unsigned char *buf)
  1599. {
  1600. int s=buf[0]&0xff;
  1601. int e=((buf[0]&0x7f)<<8)|(buf[1]&0xff);
  1602. double f=((unsigned long)(buf[2]&0xff)<<24)|
  1603. ((buf[3]&0xff)<<16)|
  1604. ((buf[4]&0xff)<<8) |
  1605. (buf[5]&0xff);
  1606. if(e==32767)
  1607. {
  1608. if(buf[2]&0x80)
  1609. return HUGE_VAL; /* Really NaN, but this won't happen in reality */
  1610. else
  1611. {
  1612. if(s)
  1613. return -HUGE_VAL;
  1614. else
  1615. return HUGE_VAL;
  1616. }
  1617. }
  1618. f=ldexp(f,32);
  1619. f+= ((buf[6]&0xff)<<24)|
  1620. ((buf[7]&0xff)<<16)|
  1621. ((buf[8]&0xff)<<8) |
  1622. (buf[9]&0xff);
  1623. return ldexp(f, e-16446);
  1624. }
  1625. /* AIFF/AIFC support adapted from the old OggSQUISH application */
  1626. int aiff_id(unsigned char *buf, int len)
  1627. {
  1628. if(len<12) return 0; /* Truncated file, probably */
  1629. if(memcmp(buf, "FORM", 4))
  1630. return 0;
  1631. if(memcmp(buf+8, "AIF",3))
  1632. return 0;
  1633. if(buf[11]!='C' && buf[11]!='F')
  1634. return 0;
  1635. return 1;
  1636. }
  1637. int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen)
  1638. {
  1639. int aifc; /* AIFC or AIFF? */
  1640. unsigned int len;
  1641. unsigned char *buffer;
  1642. unsigned char buf2[8];
  1643. aiff_fmt format;
  1644. aifffile *aiff = malloc(sizeof(aifffile));
  1645. if(buf[11]=='C')
  1646. aifc=1;
  1647. else
  1648. aifc=0;
  1649. if(!find_aiff_chunk(in, "COMM", &len))
  1650. {
  1651. fprintf(stderr, _("Warning: No common chunk found in AIFF file\n"));
  1652. return 0; /* EOF before COMM chunk */
  1653. }
  1654. if(len < 18)
  1655. {
  1656. fprintf(stderr, _("Warning: Truncated common chunk in AIFF header\n"));
  1657. return 0; /* Weird common chunk */
  1658. }
  1659. buffer = alloca(len);
  1660. if(fread(buffer,1,len,in) < len)
  1661. {
  1662. fprintf(stderr, _("Warning: Unexpected EOF in reading AIFF header\n"));
  1663. return 0;
  1664. }
  1665. format.channels = READ_U16_BE(buffer);
  1666. format.totalframes = READ_U32_BE(buffer+2);
  1667. format.samplesize = READ_U16_BE(buffer+6);
  1668. format.rate = (int)read_IEEE80(buffer+8);
  1669. aiff->bigendian = 1;
  1670. if(aifc)
  1671. {
  1672. if(len < 22)
  1673. {
  1674. fprintf(stderr, _("Warning: AIFF-C header truncated.\n"));
  1675. return 0;
  1676. }
  1677. if(!memcmp(buffer+18, "NONE", 4))
  1678. {
  1679. aiff->bigendian = 1;
  1680. }
  1681. else if(!memcmp(buffer+18, "sowt", 4))
  1682. {
  1683. aiff->bigendian = 0;
  1684. }
  1685. else
  1686. {
  1687. fprintf(stderr, _("Warning: Can't handle compressed AIFF-C (%c%c%c%c)\n"), *(buffer+18), *(buffer+19), *(buffer+20), *(buffer+21));
  1688. return 0; /* Compressed. Can't handle */
  1689. }
  1690. }
  1691. if(!find_aiff_chunk(in, "SSND", &len))
  1692. {
  1693. fprintf(stderr, _("Warning: No SSND chunk found in AIFF file\n"));
  1694. return 0; /* No SSND chunk -> no actual audio */
  1695. }
  1696. if(len < 8)
  1697. {
  1698. fprintf(stderr, _("Warning: Corrupted SSND chunk in AIFF header\n"));
  1699. return 0;
  1700. }
  1701. if(fread(buf2,1,8, in) < 8)
  1702. {
  1703. fprintf(stderr, _("Warning: Unexpected EOF reading AIFF header\n"));
  1704. return 0;
  1705. }
  1706. format.offset = READ_U32_BE(buf2);
  1707. format.blocksize = READ_U32_BE(buf2+4);
  1708. if( format.blocksize == 0 &&
  1709. (format.samplesize == 16 || format.samplesize == 8))
  1710. {
  1711. /* From here on, this is very similar to the wav code. Oh well. */
  1712. opt->rate = format.rate;
  1713. opt->channels = format.channels;
  1714. opt->read_samples = wav_read; /* Similar enough, so we use the same */
  1715. opt->total_samples_per_channel = format.totalframes;
  1716. aiff->f = in;
  1717. aiff->samplesread = 0;
  1718. aiff->channels = format.channels;
  1719. aiff->samplesize = format.samplesize;
  1720. aiff->totalsamples = format.totalframes;
  1721. opt->readdata = (void *)aiff;
  1722. seek_forward(in, format.offset); /* Swallow some data */
  1723. return 1;
  1724. }
  1725. else
  1726. {
  1727. fprintf(stderr,
  1728. _("Warning: OggEnc does not support this type of AIFF/AIFC file\n"
  1729. " Must be 8, 16, or 24 bit PCM.\n"));
  1730. return 0;
  1731. }
  1732. }
  1733. int wav_id(unsigned char *buf, int len)
  1734. {
  1735. unsigned int flen;
  1736. if(len<12) return 0; /* Something screwed up */
  1737. if(memcmp(buf, "RIFF", 4))
  1738. return 0; /* Not wave */
  1739. flen = READ_U32_LE(buf+4); /* We don't use this */
  1740. if(memcmp(buf+8, "WAVE",4))
  1741. return 0; /* RIFF, but not wave */
  1742. return 1;
  1743. }
  1744. int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *oldbuf, int buflen)
  1745. {
  1746. unsigned char buf[16];
  1747. unsigned int len;
  1748. int samplesize;
  1749. wav_fmt format;
  1750. wavfile *wav = malloc(sizeof(wavfile));
  1751. /* Ok. At this point, we know we have a WAV file. Now we have to detect
  1752. * whether we support the subtype, and we have to find the actual data
  1753. * We don't (for the wav reader) need to use the buffer we used to id this
  1754. * as a wav file (oldbuf)
  1755. */
  1756. if(!find_wav_chunk(in, "fmt ", &len))
  1757. return 0; /* EOF */
  1758. if(len < 16)
  1759. {
  1760. fprintf(stderr, _("Warning: Unrecognised format chunk in WAV header\n"));
  1761. return 0; /* Weird format chunk */
  1762. }
  1763. /* A common error is to have a format chunk that is not 16 or 18 bytes
  1764. * in size. This is incorrect, but not fatal, so we only warn about
  1765. * it instead of refusing to work with the file. Please, if you
  1766. * have a program that's creating format chunks of sizes other than
  1767. * 16 or 18 bytes in size, report a bug to the author.
  1768. */
  1769. if(len!=16 && len!=18)
  1770. fprintf(stderr,
  1771. _("Warning: INVALID format chunk in wav header.\n"
  1772. " Trying to read anyway (may not work)...\n"));
  1773. if(fread(buf,1,16,in) < 16)
  1774. {
  1775. fprintf(stderr, _("Warning: Unexpected EOF in reading WAV header\n"));
  1776. return 0;
  1777. }
  1778. /* Deal with stupid broken apps. Don't use these programs.
  1779. */
  1780. if(len - 16 > 0 && !seek_forward(in, len-16))
  1781. return 0;
  1782. format.format = READ_U16_LE(buf);
  1783. format.channels = READ_U16_LE(buf+2);
  1784. format.samplerate = READ_U32_LE(buf+4);
  1785. format.bytespersec = READ_U32_LE(buf+8);
  1786. format.align = READ_U16_LE(buf+12);
  1787. format.samplesize = READ_U16_LE(buf+14);
  1788. if(!find_wav_chunk(in, "data", &len))
  1789. return 0; /* EOF */
  1790. if(format.format == 1)
  1791. {
  1792. samplesize = format.samplesize/8;
  1793. opt->read_samples = wav_read;
  1794. }
  1795. else if(format.format == 3)
  1796. {
  1797. samplesize = 4;
  1798. opt->read_samples = wav_ieee_read;
  1799. }
  1800. else
  1801. {
  1802. fprintf(stderr,
  1803. _("ERROR: Wav file is unsupported type (must be standard PCM\n"
  1804. " or type 3 floating point PCM\n"));
  1805. return 0;
  1806. }
  1807. if( format.align == format.channels*samplesize &&
  1808. format.samplesize == samplesize*8 &&
  1809. (format.samplesize == 24 || format.samplesize == 16 ||
  1810. format.samplesize == 8 ||
  1811. (format.samplesize == 32 && format.format == 3)))
  1812. {
  1813. /* OK, good - we have the one supported format,
  1814. now we want to find the size of the file */
  1815. opt->rate = format.samplerate;
  1816. opt->channels = format.channels;
  1817. wav->f = in;
  1818. wav->samplesread = 0;
  1819. wav->bigendian = 0;
  1820. wav->channels = format.channels; /* This is in several places. The price
  1821. of trying to abstract stuff. */
  1822. wav->samplesize = format.samplesize;
  1823. if(len)
  1824. {
  1825. opt->total_samples_per_channel = len/(format.channels*samplesize);
  1826. }
  1827. else
  1828. {
  1829. long pos;
  1830. pos = ftell(in);
  1831. if(fseek(in, 0, SEEK_END) == -1)
  1832. {
  1833. opt->total_samples_per_channel = 0; /* Give up */
  1834. }
  1835. else
  1836. {
  1837. opt->total_samples_per_channel = (ftell(in) - pos)/
  1838. (format.channels*samplesize);
  1839. fseek(in,pos, SEEK_SET);
  1840. }
  1841. }
  1842. wav->totalsamples = opt->total_samples_per_channel;
  1843. opt->readdata = (void *)wav;
  1844. return 1;
  1845. }
  1846. else
  1847. {
  1848. fprintf(stderr,
  1849. _("ERROR: Wav file is unsupported subformat (must be 8,16, or 24 bit PCM\n"
  1850. "or floating point PCM\n"));
  1851. return 0;
  1852. }
  1853. }
  1854. long wav_read(void *in, float **buffer, int samples)
  1855. {
  1856. wavfile *f = (wavfile *)in;
  1857. int sampbyte = f->samplesize / 8;
  1858. signed char *buf = alloca(samples*sampbyte*f->channels);
  1859. long bytes_read = fread(buf, 1, samples*sampbyte*f->channels, f->f);
  1860. int i,j;
  1861. long realsamples;
  1862. if(f->totalsamples && f->samplesread +
  1863. bytes_read/(sampbyte*f->channels) > f->totalsamples) {
  1864. bytes_read = sampbyte*f->channels*(f->totalsamples - f->samplesread);
  1865. }
  1866. realsamples = bytes_read/(sampbyte*f->channels);
  1867. f->samplesread += realsamples;
  1868. if(f->samplesize==8)
  1869. {
  1870. unsigned char *bufu = (unsigned char *)buf;
  1871. for(i = 0; i < realsamples; i++)
  1872. {
  1873. for(j=0; j < f->channels; j++)
  1874. {
  1875. buffer[j][i]=((int)(bufu[i*f->channels + j])-128)/128.0f;
  1876. }
  1877. }
  1878. }
  1879. else if(f->samplesize==16)
  1880. {
  1881. if(!f->bigendian)
  1882. {
  1883. for(i = 0; i < realsamples; i++)
  1884. {
  1885. for(j=0; j < f->channels; j++)
  1886. {
  1887. buffer[j][i] = ((buf[i*2*f->channels + 2*j + 1]<<8) |
  1888. (buf[i*2*f->channels + 2*j] & 0xff))/32768.0f;
  1889. }
  1890. }
  1891. }
  1892. else
  1893. {
  1894. for(i = 0; i < realsamples; i++)
  1895. {
  1896. for(j=0; j < f->channels; j++)
  1897. {
  1898. buffer[j][i]=((buf[i*2*f->channels + 2*j]<<8) |
  1899. (buf[i*2*f->channels + 2*j + 1] & 0xff))/32768.0f;
  1900. }
  1901. }
  1902. }
  1903. }
  1904. else if(f->samplesize==24)
  1905. {
  1906. if(!f->bigendian) {
  1907. for(i = 0; i < realsamples; i++)
  1908. {
  1909. for(j=0; j < f->channels; j++)
  1910. {
  1911. buffer[j][i] = ((buf[i*3*f->channels + 3*j + 2] << 16) |
  1912. (((unsigned char *)buf)[i*3*f->channels + 3*j + 1] << 8) |
  1913. (((unsigned char *)buf)[i*3*f->channels + 3*j] & 0xff))
  1914. / 8388608.0f;
  1915. }
  1916. }
  1917. }
  1918. else {
  1919. fprintf(stderr, _("Big endian 24 bit PCM data is not currently "
  1920. "supported, aborting.\n"));
  1921. return 0;
  1922. }
  1923. }
  1924. else {
  1925. fprintf(stderr, _("Internal error: attempt to read unsupported "
  1926. "bitdepth %d\n"), f->samplesize);
  1927. return 0;
  1928. }
  1929. return realsamples;
  1930. }
  1931. long wav_ieee_read(void *in, float **buffer, int samples)
  1932. {
  1933. wavfile *f = (wavfile *)in;
  1934. float *buf = alloca(samples*4*f->channels); /* de-interleave buffer */
  1935. long bytes_read = fread(buf,1,samples*4*f->channels, f->f);
  1936. int i,j;
  1937. long realsamples;
  1938. if(f->totalsamples && f->samplesread +
  1939. bytes_read/(4*f->channels) > f->totalsamples)
  1940. bytes_read = 4*f->channels*(f->totalsamples - f->samplesread);
  1941. realsamples = bytes_read/(4*f->channels);
  1942. f->samplesread += realsamples;
  1943. for(i=0; i < realsamples; i++)
  1944. for(j=0; j < f->channels; j++)
  1945. buffer[j][i] = buf[i*f->channels + j];
  1946. return realsamples;
  1947. }
  1948. void wav_close(void *info)
  1949. {
  1950. wavfile *f = (wavfile *)info;
  1951. free(f);
  1952. }
  1953. int raw_open(FILE *in, oe_enc_opt *opt)
  1954. {
  1955. wav_fmt format; /* fake wave header ;) */
  1956. wavfile *wav = malloc(sizeof(wavfile));
  1957. /* construct fake wav header ;) */
  1958. format.format = 2;
  1959. format.channels = opt->channels;
  1960. format.samplerate = opt->rate;
  1961. format.samplesize = opt->samplesize;
  1962. format.bytespersec = opt->channels * opt->rate * opt->samplesize / 8;
  1963. format.align = format.bytespersec;
  1964. wav->f = in;
  1965. wav->samplesread = 0;
  1966. wav->bigendian = opt->endianness;
  1967. wav->channels = format.channels;
  1968. wav->samplesize = opt->samplesize;
  1969. wav->totalsamples = 0;
  1970. opt->read_samples = wav_read;
  1971. opt->readdata = (void *)wav;
  1972. opt->total_samples_per_channel = 0; /* raw mode, don't bother */
  1973. return 1;
  1974. }
  1975. typedef struct {
  1976. res_state resampler;
  1977. audio_read_func real_reader;
  1978. void *real_readdata;
  1979. float **bufs;
  1980. int channels;
  1981. int bufsize;
  1982. int done;
  1983. } resampler;
  1984. static long read_resampled(void *d, float **buffer, int samples)
  1985. {
  1986. resampler *rs = d;
  1987. long in_samples;
  1988. int out_samples;
  1989. in_samples = res_push_max_input(&rs->resampler, samples);
  1990. if(in_samples > rs->bufsize)
  1991. in_samples = rs->bufsize;
  1992. in_samples = rs->real_reader(rs->real_readdata, rs->bufs, in_samples);
  1993. if(in_samples <= 0) {
  1994. if(!rs->done) {
  1995. rs->done = 1;
  1996. out_samples = res_drain(&rs->resampler, buffer);
  1997. return out_samples;
  1998. }
  1999. return 0;
  2000. }
  2001. out_samples = res_push(&rs->resampler, buffer, (float const **)rs->bufs, in_samples);
  2002. if(out_samples <= 0) {
  2003. fprintf(stderr, _("BUG: Got zero samples from resampler: your file will be truncated. Please report this.\n"));
  2004. }
  2005. return out_samples;
  2006. }
  2007. int setup_resample(oe_enc_opt *opt) {
  2008. resampler *rs = calloc(1, sizeof(resampler));
  2009. int c;
  2010. rs->bufsize = 4096; /* Shrug */
  2011. rs->real_reader = opt->read_samples;
  2012. rs->real_readdata = opt->readdata;
  2013. rs->bufs = malloc(sizeof(float *) * opt->channels);
  2014. rs->channels = opt->channels;
  2015. rs->done = 0;
  2016. if(res_init(&rs->resampler, rs->channels, opt->resamplefreq, opt->rate, RES_END))
  2017. {
  2018. fprintf(stderr, _("Couldn't initialise resampler\n"));
  2019. return -1;
  2020. }
  2021. for(c=0; c < opt->channels; c++)
  2022. rs->bufs[c] = malloc(sizeof(float) * rs->bufsize);
  2023. opt->read_samples = read_resampled;
  2024. opt->readdata = rs;
  2025. if(opt->total_samples_per_channel)
  2026. opt->total_samples_per_channel = (int)((float)opt->total_samples_per_channel *
  2027. ((float)opt->resamplefreq/(float)opt->rate));
  2028. opt->rate = opt->resamplefreq;
  2029. return 0;
  2030. }
  2031. void clear_resample(oe_enc_opt *opt) {
  2032. resampler *rs = opt->readdata;
  2033. int i;
  2034. opt->read_samples = rs->real_reader;
  2035. opt->readdata = rs->real_readdata;
  2036. res_clear(&rs->resampler);
  2037. for(i = 0; i < rs->channels; i++)
  2038. free(rs->bufs[i]);
  2039. free(rs->bufs);
  2040. free(rs);
  2041. }
  2042. typedef struct {
  2043. audio_read_func real_reader;
  2044. void *real_readdata;
  2045. int channels;
  2046. float scale_factor;
  2047. } scaler;
  2048. static long read_scaler(void *data, float **buffer, int samples) {
  2049. scaler *d = data;
  2050. long in_samples = d->real_reader(d->real_readdata, buffer, samples);
  2051. int i,j;
  2052. for(i=0; i < d->channels; i++) {
  2053. for(j=0; j < in_samples; j++) {
  2054. buffer[i][j] *= d->scale_factor;
  2055. }
  2056. }
  2057. return in_samples;
  2058. }
  2059. void setup_scaler(oe_enc_opt *opt, float scale) {
  2060. scaler *d = calloc(1, sizeof(scaler));
  2061. d->real_reader = opt->read_samples;
  2062. d->real_readdata = opt->readdata;
  2063. opt->read_samples = read_scaler;
  2064. opt->readdata = d;
  2065. d->channels = opt->channels;
  2066. d->scale_factor = scale;
  2067. }
  2068. void clear_scaler(oe_enc_opt *opt) {
  2069. scaler *d = opt->readdata;
  2070. opt->read_samples = d->real_reader;
  2071. opt->readdata = d->real_readdata;
  2072. free(d);
  2073. }
  2074. typedef struct {
  2075. audio_read_func real_reader;
  2076. void *real_readdata;
  2077. float **bufs;
  2078. } downmix;
  2079. static long read_downmix(void *data, float **buffer, int samples)
  2080. {
  2081. downmix *d = data;
  2082. long in_samples = d->real_reader(d->real_readdata, d->bufs, samples);
  2083. int i;
  2084. for(i=0; i < in_samples; i++) {
  2085. buffer[0][i] = (d->bufs[0][i] + d->bufs[1][i])*0.5f;
  2086. }
  2087. return in_samples;
  2088. }
  2089. void setup_downmix(oe_enc_opt *opt) {
  2090. downmix *d = calloc(1, sizeof(downmix));
  2091. if(opt->channels != 2) {
  2092. fprintf(stderr, "Internal error! Please report this bug.\n");
  2093. return;
  2094. }
  2095. d->bufs = malloc(2 * sizeof(float *));
  2096. d->bufs[0] = malloc(4096 * sizeof(float));
  2097. d->bufs[1] = malloc(4096 * sizeof(float));
  2098. d->real_reader = opt->read_samples;
  2099. d->real_readdata = opt->readdata;
  2100. opt->read_samples = read_downmix;
  2101. opt->readdata = d;
  2102. opt->channels = 1;
  2103. }
  2104. void clear_downmix(oe_enc_opt *opt) {
  2105. downmix *d = opt->readdata;
  2106. opt->read_samples = d->real_reader;
  2107. opt->readdata = d->real_readdata;
  2108. opt->channels = 2; /* other things in cleanup rely on this */
  2109. free(d->bufs[0]);
  2110. free(d->bufs[1]);
  2111. free(d->bufs);
  2112. free(d);
  2113. }
  2114. /* OggEnc
  2115. **
  2116. ** This program is distributed under the GNU General Public License, version 2.
  2117. ** A copy of this license is included with this source.
  2118. **
  2119. ** Copyright 2000-2002, Michael Smith <msmith@xiph.org>
  2120. **
  2121. ** Portions from Vorbize, (c) Kenneth Arnold <kcarnold@yahoo.com>
  2122. ** and libvorbis examples, (c) Monty <monty@xiph.org>
  2123. **/
  2124. /********************************************************************
  2125. * *
  2126. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  2127. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  2128. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  2129. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  2130. * *
  2131. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
  2132. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  2133. * *
  2134. ********************************************************************
  2135. function: vorbis encode-engine setup
  2136. last mod: $Id: vorbisenc.h,v 1.10 2002/07/01 11:20:10 xiphmont Exp $
  2137. ********************************************************************/
  2138. #define _OV_ENC_H_
  2139. extern int vorbis_encode_init(vorbis_info *vi,
  2140. long channels,
  2141. long rate,
  2142. long max_bitrate,
  2143. long nominal_bitrate,
  2144. long min_bitrate);
  2145. extern int vorbis_encode_setup_managed(vorbis_info *vi,
  2146. long channels,
  2147. long rate,
  2148. long max_bitrate,
  2149. long nominal_bitrate,
  2150. long min_bitrate);
  2151. extern int vorbis_encode_setup_vbr(vorbis_info *vi,
  2152. long channels,
  2153. long rate,
  2154. float /* quality level from 0. (lo) to 1. (hi) */
  2155. );
  2156. extern int vorbis_encode_init_vbr(vorbis_info *vi,
  2157. long channels,
  2158. long rate,
  2159. float base_quality /* quality level from 0. (lo) to 1. (hi) */
  2160. );
  2161. extern int vorbis_encode_setup_init(vorbis_info *vi);
  2162. extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
  2163. #define OV_ECTL_RATEMANAGE_GET 0x10
  2164. #define OV_ECTL_RATEMANAGE_SET 0x11
  2165. #define OV_ECTL_RATEMANAGE_AVG 0x12
  2166. #define OV_ECTL_RATEMANAGE_HARD 0x13
  2167. #define OV_ECTL_LOWPASS_GET 0x20
  2168. #define OV_ECTL_LOWPASS_SET 0x21
  2169. #define OV_ECTL_IBLOCK_GET 0x30
  2170. #define OV_ECTL_IBLOCK_SET 0x31
  2171. struct ovectl_ratemanage_arg {
  2172. int management_active;
  2173. long bitrate_hard_min;
  2174. long bitrate_hard_max;
  2175. double bitrate_hard_window;
  2176. long bitrate_av_lo;
  2177. long bitrate_av_hi;
  2178. double bitrate_av_window;
  2179. double bitrate_av_window_center;
  2180. };
  2181. #define READSIZE 1024
  2182. int oe_write_page(ogg_page *page, FILE *fp);
  2183. #define SETD(toset) \
  2184. do {\
  2185. if(sscanf(opts[i].val, "%lf", &dval) != 1)\
  2186. fprintf(stderr, "For option %s, couldn't read value %s as double\n",\
  2187. opts[i].arg, opts[i].val);\
  2188. else\
  2189. toset = dval;\
  2190. } while(0)
  2191. #define SETL(toset) \
  2192. do {\
  2193. if(sscanf(opts[i].val, "%ld", &lval) != 1)\
  2194. fprintf(stderr, "For option %s, couldn't read value %s as integer\n",\
  2195. opts[i].arg, opts[i].val);\
  2196. else\
  2197. toset = lval;\
  2198. } while(0)
  2199. static void set_advanced_encoder_options(adv_opt *opts, int count,
  2200. vorbis_info *vi)
  2201. {
  2202. int hard = 0;
  2203. int avg = 0;
  2204. struct ovectl_ratemanage_arg ai;
  2205. int i;
  2206. double dval;
  2207. long lval;
  2208. vorbis_encode_ctl(vi, OV_ECTL_RATEMANAGE_GET, &ai);
  2209. for(i=0; i < count; i++) {
  2210. fprintf(stderr, _("Setting advanced encoder option \"%s\" to %s\n"),
  2211. opts[i].arg, opts[i].val);
  2212. if(!strcmp(opts[i].arg, "bitrate_average_window")) {
  2213. SETD(ai.bitrate_av_window);
  2214. avg = 1;
  2215. }
  2216. else if(!strcmp(opts[i].arg, "bitrate_average_window_center")) {
  2217. SETD(ai.bitrate_av_window_center);
  2218. avg = 1;
  2219. }
  2220. else if(!strcmp(opts[i].arg, "bitrate_average_low")) {
  2221. SETL(ai.bitrate_av_lo);
  2222. avg = 1;
  2223. }
  2224. else if(!strcmp(opts[i].arg, "bitrate_average_high")) {
  2225. SETL(ai.bitrate_av_hi);
  2226. avg = 1;
  2227. }
  2228. else if(!strcmp(opts[i].arg, "bitrate_hard_min")) {
  2229. SETL(ai.bitrate_hard_min);
  2230. hard = 1;
  2231. }
  2232. else if(!strcmp(opts[i].arg, "bitrate_hard_max")) {
  2233. SETL(ai.bitrate_hard_max);
  2234. hard = 1;
  2235. }
  2236. else if(!strcmp(opts[i].arg, "bitrate_hard_window")) {
  2237. SETD(ai.bitrate_hard_window);
  2238. hard = 1;
  2239. }
  2240. else if(!strcmp(opts[i].arg, "impulse_noisetune")) {
  2241. double val;
  2242. SETD(val);
  2243. vorbis_encode_ctl(vi, OV_ECTL_IBLOCK_SET, &val);
  2244. }
  2245. else if(!strcmp(opts[i].arg, "lowpass_frequency")) {
  2246. double prev, new;
  2247. SETD(new);
  2248. vorbis_encode_ctl(vi, OV_ECTL_LOWPASS_GET, &prev);
  2249. vorbis_encode_ctl(vi, OV_ECTL_LOWPASS_SET, &new);
  2250. fprintf(stderr, _("Changed lowpass frequency from %f kHz to %f kHz\n"), prev, new);
  2251. }
  2252. else {
  2253. fprintf(stderr, _("Unrecognised advanced option \"%s\"\n"),
  2254. opts[i].arg);
  2255. }
  2256. }
  2257. if(hard)
  2258. vorbis_encode_ctl(vi, OV_ECTL_RATEMANAGE_HARD, &ai);
  2259. if(avg)
  2260. vorbis_encode_ctl(vi, OV_ECTL_RATEMANAGE_AVG, &ai);
  2261. }
  2262. int oe_encode(oe_enc_opt *opt)
  2263. {
  2264. ogg_stream_state os;
  2265. ogg_page og;
  2266. ogg_packet op;
  2267. vorbis_dsp_state vd;
  2268. vorbis_block vb;
  2269. vorbis_info vi;
  2270. long samplesdone=0;
  2271. int eos;
  2272. long bytes_written = 0, packetsdone=0;
  2273. double time_elapsed;
  2274. int ret=0;
  2275. TIMER *timer;
  2276. if(opt->channels > 255) {
  2277. fprintf(stderr, _("255 channels should be enough for anyone. (Sorry, vorbis doesn't support more)\n"));
  2278. return 1;
  2279. }
  2280. /* get start time. */
  2281. timer = timer_start();
  2282. if(!opt->managed && (opt->min_bitrate>=0 || opt->max_bitrate>=0)){
  2283. fprintf(stderr, _("Requesting a minimum or maximum bitrate requires --managed\n"));
  2284. return 1;
  2285. }
  2286. /* if we had no quality or bitrate spec at all from the user, use
  2287. the default quality with no management --Monty 20020711 */
  2288. if(opt->bitrate < 0 && opt->min_bitrate < 0 && opt->max_bitrate < 0){
  2289. opt->quality_set=1;
  2290. }
  2291. opt->start_encode(opt->infilename, opt->filename, opt->bitrate, opt->quality,
  2292. opt->quality_set, opt->managed, opt->min_bitrate, opt->max_bitrate);
  2293. /* Have vorbisenc choose a mode for us */
  2294. vorbis_info_init(&vi);
  2295. if(opt->quality_set > 0){
  2296. if(vorbis_encode_setup_vbr(&vi, opt->channels, opt->rate, opt->quality)){
  2297. fprintf(stderr, _("Mode initialisation failed: invalid parameters for quality\n"));
  2298. vorbis_info_clear(&vi);
  2299. return 1;
  2300. }
  2301. /* do we have optional hard quality restrictions? */
  2302. if(opt->max_bitrate > 0 || opt->min_bitrate > 0){
  2303. struct ovectl_ratemanage_arg ai;
  2304. vorbis_encode_ctl(&vi, OV_ECTL_RATEMANAGE_GET, &ai);
  2305. ai.bitrate_hard_min=opt->min_bitrate;
  2306. ai.bitrate_hard_max=opt->max_bitrate;
  2307. ai.management_active=1;
  2308. vorbis_encode_ctl(&vi, OV_ECTL_RATEMANAGE_SET, &ai);
  2309. }
  2310. }else {
  2311. if(vorbis_encode_setup_managed(&vi, opt->channels, opt->rate,
  2312. opt->max_bitrate>0?opt->max_bitrate*1000:-1,
  2313. opt->bitrate*1000,
  2314. opt->min_bitrate>0?opt->min_bitrate*1000:-1)){
  2315. fprintf(stderr, _("Mode initialisation failed: invalid parameters for bitrate\n"));
  2316. vorbis_info_clear(&vi);
  2317. return 1;
  2318. }
  2319. }
  2320. if(opt->managed && opt->bitrate < 0)
  2321. {
  2322. vorbis_encode_ctl(&vi, OV_ECTL_RATEMANAGE_AVG, NULL);
  2323. }
  2324. else if(!opt->managed)
  2325. {
  2326. /* Turn off management entirely (if it was turned on). */
  2327. vorbis_encode_ctl(&vi, OV_ECTL_RATEMANAGE_SET, NULL);
  2328. }
  2329. set_advanced_encoder_options(opt->advopt, opt->advopt_count, &vi);
  2330. vorbis_encode_setup_init(&vi);
  2331. /* Now, set up the analysis engine, stream encoder, and other
  2332. preparation before the encoding begins.
  2333. */
  2334. vorbis_analysis_init(&vd,&vi);
  2335. vorbis_block_init(&vd,&vb);
  2336. ogg_stream_init(&os, opt->serialno);
  2337. /* Now, build the three header packets and send through to the stream
  2338. output stage (but defer actual file output until the main encode loop) */
  2339. {
  2340. ogg_packet header_main;
  2341. ogg_packet header_comments;
  2342. ogg_packet header_codebooks;
  2343. int result;
  2344. /* Build the packets */
  2345. vorbis_analysis_headerout(&vd,opt->comments,
  2346. &header_main,&header_comments,&header_codebooks);
  2347. /* And stream them out */
  2348. ogg_stream_packetin(&os,&header_main);
  2349. ogg_stream_packetin(&os,&header_comments);
  2350. ogg_stream_packetin(&os,&header_codebooks);
  2351. while((result = ogg_stream_flush(&os, &og)))
  2352. {
  2353. if(!result) break;
  2354. ret = oe_write_page(&og, opt->out);
  2355. if(ret != og.header_len + og.body_len)
  2356. {
  2357. opt->error(_("Failed writing header to output stream\n"));
  2358. ret = 1;
  2359. goto cleanup; /* Bail and try to clean up stuff */
  2360. }
  2361. }
  2362. }
  2363. eos = 0;
  2364. /* Main encode loop - continue until end of file */
  2365. while(!eos)
  2366. {
  2367. float **buffer = vorbis_analysis_buffer(&vd, READSIZE);
  2368. long samples_read = opt->read_samples(opt->readdata,
  2369. buffer, READSIZE);
  2370. if(samples_read ==0)
  2371. /* Tell the library that we wrote 0 bytes - signalling the end */
  2372. vorbis_analysis_wrote(&vd,0);
  2373. else
  2374. {
  2375. samplesdone += samples_read;
  2376. /* Call progress update every 40 pages */
  2377. if(packetsdone>=40)
  2378. {
  2379. double time;
  2380. packetsdone = 0;
  2381. time = timer_time(timer);
  2382. opt->progress_update(opt->filename, opt->total_samples_per_channel,
  2383. samplesdone, time);
  2384. }
  2385. /* Tell the library how many samples (per channel) we wrote
  2386. into the supplied buffer */
  2387. vorbis_analysis_wrote(&vd, samples_read);
  2388. }
  2389. /* While we can get enough data from the library to analyse, one
  2390. block at a time... */
  2391. while(vorbis_analysis_blockout(&vd,&vb)==1)
  2392. {
  2393. /* Do the main analysis, creating a packet */
  2394. vorbis_analysis(&vb, NULL);
  2395. vorbis_bitrate_addblock(&vb);
  2396. while(vorbis_bitrate_flushpacket(&vd, &op))
  2397. {
  2398. /* Add packet to bitstream */
  2399. ogg_stream_packetin(&os,&op);
  2400. packetsdone++;
  2401. /* If we've gone over a page boundary, we can do actual output,
  2402. so do so (for however many pages are available) */
  2403. while(!eos)
  2404. {
  2405. int result = ogg_stream_pageout(&os,&og);
  2406. if(!result) break;
  2407. ret = oe_write_page(&og, opt->out);
  2408. if(ret != og.header_len + og.body_len)
  2409. {
  2410. opt->error(_("Failed writing data to output stream\n"));
  2411. ret = 1;
  2412. goto cleanup; /* Bail */
  2413. }
  2414. else
  2415. bytes_written += ret;
  2416. if(ogg_page_eos(&og))
  2417. eos = 1;
  2418. }
  2419. }
  2420. }
  2421. }
  2422. ret = 0; /* Success, set return value to 0 since other things reuse it
  2423. * for nefarious purposes. */
  2424. /* Cleanup time */
  2425. cleanup:
  2426. ogg_stream_clear(&os);
  2427. vorbis_block_clear(&vb);
  2428. vorbis_dsp_clear(&vd);
  2429. vorbis_info_clear(&vi);
  2430. time_elapsed = timer_time(timer);
  2431. opt->end_encode(opt->filename, time_elapsed, opt->rate, samplesdone, bytes_written);
  2432. timer_clear(timer);
  2433. return ret;
  2434. }
  2435. void update_statistics_full(char *fn, long total, long done, double time)
  2436. {
  2437. static char *spinner="|/-\\";
  2438. static int spinpoint = 0;
  2439. double remain_time;
  2440. int minutes=0,seconds=0;
  2441. remain_time = time/((double)done/(double)total) - time;
  2442. minutes = ((int)remain_time)/60;
  2443. seconds = (int)(remain_time - (double)((int)remain_time/60)*60);
  2444. fprintf(stderr, "\r");
  2445. fprintf(stderr, _("\t[%5.1f%%] [%2dm%.2ds remaining] %c"),
  2446. done*100.0/total, minutes, seconds, spinner[spinpoint++%4]);
  2447. }
  2448. void update_statistics_notime(char *fn, long total, long done, double time)
  2449. {
  2450. static char *spinner="|/-\\";
  2451. static int spinpoint =0;
  2452. fprintf(stderr, "\r");
  2453. fprintf(stderr, _("\tEncoding [%2dm%.2ds so far] %c"),
  2454. ((int)time)/60, (int)(time - (double)((int)time/60)*60),
  2455. spinner[spinpoint++%4]);
  2456. }
  2457. int oe_write_page(ogg_page *page, FILE *fp)
  2458. {
  2459. int written;
  2460. written = fwrite(page->header,1,page->header_len, fp);
  2461. written += fwrite(page->body,1,page->body_len, fp);
  2462. return written;
  2463. }
  2464. void final_statistics(char *fn, double time, int rate, long samples, long bytes)
  2465. {
  2466. double speed_ratio;
  2467. if(fn)
  2468. fprintf(stderr, _("\n\nDone encoding file \"%s\"\n"), fn);
  2469. else
  2470. fprintf(stderr, _("\n\nDone encoding.\n"));
  2471. speed_ratio = (double)samples / (double)rate / time;
  2472. fprintf(stderr, _("\n\tFile length: %dm %04.1fs\n"),
  2473. (int)(samples/rate/60),
  2474. samples/rate -
  2475. floor(samples/rate/60)*60);
  2476. fprintf(stderr, _("\tElapsed time: %dm %04.1fs\n"),
  2477. (int)(time/60),
  2478. time - floor(time/60)*60);
  2479. fprintf(stderr, _("\tRate: %.4f\n"), speed_ratio);
  2480. fprintf(stderr, _("\tAverage bitrate: %.1f kb/s\n\n"),
  2481. 8./1000.*((double)bytes/((double)samples/(double)rate)));
  2482. }
  2483. void final_statistics_null(char *fn, double time, int rate, long samples,
  2484. long bytes)
  2485. {
  2486. /* Don't do anything, this is just a placeholder function for quiet mode */
  2487. }
  2488. void update_statistics_null(char *fn, long total, long done, double time)
  2489. {
  2490. /* So is this */
  2491. }
  2492. void encode_error(char *errmsg)
  2493. {
  2494. fprintf(stderr, "\n%s\n", errmsg);
  2495. }
  2496. static void print_brconstraints(int min, int max)
  2497. {
  2498. if(min > 0 && max > 0)
  2499. fprintf(stderr, "(min %d kbps, max %d kbps)", min,max);
  2500. else if(min > 0)
  2501. fprintf(stderr, "(min %d kbps, no max)", min);
  2502. else if(max > 0)
  2503. fprintf(stderr, "(no min, max %d kbps)", max);
  2504. else
  2505. fprintf(stderr, "(no min or max)");
  2506. }
  2507. void start_encode_full(char *fn, char *outfn, int bitrate, float quality, int qset,
  2508. int managed, int min, int max)
  2509. {
  2510. if(bitrate>0){
  2511. if(managed>0){
  2512. fprintf(stderr, _("Encoding %s%s%s to \n "
  2513. "%s%s%s \nat average bitrate %d kbps "),
  2514. fn?"\"":"", fn?fn:_("standard input"), fn?"\"":"",
  2515. outfn?"\"":"", outfn?outfn:_("standard output"), outfn?"\"":"",
  2516. bitrate);
  2517. print_brconstraints(min,max);
  2518. fprintf(stderr, ", \nusing full bitrate management engine\n");
  2519. } else {
  2520. fprintf(stderr, _("Encoding %s%s%s to \n %s%s%s \nat approximate bitrate %d kbps (VBR encoding enabled)\n"),
  2521. fn?"\"":"", fn?fn:_("standard input"), fn?"\"":"",
  2522. outfn?"\"":"", outfn?outfn:_("standard output"), outfn?"\"":"",
  2523. bitrate);
  2524. }
  2525. }else{
  2526. if(qset>0){
  2527. if(managed>0){
  2528. fprintf(stderr, _("Encoding %s%s%s to \n %s%s%s \nat quality level %2.2f using constrained VBR "),
  2529. fn?"\"":"", fn?fn:_("standard input"), fn?"\"":"",
  2530. outfn?"\"":"", outfn?outfn:_("standard output"), outfn?"\"":"",
  2531. quality * 10);
  2532. print_brconstraints(min,max);
  2533. fprintf(stderr, "\n");
  2534. }else{
  2535. fprintf(stderr, _("Encoding %s%s%s to \n %s%s%s \nat quality %2.2f\n"),
  2536. fn?"\"":"", fn?fn:_("standard input"), fn?"\"":"",
  2537. outfn?"\"":"", outfn?outfn:_("standard output"), outfn?"\"":"",
  2538. quality * 10);
  2539. }
  2540. }else{
  2541. fprintf(stderr, _("Encoding %s%s%s to \n %s%s%s \nusing bitrate management "),
  2542. fn?"\"":"", fn?fn:_("standard input"), fn?"\"":"",
  2543. outfn?"\"":"", outfn?outfn:_("standard output"), outfn?"\"":"");
  2544. print_brconstraints(min,max);
  2545. fprintf(stderr, "\n");
  2546. }
  2547. }
  2548. }
  2549. void start_encode_null(char *fn, char *outfn, int bitrate, float quality, int qset,
  2550. int managed, int min, int max)
  2551. {
  2552. }
  2553. /* OggEnc
  2554. **
  2555. ** This program is distributed under the GNU General Public License, version 2.
  2556. ** A copy of this license is included with this source.
  2557. **
  2558. ** Copyright 2000, Michael Smith <msmith@xiph.org>
  2559. **
  2560. ** Portions from Vorbize, (c) Kenneth Arnold <kcarnold@yahoo.com>
  2561. ** and libvorbis examples, (c) Monty <monty@xiph.org>
  2562. **/
  2563. /* Platform support routines - win32, OS/2, unix */
  2564. #if defined(_WIN32) && defined(_MSC_VER)
  2565. void setbinmode(FILE *f)
  2566. {
  2567. _setmode( _fileno(f), _O_BINARY );
  2568. }
  2569. #endif /* win32 */
  2570. #ifdef __EMX__
  2571. void setbinmode(FILE *f)
  2572. {
  2573. _fsetmode( f, "b");
  2574. }
  2575. #endif
  2576. #if defined(__WATCOMC__) || defined(__BORLANDC__)
  2577. void setbinmode(FILE *f)
  2578. {
  2579. setmode(fileno(f), O_BINARY);
  2580. }
  2581. #endif
  2582. #if defined(_WIN32) || defined(__EMX__) || defined(__WATCOMC__)
  2583. void *timer_start(void)
  2584. {
  2585. time_t *start = malloc(sizeof(time_t));
  2586. time(start);
  2587. return (void *)start;
  2588. }
  2589. double timer_time(void *timer)
  2590. {
  2591. time_t now = time(NULL);
  2592. time_t start = *((time_t *)timer);
  2593. if(now-start)
  2594. return (double)(now-start);
  2595. else
  2596. return 1; /* To avoid division by zero later, for very short inputs */
  2597. }
  2598. void timer_clear(void *timer)
  2599. {
  2600. free((time_t *)timer);
  2601. }
  2602. #else /* unix. Or at least win32 */
  2603. void *timer_start(void)
  2604. {
  2605. struct timeval *start = malloc(sizeof(struct timeval));
  2606. gettimeofday(start, NULL);
  2607. return (void *)start;
  2608. }
  2609. double timer_time(void *timer)
  2610. {
  2611. struct timeval now;
  2612. struct timeval start = *((struct timeval *)timer);
  2613. gettimeofday(&now, NULL);
  2614. return (double)now.tv_sec - (double)start.tv_sec +
  2615. ((double)now.tv_usec - (double)start.tv_usec)/1000000.0;
  2616. }
  2617. void timer_clear(void *timer)
  2618. {
  2619. free((time_t *)timer);
  2620. }
  2621. #endif
  2622. #ifdef _WIN32
  2623. #define PATH_SEPS "/\\"
  2624. #define mkdir(x,y) _mkdir((x))
  2625. /* MSVC does this, borland doesn't? */
  2626. #ifndef __BORLANDC__
  2627. #define stat _stat
  2628. #endif
  2629. #else
  2630. #define PATH_SEPS "/"
  2631. #endif
  2632. int create_directories(char *fn)
  2633. {
  2634. char *end, *start;
  2635. struct stat statbuf;
  2636. char *segment = malloc(strlen(fn)+1);
  2637. start = fn;
  2638. #ifdef _WIN32
  2639. if(strlen(fn) >= 3 && isalpha(fn[0]) && fn[1]==':')
  2640. start = start+2;
  2641. #endif
  2642. while((end = strpbrk(start+1, PATH_SEPS)) != NULL)
  2643. {
  2644. memcpy(segment, fn, end-fn);
  2645. segment[end-fn] = 0;
  2646. if(stat(segment,&statbuf)) {
  2647. if(errno == ENOENT) {
  2648. if(mkdir(segment, 0777)) {
  2649. fprintf(stderr, _("Couldn't create directory \"%s\": %s\n"),
  2650. segment, strerror(errno));
  2651. free(segment);
  2652. return -1;
  2653. }
  2654. }
  2655. else {
  2656. fprintf(stderr, _("Error checking for existence of directory %s: %s\n"),
  2657. segment, strerror(errno));
  2658. free(segment);
  2659. return -1;
  2660. }
  2661. }
  2662. #if defined(_WIN32) && !defined(__BORLANDC__)
  2663. else if(!(_S_IFDIR & statbuf.st_mode)) {
  2664. #elif defined(__BORLANDC__)
  2665. else if(!(S_IFDIR & statbuf.st_mode)) {
  2666. #else
  2667. else if(!S_ISDIR(statbuf.st_mode)) {
  2668. #endif
  2669. fprintf(stderr, _("Error: path segment \"%s\" is not a directory\n"),
  2670. segment);
  2671. free(segment);
  2672. return -1;
  2673. }
  2674. start = end+1;
  2675. }
  2676. free(segment);
  2677. return 0;
  2678. }
  2679. /* resample.c: see resample.h for interesting stuff */
  2680. /* Some systems don't define this */
  2681. #ifndef M_PI
  2682. #define M_PI 3.14159265358979323846
  2683. #endif
  2684. static int hcf(int arg1, int arg2)
  2685. {
  2686. int mult = 1;
  2687. while (~(arg1 | arg2) & 1)
  2688. arg1 >>= 1, arg2 >>= 1, mult <<= 1;
  2689. while (arg1 > 0)
  2690. {
  2691. if (~(arg1 & arg2) & 1)
  2692. {
  2693. arg1 >>= (~arg1 & 1);
  2694. arg2 >>= (~arg2 & 1);
  2695. }
  2696. else if (arg1 < arg2)
  2697. arg2 = (arg2 - arg1) >> 1;
  2698. else
  2699. arg1 = (arg1 - arg2) >> 1;
  2700. }
  2701. return arg2 * mult;
  2702. }
  2703. static void filt_sinc(float *dest, int N, int step, double fc, double gain, int width)
  2704. {
  2705. double s = fc / step;
  2706. int mid, x;
  2707. float *endpoint = dest + N,
  2708. *base = dest,
  2709. *origdest = dest;
  2710. assert(width <= N);
  2711. if ((N & 1) == 0)
  2712. {
  2713. *dest = 0.0;
  2714. dest += width;
  2715. if (dest >= endpoint)
  2716. dest = ++base;
  2717. N--;
  2718. }
  2719. mid = N / 2;
  2720. x = -mid;
  2721. while (N--)
  2722. {
  2723. *dest = (x ? sin(x * M_PI * s) / (x * M_PI) * step : fc) * gain;
  2724. x++;
  2725. dest += width;
  2726. if (dest >= endpoint)
  2727. dest = ++base;
  2728. }
  2729. assert(dest == origdest + width);
  2730. }
  2731. static double I_zero(double x)
  2732. {
  2733. int n = 0;
  2734. double u = 1.0,
  2735. s = 1.0,
  2736. t;
  2737. do
  2738. {
  2739. n += 2;
  2740. t = x / n;
  2741. u *= t * t;
  2742. s += u;
  2743. } while (u > 1e-21 * s);
  2744. return s;
  2745. }
  2746. static void win_kaiser(float *dest, int N, double alpha, int width)
  2747. {
  2748. double I_alpha, midsq;
  2749. int x;
  2750. float *endpoint = dest + N,
  2751. *base = dest,
  2752. *origdest = dest;
  2753. assert(width <= N);
  2754. if ((N & 1) == 0)
  2755. {
  2756. *dest = 0.0;
  2757. dest += width;
  2758. if (dest >= endpoint)
  2759. dest = ++base;
  2760. N--;
  2761. }
  2762. x = -(N / 2);
  2763. midsq = (double)(x - 1) * (double)(x - 1);
  2764. I_alpha = I_zero(alpha);
  2765. while (N--)
  2766. {
  2767. *dest *= I_zero(alpha * sqrt(1.0 - ((double)x * (double)x) / midsq)) / I_alpha;
  2768. x++;
  2769. dest += width;
  2770. if (dest >= endpoint)
  2771. dest = ++base;
  2772. }
  2773. assert(dest == origdest + width);
  2774. }
  2775. int res_init(res_state *state, int channels, int outfreq, int infreq, res_parameter op1, ...)
  2776. {
  2777. double beta = 16.0,
  2778. cutoff = 0.80,
  2779. gain = 1.0;
  2780. int taps = 45;
  2781. int factor;
  2782. assert(state);
  2783. assert(channels > 0);
  2784. assert(outfreq > 0);
  2785. assert(infreq > 0);
  2786. assert(taps > 0);
  2787. if (state == NULL || channels <= 0 || outfreq <= 0 || infreq <= 0 || taps <= 0)
  2788. return -1;
  2789. if (op1 != RES_END)
  2790. {
  2791. va_list argp;
  2792. va_start(argp, op1);
  2793. do
  2794. {
  2795. switch (op1)
  2796. {
  2797. case RES_GAIN:
  2798. gain = va_arg(argp, double);
  2799. break;
  2800. case RES_CUTOFF:
  2801. cutoff = va_arg(argp, double);
  2802. assert(cutoff > 0.01 && cutoff <= 1.0);
  2803. break;
  2804. case RES_TAPS:
  2805. taps = va_arg(argp, int);
  2806. assert(taps > 2 && taps < 1000);
  2807. break;
  2808. case RES_BETA:
  2809. beta = va_arg(argp, double);
  2810. assert(beta > 2.0);
  2811. break;
  2812. default:
  2813. assert("arglist" == "valid");
  2814. return -1;
  2815. }
  2816. op1 = va_arg(argp, res_parameter);
  2817. } while (op1 != RES_END);
  2818. va_end(argp);
  2819. }
  2820. factor = hcf(infreq, outfreq);
  2821. outfreq /= factor;
  2822. infreq /= factor;
  2823. /* adjust to rational values for downsampling */
  2824. if (outfreq < infreq)
  2825. {
  2826. /* push the cutoff frequency down to the output frequency */
  2827. cutoff = cutoff * outfreq / infreq;
  2828. /* compensate for the sharper roll-off requirement
  2829. * by using a bigger hammer */
  2830. taps = taps * infreq/outfreq;
  2831. }
  2832. assert(taps >= (infreq + outfreq - 1) / outfreq);
  2833. if ((state->table = calloc(outfreq * taps, sizeof(float))) == NULL)
  2834. return -1;
  2835. if ((state->pool = calloc(channels * taps, sizeof(SAMPLE))) == NULL)
  2836. {
  2837. free(state->table);
  2838. state->table = NULL;
  2839. return -1;
  2840. }
  2841. state->poolfill = taps / 2 + 1;
  2842. state->channels = channels;
  2843. state->outfreq = outfreq;
  2844. state->infreq = infreq;
  2845. state->taps = taps;
  2846. state->offset = 0;
  2847. filt_sinc(state->table, outfreq * taps, outfreq, cutoff, gain, taps);
  2848. win_kaiser(state->table, outfreq * taps, beta, taps);
  2849. return 0;
  2850. }
  2851. static SAMPLE sum(float const *scale, int count, SAMPLE const *source, SAMPLE const *trigger, SAMPLE const *reset, int srcstep)
  2852. {
  2853. float total = 0.0;
  2854. while (count--)
  2855. {
  2856. total += *source * *scale;
  2857. if (source == trigger)
  2858. source = reset, srcstep = 1;
  2859. source -= srcstep;
  2860. scale++;
  2861. }
  2862. return total;
  2863. }
  2864. static int push(res_state const * const state, SAMPLE *pool, int * const poolfill, int * const offset, SAMPLE *dest, int dststep, SAMPLE const *source, int srcstep, size_t srclen)
  2865. {
  2866. SAMPLE * const destbase = dest,
  2867. *poolhead = pool + *poolfill,
  2868. *poolend = pool + state->taps,
  2869. *newpool = pool;
  2870. SAMPLE const *refill, *base, *endpoint;
  2871. int lencheck;
  2872. assert(state);
  2873. assert(pool);
  2874. assert(poolfill);
  2875. assert(dest);
  2876. assert(source);
  2877. assert(state->poolfill != -1);
  2878. lencheck = res_push_check(state, srclen);
  2879. /* fill the pool before diving in */
  2880. while (poolhead < poolend && srclen > 0)
  2881. {
  2882. *poolhead++ = *source;
  2883. source += srcstep;
  2884. srclen--;
  2885. }
  2886. if (srclen <= 0)
  2887. return 0;
  2888. base = source;
  2889. endpoint = source + srclen * srcstep;
  2890. while (source < endpoint)
  2891. {
  2892. *dest = sum(state->table + *offset * state->taps, state->taps, source, base, poolend, srcstep);
  2893. dest += dststep;
  2894. *offset += state->infreq;
  2895. while (*offset >= state->outfreq)
  2896. {
  2897. *offset -= state->outfreq;
  2898. source += srcstep;
  2899. }
  2900. }
  2901. assert(dest == destbase + lencheck * dststep);
  2902. /* pretend that source has that underrun data we're not going to get */
  2903. srclen += (source - endpoint) / srcstep;
  2904. /* if we didn't get enough to completely replace the pool, then shift things about a bit */
  2905. if (srclen < state->taps)
  2906. {
  2907. refill = pool + srclen;
  2908. while (refill < poolend)
  2909. *newpool++ = *refill++;
  2910. refill = source - srclen * srcstep;
  2911. }
  2912. else
  2913. refill = source - state->taps * srcstep;
  2914. /* pull in fresh pool data */
  2915. while (refill < endpoint)
  2916. {
  2917. *newpool++ = *refill;
  2918. refill += srcstep;
  2919. }
  2920. assert(newpool > pool);
  2921. assert(newpool <= poolend);
  2922. *poolfill = newpool - pool;
  2923. return (dest - destbase) / dststep;
  2924. }
  2925. int res_push_max_input(res_state const * const state, size_t maxoutput)
  2926. {
  2927. return maxoutput * state->infreq / state->outfreq;
  2928. }
  2929. int res_push_check(res_state const * const state, size_t srclen)
  2930. {
  2931. if (state->poolfill < state->taps)
  2932. srclen -= state->taps - state->poolfill;
  2933. return (srclen * state->outfreq - state->offset + state->infreq - 1) / state->infreq;
  2934. }
  2935. int res_push(res_state *state, SAMPLE **dstlist, SAMPLE const **srclist, size_t srclen)
  2936. {
  2937. int result = -1, poolfill = -1, offset = -1, i;
  2938. assert(state);
  2939. assert(dstlist);
  2940. assert(srclist);
  2941. assert(state->poolfill >= 0);
  2942. for (i = 0; i < state->channels; i++)
  2943. {
  2944. poolfill = state->poolfill;
  2945. offset = state->offset;
  2946. result = push(state, state->pool + i * state->taps, &poolfill, &offset, dstlist[i], 1, srclist[i], 1, srclen);
  2947. }
  2948. state->poolfill = poolfill;
  2949. state->offset = offset;
  2950. return result;
  2951. }
  2952. int res_push_interleaved(res_state *state, SAMPLE *dest, SAMPLE const *source, size_t srclen)
  2953. {
  2954. int result = -1, poolfill = -1, offset = -1, i;
  2955. assert(state);
  2956. assert(dest);
  2957. assert(source);
  2958. assert(state->poolfill >= 0);
  2959. for (i = 0; i < state->channels; i++)
  2960. {
  2961. poolfill = state->poolfill;
  2962. offset = state->offset;
  2963. result = push(state, state->pool + i * state->taps, &poolfill, &offset, dest + i, state->channels, source + i, state->channels, srclen);
  2964. }
  2965. state->poolfill = poolfill;
  2966. state->offset = offset;
  2967. return result;
  2968. }
  2969. int res_drain(res_state *state, SAMPLE **dstlist)
  2970. {
  2971. SAMPLE *tail;
  2972. int result = -1, poolfill = -1, offset = -1, i;
  2973. assert(state);
  2974. assert(dstlist);
  2975. assert(state->poolfill >= 0);
  2976. if ((tail = calloc(state->taps, sizeof(SAMPLE))) == NULL)
  2977. return -1;
  2978. for (i = 0; i < state->channels; i++)
  2979. {
  2980. poolfill = state->poolfill;
  2981. offset = state->offset;
  2982. result = push(state, state->pool + i * state->taps, &poolfill, &offset, dstlist[i], 1, tail, 1, state->taps / 2 - 1);
  2983. }
  2984. free(tail);
  2985. state->poolfill = -1;
  2986. return result;
  2987. }
  2988. int res_drain_interleaved(res_state *state, SAMPLE *dest)
  2989. {
  2990. SAMPLE *tail;
  2991. int result = -1, poolfill = -1, offset = -1, i;
  2992. assert(state);
  2993. assert(dest);
  2994. assert(state->poolfill >= 0);
  2995. if ((tail = calloc(state->taps, sizeof(SAMPLE))) == NULL)
  2996. return -1;
  2997. for (i = 0; i < state->channels; i++)
  2998. {
  2999. poolfill = state->poolfill;
  3000. offset = state->offset;
  3001. result = push(state, state->pool + i * state->taps, &poolfill, &offset, dest + i, state->channels, tail, 1, state->taps / 2 - 1);
  3002. }
  3003. free(tail);
  3004. state->poolfill = -1;
  3005. return result;
  3006. }
  3007. void res_clear(res_state *state)
  3008. {
  3009. assert(state);
  3010. assert(state->table);
  3011. assert(state->pool);
  3012. free(state->table);
  3013. free(state->pool);
  3014. memset(state, 0, sizeof(*state));
  3015. }
  3016. /* Getopt for GNU.
  3017. NOTE: getopt is now part of the C library, so if you don't know what
  3018. "Keep this file name-space clean" means, talk to drepper@gnu.org
  3019. before changing it!
  3020. Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
  3021. Free Software Foundation, Inc.
  3022. The GNU C Library is free software; you can redistribute it and/or
  3023. modify it under the terms of the GNU Library General Public License as
  3024. published by the Free Software Foundation; either version 2 of the
  3025. License, or (at your option) any later version.
  3026. The GNU C Library is distributed in the hope that it will be useful,
  3027. but WITHOUT ANY WARRANTY; without even the implied warranty of
  3028. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  3029. Library General Public License for more details.
  3030. You should have received a copy of the GNU Library General Public
  3031. License along with the GNU C Library; see the file COPYING.LIB. If not,
  3032. write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  3033. Boston, MA 02111-1307, USA. */
  3034. /* Comment out all this code if we are using the GNU C Library, and are not
  3035. actually compiling the library itself. This code is part of the GNU C
  3036. Library, but also included in many other GNU distributions. Compiling
  3037. and linking in this code is a waste when using the GNU C library
  3038. (especially if it is a shared library). Rather than having every GNU
  3039. program understand `configure --with-gnu-libc' and omit the object files,
  3040. it is simpler to just do this in the source for each such file. */
  3041. /* This version of `getopt' appears to the caller like standard Unix `getopt'
  3042. but it behaves differently for the user, since it allows the user
  3043. to intersperse the options with the other arguments.
  3044. As `getopt' works, it permutes the elements of ARGV so that,
  3045. when it is done, all the options precede everything else. Thus
  3046. all application programs are extended to handle flexible argument order.
  3047. Setting the environment variable POSIXLY_CORRECT disables permutation.
  3048. Then the behavior is completely standard.
  3049. GNU application programs can use a third alternative mode in which
  3050. they can distinguish the relative order of options and other arguments. */
  3051. /* Names for the values of the `has_arg' field of `struct option'. */
  3052. /* For communication from `getopt' to the caller.
  3053. When `getopt' finds an option that takes an argument,
  3054. the argument value is returned here.
  3055. Also, when `ordering' is RETURN_IN_ORDER,
  3056. each non-option ARGV-element is returned here. */
  3057. char *optarg;
  3058. /* Index in ARGV of the next element to be scanned.
  3059. This is used for communication to and from the caller
  3060. and for communication between successive calls to `getopt'.
  3061. On entry to `getopt', zero means this is the first call; initialize.
  3062. When `getopt' returns -1, this is the index of the first of the
  3063. non-option elements that the caller should itself scan.
  3064. Otherwise, `optind' communicates from one call to the next
  3065. how much of ARGV has been scanned so far. */
  3066. /* 1003.2 says this must be 1 before any call. */
  3067. int optind = 1;
  3068. /* Formerly, initialization of getopt depended on optind==0, which
  3069. causes problems with re-calling getopt as programs generally don't
  3070. know that. */
  3071. int __getopt_initialized;
  3072. /* The next char to be scanned in the option-element
  3073. in which the last option character we returned was found.
  3074. This allows us to pick up the scan where we left off.
  3075. If this is zero, or a null string, it means resume the scan
  3076. by advancing to the next ARGV-element. */
  3077. static char *nextchar;
  3078. /* Callers store zero here to inhibit the error message
  3079. for unrecognized options. */
  3080. int opterr = 1;
  3081. /* Set to an option character which was unrecognized.
  3082. This must be initialized on some systems to avoid linking in the
  3083. system's own getopt implementation. */
  3084. int optopt = '?';
  3085. /* Describe how to deal with options that follow non-option ARGV-elements.
  3086. If the caller did not specify anything,
  3087. the default is REQUIRE_ORDER if the environment variable
  3088. POSIXLY_CORRECT is defined, PERMUTE otherwise.
  3089. REQUIRE_ORDER means don't recognize them as options;
  3090. stop option processing when the first non-option is seen.
  3091. This is what Unix does.
  3092. This mode of operation is selected by either setting the environment
  3093. variable POSIXLY_CORRECT, or using `+' as the first character
  3094. of the list of option characters.
  3095. PERMUTE is the default. We permute the contents of ARGV as we scan,
  3096. so that eventually all the non-options are at the end. This allows options
  3097. to be given in any order, even with programs that were not written to
  3098. expect this.
  3099. RETURN_IN_ORDER is an option available to programs that were written
  3100. to expect options and other ARGV-elements in any order and that care about
  3101. the ordering of the two. We describe each non-option ARGV-element
  3102. as if it were the argument of an option with character code 1.
  3103. Using `-' as the first character of the list of option characters
  3104. selects this mode of operation.
  3105. The special argument `--' forces an end of option-scanning regardless
  3106. of the value of `ordering'. In the case of RETURN_IN_ORDER, only
  3107. `--' can cause `getopt' to return -1 with `optind' != ARGC. */
  3108. static enum
  3109. {
  3110. REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
  3111. } ordering;
  3112. /* Value of POSIXLY_CORRECT environment variable. */
  3113. static char *posixly_correct;
  3114. #ifdef __GNU_LIBRARY__
  3115. /* We want to avoid inclusion of string.h with non-GNU libraries
  3116. because there are many ways it can cause trouble.
  3117. On some systems, it contains special magic macros that don't work
  3118. in GCC. */
  3119. # define my_index strchr
  3120. #else
  3121. /* Avoid depending on library functions or files
  3122. whose names are inconsistent. */
  3123. #ifndef getenv
  3124. extern char *getenv ();
  3125. #endif
  3126. static char *
  3127. my_index (str, chr)
  3128. const char *str;
  3129. int chr;
  3130. {
  3131. while (*str)
  3132. {
  3133. if (*str == chr)
  3134. return (char *) str;
  3135. str++;
  3136. }
  3137. return 0;
  3138. }
  3139. /* If using GCC, we can safely declare strlen this way.
  3140. If not using GCC, it is ok not to declare it. */
  3141. #ifdef __GNUC__
  3142. /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
  3143. That was relevant to code that was here before. */
  3144. # if (!defined __STDC__ || !__STDC__) && !defined strlen
  3145. /* gcc with -traditional declares the built-in strlen to return int,
  3146. and has done so at least since version 2.4.5. -- rms. */
  3147. extern int strlen (const char *);
  3148. # endif /* not __STDC__ */
  3149. #endif /* __GNUC__ */
  3150. #endif /* not __GNU_LIBRARY__ */
  3151. /* Handle permutation of arguments. */
  3152. /* Describe the part of ARGV that contains non-options that have
  3153. been skipped. `first_nonopt' is the index in ARGV of the first of them;
  3154. `last_nonopt' is the index after the last of them. */
  3155. static int first_nonopt;
  3156. static int last_nonopt;
  3157. #ifdef _LIBC
  3158. /* Bash 2.0 gives us an environment variable containing flags
  3159. indicating ARGV elements that should not be considered arguments. */
  3160. /* Defined in getopt_init.c */
  3161. extern char *__getopt_nonoption_flags;
  3162. static int nonoption_flags_max_len;
  3163. static int nonoption_flags_len;
  3164. static int original_argc;
  3165. static char *const *original_argv;
  3166. /* Make sure the environment variable bash 2.0 puts in the environment
  3167. is valid for the getopt call we must make sure that the ARGV passed
  3168. to getopt is that one passed to the process. */
  3169. static void
  3170. __attribute__ ((unused))
  3171. store_args_and_env (int argc, char *const *argv)
  3172. {
  3173. /* XXX This is no good solution. We should rather copy the args so
  3174. that we can compare them later. But we must not use malloc(3). */
  3175. original_argc = argc;
  3176. original_argv = argv;
  3177. }
  3178. # ifdef text_set_element
  3179. text_set_element (__libc_subinit, store_args_and_env);
  3180. # endif /* text_set_element */
  3181. # define SWAP_FLAGS(ch1, ch2) \
  3182. if (nonoption_flags_len > 0) \
  3183. { \
  3184. char __tmp = __getopt_nonoption_flags[ch1]; \
  3185. __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
  3186. __getopt_nonoption_flags[ch2] = __tmp; \
  3187. }
  3188. #else /* !_LIBC */
  3189. # define SWAP_FLAGS(ch1, ch2)
  3190. #endif /* _LIBC */
  3191. /* Exchange two adjacent subsequences of ARGV.
  3192. One subsequence is elements [first_nonopt,last_nonopt)
  3193. which contains all the non-options that have been skipped so far.
  3194. The other is elements [last_nonopt,optind), which contains all
  3195. the options processed since those non-options were skipped.
  3196. `first_nonopt' and `last_nonopt' are relocated so that they describe
  3197. the new indices of the non-options in ARGV after they are moved. */
  3198. #if defined __STDC__ && __STDC__
  3199. static void exchange (char **);
  3200. #endif
  3201. static void
  3202. exchange (argv)
  3203. char **argv;
  3204. {
  3205. int bottom = first_nonopt;
  3206. int middle = last_nonopt;
  3207. int top = optind;
  3208. char *tem;
  3209. /* Exchange the shorter segment with the far end of the longer segment.
  3210. That puts the shorter segment into the right place.
  3211. It leaves the longer segment in the right place overall,
  3212. but it consists of two parts that need to be swapped next. */
  3213. #ifdef _LIBC
  3214. /* First make sure the handling of the `__getopt_nonoption_flags'
  3215. string can work normally. Our top argument must be in the range
  3216. of the string. */
  3217. if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
  3218. {
  3219. /* We must extend the array. The user plays games with us and
  3220. presents new arguments. */
  3221. char *new_str = malloc (top + 1);
  3222. if (new_str == NULL)
  3223. nonoption_flags_len = nonoption_flags_max_len = 0;
  3224. else
  3225. {
  3226. memset (__mempcpy (new_str, __getopt_nonoption_flags,
  3227. nonoption_flags_max_len),
  3228. '\0', top + 1 - nonoption_flags_max_len);
  3229. nonoption_flags_max_len = top + 1;
  3230. __getopt_nonoption_flags = new_str;
  3231. }
  3232. }
  3233. #endif
  3234. while (top > middle && middle > bottom)
  3235. {
  3236. if (top - middle > middle - bottom)
  3237. {
  3238. /* Bottom segment is the short one. */
  3239. int len = middle - bottom;
  3240. register int i;
  3241. /* Swap it with the top part of the top segment. */
  3242. for (i = 0; i < len; i++)
  3243. {
  3244. tem = argv[bottom + i];
  3245. argv[bottom + i] = argv[top - (middle - bottom) + i];
  3246. argv[top - (middle - bottom) + i] = tem;
  3247. SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
  3248. }
  3249. /* Exclude the moved bottom segment from further swapping. */
  3250. top -= len;
  3251. }
  3252. else
  3253. {
  3254. /* Top segment is the short one. */
  3255. int len = top - middle;
  3256. register int i;
  3257. /* Swap it with the bottom part of the bottom segment. */
  3258. for (i = 0; i < len; i++)
  3259. {
  3260. tem = argv[bottom + i];
  3261. argv[bottom + i] = argv[middle + i];
  3262. argv[middle + i] = tem;
  3263. SWAP_FLAGS (bottom + i, middle + i);
  3264. }
  3265. /* Exclude the moved top segment from further swapping. */
  3266. bottom += len;
  3267. }
  3268. }
  3269. /* Update records for the slots the non-options now occupy. */
  3270. first_nonopt += (optind - last_nonopt);
  3271. last_nonopt = optind;
  3272. }
  3273. /* Initialize the internal data when the first call is made. */
  3274. #if defined __STDC__ && __STDC__
  3275. static const char *_getopt_initialize (int, char *const *, const char *);
  3276. #endif
  3277. static const char *
  3278. _getopt_initialize (argc, argv, optstring)
  3279. int argc;
  3280. char *const *argv;
  3281. const char *optstring;
  3282. {
  3283. /* Start processing options with ARGV-element 1 (since ARGV-element 0
  3284. is the program name); the sequence of previously skipped
  3285. non-option ARGV-elements is empty. */
  3286. first_nonopt = last_nonopt = optind;
  3287. nextchar = NULL;
  3288. posixly_correct = getenv ("POSIXLY_CORRECT");
  3289. /* Determine how to handle the ordering of options and nonoptions. */
  3290. if (optstring[0] == '-')
  3291. {
  3292. ordering = RETURN_IN_ORDER;
  3293. ++optstring;
  3294. }
  3295. else if (optstring[0] == '+')
  3296. {
  3297. ordering = REQUIRE_ORDER;
  3298. ++optstring;
  3299. }
  3300. else if (posixly_correct != NULL)
  3301. ordering = REQUIRE_ORDER;
  3302. else
  3303. ordering = PERMUTE;
  3304. #ifdef _LIBC
  3305. if (posixly_correct == NULL
  3306. && argc == original_argc && argv == original_argv)
  3307. {
  3308. if (nonoption_flags_max_len == 0)
  3309. {
  3310. if (__getopt_nonoption_flags == NULL
  3311. || __getopt_nonoption_flags[0] == '\0')
  3312. nonoption_flags_max_len = -1;
  3313. else
  3314. {
  3315. const char *orig_str = __getopt_nonoption_flags;
  3316. int len = nonoption_flags_max_len = strlen (orig_str);
  3317. if (nonoption_flags_max_len < argc)
  3318. nonoption_flags_max_len = argc;
  3319. __getopt_nonoption_flags =
  3320. (char *) malloc (nonoption_flags_max_len);
  3321. if (__getopt_nonoption_flags == NULL)
  3322. nonoption_flags_max_len = -1;
  3323. else
  3324. memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
  3325. '\0', nonoption_flags_max_len - len);
  3326. }
  3327. }
  3328. nonoption_flags_len = nonoption_flags_max_len;
  3329. }
  3330. else
  3331. nonoption_flags_len = 0;
  3332. #endif
  3333. return optstring;
  3334. }
  3335. /* Scan elements of ARGV (whose length is ARGC) for option characters
  3336. given in OPTSTRING.
  3337. If an element of ARGV starts with '-', and is not exactly "-" or "--",
  3338. then it is an option element. The characters of this element
  3339. (aside from the initial '-') are option characters. If `getopt'
  3340. is called repeatedly, it returns successively each of the option characters
  3341. from each of the option elements.
  3342. If `getopt' finds another option character, it returns that character,
  3343. updating `optind' and `nextchar' so that the next call to `getopt' can
  3344. resume the scan with the following option character or ARGV-element.
  3345. If there are no more option characters, `getopt' returns -1.
  3346. Then `optind' is the index in ARGV of the first ARGV-element
  3347. that is not an option. (The ARGV-elements have been permuted
  3348. so that those that are not options now come last.)
  3349. OPTSTRING is a string containing the legitimate option characters.
  3350. If an option character is seen that is not listed in OPTSTRING,
  3351. return '?' after printing an error message. If you set `opterr' to
  3352. zero, the error message is suppressed but we still return '?'.
  3353. If a char in OPTSTRING is followed by a colon, that means it wants an arg,
  3354. so the following text in the same ARGV-element, or the text of the following
  3355. ARGV-element, is returned in `optarg'. Two colons mean an option that
  3356. wants an optional arg; if there is text in the current ARGV-element,
  3357. it is returned in `optarg', otherwise `optarg' is set to zero.
  3358. If OPTSTRING starts with `-' or `+', it requests different methods of
  3359. handling the non-option ARGV-elements.
  3360. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
  3361. Long-named options begin with `--' instead of `-'.
  3362. Their names may be abbreviated as long as the abbreviation is unique
  3363. or is an exact match for some defined option. If they have an
  3364. argument, it follows the option name in the same ARGV-element, separated
  3365. from the option name by a `=', or else the in next ARGV-element.
  3366. When `getopt' finds a long-named option, it returns 0 if that option's
  3367. `flag' field is nonzero, the value of the option's `val' field
  3368. if the `flag' field is zero.
  3369. The elements of ARGV aren't really const, because we permute them.
  3370. But we pretend they're const in the prototype to be compatible
  3371. with other systems.
  3372. LONGOPTS is a vector of `struct option' terminated by an
  3373. element containing a name which is zero.
  3374. LONGIND returns the index in LONGOPT of the long-named option found.
  3375. It is only valid when a long-named option has been found by the most
  3376. recent call.
  3377. If LONG_ONLY is nonzero, '-' as well as '--' can introduce
  3378. long-named options. */
  3379. int
  3380. _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
  3381. int argc;
  3382. char *const *argv;
  3383. const char *optstring;
  3384. const struct option *longopts;
  3385. int *longind;
  3386. int long_only;
  3387. {
  3388. optarg = NULL;
  3389. if (optind == 0 || !__getopt_initialized)
  3390. {
  3391. if (optind == 0)
  3392. optind = 1; /* Don't scan ARGV[0], the program name. */
  3393. optstring = _getopt_initialize (argc, argv, optstring);
  3394. __getopt_initialized = 1;
  3395. }
  3396. /* Test whether ARGV[optind] points to a non-option argument.
  3397. Either it does not have option syntax, or there is an environment flag
  3398. from the shell indicating it is not an option. The later information
  3399. is only used when the used in the GNU libc. */
  3400. #ifdef _LIBC
  3401. # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
  3402. || (optind < nonoption_flags_len \
  3403. && __getopt_nonoption_flags[optind] == '1'))
  3404. #else
  3405. # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
  3406. #endif
  3407. if (nextchar == NULL || *nextchar == '\0')
  3408. {
  3409. /* Advance to the next ARGV-element. */
  3410. /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
  3411. moved back by the user (who may also have changed the arguments). */
  3412. if (last_nonopt > optind)
  3413. last_nonopt = optind;
  3414. if (first_nonopt > optind)
  3415. first_nonopt = optind;
  3416. if (ordering == PERMUTE)
  3417. {
  3418. /* If we have just processed some options following some non-options,
  3419. exchange them so that the options come first. */
  3420. if (first_nonopt != last_nonopt && last_nonopt != optind)
  3421. exchange ((char **) argv);
  3422. else if (last_nonopt != optind)
  3423. first_nonopt = optind;
  3424. /* Skip any additional non-options
  3425. and extend the range of non-options previously skipped. */
  3426. while (optind < argc && NONOPTION_P)
  3427. optind++;
  3428. last_nonopt = optind;
  3429. }
  3430. /* The special ARGV-element `--' means premature end of options.
  3431. Skip it like a null option,
  3432. then exchange with previous non-options as if it were an option,
  3433. then skip everything else like a non-option. */
  3434. if (optind != argc && !strcmp (argv[optind], "--"))
  3435. {
  3436. optind++;
  3437. if (first_nonopt != last_nonopt && last_nonopt != optind)
  3438. exchange ((char **) argv);
  3439. else if (first_nonopt == last_nonopt)
  3440. first_nonopt = optind;
  3441. last_nonopt = argc;
  3442. optind = argc;
  3443. }
  3444. /* If we have done all the ARGV-elements, stop the scan
  3445. and back over any non-options that we skipped and permuted. */
  3446. if (optind == argc)
  3447. {
  3448. /* Set the next-arg-index to point at the non-options
  3449. that we previously skipped, so the caller will digest them. */
  3450. if (first_nonopt != last_nonopt)
  3451. optind = first_nonopt;
  3452. return -1;
  3453. }
  3454. /* If we have come to a non-option and did not permute it,
  3455. either stop the scan or describe it to the caller and pass it by. */
  3456. if (NONOPTION_P)
  3457. {
  3458. if (ordering == REQUIRE_ORDER)
  3459. return -1;
  3460. optarg = argv[optind++];
  3461. return 1;
  3462. }
  3463. /* We have found another option-ARGV-element.
  3464. Skip the initial punctuation. */
  3465. nextchar = (argv[optind] + 1
  3466. + (longopts != NULL && argv[optind][1] == '-'));
  3467. }
  3468. /* Decode the current option-ARGV-element. */
  3469. /* Check whether the ARGV-element is a long option.
  3470. If long_only and the ARGV-element has the form "-f", where f is
  3471. a valid short option, don't consider it an abbreviated form of
  3472. a long option that starts with f. Otherwise there would be no
  3473. way to give the -f short option.
  3474. On the other hand, if there's a long option "fubar" and
  3475. the ARGV-element is "-fu", do consider that an abbreviation of
  3476. the long option, just like "--fu", and not "-f" with arg "u".
  3477. This distinction seems to be the most useful approach. */
  3478. if (longopts != NULL
  3479. && (argv[optind][1] == '-'
  3480. || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
  3481. {
  3482. char *nameend;
  3483. const struct option *p;
  3484. const struct option *pfound = NULL;
  3485. int exact = 0;
  3486. int ambig = 0;
  3487. int indfound = -1;
  3488. int option_index;
  3489. for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
  3490. /* Do nothing. */ ;
  3491. /* Test all long options for either exact match
  3492. or abbreviated matches. */
  3493. for (p = longopts, option_index = 0; p->name; p++, option_index++)
  3494. if (!strncmp (p->name, nextchar, nameend - nextchar))
  3495. {
  3496. if ((unsigned int) (nameend - nextchar)
  3497. == (unsigned int) strlen (p->name))
  3498. {
  3499. /* Exact match found. */
  3500. pfound = p;
  3501. indfound = option_index;
  3502. exact = 1;
  3503. break;
  3504. }
  3505. else if (pfound == NULL)
  3506. {
  3507. /* First nonexact match found. */
  3508. pfound = p;
  3509. indfound = option_index;
  3510. }
  3511. else
  3512. /* Second or later nonexact match found. */
  3513. ambig = 1;
  3514. }
  3515. if (ambig && !exact)
  3516. {
  3517. if (opterr)
  3518. fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
  3519. argv[0], argv[optind]);
  3520. nextchar += strlen (nextchar);
  3521. optind++;
  3522. optopt = 0;
  3523. return '?';
  3524. }
  3525. if (pfound != NULL)
  3526. {
  3527. option_index = indfound;
  3528. optind++;
  3529. if (*nameend)
  3530. {
  3531. /* Don't test has_arg with >, because some C compilers don't
  3532. allow it to be used on enums. */
  3533. if (pfound->has_arg)
  3534. optarg = nameend + 1;
  3535. else
  3536. {
  3537. if (opterr)
  3538. {
  3539. if (argv[optind - 1][1] == '-')
  3540. /* --option */
  3541. fprintf (stderr,
  3542. _("%s: option `--%s' doesn't allow an argument\n"),
  3543. argv[0], pfound->name);
  3544. else
  3545. /* +option or -option */
  3546. fprintf (stderr,
  3547. _("%s: option `%c%s' doesn't allow an argument\n"),
  3548. argv[0], argv[optind - 1][0], pfound->name);
  3549. }
  3550. nextchar += strlen (nextchar);
  3551. optopt = pfound->val;
  3552. return '?';
  3553. }
  3554. }
  3555. else if (pfound->has_arg == 1)
  3556. {
  3557. if (optind < argc)
  3558. optarg = argv[optind++];
  3559. else
  3560. {
  3561. if (opterr)
  3562. fprintf (stderr,
  3563. _("%s: option `%s' requires an argument\n"),
  3564. argv[0], argv[optind - 1]);
  3565. nextchar += strlen (nextchar);
  3566. optopt = pfound->val;
  3567. return optstring[0] == ':' ? ':' : '?';
  3568. }
  3569. }
  3570. nextchar += strlen (nextchar);
  3571. if (longind != NULL)
  3572. *longind = option_index;
  3573. if (pfound->flag)
  3574. {
  3575. *(pfound->flag) = pfound->val;
  3576. return 0;
  3577. }
  3578. return pfound->val;
  3579. }
  3580. /* Can't find it as a long option. If this is not getopt_long_only,
  3581. or the option starts with '--' or is not a valid short
  3582. option, then it's an error.
  3583. Otherwise interpret it as a short option. */
  3584. if (!long_only || argv[optind][1] == '-'
  3585. || my_index (optstring, *nextchar) == NULL)
  3586. {
  3587. if (opterr)
  3588. {
  3589. if (argv[optind][1] == '-')
  3590. /* --option */
  3591. fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
  3592. argv[0], nextchar);
  3593. else
  3594. /* +option or -option */
  3595. fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
  3596. argv[0], argv[optind][0], nextchar);
  3597. }
  3598. nextchar = (char *) "";
  3599. optind++;
  3600. optopt = 0;
  3601. return '?';
  3602. }
  3603. }
  3604. /* Look at and handle the next short option-character. */
  3605. {
  3606. char c = *nextchar++;
  3607. char *temp = my_index (optstring, c);
  3608. /* Increment `optind' when we start to process its last character. */
  3609. if (*nextchar == '\0')
  3610. ++optind;
  3611. if (temp == NULL || c == ':')
  3612. {
  3613. if (opterr)
  3614. {
  3615. if (posixly_correct)
  3616. /* 1003.2 specifies the format of this message. */
  3617. fprintf (stderr, _("%s: illegal option -- %c\n"),
  3618. argv[0], c);
  3619. else
  3620. fprintf (stderr, _("%s: invalid option -- %c\n"),
  3621. argv[0], c);
  3622. }
  3623. optopt = c;
  3624. return '?';
  3625. }
  3626. /* Convenience. Treat POSIX -W foo same as long option --foo */
  3627. if (temp[0] == 'W' && temp[1] == ';')
  3628. {
  3629. char *nameend;
  3630. const struct option *p;
  3631. const struct option *pfound = NULL;
  3632. int exact = 0;
  3633. int ambig = 0;
  3634. int indfound = 0;
  3635. int option_index;
  3636. /* This is an option that requires an argument. */
  3637. if (*nextchar != '\0')
  3638. {
  3639. optarg = nextchar;
  3640. /* If we end this ARGV-element by taking the rest as an arg,
  3641. we must advance to the next element now. */
  3642. optind++;
  3643. }
  3644. else if (optind == argc)
  3645. {
  3646. if (opterr)
  3647. {
  3648. /* 1003.2 specifies the format of this message. */
  3649. fprintf (stderr, _("%s: option requires an argument -- %c\n"),
  3650. argv[0], c);
  3651. }
  3652. optopt = c;
  3653. if (optstring[0] == ':')
  3654. c = ':';
  3655. else
  3656. c = '?';
  3657. return c;
  3658. }
  3659. else
  3660. /* We already incremented `optind' once;
  3661. increment it again when taking next ARGV-elt as argument. */
  3662. optarg = argv[optind++];
  3663. /* optarg is now the argument, see if it's in the
  3664. table of longopts. */
  3665. for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
  3666. /* Do nothing. */ ;
  3667. /* Test all long options for either exact match
  3668. or abbreviated matches. */
  3669. for (p = longopts, option_index = 0; p->name; p++, option_index++)
  3670. if (!strncmp (p->name, nextchar, nameend - nextchar))
  3671. {
  3672. if ((unsigned int) (nameend - nextchar) == strlen (p->name))
  3673. {
  3674. /* Exact match found. */
  3675. pfound = p;
  3676. indfound = option_index;
  3677. exact = 1;
  3678. break;
  3679. }
  3680. else if (pfound == NULL)
  3681. {
  3682. /* First nonexact match found. */
  3683. pfound = p;
  3684. indfound = option_index;
  3685. }
  3686. else
  3687. /* Second or later nonexact match found. */
  3688. ambig = 1;
  3689. }
  3690. if (ambig && !exact)
  3691. {
  3692. if (opterr)
  3693. fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
  3694. argv[0], argv[optind]);
  3695. nextchar += strlen (nextchar);
  3696. optind++;
  3697. return '?';
  3698. }
  3699. if (pfound != NULL)
  3700. {
  3701. option_index = indfound;
  3702. if (*nameend)
  3703. {
  3704. /* Don't test has_arg with >, because some C compilers don't
  3705. allow it to be used on enums. */
  3706. if (pfound->has_arg)
  3707. optarg = nameend + 1;
  3708. else
  3709. {
  3710. if (opterr)
  3711. fprintf (stderr, _("\
  3712. %s: option `-W %s' doesn't allow an argument\n"),
  3713. argv[0], pfound->name);
  3714. nextchar += strlen (nextchar);
  3715. return '?';
  3716. }
  3717. }
  3718. else if (pfound->has_arg == 1)
  3719. {
  3720. if (optind < argc)
  3721. optarg = argv[optind++];
  3722. else
  3723. {
  3724. if (opterr)
  3725. fprintf (stderr,
  3726. _("%s: option `%s' requires an argument\n"),
  3727. argv[0], argv[optind - 1]);
  3728. nextchar += strlen (nextchar);
  3729. return optstring[0] == ':' ? ':' : '?';
  3730. }
  3731. }
  3732. nextchar += strlen (nextchar);
  3733. if (longind != NULL)
  3734. *longind = option_index;
  3735. if (pfound->flag)
  3736. {
  3737. *(pfound->flag) = pfound->val;
  3738. return 0;
  3739. }
  3740. return pfound->val;
  3741. }
  3742. nextchar = NULL;
  3743. return 'W'; /* Let the application handle it. */
  3744. }
  3745. if (temp[1] == ':')
  3746. {
  3747. if (temp[2] == ':')
  3748. {
  3749. /* This is an option that accepts an argument optionally. */
  3750. if (*nextchar != '\0')
  3751. {
  3752. optarg = nextchar;
  3753. optind++;
  3754. }
  3755. else
  3756. optarg = NULL;
  3757. nextchar = NULL;
  3758. }
  3759. else
  3760. {
  3761. /* This is an option that requires an argument. */
  3762. if (*nextchar != '\0')
  3763. {
  3764. optarg = nextchar;
  3765. /* If we end this ARGV-element by taking the rest as an arg,
  3766. we must advance to the next element now. */
  3767. optind++;
  3768. }
  3769. else if (optind == argc)
  3770. {
  3771. if (opterr)
  3772. {
  3773. /* 1003.2 specifies the format of this message. */
  3774. fprintf (stderr,
  3775. _("%s: option requires an argument -- %c\n"),
  3776. argv[0], c);
  3777. }
  3778. optopt = c;
  3779. if (optstring[0] == ':')
  3780. c = ':';
  3781. else
  3782. c = '?';
  3783. }
  3784. else
  3785. /* We already incremented `optind' once;
  3786. increment it again when taking next ARGV-elt as argument. */
  3787. optarg = argv[optind++];
  3788. nextchar = NULL;
  3789. }
  3790. }
  3791. return c;
  3792. }
  3793. }
  3794. int
  3795. getopt (argc, argv, optstring)
  3796. int argc;
  3797. char *const *argv;
  3798. const char *optstring;
  3799. {
  3800. return _getopt_internal (argc, argv, optstring,
  3801. (const struct option *) 0,
  3802. (int *) 0,
  3803. 0);
  3804. }
  3805. int
  3806. getopt_long (argc, argv, options, long_options, opt_index)
  3807. int argc;
  3808. char *const *argv;
  3809. const char *options;
  3810. const struct option *long_options;
  3811. int *opt_index;
  3812. {
  3813. return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
  3814. }
  3815. int
  3816. getopt_long_only (argc, argv, options, long_options, opt_index)
  3817. int argc;
  3818. char *const *argv;
  3819. const char *options;
  3820. const struct option *long_options;
  3821. int *opt_index;
  3822. {
  3823. return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
  3824. }
  3825. /********************************************************************
  3826. * *
  3827. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  3828. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  3829. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  3830. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  3831. * *
  3832. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  3833. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  3834. * *
  3835. ********************************************************************
  3836. function: simple programmatic interface for encoder mode setup
  3837. last mod: $Id: vorbisenc.c,v 1.47 2002/07/11 06:40:50 xiphmont Exp $
  3838. ********************************************************************/
  3839. /********************************************************************
  3840. * *
  3841. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  3842. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  3843. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  3844. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  3845. * *
  3846. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  3847. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  3848. * *
  3849. ********************************************************************
  3850. function: libvorbis codec headers
  3851. last mod: $Id: codec_internal.h,v 1.17 2003/08/18 05:34:01 xiphmont Exp $
  3852. ********************************************************************/
  3853. #define _V_CODECI_H_
  3854. /********************************************************************
  3855. * *
  3856. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  3857. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  3858. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  3859. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  3860. * *
  3861. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  3862. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  3863. * *
  3864. ********************************************************************
  3865. function: PCM data envelope analysis and manipulation
  3866. last mod: $Id: envelope.h,v 1.25 2002/07/11 06:40:48 xiphmont Exp $
  3867. ********************************************************************/
  3868. #define _V_ENVELOPE_
  3869. /********************************************************************
  3870. * *
  3871. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  3872. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  3873. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  3874. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  3875. * *
  3876. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  3877. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  3878. * *
  3879. ********************************************************************
  3880. function: modified discrete cosine transform prototypes
  3881. last mod: $Id: mdct.h,v 1.20 2002/01/22 11:59:00 xiphmont Exp $
  3882. ********************************************************************/
  3883. #define _OGG_mdct_H_
  3884. /*#define MDCT_INTEGERIZED <- be warned there could be some hurt left here*/
  3885. #ifdef MDCT_INTEGERIZED
  3886. #define DATA_TYPE int
  3887. #define REG_TYPE register int
  3888. #define TRIGBITS 14
  3889. #define cPI3_8 6270
  3890. #define cPI2_8 11585
  3891. #define cPI1_8 15137
  3892. #define FLOAT_CONV(x) ((int)((x)*(1<<TRIGBITS)+.5))
  3893. #define MULT_NORM(x) ((x)>>TRIGBITS)
  3894. #define HALVE(x) ((x)>>1)
  3895. #else
  3896. #define DATA_TYPE float
  3897. #define REG_TYPE float
  3898. #define cPI3_8 .38268343236508977175F
  3899. #define cPI2_8 .70710678118654752441F
  3900. #define cPI1_8 .92387953251128675613F
  3901. #define FLOAT_CONV(x) (x)
  3902. #define MULT_NORM(x) (x)
  3903. #define HALVE(x) ((x)*.5f)
  3904. #endif
  3905. typedef struct {
  3906. int n;
  3907. int log2n;
  3908. DATA_TYPE *trig;
  3909. int *bitrev;
  3910. DATA_TYPE scale;
  3911. } mdct_lookup;
  3912. extern void mdct_init(mdct_lookup *lookup,int n);
  3913. extern void mdct_clear(mdct_lookup *l);
  3914. extern void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out);
  3915. extern void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out);
  3916. #define VE_PRE 16
  3917. #define VE_WIN 4
  3918. #define VE_POST 2
  3919. #define VE_AMP (VE_PRE+VE_POST-1)
  3920. #define VE_BANDS 7
  3921. #define VE_NEARDC 15
  3922. #define VE_MINSTRETCH 2 /* a bit less than short block */
  3923. #define VE_MAXSTRETCH 12 /* one-third full block */
  3924. typedef struct {
  3925. float ampbuf[VE_AMP];
  3926. int ampptr;
  3927. float nearDC[VE_NEARDC];
  3928. float nearDC_acc;
  3929. float nearDC_partialacc;
  3930. int nearptr;
  3931. } envelope_filter_state;
  3932. typedef struct {
  3933. int begin;
  3934. int end;
  3935. float *window;
  3936. float total;
  3937. } envelope_band;
  3938. typedef struct {
  3939. int ch;
  3940. int winlength;
  3941. int searchstep;
  3942. float minenergy;
  3943. mdct_lookup mdct;
  3944. float *mdct_win;
  3945. envelope_band band[VE_BANDS];
  3946. envelope_filter_state *filter;
  3947. int stretch;
  3948. int *mark;
  3949. long storage;
  3950. long current;
  3951. long curmark;
  3952. long cursor;
  3953. } envelope_lookup;
  3954. extern void _ve_envelope_init(envelope_lookup *e,vorbis_info *vi);
  3955. extern void _ve_envelope_clear(envelope_lookup *e);
  3956. extern long _ve_envelope_search(vorbis_dsp_state *v);
  3957. extern void _ve_envelope_shift(envelope_lookup *e,long shift);
  3958. extern int _ve_envelope_mark(vorbis_dsp_state *v);
  3959. /********************************************************************
  3960. * *
  3961. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  3962. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  3963. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  3964. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  3965. * *
  3966. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  3967. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  3968. * *
  3969. ********************************************************************
  3970. function: basic shared codebook operations
  3971. last mod: $Id: codebook.h,v 1.13 2002/06/28 22:19:35 xiphmont Exp $
  3972. ********************************************************************/
  3973. #define _V_CODEBOOK_H_
  3974. /* This structure encapsulates huffman and VQ style encoding books; it
  3975. doesn't do anything specific to either.
  3976. valuelist/quantlist are nonNULL (and q_* significant) only if
  3977. there's entry->value mapping to be done.
  3978. If encode-side mapping must be done (and thus the entry needs to be
  3979. hunted), the auxiliary encode pointer will point to a decision
  3980. tree. This is true of both VQ and huffman, but is mostly useful
  3981. with VQ.
  3982. */
  3983. typedef struct static_codebook{
  3984. long dim; /* codebook dimensions (elements per vector) */
  3985. long entries; /* codebook entries */
  3986. long *lengthlist; /* codeword lengths in bits */
  3987. /* mapping ***************************************************************/
  3988. int maptype; /* 0=none
  3989. 1=implicitly populated values from map column
  3990. 2=listed arbitrary values */
  3991. /* The below does a linear, single monotonic sequence mapping. */
  3992. long q_min; /* packed 32 bit float; quant value 0 maps to minval */
  3993. long q_delta; /* packed 32 bit float; val 1 - val 0 == delta */
  3994. int q_quant; /* bits: 0 < quant <= 16 */
  3995. int q_sequencep; /* bitflag */
  3996. long *quantlist; /* map == 1: (int)(entries^(1/dim)) element column map
  3997. map == 2: list of dim*entries quantized entry vals
  3998. */
  3999. /* encode helpers ********************************************************/
  4000. struct encode_aux_nearestmatch *nearest_tree;
  4001. struct encode_aux_threshmatch *thresh_tree;
  4002. struct encode_aux_pigeonhole *pigeon_tree;
  4003. int allocedp;
  4004. } static_codebook;
  4005. /* this structures an arbitrary trained book to quickly find the
  4006. nearest cell match */
  4007. typedef struct encode_aux_nearestmatch{
  4008. /* pre-calculated partitioning tree */
  4009. long *ptr0;
  4010. long *ptr1;
  4011. long *p; /* decision points (each is an entry) */
  4012. long *q; /* decision points (each is an entry) */
  4013. long aux; /* number of tree entries */
  4014. long alloc;
  4015. } encode_aux_nearestmatch;
  4016. /* assumes a maptype of 1; encode side only, so that's OK */
  4017. typedef struct encode_aux_threshmatch{
  4018. float *quantthresh;
  4019. long *quantmap;
  4020. int quantvals;
  4021. int threshvals;
  4022. } encode_aux_threshmatch;
  4023. typedef struct encode_aux_pigeonhole{
  4024. float min;
  4025. float del;
  4026. int mapentries;
  4027. int quantvals;
  4028. long *pigeonmap;
  4029. long fittotal;
  4030. long *fitlist;
  4031. long *fitmap;
  4032. long *fitlength;
  4033. } encode_aux_pigeonhole;
  4034. typedef struct codebook{
  4035. long dim; /* codebook dimensions (elements per vector) */
  4036. long entries; /* codebook entries */
  4037. long used_entries; /* populated codebook entries */
  4038. const static_codebook *c;
  4039. /* for encode, the below are entry-ordered, fully populated */
  4040. /* for decode, the below are ordered by bitreversed codeword and only
  4041. used entries are populated */
  4042. float *valuelist; /* list of dim*entries actual entry values */
  4043. ogg_uint32_t *codelist; /* list of bitstream codewords for each entry */
  4044. int *dec_index; /* only used if sparseness collapsed */
  4045. char *dec_codelengths;
  4046. ogg_uint32_t *dec_firsttable;
  4047. int dec_firsttablen;
  4048. int dec_maxlength;
  4049. } codebook;
  4050. extern void vorbis_staticbook_clear(static_codebook *b);
  4051. extern void vorbis_staticbook_destroy(static_codebook *b);
  4052. extern int vorbis_book_init_encode(codebook *dest,const static_codebook *source);
  4053. extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source);
  4054. extern void vorbis_book_clear(codebook *b);
  4055. extern float *_book_unquantize(const static_codebook *b,int n,int *map);
  4056. extern float *_book_logdist(const static_codebook *b,float *vals);
  4057. extern float _float32_unpack(long val);
  4058. extern long _float32_pack(float val);
  4059. extern int _best(codebook *book, float *a, int step);
  4060. extern int _ilog(unsigned int v);
  4061. extern long _book_maptype1_quantvals(const static_codebook *b);
  4062. extern int vorbis_book_besterror(codebook *book,float *a,int step,int addmul);
  4063. extern long vorbis_book_codeword(codebook *book,int entry);
  4064. extern long vorbis_book_codelen(codebook *book,int entry);
  4065. extern int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *b);
  4066. extern int vorbis_staticbook_unpack(oggpack_buffer *b,static_codebook *c);
  4067. extern int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b);
  4068. extern int vorbis_book_errorv(codebook *book, float *a);
  4069. extern int vorbis_book_encodev(codebook *book, int best,float *a,
  4070. oggpack_buffer *b);
  4071. extern long vorbis_book_decode(codebook *book, oggpack_buffer *b);
  4072. extern long vorbis_book_decodevs_add(codebook *book, float *a,
  4073. oggpack_buffer *b,int n);
  4074. extern long vorbis_book_decodev_set(codebook *book, float *a,
  4075. oggpack_buffer *b,int n);
  4076. extern long vorbis_book_decodev_add(codebook *book, float *a,
  4077. oggpack_buffer *b,int n);
  4078. extern long vorbis_book_decodevv_add(codebook *book, float **a,
  4079. long off,int ch,
  4080. oggpack_buffer *b,int n);
  4081. #define BLOCKTYPE_IMPULSE 0
  4082. #define BLOCKTYPE_PADDING 1
  4083. #define BLOCKTYPE_TRANSITION 0
  4084. #define BLOCKTYPE_LONG 1
  4085. #define PACKETBLOBS 15
  4086. typedef struct vorbis_block_internal{
  4087. float **pcmdelay; /* this is a pointer into local storage */
  4088. float ampmax;
  4089. int blocktype;
  4090. ogg_uint32_t packetblob_markers[PACKETBLOBS];
  4091. } vorbis_block_internal;
  4092. typedef void vorbis_look_floor;
  4093. typedef void vorbis_look_residue;
  4094. typedef void vorbis_look_transform;
  4095. /* mode ************************************************************/
  4096. typedef struct {
  4097. int blockflag;
  4098. int windowtype;
  4099. int transformtype;
  4100. int mapping;
  4101. } vorbis_info_mode;
  4102. typedef void vorbis_info_floor;
  4103. typedef void vorbis_info_residue;
  4104. typedef void vorbis_info_mapping;
  4105. /********************************************************************
  4106. * *
  4107. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  4108. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  4109. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  4110. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  4111. * *
  4112. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  4113. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  4114. * *
  4115. ********************************************************************
  4116. function: random psychoacoustics (not including preecho)
  4117. last mod: $Id: psy.h,v 1.32 2002/07/13 06:12:47 xiphmont Exp $
  4118. ********************************************************************/
  4119. #define _V_PSY_H_
  4120. /********************************************************************
  4121. * *
  4122. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  4123. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  4124. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  4125. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  4126. * *
  4127. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  4128. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  4129. * *
  4130. ********************************************************************
  4131. function: fft transform
  4132. last mod: $Id: smallft.h,v 1.12 2002/07/11 06:40:50 xiphmont Exp $
  4133. ********************************************************************/
  4134. #define _V_SMFT_H_
  4135. typedef struct {
  4136. int n;
  4137. float *trigcache;
  4138. int *splitcache;
  4139. } drft_lookup;
  4140. extern void drft_forward(drft_lookup *l,float *data);
  4141. extern void drft_backward(drft_lookup *l,float *data);
  4142. extern void drft_init(drft_lookup *l,int n);
  4143. extern void drft_clear(drft_lookup *l);
  4144. /********************************************************************
  4145. * *
  4146. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  4147. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  4148. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  4149. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  4150. * *
  4151. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  4152. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  4153. * *
  4154. ********************************************************************
  4155. function: libvorbis backend and mapping structures; needed for
  4156. static mode headers
  4157. last mod: $Id: backends.h,v 1.14 2002/07/11 06:40:48 xiphmont Exp $
  4158. ********************************************************************/
  4159. /* this is exposed up here because we need it for static modes.
  4160. Lookups for each backend aren't exposed because there's no reason
  4161. to do so */
  4162. #define _vorbis_backend_h_
  4163. /* this would all be simpler/shorter with templates, but.... */
  4164. /* Floor backend generic *****************************************/
  4165. typedef struct{
  4166. void (*pack) (vorbis_info_floor *,oggpack_buffer *);
  4167. vorbis_info_floor *(*unpack)(vorbis_info *,oggpack_buffer *);
  4168. vorbis_look_floor *(*look) (vorbis_dsp_state *,vorbis_info_floor *);
  4169. void (*free_info) (vorbis_info_floor *);
  4170. void (*free_look) (vorbis_look_floor *);
  4171. void *(*inverse1) (struct vorbis_block *,vorbis_look_floor *);
  4172. int (*inverse2) (struct vorbis_block *,vorbis_look_floor *,
  4173. void *buffer,float *);
  4174. } vorbis_func_floor;
  4175. typedef struct{
  4176. int order;
  4177. long rate;
  4178. long barkmap;
  4179. int ampbits;
  4180. int ampdB;
  4181. int numbooks; /* <= 16 */
  4182. int books[16];
  4183. float lessthan; /* encode-only config setting hacks for libvorbis */
  4184. float greaterthan; /* encode-only config setting hacks for libvorbis */
  4185. } vorbis_info_floor0;
  4186. #define VIF_POSIT 63
  4187. #define VIF_CLASS 16
  4188. #define VIF_PARTS 31
  4189. typedef struct{
  4190. int partitions; /* 0 to 31 */
  4191. int partitionclass[VIF_PARTS]; /* 0 to 15 */
  4192. int class_dim[VIF_CLASS]; /* 1 to 8 */
  4193. int class_subs[VIF_CLASS]; /* 0,1,2,3 (bits: 1<<n poss) */
  4194. int class_book[VIF_CLASS]; /* subs ^ dim entries */
  4195. int class_subbook[VIF_CLASS][8]; /* [VIF_CLASS][subs] */
  4196. int mult; /* 1 2 3 or 4 */
  4197. int postlist[VIF_POSIT+2]; /* first two implicit */
  4198. /* encode side analysis parameters */
  4199. float maxover;
  4200. float maxunder;
  4201. float maxerr;
  4202. float twofitweight;
  4203. float twofitatten;
  4204. int n;
  4205. } vorbis_info_floor1;
  4206. /* Residue backend generic *****************************************/
  4207. typedef struct{
  4208. void (*pack) (vorbis_info_residue *,oggpack_buffer *);
  4209. vorbis_info_residue *(*unpack)(vorbis_info *,oggpack_buffer *);
  4210. vorbis_look_residue *(*look) (vorbis_dsp_state *,
  4211. vorbis_info_residue *);
  4212. void (*free_info) (vorbis_info_residue *);
  4213. void (*free_look) (vorbis_look_residue *);
  4214. long **(*class) (struct vorbis_block *,vorbis_look_residue *,
  4215. float **,int *,int);
  4216. int (*forward) (struct vorbis_block *,vorbis_look_residue *,
  4217. float **,float **,int *,int,long **);
  4218. int (*inverse) (struct vorbis_block *,vorbis_look_residue *,
  4219. float **,int *,int);
  4220. } vorbis_func_residue;
  4221. typedef struct vorbis_info_residue0{
  4222. /* block-partitioned VQ coded straight residue */
  4223. long begin;
  4224. long end;
  4225. /* first stage (lossless partitioning) */
  4226. int grouping; /* group n vectors per partition */
  4227. int partitions; /* possible codebooks for a partition */
  4228. int groupbook; /* huffbook for partitioning */
  4229. int secondstages[64]; /* expanded out to pointers in lookup */
  4230. int booklist[256]; /* list of second stage books */
  4231. float classmetric1[64];
  4232. float classmetric2[64];
  4233. } vorbis_info_residue0;
  4234. /* Mapping backend generic *****************************************/
  4235. typedef struct{
  4236. void (*pack) (vorbis_info *,vorbis_info_mapping *,
  4237. oggpack_buffer *);
  4238. vorbis_info_mapping *(*unpack)(vorbis_info *,oggpack_buffer *);
  4239. void (*free_info) (vorbis_info_mapping *);
  4240. int (*forward) (struct vorbis_block *vb);
  4241. int (*inverse) (struct vorbis_block *vb,vorbis_info_mapping *);
  4242. } vorbis_func_mapping;
  4243. typedef struct vorbis_info_mapping0{
  4244. int submaps; /* <= 16 */
  4245. int chmuxlist[256]; /* up to 256 channels in a Vorbis stream */
  4246. int floorsubmap[16]; /* [mux] submap to floors */
  4247. int residuesubmap[16]; /* [mux] submap to residue */
  4248. int coupling_steps;
  4249. int coupling_mag[256];
  4250. int coupling_ang[256];
  4251. } vorbis_info_mapping0;
  4252. #ifndef EHMER_MAX
  4253. #define EHMER_MAX 56
  4254. #endif
  4255. /* psychoacoustic setup ********************************************/
  4256. #define P_BANDS 17 /* 62Hz to 16kHz */
  4257. #define P_LEVELS 8 /* 30dB to 100dB */
  4258. #define P_LEVEL_0 30. /* 30 dB */
  4259. #define P_NOISECURVES 3
  4260. #define NOISE_COMPAND_LEVELS 40
  4261. typedef struct vorbis_info_psy{
  4262. int blockflag;
  4263. float ath_adjatt;
  4264. float ath_maxatt;
  4265. float tone_masteratt[P_NOISECURVES];
  4266. float tone_centerboost;
  4267. float tone_decay;
  4268. float tone_abs_limit;
  4269. float toneatt[P_BANDS];
  4270. int noisemaskp;
  4271. float noisemaxsupp;
  4272. float noisewindowlo;
  4273. float noisewindowhi;
  4274. int noisewindowlomin;
  4275. int noisewindowhimin;
  4276. int noisewindowfixed;
  4277. float noiseoff[P_NOISECURVES][P_BANDS];
  4278. float noisecompand[NOISE_COMPAND_LEVELS];
  4279. float max_curve_dB;
  4280. int normal_channel_p;
  4281. int normal_point_p;
  4282. int normal_start;
  4283. int normal_partition;
  4284. double normal_thresh;
  4285. } vorbis_info_psy;
  4286. typedef struct{
  4287. int eighth_octave_lines;
  4288. /* for block long/short tuning; encode only */
  4289. float preecho_thresh[VE_BANDS];
  4290. float postecho_thresh[VE_BANDS];
  4291. float stretch_penalty;
  4292. float preecho_minenergy;
  4293. float ampmax_att_per_sec;
  4294. /* channel coupling config */
  4295. int coupling_pkHz[PACKETBLOBS];
  4296. int coupling_pointlimit[2][PACKETBLOBS];
  4297. int coupling_prepointamp[PACKETBLOBS];
  4298. int coupling_postpointamp[PACKETBLOBS];
  4299. int sliding_lowpass[2][PACKETBLOBS];
  4300. } vorbis_info_psy_global;
  4301. typedef struct {
  4302. float ampmax;
  4303. int channels;
  4304. vorbis_info_psy_global *gi;
  4305. int coupling_pointlimit[2][P_NOISECURVES];
  4306. } vorbis_look_psy_global;
  4307. typedef struct {
  4308. int n;
  4309. struct vorbis_info_psy *vi;
  4310. float ***tonecurves;
  4311. float **noiseoffset;
  4312. float *ath;
  4313. long *octave; /* in n.ocshift format */
  4314. long *bark;
  4315. long firstoc;
  4316. long shiftoc;
  4317. int eighth_octave_lines; /* power of two, please */
  4318. int total_octave_lines;
  4319. long rate; /* cache it */
  4320. } vorbis_look_psy;
  4321. extern void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,
  4322. vorbis_info_psy_global *gi,int n,long rate);
  4323. extern void _vp_psy_clear(vorbis_look_psy *p);
  4324. extern void *_vi_psy_dup(void *source);
  4325. extern void _vi_psy_free(vorbis_info_psy *i);
  4326. extern vorbis_info_psy *_vi_psy_copy(vorbis_info_psy *i);
  4327. extern void _vp_remove_floor(vorbis_look_psy *p,
  4328. float *mdct,
  4329. int *icodedflr,
  4330. float *residue,
  4331. int sliding_lowpass);
  4332. extern void _vp_noisemask(vorbis_look_psy *p,
  4333. float *logmdct,
  4334. float *logmask);
  4335. extern void _vp_tonemask(vorbis_look_psy *p,
  4336. float *logfft,
  4337. float *logmask,
  4338. float global_specmax,
  4339. float local_specmax);
  4340. extern void _vp_offset_and_mix(vorbis_look_psy *p,
  4341. float *noise,
  4342. float *tone,
  4343. int offset_select,
  4344. float *logmask);
  4345. extern float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd);
  4346. extern float **_vp_quantize_couple_memo(vorbis_block *vb,
  4347. vorbis_info_psy_global *g,
  4348. vorbis_look_psy *p,
  4349. vorbis_info_mapping0 *vi,
  4350. float **mdct);
  4351. extern void _vp_couple(int blobno,
  4352. vorbis_info_psy_global *g,
  4353. vorbis_look_psy *p,
  4354. vorbis_info_mapping0 *vi,
  4355. float **res,
  4356. float **mag_memo,
  4357. int **mag_sort,
  4358. int **ifloor,
  4359. int *nonzero,
  4360. int sliding_lowpass);
  4361. extern void _vp_noise_normalize(vorbis_look_psy *p,
  4362. float *in,float *out,int *sortedindex);
  4363. extern void _vp_noise_normalize_sort(vorbis_look_psy *p,
  4364. float *magnitudes,int *sortedindex);
  4365. extern int **_vp_quantize_couple_sort(vorbis_block *vb,
  4366. vorbis_look_psy *p,
  4367. vorbis_info_mapping0 *vi,
  4368. float **mags);
  4369. /********************************************************************
  4370. * *
  4371. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  4372. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  4373. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  4374. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  4375. * *
  4376. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  4377. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  4378. * *
  4379. ********************************************************************
  4380. function: bitrate tracking and management
  4381. last mod: $Id: bitrate.h,v 1.7 2002/07/11 06:40:48 xiphmont Exp $
  4382. ********************************************************************/
  4383. #define _V_BITRATE_H_
  4384. #define _OS_H
  4385. /********************************************************************
  4386. * *
  4387. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  4388. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  4389. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  4390. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  4391. * *
  4392. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  4393. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  4394. * *
  4395. ********************************************************************
  4396. function: #ifdef jail to whip a few platforms into the UNIX ideal.
  4397. last mod: $Id: os.h,v 1.33 2003/09/02 05:11:53 xiphmont Exp $
  4398. ********************************************************************/
  4399. /********************************************************************
  4400. * *
  4401. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  4402. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  4403. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  4404. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  4405. * *
  4406. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  4407. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  4408. * *
  4409. ********************************************************************
  4410. function: miscellaneous prototypes
  4411. last mod: $Id: misc.h,v 1.12 2002/06/28 22:19:37 xiphmont Exp $
  4412. ********************************************************************/
  4413. #define _V_RANDOM_H_
  4414. extern int analysis_noisy;
  4415. extern void *_vorbis_block_alloc(vorbis_block *vb,long bytes);
  4416. extern void _vorbis_block_ripcord(vorbis_block *vb);
  4417. extern void _analysis_output(char *base,int i,float *v,int n,int bark,int dB,
  4418. ogg_int64_t off);
  4419. #ifndef _V_IFDEFJAIL_H_
  4420. # define _V_IFDEFJAIL_H_
  4421. # ifdef __GNUC__
  4422. # define STIN static __inline__
  4423. # elif _WIN32
  4424. # define STIN static __inline
  4425. # else
  4426. # define STIN static
  4427. # endif
  4428. #ifdef DJGPP
  4429. # define rint(x) (floor((x)+0.5f))
  4430. #endif
  4431. #ifndef M_PI
  4432. # define M_PI (3.1415926536f)
  4433. #endif
  4434. #ifndef FAST_HYPOT
  4435. # define FAST_HYPOT hypot
  4436. #endif
  4437. #endif
  4438. #ifndef min
  4439. # define min(x,y) ((x)>(y)?(y):(x))
  4440. #endif
  4441. #ifndef max
  4442. # define max(x,y) ((x)<(y)?(y):(x))
  4443. #endif
  4444. #if defined(__i386__) && defined(__GNUC__) && !defined(__BEOS__)
  4445. # define VORBIS_FPU_CONTROL
  4446. /* both GCC and MSVC are kinda stupid about rounding/casting to int.
  4447. Because of encapsulation constraints (GCC can't see inside the asm
  4448. block and so we end up doing stupid things like a store/load that
  4449. is collectively a noop), we do it this way */
  4450. /* we must set up the fpu before this works!! */
  4451. typedef ogg_int16_t vorbis_fpu_control;
  4452. static inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){
  4453. ogg_int16_t ret;
  4454. ogg_int16_t temp;
  4455. __asm__ __volatile__("fnstcw %0\n\t"
  4456. "movw %0,%%dx\n\t"
  4457. "orw $62463,%%dx\n\t"
  4458. "movw %%dx,%1\n\t"
  4459. "fldcw %1\n\t":"=m"(ret):"m"(temp): "dx");
  4460. *fpu=ret;
  4461. }
  4462. static inline void vorbis_fpu_restore(vorbis_fpu_control fpu){
  4463. __asm__ __volatile__("fldcw %0":: "m"(fpu));
  4464. }
  4465. /* assumes the FPU is in round mode! */
  4466. static inline int vorbis_ftoi(double f){ /* yes, double! Otherwise,
  4467. we get extra fst/fld to
  4468. truncate precision */
  4469. int i;
  4470. __asm__("fistl %0": "=m"(i) : "t"(f));
  4471. return(i);
  4472. }
  4473. #endif
  4474. #if defined(_WIN32) && !defined(__GNUC__) && !defined(__BORLANDC__)
  4475. # define VORBIS_FPU_CONTROL
  4476. typedef ogg_int16_t vorbis_fpu_control;
  4477. static __inline int vorbis_ftoi(double f){
  4478. int i;
  4479. __asm{
  4480. fld f
  4481. fistp i
  4482. }
  4483. return i;
  4484. }
  4485. static __inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){
  4486. }
  4487. static __inline void vorbis_fpu_restore(vorbis_fpu_control fpu){
  4488. }
  4489. #endif
  4490. #ifndef VORBIS_FPU_CONTROL
  4491. typedef int vorbis_fpu_control;
  4492. static int vorbis_ftoi(double f){
  4493. return (int)(f+.5);
  4494. }
  4495. /* We don't have special code for this compiler/arch, so do it the slow way */
  4496. # define vorbis_fpu_setround(vorbis_fpu_control) {}
  4497. # define vorbis_fpu_restore(vorbis_fpu_control) {}
  4498. #endif
  4499. /* encode side bitrate tracking */
  4500. typedef struct bitrate_manager_state {
  4501. ogg_uint32_t *queue_binned;
  4502. ogg_uint32_t *queue_actual;
  4503. int queue_size;
  4504. int queue_head;
  4505. int queue_bins;
  4506. long *avg_binacc;
  4507. int avg_center;
  4508. int avg_tail;
  4509. ogg_uint32_t avg_centeracc;
  4510. ogg_uint32_t avg_sampleacc;
  4511. ogg_uint32_t avg_sampledesired;
  4512. ogg_uint32_t avg_centerdesired;
  4513. long *minmax_binstack;
  4514. long *minmax_posstack;
  4515. long *minmax_limitstack;
  4516. long minmax_stackptr;
  4517. long minmax_acctotal;
  4518. int minmax_tail;
  4519. ogg_uint32_t minmax_sampleacc;
  4520. ogg_uint32_t minmax_sampledesired;
  4521. int next_to_flush;
  4522. int last_to_flush;
  4523. double avgfloat;
  4524. /* unfortunately, we need to hold queued packet data somewhere */
  4525. oggpack_buffer *packetbuffers;
  4526. ogg_packet *packets;
  4527. } bitrate_manager_state;
  4528. typedef struct bitrate_manager_info{
  4529. /* detailed bitrate management setup */
  4530. double queue_avg_time;
  4531. double queue_avg_center;
  4532. double queue_minmax_time;
  4533. double queue_hardmin;
  4534. double queue_hardmax;
  4535. double queue_avgmin;
  4536. double queue_avgmax;
  4537. double avgfloat_downslew_max;
  4538. double avgfloat_upslew_max;
  4539. } bitrate_manager_info;
  4540. extern void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bs);
  4541. extern void vorbis_bitrate_clear(bitrate_manager_state *bs);
  4542. extern int vorbis_bitrate_managed(vorbis_block *vb);
  4543. extern int vorbis_bitrate_addblock(vorbis_block *vb);
  4544. extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, ogg_packet *op);
  4545. typedef struct private_state {
  4546. /* local lookup storage */
  4547. envelope_lookup *ve; /* envelope lookup */
  4548. int window[2];
  4549. vorbis_look_transform **transform[2]; /* block, type */
  4550. drft_lookup fft_look[2];
  4551. int modebits;
  4552. vorbis_look_floor **flr;
  4553. vorbis_look_residue **residue;
  4554. vorbis_look_psy *psy;
  4555. vorbis_look_psy_global *psy_g_look;
  4556. /* local storage, only used on the encoding side. This way the
  4557. application does not need to worry about freeing some packets'
  4558. memory and not others'; packet storage is always tracked.
  4559. Cleared next call to a _dsp_ function */
  4560. unsigned char *header;
  4561. unsigned char *header1;
  4562. unsigned char *header2;
  4563. bitrate_manager_state bms;
  4564. ogg_int64_t sample_count;
  4565. } private_state;
  4566. /* codec_setup_info contains all the setup information specific to the
  4567. specific compression/decompression mode in progress (eg,
  4568. psychoacoustic settings, channel setup, options, codebook
  4569. etc).
  4570. *********************************************************************/
  4571. /********************************************************************
  4572. * *
  4573. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  4574. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  4575. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  4576. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  4577. * *
  4578. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  4579. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  4580. * *
  4581. ********************************************************************
  4582. function: highlevel encoder setup struct seperated out for vorbisenc clarity
  4583. last mod: $Id: highlevel.h,v 1.4 2002/07/01 11:20:11 xiphmont Exp $
  4584. ********************************************************************/
  4585. typedef struct highlevel_byblocktype {
  4586. double tone_mask_setting;
  4587. double tone_peaklimit_setting;
  4588. double noise_bias_setting;
  4589. double noise_compand_setting;
  4590. } highlevel_byblocktype;
  4591. typedef struct highlevel_encode_setup {
  4592. void *setup;
  4593. int set_in_stone;
  4594. double base_setting;
  4595. double long_setting;
  4596. double short_setting;
  4597. double impulse_noisetune;
  4598. int managed;
  4599. long bitrate_min;
  4600. long bitrate_av_lo;
  4601. long bitrate_av_hi;
  4602. long bitrate_max;
  4603. double bitrate_limit_window;
  4604. double bitrate_av_window;
  4605. double bitrate_av_window_center;
  4606. int impulse_block_p;
  4607. int noise_normalize_p;
  4608. double stereo_point_setting;
  4609. double lowpass_kHz;
  4610. double ath_floating_dB;
  4611. double ath_absolute_dB;
  4612. double amplitude_track_dBpersec;
  4613. double trigger_setting;
  4614. highlevel_byblocktype block[4]; /* padding, impulse, transition, long */
  4615. } highlevel_encode_setup;
  4616. typedef struct codec_setup_info {
  4617. /* Vorbis supports only short and long blocks, but allows the
  4618. encoder to choose the sizes */
  4619. long blocksizes[2];
  4620. /* modes are the primary means of supporting on-the-fly different
  4621. blocksizes, different channel mappings (LR or M/A),
  4622. different residue backends, etc. Each mode consists of a
  4623. blocksize flag and a mapping (along with the mapping setup */
  4624. int modes;
  4625. int maps;
  4626. int floors;
  4627. int residues;
  4628. int books;
  4629. int psys; /* encode only */
  4630. vorbis_info_mode *mode_param[64];
  4631. int map_type[64];
  4632. vorbis_info_mapping *map_param[64];
  4633. int floor_type[64];
  4634. vorbis_info_floor *floor_param[64];
  4635. int residue_type[64];
  4636. vorbis_info_residue *residue_param[64];
  4637. static_codebook *book_param[256];
  4638. codebook *fullbooks;
  4639. vorbis_info_psy *psy_param[4]; /* encode only */
  4640. vorbis_info_psy_global psy_g_param;
  4641. bitrate_manager_info bi;
  4642. highlevel_encode_setup hi; /* used only by vorbisenc.c. It's a
  4643. highly redundant structure, but
  4644. improves clarity of program flow. */
  4645. int halfrate_flag; /* painless downsample for decode */
  4646. } codec_setup_info;
  4647. extern vorbis_look_psy_global *_vp_global_look(vorbis_info *vi);
  4648. extern void _vp_global_free(vorbis_look_psy_global *look);
  4649. /* careful with this; it's using static array sizing to make managing
  4650. all the modes a little less annoying. If we use a residue backend
  4651. with > 12 partition types, or a different division of iteration,
  4652. this needs to be updated. */
  4653. typedef struct {
  4654. static_codebook *books[12][3];
  4655. } static_bookblock;
  4656. typedef struct {
  4657. int res_type;
  4658. int limit_type; /* 0 lowpass limited, 1 point stereo limited */
  4659. vorbis_info_residue0 *res;
  4660. static_codebook *book_aux;
  4661. static_codebook *book_aux_managed;
  4662. static_bookblock *books_base;
  4663. static_bookblock *books_base_managed;
  4664. } vorbis_residue_template;
  4665. typedef struct {
  4666. vorbis_info_mapping0 *map;
  4667. vorbis_residue_template *res;
  4668. } vorbis_mapping_template;
  4669. typedef struct vp_adjblock{
  4670. int block[P_BANDS];
  4671. } vp_adjblock;
  4672. typedef struct {
  4673. int data[NOISE_COMPAND_LEVELS];
  4674. } compandblock;
  4675. /* high level configuration information for setting things up
  4676. step-by-step with the detailed vorbis_encode_ctl interface.
  4677. There's a fair amount of redundancy such that interactive setup
  4678. does not directly deal with any vorbis_info or codec_setup_info
  4679. initialization; it's all stored (until full init) in this highlevel
  4680. setup, then flushed out to the real codec setup structs later. */
  4681. typedef struct {
  4682. int att[P_NOISECURVES];
  4683. float boost;
  4684. float decay;
  4685. } att3;
  4686. typedef struct { int data[P_NOISECURVES]; } adj3;
  4687. typedef struct {
  4688. int pre[PACKETBLOBS];
  4689. int post[PACKETBLOBS];
  4690. float kHz[PACKETBLOBS];
  4691. float lowpasskHz[PACKETBLOBS];
  4692. } adj_stereo;
  4693. typedef struct {
  4694. int lo;
  4695. int hi;
  4696. int fixed;
  4697. } noiseguard;
  4698. typedef struct {
  4699. int data[P_NOISECURVES][17];
  4700. } noise3;
  4701. typedef struct {
  4702. int mappings;
  4703. double *rate_mapping;
  4704. double *quality_mapping;
  4705. int coupling_restriction;
  4706. long samplerate_min_restriction;
  4707. long samplerate_max_restriction;
  4708. int *blocksize_short;
  4709. int *blocksize_long;
  4710. att3 *psy_tone_masteratt;
  4711. int *psy_tone_0dB;
  4712. int *psy_tone_dBsuppress;
  4713. vp_adjblock *psy_tone_adj_impulse;
  4714. vp_adjblock *psy_tone_adj_long;
  4715. vp_adjblock *psy_tone_adj_other;
  4716. noiseguard *psy_noiseguards;
  4717. noise3 *psy_noise_bias_impulse;
  4718. noise3 *psy_noise_bias_padding;
  4719. noise3 *psy_noise_bias_trans;
  4720. noise3 *psy_noise_bias_long;
  4721. int *psy_noise_dBsuppress;
  4722. compandblock *psy_noise_compand;
  4723. double *psy_noise_compand_short_mapping;
  4724. double *psy_noise_compand_long_mapping;
  4725. int *psy_noise_normal_start[2];
  4726. int *psy_noise_normal_partition[2];
  4727. double *psy_noise_normal_thresh;
  4728. int *psy_ath_float;
  4729. int *psy_ath_abs;
  4730. double *psy_lowpass;
  4731. vorbis_info_psy_global *global_params;
  4732. double *global_mapping;
  4733. adj_stereo *stereo_modes;
  4734. static_codebook ***floor_books;
  4735. vorbis_info_floor1 *floor_params;
  4736. int *floor_short_mapping;
  4737. int *floor_long_mapping;
  4738. vorbis_mapping_template *maps;
  4739. } ve_setup_data_template;
  4740. /* a few static coder conventions */
  4741. static vorbis_info_mode _mode_template[2]={
  4742. {0,0,0,0},
  4743. {1,0,0,1}
  4744. };
  4745. static vorbis_info_mapping0 _map_nominal[2]={
  4746. {1, {0,0}, {0}, {0}, 1,{0},{1}},
  4747. {1, {0,0}, {1}, {1}, 1,{0},{1}}
  4748. };
  4749. /********************************************************************
  4750. * *
  4751. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  4752. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  4753. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  4754. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  4755. * *
  4756. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  4757. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  4758. * *
  4759. ********************************************************************
  4760. function: toplevel settings for 44.1/48kHz
  4761. last mod: $Id: setup_44.h,v 1.9 2002/07/11 08:57:29 xiphmont Exp $
  4762. ********************************************************************/
  4763. /********************************************************************
  4764. * *
  4765. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  4766. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  4767. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  4768. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  4769. * *
  4770. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  4771. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  4772. * *
  4773. ********************************************************************
  4774. function: key floor settings
  4775. last mod: $Id: floor_all.h,v 1.1 2002/07/11 06:41:04 xiphmont Exp $
  4776. ********************************************************************/
  4777. /********************************************************************
  4778. * *
  4779. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  4780. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  4781. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  4782. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  4783. * *
  4784. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  4785. * by the Xiph.Org Foundation http://www.xiph.org/ *
  4786. * *
  4787. ********************************************************************
  4788. function: static codebooks autogenerated by huff/huffbuld
  4789. last modified: $Id: floor_books.h,v 1.3 2002/07/11 06:41:01 xiphmont Exp $
  4790. ********************************************************************/
  4791. static long _huff_lengthlist_line_1024x27_0sub0[] = {
  4792. 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
  4793. 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 5, 8, 5, 8, 6,
  4794. 8, 6, 9, 6, 9, 6, 9, 6,10, 6,10, 6,11, 6,11, 6,
  4795. 11, 6,12, 6,12, 7,12, 7,12, 7,12, 7,12, 7,12, 7,
  4796. 12, 7,12, 7,12, 7,12, 7,12, 8,12, 8,11, 8,11, 8,
  4797. 12, 9,11, 9, 9,10,11, 9,12, 9,12,12,14,13,13,14,
  4798. 13,13,13,12,14,16,20,20,21,14,14,15,21,21,21,20,
  4799. 21,21,21,21,21,21,21,21,21,21,20,20,20,20,20,20,
  4800. };
  4801. static static_codebook _huff_book_line_1024x27_0sub0 = {
  4802. 1, 128,
  4803. _huff_lengthlist_line_1024x27_0sub0,
  4804. 0, 0, 0, 0, 0,
  4805. NULL,
  4806. NULL,
  4807. NULL,
  4808. NULL,
  4809. 0
  4810. };
  4811. static long _huff_lengthlist_line_1024x27_1sub0[] = {
  4812. 2, 5, 5, 4, 5, 4, 5, 4, 5, 4, 6, 4, 6, 5, 6, 5,
  4813. 7, 5, 7, 6, 8, 6, 8, 6, 8, 6, 9, 6,10, 6,10, 6,
  4814. };
  4815. static static_codebook _huff_book_line_1024x27_1sub0 = {
  4816. 1, 32,
  4817. _huff_lengthlist_line_1024x27_1sub0,
  4818. 0, 0, 0, 0, 0,
  4819. NULL,
  4820. NULL,
  4821. NULL,
  4822. NULL,
  4823. 0
  4824. };
  4825. static long _huff_lengthlist_line_1024x27_1sub1[] = {
  4826. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  4827. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  4828. 9, 5,10, 4,10, 4, 9, 4, 9, 3, 9, 4, 9, 4, 9, 4,
  4829. 9, 4, 9, 4, 9, 4, 8, 4, 8, 4, 8, 5, 9, 5, 9, 6,
  4830. 8, 6, 9, 7,10, 8,10, 9,10,10,10,12,11,13,12,13,
  4831. 13,15,13,14,13,14,12,15,13,15,14,15,13,16,14,16,
  4832. 14,15,14,14,14,16,15,18,15,18,16,18,18,18,18,18,
  4833. 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,17,
  4834. };
  4835. static static_codebook _huff_book_line_1024x27_1sub1 = {
  4836. 1, 128,
  4837. _huff_lengthlist_line_1024x27_1sub1,
  4838. 0, 0, 0, 0, 0,
  4839. NULL,
  4840. NULL,
  4841. NULL,
  4842. NULL,
  4843. 0
  4844. };
  4845. static long _huff_lengthlist_line_1024x27_2sub0[] = {
  4846. 1, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5,
  4847. 6, 6, 7, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9,10,10,
  4848. };
  4849. static static_codebook _huff_book_line_1024x27_2sub0 = {
  4850. 1, 32,
  4851. _huff_lengthlist_line_1024x27_2sub0,
  4852. 0, 0, 0, 0, 0,
  4853. NULL,
  4854. NULL,
  4855. NULL,
  4856. NULL,
  4857. 0
  4858. };
  4859. static long _huff_lengthlist_line_1024x27_2sub1[] = {
  4860. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  4861. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  4862. 3, 3, 4, 3, 4, 4, 5, 4, 5, 5, 5, 5, 6, 5, 6, 6,
  4863. 7, 6, 7, 7, 7, 7, 7, 7, 8, 9, 8, 9, 8,10, 8,11,
  4864. 8,12, 9,13, 9,14, 9,14, 8,12, 8,14, 9,14, 8,12,
  4865. 8,11, 8,11, 8,11, 9,11,10,11,10,12,10,12,11,12,
  4866. 12,12,12,12,11,12,11,13,11,13,12,14,14,14,14,14,
  4867. 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,
  4868. };
  4869. static static_codebook _huff_book_line_1024x27_2sub1 = {
  4870. 1, 128,
  4871. _huff_lengthlist_line_1024x27_2sub1,
  4872. 0, 0, 0, 0, 0,
  4873. NULL,
  4874. NULL,
  4875. NULL,
  4876. NULL,
  4877. 0
  4878. };
  4879. static long _huff_lengthlist_line_1024x27_3sub1[] = {
  4880. 0, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 4, 4, 5, 4,
  4881. 5, 5,
  4882. };
  4883. static static_codebook _huff_book_line_1024x27_3sub1 = {
  4884. 1, 18,
  4885. _huff_lengthlist_line_1024x27_3sub1,
  4886. 0, 0, 0, 0, 0,
  4887. NULL,
  4888. NULL,
  4889. NULL,
  4890. NULL,
  4891. 0
  4892. };
  4893. static long _huff_lengthlist_line_1024x27_3sub2[] = {
  4894. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  4895. 0, 0, 3, 3, 3, 3, 4, 4, 4, 5, 4, 6, 5, 6, 5, 7,
  4896. 5, 9, 5,10, 6,11, 6,12, 7,13, 8,15, 8,15, 9,15,
  4897. 9,15,
  4898. };
  4899. static static_codebook _huff_book_line_1024x27_3sub2 = {
  4900. 1, 50,
  4901. _huff_lengthlist_line_1024x27_3sub2,
  4902. 0, 0, 0, 0, 0,
  4903. NULL,
  4904. NULL,
  4905. NULL,
  4906. NULL,
  4907. 0
  4908. };
  4909. static long _huff_lengthlist_line_1024x27_3sub3[] = {
  4910. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  4911. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  4912. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  4913. 0, 0, 2, 9, 2, 9, 2, 9, 4, 9, 6, 9, 7, 9, 9, 9,
  4914. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  4915. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  4916. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  4917. 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  4918. };
  4919. static static_codebook _huff_book_line_1024x27_3sub3 = {
  4920. 1, 128,
  4921. _huff_lengthlist_line_1024x27_3sub3,
  4922. 0, 0, 0, 0, 0,
  4923. NULL,
  4924. NULL,
  4925. NULL,
  4926. NULL,
  4927. 0
  4928. };
  4929. static long _huff_lengthlist_line_1024x27_4sub1[] = {
  4930. 0, 4, 5, 4, 5, 4, 6, 3, 6, 3, 5, 3, 5, 3, 6, 4,
  4931. 6, 4,
  4932. };
  4933. static static_codebook _huff_book_line_1024x27_4sub1 = {
  4934. 1, 18,
  4935. _huff_lengthlist_line_1024x27_4sub1,
  4936. 0, 0, 0, 0, 0,
  4937. NULL,
  4938. NULL,
  4939. NULL,
  4940. NULL,
  4941. 0
  4942. };
  4943. static long _huff_lengthlist_line_1024x27_4sub2[] = {
  4944. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  4945. 0, 0, 4, 2, 4, 2, 5, 3, 5, 4, 6, 6, 6, 6, 7, 7,
  4946. 7, 8, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9,10,10,11,
  4947. 10,11,
  4948. };
  4949. static static_codebook _huff_book_line_1024x27_4sub2 = {
  4950. 1, 50,
  4951. _huff_lengthlist_line_1024x27_4sub2,
  4952. 0, 0, 0, 0, 0,
  4953. NULL,
  4954. NULL,
  4955. NULL,
  4956. NULL,
  4957. 0
  4958. };
  4959. static long _huff_lengthlist_line_1024x27_4sub3[] = {
  4960. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  4961. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  4962. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  4963. 0, 0, 3, 3, 3, 6, 4, 6, 4, 5, 5, 7, 4, 8, 5, 9,
  4964. 4, 9, 5, 9, 5, 9, 6, 9, 5, 9, 7, 9, 7, 9, 9, 9,
  4965. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  4966. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  4967. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  4968. };
  4969. static static_codebook _huff_book_line_1024x27_4sub3 = {
  4970. 1, 128,
  4971. _huff_lengthlist_line_1024x27_4sub3,
  4972. 0, 0, 0, 0, 0,
  4973. NULL,
  4974. NULL,
  4975. NULL,
  4976. NULL,
  4977. 0
  4978. };
  4979. static long _huff_lengthlist_line_1024x27_class1[] = {
  4980. 2, 9, 8,14, 7,13,11,14, 1, 5, 3, 7, 4,10, 7,12,
  4981. };
  4982. static static_codebook _huff_book_line_1024x27_class1 = {
  4983. 1, 16,
  4984. _huff_lengthlist_line_1024x27_class1,
  4985. 0, 0, 0, 0, 0,
  4986. NULL,
  4987. NULL,
  4988. NULL,
  4989. NULL,
  4990. 0
  4991. };
  4992. static long _huff_lengthlist_line_1024x27_class2[] = {
  4993. 1, 3, 2, 5, 4, 7, 6, 7,
  4994. };
  4995. static static_codebook _huff_book_line_1024x27_class2 = {
  4996. 1, 8,
  4997. _huff_lengthlist_line_1024x27_class2,
  4998. 0, 0, 0, 0, 0,
  4999. NULL,
  5000. NULL,
  5001. NULL,
  5002. NULL,
  5003. 0
  5004. };
  5005. static long _huff_lengthlist_line_1024x27_class3[] = {
  5006. 1, 5, 6,19, 5, 8,10,19, 9,10,15,19,19,19,19,19,
  5007. 4, 7, 9,19, 6, 7,10,19,11,11,15,19,19,19,19,19,
  5008. 8,11,13,19, 8,11,14,19,13,13,17,19,19,19,19,19,
  5009. 19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
  5010. 3, 7, 9,19, 6, 8,11,19,11,11,15,19,19,19,19,19,
  5011. 5, 7,11,19, 6, 7,11,19,11,10,14,19,19,19,19,19,
  5012. 8,11,15,19, 8,10,14,19,13,13,16,19,19,19,19,19,
  5013. 19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
  5014. 6, 9,11,19, 8,10,12,19,15,14,17,19,19,19,19,19,
  5015. 5, 8,11,19, 7, 9,12,19,14,11,16,19,19,19,19,19,
  5016. 9,10,18,19, 9,10,15,19,14,16,19,19,19,19,19,19,
  5017. 19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
  5018. 16,17,19,19,16,17,17,19,19,19,19,19,19,19,19,19,
  5019. 12,14,16,19,12,12,16,19,19,19,19,19,19,19,19,19,
  5020. 18,18,19,19,17,16,19,19,19,19,19,19,19,19,19,19,
  5021. 19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,
  5022. };
  5023. static static_codebook _huff_book_line_1024x27_class3 = {
  5024. 1, 256,
  5025. _huff_lengthlist_line_1024x27_class3,
  5026. 0, 0, 0, 0, 0,
  5027. NULL,
  5028. NULL,
  5029. NULL,
  5030. NULL,
  5031. 0
  5032. };
  5033. static long _huff_lengthlist_line_1024x27_class4[] = {
  5034. 1, 4, 8,12, 4, 6, 8,21, 9, 8,10,21,20,16,18,20,
  5035. 2, 6, 8,20, 7, 6, 9,19,11, 9,10,20,17,15,16,20,
  5036. 5, 8,11,19, 8, 8,10,15,12,10,12,15,20,20,15,20,
  5037. 17,20,20,20,15,20,20,19,20,20,16,19,20,20,20,20,
  5038. };
  5039. static static_codebook _huff_book_line_1024x27_class4 = {
  5040. 1, 64,
  5041. _huff_lengthlist_line_1024x27_class4,
  5042. 0, 0, 0, 0, 0,
  5043. NULL,
  5044. NULL,
  5045. NULL,
  5046. NULL,
  5047. 0
  5048. };
  5049. static long _huff_lengthlist_line_128x11_0sub0[] = {
  5050. 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
  5051. 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6,
  5052. 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6,
  5053. 8, 7, 8, 7, 8, 7, 8, 7, 9, 7, 9, 7, 9, 8,10, 8,
  5054. 10, 8,10, 8,10, 8,10, 9,11, 9,11, 9,10, 9,10,10,
  5055. 11,10,11,11,11,11,12,12,13,14,13,14,16,16,16,16,
  5056. 16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,
  5057. 16,16,16,16,16,16,16,16,16,16,16,16,16,15,15,15,
  5058. };
  5059. static static_codebook _huff_book_line_128x11_0sub0 = {
  5060. 1, 128,
  5061. _huff_lengthlist_line_128x11_0sub0,
  5062. 0, 0, 0, 0, 0,
  5063. NULL,
  5064. NULL,
  5065. NULL,
  5066. NULL,
  5067. 0
  5068. };
  5069. static long _huff_lengthlist_line_128x11_1sub0[] = {
  5070. 2, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
  5071. 6, 5, 6, 5, 6, 5, 7, 6, 7, 6, 7, 6, 8, 6, 8, 6,
  5072. };
  5073. static static_codebook _huff_book_line_128x11_1sub0 = {
  5074. 1, 32,
  5075. _huff_lengthlist_line_128x11_1sub0,
  5076. 0, 0, 0, 0, 0,
  5077. NULL,
  5078. NULL,
  5079. NULL,
  5080. NULL,
  5081. 0
  5082. };
  5083. static long _huff_lengthlist_line_128x11_1sub1[] = {
  5084. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5085. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5086. 6, 3, 6, 3, 7, 3, 7, 4, 8, 4, 8, 4, 8, 4, 9, 4,
  5087. 10, 5, 9, 5,10, 5,10, 5,10, 5,12, 6,12, 6,10, 6,
  5088. 10, 7,10, 8,10, 8,10, 9,11, 9,12,11,10,11,11,13,
  5089. 12,12,12,13,10,13,10,13,10,13,10,13,11,13,10,13,
  5090. 10,13,10,13,10,13,10,13,11,12,13,13,13,13,13,13,
  5091. 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
  5092. };
  5093. static static_codebook _huff_book_line_128x11_1sub1 = {
  5094. 1, 128,
  5095. _huff_lengthlist_line_128x11_1sub1,
  5096. 0, 0, 0, 0, 0,
  5097. NULL,
  5098. NULL,
  5099. NULL,
  5100. NULL,
  5101. 0
  5102. };
  5103. static long _huff_lengthlist_line_128x11_2sub1[] = {
  5104. 0, 4, 5, 4, 5, 4, 5, 3, 4, 3, 4, 4, 4, 4, 4, 5,
  5105. 5, 5,
  5106. };
  5107. static static_codebook _huff_book_line_128x11_2sub1 = {
  5108. 1, 18,
  5109. _huff_lengthlist_line_128x11_2sub1,
  5110. 0, 0, 0, 0, 0,
  5111. NULL,
  5112. NULL,
  5113. NULL,
  5114. NULL,
  5115. 0
  5116. };
  5117. static long _huff_lengthlist_line_128x11_2sub2[] = {
  5118. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5119. 0, 0, 2, 3, 3, 4, 3, 5, 4, 5, 5, 6, 5, 6, 6, 6,
  5120. 6, 8, 6,10, 7,10, 8,10, 8,10,10,10,10,10,10,10,
  5121. 10,10,
  5122. };
  5123. static static_codebook _huff_book_line_128x11_2sub2 = {
  5124. 1, 50,
  5125. _huff_lengthlist_line_128x11_2sub2,
  5126. 0, 0, 0, 0, 0,
  5127. NULL,
  5128. NULL,
  5129. NULL,
  5130. NULL,
  5131. 0
  5132. };
  5133. static long _huff_lengthlist_line_128x11_2sub3[] = {
  5134. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5135. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5136. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5137. 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  5138. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6,
  5139. 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  5140. 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  5141. 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  5142. };
  5143. static static_codebook _huff_book_line_128x11_2sub3 = {
  5144. 1, 128,
  5145. _huff_lengthlist_line_128x11_2sub3,
  5146. 0, 0, 0, 0, 0,
  5147. NULL,
  5148. NULL,
  5149. NULL,
  5150. NULL,
  5151. 0
  5152. };
  5153. static long _huff_lengthlist_line_128x11_3sub1[] = {
  5154. 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4,
  5155. 5, 4,
  5156. };
  5157. static static_codebook _huff_book_line_128x11_3sub1 = {
  5158. 1, 18,
  5159. _huff_lengthlist_line_128x11_3sub1,
  5160. 0, 0, 0, 0, 0,
  5161. NULL,
  5162. NULL,
  5163. NULL,
  5164. NULL,
  5165. 0
  5166. };
  5167. static long _huff_lengthlist_line_128x11_3sub2[] = {
  5168. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5169. 0, 0, 5, 3, 5, 3, 6, 4, 7, 4, 7, 4, 7, 4, 8, 4,
  5170. 8, 4, 9, 4, 9, 4, 9, 5,10, 5,11, 5,12, 6,13, 6,
  5171. 13, 7,
  5172. };
  5173. static static_codebook _huff_book_line_128x11_3sub2 = {
  5174. 1, 50,
  5175. _huff_lengthlist_line_128x11_3sub2,
  5176. 0, 0, 0, 0, 0,
  5177. NULL,
  5178. NULL,
  5179. NULL,
  5180. NULL,
  5181. 0
  5182. };
  5183. static long _huff_lengthlist_line_128x11_3sub3[] = {
  5184. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5185. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5186. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5187. 0, 0, 7, 2, 6, 2, 7, 3, 8, 4, 7, 6, 9, 7, 9, 7,
  5188. 9, 9, 9, 8, 9, 8, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8,
  5189. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  5190. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  5191. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  5192. };
  5193. static static_codebook _huff_book_line_128x11_3sub3 = {
  5194. 1, 128,
  5195. _huff_lengthlist_line_128x11_3sub3,
  5196. 0, 0, 0, 0, 0,
  5197. NULL,
  5198. NULL,
  5199. NULL,
  5200. NULL,
  5201. 0
  5202. };
  5203. static long _huff_lengthlist_line_128x11_class1[] = {
  5204. 1, 6, 3, 7, 2, 5, 4, 7,
  5205. };
  5206. static static_codebook _huff_book_line_128x11_class1 = {
  5207. 1, 8,
  5208. _huff_lengthlist_line_128x11_class1,
  5209. 0, 0, 0, 0, 0,
  5210. NULL,
  5211. NULL,
  5212. NULL,
  5213. NULL,
  5214. 0
  5215. };
  5216. static long _huff_lengthlist_line_128x11_class2[] = {
  5217. 1, 5,11,14, 4,11,13,14,10,14,13,14,14,14,13,13,
  5218. 2, 6,11,13, 5,11,12,13,11,12,13,13,13,13,13,13,
  5219. 4, 8,12,13, 5, 9,11,13,12,13,13,13,13,13,13,13,
  5220. 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
  5221. };
  5222. static static_codebook _huff_book_line_128x11_class2 = {
  5223. 1, 64,
  5224. _huff_lengthlist_line_128x11_class2,
  5225. 0, 0, 0, 0, 0,
  5226. NULL,
  5227. NULL,
  5228. NULL,
  5229. NULL,
  5230. 0
  5231. };
  5232. static long _huff_lengthlist_line_128x11_class3[] = {
  5233. 6, 7,11,16, 6, 7,10,16,11, 9,13,15,15,15,15,15,
  5234. 4, 4, 7,14, 4, 4, 6,14, 8, 6, 8,15,15,15,15,15,
  5235. 4, 4, 6,15, 3, 2, 4,13, 6, 5, 6,14,15,12,11,14,
  5236. 11,11,13,15, 9, 8,10,15,11,10,11,15,15,15,15,15,
  5237. };
  5238. static static_codebook _huff_book_line_128x11_class3 = {
  5239. 1, 64,
  5240. _huff_lengthlist_line_128x11_class3,
  5241. 0, 0, 0, 0, 0,
  5242. NULL,
  5243. NULL,
  5244. NULL,
  5245. NULL,
  5246. 0
  5247. };
  5248. static long _huff_lengthlist_line_128x17_0sub0[] = {
  5249. 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5,
  5250. 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 6, 7, 6,
  5251. 7, 6, 8, 6, 8, 6, 8, 6, 8, 6, 8, 6, 8, 7, 9, 7,
  5252. 9, 7, 9, 7, 9, 7, 9, 7, 9, 7,10, 7,10, 8,10, 8,
  5253. 11, 8,11, 8,11, 8,12, 8,12, 8,12, 8,12, 9,12, 9,
  5254. 12, 9,12, 9,13, 9,13,10,13,10,13,11,14,12,14,13,
  5255. 14,14,16,15,17,17,19,18,19,19,19,19,19,19,19,19,
  5256. 19,19,19,19,19,19,19,19,19,19,19,18,18,18,18,18,
  5257. };
  5258. static static_codebook _huff_book_line_128x17_0sub0 = {
  5259. 1, 128,
  5260. _huff_lengthlist_line_128x17_0sub0,
  5261. 0, 0, 0, 0, 0,
  5262. NULL,
  5263. NULL,
  5264. NULL,
  5265. NULL,
  5266. 0
  5267. };
  5268. static long _huff_lengthlist_line_128x17_1sub0[] = {
  5269. 2, 5, 5, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 6, 5,
  5270. 6, 5, 6, 6, 7, 6, 7, 6, 8, 6, 8, 7, 9, 7, 9, 8,
  5271. };
  5272. static static_codebook _huff_book_line_128x17_1sub0 = {
  5273. 1, 32,
  5274. _huff_lengthlist_line_128x17_1sub0,
  5275. 0, 0, 0, 0, 0,
  5276. NULL,
  5277. NULL,
  5278. NULL,
  5279. NULL,
  5280. 0
  5281. };
  5282. static long _huff_lengthlist_line_128x17_1sub1[] = {
  5283. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5284. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5285. 4, 2, 5, 3, 5, 3, 6, 4, 6, 4, 7, 4, 8, 5, 8, 5,
  5286. 8, 6, 9, 6, 9, 7, 9, 8,10, 8,10, 9,10,10,10,10,
  5287. 10,12,10,14,11,15,12,15,11,15,11,15,11,14,11,15,
  5288. 11,14,11,13,10,12,10,14,10,14,11,13,10,12,11,15,
  5289. 12,15,13,15,12,13,14,15,15,15,15,15,15,15,15,15,
  5290. 15,15,15,15,15,15,15,15,15,15,15,15,15,14,14,14,
  5291. };
  5292. static static_codebook _huff_book_line_128x17_1sub1 = {
  5293. 1, 128,
  5294. _huff_lengthlist_line_128x17_1sub1,
  5295. 0, 0, 0, 0, 0,
  5296. NULL,
  5297. NULL,
  5298. NULL,
  5299. NULL,
  5300. 0
  5301. };
  5302. static long _huff_lengthlist_line_128x17_2sub1[] = {
  5303. 0, 4, 5, 4, 7, 3, 8, 3, 9, 3,10, 2,12, 3,12, 4,
  5304. 11, 6,
  5305. };
  5306. static static_codebook _huff_book_line_128x17_2sub1 = {
  5307. 1, 18,
  5308. _huff_lengthlist_line_128x17_2sub1,
  5309. 0, 0, 0, 0, 0,
  5310. NULL,
  5311. NULL,
  5312. NULL,
  5313. NULL,
  5314. 0
  5315. };
  5316. static long _huff_lengthlist_line_128x17_2sub2[] = {
  5317. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5318. 0, 0, 7, 1, 8, 2, 9, 3, 9, 7, 9, 7, 9, 7, 8, 7,
  5319. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  5320. 8, 8,
  5321. };
  5322. static static_codebook _huff_book_line_128x17_2sub2 = {
  5323. 1, 50,
  5324. _huff_lengthlist_line_128x17_2sub2,
  5325. 0, 0, 0, 0, 0,
  5326. NULL,
  5327. NULL,
  5328. NULL,
  5329. NULL,
  5330. 0
  5331. };
  5332. static long _huff_lengthlist_line_128x17_2sub3[] = {
  5333. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5334. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5335. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5336. 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  5337. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6,
  5338. 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  5339. 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  5340. 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  5341. };
  5342. static static_codebook _huff_book_line_128x17_2sub3 = {
  5343. 1, 128,
  5344. _huff_lengthlist_line_128x17_2sub3,
  5345. 0, 0, 0, 0, 0,
  5346. NULL,
  5347. NULL,
  5348. NULL,
  5349. NULL,
  5350. 0
  5351. };
  5352. static long _huff_lengthlist_line_128x17_3sub1[] = {
  5353. 0, 4, 4, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 6, 4,
  5354. 6, 4,
  5355. };
  5356. static static_codebook _huff_book_line_128x17_3sub1 = {
  5357. 1, 18,
  5358. _huff_lengthlist_line_128x17_3sub1,
  5359. 0, 0, 0, 0, 0,
  5360. NULL,
  5361. NULL,
  5362. NULL,
  5363. NULL,
  5364. 0
  5365. };
  5366. static long _huff_lengthlist_line_128x17_3sub2[] = {
  5367. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5368. 0, 0, 5, 3, 6, 3, 6, 3, 7, 4, 8, 4, 8, 4, 9, 4,
  5369. 9, 4,10, 4,10, 5,11, 5,11, 5,12, 5,12, 6,12, 6,
  5370. 12, 7,
  5371. };
  5372. static static_codebook _huff_book_line_128x17_3sub2 = {
  5373. 1, 50,
  5374. _huff_lengthlist_line_128x17_3sub2,
  5375. 0, 0, 0, 0, 0,
  5376. NULL,
  5377. NULL,
  5378. NULL,
  5379. NULL,
  5380. 0
  5381. };
  5382. static long _huff_lengthlist_line_128x17_3sub3[] = {
  5383. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5384. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5385. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5386. 0, 0, 7, 1, 7, 3, 6, 3, 6, 4, 6, 5, 6, 8, 7,10,
  5387. 7,11, 7,11, 8,11, 9,11, 7,11, 8,11, 8,11,10,11,
  5388. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  5389. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  5390. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  5391. };
  5392. static static_codebook _huff_book_line_128x17_3sub3 = {
  5393. 1, 128,
  5394. _huff_lengthlist_line_128x17_3sub3,
  5395. 0, 0, 0, 0, 0,
  5396. NULL,
  5397. NULL,
  5398. NULL,
  5399. NULL,
  5400. 0
  5401. };
  5402. static long _huff_lengthlist_line_128x17_class1[] = {
  5403. 1, 3, 4, 7, 2, 6, 5, 7,
  5404. };
  5405. static static_codebook _huff_book_line_128x17_class1 = {
  5406. 1, 8,
  5407. _huff_lengthlist_line_128x17_class1,
  5408. 0, 0, 0, 0, 0,
  5409. NULL,
  5410. NULL,
  5411. NULL,
  5412. NULL,
  5413. 0
  5414. };
  5415. static long _huff_lengthlist_line_128x17_class2[] = {
  5416. 1, 2, 7,14, 4, 9,13,14, 8,14,14,14,14,14,14,14,
  5417. 3, 5,10,14, 8,14,14,14,11,14,14,14,14,14,14,14,
  5418. 7,10,14,14,12,14,14,14,14,14,14,14,14,14,14,14,
  5419. 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,
  5420. };
  5421. static static_codebook _huff_book_line_128x17_class2 = {
  5422. 1, 64,
  5423. _huff_lengthlist_line_128x17_class2,
  5424. 0, 0, 0, 0, 0,
  5425. NULL,
  5426. NULL,
  5427. NULL,
  5428. NULL,
  5429. 0
  5430. };
  5431. static long _huff_lengthlist_line_128x17_class3[] = {
  5432. 2, 6,11,19, 5, 9,12,19,10,11,13,19,19,19,19,19,
  5433. 2, 5, 8,19, 4, 6, 8,19, 8, 8, 9,19,19,16,19,19,
  5434. 3, 6, 8,19, 3, 5, 7,18, 8, 8, 9,16,16,11,16,19,
  5435. 14,14,14,19,10,10,11,19,16,12,14,19,19,19,19,19,
  5436. };
  5437. static static_codebook _huff_book_line_128x17_class3 = {
  5438. 1, 64,
  5439. _huff_lengthlist_line_128x17_class3,
  5440. 0, 0, 0, 0, 0,
  5441. NULL,
  5442. NULL,
  5443. NULL,
  5444. NULL,
  5445. 0
  5446. };
  5447. static long _huff_lengthlist_line_128x4_0sub0[] = {
  5448. 2, 2, 2, 2,
  5449. };
  5450. static static_codebook _huff_book_line_128x4_0sub0 = {
  5451. 1, 4,
  5452. _huff_lengthlist_line_128x4_0sub0,
  5453. 0, 0, 0, 0, 0,
  5454. NULL,
  5455. NULL,
  5456. NULL,
  5457. NULL,
  5458. 0
  5459. };
  5460. static long _huff_lengthlist_line_128x4_0sub1[] = {
  5461. 0, 0, 0, 0, 3, 2, 3, 2, 3, 3,
  5462. };
  5463. static static_codebook _huff_book_line_128x4_0sub1 = {
  5464. 1, 10,
  5465. _huff_lengthlist_line_128x4_0sub1,
  5466. 0, 0, 0, 0, 0,
  5467. NULL,
  5468. NULL,
  5469. NULL,
  5470. NULL,
  5471. 0
  5472. };
  5473. static long _huff_lengthlist_line_128x4_0sub2[] = {
  5474. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 4, 4, 4,
  5475. 4, 3, 4, 4, 5, 3, 6, 4, 6,
  5476. };
  5477. static static_codebook _huff_book_line_128x4_0sub2 = {
  5478. 1, 25,
  5479. _huff_lengthlist_line_128x4_0sub2,
  5480. 0, 0, 0, 0, 0,
  5481. NULL,
  5482. NULL,
  5483. NULL,
  5484. NULL,
  5485. 0
  5486. };
  5487. static long _huff_lengthlist_line_128x4_0sub3[] = {
  5488. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5489. 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 2, 6, 3, 6, 3,
  5490. 7, 4, 7, 5, 7, 5, 7, 6, 8, 8, 9,10,10,16,10,16,
  5491. 10,14,10,14,11,15,15,15,15,15,15,15,15,15,15,15,
  5492. };
  5493. static static_codebook _huff_book_line_128x4_0sub3 = {
  5494. 1, 64,
  5495. _huff_lengthlist_line_128x4_0sub3,
  5496. 0, 0, 0, 0, 0,
  5497. NULL,
  5498. NULL,
  5499. NULL,
  5500. NULL,
  5501. 0
  5502. };
  5503. static long _huff_lengthlist_line_128x4_class0[] = {
  5504. 8, 8, 8,14, 7, 7, 8,13, 7, 6, 7,11,11,11,10,13,
  5505. 9, 9,10,16, 8, 8, 9,12, 7, 7, 7,11,11,11,10,12,
  5506. 11,11,11,14,10,10,10,14, 9, 8, 9,12,13,14,12,14,
  5507. 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
  5508. 8, 7, 8,11, 7, 7, 7,11, 6, 6, 6,10,10,10,10,14,
  5509. 8, 8, 8,12, 7, 7, 8,11, 6, 7, 7,10,10,10,10,13,
  5510. 10,10,10,12,10, 9, 9,12, 9, 9, 9,12,12,13,12,14,
  5511. 16,16,16,16,16,14,16,16,14,14,16,16,16,16,16,16,
  5512. 7, 6, 5, 7, 6, 6, 5, 6, 6, 5, 5, 5, 9,10, 9,10,
  5513. 8, 7, 6, 7, 7, 6, 5, 6, 6, 6, 5, 6,10,10, 9, 9,
  5514. 10, 9, 7, 8, 9, 8, 7, 7, 8, 7, 6, 7,11,11,10, 9,
  5515. 16,13,14,16,14,14,13,15,16,14,12,13,16,16,14,16,
  5516. 9, 8, 7, 8, 8, 8, 7, 8, 8, 7, 6, 7,10,10, 9,12,
  5517. 9, 9, 8, 8, 9, 8, 7, 8, 8, 8, 6, 7,10,10, 9,12,
  5518. 11,10, 9,10,10, 9, 7, 9, 9, 8, 6, 9,12,11,10,13,
  5519. 12,16,16,16,12,13,12,16,15,12,11,14,16,16,16,16,
  5520. };
  5521. static static_codebook _huff_book_line_128x4_class0 = {
  5522. 1, 256,
  5523. _huff_lengthlist_line_128x4_class0,
  5524. 0, 0, 0, 0, 0,
  5525. NULL,
  5526. NULL,
  5527. NULL,
  5528. NULL,
  5529. 0
  5530. };
  5531. static long _huff_lengthlist_line_128x7_0sub1[] = {
  5532. 0, 3, 3, 3, 3, 3, 3, 3, 3,
  5533. };
  5534. static static_codebook _huff_book_line_128x7_0sub1 = {
  5535. 1, 9,
  5536. _huff_lengthlist_line_128x7_0sub1,
  5537. 0, 0, 0, 0, 0,
  5538. NULL,
  5539. NULL,
  5540. NULL,
  5541. NULL,
  5542. 0
  5543. };
  5544. static long _huff_lengthlist_line_128x7_0sub2[] = {
  5545. 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 3, 4, 4, 4,
  5546. 5, 4, 5, 4, 5, 4, 6, 4, 6,
  5547. };
  5548. static static_codebook _huff_book_line_128x7_0sub2 = {
  5549. 1, 25,
  5550. _huff_lengthlist_line_128x7_0sub2,
  5551. 0, 0, 0, 0, 0,
  5552. NULL,
  5553. NULL,
  5554. NULL,
  5555. NULL,
  5556. 0
  5557. };
  5558. static long _huff_lengthlist_line_128x7_0sub3[] = {
  5559. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5560. 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 3, 5, 3, 6, 4,
  5561. 6, 4, 6, 4, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 5, 5,
  5562. 6, 7, 8,10,12,12,12,12,12,12,12,12,12,12,12,12,
  5563. };
  5564. static static_codebook _huff_book_line_128x7_0sub3 = {
  5565. 1, 64,
  5566. _huff_lengthlist_line_128x7_0sub3,
  5567. 0, 0, 0, 0, 0,
  5568. NULL,
  5569. NULL,
  5570. NULL,
  5571. NULL,
  5572. 0
  5573. };
  5574. static long _huff_lengthlist_line_128x7_1sub1[] = {
  5575. 0, 3, 3, 3, 3, 2, 4, 3, 4,
  5576. };
  5577. static static_codebook _huff_book_line_128x7_1sub1 = {
  5578. 1, 9,
  5579. _huff_lengthlist_line_128x7_1sub1,
  5580. 0, 0, 0, 0, 0,
  5581. NULL,
  5582. NULL,
  5583. NULL,
  5584. NULL,
  5585. 0
  5586. };
  5587. static long _huff_lengthlist_line_128x7_1sub2[] = {
  5588. 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 3, 6, 3, 7, 3,
  5589. 8, 3, 9, 3,10, 3,11, 4,11,
  5590. };
  5591. static static_codebook _huff_book_line_128x7_1sub2 = {
  5592. 1, 25,
  5593. _huff_lengthlist_line_128x7_1sub2,
  5594. 0, 0, 0, 0, 0,
  5595. NULL,
  5596. NULL,
  5597. NULL,
  5598. NULL,
  5599. 0
  5600. };
  5601. static long _huff_lengthlist_line_128x7_1sub3[] = {
  5602. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5603. 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,12, 2, 9, 3,10, 4,
  5604. 12, 5,12, 6,12,10,12,11,12,12,12,12,12,12,12,11,
  5605. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  5606. };
  5607. static static_codebook _huff_book_line_128x7_1sub3 = {
  5608. 1, 64,
  5609. _huff_lengthlist_line_128x7_1sub3,
  5610. 0, 0, 0, 0, 0,
  5611. NULL,
  5612. NULL,
  5613. NULL,
  5614. NULL,
  5615. 0
  5616. };
  5617. static long _huff_lengthlist_line_128x7_class0[] = {
  5618. 10, 7, 8,14,10, 7, 7,12,11, 8, 8,13,16,16,16,16,
  5619. 8, 5, 5,10, 7, 4, 4, 8, 8, 5, 5, 9,16,16,16,16,
  5620. 7, 4, 5, 7, 6, 3, 3, 6, 8, 5, 5, 7,16,14,13,16,
  5621. 9, 7, 7,10, 7, 4, 4, 7, 9, 6, 5, 6,15,13,11,14,
  5622. };
  5623. static static_codebook _huff_book_line_128x7_class0 = {
  5624. 1, 64,
  5625. _huff_lengthlist_line_128x7_class0,
  5626. 0, 0, 0, 0, 0,
  5627. NULL,
  5628. NULL,
  5629. NULL,
  5630. NULL,
  5631. 0
  5632. };
  5633. static long _huff_lengthlist_line_128x7_class1[] = {
  5634. 8,12,16,16,10,14,16,16,12,15,16,16,16,16,16,16,
  5635. 7,11,15,16, 7,11,16,16,10,12,16,16,16,16,16,16,
  5636. 9,15,16,16, 9,12,16,16,11,15,16,16,16,16,16,16,
  5637. 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
  5638. 6,10,13,16, 7,10,15,16, 9,11,16,16,16,16,16,16,
  5639. 4, 8,13,16, 5, 8,15,16, 7, 9,15,16,16,16,16,16,
  5640. 6,12,16,16, 6,10,15,16, 9,10,14,16,16,16,16,16,
  5641. 14,16,16,16,12,14,16,16,15,16,16,16,16,16,16,16,
  5642. 4, 9,11,16, 5, 9,13,16, 7, 9,15,16,16,16,16,16,
  5643. 2, 7,11,16, 3, 6,11,16, 5, 7,12,16,16,16,16,16,
  5644. 4, 9,14,16, 4, 7,13,16, 6, 8,13,16,16,16,16,16,
  5645. 11,14,16,16,10,16,14,16,11,16,16,16,16,16,16,16,
  5646. 7,13,16,16, 9,13,15,16,11,13,16,16,16,16,16,16,
  5647. 5,10,14,16, 6,10,15,16, 9,10,16,16,16,16,16,16,
  5648. 7,13,16,16, 6,10,16,16, 9,12,16,16,16,16,16,16,
  5649. 11,16,16,16,10,16,16,16,13,16,16,16,16,16,16,16,
  5650. };
  5651. static static_codebook _huff_book_line_128x7_class1 = {
  5652. 1, 256,
  5653. _huff_lengthlist_line_128x7_class1,
  5654. 0, 0, 0, 0, 0,
  5655. NULL,
  5656. NULL,
  5657. NULL,
  5658. NULL,
  5659. 0
  5660. };
  5661. static long _huff_lengthlist_line_256x4_0sub0[] = {
  5662. 1, 3, 2, 3,
  5663. };
  5664. static static_codebook _huff_book_line_256x4_0sub0 = {
  5665. 1, 4,
  5666. _huff_lengthlist_line_256x4_0sub0,
  5667. 0, 0, 0, 0, 0,
  5668. NULL,
  5669. NULL,
  5670. NULL,
  5671. NULL,
  5672. 0
  5673. };
  5674. static long _huff_lengthlist_line_256x4_0sub1[] = {
  5675. 0, 0, 0, 0, 2, 2, 3, 3, 3, 3,
  5676. };
  5677. static static_codebook _huff_book_line_256x4_0sub1 = {
  5678. 1, 10,
  5679. _huff_lengthlist_line_256x4_0sub1,
  5680. 0, 0, 0, 0, 0,
  5681. NULL,
  5682. NULL,
  5683. NULL,
  5684. NULL,
  5685. 0
  5686. };
  5687. static long _huff_lengthlist_line_256x4_0sub2[] = {
  5688. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 3, 4,
  5689. 4, 4, 5, 4, 5, 5, 6, 4, 6,
  5690. };
  5691. static static_codebook _huff_book_line_256x4_0sub2 = {
  5692. 1, 25,
  5693. _huff_lengthlist_line_256x4_0sub2,
  5694. 0, 0, 0, 0, 0,
  5695. NULL,
  5696. NULL,
  5697. NULL,
  5698. NULL,
  5699. 0
  5700. };
  5701. static long _huff_lengthlist_line_256x4_0sub3[] = {
  5702. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5703. 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 4, 3, 4, 4,
  5704. 5, 4, 5, 5, 6, 5, 7, 6, 8, 7, 9, 8, 9, 9,10,12,
  5705. 15,15,15,15,15,15,15,15,14,14,14,14,14,14,14,14,
  5706. };
  5707. static static_codebook _huff_book_line_256x4_0sub3 = {
  5708. 1, 64,
  5709. _huff_lengthlist_line_256x4_0sub3,
  5710. 0, 0, 0, 0, 0,
  5711. NULL,
  5712. NULL,
  5713. NULL,
  5714. NULL,
  5715. 0
  5716. };
  5717. static long _huff_lengthlist_line_256x4_class0[] = {
  5718. 4, 5, 6,11, 5, 5, 6,10, 7, 6, 5, 6,14,13,10,10,
  5719. 6, 6, 6,10, 6, 6, 6,10, 7, 7, 7, 9, 9,10, 9,12,
  5720. 9, 8, 8,11, 8, 8, 8,10, 8, 8, 9,11, 8, 9, 9,13,
  5721. 18,18,18,18,16,17,18,18,12,13,14,18,14,14,10,12,
  5722. 5, 5, 6,12, 6, 5, 6,10, 7, 7, 6, 7,13,12, 9,12,
  5723. 6, 6, 6,11, 6, 6, 6, 9, 7, 7, 7,10,10,10, 9,12,
  5724. 9, 8, 8,12, 8, 8, 7,11, 8, 8, 8,11, 9, 9, 8,10,
  5725. 18,18,17,18,18,18,15,18,16,14,12,18,14,12,10,11,
  5726. 8, 7, 7,12, 8, 7, 7,10, 8, 7, 6, 6,11,10, 9,10,
  5727. 8, 8, 7,11, 8, 7, 7, 9, 8, 8, 7, 9,10,10, 9, 9,
  5728. 10, 9, 8,12, 9, 9, 8,11,10, 9, 8, 9, 8, 8, 7, 9,
  5729. 18,18,18,18,18,18,18,18,17,16,14,18,13,12,11,13,
  5730. 12,12,13,16,11,10,10,16,12,12, 9, 7,15,12,11,11,
  5731. 14,14,14,14,12,11,11,18,14,12,10,11,18,13,11,13,
  5732. 18,18,18,17,17,16,15,17,18,15,16,18,16,12,11,11,
  5733. 18,18,18,18,18,18,18,18,18,18,17,18,18,13,12,15,
  5734. };
  5735. static static_codebook _huff_book_line_256x4_class0 = {
  5736. 1, 256,
  5737. _huff_lengthlist_line_256x4_class0,
  5738. 0, 0, 0, 0, 0,
  5739. NULL,
  5740. NULL,
  5741. NULL,
  5742. NULL,
  5743. 0
  5744. };
  5745. static long _huff_lengthlist_line_256x7_0sub1[] = {
  5746. 0, 2, 3, 3, 3, 3, 4, 3, 4,
  5747. };
  5748. static static_codebook _huff_book_line_256x7_0sub1 = {
  5749. 1, 9,
  5750. _huff_lengthlist_line_256x7_0sub1,
  5751. 0, 0, 0, 0, 0,
  5752. NULL,
  5753. NULL,
  5754. NULL,
  5755. NULL,
  5756. 0
  5757. };
  5758. static long _huff_lengthlist_line_256x7_0sub2[] = {
  5759. 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 4, 3, 5, 3,
  5760. 6, 3, 6, 4, 6, 4, 7, 5, 7,
  5761. };
  5762. static static_codebook _huff_book_line_256x7_0sub2 = {
  5763. 1, 25,
  5764. _huff_lengthlist_line_256x7_0sub2,
  5765. 0, 0, 0, 0, 0,
  5766. NULL,
  5767. NULL,
  5768. NULL,
  5769. NULL,
  5770. 0
  5771. };
  5772. static long _huff_lengthlist_line_256x7_0sub3[] = {
  5773. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5774. 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 2, 5, 3, 5, 3,
  5775. 6, 3, 6, 4, 7, 6, 7, 8, 7, 9, 8, 9, 9, 9,10, 9,
  5776. 11,13,11,13,10,10,13,13,13,13,13,13,12,12,12,12,
  5777. };
  5778. static static_codebook _huff_book_line_256x7_0sub3 = {
  5779. 1, 64,
  5780. _huff_lengthlist_line_256x7_0sub3,
  5781. 0, 0, 0, 0, 0,
  5782. NULL,
  5783. NULL,
  5784. NULL,
  5785. NULL,
  5786. 0
  5787. };
  5788. static long _huff_lengthlist_line_256x7_1sub1[] = {
  5789. 0, 3, 3, 3, 3, 2, 4, 3, 4,
  5790. };
  5791. static static_codebook _huff_book_line_256x7_1sub1 = {
  5792. 1, 9,
  5793. _huff_lengthlist_line_256x7_1sub1,
  5794. 0, 0, 0, 0, 0,
  5795. NULL,
  5796. NULL,
  5797. NULL,
  5798. NULL,
  5799. 0
  5800. };
  5801. static long _huff_lengthlist_line_256x7_1sub2[] = {
  5802. 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 4, 3, 4, 4,
  5803. 5, 4, 6, 5, 6, 7, 6, 8, 8,
  5804. };
  5805. static static_codebook _huff_book_line_256x7_1sub2 = {
  5806. 1, 25,
  5807. _huff_lengthlist_line_256x7_1sub2,
  5808. 0, 0, 0, 0, 0,
  5809. NULL,
  5810. NULL,
  5811. NULL,
  5812. NULL,
  5813. 0
  5814. };
  5815. static long _huff_lengthlist_line_256x7_1sub3[] = {
  5816. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5817. 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 3, 6, 3, 7,
  5818. 3, 8, 5, 8, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  5819. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7,
  5820. };
  5821. static static_codebook _huff_book_line_256x7_1sub3 = {
  5822. 1, 64,
  5823. _huff_lengthlist_line_256x7_1sub3,
  5824. 0, 0, 0, 0, 0,
  5825. NULL,
  5826. NULL,
  5827. NULL,
  5828. NULL,
  5829. 0
  5830. };
  5831. static long _huff_lengthlist_line_256x7_class0[] = {
  5832. 7, 5, 5, 9, 9, 6, 6, 9,12, 8, 7, 8,11, 8, 9,15,
  5833. 6, 3, 3, 7, 7, 4, 3, 6, 9, 6, 5, 6, 8, 6, 8,15,
  5834. 8, 5, 5, 9, 8, 5, 4, 6,10, 7, 5, 5,11, 8, 7,15,
  5835. 14,15,13,13,13,13, 8,11,15,10, 7, 6,11, 9,10,15,
  5836. };
  5837. static static_codebook _huff_book_line_256x7_class0 = {
  5838. 1, 64,
  5839. _huff_lengthlist_line_256x7_class0,
  5840. 0, 0, 0, 0, 0,
  5841. NULL,
  5842. NULL,
  5843. NULL,
  5844. NULL,
  5845. 0
  5846. };
  5847. static long _huff_lengthlist_line_256x7_class1[] = {
  5848. 5, 6, 8,15, 6, 9,10,15,10,11,12,15,15,15,15,15,
  5849. 4, 6, 7,15, 6, 7, 8,15, 9, 8, 9,15,15,15,15,15,
  5850. 6, 8, 9,15, 7, 7, 8,15,10, 9,10,15,15,15,15,15,
  5851. 15,13,15,15,15,10,11,15,15,13,13,15,15,15,15,15,
  5852. 4, 6, 7,15, 6, 8, 9,15,10,10,12,15,15,15,15,15,
  5853. 2, 5, 6,15, 5, 6, 7,15, 8, 6, 7,15,15,15,15,15,
  5854. 5, 6, 8,15, 5, 6, 7,15, 9, 6, 7,15,15,15,15,15,
  5855. 14,12,13,15,12,10,11,15,15,15,15,15,15,15,15,15,
  5856. 7, 8, 9,15, 9,10,10,15,15,14,14,15,15,15,15,15,
  5857. 5, 6, 7,15, 7, 8, 9,15,12, 9,10,15,15,15,15,15,
  5858. 7, 7, 9,15, 7, 7, 8,15,12, 8, 9,15,15,15,15,15,
  5859. 13,13,14,15,12,11,12,15,15,15,15,15,15,15,15,15,
  5860. 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
  5861. 13,13,13,15,15,15,15,15,15,15,15,15,15,15,15,15,
  5862. 15,12,13,15,15,12,13,15,15,14,15,15,15,15,15,15,
  5863. 15,15,15,15,15,15,13,15,15,15,15,15,15,15,15,15,
  5864. };
  5865. static static_codebook _huff_book_line_256x7_class1 = {
  5866. 1, 256,
  5867. _huff_lengthlist_line_256x7_class1,
  5868. 0, 0, 0, 0, 0,
  5869. NULL,
  5870. NULL,
  5871. NULL,
  5872. NULL,
  5873. 0
  5874. };
  5875. static long _huff_lengthlist_line_512x17_0sub0[] = {
  5876. 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
  5877. 5, 6, 5, 6, 6, 6, 6, 5, 6, 6, 7, 6, 7, 6, 7, 6,
  5878. 7, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 9, 7, 9, 7,
  5879. 9, 7, 9, 8, 9, 8,10, 8,10, 8,10, 7,10, 6,10, 8,
  5880. 10, 8,11, 7,10, 7,11, 8,11,11,12,12,11,11,12,11,
  5881. 13,11,13,11,13,12,15,12,13,13,14,14,14,14,14,15,
  5882. 15,15,16,14,17,19,19,18,18,18,18,18,18,18,18,18,
  5883. 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
  5884. };
  5885. static static_codebook _huff_book_line_512x17_0sub0 = {
  5886. 1, 128,
  5887. _huff_lengthlist_line_512x17_0sub0,
  5888. 0, 0, 0, 0, 0,
  5889. NULL,
  5890. NULL,
  5891. NULL,
  5892. NULL,
  5893. 0
  5894. };
  5895. static long _huff_lengthlist_line_512x17_1sub0[] = {
  5896. 2, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5,
  5897. 6, 5, 6, 6, 7, 6, 7, 6, 8, 7, 8, 7, 8, 7, 8, 7,
  5898. };
  5899. static static_codebook _huff_book_line_512x17_1sub0 = {
  5900. 1, 32,
  5901. _huff_lengthlist_line_512x17_1sub0,
  5902. 0, 0, 0, 0, 0,
  5903. NULL,
  5904. NULL,
  5905. NULL,
  5906. NULL,
  5907. 0
  5908. };
  5909. static long _huff_lengthlist_line_512x17_1sub1[] = {
  5910. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5911. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5912. 4, 3, 5, 3, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 6, 5,
  5913. 6, 5, 7, 5, 8, 6, 8, 6, 8, 6, 8, 6, 8, 7, 9, 7,
  5914. 9, 7,11, 9,11,11,12,11,14,12,14,16,14,16,13,16,
  5915. 14,16,12,15,13,16,14,16,13,14,12,15,13,15,13,13,
  5916. 13,15,12,14,14,15,13,15,12,15,15,15,15,15,15,15,
  5917. 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
  5918. };
  5919. static static_codebook _huff_book_line_512x17_1sub1 = {
  5920. 1, 128,
  5921. _huff_lengthlist_line_512x17_1sub1,
  5922. 0, 0, 0, 0, 0,
  5923. NULL,
  5924. NULL,
  5925. NULL,
  5926. NULL,
  5927. 0
  5928. };
  5929. static long _huff_lengthlist_line_512x17_2sub1[] = {
  5930. 0, 4, 5, 4, 4, 4, 5, 4, 4, 4, 5, 4, 5, 4, 5, 3,
  5931. 5, 3,
  5932. };
  5933. static static_codebook _huff_book_line_512x17_2sub1 = {
  5934. 1, 18,
  5935. _huff_lengthlist_line_512x17_2sub1,
  5936. 0, 0, 0, 0, 0,
  5937. NULL,
  5938. NULL,
  5939. NULL,
  5940. NULL,
  5941. 0
  5942. };
  5943. static long _huff_lengthlist_line_512x17_2sub2[] = {
  5944. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5945. 0, 0, 4, 3, 4, 3, 4, 4, 5, 4, 5, 4, 6, 4, 6, 5,
  5946. 6, 5, 7, 5, 7, 6, 8, 6, 8, 6, 8, 7, 8, 7, 9, 7,
  5947. 9, 8,
  5948. };
  5949. static static_codebook _huff_book_line_512x17_2sub2 = {
  5950. 1, 50,
  5951. _huff_lengthlist_line_512x17_2sub2,
  5952. 0, 0, 0, 0, 0,
  5953. NULL,
  5954. NULL,
  5955. NULL,
  5956. NULL,
  5957. 0
  5958. };
  5959. static long _huff_lengthlist_line_512x17_2sub3[] = {
  5960. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5961. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5962. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5963. 0, 0, 3, 3, 3, 3, 4, 3, 4, 4, 5, 5, 6, 6, 7, 7,
  5964. 7, 8, 8,11, 8, 9, 9, 9,10,11,11,11, 9,10,10,11,
  5965. 11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
  5966. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  5967. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  5968. };
  5969. static static_codebook _huff_book_line_512x17_2sub3 = {
  5970. 1, 128,
  5971. _huff_lengthlist_line_512x17_2sub3,
  5972. 0, 0, 0, 0, 0,
  5973. NULL,
  5974. NULL,
  5975. NULL,
  5976. NULL,
  5977. 0
  5978. };
  5979. static long _huff_lengthlist_line_512x17_3sub1[] = {
  5980. 0, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 5, 4, 5,
  5981. 5, 5,
  5982. };
  5983. static static_codebook _huff_book_line_512x17_3sub1 = {
  5984. 1, 18,
  5985. _huff_lengthlist_line_512x17_3sub1,
  5986. 0, 0, 0, 0, 0,
  5987. NULL,
  5988. NULL,
  5989. NULL,
  5990. NULL,
  5991. 0
  5992. };
  5993. static long _huff_lengthlist_line_512x17_3sub2[] = {
  5994. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  5995. 0, 0, 2, 3, 3, 4, 3, 5, 4, 6, 4, 6, 5, 7, 6, 7,
  5996. 6, 8, 6, 8, 7, 9, 8,10, 8,12, 9,13,10,15,10,15,
  5997. 11,14,
  5998. };
  5999. static static_codebook _huff_book_line_512x17_3sub2 = {
  6000. 1, 50,
  6001. _huff_lengthlist_line_512x17_3sub2,
  6002. 0, 0, 0, 0, 0,
  6003. NULL,
  6004. NULL,
  6005. NULL,
  6006. NULL,
  6007. 0
  6008. };
  6009. static long _huff_lengthlist_line_512x17_3sub3[] = {
  6010. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6011. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6012. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6013. 0, 0, 4, 8, 4, 8, 4, 8, 4, 8, 5, 8, 5, 8, 6, 8,
  6014. 4, 8, 4, 8, 5, 8, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  6015. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  6016. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  6017. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  6018. };
  6019. static static_codebook _huff_book_line_512x17_3sub3 = {
  6020. 1, 128,
  6021. _huff_lengthlist_line_512x17_3sub3,
  6022. 0, 0, 0, 0, 0,
  6023. NULL,
  6024. NULL,
  6025. NULL,
  6026. NULL,
  6027. 0
  6028. };
  6029. static long _huff_lengthlist_line_512x17_class1[] = {
  6030. 1, 2, 3, 6, 5, 4, 7, 7,
  6031. };
  6032. static static_codebook _huff_book_line_512x17_class1 = {
  6033. 1, 8,
  6034. _huff_lengthlist_line_512x17_class1,
  6035. 0, 0, 0, 0, 0,
  6036. NULL,
  6037. NULL,
  6038. NULL,
  6039. NULL,
  6040. 0
  6041. };
  6042. static long _huff_lengthlist_line_512x17_class2[] = {
  6043. 3, 3, 3,14, 5, 4, 4,11, 8, 6, 6,10,17,12,11,17,
  6044. 6, 5, 5,15, 5, 3, 4,11, 8, 5, 5, 8,16, 9,10,14,
  6045. 10, 8, 9,17, 8, 6, 6,13,10, 7, 7,10,16,11,13,14,
  6046. 17,17,17,17,17,16,16,16,16,15,16,16,16,16,16,16,
  6047. };
  6048. static static_codebook _huff_book_line_512x17_class2 = {
  6049. 1, 64,
  6050. _huff_lengthlist_line_512x17_class2,
  6051. 0, 0, 0, 0, 0,
  6052. NULL,
  6053. NULL,
  6054. NULL,
  6055. NULL,
  6056. 0
  6057. };
  6058. static long _huff_lengthlist_line_512x17_class3[] = {
  6059. 2, 4, 6,17, 4, 5, 7,17, 8, 7,10,17,17,17,17,17,
  6060. 3, 4, 6,15, 3, 3, 6,15, 7, 6, 9,17,17,17,17,17,
  6061. 6, 8,10,17, 6, 6, 8,16, 9, 8,10,17,17,15,16,17,
  6062. 17,17,17,17,12,15,15,16,12,15,15,16,16,16,16,16,
  6063. };
  6064. static static_codebook _huff_book_line_512x17_class3 = {
  6065. 1, 64,
  6066. _huff_lengthlist_line_512x17_class3,
  6067. 0, 0, 0, 0, 0,
  6068. NULL,
  6069. NULL,
  6070. NULL,
  6071. NULL,
  6072. 0
  6073. };
  6074. static static_codebook *_floor_128x4_books[]={
  6075. &_huff_book_line_128x4_class0,
  6076. &_huff_book_line_128x4_0sub0,
  6077. &_huff_book_line_128x4_0sub1,
  6078. &_huff_book_line_128x4_0sub2,
  6079. &_huff_book_line_128x4_0sub3,
  6080. };
  6081. static static_codebook *_floor_256x4_books[]={
  6082. &_huff_book_line_256x4_class0,
  6083. &_huff_book_line_256x4_0sub0,
  6084. &_huff_book_line_256x4_0sub1,
  6085. &_huff_book_line_256x4_0sub2,
  6086. &_huff_book_line_256x4_0sub3,
  6087. };
  6088. static static_codebook *_floor_128x7_books[]={
  6089. &_huff_book_line_128x7_class0,
  6090. &_huff_book_line_128x7_class1,
  6091. &_huff_book_line_128x7_0sub1,
  6092. &_huff_book_line_128x7_0sub2,
  6093. &_huff_book_line_128x7_0sub3,
  6094. &_huff_book_line_128x7_1sub1,
  6095. &_huff_book_line_128x7_1sub2,
  6096. &_huff_book_line_128x7_1sub3,
  6097. };
  6098. static static_codebook *_floor_256x7_books[]={
  6099. &_huff_book_line_256x7_class0,
  6100. &_huff_book_line_256x7_class1,
  6101. &_huff_book_line_256x7_0sub1,
  6102. &_huff_book_line_256x7_0sub2,
  6103. &_huff_book_line_256x7_0sub3,
  6104. &_huff_book_line_256x7_1sub1,
  6105. &_huff_book_line_256x7_1sub2,
  6106. &_huff_book_line_256x7_1sub3,
  6107. };
  6108. static static_codebook *_floor_128x11_books[]={
  6109. &_huff_book_line_128x11_class1,
  6110. &_huff_book_line_128x11_class2,
  6111. &_huff_book_line_128x11_class3,
  6112. &_huff_book_line_128x11_0sub0,
  6113. &_huff_book_line_128x11_1sub0,
  6114. &_huff_book_line_128x11_1sub1,
  6115. &_huff_book_line_128x11_2sub1,
  6116. &_huff_book_line_128x11_2sub2,
  6117. &_huff_book_line_128x11_2sub3,
  6118. &_huff_book_line_128x11_3sub1,
  6119. &_huff_book_line_128x11_3sub2,
  6120. &_huff_book_line_128x11_3sub3,
  6121. };
  6122. static static_codebook *_floor_128x17_books[]={
  6123. &_huff_book_line_128x17_class1,
  6124. &_huff_book_line_128x17_class2,
  6125. &_huff_book_line_128x17_class3,
  6126. &_huff_book_line_128x17_0sub0,
  6127. &_huff_book_line_128x17_1sub0,
  6128. &_huff_book_line_128x17_1sub1,
  6129. &_huff_book_line_128x17_2sub1,
  6130. &_huff_book_line_128x17_2sub2,
  6131. &_huff_book_line_128x17_2sub3,
  6132. &_huff_book_line_128x17_3sub1,
  6133. &_huff_book_line_128x17_3sub2,
  6134. &_huff_book_line_128x17_3sub3,
  6135. };
  6136. static static_codebook *_floor_512x17_books[]={
  6137. &_huff_book_line_512x17_class1,
  6138. &_huff_book_line_512x17_class2,
  6139. &_huff_book_line_512x17_class3,
  6140. &_huff_book_line_512x17_0sub0,
  6141. &_huff_book_line_512x17_1sub0,
  6142. &_huff_book_line_512x17_1sub1,
  6143. &_huff_book_line_512x17_2sub1,
  6144. &_huff_book_line_512x17_2sub2,
  6145. &_huff_book_line_512x17_2sub3,
  6146. &_huff_book_line_512x17_3sub1,
  6147. &_huff_book_line_512x17_3sub2,
  6148. &_huff_book_line_512x17_3sub3,
  6149. };
  6150. static static_codebook *_floor_1024x27_books[]={
  6151. &_huff_book_line_1024x27_class1,
  6152. &_huff_book_line_1024x27_class2,
  6153. &_huff_book_line_1024x27_class3,
  6154. &_huff_book_line_1024x27_class4,
  6155. &_huff_book_line_1024x27_0sub0,
  6156. &_huff_book_line_1024x27_1sub0,
  6157. &_huff_book_line_1024x27_1sub1,
  6158. &_huff_book_line_1024x27_2sub0,
  6159. &_huff_book_line_1024x27_2sub1,
  6160. &_huff_book_line_1024x27_3sub1,
  6161. &_huff_book_line_1024x27_3sub2,
  6162. &_huff_book_line_1024x27_3sub3,
  6163. &_huff_book_line_1024x27_4sub1,
  6164. &_huff_book_line_1024x27_4sub2,
  6165. &_huff_book_line_1024x27_4sub3,
  6166. };
  6167. static static_codebook **_floor_books[10]={
  6168. _floor_128x4_books,
  6169. _floor_256x4_books,
  6170. _floor_128x7_books,
  6171. _floor_256x7_books,
  6172. _floor_128x11_books,
  6173. _floor_128x17_books,
  6174. _floor_128x17_books,
  6175. _floor_1024x27_books,
  6176. _floor_1024x27_books,
  6177. _floor_512x17_books,
  6178. };
  6179. static vorbis_info_floor1 _floor[10]={
  6180. /* 128 x 4 */
  6181. {
  6182. 1,{0},{4},{2},{0},
  6183. {{1,2,3,4}},
  6184. 4,{0,128, 33,8,16,70},
  6185. 60,30,500, 1.,18., -1
  6186. },
  6187. /* 256 x 4 */
  6188. {
  6189. 1,{0},{4},{2},{0},
  6190. {{1,2,3,4}},
  6191. 4,{0,256, 66,16,32,140},
  6192. 60,30,500, 1.,18., -1
  6193. },
  6194. /* 128 x 7 */
  6195. {
  6196. 2,{0,1},{3,4},{2,2},{0,1},
  6197. {{-1,2,3,4},{-1,5,6,7}},
  6198. 4,{0,128, 14,4,58, 2,8,28,90},
  6199. 60,30,500, 1.,18., -1
  6200. },
  6201. /* 256 x 7 */
  6202. {
  6203. 2,{0,1},{3,4},{2,2},{0,1},
  6204. {{-1,2,3,4},{-1,5,6,7}},
  6205. 4,{0,256, 28,8,116, 4,16,56,180},
  6206. 60,30,500, 1.,18., -1
  6207. },
  6208. /* 128 x 11 */
  6209. {
  6210. 4,{0,1,2,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
  6211. {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
  6212. 2,{0,128, 8,33, 4,16,70, 2,6,12, 23,46,90},
  6213. 60,30,500, 1,18., -1
  6214. },
  6215. /* 128 x 17 */
  6216. {
  6217. 6,{0,1,1,2,3,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
  6218. {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
  6219. 2,{0,128, 12,46, 4,8,16, 23,33,70, 2,6,10, 14,19,28, 39,58,90},
  6220. 60,30,500, 1,18., -1
  6221. },
  6222. /* 1024 x 17 */
  6223. {
  6224. 6,{0,1,1,2,3,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
  6225. {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
  6226. 2,{0,1024, 93,372, 33,65,130, 186,260,556,
  6227. 14,46,79, 111,158,220, 312,464,720},
  6228. 60,30,500, 1,18., -1 /* lowpass! */
  6229. },
  6230. /* 1024 x 27 */
  6231. {
  6232. 8,{0,1,2,2,3,3,4,4},{3,4,3,4,3},{0,1,1,2,2},{-1,0,1,2,3},
  6233. {{4},{5,6},{7,8},{-1,9,10,11},{-1,12,13,14}},
  6234. 2,{0,1024, 93,23,372, 6,46,186,750, 14,33,65, 130,260,556,
  6235. 3,10,18,28, 39,55,79,111, 158,220,312, 464,650,850},
  6236. 60,30,500, 3,18., -1 /* lowpass */
  6237. },
  6238. /* 2048 x 27 */
  6239. {
  6240. 8,{0,1,2,2,3,3,4,4},{3,4,3,4,3},{0,1,1,2,2},{-1,0,1,2,3},
  6241. {{4},{5,6},{7,8},{-1,9,10,11},{-1,12,13,14}},
  6242. 2,{0,2048, 186,46,744, 12,92,372,1500, 28,66,130, 260,520,1112,
  6243. 6,20,36,56, 78,110,158,222, 316,440,624, 928,1300,1700},
  6244. 60,30,500, 3,18., -1 /* lowpass */
  6245. },
  6246. /* 512 x 17 */
  6247. {
  6248. 6,{0,1,1,2,3,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
  6249. {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
  6250. 2,{0,512, 46,186, 16,33,65, 93,130,278,
  6251. 7,23,39, 55,79,110, 156,232,360},
  6252. 60,30,500, 1,18., -1 /* lowpass! */
  6253. },
  6254. };
  6255. /********************************************************************
  6256. * *
  6257. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  6258. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  6259. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  6260. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  6261. * *
  6262. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  6263. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  6264. * *
  6265. ********************************************************************
  6266. function: toplevel residue templates for 32/44.1/48kHz
  6267. last mod: $Id: residue_44.h,v 1.16 2002/07/11 06:41:04 xiphmont Exp $
  6268. ********************************************************************/
  6269. /********************************************************************
  6270. * *
  6271. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  6272. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  6273. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  6274. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  6275. * *
  6276. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  6277. * by the Xiph.Org Foundation http://www.xiph.org/ *
  6278. * *
  6279. ********************************************************************
  6280. function: static codebooks autogenerated by huff/huffbuld
  6281. last modified: $Id: res_books_stereo.h,v 1.2 2002/07/11 10:27:51 xiphmont Exp $
  6282. ********************************************************************/
  6283. static long _vq_quantlist__16c0_s_p1_0[] = {
  6284. 1,
  6285. 0,
  6286. 2,
  6287. };
  6288. static long _vq_lengthlist__16c0_s_p1_0[] = {
  6289. 1, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
  6290. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6291. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6292. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6293. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6294. 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0,
  6295. 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6296. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6297. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6298. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6299. 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  6300. 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6301. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6302. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6303. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6304. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6305. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6306. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6307. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6308. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6309. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6310. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6311. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6312. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6313. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6314. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6315. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6316. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6317. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6318. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6319. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6320. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6321. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6322. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6323. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6324. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6325. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6326. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6327. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6328. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6329. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6330. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6331. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6332. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6333. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6334. 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
  6335. 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0,
  6336. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6337. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6338. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6339. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0,
  6340. 0, 0, 0, 9, 9,12, 0, 0, 0, 0, 0, 0,10,12,11, 0,
  6341. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6342. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6343. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6344. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0,
  6345. 0, 0, 0, 0, 9,12,10, 0, 0, 0, 0, 0, 0,10,11,12,
  6346. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6347. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6348. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6349. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6350. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6351. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6352. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6353. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6354. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6355. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6356. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6357. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6358. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6359. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6360. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6361. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6362. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6363. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6364. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6365. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6366. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6367. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6368. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6369. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6370. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6371. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6372. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6373. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6374. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6375. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6376. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6377. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6378. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6379. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6380. 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0,
  6381. 0, 0, 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6382. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6383. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6384. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6385. 0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,12,11, 0,
  6386. 0, 0, 0, 0, 0, 9,10,12, 0, 0, 0, 0, 0, 0, 0, 0,
  6387. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6388. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6389. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6390. 0, 0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,11,12,
  6391. 0, 0, 0, 0, 0, 0, 9,12, 9, 0, 0, 0, 0, 0, 0, 0,
  6392. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6393. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6394. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6395. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6396. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6397. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6398. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6399. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6400. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6401. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6402. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6403. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6404. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6405. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6406. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6407. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6408. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6409. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6410. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6411. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6412. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6413. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6414. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6415. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6416. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6417. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6418. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6419. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6420. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6421. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6422. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6423. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6424. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6425. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6426. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6427. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6428. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6429. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6430. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6431. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6432. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6433. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6434. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6435. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6436. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6437. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6438. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6439. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6440. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6441. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6442. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6443. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6444. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6445. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6446. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6447. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6448. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6449. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6450. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6451. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6452. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6453. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6454. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6455. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6456. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6457. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6458. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6459. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6460. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6461. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6462. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6463. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6464. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6465. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6466. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6467. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6468. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6469. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6470. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6471. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6472. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6473. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6474. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6475. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6476. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6477. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6478. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6479. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6480. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6481. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6482. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6483. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6484. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6485. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6486. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6487. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6488. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6489. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6490. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6491. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6492. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6493. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6494. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6495. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6496. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6497. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6498. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6499. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6500. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6501. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6502. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6503. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6504. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6505. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6506. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6507. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6508. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6509. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6510. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6511. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6512. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6513. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6514. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6515. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6516. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6517. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6518. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6519. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6520. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6521. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6522. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6523. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6524. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6525. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6526. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6527. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6528. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6529. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6530. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6531. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6532. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6533. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6534. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6535. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6536. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6537. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6538. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6539. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6540. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6541. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6542. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6543. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6544. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6545. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6546. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6547. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6548. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6549. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6550. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6551. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6552. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6553. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6554. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6555. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6556. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6557. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6558. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6559. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6560. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6561. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6562. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6563. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6564. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6565. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6566. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6567. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6568. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6569. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6570. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6571. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6572. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6573. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6574. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6575. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6576. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6577. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6578. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6579. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6580. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6581. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6582. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6583. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6584. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6585. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6586. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6587. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6588. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6589. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6590. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6591. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6592. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6593. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6594. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6595. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6596. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6597. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6598. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6599. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6600. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6601. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6602. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6603. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6604. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6605. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6606. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6607. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6608. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6609. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6610. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6611. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6612. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6613. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6614. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6615. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6616. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6617. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6618. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6619. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6620. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6621. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6622. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6623. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6624. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6625. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6626. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6627. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6628. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6629. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6630. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6631. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6632. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6633. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6634. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6635. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6636. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6637. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6638. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6639. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6640. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6641. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6642. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6643. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6644. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6645. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6646. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6647. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6648. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6649. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6650. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6651. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6652. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6653. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6654. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6655. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6656. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6657. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6658. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6659. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6660. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6661. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6662. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6663. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6664. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6665. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6666. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6667. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6668. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6669. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6670. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6671. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6672. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6673. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6674. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6675. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6676. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6677. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6678. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6679. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6680. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6681. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6682. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6683. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6684. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6685. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6686. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6687. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6688. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6689. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6690. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6691. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6692. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6693. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6694. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6695. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6696. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6697. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6698. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6699. 0,
  6700. };
  6701. static float _vq_quantthresh__16c0_s_p1_0[] = {
  6702. -0.5, 0.5,
  6703. };
  6704. static long _vq_quantmap__16c0_s_p1_0[] = {
  6705. 1, 0, 2,
  6706. };
  6707. static encode_aux_threshmatch _vq_auxt__16c0_s_p1_0 = {
  6708. _vq_quantthresh__16c0_s_p1_0,
  6709. _vq_quantmap__16c0_s_p1_0,
  6710. 3,
  6711. 3
  6712. };
  6713. static static_codebook _16c0_s_p1_0 = {
  6714. 8, 6561,
  6715. _vq_lengthlist__16c0_s_p1_0,
  6716. 1, -535822336, 1611661312, 2, 0,
  6717. _vq_quantlist__16c0_s_p1_0,
  6718. NULL,
  6719. &_vq_auxt__16c0_s_p1_0,
  6720. NULL,
  6721. 0
  6722. };
  6723. static long _vq_quantlist__16c0_s_p2_0[] = {
  6724. 2,
  6725. 1,
  6726. 3,
  6727. 0,
  6728. 4,
  6729. };
  6730. static long _vq_lengthlist__16c0_s_p2_0[] = {
  6731. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6732. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6733. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6734. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6735. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6736. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6737. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6738. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6739. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6740. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6741. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6742. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6743. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6744. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6745. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6746. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6747. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6748. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6749. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6750. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6751. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6752. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6753. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6754. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6755. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6756. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6757. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6758. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6759. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6760. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6761. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6762. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6763. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6764. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6765. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6766. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6767. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6768. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6769. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6770. 0,
  6771. };
  6772. static float _vq_quantthresh__16c0_s_p2_0[] = {
  6773. -1.5, -0.5, 0.5, 1.5,
  6774. };
  6775. static long _vq_quantmap__16c0_s_p2_0[] = {
  6776. 3, 1, 0, 2, 4,
  6777. };
  6778. static encode_aux_threshmatch _vq_auxt__16c0_s_p2_0 = {
  6779. _vq_quantthresh__16c0_s_p2_0,
  6780. _vq_quantmap__16c0_s_p2_0,
  6781. 5,
  6782. 5
  6783. };
  6784. static static_codebook _16c0_s_p2_0 = {
  6785. 4, 625,
  6786. _vq_lengthlist__16c0_s_p2_0,
  6787. 1, -533725184, 1611661312, 3, 0,
  6788. _vq_quantlist__16c0_s_p2_0,
  6789. NULL,
  6790. &_vq_auxt__16c0_s_p2_0,
  6791. NULL,
  6792. 0
  6793. };
  6794. static long _vq_quantlist__16c0_s_p3_0[] = {
  6795. 2,
  6796. 1,
  6797. 3,
  6798. 0,
  6799. 4,
  6800. };
  6801. static long _vq_lengthlist__16c0_s_p3_0[] = {
  6802. 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6803. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 7, 6, 0, 0,
  6804. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6805. 0, 0, 4, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6806. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
  6807. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6808. 0, 0, 0, 0, 6, 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 0,
  6809. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6810. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6811. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6812. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6813. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6814. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6815. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6816. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6817. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6818. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6819. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6820. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6821. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6822. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6823. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6824. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6825. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6826. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6827. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6828. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6829. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6830. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6831. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6832. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6833. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6834. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6835. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6836. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6837. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6838. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6839. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6840. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6841. 0,
  6842. };
  6843. static float _vq_quantthresh__16c0_s_p3_0[] = {
  6844. -1.5, -0.5, 0.5, 1.5,
  6845. };
  6846. static long _vq_quantmap__16c0_s_p3_0[] = {
  6847. 3, 1, 0, 2, 4,
  6848. };
  6849. static encode_aux_threshmatch _vq_auxt__16c0_s_p3_0 = {
  6850. _vq_quantthresh__16c0_s_p3_0,
  6851. _vq_quantmap__16c0_s_p3_0,
  6852. 5,
  6853. 5
  6854. };
  6855. static static_codebook _16c0_s_p3_0 = {
  6856. 4, 625,
  6857. _vq_lengthlist__16c0_s_p3_0,
  6858. 1, -533725184, 1611661312, 3, 0,
  6859. _vq_quantlist__16c0_s_p3_0,
  6860. NULL,
  6861. &_vq_auxt__16c0_s_p3_0,
  6862. NULL,
  6863. 0
  6864. };
  6865. static long _vq_quantlist__16c0_s_p4_0[] = {
  6866. 4,
  6867. 3,
  6868. 5,
  6869. 2,
  6870. 6,
  6871. 1,
  6872. 7,
  6873. 0,
  6874. 8,
  6875. };
  6876. static long _vq_lengthlist__16c0_s_p4_0[] = {
  6877. 1, 3, 2, 7, 8, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
  6878. 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
  6879. 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  6880. 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
  6881. 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  6882. 0,
  6883. };
  6884. static float _vq_quantthresh__16c0_s_p4_0[] = {
  6885. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  6886. };
  6887. static long _vq_quantmap__16c0_s_p4_0[] = {
  6888. 7, 5, 3, 1, 0, 2, 4, 6,
  6889. 8,
  6890. };
  6891. static encode_aux_threshmatch _vq_auxt__16c0_s_p4_0 = {
  6892. _vq_quantthresh__16c0_s_p4_0,
  6893. _vq_quantmap__16c0_s_p4_0,
  6894. 9,
  6895. 9
  6896. };
  6897. static static_codebook _16c0_s_p4_0 = {
  6898. 2, 81,
  6899. _vq_lengthlist__16c0_s_p4_0,
  6900. 1, -531628032, 1611661312, 4, 0,
  6901. _vq_quantlist__16c0_s_p4_0,
  6902. NULL,
  6903. &_vq_auxt__16c0_s_p4_0,
  6904. NULL,
  6905. 0
  6906. };
  6907. static long _vq_quantlist__16c0_s_p5_0[] = {
  6908. 4,
  6909. 3,
  6910. 5,
  6911. 2,
  6912. 6,
  6913. 1,
  6914. 7,
  6915. 0,
  6916. 8,
  6917. };
  6918. static long _vq_lengthlist__16c0_s_p5_0[] = {
  6919. 1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
  6920. 8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 8, 0, 0, 0, 7, 7,
  6921. 8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, 0,
  6922. 8, 9, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
  6923. 0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
  6924. 10,
  6925. };
  6926. static float _vq_quantthresh__16c0_s_p5_0[] = {
  6927. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  6928. };
  6929. static long _vq_quantmap__16c0_s_p5_0[] = {
  6930. 7, 5, 3, 1, 0, 2, 4, 6,
  6931. 8,
  6932. };
  6933. static encode_aux_threshmatch _vq_auxt__16c0_s_p5_0 = {
  6934. _vq_quantthresh__16c0_s_p5_0,
  6935. _vq_quantmap__16c0_s_p5_0,
  6936. 9,
  6937. 9
  6938. };
  6939. static static_codebook _16c0_s_p5_0 = {
  6940. 2, 81,
  6941. _vq_lengthlist__16c0_s_p5_0,
  6942. 1, -531628032, 1611661312, 4, 0,
  6943. _vq_quantlist__16c0_s_p5_0,
  6944. NULL,
  6945. &_vq_auxt__16c0_s_p5_0,
  6946. NULL,
  6947. 0
  6948. };
  6949. static long _vq_quantlist__16c0_s_p6_0[] = {
  6950. 8,
  6951. 7,
  6952. 9,
  6953. 6,
  6954. 10,
  6955. 5,
  6956. 11,
  6957. 4,
  6958. 12,
  6959. 3,
  6960. 13,
  6961. 2,
  6962. 14,
  6963. 1,
  6964. 15,
  6965. 0,
  6966. 16,
  6967. };
  6968. static long _vq_lengthlist__16c0_s_p6_0[] = {
  6969. 1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
  6970. 11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,11,
  6971. 11,11, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,
  6972. 11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
  6973. 11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
  6974. 10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
  6975. 11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
  6976. 10,11,11,12,12,12,13, 0, 0, 0, 9, 9, 9, 9,10,10,
  6977. 10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,10,10,10,
  6978. 10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
  6979. 10,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0, 0, 9,
  6980. 9,10,10,11,11,12,12,13,13,13,14, 0, 0, 0, 0, 0,
  6981. 10,10,10,11,11,11,12,12,13,13,13,14, 0, 0, 0, 0,
  6982. 0, 0, 0,10,10,11,11,12,12,13,13,14,14, 0, 0, 0,
  6983. 0, 0, 0, 0,11,11,12,12,13,13,13,13,14,14, 0, 0,
  6984. 0, 0, 0, 0, 0,11,11,12,12,12,13,13,14,15,14, 0,
  6985. 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,14,14,15,
  6986. 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,14,13,14,
  6987. 14,
  6988. };
  6989. static float _vq_quantthresh__16c0_s_p6_0[] = {
  6990. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  6991. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  6992. };
  6993. static long _vq_quantmap__16c0_s_p6_0[] = {
  6994. 15, 13, 11, 9, 7, 5, 3, 1,
  6995. 0, 2, 4, 6, 8, 10, 12, 14,
  6996. 16,
  6997. };
  6998. static encode_aux_threshmatch _vq_auxt__16c0_s_p6_0 = {
  6999. _vq_quantthresh__16c0_s_p6_0,
  7000. _vq_quantmap__16c0_s_p6_0,
  7001. 17,
  7002. 17
  7003. };
  7004. static static_codebook _16c0_s_p6_0 = {
  7005. 2, 289,
  7006. _vq_lengthlist__16c0_s_p6_0,
  7007. 1, -529530880, 1611661312, 5, 0,
  7008. _vq_quantlist__16c0_s_p6_0,
  7009. NULL,
  7010. &_vq_auxt__16c0_s_p6_0,
  7011. NULL,
  7012. 0
  7013. };
  7014. static long _vq_quantlist__16c0_s_p7_0[] = {
  7015. 1,
  7016. 0,
  7017. 2,
  7018. };
  7019. static long _vq_lengthlist__16c0_s_p7_0[] = {
  7020. 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,11,10,10,11,
  7021. 11,10, 4, 7, 7,10,10,10,11,10,10, 6,10,10,11,11,
  7022. 11,11,11,10, 6, 9, 9,11,12,12,11, 9, 9, 6, 9,10,
  7023. 11,12,12,11, 9,10, 7,11,11,11,11,11,12,13,12, 6,
  7024. 9,10,11,10,10,12,13,13, 6,10, 9,11,10,10,11,12,
  7025. 13,
  7026. };
  7027. static float _vq_quantthresh__16c0_s_p7_0[] = {
  7028. -5.5, 5.5,
  7029. };
  7030. static long _vq_quantmap__16c0_s_p7_0[] = {
  7031. 1, 0, 2,
  7032. };
  7033. static encode_aux_threshmatch _vq_auxt__16c0_s_p7_0 = {
  7034. _vq_quantthresh__16c0_s_p7_0,
  7035. _vq_quantmap__16c0_s_p7_0,
  7036. 3,
  7037. 3
  7038. };
  7039. static static_codebook _16c0_s_p7_0 = {
  7040. 4, 81,
  7041. _vq_lengthlist__16c0_s_p7_0,
  7042. 1, -529137664, 1618345984, 2, 0,
  7043. _vq_quantlist__16c0_s_p7_0,
  7044. NULL,
  7045. &_vq_auxt__16c0_s_p7_0,
  7046. NULL,
  7047. 0
  7048. };
  7049. static long _vq_quantlist__16c0_s_p7_1[] = {
  7050. 5,
  7051. 4,
  7052. 6,
  7053. 3,
  7054. 7,
  7055. 2,
  7056. 8,
  7057. 1,
  7058. 9,
  7059. 0,
  7060. 10,
  7061. };
  7062. static long _vq_lengthlist__16c0_s_p7_1[] = {
  7063. 1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7,
  7064. 8, 8, 8, 9, 9, 9,10,10,10, 6, 7, 8, 8, 8, 8, 9,
  7065. 8,10,10,10, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, 7,
  7066. 7, 8, 8, 9, 9, 8, 9,10,10,10, 8, 8, 9, 9, 9, 9,
  7067. 9, 9,11,11,11, 8, 8, 9, 9, 9, 9, 9,10,10,11,11,
  7068. 9, 9, 9, 9, 9, 9, 9,10,11,11,11,10,11, 9, 9, 9,
  7069. 9,10, 9,11,11,11,10,11,10,10, 9, 9,10,10,11,11,
  7070. 11,11,11, 9, 9, 9, 9,10,10,
  7071. };
  7072. static float _vq_quantthresh__16c0_s_p7_1[] = {
  7073. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  7074. 3.5, 4.5,
  7075. };
  7076. static long _vq_quantmap__16c0_s_p7_1[] = {
  7077. 9, 7, 5, 3, 1, 0, 2, 4,
  7078. 6, 8, 10,
  7079. };
  7080. static encode_aux_threshmatch _vq_auxt__16c0_s_p7_1 = {
  7081. _vq_quantthresh__16c0_s_p7_1,
  7082. _vq_quantmap__16c0_s_p7_1,
  7083. 11,
  7084. 11
  7085. };
  7086. static static_codebook _16c0_s_p7_1 = {
  7087. 2, 121,
  7088. _vq_lengthlist__16c0_s_p7_1,
  7089. 1, -531365888, 1611661312, 4, 0,
  7090. _vq_quantlist__16c0_s_p7_1,
  7091. NULL,
  7092. &_vq_auxt__16c0_s_p7_1,
  7093. NULL,
  7094. 0
  7095. };
  7096. static long _vq_quantlist__16c0_s_p8_0[] = {
  7097. 6,
  7098. 5,
  7099. 7,
  7100. 4,
  7101. 8,
  7102. 3,
  7103. 9,
  7104. 2,
  7105. 10,
  7106. 1,
  7107. 11,
  7108. 0,
  7109. 12,
  7110. };
  7111. static long _vq_lengthlist__16c0_s_p8_0[] = {
  7112. 1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8,10,10, 6, 5, 6,
  7113. 8, 8, 8, 8, 8, 8, 8, 9,10,10, 7, 6, 6, 8, 8, 8,
  7114. 8, 8, 8, 8, 8,10,10, 0, 8, 8, 8, 8, 9, 8, 9, 9,
  7115. 9,10,10,10, 0, 9, 8, 8, 8, 9, 9, 8, 8, 9, 9,10,
  7116. 10, 0,12,11, 8, 8, 9, 9, 9, 9,10,10,11,10, 0,12,
  7117. 13, 8, 8, 9,10, 9, 9,11,11,11,12, 0, 0, 0, 8, 8,
  7118. 8, 8,10, 9,12,13,12,14, 0, 0, 0, 8, 8, 8, 9,10,
  7119. 10,12,12,13,14, 0, 0, 0,13,13, 9, 9,11,11, 0, 0,
  7120. 14, 0, 0, 0, 0,14,14,10,10,12,11,12,14,14,14, 0,
  7121. 0, 0, 0, 0,11,11,13,13,14,13,14,14, 0, 0, 0, 0,
  7122. 0,12,13,13,12,13,14,14,14,
  7123. };
  7124. static float _vq_quantthresh__16c0_s_p8_0[] = {
  7125. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  7126. 12.5, 17.5, 22.5, 27.5,
  7127. };
  7128. static long _vq_quantmap__16c0_s_p8_0[] = {
  7129. 11, 9, 7, 5, 3, 1, 0, 2,
  7130. 4, 6, 8, 10, 12,
  7131. };
  7132. static encode_aux_threshmatch _vq_auxt__16c0_s_p8_0 = {
  7133. _vq_quantthresh__16c0_s_p8_0,
  7134. _vq_quantmap__16c0_s_p8_0,
  7135. 13,
  7136. 13
  7137. };
  7138. static static_codebook _16c0_s_p8_0 = {
  7139. 2, 169,
  7140. _vq_lengthlist__16c0_s_p8_0,
  7141. 1, -526516224, 1616117760, 4, 0,
  7142. _vq_quantlist__16c0_s_p8_0,
  7143. NULL,
  7144. &_vq_auxt__16c0_s_p8_0,
  7145. NULL,
  7146. 0
  7147. };
  7148. static long _vq_quantlist__16c0_s_p8_1[] = {
  7149. 2,
  7150. 1,
  7151. 3,
  7152. 0,
  7153. 4,
  7154. };
  7155. static long _vq_lengthlist__16c0_s_p8_1[] = {
  7156. 1, 4, 3, 5, 5, 7, 7, 7, 6, 6, 7, 7, 7, 5, 5, 7,
  7157. 7, 7, 6, 6, 7, 7, 7, 6, 6,
  7158. };
  7159. static float _vq_quantthresh__16c0_s_p8_1[] = {
  7160. -1.5, -0.5, 0.5, 1.5,
  7161. };
  7162. static long _vq_quantmap__16c0_s_p8_1[] = {
  7163. 3, 1, 0, 2, 4,
  7164. };
  7165. static encode_aux_threshmatch _vq_auxt__16c0_s_p8_1 = {
  7166. _vq_quantthresh__16c0_s_p8_1,
  7167. _vq_quantmap__16c0_s_p8_1,
  7168. 5,
  7169. 5
  7170. };
  7171. static static_codebook _16c0_s_p8_1 = {
  7172. 2, 25,
  7173. _vq_lengthlist__16c0_s_p8_1,
  7174. 1, -533725184, 1611661312, 3, 0,
  7175. _vq_quantlist__16c0_s_p8_1,
  7176. NULL,
  7177. &_vq_auxt__16c0_s_p8_1,
  7178. NULL,
  7179. 0
  7180. };
  7181. static long _vq_quantlist__16c0_s_p9_0[] = {
  7182. 1,
  7183. 0,
  7184. 2,
  7185. };
  7186. static long _vq_lengthlist__16c0_s_p9_0[] = {
  7187. 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  7188. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  7189. 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  7190. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  7191. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  7192. 7,
  7193. };
  7194. static float _vq_quantthresh__16c0_s_p9_0[] = {
  7195. -157.5, 157.5,
  7196. };
  7197. static long _vq_quantmap__16c0_s_p9_0[] = {
  7198. 1, 0, 2,
  7199. };
  7200. static encode_aux_threshmatch _vq_auxt__16c0_s_p9_0 = {
  7201. _vq_quantthresh__16c0_s_p9_0,
  7202. _vq_quantmap__16c0_s_p9_0,
  7203. 3,
  7204. 3
  7205. };
  7206. static static_codebook _16c0_s_p9_0 = {
  7207. 4, 81,
  7208. _vq_lengthlist__16c0_s_p9_0,
  7209. 1, -518803456, 1628680192, 2, 0,
  7210. _vq_quantlist__16c0_s_p9_0,
  7211. NULL,
  7212. &_vq_auxt__16c0_s_p9_0,
  7213. NULL,
  7214. 0
  7215. };
  7216. static long _vq_quantlist__16c0_s_p9_1[] = {
  7217. 7,
  7218. 6,
  7219. 8,
  7220. 5,
  7221. 9,
  7222. 4,
  7223. 10,
  7224. 3,
  7225. 11,
  7226. 2,
  7227. 12,
  7228. 1,
  7229. 13,
  7230. 0,
  7231. 14,
  7232. };
  7233. static long _vq_lengthlist__16c0_s_p9_1[] = {
  7234. 1, 5, 5, 5, 5, 9,11,11,10,10,10,10,10,10,10, 7,
  7235. 6, 6, 6, 6,10,10,10,10,10,10,10,10,10,10, 7, 6,
  7236. 6, 6, 6,10, 9,10,10,10,10,10,10,10,10,10, 7, 7,
  7237. 8, 9,10,10,10,10,10,10,10,10,10,10,10, 8, 7,10,
  7238. 10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,
  7239. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  7240. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  7241. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  7242. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  7243. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  7244. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  7245. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  7246. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  7247. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  7248. 10,
  7249. };
  7250. static float _vq_quantthresh__16c0_s_p9_1[] = {
  7251. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  7252. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  7253. };
  7254. static long _vq_quantmap__16c0_s_p9_1[] = {
  7255. 13, 11, 9, 7, 5, 3, 1, 0,
  7256. 2, 4, 6, 8, 10, 12, 14,
  7257. };
  7258. static encode_aux_threshmatch _vq_auxt__16c0_s_p9_1 = {
  7259. _vq_quantthresh__16c0_s_p9_1,
  7260. _vq_quantmap__16c0_s_p9_1,
  7261. 15,
  7262. 15
  7263. };
  7264. static static_codebook _16c0_s_p9_1 = {
  7265. 2, 225,
  7266. _vq_lengthlist__16c0_s_p9_1,
  7267. 1, -520986624, 1620377600, 4, 0,
  7268. _vq_quantlist__16c0_s_p9_1,
  7269. NULL,
  7270. &_vq_auxt__16c0_s_p9_1,
  7271. NULL,
  7272. 0
  7273. };
  7274. static long _vq_quantlist__16c0_s_p9_2[] = {
  7275. 10,
  7276. 9,
  7277. 11,
  7278. 8,
  7279. 12,
  7280. 7,
  7281. 13,
  7282. 6,
  7283. 14,
  7284. 5,
  7285. 15,
  7286. 4,
  7287. 16,
  7288. 3,
  7289. 17,
  7290. 2,
  7291. 18,
  7292. 1,
  7293. 19,
  7294. 0,
  7295. 20,
  7296. };
  7297. static long _vq_lengthlist__16c0_s_p9_2[] = {
  7298. 1, 5, 5, 7, 8, 8, 7, 9, 9, 9,12,12,11,12,12,10,
  7299. 10,11,12,12,12,11,12,12, 8, 9, 8, 7, 9,10,10,11,
  7300. 11,10,11,12,10,12,10,12,12,12,11,12,11, 9, 8, 8,
  7301. 9,10, 9, 8, 9,10,12,12,11,11,12,11,10,11,12,11,
  7302. 12,12, 8, 9, 9, 9,10,11,12,11,12,11,11,11,11,12,
  7303. 12,11,11,12,12,11,11, 9, 9, 8, 9, 9,11, 9, 9,10,
  7304. 9,11,11,11,11,12,11,11,10,12,12,12, 9,12,11,10,
  7305. 11,11,11,11,12,12,12,11,11,11,12,10,12,12,12,10,
  7306. 10, 9,10, 9,10,10, 9, 9, 9,10,10,12,10,11,11, 9,
  7307. 11,11,10,11,11,11,10,10,10, 9, 9,10,10, 9, 9,10,
  7308. 11,11,10,11,10,11,10,11,11,10,11,11,11,10, 9,10,
  7309. 10, 9,10, 9, 9,11, 9, 9,11,10,10,11,11,10,10,11,
  7310. 10,11, 8, 9,11,11,10, 9,10,11,11,10,11,11,10,10,
  7311. 10,11,10, 9,10,10,11, 9,10,10, 9,11,10,10,10,10,
  7312. 11,10,11,11, 9,11,10,11,10,10,11,11,10,10,10, 9,
  7313. 10,10,11,11,11, 9,10,10,10,10,10,11,10,10,10, 9,
  7314. 10,10,11,10,10,10,10,10, 9,10,11,10,10,10,10,11,
  7315. 11,11,10,10,10,10,10,11,10,11,10,11,10,10,10, 9,
  7316. 11,11,10,10,10,11,11,10,10,10,10,10,10,10,10,11,
  7317. 11, 9,10,10,10,11,10,11,10,10,10,11, 9,10,11,10,
  7318. 11,10,10, 9,10,10,10,11,10,11,10,10,10,10,10,11,
  7319. 11,10,11,11,10,10,11,11,10, 9, 9,10,10,10,10,10,
  7320. 9,11, 9,10,10,10,11,11,10,10,10,10,11,11,11,10,
  7321. 9, 9,10,10,11,10,10,10,10,10,11,11,11,10,10,10,
  7322. 11,11,11, 9,10,10,10,10, 9,10, 9,10,11,10,11,10,
  7323. 10,11,11,10,11,11,11,11,11,10,11,10,10,10, 9,11,
  7324. 11,10,11,11,11,11,11,11,11,11,11,10,11,10,10,10,
  7325. 10,11,10,10,11, 9,10,10,10,
  7326. };
  7327. static float _vq_quantthresh__16c0_s_p9_2[] = {
  7328. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  7329. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  7330. 6.5, 7.5, 8.5, 9.5,
  7331. };
  7332. static long _vq_quantmap__16c0_s_p9_2[] = {
  7333. 19, 17, 15, 13, 11, 9, 7, 5,
  7334. 3, 1, 0, 2, 4, 6, 8, 10,
  7335. 12, 14, 16, 18, 20,
  7336. };
  7337. static encode_aux_threshmatch _vq_auxt__16c0_s_p9_2 = {
  7338. _vq_quantthresh__16c0_s_p9_2,
  7339. _vq_quantmap__16c0_s_p9_2,
  7340. 21,
  7341. 21
  7342. };
  7343. static static_codebook _16c0_s_p9_2 = {
  7344. 2, 441,
  7345. _vq_lengthlist__16c0_s_p9_2,
  7346. 1, -529268736, 1611661312, 5, 0,
  7347. _vq_quantlist__16c0_s_p9_2,
  7348. NULL,
  7349. &_vq_auxt__16c0_s_p9_2,
  7350. NULL,
  7351. 0
  7352. };
  7353. static long _huff_lengthlist__16c0_s_single[] = {
  7354. 3, 4,19, 7, 9, 7, 8,11, 9,12, 4, 1,19, 6, 7, 7,
  7355. 8,10,11,13,18,18,18,18,18,18,18,18,18,18, 8, 6,
  7356. 18, 8, 9, 9,11,12,14,18, 9, 6,18, 9, 7, 8, 9,11,
  7357. 12,18, 7, 6,18, 8, 7, 7, 7, 9,11,17, 8, 8,18, 9,
  7358. 7, 6, 6, 8,11,17,10,10,18,12, 9, 8, 7, 9,12,18,
  7359. 13,15,18,15,13,11,10,11,15,18,14,18,18,18,18,18,
  7360. 16,16,18,18,
  7361. };
  7362. static static_codebook _huff_book__16c0_s_single = {
  7363. 2, 100,
  7364. _huff_lengthlist__16c0_s_single,
  7365. 0, 0, 0, 0, 0,
  7366. NULL,
  7367. NULL,
  7368. NULL,
  7369. NULL,
  7370. 0
  7371. };
  7372. static long _huff_lengthlist__16c1_s_long[] = {
  7373. 2, 5,20, 7,10, 7, 8,10,11,11, 4, 2,20, 5, 8, 6,
  7374. 7, 9,10,10,20,20,20,20,19,19,19,19,19,19, 7, 5,
  7375. 19, 6,10, 7, 9,11,13,17,11, 8,19,10, 7, 7, 8,10,
  7376. 11,15, 7, 5,19, 7, 7, 5, 6, 9,11,16, 7, 6,19, 8,
  7377. 7, 6, 6, 7, 9,13, 9, 9,19,11, 9, 8, 6, 7, 8,13,
  7378. 12,14,19,16,13,10, 9, 8, 9,13,14,17,19,18,18,17,
  7379. 12,11,11,13,
  7380. };
  7381. static static_codebook _huff_book__16c1_s_long = {
  7382. 2, 100,
  7383. _huff_lengthlist__16c1_s_long,
  7384. 0, 0, 0, 0, 0,
  7385. NULL,
  7386. NULL,
  7387. NULL,
  7388. NULL,
  7389. 0
  7390. };
  7391. static long _vq_quantlist__16c1_s_p1_0[] = {
  7392. 1,
  7393. 0,
  7394. 2,
  7395. };
  7396. static long _vq_lengthlist__16c1_s_p1_0[] = {
  7397. 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
  7398. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7399. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7400. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7401. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7402. 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
  7403. 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7404. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7405. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7406. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7407. 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
  7408. 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7409. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7410. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7411. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7412. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7413. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7414. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7415. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7416. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7417. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7418. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7419. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7420. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7421. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7422. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7423. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7424. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7425. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7426. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7427. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7428. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7429. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7430. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7431. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7432. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7433. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7434. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7435. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7436. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7437. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7438. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7439. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7440. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7441. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7442. 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
  7443. 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  7444. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7445. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7446. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7447. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
  7448. 0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
  7449. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7450. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7451. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7452. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  7453. 0, 0, 0, 0, 8,11, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
  7454. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7455. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7456. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7457. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7458. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7459. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7460. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7461. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7462. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7463. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7464. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7465. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7466. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7467. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7468. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7469. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7470. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7471. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7472. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7473. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7474. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7475. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7476. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7477. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7478. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7479. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7480. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7481. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7482. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7483. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7484. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7485. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7486. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7487. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7488. 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  7489. 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7490. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7491. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7492. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7493. 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
  7494. 0, 0, 0, 0, 0, 8, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
  7495. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7496. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7497. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7498. 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
  7499. 0, 0, 0, 0, 0, 0, 9,11, 9, 0, 0, 0, 0, 0, 0, 0,
  7500. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7501. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7502. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7503. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7504. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7505. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7506. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7507. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7508. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7509. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7510. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7511. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7512. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7513. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7514. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7515. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7516. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7517. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7518. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7519. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7520. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7521. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7522. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7523. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7524. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7525. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7526. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7527. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7528. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7529. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7530. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7531. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7532. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7533. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7534. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7535. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7536. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7537. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7538. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7539. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7540. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7541. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7542. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7543. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7544. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7545. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7546. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7547. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7548. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7549. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7550. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7551. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7552. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7553. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7554. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7555. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7556. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7557. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7558. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7559. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7560. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7561. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7562. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7563. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7564. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7565. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7566. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7567. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7568. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7569. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7570. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7571. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7572. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7573. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7574. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7575. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7576. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7577. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7578. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7579. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7580. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7581. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7582. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7583. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7584. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7585. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7586. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7587. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7588. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7589. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7590. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7591. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7592. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7593. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7594. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7595. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7596. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7597. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7598. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7599. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7600. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7601. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7602. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7603. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7604. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7605. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7606. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7607. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7608. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7609. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7610. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7611. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7612. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7613. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7614. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7615. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7616. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7617. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7618. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7619. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7620. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7621. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7622. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7623. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7624. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7625. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7626. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7627. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7628. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7629. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7630. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7631. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7632. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7633. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7634. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7635. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7636. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7637. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7638. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7639. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7640. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7641. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7642. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7643. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7644. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7645. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7646. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7647. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7648. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7649. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7650. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7651. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7652. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7653. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7654. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7655. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7656. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7657. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7658. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7659. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7660. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7661. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7662. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7663. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7664. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7665. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7666. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7667. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7668. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7669. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7670. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7671. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7672. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7673. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7674. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7675. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7676. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7677. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7678. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7679. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7680. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7681. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7682. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7683. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7684. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7685. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7686. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7687. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7688. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7689. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7690. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7691. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7692. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7693. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7694. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7695. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7696. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7697. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7698. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7699. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7700. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7701. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7702. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7703. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7704. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7705. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7706. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7707. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7708. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7709. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7710. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7711. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7712. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7713. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7714. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7715. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7716. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7717. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7718. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7719. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7720. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7721. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7722. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7723. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7724. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7725. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7726. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7727. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7728. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7729. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7730. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7731. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7732. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7733. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7734. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7735. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7736. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7737. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7738. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7739. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7740. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7741. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7742. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7743. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7744. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7745. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7746. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7747. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7748. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7749. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7750. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7751. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7752. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7753. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7754. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7755. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7756. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7757. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7758. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7759. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7760. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7761. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7762. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7763. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7764. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7765. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7766. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7767. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7768. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7769. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7770. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7771. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7772. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7773. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7774. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7775. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7776. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7777. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7778. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7779. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7780. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7781. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7782. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7783. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7784. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7785. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7786. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7787. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7788. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7789. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7790. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7791. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7792. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7793. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7794. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7795. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7796. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7797. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7798. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7799. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7800. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7801. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7802. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7803. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7804. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7805. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7806. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7807. 0,
  7808. };
  7809. static float _vq_quantthresh__16c1_s_p1_0[] = {
  7810. -0.5, 0.5,
  7811. };
  7812. static long _vq_quantmap__16c1_s_p1_0[] = {
  7813. 1, 0, 2,
  7814. };
  7815. static encode_aux_threshmatch _vq_auxt__16c1_s_p1_0 = {
  7816. _vq_quantthresh__16c1_s_p1_0,
  7817. _vq_quantmap__16c1_s_p1_0,
  7818. 3,
  7819. 3
  7820. };
  7821. static static_codebook _16c1_s_p1_0 = {
  7822. 8, 6561,
  7823. _vq_lengthlist__16c1_s_p1_0,
  7824. 1, -535822336, 1611661312, 2, 0,
  7825. _vq_quantlist__16c1_s_p1_0,
  7826. NULL,
  7827. &_vq_auxt__16c1_s_p1_0,
  7828. NULL,
  7829. 0
  7830. };
  7831. static long _vq_quantlist__16c1_s_p2_0[] = {
  7832. 2,
  7833. 1,
  7834. 3,
  7835. 0,
  7836. 4,
  7837. };
  7838. static long _vq_lengthlist__16c1_s_p2_0[] = {
  7839. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7840. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7841. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7842. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7843. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7844. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7845. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7846. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7847. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7848. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7849. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7850. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7851. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7852. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7853. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7854. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7855. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7856. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7857. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7858. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7859. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7860. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7861. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7862. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7863. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7864. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7865. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7866. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7867. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7868. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7869. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7870. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7871. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7872. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7873. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7874. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7875. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7876. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7877. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7878. 0,
  7879. };
  7880. static float _vq_quantthresh__16c1_s_p2_0[] = {
  7881. -1.5, -0.5, 0.5, 1.5,
  7882. };
  7883. static long _vq_quantmap__16c1_s_p2_0[] = {
  7884. 3, 1, 0, 2, 4,
  7885. };
  7886. static encode_aux_threshmatch _vq_auxt__16c1_s_p2_0 = {
  7887. _vq_quantthresh__16c1_s_p2_0,
  7888. _vq_quantmap__16c1_s_p2_0,
  7889. 5,
  7890. 5
  7891. };
  7892. static static_codebook _16c1_s_p2_0 = {
  7893. 4, 625,
  7894. _vq_lengthlist__16c1_s_p2_0,
  7895. 1, -533725184, 1611661312, 3, 0,
  7896. _vq_quantlist__16c1_s_p2_0,
  7897. NULL,
  7898. &_vq_auxt__16c1_s_p2_0,
  7899. NULL,
  7900. 0
  7901. };
  7902. static long _vq_quantlist__16c1_s_p3_0[] = {
  7903. 2,
  7904. 1,
  7905. 3,
  7906. 0,
  7907. 4,
  7908. };
  7909. static long _vq_lengthlist__16c1_s_p3_0[] = {
  7910. 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7911. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
  7912. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7913. 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7914. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 9, 9,
  7915. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7916. 0, 0, 0, 0, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
  7917. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7918. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7919. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7920. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7921. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7922. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7923. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7924. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7925. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7926. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7927. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7928. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7929. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7930. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7931. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7932. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7933. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7934. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7935. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7936. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7937. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7938. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7939. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7940. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7941. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7942. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7943. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7944. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7945. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7946. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7947. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7948. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7949. 0,
  7950. };
  7951. static float _vq_quantthresh__16c1_s_p3_0[] = {
  7952. -1.5, -0.5, 0.5, 1.5,
  7953. };
  7954. static long _vq_quantmap__16c1_s_p3_0[] = {
  7955. 3, 1, 0, 2, 4,
  7956. };
  7957. static encode_aux_threshmatch _vq_auxt__16c1_s_p3_0 = {
  7958. _vq_quantthresh__16c1_s_p3_0,
  7959. _vq_quantmap__16c1_s_p3_0,
  7960. 5,
  7961. 5
  7962. };
  7963. static static_codebook _16c1_s_p3_0 = {
  7964. 4, 625,
  7965. _vq_lengthlist__16c1_s_p3_0,
  7966. 1, -533725184, 1611661312, 3, 0,
  7967. _vq_quantlist__16c1_s_p3_0,
  7968. NULL,
  7969. &_vq_auxt__16c1_s_p3_0,
  7970. NULL,
  7971. 0
  7972. };
  7973. static long _vq_quantlist__16c1_s_p4_0[] = {
  7974. 4,
  7975. 3,
  7976. 5,
  7977. 2,
  7978. 6,
  7979. 1,
  7980. 7,
  7981. 0,
  7982. 8,
  7983. };
  7984. static long _vq_lengthlist__16c1_s_p4_0[] = {
  7985. 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
  7986. 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
  7987. 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  7988. 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0,
  7989. 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  7990. 0,
  7991. };
  7992. static float _vq_quantthresh__16c1_s_p4_0[] = {
  7993. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  7994. };
  7995. static long _vq_quantmap__16c1_s_p4_0[] = {
  7996. 7, 5, 3, 1, 0, 2, 4, 6,
  7997. 8,
  7998. };
  7999. static encode_aux_threshmatch _vq_auxt__16c1_s_p4_0 = {
  8000. _vq_quantthresh__16c1_s_p4_0,
  8001. _vq_quantmap__16c1_s_p4_0,
  8002. 9,
  8003. 9
  8004. };
  8005. static static_codebook _16c1_s_p4_0 = {
  8006. 2, 81,
  8007. _vq_lengthlist__16c1_s_p4_0,
  8008. 1, -531628032, 1611661312, 4, 0,
  8009. _vq_quantlist__16c1_s_p4_0,
  8010. NULL,
  8011. &_vq_auxt__16c1_s_p4_0,
  8012. NULL,
  8013. 0
  8014. };
  8015. static long _vq_quantlist__16c1_s_p5_0[] = {
  8016. 4,
  8017. 3,
  8018. 5,
  8019. 2,
  8020. 6,
  8021. 1,
  8022. 7,
  8023. 0,
  8024. 8,
  8025. };
  8026. static long _vq_lengthlist__16c1_s_p5_0[] = {
  8027. 1, 3, 3, 5, 5, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
  8028. 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 8, 8,
  8029. 8, 8, 9, 9, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
  8030. 9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
  8031. 0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
  8032. 10,
  8033. };
  8034. static float _vq_quantthresh__16c1_s_p5_0[] = {
  8035. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  8036. };
  8037. static long _vq_quantmap__16c1_s_p5_0[] = {
  8038. 7, 5, 3, 1, 0, 2, 4, 6,
  8039. 8,
  8040. };
  8041. static encode_aux_threshmatch _vq_auxt__16c1_s_p5_0 = {
  8042. _vq_quantthresh__16c1_s_p5_0,
  8043. _vq_quantmap__16c1_s_p5_0,
  8044. 9,
  8045. 9
  8046. };
  8047. static static_codebook _16c1_s_p5_0 = {
  8048. 2, 81,
  8049. _vq_lengthlist__16c1_s_p5_0,
  8050. 1, -531628032, 1611661312, 4, 0,
  8051. _vq_quantlist__16c1_s_p5_0,
  8052. NULL,
  8053. &_vq_auxt__16c1_s_p5_0,
  8054. NULL,
  8055. 0
  8056. };
  8057. static long _vq_quantlist__16c1_s_p6_0[] = {
  8058. 8,
  8059. 7,
  8060. 9,
  8061. 6,
  8062. 10,
  8063. 5,
  8064. 11,
  8065. 4,
  8066. 12,
  8067. 3,
  8068. 13,
  8069. 2,
  8070. 14,
  8071. 1,
  8072. 15,
  8073. 0,
  8074. 16,
  8075. };
  8076. static long _vq_lengthlist__16c1_s_p6_0[] = {
  8077. 1, 3, 3, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,12,
  8078. 12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
  8079. 12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
  8080. 11,12,12, 0, 0, 0, 8, 8, 8, 9,10, 9,10,10,10,10,
  8081. 11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,11,
  8082. 11,11,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
  8083. 11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
  8084. 10,11,11,12,12,13,13, 0, 0, 0, 9, 9, 9, 9,10,10,
  8085. 10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
  8086. 10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
  8087. 10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0, 9,
  8088. 9,10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0,
  8089. 10,10,11,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0,
  8090. 0, 0, 0,10,10,11,11,12,12,13,13,13,13, 0, 0, 0,
  8091. 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0, 0,
  8092. 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0,
  8093. 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
  8094. 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
  8095. 14,
  8096. };
  8097. static float _vq_quantthresh__16c1_s_p6_0[] = {
  8098. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  8099. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  8100. };
  8101. static long _vq_quantmap__16c1_s_p6_0[] = {
  8102. 15, 13, 11, 9, 7, 5, 3, 1,
  8103. 0, 2, 4, 6, 8, 10, 12, 14,
  8104. 16,
  8105. };
  8106. static encode_aux_threshmatch _vq_auxt__16c1_s_p6_0 = {
  8107. _vq_quantthresh__16c1_s_p6_0,
  8108. _vq_quantmap__16c1_s_p6_0,
  8109. 17,
  8110. 17
  8111. };
  8112. static static_codebook _16c1_s_p6_0 = {
  8113. 2, 289,
  8114. _vq_lengthlist__16c1_s_p6_0,
  8115. 1, -529530880, 1611661312, 5, 0,
  8116. _vq_quantlist__16c1_s_p6_0,
  8117. NULL,
  8118. &_vq_auxt__16c1_s_p6_0,
  8119. NULL,
  8120. 0
  8121. };
  8122. static long _vq_quantlist__16c1_s_p7_0[] = {
  8123. 1,
  8124. 0,
  8125. 2,
  8126. };
  8127. static long _vq_lengthlist__16c1_s_p7_0[] = {
  8128. 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9,10,10,
  8129. 10, 9, 4, 7, 7,10,10,10,11,10,10, 6,10,10,11,11,
  8130. 11,11,10,10, 6,10, 9,11,11,11,11,10,10, 6,10,10,
  8131. 11,11,11,11,10,10, 7,11,11,11,11,11,12,12,11, 6,
  8132. 10,10,11,10,10,11,11,11, 6,10,10,10,11,10,11,11,
  8133. 11,
  8134. };
  8135. static float _vq_quantthresh__16c1_s_p7_0[] = {
  8136. -5.5, 5.5,
  8137. };
  8138. static long _vq_quantmap__16c1_s_p7_0[] = {
  8139. 1, 0, 2,
  8140. };
  8141. static encode_aux_threshmatch _vq_auxt__16c1_s_p7_0 = {
  8142. _vq_quantthresh__16c1_s_p7_0,
  8143. _vq_quantmap__16c1_s_p7_0,
  8144. 3,
  8145. 3
  8146. };
  8147. static static_codebook _16c1_s_p7_0 = {
  8148. 4, 81,
  8149. _vq_lengthlist__16c1_s_p7_0,
  8150. 1, -529137664, 1618345984, 2, 0,
  8151. _vq_quantlist__16c1_s_p7_0,
  8152. NULL,
  8153. &_vq_auxt__16c1_s_p7_0,
  8154. NULL,
  8155. 0
  8156. };
  8157. static long _vq_quantlist__16c1_s_p7_1[] = {
  8158. 5,
  8159. 4,
  8160. 6,
  8161. 3,
  8162. 7,
  8163. 2,
  8164. 8,
  8165. 1,
  8166. 9,
  8167. 0,
  8168. 10,
  8169. };
  8170. static long _vq_lengthlist__16c1_s_p7_1[] = {
  8171. 2, 3, 3, 5, 6, 7, 7, 7, 7, 8, 8,10,10,10, 6, 6,
  8172. 7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
  8173. 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
  8174. 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
  8175. 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
  8176. 8, 8, 8, 8, 8, 8, 9, 9,10,10,10,10,10, 8, 8, 8,
  8177. 8, 9, 9,10,10,10,10,10, 9, 9, 8, 8, 9, 9,10,10,
  8178. 10,10,10, 8, 8, 8, 8, 9, 9,
  8179. };
  8180. static float _vq_quantthresh__16c1_s_p7_1[] = {
  8181. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  8182. 3.5, 4.5,
  8183. };
  8184. static long _vq_quantmap__16c1_s_p7_1[] = {
  8185. 9, 7, 5, 3, 1, 0, 2, 4,
  8186. 6, 8, 10,
  8187. };
  8188. static encode_aux_threshmatch _vq_auxt__16c1_s_p7_1 = {
  8189. _vq_quantthresh__16c1_s_p7_1,
  8190. _vq_quantmap__16c1_s_p7_1,
  8191. 11,
  8192. 11
  8193. };
  8194. static static_codebook _16c1_s_p7_1 = {
  8195. 2, 121,
  8196. _vq_lengthlist__16c1_s_p7_1,
  8197. 1, -531365888, 1611661312, 4, 0,
  8198. _vq_quantlist__16c1_s_p7_1,
  8199. NULL,
  8200. &_vq_auxt__16c1_s_p7_1,
  8201. NULL,
  8202. 0
  8203. };
  8204. static long _vq_quantlist__16c1_s_p8_0[] = {
  8205. 6,
  8206. 5,
  8207. 7,
  8208. 4,
  8209. 8,
  8210. 3,
  8211. 9,
  8212. 2,
  8213. 10,
  8214. 1,
  8215. 11,
  8216. 0,
  8217. 12,
  8218. };
  8219. static long _vq_lengthlist__16c1_s_p8_0[] = {
  8220. 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 5,
  8221. 7, 8, 8, 9, 8, 8, 9, 9,10,11, 6, 5, 5, 8, 8, 9,
  8222. 9, 8, 8, 9,10,10,11, 0, 8, 8, 8, 9, 9, 9, 9, 9,
  8223. 10,10,11,11, 0, 9, 9, 9, 8, 9, 9, 9, 9,10,10,11,
  8224. 11, 0,13,13, 9, 9,10,10,10,10,11,11,12,12, 0,14,
  8225. 13, 9, 9,10,10,10,10,11,11,12,12, 0, 0, 0,10,10,
  8226. 9, 9,11,11,12,12,13,12, 0, 0, 0,10,10, 9, 9,10,
  8227. 10,12,12,13,13, 0, 0, 0,13,14,11,10,11,11,12,12,
  8228. 13,14, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
  8229. 0, 0, 0, 0,12,12,12,12,13,13,14,15, 0, 0, 0, 0,
  8230. 0,12,12,12,12,13,13,14,15,
  8231. };
  8232. static float _vq_quantthresh__16c1_s_p8_0[] = {
  8233. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  8234. 12.5, 17.5, 22.5, 27.5,
  8235. };
  8236. static long _vq_quantmap__16c1_s_p8_0[] = {
  8237. 11, 9, 7, 5, 3, 1, 0, 2,
  8238. 4, 6, 8, 10, 12,
  8239. };
  8240. static encode_aux_threshmatch _vq_auxt__16c1_s_p8_0 = {
  8241. _vq_quantthresh__16c1_s_p8_0,
  8242. _vq_quantmap__16c1_s_p8_0,
  8243. 13,
  8244. 13
  8245. };
  8246. static static_codebook _16c1_s_p8_0 = {
  8247. 2, 169,
  8248. _vq_lengthlist__16c1_s_p8_0,
  8249. 1, -526516224, 1616117760, 4, 0,
  8250. _vq_quantlist__16c1_s_p8_0,
  8251. NULL,
  8252. &_vq_auxt__16c1_s_p8_0,
  8253. NULL,
  8254. 0
  8255. };
  8256. static long _vq_quantlist__16c1_s_p8_1[] = {
  8257. 2,
  8258. 1,
  8259. 3,
  8260. 0,
  8261. 4,
  8262. };
  8263. static long _vq_lengthlist__16c1_s_p8_1[] = {
  8264. 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
  8265. 6, 6, 5, 5, 6, 6, 6, 5, 5,
  8266. };
  8267. static float _vq_quantthresh__16c1_s_p8_1[] = {
  8268. -1.5, -0.5, 0.5, 1.5,
  8269. };
  8270. static long _vq_quantmap__16c1_s_p8_1[] = {
  8271. 3, 1, 0, 2, 4,
  8272. };
  8273. static encode_aux_threshmatch _vq_auxt__16c1_s_p8_1 = {
  8274. _vq_quantthresh__16c1_s_p8_1,
  8275. _vq_quantmap__16c1_s_p8_1,
  8276. 5,
  8277. 5
  8278. };
  8279. static static_codebook _16c1_s_p8_1 = {
  8280. 2, 25,
  8281. _vq_lengthlist__16c1_s_p8_1,
  8282. 1, -533725184, 1611661312, 3, 0,
  8283. _vq_quantlist__16c1_s_p8_1,
  8284. NULL,
  8285. &_vq_auxt__16c1_s_p8_1,
  8286. NULL,
  8287. 0
  8288. };
  8289. static long _vq_quantlist__16c1_s_p9_0[] = {
  8290. 6,
  8291. 5,
  8292. 7,
  8293. 4,
  8294. 8,
  8295. 3,
  8296. 9,
  8297. 2,
  8298. 10,
  8299. 1,
  8300. 11,
  8301. 0,
  8302. 12,
  8303. };
  8304. static long _vq_lengthlist__16c1_s_p9_0[] = {
  8305. 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  8306. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  8307. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  8308. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  8309. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  8310. 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8311. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8312. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8313. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8314. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8315. 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8316. };
  8317. static float _vq_quantthresh__16c1_s_p9_0[] = {
  8318. -1732.5, -1417.5, -1102.5, -787.5, -472.5, -157.5, 157.5, 472.5,
  8319. 787.5, 1102.5, 1417.5, 1732.5,
  8320. };
  8321. static long _vq_quantmap__16c1_s_p9_0[] = {
  8322. 11, 9, 7, 5, 3, 1, 0, 2,
  8323. 4, 6, 8, 10, 12,
  8324. };
  8325. static encode_aux_threshmatch _vq_auxt__16c1_s_p9_0 = {
  8326. _vq_quantthresh__16c1_s_p9_0,
  8327. _vq_quantmap__16c1_s_p9_0,
  8328. 13,
  8329. 13
  8330. };
  8331. static static_codebook _16c1_s_p9_0 = {
  8332. 2, 169,
  8333. _vq_lengthlist__16c1_s_p9_0,
  8334. 1, -513964032, 1628680192, 4, 0,
  8335. _vq_quantlist__16c1_s_p9_0,
  8336. NULL,
  8337. &_vq_auxt__16c1_s_p9_0,
  8338. NULL,
  8339. 0
  8340. };
  8341. static long _vq_quantlist__16c1_s_p9_1[] = {
  8342. 7,
  8343. 6,
  8344. 8,
  8345. 5,
  8346. 9,
  8347. 4,
  8348. 10,
  8349. 3,
  8350. 11,
  8351. 2,
  8352. 12,
  8353. 1,
  8354. 13,
  8355. 0,
  8356. 14,
  8357. };
  8358. static long _vq_lengthlist__16c1_s_p9_1[] = {
  8359. 1, 4, 4, 4, 4, 8, 8,12,13,14,14,14,14,14,14, 6,
  8360. 6, 6, 6, 6,10, 9,14,14,14,14,14,14,14,14, 7, 6,
  8361. 5, 6, 6,10, 9,12,13,13,13,13,13,13,13,13, 7, 7,
  8362. 9, 9,11,11,12,13,13,13,13,13,13,13,13, 7, 7, 8,
  8363. 8,11,12,13,13,13,13,13,13,13,13,13,12,12,10,10,
  8364. 13,12,13,13,13,13,13,13,13,13,13,12,12,10,10,13,
  8365. 13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,12,
  8366. 13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,
  8367. 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
  8368. 13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,
  8369. 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
  8370. 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
  8371. 13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,
  8372. 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
  8373. 13,
  8374. };
  8375. static float _vq_quantthresh__16c1_s_p9_1[] = {
  8376. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  8377. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  8378. };
  8379. static long _vq_quantmap__16c1_s_p9_1[] = {
  8380. 13, 11, 9, 7, 5, 3, 1, 0,
  8381. 2, 4, 6, 8, 10, 12, 14,
  8382. };
  8383. static encode_aux_threshmatch _vq_auxt__16c1_s_p9_1 = {
  8384. _vq_quantthresh__16c1_s_p9_1,
  8385. _vq_quantmap__16c1_s_p9_1,
  8386. 15,
  8387. 15
  8388. };
  8389. static static_codebook _16c1_s_p9_1 = {
  8390. 2, 225,
  8391. _vq_lengthlist__16c1_s_p9_1,
  8392. 1, -520986624, 1620377600, 4, 0,
  8393. _vq_quantlist__16c1_s_p9_1,
  8394. NULL,
  8395. &_vq_auxt__16c1_s_p9_1,
  8396. NULL,
  8397. 0
  8398. };
  8399. static long _vq_quantlist__16c1_s_p9_2[] = {
  8400. 10,
  8401. 9,
  8402. 11,
  8403. 8,
  8404. 12,
  8405. 7,
  8406. 13,
  8407. 6,
  8408. 14,
  8409. 5,
  8410. 15,
  8411. 4,
  8412. 16,
  8413. 3,
  8414. 17,
  8415. 2,
  8416. 18,
  8417. 1,
  8418. 19,
  8419. 0,
  8420. 20,
  8421. };
  8422. static long _vq_lengthlist__16c1_s_p9_2[] = {
  8423. 1, 4, 4, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9,10,
  8424. 10,10, 9,10,10,11,12,12, 8, 8, 8, 8, 9, 9, 9, 9,
  8425. 10,10,10,10,10,11,11,10,12,11,11,13,11, 7, 7, 8,
  8426. 8, 8, 8, 9, 9, 9,10,10,10,10, 9,10,10,11,11,12,
  8427. 11,11, 8, 8, 8, 8, 9, 9,10,10,10,10,11,11,11,11,
  8428. 11,11,11,12,11,12,12, 8, 8, 9, 9, 9, 9, 9,10,10,
  8429. 10,10,10,10,11,11,11,11,11,11,12,11, 9, 9, 9, 9,
  8430. 10,10,10,10,11,10,11,11,11,11,11,11,12,12,12,12,
  8431. 11, 9, 9, 9, 9,10,10,10,10,11,11,11,11,11,11,11,
  8432. 11,11,12,12,12,13, 9,10,10, 9,11,10,10,10,10,11,
  8433. 11,11,11,11,10,11,12,11,12,12,11,12,11,10, 9,10,
  8434. 10,11,10,11,11,11,11,11,11,11,11,11,12,12,11,12,
  8435. 12,12,10,10,10,11,10,11,11,11,11,11,11,11,11,11,
  8436. 11,11,12,13,12,12,11, 9,10,10,11,11,10,11,11,11,
  8437. 12,11,11,11,11,11,12,12,13,13,12,13,10,10,12,10,
  8438. 11,11,11,11,11,11,11,11,11,12,12,11,13,12,12,12,
  8439. 12,13,12,11,11,11,11,11,11,12,11,12,11,11,11,11,
  8440. 12,12,13,12,11,12,12,11,11,11,11,11,12,11,11,11,
  8441. 11,12,11,11,12,11,12,13,13,12,12,12,12,11,11,11,
  8442. 11,11,12,11,11,12,11,12,11,11,11,11,13,12,12,12,
  8443. 12,13,11,11,11,12,12,11,11,11,12,11,12,12,12,11,
  8444. 12,13,12,11,11,12,12,11,12,11,11,11,12,12,11,12,
  8445. 11,11,11,12,12,12,12,13,12,13,12,12,12,12,11,11,
  8446. 12,11,11,11,11,11,11,12,12,12,13,12,11,13,13,12,
  8447. 12,11,12,10,11,11,11,11,12,11,12,12,11,12,12,13,
  8448. 12,12,13,12,12,12,12,12,11,12,12,12,11,12,11,11,
  8449. 11,12,13,12,13,13,13,13,13,12,13,13,12,12,13,11,
  8450. 11,11,11,11,12,11,11,12,11,
  8451. };
  8452. static float _vq_quantthresh__16c1_s_p9_2[] = {
  8453. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  8454. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  8455. 6.5, 7.5, 8.5, 9.5,
  8456. };
  8457. static long _vq_quantmap__16c1_s_p9_2[] = {
  8458. 19, 17, 15, 13, 11, 9, 7, 5,
  8459. 3, 1, 0, 2, 4, 6, 8, 10,
  8460. 12, 14, 16, 18, 20,
  8461. };
  8462. static encode_aux_threshmatch _vq_auxt__16c1_s_p9_2 = {
  8463. _vq_quantthresh__16c1_s_p9_2,
  8464. _vq_quantmap__16c1_s_p9_2,
  8465. 21,
  8466. 21
  8467. };
  8468. static static_codebook _16c1_s_p9_2 = {
  8469. 2, 441,
  8470. _vq_lengthlist__16c1_s_p9_2,
  8471. 1, -529268736, 1611661312, 5, 0,
  8472. _vq_quantlist__16c1_s_p9_2,
  8473. NULL,
  8474. &_vq_auxt__16c1_s_p9_2,
  8475. NULL,
  8476. 0
  8477. };
  8478. static long _huff_lengthlist__16c1_s_short[] = {
  8479. 5, 6,17, 8,12, 9,10,10,12,13, 5, 2,17, 4, 9, 5,
  8480. 7, 8,11,13,16,16,16,16,16,16,16,16,16,16, 6, 4,
  8481. 16, 5,10, 5, 7,10,14,16,13, 9,16,11, 8, 7, 8, 9,
  8482. 13,16, 7, 4,16, 5, 7, 4, 6, 8,11,13, 8, 6,16, 7,
  8483. 8, 5, 5, 7, 9,13, 9, 8,16, 9, 8, 6, 6, 7, 9,13,
  8484. 11,11,16,10,10, 7, 7, 7, 9,13,13,13,16,13,13, 9,
  8485. 9, 9,10,13,
  8486. };
  8487. static static_codebook _huff_book__16c1_s_short = {
  8488. 2, 100,
  8489. _huff_lengthlist__16c1_s_short,
  8490. 0, 0, 0, 0, 0,
  8491. NULL,
  8492. NULL,
  8493. NULL,
  8494. NULL,
  8495. 0
  8496. };
  8497. static long _huff_lengthlist__16c2_s_long[] = {
  8498. 4, 7, 9, 9, 9, 8, 9,10,15,19, 5, 4, 5, 6, 7, 7,
  8499. 8, 9,14,16, 6, 5, 4, 5, 6, 7, 8,10,12,19, 7, 6,
  8500. 5, 4, 5, 6, 7, 9,11,18, 8, 7, 6, 5, 5, 5, 7, 9,
  8501. 10,17, 8, 7, 7, 5, 5, 5, 6, 7,12,18, 8, 8, 8, 7,
  8502. 7, 5, 5, 7,12,18, 8, 9,10, 9, 9, 7, 6, 7,12,17,
  8503. 14,18,16,16,15,12,11,10,12,18,15,17,18,18,18,15,
  8504. 14,14,16,18,
  8505. };
  8506. static static_codebook _huff_book__16c2_s_long = {
  8507. 2, 100,
  8508. _huff_lengthlist__16c2_s_long,
  8509. 0, 0, 0, 0, 0,
  8510. NULL,
  8511. NULL,
  8512. NULL,
  8513. NULL,
  8514. 0
  8515. };
  8516. static long _vq_quantlist__16c2_s_p1_0[] = {
  8517. 1,
  8518. 0,
  8519. 2,
  8520. };
  8521. static long _vq_lengthlist__16c2_s_p1_0[] = {
  8522. 1, 3, 3, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0,
  8523. 0, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8524. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8525. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8526. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8527. 0,
  8528. };
  8529. static float _vq_quantthresh__16c2_s_p1_0[] = {
  8530. -0.5, 0.5,
  8531. };
  8532. static long _vq_quantmap__16c2_s_p1_0[] = {
  8533. 1, 0, 2,
  8534. };
  8535. static encode_aux_threshmatch _vq_auxt__16c2_s_p1_0 = {
  8536. _vq_quantthresh__16c2_s_p1_0,
  8537. _vq_quantmap__16c2_s_p1_0,
  8538. 3,
  8539. 3
  8540. };
  8541. static static_codebook _16c2_s_p1_0 = {
  8542. 4, 81,
  8543. _vq_lengthlist__16c2_s_p1_0,
  8544. 1, -535822336, 1611661312, 2, 0,
  8545. _vq_quantlist__16c2_s_p1_0,
  8546. NULL,
  8547. &_vq_auxt__16c2_s_p1_0,
  8548. NULL,
  8549. 0
  8550. };
  8551. static long _vq_quantlist__16c2_s_p2_0[] = {
  8552. 2,
  8553. 1,
  8554. 3,
  8555. 0,
  8556. 4,
  8557. };
  8558. static long _vq_lengthlist__16c2_s_p2_0[] = {
  8559. 2, 4, 3, 7, 7, 0, 0, 0, 7, 8, 0, 0, 0, 8, 8, 0,
  8560. 0, 0, 8, 8, 0, 0, 0, 8, 8, 4, 5, 4, 8, 8, 0, 0,
  8561. 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
  8562. 9, 9, 4, 4, 5, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8,
  8563. 8, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 7, 8, 8,10,10,
  8564. 0, 0, 0,12,11, 0, 0, 0,11,11, 0, 0, 0,14,13, 0,
  8565. 0, 0,14,13, 7, 8, 8, 9,10, 0, 0, 0,11,12, 0, 0,
  8566. 0,11,11, 0, 0, 0,14,14, 0, 0, 0,13,14, 0, 0, 0,
  8567. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8568. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8569. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8570. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8571. 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8,11,11, 0, 0, 0,
  8572. 11,11, 0, 0, 0,12,11, 0, 0, 0,12,12, 0, 0, 0,13,
  8573. 13, 8, 8, 8,11,11, 0, 0, 0,11,11, 0, 0, 0,11,12,
  8574. 0, 0, 0,12,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
  8575. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8576. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8577. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8578. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8579. 0, 0, 0, 0, 0, 8, 8, 8,12,11, 0, 0, 0,12,11, 0,
  8580. 0, 0,11,11, 0, 0, 0,13,13, 0, 0, 0,13,12, 8, 8,
  8581. 8,11,12, 0, 0, 0,11,12, 0, 0, 0,11,11, 0, 0, 0,
  8582. 13,13, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8583. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8584. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8585. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8586. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8587. 0, 0, 8, 9, 9,14,13, 0, 0, 0,13,12, 0, 0, 0,13,
  8588. 13, 0, 0, 0,13,12, 0, 0, 0,13,13, 8, 9, 9,13,14,
  8589. 0, 0, 0,12,13, 0, 0, 0,13,13, 0, 0, 0,12,13, 0,
  8590. 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8591. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8592. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8593. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8594. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
  8595. 9, 9,14,13, 0, 0, 0,13,13, 0, 0, 0,13,12, 0, 0,
  8596. 0,13,13, 0, 0, 0,13,12, 8, 9, 9,14,14, 0, 0, 0,
  8597. 13,13, 0, 0, 0,12,13, 0, 0, 0,13,13, 0, 0, 0,12,
  8598. 13,
  8599. };
  8600. static float _vq_quantthresh__16c2_s_p2_0[] = {
  8601. -1.5, -0.5, 0.5, 1.5,
  8602. };
  8603. static long _vq_quantmap__16c2_s_p2_0[] = {
  8604. 3, 1, 0, 2, 4,
  8605. };
  8606. static encode_aux_threshmatch _vq_auxt__16c2_s_p2_0 = {
  8607. _vq_quantthresh__16c2_s_p2_0,
  8608. _vq_quantmap__16c2_s_p2_0,
  8609. 5,
  8610. 5
  8611. };
  8612. static static_codebook _16c2_s_p2_0 = {
  8613. 4, 625,
  8614. _vq_lengthlist__16c2_s_p2_0,
  8615. 1, -533725184, 1611661312, 3, 0,
  8616. _vq_quantlist__16c2_s_p2_0,
  8617. NULL,
  8618. &_vq_auxt__16c2_s_p2_0,
  8619. NULL,
  8620. 0
  8621. };
  8622. static long _vq_quantlist__16c2_s_p3_0[] = {
  8623. 4,
  8624. 3,
  8625. 5,
  8626. 2,
  8627. 6,
  8628. 1,
  8629. 7,
  8630. 0,
  8631. 8,
  8632. };
  8633. static long _vq_lengthlist__16c2_s_p3_0[] = {
  8634. 1, 3, 3, 6, 6, 7, 7, 8, 8, 0, 0, 0, 6, 6, 7, 7,
  8635. 9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, 7, 7,
  8636. 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
  8637. 7, 7, 9, 9,10,10, 0, 0, 0, 7, 7, 9, 9,10,10, 0,
  8638. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8639. 0,
  8640. };
  8641. static float _vq_quantthresh__16c2_s_p3_0[] = {
  8642. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  8643. };
  8644. static long _vq_quantmap__16c2_s_p3_0[] = {
  8645. 7, 5, 3, 1, 0, 2, 4, 6,
  8646. 8,
  8647. };
  8648. static encode_aux_threshmatch _vq_auxt__16c2_s_p3_0 = {
  8649. _vq_quantthresh__16c2_s_p3_0,
  8650. _vq_quantmap__16c2_s_p3_0,
  8651. 9,
  8652. 9
  8653. };
  8654. static static_codebook _16c2_s_p3_0 = {
  8655. 2, 81,
  8656. _vq_lengthlist__16c2_s_p3_0,
  8657. 1, -531628032, 1611661312, 4, 0,
  8658. _vq_quantlist__16c2_s_p3_0,
  8659. NULL,
  8660. &_vq_auxt__16c2_s_p3_0,
  8661. NULL,
  8662. 0
  8663. };
  8664. static long _vq_quantlist__16c2_s_p4_0[] = {
  8665. 8,
  8666. 7,
  8667. 9,
  8668. 6,
  8669. 10,
  8670. 5,
  8671. 11,
  8672. 4,
  8673. 12,
  8674. 3,
  8675. 13,
  8676. 2,
  8677. 14,
  8678. 1,
  8679. 15,
  8680. 0,
  8681. 16,
  8682. };
  8683. static long _vq_lengthlist__16c2_s_p4_0[] = {
  8684. 2, 3, 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,
  8685. 10, 0, 0, 0, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,
  8686. 11,11, 0, 0, 0, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,
  8687. 10,10,11, 0, 0, 0, 6, 6, 8, 8, 8, 8, 9, 9,10,10,
  8688. 10,11,11,11, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,
  8689. 10,11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,
  8690. 10,10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9,
  8691. 9,10,10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
  8692. 10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8, 8, 9,
  8693. 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 0, 0,
  8694. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8695. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8696. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8697. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8698. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8699. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8700. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8701. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8702. 0,
  8703. };
  8704. static float _vq_quantthresh__16c2_s_p4_0[] = {
  8705. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  8706. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  8707. };
  8708. static long _vq_quantmap__16c2_s_p4_0[] = {
  8709. 15, 13, 11, 9, 7, 5, 3, 1,
  8710. 0, 2, 4, 6, 8, 10, 12, 14,
  8711. 16,
  8712. };
  8713. static encode_aux_threshmatch _vq_auxt__16c2_s_p4_0 = {
  8714. _vq_quantthresh__16c2_s_p4_0,
  8715. _vq_quantmap__16c2_s_p4_0,
  8716. 17,
  8717. 17
  8718. };
  8719. static static_codebook _16c2_s_p4_0 = {
  8720. 2, 289,
  8721. _vq_lengthlist__16c2_s_p4_0,
  8722. 1, -529530880, 1611661312, 5, 0,
  8723. _vq_quantlist__16c2_s_p4_0,
  8724. NULL,
  8725. &_vq_auxt__16c2_s_p4_0,
  8726. NULL,
  8727. 0
  8728. };
  8729. static long _vq_quantlist__16c2_s_p5_0[] = {
  8730. 1,
  8731. 0,
  8732. 2,
  8733. };
  8734. static long _vq_lengthlist__16c2_s_p5_0[] = {
  8735. 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6,10,10,10,10,
  8736. 10,10, 4, 7, 6,10,10,10,10,10,10, 5, 9, 9, 9,12,
  8737. 11,10,11,12, 7,10,10,12,12,12,12,12,12, 7,10,10,
  8738. 11,12,12,12,12,13, 6,10,10,10,12,12,10,12,12, 7,
  8739. 10,10,11,13,12,12,12,12, 7,10,10,11,12,12,12,12,
  8740. 12,
  8741. };
  8742. static float _vq_quantthresh__16c2_s_p5_0[] = {
  8743. -5.5, 5.5,
  8744. };
  8745. static long _vq_quantmap__16c2_s_p5_0[] = {
  8746. 1, 0, 2,
  8747. };
  8748. static encode_aux_threshmatch _vq_auxt__16c2_s_p5_0 = {
  8749. _vq_quantthresh__16c2_s_p5_0,
  8750. _vq_quantmap__16c2_s_p5_0,
  8751. 3,
  8752. 3
  8753. };
  8754. static static_codebook _16c2_s_p5_0 = {
  8755. 4, 81,
  8756. _vq_lengthlist__16c2_s_p5_0,
  8757. 1, -529137664, 1618345984, 2, 0,
  8758. _vq_quantlist__16c2_s_p5_0,
  8759. NULL,
  8760. &_vq_auxt__16c2_s_p5_0,
  8761. NULL,
  8762. 0
  8763. };
  8764. static long _vq_quantlist__16c2_s_p5_1[] = {
  8765. 5,
  8766. 4,
  8767. 6,
  8768. 3,
  8769. 7,
  8770. 2,
  8771. 8,
  8772. 1,
  8773. 9,
  8774. 0,
  8775. 10,
  8776. };
  8777. static long _vq_lengthlist__16c2_s_p5_1[] = {
  8778. 2, 3, 3, 6, 6, 7, 7, 7, 7, 8, 8,11,11,11, 6, 6,
  8779. 7, 7, 8, 8, 8, 8,11,11,11, 6, 6, 7, 7, 8, 8, 8,
  8780. 8,11,11,11, 6, 6, 8, 8, 8, 8, 9, 9,11,11,11, 6,
  8781. 6, 8, 8, 8, 8, 9, 9,11,11,11, 7, 7, 8, 8, 8, 8,
  8782. 8, 8,11,11,11, 7, 7, 8, 8, 8, 8, 8, 9,11,11,11,
  8783. 8, 8, 8, 8, 8, 8, 8, 8,11,11,11,11,11, 8, 8, 8,
  8784. 8, 8, 8,11,11,11,11,11, 8, 8, 8, 8, 8, 8,11,11,
  8785. 11,11,11, 7, 7, 8, 8, 8, 8,
  8786. };
  8787. static float _vq_quantthresh__16c2_s_p5_1[] = {
  8788. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  8789. 3.5, 4.5,
  8790. };
  8791. static long _vq_quantmap__16c2_s_p5_1[] = {
  8792. 9, 7, 5, 3, 1, 0, 2, 4,
  8793. 6, 8, 10,
  8794. };
  8795. static encode_aux_threshmatch _vq_auxt__16c2_s_p5_1 = {
  8796. _vq_quantthresh__16c2_s_p5_1,
  8797. _vq_quantmap__16c2_s_p5_1,
  8798. 11,
  8799. 11
  8800. };
  8801. static static_codebook _16c2_s_p5_1 = {
  8802. 2, 121,
  8803. _vq_lengthlist__16c2_s_p5_1,
  8804. 1, -531365888, 1611661312, 4, 0,
  8805. _vq_quantlist__16c2_s_p5_1,
  8806. NULL,
  8807. &_vq_auxt__16c2_s_p5_1,
  8808. NULL,
  8809. 0
  8810. };
  8811. static long _vq_quantlist__16c2_s_p6_0[] = {
  8812. 6,
  8813. 5,
  8814. 7,
  8815. 4,
  8816. 8,
  8817. 3,
  8818. 9,
  8819. 2,
  8820. 10,
  8821. 1,
  8822. 11,
  8823. 0,
  8824. 12,
  8825. };
  8826. static long _vq_lengthlist__16c2_s_p6_0[] = {
  8827. 1, 4, 4, 7, 6, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
  8828. 7, 7, 9, 9, 9, 9,11,11,12,12, 6, 5, 5, 7, 7, 9,
  8829. 9,10,10,11,11,12,12, 0, 6, 6, 7, 7, 9, 9,10,10,
  8830. 11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,11,12,12,
  8831. 12, 0,11,11, 8, 8,10,10,11,11,12,12,13,13, 0,11,
  8832. 12, 8, 8,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
  8833. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8834. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8835. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8836. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8837. 0, 0, 0, 0, 0, 0, 0, 0, 0,
  8838. };
  8839. static float _vq_quantthresh__16c2_s_p6_0[] = {
  8840. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  8841. 12.5, 17.5, 22.5, 27.5,
  8842. };
  8843. static long _vq_quantmap__16c2_s_p6_0[] = {
  8844. 11, 9, 7, 5, 3, 1, 0, 2,
  8845. 4, 6, 8, 10, 12,
  8846. };
  8847. static encode_aux_threshmatch _vq_auxt__16c2_s_p6_0 = {
  8848. _vq_quantthresh__16c2_s_p6_0,
  8849. _vq_quantmap__16c2_s_p6_0,
  8850. 13,
  8851. 13
  8852. };
  8853. static static_codebook _16c2_s_p6_0 = {
  8854. 2, 169,
  8855. _vq_lengthlist__16c2_s_p6_0,
  8856. 1, -526516224, 1616117760, 4, 0,
  8857. _vq_quantlist__16c2_s_p6_0,
  8858. NULL,
  8859. &_vq_auxt__16c2_s_p6_0,
  8860. NULL,
  8861. 0
  8862. };
  8863. static long _vq_quantlist__16c2_s_p6_1[] = {
  8864. 2,
  8865. 1,
  8866. 3,
  8867. 0,
  8868. 4,
  8869. };
  8870. static long _vq_lengthlist__16c2_s_p6_1[] = {
  8871. 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
  8872. 6, 6, 5, 5, 6, 6, 6, 5, 5,
  8873. };
  8874. static float _vq_quantthresh__16c2_s_p6_1[] = {
  8875. -1.5, -0.5, 0.5, 1.5,
  8876. };
  8877. static long _vq_quantmap__16c2_s_p6_1[] = {
  8878. 3, 1, 0, 2, 4,
  8879. };
  8880. static encode_aux_threshmatch _vq_auxt__16c2_s_p6_1 = {
  8881. _vq_quantthresh__16c2_s_p6_1,
  8882. _vq_quantmap__16c2_s_p6_1,
  8883. 5,
  8884. 5
  8885. };
  8886. static static_codebook _16c2_s_p6_1 = {
  8887. 2, 25,
  8888. _vq_lengthlist__16c2_s_p6_1,
  8889. 1, -533725184, 1611661312, 3, 0,
  8890. _vq_quantlist__16c2_s_p6_1,
  8891. NULL,
  8892. &_vq_auxt__16c2_s_p6_1,
  8893. NULL,
  8894. 0
  8895. };
  8896. static long _vq_quantlist__16c2_s_p7_0[] = {
  8897. 6,
  8898. 5,
  8899. 7,
  8900. 4,
  8901. 8,
  8902. 3,
  8903. 9,
  8904. 2,
  8905. 10,
  8906. 1,
  8907. 11,
  8908. 0,
  8909. 12,
  8910. };
  8911. static long _vq_lengthlist__16c2_s_p7_0[] = {
  8912. 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
  8913. 8, 8, 9, 9,10,10,11,11,12,12, 6, 5, 5, 8, 8, 9,
  8914. 9,10,10,11,11,12,13,18, 6, 6, 7, 7, 9, 9,10,10,
  8915. 12,12,13,13,18, 6, 6, 7, 7, 9, 9,10,10,12,12,13,
  8916. 13,18,11,10, 8, 8,10,10,11,11,12,12,13,13,18,11,
  8917. 11, 8, 8,10,10,11,11,12,13,13,13,18,18,18,10,11,
  8918. 11,11,12,12,13,13,14,14,18,18,18,11,11,11,11,12,
  8919. 12,13,13,14,14,18,18,18,14,14,12,12,12,12,14,14,
  8920. 15,14,18,18,18,15,15,11,12,12,12,13,13,15,15,18,
  8921. 18,18,18,18,13,13,13,13,13,14,17,16,18,18,18,18,
  8922. 18,13,14,13,13,14,13,15,14,
  8923. };
  8924. static float _vq_quantthresh__16c2_s_p7_0[] = {
  8925. -60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5,
  8926. 27.5, 38.5, 49.5, 60.5,
  8927. };
  8928. static long _vq_quantmap__16c2_s_p7_0[] = {
  8929. 11, 9, 7, 5, 3, 1, 0, 2,
  8930. 4, 6, 8, 10, 12,
  8931. };
  8932. static encode_aux_threshmatch _vq_auxt__16c2_s_p7_0 = {
  8933. _vq_quantthresh__16c2_s_p7_0,
  8934. _vq_quantmap__16c2_s_p7_0,
  8935. 13,
  8936. 13
  8937. };
  8938. static static_codebook _16c2_s_p7_0 = {
  8939. 2, 169,
  8940. _vq_lengthlist__16c2_s_p7_0,
  8941. 1, -523206656, 1618345984, 4, 0,
  8942. _vq_quantlist__16c2_s_p7_0,
  8943. NULL,
  8944. &_vq_auxt__16c2_s_p7_0,
  8945. NULL,
  8946. 0
  8947. };
  8948. static long _vq_quantlist__16c2_s_p7_1[] = {
  8949. 5,
  8950. 4,
  8951. 6,
  8952. 3,
  8953. 7,
  8954. 2,
  8955. 8,
  8956. 1,
  8957. 9,
  8958. 0,
  8959. 10,
  8960. };
  8961. static long _vq_lengthlist__16c2_s_p7_1[] = {
  8962. 2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 7, 9, 9, 9, 6, 6,
  8963. 7, 7, 8, 8, 8, 8, 9, 9, 9, 6, 6, 7, 7, 8, 8, 8,
  8964. 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 7,
  8965. 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8,
  8966. 8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9,
  8967. 7, 7, 8, 8, 7, 7, 8, 8, 9, 9, 9, 9, 9, 7, 7, 7,
  8968. 7, 8, 8, 9, 9, 9, 9, 9, 8, 8, 7, 7, 8, 8, 9, 9,
  8969. 9, 9, 9, 7, 7, 7, 7, 8, 8,
  8970. };
  8971. static float _vq_quantthresh__16c2_s_p7_1[] = {
  8972. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  8973. 3.5, 4.5,
  8974. };
  8975. static long _vq_quantmap__16c2_s_p7_1[] = {
  8976. 9, 7, 5, 3, 1, 0, 2, 4,
  8977. 6, 8, 10,
  8978. };
  8979. static encode_aux_threshmatch _vq_auxt__16c2_s_p7_1 = {
  8980. _vq_quantthresh__16c2_s_p7_1,
  8981. _vq_quantmap__16c2_s_p7_1,
  8982. 11,
  8983. 11
  8984. };
  8985. static static_codebook _16c2_s_p7_1 = {
  8986. 2, 121,
  8987. _vq_lengthlist__16c2_s_p7_1,
  8988. 1, -531365888, 1611661312, 4, 0,
  8989. _vq_quantlist__16c2_s_p7_1,
  8990. NULL,
  8991. &_vq_auxt__16c2_s_p7_1,
  8992. NULL,
  8993. 0
  8994. };
  8995. static long _vq_quantlist__16c2_s_p8_0[] = {
  8996. 7,
  8997. 6,
  8998. 8,
  8999. 5,
  9000. 9,
  9001. 4,
  9002. 10,
  9003. 3,
  9004. 11,
  9005. 2,
  9006. 12,
  9007. 1,
  9008. 13,
  9009. 0,
  9010. 14,
  9011. };
  9012. static long _vq_lengthlist__16c2_s_p8_0[] = {
  9013. 1, 4, 4, 7, 6, 7, 7, 6, 6, 8, 8, 9, 9,10,10, 6,
  9014. 6, 6, 8, 8, 9, 8, 8, 8, 9, 9,11,10,11,11, 7, 6,
  9015. 6, 8, 8, 9, 8, 7, 7, 9, 9,10,10,12,11,14, 8, 8,
  9016. 8, 9, 9, 9, 9, 9,10, 9,10,10,11,13,14, 8, 8, 8,
  9017. 8, 9, 9, 8, 8, 9, 9,10,10,11,12,14,13,11, 9, 9,
  9018. 9, 9, 9, 9, 9,10,11,10,13,12,14,11,13, 8, 9, 9,
  9019. 9, 9, 9,10,10,11,10,13,12,14,14,14, 8, 9, 9, 9,
  9020. 11,11,11,11,11,12,13,13,14,14,14, 9, 8, 9, 9,10,
  9021. 10,12,10,11,12,12,14,14,14,14,11,12,10,10,12,12,
  9022. 12,12,13,14,12,12,14,14,14,12,12, 9,10,11,11,12,
  9023. 14,12,14,14,14,14,14,14,14,14,11,11,12,11,12,14,
  9024. 14,14,14,14,14,14,14,14,14,12,11,11,11,11,14,14,
  9025. 14,14,14,14,14,14,14,14,14,14,13,12,14,14,14,14,
  9026. 14,14,14,14,14,14,14,14,14,12,12,12,13,14,14,13,
  9027. 13,
  9028. };
  9029. static float _vq_quantthresh__16c2_s_p8_0[] = {
  9030. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  9031. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  9032. };
  9033. static long _vq_quantmap__16c2_s_p8_0[] = {
  9034. 13, 11, 9, 7, 5, 3, 1, 0,
  9035. 2, 4, 6, 8, 10, 12, 14,
  9036. };
  9037. static encode_aux_threshmatch _vq_auxt__16c2_s_p8_0 = {
  9038. _vq_quantthresh__16c2_s_p8_0,
  9039. _vq_quantmap__16c2_s_p8_0,
  9040. 15,
  9041. 15
  9042. };
  9043. static static_codebook _16c2_s_p8_0 = {
  9044. 2, 225,
  9045. _vq_lengthlist__16c2_s_p8_0,
  9046. 1, -520986624, 1620377600, 4, 0,
  9047. _vq_quantlist__16c2_s_p8_0,
  9048. NULL,
  9049. &_vq_auxt__16c2_s_p8_0,
  9050. NULL,
  9051. 0
  9052. };
  9053. static long _vq_quantlist__16c2_s_p8_1[] = {
  9054. 10,
  9055. 9,
  9056. 11,
  9057. 8,
  9058. 12,
  9059. 7,
  9060. 13,
  9061. 6,
  9062. 14,
  9063. 5,
  9064. 15,
  9065. 4,
  9066. 16,
  9067. 3,
  9068. 17,
  9069. 2,
  9070. 18,
  9071. 1,
  9072. 19,
  9073. 0,
  9074. 20,
  9075. };
  9076. static long _vq_lengthlist__16c2_s_p8_1[] = {
  9077. 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 8, 8, 8,
  9078. 8, 8, 8, 8, 8,11,12,11, 7, 7, 8, 8, 8, 8, 9, 9,
  9079. 9, 9, 9, 9, 9, 9, 9,10, 9, 9,11,11,10, 7, 7, 8,
  9080. 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
  9081. 11,11, 8, 7, 8, 8, 9, 9, 9, 9, 9, 9,10,10, 9,10,
  9082. 10, 9,10,10,11,11,12, 8, 8, 8, 8, 9, 9, 9, 9, 9,
  9083. 9, 9, 9,10, 9,10,10,10,10,11,11,11, 8, 8, 9, 9,
  9084. 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,11,11,
  9085. 11, 8, 8, 9, 8, 9, 9, 9, 9,10, 9, 9, 9,10,10,10,
  9086. 10, 9,10,11,11,11, 9, 9, 9, 9,10, 9, 9, 9,10,10,
  9087. 9,10, 9,10,10,10,10,10,11,12,11,11,11, 9, 9, 9,
  9088. 9, 9,10,10, 9,10,10,10,10,10,10,10,10,12,11,13,
  9089. 13,11, 9, 9, 9, 9,10,10, 9,10,10,10,10,11,10,10,
  9090. 10,10,11,12,11,12,11, 9, 9, 9,10,10, 9,10,10,10,
  9091. 10,10,10,10,10,10,10,11,11,11,12,11, 9,10,10,10,
  9092. 10,10,10,10,10,10,10,10,10,10,10,10,11,12,12,12,
  9093. 11,11,11,10, 9,10,10,10,10,10,10,10,10,11,10,10,
  9094. 10,11,11,11,11,11,11,11,10,10,10,11,10,10,10,10,
  9095. 10,10,10,10,10,10,11,11,11,11,12,12,11,10,10,10,
  9096. 10,10,10,10,10,11,10,10,10,11,10,12,11,11,12,11,
  9097. 11,11,10,10,10,10,10,11,10,10,10,10,10,11,10,10,
  9098. 11,11,11,12,11,12,11,11,12,10,10,10,10,10,10,10,
  9099. 11,10,10,11,10,12,11,11,11,12,11,11,11,11,10,10,
  9100. 10,10,10,10,10,11,11,11,10,11,12,11,11,11,12,11,
  9101. 12,11,12,10,11,10,10,10,10,11,10,10,10,10,10,10,
  9102. 12,11,11,11,11,11,12,12,10,10,10,10,10,11,10,10,
  9103. 11,10,11,11,11,11,11,11,11,11,11,11,11,11,12,11,
  9104. 10,11,10,10,10,10,10,10,10,
  9105. };
  9106. static float _vq_quantthresh__16c2_s_p8_1[] = {
  9107. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  9108. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  9109. 6.5, 7.5, 8.5, 9.5,
  9110. };
  9111. static long _vq_quantmap__16c2_s_p8_1[] = {
  9112. 19, 17, 15, 13, 11, 9, 7, 5,
  9113. 3, 1, 0, 2, 4, 6, 8, 10,
  9114. 12, 14, 16, 18, 20,
  9115. };
  9116. static encode_aux_threshmatch _vq_auxt__16c2_s_p8_1 = {
  9117. _vq_quantthresh__16c2_s_p8_1,
  9118. _vq_quantmap__16c2_s_p8_1,
  9119. 21,
  9120. 21
  9121. };
  9122. static static_codebook _16c2_s_p8_1 = {
  9123. 2, 441,
  9124. _vq_lengthlist__16c2_s_p8_1,
  9125. 1, -529268736, 1611661312, 5, 0,
  9126. _vq_quantlist__16c2_s_p8_1,
  9127. NULL,
  9128. &_vq_auxt__16c2_s_p8_1,
  9129. NULL,
  9130. 0
  9131. };
  9132. static long _vq_quantlist__16c2_s_p9_0[] = {
  9133. 6,
  9134. 5,
  9135. 7,
  9136. 4,
  9137. 8,
  9138. 3,
  9139. 9,
  9140. 2,
  9141. 10,
  9142. 1,
  9143. 11,
  9144. 0,
  9145. 12,
  9146. };
  9147. static long _vq_lengthlist__16c2_s_p9_0[] = {
  9148. 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  9149. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  9150. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  9151. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  9152. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  9153. 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  9154. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  9155. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  9156. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  9157. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  9158. 8, 8, 8, 8, 8, 8, 8, 8, 8,
  9159. };
  9160. static float _vq_quantthresh__16c2_s_p9_0[] = {
  9161. -5120.5, -4189.5, -3258.5, -2327.5, -1396.5, -465.5, 465.5, 1396.5,
  9162. 2327.5, 3258.5, 4189.5, 5120.5,
  9163. };
  9164. static long _vq_quantmap__16c2_s_p9_0[] = {
  9165. 11, 9, 7, 5, 3, 1, 0, 2,
  9166. 4, 6, 8, 10, 12,
  9167. };
  9168. static encode_aux_threshmatch _vq_auxt__16c2_s_p9_0 = {
  9169. _vq_quantthresh__16c2_s_p9_0,
  9170. _vq_quantmap__16c2_s_p9_0,
  9171. 13,
  9172. 13
  9173. };
  9174. static static_codebook _16c2_s_p9_0 = {
  9175. 2, 169,
  9176. _vq_lengthlist__16c2_s_p9_0,
  9177. 1, -510275072, 1631393792, 4, 0,
  9178. _vq_quantlist__16c2_s_p9_0,
  9179. NULL,
  9180. &_vq_auxt__16c2_s_p9_0,
  9181. NULL,
  9182. 0
  9183. };
  9184. static long _vq_quantlist__16c2_s_p9_1[] = {
  9185. 8,
  9186. 7,
  9187. 9,
  9188. 6,
  9189. 10,
  9190. 5,
  9191. 11,
  9192. 4,
  9193. 12,
  9194. 3,
  9195. 13,
  9196. 2,
  9197. 14,
  9198. 1,
  9199. 15,
  9200. 0,
  9201. 16,
  9202. };
  9203. static long _vq_lengthlist__16c2_s_p9_1[] = {
  9204. 1, 5, 5, 9, 8, 7, 7, 7, 6,10,11,11,11,11,11,11,
  9205. 11, 8, 7, 6, 8, 8,10, 9,10,10,10, 9,11,10,10,10,
  9206. 10,10, 8, 6, 6, 8, 8, 9, 8, 9, 8, 9,10,10,10,10,
  9207. 10,10,10,10, 8,10, 9, 9, 9, 9,10,10,10,10,10,10,
  9208. 10,10,10,10,10, 8, 9, 9, 9,10,10, 9,10,10,10,10,
  9209. 10,10,10,10,10,10,10,10, 9, 8, 9, 9,10,10,10,10,
  9210. 10,10,10,10,10,10,10,10, 9, 8, 8, 9, 9,10,10,10,
  9211. 10,10,10,10,10,10,10,10,10,10, 9,10, 9, 9,10,10,
  9212. 10,10,10,10,10,10,10,10,10,10,10, 9, 8, 9, 9,10,
  9213. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
  9214. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  9215. 8,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  9216. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  9217. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  9218. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  9219. 10,10,10,10, 9,10, 9,10,10,10,10,10,10,10,10,10,
  9220. 10,10,10,10,10,10,10,10,10, 9,10,10,10,10,10,10,
  9221. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  9222. 10,
  9223. };
  9224. static float _vq_quantthresh__16c2_s_p9_1[] = {
  9225. -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, -24.5,
  9226. 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5, 367.5,
  9227. };
  9228. static long _vq_quantmap__16c2_s_p9_1[] = {
  9229. 15, 13, 11, 9, 7, 5, 3, 1,
  9230. 0, 2, 4, 6, 8, 10, 12, 14,
  9231. 16,
  9232. };
  9233. static encode_aux_threshmatch _vq_auxt__16c2_s_p9_1 = {
  9234. _vq_quantthresh__16c2_s_p9_1,
  9235. _vq_quantmap__16c2_s_p9_1,
  9236. 17,
  9237. 17
  9238. };
  9239. static static_codebook _16c2_s_p9_1 = {
  9240. 2, 289,
  9241. _vq_lengthlist__16c2_s_p9_1,
  9242. 1, -518488064, 1622704128, 5, 0,
  9243. _vq_quantlist__16c2_s_p9_1,
  9244. NULL,
  9245. &_vq_auxt__16c2_s_p9_1,
  9246. NULL,
  9247. 0
  9248. };
  9249. static long _vq_quantlist__16c2_s_p9_2[] = {
  9250. 13,
  9251. 12,
  9252. 14,
  9253. 11,
  9254. 15,
  9255. 10,
  9256. 16,
  9257. 9,
  9258. 17,
  9259. 8,
  9260. 18,
  9261. 7,
  9262. 19,
  9263. 6,
  9264. 20,
  9265. 5,
  9266. 21,
  9267. 4,
  9268. 22,
  9269. 3,
  9270. 23,
  9271. 2,
  9272. 24,
  9273. 1,
  9274. 25,
  9275. 0,
  9276. 26,
  9277. };
  9278. static long _vq_lengthlist__16c2_s_p9_2[] = {
  9279. 1, 4, 4, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7,
  9280. 7, 7, 7, 7, 8, 7, 8, 7, 7, 4, 4,
  9281. };
  9282. static float _vq_quantthresh__16c2_s_p9_2[] = {
  9283. -12.5, -11.5, -10.5, -9.5, -8.5, -7.5, -6.5, -5.5,
  9284. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  9285. 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5,
  9286. 11.5, 12.5,
  9287. };
  9288. static long _vq_quantmap__16c2_s_p9_2[] = {
  9289. 25, 23, 21, 19, 17, 15, 13, 11,
  9290. 9, 7, 5, 3, 1, 0, 2, 4,
  9291. 6, 8, 10, 12, 14, 16, 18, 20,
  9292. 22, 24, 26,
  9293. };
  9294. static encode_aux_threshmatch _vq_auxt__16c2_s_p9_2 = {
  9295. _vq_quantthresh__16c2_s_p9_2,
  9296. _vq_quantmap__16c2_s_p9_2,
  9297. 27,
  9298. 27
  9299. };
  9300. static static_codebook _16c2_s_p9_2 = {
  9301. 1, 27,
  9302. _vq_lengthlist__16c2_s_p9_2,
  9303. 1, -528875520, 1611661312, 5, 0,
  9304. _vq_quantlist__16c2_s_p9_2,
  9305. NULL,
  9306. &_vq_auxt__16c2_s_p9_2,
  9307. NULL,
  9308. 0
  9309. };
  9310. static long _huff_lengthlist__16c2_s_short[] = {
  9311. 7,10,11,11,11,14,15,15,17,14, 8, 6, 7, 7, 8, 9,
  9312. 11,11,14,17, 9, 6, 6, 6, 7, 7,10,11,15,16, 9, 6,
  9313. 6, 4, 4, 5, 8, 9,12,16,10, 6, 6, 4, 4, 4, 6, 9,
  9314. 13,16,10, 7, 6, 5, 4, 3, 5, 7,13,16,11, 9, 8, 7,
  9315. 6, 5, 5, 6,12,15,10,10,10, 9, 7, 6, 6, 7,11,15,
  9316. 13,13,13,13,11,10,10, 9,12,16,16,16,16,14,16,15,
  9317. 15,12,14,14,
  9318. };
  9319. static static_codebook _huff_book__16c2_s_short = {
  9320. 2, 100,
  9321. _huff_lengthlist__16c2_s_short,
  9322. 0, 0, 0, 0, 0,
  9323. NULL,
  9324. NULL,
  9325. NULL,
  9326. NULL,
  9327. 0
  9328. };
  9329. static long _huff_lengthlist__44c0_s_long[] = {
  9330. 3, 4,18, 8, 8, 8, 9,10,11,13, 3, 2,18, 5, 5, 6,
  9331. 8,11,12,12,18,18,18,18,18,18,18,18,18,18, 8, 5,
  9332. 18, 7, 8, 8,10,14,14,16, 8, 5,18, 7, 5, 6, 7,11,
  9333. 12,13, 8, 6,18, 7, 5, 6, 7,10,12,14, 8, 7,18,10,
  9334. 7, 6, 6, 8,11,14, 9,10,18,13, 9, 7, 6, 8,10,13,
  9335. 11,13,18,16,13,10, 9, 8, 8,11,12,17,18,17,18,14,
  9336. 11, 9,10,14,
  9337. };
  9338. static static_codebook _huff_book__44c0_s_long = {
  9339. 2, 100,
  9340. _huff_lengthlist__44c0_s_long,
  9341. 0, 0, 0, 0, 0,
  9342. NULL,
  9343. NULL,
  9344. NULL,
  9345. NULL,
  9346. 0
  9347. };
  9348. static long _vq_quantlist__44c0_s_p1_0[] = {
  9349. 1,
  9350. 0,
  9351. 2,
  9352. };
  9353. static long _vq_lengthlist__44c0_s_p1_0[] = {
  9354. 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
  9355. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9356. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9357. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9358. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9359. 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
  9360. 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9361. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9362. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9363. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9364. 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
  9365. 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9366. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9367. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9368. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9369. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9370. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9371. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9372. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9373. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9374. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9375. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9376. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9377. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9378. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9379. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9380. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9381. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9382. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9383. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9384. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9385. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9386. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9387. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9388. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9389. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9390. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9391. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9392. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9393. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9394. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9395. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9396. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9397. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9398. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9399. 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
  9400. 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
  9401. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9402. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9403. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9404. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
  9405. 0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
  9406. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9407. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9408. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9409. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  9410. 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
  9411. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9412. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9413. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9414. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9415. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9416. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9417. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9418. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9419. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9420. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9421. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9422. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9423. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9424. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9425. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9426. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9427. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9428. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9429. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9430. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9431. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9432. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9433. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9434. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9435. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9436. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9437. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9438. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9439. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9440. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9441. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9442. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9443. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9444. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9445. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  9446. 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9447. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9448. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9449. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9450. 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
  9451. 0, 0, 0, 0, 0, 8, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
  9452. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9453. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9454. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9455. 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
  9456. 0, 0, 0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 0,
  9457. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9458. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9459. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9460. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9461. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9462. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9463. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9464. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9465. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9466. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9467. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9468. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9469. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9470. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9471. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9472. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9473. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9474. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9475. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9476. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9477. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9478. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9479. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9480. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9481. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9482. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9483. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9484. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9485. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9486. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9487. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9488. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9489. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9490. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9491. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9492. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9493. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9494. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9495. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9496. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9497. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9498. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9499. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9500. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9501. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9502. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9503. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9504. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9505. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9506. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9507. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9508. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9509. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9510. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9511. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9512. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9513. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9514. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9515. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9516. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9517. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9518. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9519. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9520. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9521. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9522. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9523. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9524. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9525. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9526. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9527. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9528. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9529. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9530. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9531. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9532. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9533. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9534. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9535. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9536. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9537. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9538. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9539. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9540. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9541. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9542. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9543. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9544. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9545. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9546. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9547. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9548. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9549. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9550. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9551. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9552. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9553. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9554. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9555. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9556. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9557. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9558. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9559. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9560. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9561. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9562. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9563. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9564. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9565. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9566. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9567. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9568. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9569. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9570. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9571. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9572. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9573. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9574. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9575. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9576. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9577. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9578. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9579. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9580. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9581. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9582. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9583. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9584. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9585. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9586. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9587. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9588. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9589. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9590. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9591. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9592. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9593. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9594. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9595. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9596. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9597. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9598. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9599. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9600. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9601. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9602. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9603. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9604. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9605. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9606. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9607. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9608. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9609. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9610. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9611. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9612. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9613. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9614. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9615. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9616. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9617. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9618. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9619. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9620. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9621. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9622. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9623. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9624. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9625. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9626. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9627. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9628. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9629. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9630. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9631. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9632. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9633. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9634. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9635. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9636. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9637. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9638. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9639. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9640. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9641. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9642. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9643. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9644. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9645. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9646. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9647. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9648. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9649. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9650. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9651. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9652. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9653. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9654. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9655. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9656. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9657. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9658. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9659. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9660. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9661. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9662. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9663. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9664. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9665. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9666. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9667. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9668. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9669. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9670. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9671. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9672. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9673. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9674. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9675. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9676. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9677. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9678. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9679. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9680. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9681. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9682. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9683. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9684. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9685. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9686. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9687. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9688. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9689. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9690. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9691. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9692. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9693. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9694. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9695. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9696. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9697. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9698. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9699. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9700. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9701. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9702. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9703. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9704. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9705. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9706. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9707. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9708. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9709. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9710. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9711. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9712. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9713. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9714. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9715. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9716. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9717. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9718. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9719. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9720. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9721. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9722. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9723. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9724. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9725. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9726. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9727. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9728. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9729. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9730. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9731. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9732. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9733. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9734. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9735. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9736. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9737. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9738. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9739. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9740. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9741. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9742. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9743. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9744. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9745. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9746. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9747. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9748. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9749. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9750. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9751. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9752. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9753. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9754. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9755. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9756. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9757. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9758. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9759. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9760. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9761. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9762. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9763. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9764. 0,
  9765. };
  9766. static float _vq_quantthresh__44c0_s_p1_0[] = {
  9767. -0.5, 0.5,
  9768. };
  9769. static long _vq_quantmap__44c0_s_p1_0[] = {
  9770. 1, 0, 2,
  9771. };
  9772. static encode_aux_threshmatch _vq_auxt__44c0_s_p1_0 = {
  9773. _vq_quantthresh__44c0_s_p1_0,
  9774. _vq_quantmap__44c0_s_p1_0,
  9775. 3,
  9776. 3
  9777. };
  9778. static static_codebook _44c0_s_p1_0 = {
  9779. 8, 6561,
  9780. _vq_lengthlist__44c0_s_p1_0,
  9781. 1, -535822336, 1611661312, 2, 0,
  9782. _vq_quantlist__44c0_s_p1_0,
  9783. NULL,
  9784. &_vq_auxt__44c0_s_p1_0,
  9785. NULL,
  9786. 0
  9787. };
  9788. static long _vq_quantlist__44c0_s_p2_0[] = {
  9789. 2,
  9790. 1,
  9791. 3,
  9792. 0,
  9793. 4,
  9794. };
  9795. static long _vq_lengthlist__44c0_s_p2_0[] = {
  9796. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9797. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9798. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9799. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9800. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9801. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9802. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9803. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9804. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9805. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9806. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9807. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9808. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9809. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9810. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9811. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9812. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9813. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9814. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9815. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9816. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9817. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9818. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9819. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9820. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9821. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9822. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9823. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9824. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9825. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9826. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9827. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9828. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9829. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9830. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9831. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9832. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9833. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9834. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9835. 0,
  9836. };
  9837. static float _vq_quantthresh__44c0_s_p2_0[] = {
  9838. -1.5, -0.5, 0.5, 1.5,
  9839. };
  9840. static long _vq_quantmap__44c0_s_p2_0[] = {
  9841. 3, 1, 0, 2, 4,
  9842. };
  9843. static encode_aux_threshmatch _vq_auxt__44c0_s_p2_0 = {
  9844. _vq_quantthresh__44c0_s_p2_0,
  9845. _vq_quantmap__44c0_s_p2_0,
  9846. 5,
  9847. 5
  9848. };
  9849. static static_codebook _44c0_s_p2_0 = {
  9850. 4, 625,
  9851. _vq_lengthlist__44c0_s_p2_0,
  9852. 1, -533725184, 1611661312, 3, 0,
  9853. _vq_quantlist__44c0_s_p2_0,
  9854. NULL,
  9855. &_vq_auxt__44c0_s_p2_0,
  9856. NULL,
  9857. 0
  9858. };
  9859. static long _vq_quantlist__44c0_s_p3_0[] = {
  9860. 2,
  9861. 1,
  9862. 3,
  9863. 0,
  9864. 4,
  9865. };
  9866. static long _vq_lengthlist__44c0_s_p3_0[] = {
  9867. 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9868. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
  9869. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9870. 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9871. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
  9872. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9873. 0, 0, 0, 0, 7, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
  9874. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9875. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9876. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9877. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9878. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9879. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9880. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9881. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9882. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9883. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9884. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9885. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9886. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9887. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9888. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9889. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9890. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9891. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9892. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9893. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9894. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9895. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9896. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9897. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9898. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9899. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9900. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9901. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9902. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9903. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9904. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9905. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9906. 0,
  9907. };
  9908. static float _vq_quantthresh__44c0_s_p3_0[] = {
  9909. -1.5, -0.5, 0.5, 1.5,
  9910. };
  9911. static long _vq_quantmap__44c0_s_p3_0[] = {
  9912. 3, 1, 0, 2, 4,
  9913. };
  9914. static encode_aux_threshmatch _vq_auxt__44c0_s_p3_0 = {
  9915. _vq_quantthresh__44c0_s_p3_0,
  9916. _vq_quantmap__44c0_s_p3_0,
  9917. 5,
  9918. 5
  9919. };
  9920. static static_codebook _44c0_s_p3_0 = {
  9921. 4, 625,
  9922. _vq_lengthlist__44c0_s_p3_0,
  9923. 1, -533725184, 1611661312, 3, 0,
  9924. _vq_quantlist__44c0_s_p3_0,
  9925. NULL,
  9926. &_vq_auxt__44c0_s_p3_0,
  9927. NULL,
  9928. 0
  9929. };
  9930. static long _vq_quantlist__44c0_s_p4_0[] = {
  9931. 4,
  9932. 3,
  9933. 5,
  9934. 2,
  9935. 6,
  9936. 1,
  9937. 7,
  9938. 0,
  9939. 8,
  9940. };
  9941. static long _vq_lengthlist__44c0_s_p4_0[] = {
  9942. 1, 3, 2, 8, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
  9943. 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
  9944. 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  9945. 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
  9946. 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  9947. 0,
  9948. };
  9949. static float _vq_quantthresh__44c0_s_p4_0[] = {
  9950. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  9951. };
  9952. static long _vq_quantmap__44c0_s_p4_0[] = {
  9953. 7, 5, 3, 1, 0, 2, 4, 6,
  9954. 8,
  9955. };
  9956. static encode_aux_threshmatch _vq_auxt__44c0_s_p4_0 = {
  9957. _vq_quantthresh__44c0_s_p4_0,
  9958. _vq_quantmap__44c0_s_p4_0,
  9959. 9,
  9960. 9
  9961. };
  9962. static static_codebook _44c0_s_p4_0 = {
  9963. 2, 81,
  9964. _vq_lengthlist__44c0_s_p4_0,
  9965. 1, -531628032, 1611661312, 4, 0,
  9966. _vq_quantlist__44c0_s_p4_0,
  9967. NULL,
  9968. &_vq_auxt__44c0_s_p4_0,
  9969. NULL,
  9970. 0
  9971. };
  9972. static long _vq_quantlist__44c0_s_p5_0[] = {
  9973. 4,
  9974. 3,
  9975. 5,
  9976. 2,
  9977. 6,
  9978. 1,
  9979. 7,
  9980. 0,
  9981. 8,
  9982. };
  9983. static long _vq_lengthlist__44c0_s_p5_0[] = {
  9984. 1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 6, 7, 7, 7,
  9985. 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7,
  9986. 8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8,10, 9, 0, 0, 0,
  9987. 8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
  9988. 0, 0,10, 9, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
  9989. 11,
  9990. };
  9991. static float _vq_quantthresh__44c0_s_p5_0[] = {
  9992. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  9993. };
  9994. static long _vq_quantmap__44c0_s_p5_0[] = {
  9995. 7, 5, 3, 1, 0, 2, 4, 6,
  9996. 8,
  9997. };
  9998. static encode_aux_threshmatch _vq_auxt__44c0_s_p5_0 = {
  9999. _vq_quantthresh__44c0_s_p5_0,
  10000. _vq_quantmap__44c0_s_p5_0,
  10001. 9,
  10002. 9
  10003. };
  10004. static static_codebook _44c0_s_p5_0 = {
  10005. 2, 81,
  10006. _vq_lengthlist__44c0_s_p5_0,
  10007. 1, -531628032, 1611661312, 4, 0,
  10008. _vq_quantlist__44c0_s_p5_0,
  10009. NULL,
  10010. &_vq_auxt__44c0_s_p5_0,
  10011. NULL,
  10012. 0
  10013. };
  10014. static long _vq_quantlist__44c0_s_p6_0[] = {
  10015. 8,
  10016. 7,
  10017. 9,
  10018. 6,
  10019. 10,
  10020. 5,
  10021. 11,
  10022. 4,
  10023. 12,
  10024. 3,
  10025. 13,
  10026. 2,
  10027. 14,
  10028. 1,
  10029. 15,
  10030. 0,
  10031. 16,
  10032. };
  10033. static long _vq_lengthlist__44c0_s_p6_0[] = {
  10034. 1, 3, 4, 6, 6, 7, 8, 8, 8, 8, 8, 9, 9,10,10,11,
  10035. 11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
  10036. 11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
  10037. 11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
  10038. 11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
  10039. 10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9,10,10,10,
  10040. 10,11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,
  10041. 10,11,11,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
  10042. 10,10,11,11,12,12,12,13, 0, 0, 0, 0, 0, 9, 9,10,
  10043. 10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
  10044. 9,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
  10045. 9, 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
  10046. 10, 9,10,10,11,11,11,12,12,13,13,13, 0, 0, 0, 0,
  10047. 0, 0, 0,10,10,11,11,12,12,12,12,13,13, 0, 0, 0,
  10048. 0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0, 0,
  10049. 0, 0, 0, 0, 0,11,11,11,11,12,12,13,12,13,13, 0,
  10050. 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14,
  10051. 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,
  10052. 14,
  10053. };
  10054. static float _vq_quantthresh__44c0_s_p6_0[] = {
  10055. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  10056. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  10057. };
  10058. static long _vq_quantmap__44c0_s_p6_0[] = {
  10059. 15, 13, 11, 9, 7, 5, 3, 1,
  10060. 0, 2, 4, 6, 8, 10, 12, 14,
  10061. 16,
  10062. };
  10063. static encode_aux_threshmatch _vq_auxt__44c0_s_p6_0 = {
  10064. _vq_quantthresh__44c0_s_p6_0,
  10065. _vq_quantmap__44c0_s_p6_0,
  10066. 17,
  10067. 17
  10068. };
  10069. static static_codebook _44c0_s_p6_0 = {
  10070. 2, 289,
  10071. _vq_lengthlist__44c0_s_p6_0,
  10072. 1, -529530880, 1611661312, 5, 0,
  10073. _vq_quantlist__44c0_s_p6_0,
  10074. NULL,
  10075. &_vq_auxt__44c0_s_p6_0,
  10076. NULL,
  10077. 0
  10078. };
  10079. static long _vq_quantlist__44c0_s_p7_0[] = {
  10080. 1,
  10081. 0,
  10082. 2,
  10083. };
  10084. static long _vq_lengthlist__44c0_s_p7_0[] = {
  10085. 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
  10086. 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11,
  10087. 10,11,10,10, 6, 9, 9,11,10,10,11, 9,10, 6, 9, 9,
  10088. 11,10,10,11, 9, 9, 7,10,10,11,11,11,12,11,11, 7,
  10089. 9, 9,10, 9, 9,11,11,10, 7, 9, 9,10,10,10,12,10,
  10090. 11,
  10091. };
  10092. static float _vq_quantthresh__44c0_s_p7_0[] = {
  10093. -5.5, 5.5,
  10094. };
  10095. static long _vq_quantmap__44c0_s_p7_0[] = {
  10096. 1, 0, 2,
  10097. };
  10098. static encode_aux_threshmatch _vq_auxt__44c0_s_p7_0 = {
  10099. _vq_quantthresh__44c0_s_p7_0,
  10100. _vq_quantmap__44c0_s_p7_0,
  10101. 3,
  10102. 3
  10103. };
  10104. static static_codebook _44c0_s_p7_0 = {
  10105. 4, 81,
  10106. _vq_lengthlist__44c0_s_p7_0,
  10107. 1, -529137664, 1618345984, 2, 0,
  10108. _vq_quantlist__44c0_s_p7_0,
  10109. NULL,
  10110. &_vq_auxt__44c0_s_p7_0,
  10111. NULL,
  10112. 0
  10113. };
  10114. static long _vq_quantlist__44c0_s_p7_1[] = {
  10115. 5,
  10116. 4,
  10117. 6,
  10118. 3,
  10119. 7,
  10120. 2,
  10121. 8,
  10122. 1,
  10123. 9,
  10124. 0,
  10125. 10,
  10126. };
  10127. static long _vq_lengthlist__44c0_s_p7_1[] = {
  10128. 2, 3, 3, 6, 6, 7, 7, 7, 7, 7, 7,10, 9, 9, 6, 6,
  10129. 7, 7, 8, 8, 8, 8, 9, 9, 9, 6, 6, 7, 7, 8, 8, 8,
  10130. 8,10, 9,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
  10131. 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
  10132. 8, 8,10,10,10, 8, 7, 8, 8, 8, 8, 8, 8,10,10,10,
  10133. 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
  10134. 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 9, 8,10,10,
  10135. 10,10,10, 8, 8, 8, 8, 8, 8,
  10136. };
  10137. static float _vq_quantthresh__44c0_s_p7_1[] = {
  10138. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  10139. 3.5, 4.5,
  10140. };
  10141. static long _vq_quantmap__44c0_s_p7_1[] = {
  10142. 9, 7, 5, 3, 1, 0, 2, 4,
  10143. 6, 8, 10,
  10144. };
  10145. static encode_aux_threshmatch _vq_auxt__44c0_s_p7_1 = {
  10146. _vq_quantthresh__44c0_s_p7_1,
  10147. _vq_quantmap__44c0_s_p7_1,
  10148. 11,
  10149. 11
  10150. };
  10151. static static_codebook _44c0_s_p7_1 = {
  10152. 2, 121,
  10153. _vq_lengthlist__44c0_s_p7_1,
  10154. 1, -531365888, 1611661312, 4, 0,
  10155. _vq_quantlist__44c0_s_p7_1,
  10156. NULL,
  10157. &_vq_auxt__44c0_s_p7_1,
  10158. NULL,
  10159. 0
  10160. };
  10161. static long _vq_quantlist__44c0_s_p8_0[] = {
  10162. 6,
  10163. 5,
  10164. 7,
  10165. 4,
  10166. 8,
  10167. 3,
  10168. 9,
  10169. 2,
  10170. 10,
  10171. 1,
  10172. 11,
  10173. 0,
  10174. 12,
  10175. };
  10176. static long _vq_lengthlist__44c0_s_p8_0[] = {
  10177. 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 9, 7, 5, 5,
  10178. 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 6, 6, 7, 7, 8,
  10179. 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 8, 9, 9,
  10180. 10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
  10181. 11, 0,12,12, 9, 8, 9, 9,10,10,10,11,12,11, 0,13,
  10182. 13, 9, 8, 9, 9,10,10,10,11,11,11, 0, 0, 0,10,10,
  10183. 9, 9,10,10,11,11,12,12, 0, 0, 0,10,10, 9, 8,10,
  10184. 10,11,11,12,12, 0, 0, 0,13,13,10,10,11,11,12,12,
  10185. 12,12, 0, 0, 0,15,15,10,10,11, 9,12,12,13,13, 0,
  10186. 0, 0, 0, 0,12,11,11,11,12,12,13,13, 0, 0, 0, 0,
  10187. 0,12,12,11,11,12,11,14,13,
  10188. };
  10189. static float _vq_quantthresh__44c0_s_p8_0[] = {
  10190. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  10191. 12.5, 17.5, 22.5, 27.5,
  10192. };
  10193. static long _vq_quantmap__44c0_s_p8_0[] = {
  10194. 11, 9, 7, 5, 3, 1, 0, 2,
  10195. 4, 6, 8, 10, 12,
  10196. };
  10197. static encode_aux_threshmatch _vq_auxt__44c0_s_p8_0 = {
  10198. _vq_quantthresh__44c0_s_p8_0,
  10199. _vq_quantmap__44c0_s_p8_0,
  10200. 13,
  10201. 13
  10202. };
  10203. static static_codebook _44c0_s_p8_0 = {
  10204. 2, 169,
  10205. _vq_lengthlist__44c0_s_p8_0,
  10206. 1, -526516224, 1616117760, 4, 0,
  10207. _vq_quantlist__44c0_s_p8_0,
  10208. NULL,
  10209. &_vq_auxt__44c0_s_p8_0,
  10210. NULL,
  10211. 0
  10212. };
  10213. static long _vq_quantlist__44c0_s_p8_1[] = {
  10214. 2,
  10215. 1,
  10216. 3,
  10217. 0,
  10218. 4,
  10219. };
  10220. static long _vq_lengthlist__44c0_s_p8_1[] = {
  10221. 2, 3, 4, 4, 4, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
  10222. 6, 6, 5, 5, 6, 6, 6, 5, 5,
  10223. };
  10224. static float _vq_quantthresh__44c0_s_p8_1[] = {
  10225. -1.5, -0.5, 0.5, 1.5,
  10226. };
  10227. static long _vq_quantmap__44c0_s_p8_1[] = {
  10228. 3, 1, 0, 2, 4,
  10229. };
  10230. static encode_aux_threshmatch _vq_auxt__44c0_s_p8_1 = {
  10231. _vq_quantthresh__44c0_s_p8_1,
  10232. _vq_quantmap__44c0_s_p8_1,
  10233. 5,
  10234. 5
  10235. };
  10236. static static_codebook _44c0_s_p8_1 = {
  10237. 2, 25,
  10238. _vq_lengthlist__44c0_s_p8_1,
  10239. 1, -533725184, 1611661312, 3, 0,
  10240. _vq_quantlist__44c0_s_p8_1,
  10241. NULL,
  10242. &_vq_auxt__44c0_s_p8_1,
  10243. NULL,
  10244. 0
  10245. };
  10246. static long _vq_quantlist__44c0_s_p9_0[] = {
  10247. 2,
  10248. 1,
  10249. 3,
  10250. 0,
  10251. 4,
  10252. };
  10253. static long _vq_lengthlist__44c0_s_p9_0[] = {
  10254. 1, 7, 7,11,11,10,11,11,11,11, 9,11,11,11,11,11,
  10255. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10256. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10257. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10258. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10259. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10260. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10261. 11,11,11,11,11,11,11,11,11,11,11,11,11, 8,11,11,
  10262. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10263. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10264. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10265. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10266. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10267. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10268. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10269. 11,11,11,11,11,11,11,11,11,11, 8,11,11,11,11,11,
  10270. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  10271. 11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10272. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10273. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10274. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10275. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10276. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10277. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10278. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10279. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10280. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10281. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10282. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10283. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10284. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10285. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10286. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10287. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10288. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10289. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10290. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10291. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10292. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10293. 10,
  10294. };
  10295. static float _vq_quantthresh__44c0_s_p9_0[] = {
  10296. -331.5, -110.5, 110.5, 331.5,
  10297. };
  10298. static long _vq_quantmap__44c0_s_p9_0[] = {
  10299. 3, 1, 0, 2, 4,
  10300. };
  10301. static encode_aux_threshmatch _vq_auxt__44c0_s_p9_0 = {
  10302. _vq_quantthresh__44c0_s_p9_0,
  10303. _vq_quantmap__44c0_s_p9_0,
  10304. 5,
  10305. 5
  10306. };
  10307. static static_codebook _44c0_s_p9_0 = {
  10308. 4, 625,
  10309. _vq_lengthlist__44c0_s_p9_0,
  10310. 1, -518283264, 1627103232, 3, 0,
  10311. _vq_quantlist__44c0_s_p9_0,
  10312. NULL,
  10313. &_vq_auxt__44c0_s_p9_0,
  10314. NULL,
  10315. 0
  10316. };
  10317. static long _vq_quantlist__44c0_s_p9_1[] = {
  10318. 6,
  10319. 5,
  10320. 7,
  10321. 4,
  10322. 8,
  10323. 3,
  10324. 9,
  10325. 2,
  10326. 10,
  10327. 1,
  10328. 11,
  10329. 0,
  10330. 12,
  10331. };
  10332. static long _vq_lengthlist__44c0_s_p9_1[] = {
  10333. 1, 4, 4, 6, 6, 7, 7, 9, 9,12,12,13,12, 6, 5, 5,
  10334. 7, 7, 8, 8,10,10,12,11,14,13, 6, 5, 5, 7, 7, 7,
  10335. 8, 9, 9,11,12,13,12,15, 7, 7, 7, 7, 9, 9,11,11,
  10336. 14,13,14,13,15, 7, 7, 8, 8, 8, 9,10,10,11,11,12,
  10337. 11,15,10,10, 8, 8,10,10,12,11,13,15,14,14,15,11,
  10338. 10, 8, 8,11,11,11,11,13,13,12,13,15,15,15,10,10,
  10339. 10,10,12,13,13,13,15,14,15,15,15,10,10,10,11,13,
  10340. 14,13,14,14,14,15,15,15,15,15,11,12,11,13,14,14,
  10341. 15,15,15,15,15,14,15,11,11,13,12,14,13,15,15,15,
  10342. 15,15,15,15,13,12,13,12,15,15,15,15,15,15,15,15,
  10343. 15,12,13,12,12,15,14,15,15,
  10344. };
  10345. static float _vq_quantthresh__44c0_s_p9_1[] = {
  10346. -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5,
  10347. 42.5, 59.5, 76.5, 93.5,
  10348. };
  10349. static long _vq_quantmap__44c0_s_p9_1[] = {
  10350. 11, 9, 7, 5, 3, 1, 0, 2,
  10351. 4, 6, 8, 10, 12,
  10352. };
  10353. static encode_aux_threshmatch _vq_auxt__44c0_s_p9_1 = {
  10354. _vq_quantthresh__44c0_s_p9_1,
  10355. _vq_quantmap__44c0_s_p9_1,
  10356. 13,
  10357. 13
  10358. };
  10359. static static_codebook _44c0_s_p9_1 = {
  10360. 2, 169,
  10361. _vq_lengthlist__44c0_s_p9_1,
  10362. 1, -522616832, 1620115456, 4, 0,
  10363. _vq_quantlist__44c0_s_p9_1,
  10364. NULL,
  10365. &_vq_auxt__44c0_s_p9_1,
  10366. NULL,
  10367. 0
  10368. };
  10369. static long _vq_quantlist__44c0_s_p9_2[] = {
  10370. 8,
  10371. 7,
  10372. 9,
  10373. 6,
  10374. 10,
  10375. 5,
  10376. 11,
  10377. 4,
  10378. 12,
  10379. 3,
  10380. 13,
  10381. 2,
  10382. 14,
  10383. 1,
  10384. 15,
  10385. 0,
  10386. 16,
  10387. };
  10388. static long _vq_lengthlist__44c0_s_p9_2[] = {
  10389. 2, 4, 4, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 8,
  10390. 9,10,10,10, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9, 9,
  10391. 9, 9,10,10,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9,
  10392. 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
  10393. 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9,
  10394. 9, 9, 9, 9, 9,11,10,10, 8, 8, 8, 8, 9, 9, 9, 9,
  10395. 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 8, 9, 9,
  10396. 9, 9, 9, 9,10, 9, 9,10,10,11, 9, 8, 9, 9, 9, 9,
  10397. 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11, 9, 8, 9,
  10398. 9, 9, 9, 9, 9, 9, 9,10,10,11,11,10,11,11, 9, 9,
  10399. 9, 9, 9, 9,10, 9, 9, 9,10, 9,10,10,10,11,11, 9,
  10400. 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10,11,10,10,10,11,
  10401. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,
  10402. 11,11,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
  10403. 11,11,10,10, 9,10,10,10, 9,10, 9, 9, 9, 9,10,10,
  10404. 11,10,11,11,11, 9,10, 9, 9, 9, 9, 9, 9, 9,10,10,
  10405. 11,10,11,11,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
  10406. 10,10,10,10,11,11,10,11,11, 9, 9, 9, 9, 9, 9, 9,
  10407. 9,
  10408. };
  10409. static float _vq_quantthresh__44c0_s_p9_2[] = {
  10410. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  10411. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  10412. };
  10413. static long _vq_quantmap__44c0_s_p9_2[] = {
  10414. 15, 13, 11, 9, 7, 5, 3, 1,
  10415. 0, 2, 4, 6, 8, 10, 12, 14,
  10416. 16,
  10417. };
  10418. static encode_aux_threshmatch _vq_auxt__44c0_s_p9_2 = {
  10419. _vq_quantthresh__44c0_s_p9_2,
  10420. _vq_quantmap__44c0_s_p9_2,
  10421. 17,
  10422. 17
  10423. };
  10424. static static_codebook _44c0_s_p9_2 = {
  10425. 2, 289,
  10426. _vq_lengthlist__44c0_s_p9_2,
  10427. 1, -529530880, 1611661312, 5, 0,
  10428. _vq_quantlist__44c0_s_p9_2,
  10429. NULL,
  10430. &_vq_auxt__44c0_s_p9_2,
  10431. NULL,
  10432. 0
  10433. };
  10434. static long _huff_lengthlist__44c0_s_short[] = {
  10435. 6, 8,17,12,12,12,14,15,17,16, 5, 1,16, 5, 6, 6,
  10436. 9,12,14,13,16,16,16,16,16,16,16,16,16,16, 9, 4,
  10437. 16, 6, 9, 7,10,14,14,14, 8, 5,16, 8, 6, 7,10,13,
  10438. 15,16, 9, 6,16, 7, 7, 7,10,12,15,14,10, 8,16, 9,
  10439. 9, 9,10,12,15,14,13, 7,16, 8, 7, 7,10,12,14,13,
  10440. 15, 6,16, 7, 5, 5, 7, 9,13,16,14, 7,16, 8, 6, 6,
  10441. 8, 9,11,14,
  10442. };
  10443. static static_codebook _huff_book__44c0_s_short = {
  10444. 2, 100,
  10445. _huff_lengthlist__44c0_s_short,
  10446. 0, 0, 0, 0, 0,
  10447. NULL,
  10448. NULL,
  10449. NULL,
  10450. NULL,
  10451. 0
  10452. };
  10453. static long _huff_lengthlist__44c0_sm_long[] = {
  10454. 3, 4,10, 8,11, 9,10,10,11,13, 3, 2,10, 5, 8, 6,
  10455. 8,11,12,13,10, 8, 7,10, 7, 8, 9,11,12,13, 8, 5,
  10456. 12, 6, 9, 7,10,13,14,16,11, 7, 7, 9, 5, 6, 7,10,
  10457. 13,13, 8, 6, 7, 7, 5, 5, 6, 9,12,13, 9, 8, 8, 8,
  10458. 7, 6, 6, 8,11,14,10,10,10,11, 9, 8, 7, 8,10,13,
  10459. 11,14,12,15,13,11, 9, 8, 9,12,12,18,15,18,17,15,
  10460. 12,10,10,14,
  10461. };
  10462. static static_codebook _huff_book__44c0_sm_long = {
  10463. 2, 100,
  10464. _huff_lengthlist__44c0_sm_long,
  10465. 0, 0, 0, 0, 0,
  10466. NULL,
  10467. NULL,
  10468. NULL,
  10469. NULL,
  10470. 0
  10471. };
  10472. static long _vq_quantlist__44c0_sm_p1_0[] = {
  10473. 1,
  10474. 0,
  10475. 2,
  10476. };
  10477. static long _vq_lengthlist__44c0_sm_p1_0[] = {
  10478. 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
  10479. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10480. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10481. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10482. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10483. 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
  10484. 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10485. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10486. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10487. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10488. 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
  10489. 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10490. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10491. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10492. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10493. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10494. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10495. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10496. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10497. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10498. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10499. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10500. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10501. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10502. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10503. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10504. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10505. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10506. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10507. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10508. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10509. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10510. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10511. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10512. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10513. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10514. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10515. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10516. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10517. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10518. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10519. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10520. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10521. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10522. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10523. 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
  10524. 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
  10525. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10526. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10527. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10528. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
  10529. 0, 0, 0, 9, 9,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
  10530. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10531. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10532. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10533. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  10534. 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
  10535. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10536. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10537. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10538. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10539. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10540. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10541. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10542. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10543. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10544. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10545. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10546. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10547. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10548. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10549. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10550. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10551. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10552. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10553. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10554. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10555. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10556. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10557. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10558. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10559. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10560. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10561. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10562. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10563. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10564. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10565. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10566. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10567. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10568. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10569. 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  10570. 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10571. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10572. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10573. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10574. 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
  10575. 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
  10576. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10577. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10578. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10579. 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
  10580. 0, 0, 0, 0, 0, 0, 9,10, 9, 0, 0, 0, 0, 0, 0, 0,
  10581. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10582. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10583. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10584. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10585. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10586. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10587. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10588. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10589. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10590. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10591. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10592. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10593. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10594. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10595. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10596. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10597. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10598. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10599. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10600. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10601. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10602. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10603. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10604. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10605. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10606. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10607. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10608. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10609. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10610. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10611. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10612. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10613. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10614. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10615. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10616. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10617. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10618. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10619. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10620. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10621. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10622. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10623. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10624. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10625. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10626. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10627. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10628. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10629. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10630. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10631. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10632. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10633. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10634. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10635. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10636. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10637. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10638. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10639. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10640. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10641. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10642. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10643. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10644. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10645. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10646. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10647. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10648. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10649. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10650. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10651. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10652. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10653. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10654. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10655. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10656. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10657. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10658. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10659. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10660. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10661. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10662. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10663. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10664. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10665. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10666. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10667. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10668. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10669. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10670. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10671. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10672. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10673. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10674. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10675. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10676. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10677. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10678. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10679. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10680. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10681. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10682. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10683. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10684. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10685. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10686. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10687. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10688. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10689. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10690. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10691. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10692. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10693. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10694. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10695. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10696. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10697. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10698. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10699. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10700. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10701. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10702. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10703. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10704. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10705. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10706. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10707. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10708. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10709. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10710. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10711. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10712. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10713. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10714. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10715. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10716. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10717. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10718. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10719. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10720. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10721. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10722. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10723. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10724. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10725. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10726. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10727. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10728. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10729. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10730. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10731. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10732. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10733. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10734. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10735. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10736. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10737. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10738. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10739. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10740. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10741. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10742. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10743. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10744. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10745. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10746. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10747. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10748. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10749. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10750. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10751. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10752. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10753. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10754. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10755. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10756. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10757. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10758. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10759. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10760. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10761. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10762. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10763. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10764. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10765. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10766. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10767. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10768. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10769. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10770. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10771. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10772. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10773. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10774. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10775. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10776. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10777. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10778. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10779. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10780. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10781. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10782. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10783. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10784. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10785. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10786. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10787. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10788. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10789. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10790. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10791. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10792. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10793. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10794. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10795. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10796. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10797. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10798. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10799. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10800. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10801. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10802. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10803. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10804. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10805. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10806. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10807. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10808. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10809. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10810. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10811. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10812. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10813. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10814. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10815. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10816. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10817. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10818. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10819. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10820. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10821. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10822. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10823. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10824. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10825. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10826. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10827. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10828. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10829. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10830. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10831. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10832. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10833. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10834. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10835. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10836. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10837. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10838. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10839. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10840. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10841. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10842. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10843. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10844. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10845. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10846. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10847. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10848. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10849. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10850. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10851. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10852. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10853. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10854. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10855. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10856. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10857. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10858. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10859. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10860. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10861. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10862. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10863. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10864. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10865. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10866. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10867. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10868. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10869. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10870. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10871. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10872. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10873. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10874. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10875. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10876. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10877. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10878. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10879. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10880. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10881. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10882. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10883. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10884. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10885. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10886. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10887. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10888. 0,
  10889. };
  10890. static float _vq_quantthresh__44c0_sm_p1_0[] = {
  10891. -0.5, 0.5,
  10892. };
  10893. static long _vq_quantmap__44c0_sm_p1_0[] = {
  10894. 1, 0, 2,
  10895. };
  10896. static encode_aux_threshmatch _vq_auxt__44c0_sm_p1_0 = {
  10897. _vq_quantthresh__44c0_sm_p1_0,
  10898. _vq_quantmap__44c0_sm_p1_0,
  10899. 3,
  10900. 3
  10901. };
  10902. static static_codebook _44c0_sm_p1_0 = {
  10903. 8, 6561,
  10904. _vq_lengthlist__44c0_sm_p1_0,
  10905. 1, -535822336, 1611661312, 2, 0,
  10906. _vq_quantlist__44c0_sm_p1_0,
  10907. NULL,
  10908. &_vq_auxt__44c0_sm_p1_0,
  10909. NULL,
  10910. 0
  10911. };
  10912. static long _vq_quantlist__44c0_sm_p2_0[] = {
  10913. 2,
  10914. 1,
  10915. 3,
  10916. 0,
  10917. 4,
  10918. };
  10919. static long _vq_lengthlist__44c0_sm_p2_0[] = {
  10920. 1, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 6, 6, 0, 0, 0,
  10921. 8, 8, 0, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 8,
  10922. 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
  10923. 0, 0, 5, 6, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0,
  10924. 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10925. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10926. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10927. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10928. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10929. 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0, 0, 8, 8, 0, 0,
  10930. 0, 8, 8, 0, 0, 0,10, 9, 0, 0, 0, 0, 0, 0, 0, 6,
  10931. 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 9,
  10932. 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10933. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10934. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10935. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10936. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10937. 0, 0, 0, 6, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8,
  10938. 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0,
  10939. 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0,
  10940. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10941. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10942. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10943. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10944. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10945. 8,10,10, 0, 0, 0,10,10, 0, 0, 0, 9,10, 0, 0, 0,
  10946. 10,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0,10,
  10947. 10, 0, 0, 0,10, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
  10948. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10949. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10950. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10951. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10952. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10953. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10954. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10955. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10956. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10957. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10958. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10959. 0,
  10960. };
  10961. static float _vq_quantthresh__44c0_sm_p2_0[] = {
  10962. -1.5, -0.5, 0.5, 1.5,
  10963. };
  10964. static long _vq_quantmap__44c0_sm_p2_0[] = {
  10965. 3, 1, 0, 2, 4,
  10966. };
  10967. static encode_aux_threshmatch _vq_auxt__44c0_sm_p2_0 = {
  10968. _vq_quantthresh__44c0_sm_p2_0,
  10969. _vq_quantmap__44c0_sm_p2_0,
  10970. 5,
  10971. 5
  10972. };
  10973. static static_codebook _44c0_sm_p2_0 = {
  10974. 4, 625,
  10975. _vq_lengthlist__44c0_sm_p2_0,
  10976. 1, -533725184, 1611661312, 3, 0,
  10977. _vq_quantlist__44c0_sm_p2_0,
  10978. NULL,
  10979. &_vq_auxt__44c0_sm_p2_0,
  10980. NULL,
  10981. 0
  10982. };
  10983. static long _vq_quantlist__44c0_sm_p3_0[] = {
  10984. 2,
  10985. 1,
  10986. 3,
  10987. 0,
  10988. 4,
  10989. };
  10990. static long _vq_lengthlist__44c0_sm_p3_0[] = {
  10991. 2, 3, 4, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10992. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 4, 6, 6, 0, 0,
  10993. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10994. 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10995. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 8, 8,
  10996. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10997. 0, 0, 0, 0, 6, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0,
  10998. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  10999. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11000. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11001. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11002. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11003. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11004. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11005. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11006. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11007. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11008. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11009. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11010. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11011. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11012. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11013. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11014. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11015. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11016. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11017. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11018. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11019. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11020. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11021. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11022. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11023. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11024. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11025. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11026. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11027. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11028. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11029. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11030. 0,
  11031. };
  11032. static float _vq_quantthresh__44c0_sm_p3_0[] = {
  11033. -1.5, -0.5, 0.5, 1.5,
  11034. };
  11035. static long _vq_quantmap__44c0_sm_p3_0[] = {
  11036. 3, 1, 0, 2, 4,
  11037. };
  11038. static encode_aux_threshmatch _vq_auxt__44c0_sm_p3_0 = {
  11039. _vq_quantthresh__44c0_sm_p3_0,
  11040. _vq_quantmap__44c0_sm_p3_0,
  11041. 5,
  11042. 5
  11043. };
  11044. static static_codebook _44c0_sm_p3_0 = {
  11045. 4, 625,
  11046. _vq_lengthlist__44c0_sm_p3_0,
  11047. 1, -533725184, 1611661312, 3, 0,
  11048. _vq_quantlist__44c0_sm_p3_0,
  11049. NULL,
  11050. &_vq_auxt__44c0_sm_p3_0,
  11051. NULL,
  11052. 0
  11053. };
  11054. static long _vq_quantlist__44c0_sm_p4_0[] = {
  11055. 4,
  11056. 3,
  11057. 5,
  11058. 2,
  11059. 6,
  11060. 1,
  11061. 7,
  11062. 0,
  11063. 8,
  11064. };
  11065. static long _vq_lengthlist__44c0_sm_p4_0[] = {
  11066. 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
  11067. 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
  11068. 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
  11069. 7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
  11070. 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11071. 0,
  11072. };
  11073. static float _vq_quantthresh__44c0_sm_p4_0[] = {
  11074. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  11075. };
  11076. static long _vq_quantmap__44c0_sm_p4_0[] = {
  11077. 7, 5, 3, 1, 0, 2, 4, 6,
  11078. 8,
  11079. };
  11080. static encode_aux_threshmatch _vq_auxt__44c0_sm_p4_0 = {
  11081. _vq_quantthresh__44c0_sm_p4_0,
  11082. _vq_quantmap__44c0_sm_p4_0,
  11083. 9,
  11084. 9
  11085. };
  11086. static static_codebook _44c0_sm_p4_0 = {
  11087. 2, 81,
  11088. _vq_lengthlist__44c0_sm_p4_0,
  11089. 1, -531628032, 1611661312, 4, 0,
  11090. _vq_quantlist__44c0_sm_p4_0,
  11091. NULL,
  11092. &_vq_auxt__44c0_sm_p4_0,
  11093. NULL,
  11094. 0
  11095. };
  11096. static long _vq_quantlist__44c0_sm_p5_0[] = {
  11097. 4,
  11098. 3,
  11099. 5,
  11100. 2,
  11101. 6,
  11102. 1,
  11103. 7,
  11104. 0,
  11105. 8,
  11106. };
  11107. static long _vq_lengthlist__44c0_sm_p5_0[] = {
  11108. 1, 3, 3, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7, 8, 8,
  11109. 9, 9, 0, 6, 6, 7, 7, 8, 8,10,10, 0, 7, 7, 8, 8,
  11110. 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
  11111. 8, 8, 9, 9,11,11, 0, 0, 0, 9, 9, 9, 9,11,11, 0,
  11112. 0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
  11113. 11,
  11114. };
  11115. static float _vq_quantthresh__44c0_sm_p5_0[] = {
  11116. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  11117. };
  11118. static long _vq_quantmap__44c0_sm_p5_0[] = {
  11119. 7, 5, 3, 1, 0, 2, 4, 6,
  11120. 8,
  11121. };
  11122. static encode_aux_threshmatch _vq_auxt__44c0_sm_p5_0 = {
  11123. _vq_quantthresh__44c0_sm_p5_0,
  11124. _vq_quantmap__44c0_sm_p5_0,
  11125. 9,
  11126. 9
  11127. };
  11128. static static_codebook _44c0_sm_p5_0 = {
  11129. 2, 81,
  11130. _vq_lengthlist__44c0_sm_p5_0,
  11131. 1, -531628032, 1611661312, 4, 0,
  11132. _vq_quantlist__44c0_sm_p5_0,
  11133. NULL,
  11134. &_vq_auxt__44c0_sm_p5_0,
  11135. NULL,
  11136. 0
  11137. };
  11138. static long _vq_quantlist__44c0_sm_p6_0[] = {
  11139. 8,
  11140. 7,
  11141. 9,
  11142. 6,
  11143. 10,
  11144. 5,
  11145. 11,
  11146. 4,
  11147. 12,
  11148. 3,
  11149. 13,
  11150. 2,
  11151. 14,
  11152. 1,
  11153. 15,
  11154. 0,
  11155. 16,
  11156. };
  11157. static long _vq_lengthlist__44c0_sm_p6_0[] = {
  11158. 1, 4, 4, 6, 6, 8, 8, 9, 9, 8, 8,10,10,10,10,11,
  11159. 11, 0, 6, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
  11160. 12,12, 0, 6, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
  11161. 11,12,12, 0, 7, 7, 8, 8, 8, 8,10,10,10,10,11,11,
  11162. 11,11,12,12, 0, 0, 0, 8, 7, 8, 8,10,10,10,10,11,
  11163. 11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
  11164. 11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
  11165. 10,11,11,12,12,12,13, 0, 0, 0, 9, 9, 9, 9,10,10,
  11166. 10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
  11167. 10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
  11168. 10,10,11,11,12,12,12,13,13,13, 0, 0, 0, 0, 0, 9,
  11169. 9,10, 9,11,11,12,12,13,13,13,13, 0, 0, 0, 0, 0,
  11170. 10,10,10,10,11,11,12,12,13,13,14,14, 0, 0, 0, 0,
  11171. 0, 0, 0,10,10,11,11,12,12,13,13,14,14, 0, 0, 0,
  11172. 0, 0, 0, 0,11,11,11,11,12,12,13,13,14,14, 0, 0,
  11173. 0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,14,14, 0,
  11174. 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
  11175. 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
  11176. 14,
  11177. };
  11178. static float _vq_quantthresh__44c0_sm_p6_0[] = {
  11179. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  11180. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  11181. };
  11182. static long _vq_quantmap__44c0_sm_p6_0[] = {
  11183. 15, 13, 11, 9, 7, 5, 3, 1,
  11184. 0, 2, 4, 6, 8, 10, 12, 14,
  11185. 16,
  11186. };
  11187. static encode_aux_threshmatch _vq_auxt__44c0_sm_p6_0 = {
  11188. _vq_quantthresh__44c0_sm_p6_0,
  11189. _vq_quantmap__44c0_sm_p6_0,
  11190. 17,
  11191. 17
  11192. };
  11193. static static_codebook _44c0_sm_p6_0 = {
  11194. 2, 289,
  11195. _vq_lengthlist__44c0_sm_p6_0,
  11196. 1, -529530880, 1611661312, 5, 0,
  11197. _vq_quantlist__44c0_sm_p6_0,
  11198. NULL,
  11199. &_vq_auxt__44c0_sm_p6_0,
  11200. NULL,
  11201. 0
  11202. };
  11203. static long _vq_quantlist__44c0_sm_p7_0[] = {
  11204. 1,
  11205. 0,
  11206. 2,
  11207. };
  11208. static long _vq_lengthlist__44c0_sm_p7_0[] = {
  11209. 1, 4, 4, 6, 6, 6, 7, 6, 6, 5, 7, 6,10, 9, 9,10,
  11210. 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 6,10,10,10,10,
  11211. 10,11,10,10, 6, 9, 9,10,10,10,11, 9,10, 6, 9, 9,
  11212. 10,10,10,11,10, 9, 7,10,10,11,11,11,11,11,11, 6,
  11213. 9, 9,10, 9,10,11,11,10, 6, 9, 9,10,10,10,11,10,
  11214. 11,
  11215. };
  11216. static float _vq_quantthresh__44c0_sm_p7_0[] = {
  11217. -5.5, 5.5,
  11218. };
  11219. static long _vq_quantmap__44c0_sm_p7_0[] = {
  11220. 1, 0, 2,
  11221. };
  11222. static encode_aux_threshmatch _vq_auxt__44c0_sm_p7_0 = {
  11223. _vq_quantthresh__44c0_sm_p7_0,
  11224. _vq_quantmap__44c0_sm_p7_0,
  11225. 3,
  11226. 3
  11227. };
  11228. static static_codebook _44c0_sm_p7_0 = {
  11229. 4, 81,
  11230. _vq_lengthlist__44c0_sm_p7_0,
  11231. 1, -529137664, 1618345984, 2, 0,
  11232. _vq_quantlist__44c0_sm_p7_0,
  11233. NULL,
  11234. &_vq_auxt__44c0_sm_p7_0,
  11235. NULL,
  11236. 0
  11237. };
  11238. static long _vq_quantlist__44c0_sm_p7_1[] = {
  11239. 5,
  11240. 4,
  11241. 6,
  11242. 3,
  11243. 7,
  11244. 2,
  11245. 8,
  11246. 1,
  11247. 9,
  11248. 0,
  11249. 10,
  11250. };
  11251. static long _vq_lengthlist__44c0_sm_p7_1[] = {
  11252. 2, 4, 4, 5, 5, 7, 7, 7, 7, 7, 7, 9, 5, 5, 7, 7,
  11253. 7, 7, 8, 8, 8, 8, 9, 5, 5, 7, 7, 7, 7, 8, 8, 8,
  11254. 8,10, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,10,10,10, 7,
  11255. 7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
  11256. 8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
  11257. 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
  11258. 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
  11259. 10,10,10, 8, 8, 8, 8, 8, 8,
  11260. };
  11261. static float _vq_quantthresh__44c0_sm_p7_1[] = {
  11262. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  11263. 3.5, 4.5,
  11264. };
  11265. static long _vq_quantmap__44c0_sm_p7_1[] = {
  11266. 9, 7, 5, 3, 1, 0, 2, 4,
  11267. 6, 8, 10,
  11268. };
  11269. static encode_aux_threshmatch _vq_auxt__44c0_sm_p7_1 = {
  11270. _vq_quantthresh__44c0_sm_p7_1,
  11271. _vq_quantmap__44c0_sm_p7_1,
  11272. 11,
  11273. 11
  11274. };
  11275. static static_codebook _44c0_sm_p7_1 = {
  11276. 2, 121,
  11277. _vq_lengthlist__44c0_sm_p7_1,
  11278. 1, -531365888, 1611661312, 4, 0,
  11279. _vq_quantlist__44c0_sm_p7_1,
  11280. NULL,
  11281. &_vq_auxt__44c0_sm_p7_1,
  11282. NULL,
  11283. 0
  11284. };
  11285. static long _vq_quantlist__44c0_sm_p8_0[] = {
  11286. 6,
  11287. 5,
  11288. 7,
  11289. 4,
  11290. 8,
  11291. 3,
  11292. 9,
  11293. 2,
  11294. 10,
  11295. 1,
  11296. 11,
  11297. 0,
  11298. 12,
  11299. };
  11300. static long _vq_lengthlist__44c0_sm_p8_0[] = {
  11301. 1, 4, 4, 6, 6, 7, 7, 7, 7, 9, 9,10,10, 7, 5, 5,
  11302. 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 6, 7, 7, 8,
  11303. 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
  11304. 10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
  11305. 11, 0,12,12, 9, 9, 9, 9,10,10,11,11,12,11, 0,12,
  11306. 12, 9, 9, 9, 9,10,10,11,11,12,11, 0, 0, 0, 9, 9,
  11307. 9,10,11,11,11,11,12,12, 0, 0, 0,10,10, 9, 9,11,
  11308. 11,11,11,12,12, 0, 0, 0,13,13,10,10,11,11,12,12,
  11309. 13,13, 0, 0, 0,14,14,10,10,11,10,12,12,13,13, 0,
  11310. 0, 0, 0, 0,12,12,11,11,12,12,13,13, 0, 0, 0, 0,
  11311. 0,12,12,11,10,12,11,14,14,
  11312. };
  11313. static float _vq_quantthresh__44c0_sm_p8_0[] = {
  11314. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  11315. 12.5, 17.5, 22.5, 27.5,
  11316. };
  11317. static long _vq_quantmap__44c0_sm_p8_0[] = {
  11318. 11, 9, 7, 5, 3, 1, 0, 2,
  11319. 4, 6, 8, 10, 12,
  11320. };
  11321. static encode_aux_threshmatch _vq_auxt__44c0_sm_p8_0 = {
  11322. _vq_quantthresh__44c0_sm_p8_0,
  11323. _vq_quantmap__44c0_sm_p8_0,
  11324. 13,
  11325. 13
  11326. };
  11327. static static_codebook _44c0_sm_p8_0 = {
  11328. 2, 169,
  11329. _vq_lengthlist__44c0_sm_p8_0,
  11330. 1, -526516224, 1616117760, 4, 0,
  11331. _vq_quantlist__44c0_sm_p8_0,
  11332. NULL,
  11333. &_vq_auxt__44c0_sm_p8_0,
  11334. NULL,
  11335. 0
  11336. };
  11337. static long _vq_quantlist__44c0_sm_p8_1[] = {
  11338. 2,
  11339. 1,
  11340. 3,
  11341. 0,
  11342. 4,
  11343. };
  11344. static long _vq_lengthlist__44c0_sm_p8_1[] = {
  11345. 2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
  11346. 5, 5, 5, 5, 6, 6, 6, 5, 5,
  11347. };
  11348. static float _vq_quantthresh__44c0_sm_p8_1[] = {
  11349. -1.5, -0.5, 0.5, 1.5,
  11350. };
  11351. static long _vq_quantmap__44c0_sm_p8_1[] = {
  11352. 3, 1, 0, 2, 4,
  11353. };
  11354. static encode_aux_threshmatch _vq_auxt__44c0_sm_p8_1 = {
  11355. _vq_quantthresh__44c0_sm_p8_1,
  11356. _vq_quantmap__44c0_sm_p8_1,
  11357. 5,
  11358. 5
  11359. };
  11360. static static_codebook _44c0_sm_p8_1 = {
  11361. 2, 25,
  11362. _vq_lengthlist__44c0_sm_p8_1,
  11363. 1, -533725184, 1611661312, 3, 0,
  11364. _vq_quantlist__44c0_sm_p8_1,
  11365. NULL,
  11366. &_vq_auxt__44c0_sm_p8_1,
  11367. NULL,
  11368. 0
  11369. };
  11370. static long _vq_quantlist__44c0_sm_p9_0[] = {
  11371. 4,
  11372. 3,
  11373. 5,
  11374. 2,
  11375. 6,
  11376. 1,
  11377. 7,
  11378. 0,
  11379. 8,
  11380. };
  11381. static long _vq_lengthlist__44c0_sm_p9_0[] = {
  11382. 1, 3, 4,11,11,11,11,11,11, 4, 6, 6,10,10,10,10,
  11383. 10,10, 4, 6, 5,10,10,10,10,10,10,10, 6, 7,10, 9,
  11384. 10,10,10,10,10, 7, 9,10, 9,10,10,10,10,10, 9,10,
  11385. 7, 9,10,10,10,10,10,10,10, 9,10,10,10,10,10,10,
  11386. 10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,
  11387. 10,
  11388. };
  11389. static float _vq_quantthresh__44c0_sm_p9_0[] = {
  11390. -773.5, -552.5, -331.5, -110.5, 110.5, 331.5, 552.5, 773.5,
  11391. };
  11392. static long _vq_quantmap__44c0_sm_p9_0[] = {
  11393. 7, 5, 3, 1, 0, 2, 4, 6,
  11394. 8,
  11395. };
  11396. static encode_aux_threshmatch _vq_auxt__44c0_sm_p9_0 = {
  11397. _vq_quantthresh__44c0_sm_p9_0,
  11398. _vq_quantmap__44c0_sm_p9_0,
  11399. 9,
  11400. 9
  11401. };
  11402. static static_codebook _44c0_sm_p9_0 = {
  11403. 2, 81,
  11404. _vq_lengthlist__44c0_sm_p9_0,
  11405. 1, -516186112, 1627103232, 4, 0,
  11406. _vq_quantlist__44c0_sm_p9_0,
  11407. NULL,
  11408. &_vq_auxt__44c0_sm_p9_0,
  11409. NULL,
  11410. 0
  11411. };
  11412. static long _vq_quantlist__44c0_sm_p9_1[] = {
  11413. 6,
  11414. 5,
  11415. 7,
  11416. 4,
  11417. 8,
  11418. 3,
  11419. 9,
  11420. 2,
  11421. 10,
  11422. 1,
  11423. 11,
  11424. 0,
  11425. 12,
  11426. };
  11427. static long _vq_lengthlist__44c0_sm_p9_1[] = {
  11428. 1, 4, 4, 6, 6, 7, 7, 9, 9,12,12,13,13, 6, 5, 5,
  11429. 7, 7, 8, 8,10,10,12,12,14,13, 6, 5, 5, 6, 7, 8,
  11430. 8,10, 9,11,12,13,12,18, 7, 7, 7, 7, 9, 9,11,11,
  11431. 14,14,14,13,17, 7, 7, 8, 7, 9, 9,10,10,12,11,13,
  11432. 12,18,10,10, 8, 8,10,10,12,11,13,14,16,15,17,11,
  11433. 11, 8, 8,11,11,11,12,13,13,13,15,18,18,18,10,11,
  11434. 10,10,12,13,14,13,17,14,17,17,17,10,10,11,11,14,
  11435. 14,14,13,14,14,18,18,18,17,15,11,12,12,13,15,15,
  11436. 16,17,18,16,18,14,15,11,11,14,13,14,14,16,17,18,
  11437. 17,17,17,18,14,13,13,12,17,15,17,16,18,17,18,18,
  11438. 18,12,13,12,13,16,14,18,18,
  11439. };
  11440. static float _vq_quantthresh__44c0_sm_p9_1[] = {
  11441. -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5,
  11442. 42.5, 59.5, 76.5, 93.5,
  11443. };
  11444. static long _vq_quantmap__44c0_sm_p9_1[] = {
  11445. 11, 9, 7, 5, 3, 1, 0, 2,
  11446. 4, 6, 8, 10, 12,
  11447. };
  11448. static encode_aux_threshmatch _vq_auxt__44c0_sm_p9_1 = {
  11449. _vq_quantthresh__44c0_sm_p9_1,
  11450. _vq_quantmap__44c0_sm_p9_1,
  11451. 13,
  11452. 13
  11453. };
  11454. static static_codebook _44c0_sm_p9_1 = {
  11455. 2, 169,
  11456. _vq_lengthlist__44c0_sm_p9_1,
  11457. 1, -522616832, 1620115456, 4, 0,
  11458. _vq_quantlist__44c0_sm_p9_1,
  11459. NULL,
  11460. &_vq_auxt__44c0_sm_p9_1,
  11461. NULL,
  11462. 0
  11463. };
  11464. static long _vq_quantlist__44c0_sm_p9_2[] = {
  11465. 8,
  11466. 7,
  11467. 9,
  11468. 6,
  11469. 10,
  11470. 5,
  11471. 11,
  11472. 4,
  11473. 12,
  11474. 3,
  11475. 13,
  11476. 2,
  11477. 14,
  11478. 1,
  11479. 15,
  11480. 0,
  11481. 16,
  11482. };
  11483. static long _vq_lengthlist__44c0_sm_p9_2[] = {
  11484. 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
  11485. 9,10, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9, 9,
  11486. 9, 9,10, 6, 6, 7, 7, 7, 7, 8, 8, 9, 8, 9, 9, 9,
  11487. 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
  11488. 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9,
  11489. 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9,
  11490. 9, 9, 9, 9, 9, 9,11,10,10, 8, 8, 8, 8, 9, 9, 9,
  11491. 9, 9, 9, 9, 9,10, 9,10,11,10, 9, 8, 9, 9, 9, 9,
  11492. 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11,11, 9, 8, 9,
  11493. 9, 9, 9, 9, 9, 9, 9,10,10,10,11,10,11,11, 9, 9,
  11494. 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,11,11, 9,
  11495. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,10,11,11,
  11496. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,
  11497. 11,11,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,11,10,
  11498. 11,11,10,10, 9,10,10,10, 9, 9, 9, 9, 9, 9,10,10,
  11499. 10,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,
  11500. 11,10,11,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
  11501. 10,10,10,11,11,11,10,11,11, 9, 9, 9, 9, 9, 9, 9,
  11502. 9,
  11503. };
  11504. static float _vq_quantthresh__44c0_sm_p9_2[] = {
  11505. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  11506. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  11507. };
  11508. static long _vq_quantmap__44c0_sm_p9_2[] = {
  11509. 15, 13, 11, 9, 7, 5, 3, 1,
  11510. 0, 2, 4, 6, 8, 10, 12, 14,
  11511. 16,
  11512. };
  11513. static encode_aux_threshmatch _vq_auxt__44c0_sm_p9_2 = {
  11514. _vq_quantthresh__44c0_sm_p9_2,
  11515. _vq_quantmap__44c0_sm_p9_2,
  11516. 17,
  11517. 17
  11518. };
  11519. static static_codebook _44c0_sm_p9_2 = {
  11520. 2, 289,
  11521. _vq_lengthlist__44c0_sm_p9_2,
  11522. 1, -529530880, 1611661312, 5, 0,
  11523. _vq_quantlist__44c0_sm_p9_2,
  11524. NULL,
  11525. &_vq_auxt__44c0_sm_p9_2,
  11526. NULL,
  11527. 0
  11528. };
  11529. static long _huff_lengthlist__44c0_sm_short[] = {
  11530. 5, 7,12,12,13,13,13,15,16,18, 4, 2,11, 5, 9, 7,
  11531. 9,12,13,14,13, 7, 8, 9, 8, 9,11,13,19,19, 9, 4,
  11532. 12, 5,10, 7, 9,12,15,14,11, 6, 7, 7, 5, 6, 8,11,
  11533. 15,17,10, 5, 8, 6, 6, 5, 6, 9,14,14,10, 5, 9, 7,
  11534. 7, 6, 6, 9,12,14,12, 6,10, 7, 7, 7, 8, 9,13,14,
  11535. 14, 7, 9, 7, 5, 5, 6, 9,11,13,14, 9,10, 9, 6, 6,
  11536. 7, 8,10,13,
  11537. };
  11538. static static_codebook _huff_book__44c0_sm_short = {
  11539. 2, 100,
  11540. _huff_lengthlist__44c0_sm_short,
  11541. 0, 0, 0, 0, 0,
  11542. NULL,
  11543. NULL,
  11544. NULL,
  11545. NULL,
  11546. 0
  11547. };
  11548. static long _huff_lengthlist__44c1_s_long[] = {
  11549. 3, 4,19, 9,10, 9, 9,10,11,12, 4, 2,19, 5, 6, 6,
  11550. 8,10,12,11,19,19,19,19,19,19,19,19,18,18, 8, 4,
  11551. 18, 6, 8, 7,10,13,14,13,10, 5,18, 7, 4, 6, 7,10,
  11552. 12,13, 9, 6,18, 7, 5, 6, 7,10,12,13, 9, 7,18, 9,
  11553. 7, 6, 6, 7,10,13, 9, 9,18,12, 9, 8, 6, 6, 9,12,
  11554. 10,12,18,15,12,11, 9, 8, 8,11,11,14,18,17,15,13,
  11555. 12, 9,10,12,
  11556. };
  11557. static static_codebook _huff_book__44c1_s_long = {
  11558. 2, 100,
  11559. _huff_lengthlist__44c1_s_long,
  11560. 0, 0, 0, 0, 0,
  11561. NULL,
  11562. NULL,
  11563. NULL,
  11564. NULL,
  11565. 0
  11566. };
  11567. static long _vq_quantlist__44c1_s_p1_0[] = {
  11568. 1,
  11569. 0,
  11570. 2,
  11571. };
  11572. static long _vq_lengthlist__44c1_s_p1_0[] = {
  11573. 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 0,
  11574. 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11575. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11576. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11577. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11578. 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
  11579. 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11580. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11581. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11582. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11583. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
  11584. 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11585. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11586. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11587. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11588. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11589. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11590. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11591. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11592. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11593. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11594. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11595. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11596. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11597. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11598. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11599. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11600. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11601. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11602. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11603. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11604. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11605. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11606. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11607. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11608. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11609. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11610. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11611. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11612. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11613. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11614. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11615. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11616. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11617. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11618. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
  11619. 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
  11620. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11621. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11622. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11623. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
  11624. 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
  11625. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11626. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11627. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11628. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
  11629. 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
  11630. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11631. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11632. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11633. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11634. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11635. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11636. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11637. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11638. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11639. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11640. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11641. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11642. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11643. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11644. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11645. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11646. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11647. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11648. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11649. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11650. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11651. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11652. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11653. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11654. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11655. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11656. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11657. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11658. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11659. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11660. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11661. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11662. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11663. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11664. 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
  11665. 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11666. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11667. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11668. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11669. 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
  11670. 0, 0, 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
  11671. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11672. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11673. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11674. 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9,
  11675. 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0,
  11676. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11677. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11678. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11679. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11680. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11681. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11682. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11683. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11684. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11685. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11686. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11687. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11688. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11689. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11690. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11691. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11692. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11693. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11694. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11695. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11696. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11697. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11698. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11699. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11700. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11701. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11702. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11703. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11704. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11705. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11706. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11707. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11708. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11709. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11710. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11711. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11712. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11713. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11714. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11715. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11716. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11717. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11718. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11719. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11720. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11721. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11722. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11723. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11724. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11725. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11726. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11727. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11728. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11729. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11730. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11731. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11732. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11733. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11734. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11735. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11736. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11737. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11738. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11739. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11740. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11741. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11742. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11743. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11744. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11745. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11746. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11747. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11748. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11749. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11750. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11751. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11752. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11753. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11754. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11755. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11756. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11757. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11758. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11759. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11760. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11761. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11762. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11763. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11764. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11765. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11766. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11767. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11768. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11769. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11770. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11771. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11772. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11773. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11774. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11775. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11776. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11777. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11778. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11779. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11780. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11781. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11782. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11783. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11784. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11785. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11786. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11787. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11788. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11789. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11790. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11791. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11792. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11793. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11794. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11795. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11796. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11797. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11798. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11799. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11800. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11801. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11802. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11803. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11804. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11805. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11806. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11807. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11808. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11809. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11810. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11811. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11812. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11813. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11814. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11815. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11816. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11817. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11818. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11819. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11820. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11821. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11822. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11823. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11824. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11825. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11826. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11827. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11828. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11829. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11830. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11831. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11832. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11833. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11834. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11835. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11836. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11837. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11838. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11839. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11840. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11841. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11842. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11843. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11844. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11845. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11846. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11847. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11848. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11849. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11850. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11851. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11852. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11853. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11854. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11855. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11856. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11857. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11858. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11859. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11860. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11861. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11862. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11863. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11864. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11865. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11866. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11867. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11868. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11869. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11870. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11871. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11872. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11873. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11874. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11875. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11876. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11877. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11878. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11879. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11880. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11881. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11882. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11883. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11884. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11885. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11886. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11887. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11888. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11889. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11890. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11891. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11892. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11893. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11894. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11895. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11896. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11897. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11898. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11899. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11900. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11901. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11902. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11903. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11904. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11905. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11906. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11907. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11908. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11909. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11910. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11911. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11912. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11913. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11914. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11915. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11916. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11917. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11918. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11919. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11920. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11921. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11922. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11923. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11924. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11925. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11926. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11927. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11928. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11929. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11930. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11931. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11932. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11933. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11934. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11935. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11936. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11937. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11938. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11939. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11940. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11941. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11942. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11943. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11944. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11945. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11946. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11947. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11948. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11949. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11950. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11951. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11952. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11953. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11954. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11955. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11956. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11957. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11958. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11959. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11960. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11961. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11962. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11963. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11964. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11965. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11966. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11967. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11968. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11969. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11970. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11971. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11972. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11973. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11974. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11975. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11976. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11977. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11978. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11979. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11980. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11981. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11982. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  11983. 0,
  11984. };
  11985. static float _vq_quantthresh__44c1_s_p1_0[] = {
  11986. -0.5, 0.5,
  11987. };
  11988. static long _vq_quantmap__44c1_s_p1_0[] = {
  11989. 1, 0, 2,
  11990. };
  11991. static encode_aux_threshmatch _vq_auxt__44c1_s_p1_0 = {
  11992. _vq_quantthresh__44c1_s_p1_0,
  11993. _vq_quantmap__44c1_s_p1_0,
  11994. 3,
  11995. 3
  11996. };
  11997. static static_codebook _44c1_s_p1_0 = {
  11998. 8, 6561,
  11999. _vq_lengthlist__44c1_s_p1_0,
  12000. 1, -535822336, 1611661312, 2, 0,
  12001. _vq_quantlist__44c1_s_p1_0,
  12002. NULL,
  12003. &_vq_auxt__44c1_s_p1_0,
  12004. NULL,
  12005. 0
  12006. };
  12007. static long _vq_quantlist__44c1_s_p2_0[] = {
  12008. 2,
  12009. 1,
  12010. 3,
  12011. 0,
  12012. 4,
  12013. };
  12014. static long _vq_lengthlist__44c1_s_p2_0[] = {
  12015. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12016. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12017. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12018. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12019. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12020. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12021. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12022. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12023. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12024. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12025. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12026. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12027. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12028. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12029. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12030. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12031. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12032. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12033. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12034. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12035. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12036. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12037. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12038. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12039. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12040. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12041. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12042. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12043. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12044. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12045. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12046. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12047. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12048. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12049. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12050. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12051. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12052. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12053. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12054. 0,
  12055. };
  12056. static float _vq_quantthresh__44c1_s_p2_0[] = {
  12057. -1.5, -0.5, 0.5, 1.5,
  12058. };
  12059. static long _vq_quantmap__44c1_s_p2_0[] = {
  12060. 3, 1, 0, 2, 4,
  12061. };
  12062. static encode_aux_threshmatch _vq_auxt__44c1_s_p2_0 = {
  12063. _vq_quantthresh__44c1_s_p2_0,
  12064. _vq_quantmap__44c1_s_p2_0,
  12065. 5,
  12066. 5
  12067. };
  12068. static static_codebook _44c1_s_p2_0 = {
  12069. 4, 625,
  12070. _vq_lengthlist__44c1_s_p2_0,
  12071. 1, -533725184, 1611661312, 3, 0,
  12072. _vq_quantlist__44c1_s_p2_0,
  12073. NULL,
  12074. &_vq_auxt__44c1_s_p2_0,
  12075. NULL,
  12076. 0
  12077. };
  12078. static long _vq_quantlist__44c1_s_p3_0[] = {
  12079. 2,
  12080. 1,
  12081. 3,
  12082. 0,
  12083. 4,
  12084. };
  12085. static long _vq_lengthlist__44c1_s_p3_0[] = {
  12086. 2, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12087. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 4, 6, 6, 0, 0,
  12088. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12089. 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12090. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
  12091. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12092. 0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  12093. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12094. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12095. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12096. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12097. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12098. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12099. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12100. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12101. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12102. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12103. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12104. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12105. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12106. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12107. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12108. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12109. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12110. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12111. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12112. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12113. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12114. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12115. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12116. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12117. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12118. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12119. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12120. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12121. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12122. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12123. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12124. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12125. 0,
  12126. };
  12127. static float _vq_quantthresh__44c1_s_p3_0[] = {
  12128. -1.5, -0.5, 0.5, 1.5,
  12129. };
  12130. static long _vq_quantmap__44c1_s_p3_0[] = {
  12131. 3, 1, 0, 2, 4,
  12132. };
  12133. static encode_aux_threshmatch _vq_auxt__44c1_s_p3_0 = {
  12134. _vq_quantthresh__44c1_s_p3_0,
  12135. _vq_quantmap__44c1_s_p3_0,
  12136. 5,
  12137. 5
  12138. };
  12139. static static_codebook _44c1_s_p3_0 = {
  12140. 4, 625,
  12141. _vq_lengthlist__44c1_s_p3_0,
  12142. 1, -533725184, 1611661312, 3, 0,
  12143. _vq_quantlist__44c1_s_p3_0,
  12144. NULL,
  12145. &_vq_auxt__44c1_s_p3_0,
  12146. NULL,
  12147. 0
  12148. };
  12149. static long _vq_quantlist__44c1_s_p4_0[] = {
  12150. 4,
  12151. 3,
  12152. 5,
  12153. 2,
  12154. 6,
  12155. 1,
  12156. 7,
  12157. 0,
  12158. 8,
  12159. };
  12160. static long _vq_lengthlist__44c1_s_p4_0[] = {
  12161. 1, 3, 2, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
  12162. 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
  12163. 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  12164. 8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
  12165. 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12166. 0,
  12167. };
  12168. static float _vq_quantthresh__44c1_s_p4_0[] = {
  12169. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  12170. };
  12171. static long _vq_quantmap__44c1_s_p4_0[] = {
  12172. 7, 5, 3, 1, 0, 2, 4, 6,
  12173. 8,
  12174. };
  12175. static encode_aux_threshmatch _vq_auxt__44c1_s_p4_0 = {
  12176. _vq_quantthresh__44c1_s_p4_0,
  12177. _vq_quantmap__44c1_s_p4_0,
  12178. 9,
  12179. 9
  12180. };
  12181. static static_codebook _44c1_s_p4_0 = {
  12182. 2, 81,
  12183. _vq_lengthlist__44c1_s_p4_0,
  12184. 1, -531628032, 1611661312, 4, 0,
  12185. _vq_quantlist__44c1_s_p4_0,
  12186. NULL,
  12187. &_vq_auxt__44c1_s_p4_0,
  12188. NULL,
  12189. 0
  12190. };
  12191. static long _vq_quantlist__44c1_s_p5_0[] = {
  12192. 4,
  12193. 3,
  12194. 5,
  12195. 2,
  12196. 6,
  12197. 1,
  12198. 7,
  12199. 0,
  12200. 8,
  12201. };
  12202. static long _vq_lengthlist__44c1_s_p5_0[] = {
  12203. 1, 3, 3, 5, 5, 6, 6, 8, 8, 0, 0, 0, 7, 7, 8, 7,
  12204. 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, 0, 7, 7,
  12205. 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
  12206. 8, 8, 9, 9,10,10, 0, 0, 0, 8, 8, 9, 9,10,10, 0,
  12207. 0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
  12208. 11,
  12209. };
  12210. static float _vq_quantthresh__44c1_s_p5_0[] = {
  12211. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  12212. };
  12213. static long _vq_quantmap__44c1_s_p5_0[] = {
  12214. 7, 5, 3, 1, 0, 2, 4, 6,
  12215. 8,
  12216. };
  12217. static encode_aux_threshmatch _vq_auxt__44c1_s_p5_0 = {
  12218. _vq_quantthresh__44c1_s_p5_0,
  12219. _vq_quantmap__44c1_s_p5_0,
  12220. 9,
  12221. 9
  12222. };
  12223. static static_codebook _44c1_s_p5_0 = {
  12224. 2, 81,
  12225. _vq_lengthlist__44c1_s_p5_0,
  12226. 1, -531628032, 1611661312, 4, 0,
  12227. _vq_quantlist__44c1_s_p5_0,
  12228. NULL,
  12229. &_vq_auxt__44c1_s_p5_0,
  12230. NULL,
  12231. 0
  12232. };
  12233. static long _vq_quantlist__44c1_s_p6_0[] = {
  12234. 8,
  12235. 7,
  12236. 9,
  12237. 6,
  12238. 10,
  12239. 5,
  12240. 11,
  12241. 4,
  12242. 12,
  12243. 3,
  12244. 13,
  12245. 2,
  12246. 14,
  12247. 1,
  12248. 15,
  12249. 0,
  12250. 16,
  12251. };
  12252. static long _vq_lengthlist__44c1_s_p6_0[] = {
  12253. 1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
  12254. 11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
  12255. 11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
  12256. 11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
  12257. 11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
  12258. 10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
  12259. 10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9,10,10,
  12260. 10,11,11,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
  12261. 10,10,11,11,12,12,13,12, 0, 0, 0, 0, 0, 9, 9,10,
  12262. 10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
  12263. 10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
  12264. 9,10, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
  12265. 10,10,10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0,
  12266. 0, 0, 0,10,10,11,11,11,11,12,12,13,13, 0, 0, 0,
  12267. 0, 0, 0, 0,11,11,11,11,12,12,13,12,13,13, 0, 0,
  12268. 0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0,
  12269. 0, 0, 0, 0, 0, 0,11,11,11,12,12,12,13,13,14,14,
  12270. 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,12,12,13,13,14,
  12271. 14,
  12272. };
  12273. static float _vq_quantthresh__44c1_s_p6_0[] = {
  12274. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  12275. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  12276. };
  12277. static long _vq_quantmap__44c1_s_p6_0[] = {
  12278. 15, 13, 11, 9, 7, 5, 3, 1,
  12279. 0, 2, 4, 6, 8, 10, 12, 14,
  12280. 16,
  12281. };
  12282. static encode_aux_threshmatch _vq_auxt__44c1_s_p6_0 = {
  12283. _vq_quantthresh__44c1_s_p6_0,
  12284. _vq_quantmap__44c1_s_p6_0,
  12285. 17,
  12286. 17
  12287. };
  12288. static static_codebook _44c1_s_p6_0 = {
  12289. 2, 289,
  12290. _vq_lengthlist__44c1_s_p6_0,
  12291. 1, -529530880, 1611661312, 5, 0,
  12292. _vq_quantlist__44c1_s_p6_0,
  12293. NULL,
  12294. &_vq_auxt__44c1_s_p6_0,
  12295. NULL,
  12296. 0
  12297. };
  12298. static long _vq_quantlist__44c1_s_p7_0[] = {
  12299. 1,
  12300. 0,
  12301. 2,
  12302. };
  12303. static long _vq_lengthlist__44c1_s_p7_0[] = {
  12304. 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
  12305. 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
  12306. 10,11,10,10, 6, 9, 9,10,11,10,10, 9, 9, 6, 9, 9,
  12307. 10,10,10,10, 9, 9, 7,10,10,11,10,10,11,11,11, 6,
  12308. 9, 9,10, 9, 9,11,10,10, 6, 9, 9,10, 9, 9,11,10,
  12309. 10,
  12310. };
  12311. static float _vq_quantthresh__44c1_s_p7_0[] = {
  12312. -5.5, 5.5,
  12313. };
  12314. static long _vq_quantmap__44c1_s_p7_0[] = {
  12315. 1, 0, 2,
  12316. };
  12317. static encode_aux_threshmatch _vq_auxt__44c1_s_p7_0 = {
  12318. _vq_quantthresh__44c1_s_p7_0,
  12319. _vq_quantmap__44c1_s_p7_0,
  12320. 3,
  12321. 3
  12322. };
  12323. static static_codebook _44c1_s_p7_0 = {
  12324. 4, 81,
  12325. _vq_lengthlist__44c1_s_p7_0,
  12326. 1, -529137664, 1618345984, 2, 0,
  12327. _vq_quantlist__44c1_s_p7_0,
  12328. NULL,
  12329. &_vq_auxt__44c1_s_p7_0,
  12330. NULL,
  12331. 0
  12332. };
  12333. static long _vq_quantlist__44c1_s_p7_1[] = {
  12334. 5,
  12335. 4,
  12336. 6,
  12337. 3,
  12338. 7,
  12339. 2,
  12340. 8,
  12341. 1,
  12342. 9,
  12343. 0,
  12344. 10,
  12345. };
  12346. static long _vq_lengthlist__44c1_s_p7_1[] = {
  12347. 2, 3, 3, 6, 6, 7, 7, 7, 7, 8, 8,10,10,10, 6, 6,
  12348. 7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
  12349. 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
  12350. 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
  12351. 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
  12352. 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
  12353. 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
  12354. 10,10,10, 8, 8, 8, 8, 8, 8,
  12355. };
  12356. static float _vq_quantthresh__44c1_s_p7_1[] = {
  12357. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  12358. 3.5, 4.5,
  12359. };
  12360. static long _vq_quantmap__44c1_s_p7_1[] = {
  12361. 9, 7, 5, 3, 1, 0, 2, 4,
  12362. 6, 8, 10,
  12363. };
  12364. static encode_aux_threshmatch _vq_auxt__44c1_s_p7_1 = {
  12365. _vq_quantthresh__44c1_s_p7_1,
  12366. _vq_quantmap__44c1_s_p7_1,
  12367. 11,
  12368. 11
  12369. };
  12370. static static_codebook _44c1_s_p7_1 = {
  12371. 2, 121,
  12372. _vq_lengthlist__44c1_s_p7_1,
  12373. 1, -531365888, 1611661312, 4, 0,
  12374. _vq_quantlist__44c1_s_p7_1,
  12375. NULL,
  12376. &_vq_auxt__44c1_s_p7_1,
  12377. NULL,
  12378. 0
  12379. };
  12380. static long _vq_quantlist__44c1_s_p8_0[] = {
  12381. 6,
  12382. 5,
  12383. 7,
  12384. 4,
  12385. 8,
  12386. 3,
  12387. 9,
  12388. 2,
  12389. 10,
  12390. 1,
  12391. 11,
  12392. 0,
  12393. 12,
  12394. };
  12395. static long _vq_lengthlist__44c1_s_p8_0[] = {
  12396. 1, 4, 4, 6, 6, 7, 7, 7, 7, 9, 8,10,10, 6, 5, 5,
  12397. 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 6, 6, 7, 7, 8,
  12398. 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
  12399. 10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
  12400. 11, 0,12,12, 9, 9, 9, 9,10,10,10,11,12,11, 0,12,
  12401. 13, 9, 8, 9, 9,10,10,11,11,11,11, 0, 0, 0, 9, 9,
  12402. 9, 9,10,10,11,11,12,12, 0, 0, 0,10,10, 9, 9,10,
  12403. 10,11,11,12,12, 0, 0, 0,13,14,10,10,11,11,12,12,
  12404. 12,13, 0, 0, 0,14,14,10,10,11,10,12,12,13,13, 0,
  12405. 0, 0, 0, 0,12,11,11,11,12,12,13,13, 0, 0, 0, 0,
  12406. 0,12,12,11,10,12,11,14,13,
  12407. };
  12408. static float _vq_quantthresh__44c1_s_p8_0[] = {
  12409. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  12410. 12.5, 17.5, 22.5, 27.5,
  12411. };
  12412. static long _vq_quantmap__44c1_s_p8_0[] = {
  12413. 11, 9, 7, 5, 3, 1, 0, 2,
  12414. 4, 6, 8, 10, 12,
  12415. };
  12416. static encode_aux_threshmatch _vq_auxt__44c1_s_p8_0 = {
  12417. _vq_quantthresh__44c1_s_p8_0,
  12418. _vq_quantmap__44c1_s_p8_0,
  12419. 13,
  12420. 13
  12421. };
  12422. static static_codebook _44c1_s_p8_0 = {
  12423. 2, 169,
  12424. _vq_lengthlist__44c1_s_p8_0,
  12425. 1, -526516224, 1616117760, 4, 0,
  12426. _vq_quantlist__44c1_s_p8_0,
  12427. NULL,
  12428. &_vq_auxt__44c1_s_p8_0,
  12429. NULL,
  12430. 0
  12431. };
  12432. static long _vq_quantlist__44c1_s_p8_1[] = {
  12433. 2,
  12434. 1,
  12435. 3,
  12436. 0,
  12437. 4,
  12438. };
  12439. static long _vq_lengthlist__44c1_s_p8_1[] = {
  12440. 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
  12441. 6, 6, 5, 5, 6, 6, 6, 5, 5,
  12442. };
  12443. static float _vq_quantthresh__44c1_s_p8_1[] = {
  12444. -1.5, -0.5, 0.5, 1.5,
  12445. };
  12446. static long _vq_quantmap__44c1_s_p8_1[] = {
  12447. 3, 1, 0, 2, 4,
  12448. };
  12449. static encode_aux_threshmatch _vq_auxt__44c1_s_p8_1 = {
  12450. _vq_quantthresh__44c1_s_p8_1,
  12451. _vq_quantmap__44c1_s_p8_1,
  12452. 5,
  12453. 5
  12454. };
  12455. static static_codebook _44c1_s_p8_1 = {
  12456. 2, 25,
  12457. _vq_lengthlist__44c1_s_p8_1,
  12458. 1, -533725184, 1611661312, 3, 0,
  12459. _vq_quantlist__44c1_s_p8_1,
  12460. NULL,
  12461. &_vq_auxt__44c1_s_p8_1,
  12462. NULL,
  12463. 0
  12464. };
  12465. static long _vq_quantlist__44c1_s_p9_0[] = {
  12466. 6,
  12467. 5,
  12468. 7,
  12469. 4,
  12470. 8,
  12471. 3,
  12472. 9,
  12473. 2,
  12474. 10,
  12475. 1,
  12476. 11,
  12477. 0,
  12478. 12,
  12479. };
  12480. static long _vq_lengthlist__44c1_s_p9_0[] = {
  12481. 1, 6, 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 7, 6,
  12482. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 6, 6, 9, 9, 9,
  12483. 9, 9, 9, 9, 9, 9, 9, 9, 7, 9, 9, 9, 9, 9, 9, 9,
  12484. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  12485. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  12486. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  12487. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  12488. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  12489. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  12490. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  12491. 9, 9, 9, 9, 9, 9, 9, 9, 8,
  12492. };
  12493. static float _vq_quantthresh__44c1_s_p9_0[] = {
  12494. -1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, 331.5,
  12495. 552.5, 773.5, 994.5, 1215.5,
  12496. };
  12497. static long _vq_quantmap__44c1_s_p9_0[] = {
  12498. 11, 9, 7, 5, 3, 1, 0, 2,
  12499. 4, 6, 8, 10, 12,
  12500. };
  12501. static encode_aux_threshmatch _vq_auxt__44c1_s_p9_0 = {
  12502. _vq_quantthresh__44c1_s_p9_0,
  12503. _vq_quantmap__44c1_s_p9_0,
  12504. 13,
  12505. 13
  12506. };
  12507. static static_codebook _44c1_s_p9_0 = {
  12508. 2, 169,
  12509. _vq_lengthlist__44c1_s_p9_0,
  12510. 1, -514541568, 1627103232, 4, 0,
  12511. _vq_quantlist__44c1_s_p9_0,
  12512. NULL,
  12513. &_vq_auxt__44c1_s_p9_0,
  12514. NULL,
  12515. 0
  12516. };
  12517. static long _vq_quantlist__44c1_s_p9_1[] = {
  12518. 6,
  12519. 5,
  12520. 7,
  12521. 4,
  12522. 8,
  12523. 3,
  12524. 9,
  12525. 2,
  12526. 10,
  12527. 1,
  12528. 11,
  12529. 0,
  12530. 12,
  12531. };
  12532. static long _vq_lengthlist__44c1_s_p9_1[] = {
  12533. 1, 4, 4, 6, 6, 7, 7, 9, 9,12,12,13,12, 6, 5, 5,
  12534. 7, 7, 8, 8,10,10,11,12,13,13, 6, 5, 5, 7, 7, 8,
  12535. 8, 9, 9,11,11,12,12,15, 7, 7, 7, 7, 9, 9,11,11,
  12536. 13,13,14,13,15, 7, 7, 8, 7, 9, 9,10,10,12,11,14,
  12537. 12,15,10,10, 8, 8,10,10,12,11,12,13,14,13,15,10,
  12538. 10, 8, 8,11,10,11,11,13,12,13,15,14,15,15,10,10,
  12539. 10,10,12,13,13,12,15,14,15,15,13,10,10,11,11,13,
  12540. 13,13,12,13,13,15,15,15,14,15,11,11,13,13,13,13,
  12541. 14,15,15,15,15,13,13,11,11,12,13,13,14,13,15,15,
  12542. 15,14,15,15,13,12,12,11,13,13,15,15,15,15,15,15,
  12543. 14,13,12,13,12,15,13,15,15,
  12544. };
  12545. static float _vq_quantthresh__44c1_s_p9_1[] = {
  12546. -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5,
  12547. 42.5, 59.5, 76.5, 93.5,
  12548. };
  12549. static long _vq_quantmap__44c1_s_p9_1[] = {
  12550. 11, 9, 7, 5, 3, 1, 0, 2,
  12551. 4, 6, 8, 10, 12,
  12552. };
  12553. static encode_aux_threshmatch _vq_auxt__44c1_s_p9_1 = {
  12554. _vq_quantthresh__44c1_s_p9_1,
  12555. _vq_quantmap__44c1_s_p9_1,
  12556. 13,
  12557. 13
  12558. };
  12559. static static_codebook _44c1_s_p9_1 = {
  12560. 2, 169,
  12561. _vq_lengthlist__44c1_s_p9_1,
  12562. 1, -522616832, 1620115456, 4, 0,
  12563. _vq_quantlist__44c1_s_p9_1,
  12564. NULL,
  12565. &_vq_auxt__44c1_s_p9_1,
  12566. NULL,
  12567. 0
  12568. };
  12569. static long _vq_quantlist__44c1_s_p9_2[] = {
  12570. 8,
  12571. 7,
  12572. 9,
  12573. 6,
  12574. 10,
  12575. 5,
  12576. 11,
  12577. 4,
  12578. 12,
  12579. 3,
  12580. 13,
  12581. 2,
  12582. 14,
  12583. 1,
  12584. 15,
  12585. 0,
  12586. 16,
  12587. };
  12588. static long _vq_lengthlist__44c1_s_p9_2[] = {
  12589. 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 8, 9, 8, 9, 9,
  12590. 9,10,10,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
  12591. 9, 9,10,10,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9,
  12592. 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
  12593. 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9,
  12594. 9, 9, 9, 9,10,10,11,10, 8, 8, 8, 8, 9, 9, 9, 9,
  12595. 9, 9,10, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9,
  12596. 9, 9, 9, 9, 9, 9, 9,10,10,11, 8, 8, 9, 9, 9, 9,
  12597. 9, 9, 9, 9, 9, 9,10, 9,10,10,10,11,11, 9, 8, 9,
  12598. 9, 9, 9, 9, 9, 9, 9, 9,10,10,11,11,11,11, 9, 9,
  12599. 9, 9, 9, 9,10, 9,10, 9, 9, 9,10,10,10,11,10, 9,
  12600. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,11,11,11,
  12601. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,
  12602. 11,11,10, 9, 9,10, 9, 9, 9, 9, 9, 9, 9,10,10,10,
  12603. 11,11,11,10, 9,10,10,10, 9, 9, 9, 9,10, 9,10,10,
  12604. 10,10,11,11,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
  12605. 11,10,10,10,10,10,10, 9, 9, 9, 9,10, 9, 9, 9, 9,
  12606. 10,10,10,11,11,10,10,11,11, 9, 9,10, 9, 9, 9, 9,
  12607. 9,
  12608. };
  12609. static float _vq_quantthresh__44c1_s_p9_2[] = {
  12610. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  12611. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  12612. };
  12613. static long _vq_quantmap__44c1_s_p9_2[] = {
  12614. 15, 13, 11, 9, 7, 5, 3, 1,
  12615. 0, 2, 4, 6, 8, 10, 12, 14,
  12616. 16,
  12617. };
  12618. static encode_aux_threshmatch _vq_auxt__44c1_s_p9_2 = {
  12619. _vq_quantthresh__44c1_s_p9_2,
  12620. _vq_quantmap__44c1_s_p9_2,
  12621. 17,
  12622. 17
  12623. };
  12624. static static_codebook _44c1_s_p9_2 = {
  12625. 2, 289,
  12626. _vq_lengthlist__44c1_s_p9_2,
  12627. 1, -529530880, 1611661312, 5, 0,
  12628. _vq_quantlist__44c1_s_p9_2,
  12629. NULL,
  12630. &_vq_auxt__44c1_s_p9_2,
  12631. NULL,
  12632. 0
  12633. };
  12634. static long _huff_lengthlist__44c1_s_short[] = {
  12635. 5, 7,17,13,12,12,14,16,15,16, 4, 2,17, 5, 7, 6,
  12636. 8,11,14,13,16,16,16,16,16,16,16,16,16,16,10, 4,
  12637. 16, 4, 8, 6, 7,11,14,14,10, 5,16, 6, 5, 6, 8,12,
  12638. 15,15,10, 5,16, 5, 6, 5, 7,10,14,15,11, 6,16, 7,
  12639. 8, 7, 7,10,14,14,13, 8,16, 8, 7, 7, 8,10,12,13,
  12640. 12, 8,16, 7, 5, 5, 6, 8,11,13,13, 9,16, 9, 6, 6,
  12641. 7, 8,10,13,
  12642. };
  12643. static static_codebook _huff_book__44c1_s_short = {
  12644. 2, 100,
  12645. _huff_lengthlist__44c1_s_short,
  12646. 0, 0, 0, 0, 0,
  12647. NULL,
  12648. NULL,
  12649. NULL,
  12650. NULL,
  12651. 0
  12652. };
  12653. static long _huff_lengthlist__44c1_sm_long[] = {
  12654. 3, 4,10, 9,11, 9,10,11,11,13, 4, 2,11, 5, 7, 7,
  12655. 8,10,12,13,10,10, 7,12, 8, 9, 9,10,12,13, 8, 5,
  12656. 13, 6, 9, 7,10,12,15,15,10, 6, 7, 8, 5, 5, 7,10,
  12657. 12,13, 9, 6, 8, 7, 5, 5, 6, 9,11,12, 9, 8, 9, 9,
  12658. 6, 5, 5, 7,10,13,10,10,10,12, 9, 7, 6, 7, 9,13,
  12659. 10,13,11,17,11,11, 9, 8, 9,12,12,16,14,17,15,14,
  12660. 12,10,10,12,
  12661. };
  12662. static static_codebook _huff_book__44c1_sm_long = {
  12663. 2, 100,
  12664. _huff_lengthlist__44c1_sm_long,
  12665. 0, 0, 0, 0, 0,
  12666. NULL,
  12667. NULL,
  12668. NULL,
  12669. NULL,
  12670. 0
  12671. };
  12672. static long _vq_quantlist__44c1_sm_p1_0[] = {
  12673. 1,
  12674. 0,
  12675. 2,
  12676. };
  12677. static long _vq_lengthlist__44c1_sm_p1_0[] = {
  12678. 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
  12679. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12680. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12681. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12682. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12683. 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
  12684. 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12685. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12686. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12687. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12688. 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
  12689. 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12690. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12691. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12692. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12693. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12694. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12695. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12696. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12697. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12698. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12699. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12700. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12701. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12702. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12703. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12704. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12705. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12706. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12707. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12708. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12709. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12710. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12711. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12712. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12713. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12714. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12715. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12716. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12717. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12718. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12719. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12720. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12721. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12722. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12723. 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
  12724. 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
  12725. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12726. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12727. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12728. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
  12729. 0, 0, 0, 9, 9,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
  12730. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12731. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12732. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12733. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  12734. 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
  12735. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12736. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12737. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12738. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12739. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12740. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12741. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12742. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12743. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12744. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12745. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12746. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12747. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12748. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12749. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12750. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12751. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12752. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12753. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12754. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12755. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12756. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12757. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12758. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12759. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12760. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12761. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12762. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12763. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12764. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12765. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12766. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12767. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12768. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12769. 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  12770. 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12771. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12772. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12773. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12774. 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
  12775. 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
  12776. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12777. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12778. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12779. 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
  12780. 0, 0, 0, 0, 0, 0, 9,10, 9, 0, 0, 0, 0, 0, 0, 0,
  12781. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12782. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12783. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12784. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12785. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12786. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12787. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12788. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12789. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12790. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12791. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12792. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12793. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12794. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12795. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12796. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12797. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12798. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12799. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12800. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12801. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12802. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12803. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12804. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12805. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12806. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12807. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12808. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12809. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12810. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12811. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12812. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12813. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12814. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12815. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12816. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12817. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12818. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12819. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12820. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12821. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12822. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12823. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12824. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12825. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12826. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12827. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12828. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12829. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12830. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12831. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12832. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12833. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12834. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12835. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12836. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12837. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12838. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12839. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12840. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12841. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12842. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12843. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12844. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12845. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12846. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12847. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12848. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12849. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12850. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12851. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12852. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12853. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12854. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12855. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12856. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12857. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12858. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12859. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12860. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12861. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12862. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12863. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12864. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12865. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12866. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12867. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12868. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12869. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12870. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12871. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12872. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12873. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12874. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12875. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12876. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12877. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12878. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12879. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12880. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12881. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12882. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12883. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12884. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12885. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12886. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12887. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12888. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12889. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12890. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12891. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12892. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12893. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12894. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12895. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12896. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12897. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12898. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12899. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12900. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12901. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12902. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12903. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12904. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12905. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12906. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12907. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12908. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12909. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12910. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12911. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12912. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12913. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12914. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12915. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12916. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12917. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12918. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12919. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12920. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12921. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12922. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12923. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12924. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12925. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12926. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12927. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12928. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12929. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12930. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12931. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12932. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12933. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12934. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12935. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12936. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12937. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12938. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12939. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12940. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12941. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12942. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12943. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12944. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12945. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12946. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12947. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12948. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12949. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12950. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12951. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12952. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12953. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12954. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12955. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12956. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12957. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12958. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12959. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12960. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12961. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12962. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12963. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12964. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12965. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12966. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12967. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12968. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12969. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12970. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12971. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12972. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12973. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12974. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12975. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12976. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12977. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12978. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12979. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12980. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12981. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12982. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12983. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12984. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12985. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12986. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12987. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12988. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12989. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12990. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12991. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12992. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12993. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12994. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12995. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12996. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12997. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12998. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12999. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13000. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13001. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13002. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13003. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13004. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13005. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13006. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13007. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13008. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13009. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13010. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13011. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13012. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13013. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13014. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13015. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13016. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13017. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13018. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13019. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13020. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13021. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13022. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13023. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13024. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13025. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13026. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13027. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13028. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13029. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13030. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13031. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13032. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13033. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13034. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13035. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13036. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13037. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13038. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13039. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13040. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13041. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13042. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13043. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13044. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13045. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13046. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13047. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13048. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13049. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13050. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13051. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13052. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13053. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13054. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13055. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13056. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13057. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13058. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13059. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13060. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13061. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13062. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13063. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13064. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13065. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13066. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13067. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13068. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13069. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13070. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13071. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13072. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13073. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13074. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13075. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13076. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13077. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13078. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13079. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13080. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13081. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13082. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13083. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13084. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13085. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13086. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13087. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13088. 0,
  13089. };
  13090. static float _vq_quantthresh__44c1_sm_p1_0[] = {
  13091. -0.5, 0.5,
  13092. };
  13093. static long _vq_quantmap__44c1_sm_p1_0[] = {
  13094. 1, 0, 2,
  13095. };
  13096. static encode_aux_threshmatch _vq_auxt__44c1_sm_p1_0 = {
  13097. _vq_quantthresh__44c1_sm_p1_0,
  13098. _vq_quantmap__44c1_sm_p1_0,
  13099. 3,
  13100. 3
  13101. };
  13102. static static_codebook _44c1_sm_p1_0 = {
  13103. 8, 6561,
  13104. _vq_lengthlist__44c1_sm_p1_0,
  13105. 1, -535822336, 1611661312, 2, 0,
  13106. _vq_quantlist__44c1_sm_p1_0,
  13107. NULL,
  13108. &_vq_auxt__44c1_sm_p1_0,
  13109. NULL,
  13110. 0
  13111. };
  13112. static long _vq_quantlist__44c1_sm_p2_0[] = {
  13113. 2,
  13114. 1,
  13115. 3,
  13116. 0,
  13117. 4,
  13118. };
  13119. static long _vq_lengthlist__44c1_sm_p2_0[] = {
  13120. 1, 5, 5, 0, 0, 0, 5, 6, 0, 0, 0, 5, 6, 0, 0, 0,
  13121. 8, 8, 0, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 8,
  13122. 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
  13123. 0, 0, 5, 6, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0,
  13124. 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13125. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13126. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13127. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13128. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13129. 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0, 0, 8, 8, 0, 0,
  13130. 0, 8, 8, 0, 0, 0,10, 9, 0, 0, 0, 0, 0, 0, 0, 6,
  13131. 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 9,
  13132. 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13133. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13134. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13135. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13136. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13137. 0, 0, 0, 6, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8,
  13138. 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0,
  13139. 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0,
  13140. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13141. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13142. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13143. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13144. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13145. 8,10,10, 0, 0, 0,10,10, 0, 0, 0, 9,10, 0, 0, 0,
  13146. 10,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0,10,
  13147. 10, 0, 0, 0,10, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
  13148. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13149. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13150. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13151. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13152. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13153. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13154. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13155. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13156. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13157. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13158. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13159. 0,
  13160. };
  13161. static float _vq_quantthresh__44c1_sm_p2_0[] = {
  13162. -1.5, -0.5, 0.5, 1.5,
  13163. };
  13164. static long _vq_quantmap__44c1_sm_p2_0[] = {
  13165. 3, 1, 0, 2, 4,
  13166. };
  13167. static encode_aux_threshmatch _vq_auxt__44c1_sm_p2_0 = {
  13168. _vq_quantthresh__44c1_sm_p2_0,
  13169. _vq_quantmap__44c1_sm_p2_0,
  13170. 5,
  13171. 5
  13172. };
  13173. static static_codebook _44c1_sm_p2_0 = {
  13174. 4, 625,
  13175. _vq_lengthlist__44c1_sm_p2_0,
  13176. 1, -533725184, 1611661312, 3, 0,
  13177. _vq_quantlist__44c1_sm_p2_0,
  13178. NULL,
  13179. &_vq_auxt__44c1_sm_p2_0,
  13180. NULL,
  13181. 0
  13182. };
  13183. static long _vq_quantlist__44c1_sm_p3_0[] = {
  13184. 2,
  13185. 1,
  13186. 3,
  13187. 0,
  13188. 4,
  13189. };
  13190. static long _vq_lengthlist__44c1_sm_p3_0[] = {
  13191. 2, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13192. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 7, 6, 0, 0,
  13193. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13194. 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13195. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 8, 8,
  13196. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13197. 0, 0, 0, 0, 6, 6, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0,
  13198. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13199. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13200. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13201. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13202. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13203. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13204. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13205. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13206. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13207. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13208. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13209. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13210. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13211. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13212. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13213. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13214. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13215. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13216. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13217. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13218. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13219. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13220. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13221. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13222. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13223. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13224. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13225. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13226. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13227. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13228. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13229. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13230. 0,
  13231. };
  13232. static float _vq_quantthresh__44c1_sm_p3_0[] = {
  13233. -1.5, -0.5, 0.5, 1.5,
  13234. };
  13235. static long _vq_quantmap__44c1_sm_p3_0[] = {
  13236. 3, 1, 0, 2, 4,
  13237. };
  13238. static encode_aux_threshmatch _vq_auxt__44c1_sm_p3_0 = {
  13239. _vq_quantthresh__44c1_sm_p3_0,
  13240. _vq_quantmap__44c1_sm_p3_0,
  13241. 5,
  13242. 5
  13243. };
  13244. static static_codebook _44c1_sm_p3_0 = {
  13245. 4, 625,
  13246. _vq_lengthlist__44c1_sm_p3_0,
  13247. 1, -533725184, 1611661312, 3, 0,
  13248. _vq_quantlist__44c1_sm_p3_0,
  13249. NULL,
  13250. &_vq_auxt__44c1_sm_p3_0,
  13251. NULL,
  13252. 0
  13253. };
  13254. static long _vq_quantlist__44c1_sm_p4_0[] = {
  13255. 4,
  13256. 3,
  13257. 5,
  13258. 2,
  13259. 6,
  13260. 1,
  13261. 7,
  13262. 0,
  13263. 8,
  13264. };
  13265. static long _vq_lengthlist__44c1_sm_p4_0[] = {
  13266. 1, 3, 3, 7, 7, 0, 0, 0, 0, 0, 5, 5, 6, 6, 0, 0,
  13267. 0, 0, 0, 5, 5, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 7,
  13268. 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  13269. 8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
  13270. 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13271. 0,
  13272. };
  13273. static float _vq_quantthresh__44c1_sm_p4_0[] = {
  13274. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  13275. };
  13276. static long _vq_quantmap__44c1_sm_p4_0[] = {
  13277. 7, 5, 3, 1, 0, 2, 4, 6,
  13278. 8,
  13279. };
  13280. static encode_aux_threshmatch _vq_auxt__44c1_sm_p4_0 = {
  13281. _vq_quantthresh__44c1_sm_p4_0,
  13282. _vq_quantmap__44c1_sm_p4_0,
  13283. 9,
  13284. 9
  13285. };
  13286. static static_codebook _44c1_sm_p4_0 = {
  13287. 2, 81,
  13288. _vq_lengthlist__44c1_sm_p4_0,
  13289. 1, -531628032, 1611661312, 4, 0,
  13290. _vq_quantlist__44c1_sm_p4_0,
  13291. NULL,
  13292. &_vq_auxt__44c1_sm_p4_0,
  13293. NULL,
  13294. 0
  13295. };
  13296. static long _vq_quantlist__44c1_sm_p5_0[] = {
  13297. 4,
  13298. 3,
  13299. 5,
  13300. 2,
  13301. 6,
  13302. 1,
  13303. 7,
  13304. 0,
  13305. 8,
  13306. };
  13307. static long _vq_lengthlist__44c1_sm_p5_0[] = {
  13308. 2, 3, 3, 5, 5, 6, 6, 8, 8, 0, 5, 5, 6, 6, 7, 7,
  13309. 9, 9, 0, 5, 5, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7,
  13310. 7, 7, 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0,
  13311. 7, 7, 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0,
  13312. 0, 0, 9, 9, 9, 9,10,10, 0, 0, 0, 0, 0, 8, 8,10,
  13313. 10,
  13314. };
  13315. static float _vq_quantthresh__44c1_sm_p5_0[] = {
  13316. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  13317. };
  13318. static long _vq_quantmap__44c1_sm_p5_0[] = {
  13319. 7, 5, 3, 1, 0, 2, 4, 6,
  13320. 8,
  13321. };
  13322. static encode_aux_threshmatch _vq_auxt__44c1_sm_p5_0 = {
  13323. _vq_quantthresh__44c1_sm_p5_0,
  13324. _vq_quantmap__44c1_sm_p5_0,
  13325. 9,
  13326. 9
  13327. };
  13328. static static_codebook _44c1_sm_p5_0 = {
  13329. 2, 81,
  13330. _vq_lengthlist__44c1_sm_p5_0,
  13331. 1, -531628032, 1611661312, 4, 0,
  13332. _vq_quantlist__44c1_sm_p5_0,
  13333. NULL,
  13334. &_vq_auxt__44c1_sm_p5_0,
  13335. NULL,
  13336. 0
  13337. };
  13338. static long _vq_quantlist__44c1_sm_p6_0[] = {
  13339. 8,
  13340. 7,
  13341. 9,
  13342. 6,
  13343. 10,
  13344. 5,
  13345. 11,
  13346. 4,
  13347. 12,
  13348. 3,
  13349. 13,
  13350. 2,
  13351. 14,
  13352. 1,
  13353. 15,
  13354. 0,
  13355. 16,
  13356. };
  13357. static long _vq_lengthlist__44c1_sm_p6_0[] = {
  13358. 2, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
  13359. 11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10,
  13360. 11,11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,
  13361. 10,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
  13362. 11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
  13363. 10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,
  13364. 10,10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9,
  13365. 9,10,10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8,10,10,
  13366. 10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8, 8,10,
  13367. 10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8, 8,
  13368. 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8,
  13369. 8, 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
  13370. 9, 9,10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0,
  13371. 0, 0, 0,10,10,10,10,11,11,12,12,13,13, 0, 0, 0,
  13372. 0, 0, 0, 0,10,10,11,11,11,11,13,12,13,13, 0, 0,
  13373. 0, 0, 0, 0, 0,10,10,11,11,11,11,13,13,13,13, 0,
  13374. 0, 0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,14,14,
  13375. 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,12,12,13,12,14,
  13376. 14,
  13377. };
  13378. static float _vq_quantthresh__44c1_sm_p6_0[] = {
  13379. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  13380. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  13381. };
  13382. static long _vq_quantmap__44c1_sm_p6_0[] = {
  13383. 15, 13, 11, 9, 7, 5, 3, 1,
  13384. 0, 2, 4, 6, 8, 10, 12, 14,
  13385. 16,
  13386. };
  13387. static encode_aux_threshmatch _vq_auxt__44c1_sm_p6_0 = {
  13388. _vq_quantthresh__44c1_sm_p6_0,
  13389. _vq_quantmap__44c1_sm_p6_0,
  13390. 17,
  13391. 17
  13392. };
  13393. static static_codebook _44c1_sm_p6_0 = {
  13394. 2, 289,
  13395. _vq_lengthlist__44c1_sm_p6_0,
  13396. 1, -529530880, 1611661312, 5, 0,
  13397. _vq_quantlist__44c1_sm_p6_0,
  13398. NULL,
  13399. &_vq_auxt__44c1_sm_p6_0,
  13400. NULL,
  13401. 0
  13402. };
  13403. static long _vq_quantlist__44c1_sm_p7_0[] = {
  13404. 1,
  13405. 0,
  13406. 2,
  13407. };
  13408. static long _vq_lengthlist__44c1_sm_p7_0[] = {
  13409. 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
  13410. 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
  13411. 10,10,10,10, 6, 9, 9,10,10,10,10, 9, 9, 6, 9, 9,
  13412. 10,10,10,10,10, 9, 7,10,10,11,10,10,11,11,11, 6,
  13413. 9, 9,10, 9, 9,11,10,10, 6, 9, 9,10, 9, 9,11,10,
  13414. 10,
  13415. };
  13416. static float _vq_quantthresh__44c1_sm_p7_0[] = {
  13417. -5.5, 5.5,
  13418. };
  13419. static long _vq_quantmap__44c1_sm_p7_0[] = {
  13420. 1, 0, 2,
  13421. };
  13422. static encode_aux_threshmatch _vq_auxt__44c1_sm_p7_0 = {
  13423. _vq_quantthresh__44c1_sm_p7_0,
  13424. _vq_quantmap__44c1_sm_p7_0,
  13425. 3,
  13426. 3
  13427. };
  13428. static static_codebook _44c1_sm_p7_0 = {
  13429. 4, 81,
  13430. _vq_lengthlist__44c1_sm_p7_0,
  13431. 1, -529137664, 1618345984, 2, 0,
  13432. _vq_quantlist__44c1_sm_p7_0,
  13433. NULL,
  13434. &_vq_auxt__44c1_sm_p7_0,
  13435. NULL,
  13436. 0
  13437. };
  13438. static long _vq_quantlist__44c1_sm_p7_1[] = {
  13439. 5,
  13440. 4,
  13441. 6,
  13442. 3,
  13443. 7,
  13444. 2,
  13445. 8,
  13446. 1,
  13447. 9,
  13448. 0,
  13449. 10,
  13450. };
  13451. static long _vq_lengthlist__44c1_sm_p7_1[] = {
  13452. 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
  13453. 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
  13454. 8,10, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
  13455. 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
  13456. 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 9, 8,10,10,10,
  13457. 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
  13458. 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
  13459. 10,10,10, 8, 8, 8, 8, 8, 8,
  13460. };
  13461. static float _vq_quantthresh__44c1_sm_p7_1[] = {
  13462. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  13463. 3.5, 4.5,
  13464. };
  13465. static long _vq_quantmap__44c1_sm_p7_1[] = {
  13466. 9, 7, 5, 3, 1, 0, 2, 4,
  13467. 6, 8, 10,
  13468. };
  13469. static encode_aux_threshmatch _vq_auxt__44c1_sm_p7_1 = {
  13470. _vq_quantthresh__44c1_sm_p7_1,
  13471. _vq_quantmap__44c1_sm_p7_1,
  13472. 11,
  13473. 11
  13474. };
  13475. static static_codebook _44c1_sm_p7_1 = {
  13476. 2, 121,
  13477. _vq_lengthlist__44c1_sm_p7_1,
  13478. 1, -531365888, 1611661312, 4, 0,
  13479. _vq_quantlist__44c1_sm_p7_1,
  13480. NULL,
  13481. &_vq_auxt__44c1_sm_p7_1,
  13482. NULL,
  13483. 0
  13484. };
  13485. static long _vq_quantlist__44c1_sm_p8_0[] = {
  13486. 6,
  13487. 5,
  13488. 7,
  13489. 4,
  13490. 8,
  13491. 3,
  13492. 9,
  13493. 2,
  13494. 10,
  13495. 1,
  13496. 11,
  13497. 0,
  13498. 12,
  13499. };
  13500. static long _vq_lengthlist__44c1_sm_p8_0[] = {
  13501. 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
  13502. 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 6, 7, 7, 8,
  13503. 8, 8, 8, 9, 9,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
  13504. 10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
  13505. 11, 0,12,12, 9, 9, 9, 9,10,10,11,11,12,11, 0,13,
  13506. 13, 9, 9, 9, 9,10,10,11,11,12,12, 0, 0, 0, 9, 9,
  13507. 9, 9,10,10,11,12,12,12, 0, 0, 0,10,10, 9, 9,11,
  13508. 11,12,12,13,13, 0, 0, 0,13,13,10,10,11,11,12,12,
  13509. 13,13, 0, 0, 0,14,14,10,10,11,10,12,12,13,13, 0,
  13510. 0, 0, 0, 0,12,11,11,11,12,12,14,13, 0, 0, 0, 0,
  13511. 0,12,12,11,10,12,12,14,13,
  13512. };
  13513. static float _vq_quantthresh__44c1_sm_p8_0[] = {
  13514. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  13515. 12.5, 17.5, 22.5, 27.5,
  13516. };
  13517. static long _vq_quantmap__44c1_sm_p8_0[] = {
  13518. 11, 9, 7, 5, 3, 1, 0, 2,
  13519. 4, 6, 8, 10, 12,
  13520. };
  13521. static encode_aux_threshmatch _vq_auxt__44c1_sm_p8_0 = {
  13522. _vq_quantthresh__44c1_sm_p8_0,
  13523. _vq_quantmap__44c1_sm_p8_0,
  13524. 13,
  13525. 13
  13526. };
  13527. static static_codebook _44c1_sm_p8_0 = {
  13528. 2, 169,
  13529. _vq_lengthlist__44c1_sm_p8_0,
  13530. 1, -526516224, 1616117760, 4, 0,
  13531. _vq_quantlist__44c1_sm_p8_0,
  13532. NULL,
  13533. &_vq_auxt__44c1_sm_p8_0,
  13534. NULL,
  13535. 0
  13536. };
  13537. static long _vq_quantlist__44c1_sm_p8_1[] = {
  13538. 2,
  13539. 1,
  13540. 3,
  13541. 0,
  13542. 4,
  13543. };
  13544. static long _vq_lengthlist__44c1_sm_p8_1[] = {
  13545. 2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
  13546. 5, 5, 5, 5, 6, 6, 6, 5, 5,
  13547. };
  13548. static float _vq_quantthresh__44c1_sm_p8_1[] = {
  13549. -1.5, -0.5, 0.5, 1.5,
  13550. };
  13551. static long _vq_quantmap__44c1_sm_p8_1[] = {
  13552. 3, 1, 0, 2, 4,
  13553. };
  13554. static encode_aux_threshmatch _vq_auxt__44c1_sm_p8_1 = {
  13555. _vq_quantthresh__44c1_sm_p8_1,
  13556. _vq_quantmap__44c1_sm_p8_1,
  13557. 5,
  13558. 5
  13559. };
  13560. static static_codebook _44c1_sm_p8_1 = {
  13561. 2, 25,
  13562. _vq_lengthlist__44c1_sm_p8_1,
  13563. 1, -533725184, 1611661312, 3, 0,
  13564. _vq_quantlist__44c1_sm_p8_1,
  13565. NULL,
  13566. &_vq_auxt__44c1_sm_p8_1,
  13567. NULL,
  13568. 0
  13569. };
  13570. static long _vq_quantlist__44c1_sm_p9_0[] = {
  13571. 6,
  13572. 5,
  13573. 7,
  13574. 4,
  13575. 8,
  13576. 3,
  13577. 9,
  13578. 2,
  13579. 10,
  13580. 1,
  13581. 11,
  13582. 0,
  13583. 12,
  13584. };
  13585. static long _vq_lengthlist__44c1_sm_p9_0[] = {
  13586. 1, 5, 5,11,11,11,11,11,11,11,11,11,11, 4, 5, 5,
  13587. 11,10,11,11,11,11,11,11,11,11, 4, 5, 4,11,11,11,
  13588. 11,11,11,11,11,11,11,11, 6, 7,11, 9,11,11,11,11,
  13589. 11,11,11,11,11, 6, 7, 9, 8,11,11,11,11,11,11,11,
  13590. 11,11, 9, 9, 7, 8,11,11,11,11,11,11,11,11,11,10,
  13591. 10, 9,10,11,11,11,11,11,11,11,11,11,11,11, 8,11,
  13592. 10,10,11,11,11,11,11,11,11,11,11, 9,11,11,11,11,
  13593. 11,11,11,11,11,11,11,11,11,11, 9,11,11,11,11,11,
  13594. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  13595. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  13596. 11,11,11,11,10,10,10,10,10,
  13597. };
  13598. static float _vq_quantthresh__44c1_sm_p9_0[] = {
  13599. -1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, 331.5,
  13600. 552.5, 773.5, 994.5, 1215.5,
  13601. };
  13602. static long _vq_quantmap__44c1_sm_p9_0[] = {
  13603. 11, 9, 7, 5, 3, 1, 0, 2,
  13604. 4, 6, 8, 10, 12,
  13605. };
  13606. static encode_aux_threshmatch _vq_auxt__44c1_sm_p9_0 = {
  13607. _vq_quantthresh__44c1_sm_p9_0,
  13608. _vq_quantmap__44c1_sm_p9_0,
  13609. 13,
  13610. 13
  13611. };
  13612. static static_codebook _44c1_sm_p9_0 = {
  13613. 2, 169,
  13614. _vq_lengthlist__44c1_sm_p9_0,
  13615. 1, -514541568, 1627103232, 4, 0,
  13616. _vq_quantlist__44c1_sm_p9_0,
  13617. NULL,
  13618. &_vq_auxt__44c1_sm_p9_0,
  13619. NULL,
  13620. 0
  13621. };
  13622. static long _vq_quantlist__44c1_sm_p9_1[] = {
  13623. 6,
  13624. 5,
  13625. 7,
  13626. 4,
  13627. 8,
  13628. 3,
  13629. 9,
  13630. 2,
  13631. 10,
  13632. 1,
  13633. 11,
  13634. 0,
  13635. 12,
  13636. };
  13637. static long _vq_lengthlist__44c1_sm_p9_1[] = {
  13638. 1, 4, 4, 6, 6, 7, 7,10,10,12,12,13,13, 6, 5, 5,
  13639. 7, 7, 8, 8,10,10,12,12,14,13, 6, 5, 5, 7, 7, 8,
  13640. 8,10,10,12,12,13,13,16, 7, 7, 7, 7, 9, 9,11,11,
  13641. 13,14,13,15,18, 7, 6, 8, 7, 9, 9,11,10,12,12,14,
  13642. 12,19,10,10, 8, 8,10,10,12,11,13,15,15,15,17,11,
  13643. 11, 8, 7,11,10,12,12,13,13,14,15,16,17,17,10,11,
  13644. 10,10,13,13,14,13,16,15,17,17,16,10,10,11,11,14,
  13645. 14,16,13,14,14,17,19,17,15,14,11,11,13,13,15,14,
  13646. 16,15,17,16,17,14,14,11,11,14,13,14,14,14,15,17,
  13647. 16,16,16,17,13,13,13,13,16,14,17,15,16,17,18,18,
  13648. 17,13,13,13,13,15,15,16,16,
  13649. };
  13650. static float _vq_quantthresh__44c1_sm_p9_1[] = {
  13651. -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5,
  13652. 42.5, 59.5, 76.5, 93.5,
  13653. };
  13654. static long _vq_quantmap__44c1_sm_p9_1[] = {
  13655. 11, 9, 7, 5, 3, 1, 0, 2,
  13656. 4, 6, 8, 10, 12,
  13657. };
  13658. static encode_aux_threshmatch _vq_auxt__44c1_sm_p9_1 = {
  13659. _vq_quantthresh__44c1_sm_p9_1,
  13660. _vq_quantmap__44c1_sm_p9_1,
  13661. 13,
  13662. 13
  13663. };
  13664. static static_codebook _44c1_sm_p9_1 = {
  13665. 2, 169,
  13666. _vq_lengthlist__44c1_sm_p9_1,
  13667. 1, -522616832, 1620115456, 4, 0,
  13668. _vq_quantlist__44c1_sm_p9_1,
  13669. NULL,
  13670. &_vq_auxt__44c1_sm_p9_1,
  13671. NULL,
  13672. 0
  13673. };
  13674. static long _vq_quantlist__44c1_sm_p9_2[] = {
  13675. 8,
  13676. 7,
  13677. 9,
  13678. 6,
  13679. 10,
  13680. 5,
  13681. 11,
  13682. 4,
  13683. 12,
  13684. 3,
  13685. 13,
  13686. 2,
  13687. 14,
  13688. 1,
  13689. 15,
  13690. 0,
  13691. 16,
  13692. };
  13693. static long _vq_lengthlist__44c1_sm_p9_2[] = {
  13694. 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
  13695. 9,10, 6, 6, 7, 7, 8, 7, 8, 8, 8, 9, 9, 9, 9, 9,
  13696. 9, 9,10, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9,
  13697. 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
  13698. 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
  13699. 9, 9, 9, 9, 9,11,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
  13700. 9, 9, 9, 9, 9, 9,10,10,10, 7, 8, 8, 8, 9, 9, 9,
  13701. 9, 9, 9, 9, 9,10, 9,10,10,10, 8, 8, 9, 9, 9, 9,
  13702. 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11,11, 8, 8, 9,
  13703. 9, 9, 9, 9, 9, 9, 9,10, 9,10,11,10,11,11, 9, 9,
  13704. 9, 9, 9, 9, 9,10,10, 9, 9, 9,10,11,10,11,11, 9,
  13705. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,11,
  13706. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,11,10,11,
  13707. 11,10,11, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,
  13708. 11,11,11,11, 9,10,10,10, 9, 9, 9, 9,10, 9,10,10,
  13709. 10,11,11,11,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,
  13710. 11,10,11,10,11,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
  13711. 10,10,10,11,11,10,10,10,11, 9, 9, 9, 9, 9, 9, 9,
  13712. 9,
  13713. };
  13714. static float _vq_quantthresh__44c1_sm_p9_2[] = {
  13715. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  13716. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  13717. };
  13718. static long _vq_quantmap__44c1_sm_p9_2[] = {
  13719. 15, 13, 11, 9, 7, 5, 3, 1,
  13720. 0, 2, 4, 6, 8, 10, 12, 14,
  13721. 16,
  13722. };
  13723. static encode_aux_threshmatch _vq_auxt__44c1_sm_p9_2 = {
  13724. _vq_quantthresh__44c1_sm_p9_2,
  13725. _vq_quantmap__44c1_sm_p9_2,
  13726. 17,
  13727. 17
  13728. };
  13729. static static_codebook _44c1_sm_p9_2 = {
  13730. 2, 289,
  13731. _vq_lengthlist__44c1_sm_p9_2,
  13732. 1, -529530880, 1611661312, 5, 0,
  13733. _vq_quantlist__44c1_sm_p9_2,
  13734. NULL,
  13735. &_vq_auxt__44c1_sm_p9_2,
  13736. NULL,
  13737. 0
  13738. };
  13739. static long _huff_lengthlist__44c1_sm_short[] = {
  13740. 4, 7,13,13,13,13,14,16,16,19, 4, 2,13, 5, 8, 7,
  13741. 9,12,14,13,16, 9,10,10, 9,10,11,13,17,19, 9, 4,
  13742. 13, 5,10, 6, 8,11,15,15,11, 6, 9, 7, 6, 6, 8,11,
  13743. 14,18,11, 5, 9, 6, 6, 5, 6, 9,13,15,12, 6, 9, 7,
  13744. 6, 5, 5, 8,12,15,13, 7,10, 8, 6, 6, 7, 9,12,13,
  13745. 13, 9,11, 9, 6, 5, 6, 8,11,13,13,11,13,11, 7, 6,
  13746. 7, 8,10,12,
  13747. };
  13748. static static_codebook _huff_book__44c1_sm_short = {
  13749. 2, 100,
  13750. _huff_lengthlist__44c1_sm_short,
  13751. 0, 0, 0, 0, 0,
  13752. NULL,
  13753. NULL,
  13754. NULL,
  13755. NULL,
  13756. 0
  13757. };
  13758. static long _huff_lengthlist__44c2_s_long[] = {
  13759. 5, 5,12,10,11,10,10,10,11,13, 5, 1, 9, 5, 8, 7,
  13760. 8,10,13,13,12, 9, 8,11, 7, 8, 9,11,13,15, 9, 5,
  13761. 12, 6, 9, 8,10,12,15,14,12, 7, 6, 8, 5, 6, 7,10,
  13762. 12,13,10, 7, 8, 7, 6, 6, 7, 9,12,12,10, 8, 9, 9,
  13763. 7, 6, 6, 7,10,11,10, 9,10,11, 9, 8, 6, 6, 8,11,
  13764. 10,12,13,15,11,10, 8, 7, 8,11,11,13,16,16,14,13,
  13765. 11, 9, 9,10,
  13766. };
  13767. static static_codebook _huff_book__44c2_s_long = {
  13768. 2, 100,
  13769. _huff_lengthlist__44c2_s_long,
  13770. 0, 0, 0, 0, 0,
  13771. NULL,
  13772. NULL,
  13773. NULL,
  13774. NULL,
  13775. 0
  13776. };
  13777. static long _vq_quantlist__44c2_s_p1_0[] = {
  13778. 1,
  13779. 0,
  13780. 2,
  13781. };
  13782. static long _vq_lengthlist__44c2_s_p1_0[] = {
  13783. 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 0,
  13784. 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13785. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13786. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13787. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13788. 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
  13789. 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13790. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13791. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13792. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13793. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
  13794. 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13795. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13796. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13797. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13798. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13799. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13800. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13801. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13802. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13803. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13804. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13805. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13806. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13807. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13808. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13809. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13810. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13811. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13812. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13813. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13814. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13815. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13816. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13817. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13818. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13819. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13820. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13821. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13822. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13823. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13824. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13825. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13826. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13827. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13828. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
  13829. 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
  13830. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13831. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13832. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13833. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
  13834. 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
  13835. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13836. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13837. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13838. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
  13839. 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9,10,
  13840. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13841. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13842. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13843. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13844. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13845. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13846. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13847. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13848. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13849. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13850. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13851. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13852. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13853. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13854. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13855. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13856. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13857. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13858. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13859. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13860. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13861. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13862. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13863. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13864. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13865. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13866. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13867. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13868. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13869. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13870. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13871. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13872. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13873. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13874. 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
  13875. 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13876. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13877. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13878. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13879. 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8,10, 9, 0,
  13880. 0, 0, 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
  13881. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13882. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13883. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13884. 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
  13885. 0, 0, 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 0,
  13886. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13887. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13888. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13889. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13890. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13891. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13892. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13893. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13894. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13895. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13896. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13897. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13898. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13899. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13900. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13901. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13902. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13903. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13904. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13905. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13906. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13907. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13908. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13909. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13910. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13911. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13912. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13913. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13914. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13915. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13916. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13917. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13918. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13919. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13920. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13921. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13922. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13923. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13924. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13925. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13926. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13927. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13928. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13929. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13930. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13931. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13932. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13933. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13934. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13935. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13936. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13937. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13938. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13939. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13940. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13941. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13942. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13943. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13944. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13945. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13946. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13947. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13948. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13949. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13950. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13951. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13952. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13953. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13954. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13955. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13956. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13957. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13958. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13959. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13960. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13961. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13962. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13963. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13964. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13965. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13966. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13967. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13968. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13969. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13970. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13971. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13972. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13973. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13974. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13975. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13976. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13977. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13978. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13979. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13980. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13981. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13982. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13983. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13984. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13985. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13986. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13987. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13988. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13989. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13990. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13991. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13992. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13993. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13994. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13995. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13996. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13997. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13998. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  13999. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14000. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14001. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14002. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14003. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14004. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14005. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14006. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14007. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14008. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14009. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14010. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14011. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14012. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14013. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14014. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14015. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14016. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14017. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14018. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14019. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14020. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14021. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14022. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14023. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14024. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14025. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14026. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14027. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14028. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14029. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14030. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14031. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14032. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14033. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14034. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14035. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14036. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14037. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14038. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14039. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14040. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14041. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14042. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14043. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14044. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14045. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14046. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14047. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14048. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14049. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14050. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14051. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14052. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14053. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14054. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14055. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14056. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14057. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14058. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14059. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14060. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14061. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14062. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14063. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14064. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14065. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14066. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14067. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14068. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14069. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14070. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14071. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14072. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14073. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14074. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14075. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14076. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14077. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14078. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14079. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14080. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14081. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14082. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14083. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14084. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14085. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14086. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14087. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14088. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14089. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14090. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14091. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14092. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14093. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14094. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14095. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14096. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14097. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14098. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14099. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14100. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14101. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14102. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14103. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14104. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14105. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14106. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14107. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14108. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14109. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14110. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14111. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14112. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14113. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14114. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14115. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14116. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14117. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14118. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14119. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14120. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14121. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14122. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14123. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14124. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14125. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14126. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14127. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14128. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14129. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14130. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14131. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14132. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14133. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14134. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14135. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14136. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14137. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14138. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14139. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14140. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14141. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14142. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14143. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14144. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14145. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14146. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14147. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14148. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14149. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14150. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14151. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14152. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14153. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14154. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14155. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14156. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14157. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14158. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14159. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14160. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14161. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14162. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14163. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14164. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14165. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14166. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14167. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14168. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14169. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14170. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14171. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14172. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14173. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14174. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14175. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14176. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14177. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14178. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14179. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14180. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14181. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14182. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14183. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14184. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14185. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14186. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14187. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14188. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14189. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14190. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14191. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14192. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14193. 0,
  14194. };
  14195. static float _vq_quantthresh__44c2_s_p1_0[] = {
  14196. -0.5, 0.5,
  14197. };
  14198. static long _vq_quantmap__44c2_s_p1_0[] = {
  14199. 1, 0, 2,
  14200. };
  14201. static encode_aux_threshmatch _vq_auxt__44c2_s_p1_0 = {
  14202. _vq_quantthresh__44c2_s_p1_0,
  14203. _vq_quantmap__44c2_s_p1_0,
  14204. 3,
  14205. 3
  14206. };
  14207. static static_codebook _44c2_s_p1_0 = {
  14208. 8, 6561,
  14209. _vq_lengthlist__44c2_s_p1_0,
  14210. 1, -535822336, 1611661312, 2, 0,
  14211. _vq_quantlist__44c2_s_p1_0,
  14212. NULL,
  14213. &_vq_auxt__44c2_s_p1_0,
  14214. NULL,
  14215. 0
  14216. };
  14217. static long _vq_quantlist__44c2_s_p2_0[] = {
  14218. 2,
  14219. 1,
  14220. 3,
  14221. 0,
  14222. 4,
  14223. };
  14224. static long _vq_lengthlist__44c2_s_p2_0[] = {
  14225. 1, 4, 4, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0,
  14226. 7, 7, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 8,
  14227. 8, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0,
  14228. 0, 0, 4, 6, 6, 0, 0, 0, 8, 9, 0, 0, 0, 8, 8, 0,
  14229. 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14230. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14231. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14232. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14233. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14234. 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,11,10, 0, 0,
  14235. 0,11,11, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 7,
  14236. 8, 8, 0, 0, 0,10,11, 0, 0, 0,11,11, 0, 0, 0,11,
  14237. 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14238. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14239. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14240. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14241. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14242. 0, 0, 0, 7, 8, 8, 0, 0, 0,11,11, 0, 0, 0,11,11,
  14243. 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0,
  14244. 0, 0,11,11, 0, 0, 0,11,11, 0, 0, 0,11,11, 0, 0,
  14245. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14246. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14247. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14248. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14249. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14250. 7, 9, 9, 0, 0, 0,11,12, 0, 0, 0,11,12, 0, 0, 0,
  14251. 12,11, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,12,
  14252. 11, 0, 0, 0,11,11, 0, 0, 0,11,11, 0, 0, 0, 0, 0,
  14253. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14254. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14255. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14256. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14257. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14258. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14259. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14260. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14261. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14262. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14263. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14264. 0,
  14265. };
  14266. static float _vq_quantthresh__44c2_s_p2_0[] = {
  14267. -1.5, -0.5, 0.5, 1.5,
  14268. };
  14269. static long _vq_quantmap__44c2_s_p2_0[] = {
  14270. 3, 1, 0, 2, 4,
  14271. };
  14272. static encode_aux_threshmatch _vq_auxt__44c2_s_p2_0 = {
  14273. _vq_quantthresh__44c2_s_p2_0,
  14274. _vq_quantmap__44c2_s_p2_0,
  14275. 5,
  14276. 5
  14277. };
  14278. static static_codebook _44c2_s_p2_0 = {
  14279. 4, 625,
  14280. _vq_lengthlist__44c2_s_p2_0,
  14281. 1, -533725184, 1611661312, 3, 0,
  14282. _vq_quantlist__44c2_s_p2_0,
  14283. NULL,
  14284. &_vq_auxt__44c2_s_p2_0,
  14285. NULL,
  14286. 0
  14287. };
  14288. static long _vq_quantlist__44c2_s_p3_0[] = {
  14289. 2,
  14290. 1,
  14291. 3,
  14292. 0,
  14293. 4,
  14294. };
  14295. static long _vq_lengthlist__44c2_s_p3_0[] = {
  14296. 2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14297. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
  14298. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14299. 0, 0, 4, 4, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14300. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
  14301. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14302. 0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  14303. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14304. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14305. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14306. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14307. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14308. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14309. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14310. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14311. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14312. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14313. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14314. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14315. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14316. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14317. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14318. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14319. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14320. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14321. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14322. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14323. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14324. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14325. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14326. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14327. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14328. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14329. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14330. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14331. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14332. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14333. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14334. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14335. 0,
  14336. };
  14337. static float _vq_quantthresh__44c2_s_p3_0[] = {
  14338. -1.5, -0.5, 0.5, 1.5,
  14339. };
  14340. static long _vq_quantmap__44c2_s_p3_0[] = {
  14341. 3, 1, 0, 2, 4,
  14342. };
  14343. static encode_aux_threshmatch _vq_auxt__44c2_s_p3_0 = {
  14344. _vq_quantthresh__44c2_s_p3_0,
  14345. _vq_quantmap__44c2_s_p3_0,
  14346. 5,
  14347. 5
  14348. };
  14349. static static_codebook _44c2_s_p3_0 = {
  14350. 4, 625,
  14351. _vq_lengthlist__44c2_s_p3_0,
  14352. 1, -533725184, 1611661312, 3, 0,
  14353. _vq_quantlist__44c2_s_p3_0,
  14354. NULL,
  14355. &_vq_auxt__44c2_s_p3_0,
  14356. NULL,
  14357. 0
  14358. };
  14359. static long _vq_quantlist__44c2_s_p4_0[] = {
  14360. 4,
  14361. 3,
  14362. 5,
  14363. 2,
  14364. 6,
  14365. 1,
  14366. 7,
  14367. 0,
  14368. 8,
  14369. };
  14370. static long _vq_lengthlist__44c2_s_p4_0[] = {
  14371. 1, 3, 3, 6, 6, 0, 0, 0, 0, 0, 6, 6, 6, 6, 0, 0,
  14372. 0, 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 6, 6, 7, 7,
  14373. 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  14374. 7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
  14375. 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14376. 0,
  14377. };
  14378. static float _vq_quantthresh__44c2_s_p4_0[] = {
  14379. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  14380. };
  14381. static long _vq_quantmap__44c2_s_p4_0[] = {
  14382. 7, 5, 3, 1, 0, 2, 4, 6,
  14383. 8,
  14384. };
  14385. static encode_aux_threshmatch _vq_auxt__44c2_s_p4_0 = {
  14386. _vq_quantthresh__44c2_s_p4_0,
  14387. _vq_quantmap__44c2_s_p4_0,
  14388. 9,
  14389. 9
  14390. };
  14391. static static_codebook _44c2_s_p4_0 = {
  14392. 2, 81,
  14393. _vq_lengthlist__44c2_s_p4_0,
  14394. 1, -531628032, 1611661312, 4, 0,
  14395. _vq_quantlist__44c2_s_p4_0,
  14396. NULL,
  14397. &_vq_auxt__44c2_s_p4_0,
  14398. NULL,
  14399. 0
  14400. };
  14401. static long _vq_quantlist__44c2_s_p5_0[] = {
  14402. 4,
  14403. 3,
  14404. 5,
  14405. 2,
  14406. 6,
  14407. 1,
  14408. 7,
  14409. 0,
  14410. 8,
  14411. };
  14412. static long _vq_lengthlist__44c2_s_p5_0[] = {
  14413. 1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 7, 7, 7, 7, 8, 8,
  14414. 9, 9, 0, 7, 7, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 7,
  14415. 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
  14416. 8, 8, 9, 9,10,10, 0, 0, 0, 8, 8, 9, 9,10,10, 0,
  14417. 0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
  14418. 11,
  14419. };
  14420. static float _vq_quantthresh__44c2_s_p5_0[] = {
  14421. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  14422. };
  14423. static long _vq_quantmap__44c2_s_p5_0[] = {
  14424. 7, 5, 3, 1, 0, 2, 4, 6,
  14425. 8,
  14426. };
  14427. static encode_aux_threshmatch _vq_auxt__44c2_s_p5_0 = {
  14428. _vq_quantthresh__44c2_s_p5_0,
  14429. _vq_quantmap__44c2_s_p5_0,
  14430. 9,
  14431. 9
  14432. };
  14433. static static_codebook _44c2_s_p5_0 = {
  14434. 2, 81,
  14435. _vq_lengthlist__44c2_s_p5_0,
  14436. 1, -531628032, 1611661312, 4, 0,
  14437. _vq_quantlist__44c2_s_p5_0,
  14438. NULL,
  14439. &_vq_auxt__44c2_s_p5_0,
  14440. NULL,
  14441. 0
  14442. };
  14443. static long _vq_quantlist__44c2_s_p6_0[] = {
  14444. 8,
  14445. 7,
  14446. 9,
  14447. 6,
  14448. 10,
  14449. 5,
  14450. 11,
  14451. 4,
  14452. 12,
  14453. 3,
  14454. 13,
  14455. 2,
  14456. 14,
  14457. 1,
  14458. 15,
  14459. 0,
  14460. 16,
  14461. };
  14462. static long _vq_lengthlist__44c2_s_p6_0[] = {
  14463. 1, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
  14464. 11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
  14465. 11,11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
  14466. 10,11,11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
  14467. 11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
  14468. 10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9, 9, 9, 9,
  14469. 10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9, 9, 9,
  14470. 9,10,11,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
  14471. 10,10,11,11,11,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
  14472. 10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
  14473. 9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9,
  14474. 9, 9, 9,10,10,11,11,12,12,12,13, 0, 0, 0, 0, 0,
  14475. 10,10,10,10,10,11,11,11,12,12,13,13, 0, 0, 0, 0,
  14476. 0, 0, 0,10,10,10,10,11,11,12,12,13,13, 0, 0, 0,
  14477. 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0, 0,
  14478. 0, 0, 0, 0, 0,11,11,11,11,12,11,12,12,13,13, 0,
  14479. 0, 0, 0, 0, 0, 0,11,11,11,11,12,12,13,12,14,13,
  14480. 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,12,12,12,13,13,
  14481. 14,
  14482. };
  14483. static float _vq_quantthresh__44c2_s_p6_0[] = {
  14484. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  14485. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  14486. };
  14487. static long _vq_quantmap__44c2_s_p6_0[] = {
  14488. 15, 13, 11, 9, 7, 5, 3, 1,
  14489. 0, 2, 4, 6, 8, 10, 12, 14,
  14490. 16,
  14491. };
  14492. static encode_aux_threshmatch _vq_auxt__44c2_s_p6_0 = {
  14493. _vq_quantthresh__44c2_s_p6_0,
  14494. _vq_quantmap__44c2_s_p6_0,
  14495. 17,
  14496. 17
  14497. };
  14498. static static_codebook _44c2_s_p6_0 = {
  14499. 2, 289,
  14500. _vq_lengthlist__44c2_s_p6_0,
  14501. 1, -529530880, 1611661312, 5, 0,
  14502. _vq_quantlist__44c2_s_p6_0,
  14503. NULL,
  14504. &_vq_auxt__44c2_s_p6_0,
  14505. NULL,
  14506. 0
  14507. };
  14508. static long _vq_quantlist__44c2_s_p7_0[] = {
  14509. 1,
  14510. 0,
  14511. 2,
  14512. };
  14513. static long _vq_lengthlist__44c2_s_p7_0[] = {
  14514. 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
  14515. 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10, 9,10,10,
  14516. 10,11,10,10, 6, 9, 9,10,10,10,11, 9, 9, 6, 9, 9,
  14517. 10,10,10,11, 9, 9, 7,10,10,11,10,10,11,11,10, 6,
  14518. 9, 9,10, 9, 9,11,10,10, 6, 9, 9,10, 9,10,11,10,
  14519. 10,
  14520. };
  14521. static float _vq_quantthresh__44c2_s_p7_0[] = {
  14522. -5.5, 5.5,
  14523. };
  14524. static long _vq_quantmap__44c2_s_p7_0[] = {
  14525. 1, 0, 2,
  14526. };
  14527. static encode_aux_threshmatch _vq_auxt__44c2_s_p7_0 = {
  14528. _vq_quantthresh__44c2_s_p7_0,
  14529. _vq_quantmap__44c2_s_p7_0,
  14530. 3,
  14531. 3
  14532. };
  14533. static static_codebook _44c2_s_p7_0 = {
  14534. 4, 81,
  14535. _vq_lengthlist__44c2_s_p7_0,
  14536. 1, -529137664, 1618345984, 2, 0,
  14537. _vq_quantlist__44c2_s_p7_0,
  14538. NULL,
  14539. &_vq_auxt__44c2_s_p7_0,
  14540. NULL,
  14541. 0
  14542. };
  14543. static long _vq_quantlist__44c2_s_p7_1[] = {
  14544. 5,
  14545. 4,
  14546. 6,
  14547. 3,
  14548. 7,
  14549. 2,
  14550. 8,
  14551. 1,
  14552. 9,
  14553. 0,
  14554. 10,
  14555. };
  14556. static long _vq_lengthlist__44c2_s_p7_1[] = {
  14557. 2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 7,10, 6, 6, 6, 6,
  14558. 7, 7, 8, 7, 8, 8, 9, 6, 6, 6, 6, 7, 7, 7, 7, 7,
  14559. 7,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,10, 9, 9, 6,
  14560. 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
  14561. 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
  14562. 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10, 9, 8, 8, 8,
  14563. 8, 8, 8,10,10,10, 9,10, 8, 8, 8, 8, 8, 8,10,10,
  14564. 10,10, 9, 8, 8, 8, 8, 8, 8,
  14565. };
  14566. static float _vq_quantthresh__44c2_s_p7_1[] = {
  14567. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  14568. 3.5, 4.5,
  14569. };
  14570. static long _vq_quantmap__44c2_s_p7_1[] = {
  14571. 9, 7, 5, 3, 1, 0, 2, 4,
  14572. 6, 8, 10,
  14573. };
  14574. static encode_aux_threshmatch _vq_auxt__44c2_s_p7_1 = {
  14575. _vq_quantthresh__44c2_s_p7_1,
  14576. _vq_quantmap__44c2_s_p7_1,
  14577. 11,
  14578. 11
  14579. };
  14580. static static_codebook _44c2_s_p7_1 = {
  14581. 2, 121,
  14582. _vq_lengthlist__44c2_s_p7_1,
  14583. 1, -531365888, 1611661312, 4, 0,
  14584. _vq_quantlist__44c2_s_p7_1,
  14585. NULL,
  14586. &_vq_auxt__44c2_s_p7_1,
  14587. NULL,
  14588. 0
  14589. };
  14590. static long _vq_quantlist__44c2_s_p8_0[] = {
  14591. 6,
  14592. 5,
  14593. 7,
  14594. 4,
  14595. 8,
  14596. 3,
  14597. 9,
  14598. 2,
  14599. 10,
  14600. 1,
  14601. 11,
  14602. 0,
  14603. 12,
  14604. };
  14605. static long _vq_lengthlist__44c2_s_p8_0[] = {
  14606. 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
  14607. 7, 7, 8, 8, 9, 8, 9, 9,10,10, 7, 5, 5, 7, 7, 8,
  14608. 8, 8, 9,10, 9,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
  14609. 10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9,10,10,10,11,
  14610. 11, 0,12,12, 9, 9,10,10,10,10,11,11,12,12, 0,13,
  14611. 12, 9, 9,10, 9,10,10,11,11,11,12, 0, 0, 0,10,10,
  14612. 10,10,11,11,11,11,12,12, 0, 0, 0,10,10, 9, 9,11,
  14613. 11,12,12,12,13, 0, 0, 0,13,13,10,10,11,11,12,12,
  14614. 13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
  14615. 0, 0, 0, 0,12,12,11,12,12,12,14,13, 0, 0, 0, 0,
  14616. 0,12,12,12,12,12,12,14,13,
  14617. };
  14618. static float _vq_quantthresh__44c2_s_p8_0[] = {
  14619. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  14620. 12.5, 17.5, 22.5, 27.5,
  14621. };
  14622. static long _vq_quantmap__44c2_s_p8_0[] = {
  14623. 11, 9, 7, 5, 3, 1, 0, 2,
  14624. 4, 6, 8, 10, 12,
  14625. };
  14626. static encode_aux_threshmatch _vq_auxt__44c2_s_p8_0 = {
  14627. _vq_quantthresh__44c2_s_p8_0,
  14628. _vq_quantmap__44c2_s_p8_0,
  14629. 13,
  14630. 13
  14631. };
  14632. static static_codebook _44c2_s_p8_0 = {
  14633. 2, 169,
  14634. _vq_lengthlist__44c2_s_p8_0,
  14635. 1, -526516224, 1616117760, 4, 0,
  14636. _vq_quantlist__44c2_s_p8_0,
  14637. NULL,
  14638. &_vq_auxt__44c2_s_p8_0,
  14639. NULL,
  14640. 0
  14641. };
  14642. static long _vq_quantlist__44c2_s_p8_1[] = {
  14643. 2,
  14644. 1,
  14645. 3,
  14646. 0,
  14647. 4,
  14648. };
  14649. static long _vq_lengthlist__44c2_s_p8_1[] = {
  14650. 2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
  14651. 5, 5, 5, 5, 6, 6, 6, 5, 5,
  14652. };
  14653. static float _vq_quantthresh__44c2_s_p8_1[] = {
  14654. -1.5, -0.5, 0.5, 1.5,
  14655. };
  14656. static long _vq_quantmap__44c2_s_p8_1[] = {
  14657. 3, 1, 0, 2, 4,
  14658. };
  14659. static encode_aux_threshmatch _vq_auxt__44c2_s_p8_1 = {
  14660. _vq_quantthresh__44c2_s_p8_1,
  14661. _vq_quantmap__44c2_s_p8_1,
  14662. 5,
  14663. 5
  14664. };
  14665. static static_codebook _44c2_s_p8_1 = {
  14666. 2, 25,
  14667. _vq_lengthlist__44c2_s_p8_1,
  14668. 1, -533725184, 1611661312, 3, 0,
  14669. _vq_quantlist__44c2_s_p8_1,
  14670. NULL,
  14671. &_vq_auxt__44c2_s_p8_1,
  14672. NULL,
  14673. 0
  14674. };
  14675. static long _vq_quantlist__44c2_s_p9_0[] = {
  14676. 6,
  14677. 5,
  14678. 7,
  14679. 4,
  14680. 8,
  14681. 3,
  14682. 9,
  14683. 2,
  14684. 10,
  14685. 1,
  14686. 11,
  14687. 0,
  14688. 12,
  14689. };
  14690. static long _vq_lengthlist__44c2_s_p9_0[] = {
  14691. 1, 5, 4,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 5, 7, 7,
  14692. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 9, 6, 9, 9, 9,
  14693. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  14694. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  14695. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  14696. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  14697. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  14698. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  14699. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  14700. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  14701. 9, 9, 9, 9, 9, 9, 9, 9, 9,
  14702. };
  14703. static float _vq_quantthresh__44c2_s_p9_0[] = {
  14704. -1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, 331.5,
  14705. 552.5, 773.5, 994.5, 1215.5,
  14706. };
  14707. static long _vq_quantmap__44c2_s_p9_0[] = {
  14708. 11, 9, 7, 5, 3, 1, 0, 2,
  14709. 4, 6, 8, 10, 12,
  14710. };
  14711. static encode_aux_threshmatch _vq_auxt__44c2_s_p9_0 = {
  14712. _vq_quantthresh__44c2_s_p9_0,
  14713. _vq_quantmap__44c2_s_p9_0,
  14714. 13,
  14715. 13
  14716. };
  14717. static static_codebook _44c2_s_p9_0 = {
  14718. 2, 169,
  14719. _vq_lengthlist__44c2_s_p9_0,
  14720. 1, -514541568, 1627103232, 4, 0,
  14721. _vq_quantlist__44c2_s_p9_0,
  14722. NULL,
  14723. &_vq_auxt__44c2_s_p9_0,
  14724. NULL,
  14725. 0
  14726. };
  14727. static long _vq_quantlist__44c2_s_p9_1[] = {
  14728. 6,
  14729. 5,
  14730. 7,
  14731. 4,
  14732. 8,
  14733. 3,
  14734. 9,
  14735. 2,
  14736. 10,
  14737. 1,
  14738. 11,
  14739. 0,
  14740. 12,
  14741. };
  14742. static long _vq_lengthlist__44c2_s_p9_1[] = {
  14743. 1, 4, 4, 6, 6, 7, 7, 9, 9,11,11,12,12, 6, 5, 5,
  14744. 7, 7, 8, 8,10,10,12,11,13,13, 6, 5, 5, 7, 7, 8,
  14745. 8, 9, 9,11,11,12,13,16, 7, 7, 8, 8, 9, 9,10,10,
  14746. 13,13,16,14,16, 7, 7, 8, 8, 9, 9,10,10,13,13,15,
  14747. 13,16,10,10, 8, 8,10,10,11,11,12,12,15,14,16,11,
  14748. 11, 8, 8,10,10,11,11,12,12,14,13,16,16,16,10,11,
  14749. 10,10,12,12,14,13,13,13,16,16,16,10, 9,10, 7,13,
  14750. 12,13,13,13,13,16,16,16,14,15,11,11,12,12,13,13,
  14751. 15,14,16,16,16,16,14,11, 9,12, 9,15,13,13,14,16,
  14752. 16,16,16,16,13,13,12,12,14,15,16,15,16,16,15,16,
  14753. 16,13,12,12,11,15,13,14,15,
  14754. };
  14755. static float _vq_quantthresh__44c2_s_p9_1[] = {
  14756. -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5,
  14757. 42.5, 59.5, 76.5, 93.5,
  14758. };
  14759. static long _vq_quantmap__44c2_s_p9_1[] = {
  14760. 11, 9, 7, 5, 3, 1, 0, 2,
  14761. 4, 6, 8, 10, 12,
  14762. };
  14763. static encode_aux_threshmatch _vq_auxt__44c2_s_p9_1 = {
  14764. _vq_quantthresh__44c2_s_p9_1,
  14765. _vq_quantmap__44c2_s_p9_1,
  14766. 13,
  14767. 13
  14768. };
  14769. static static_codebook _44c2_s_p9_1 = {
  14770. 2, 169,
  14771. _vq_lengthlist__44c2_s_p9_1,
  14772. 1, -522616832, 1620115456, 4, 0,
  14773. _vq_quantlist__44c2_s_p9_1,
  14774. NULL,
  14775. &_vq_auxt__44c2_s_p9_1,
  14776. NULL,
  14777. 0
  14778. };
  14779. static long _vq_quantlist__44c2_s_p9_2[] = {
  14780. 8,
  14781. 7,
  14782. 9,
  14783. 6,
  14784. 10,
  14785. 5,
  14786. 11,
  14787. 4,
  14788. 12,
  14789. 3,
  14790. 13,
  14791. 2,
  14792. 14,
  14793. 1,
  14794. 15,
  14795. 0,
  14796. 16,
  14797. };
  14798. static long _vq_lengthlist__44c2_s_p9_2[] = {
  14799. 2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9,
  14800. 9,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
  14801. 9, 9,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
  14802. 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
  14803. 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
  14804. 9, 9, 9, 9, 9,10,11,10, 8, 8, 8, 8, 9, 9, 9, 9,
  14805. 9, 9, 9, 9, 9, 9,10,10,10, 7, 8, 8, 8, 9, 9, 9,
  14806. 9, 9, 9, 9, 9, 9, 9,10,11,11, 8, 8, 8, 9, 9, 9,
  14807. 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 8, 8, 9,
  14808. 9, 9, 9, 9, 9, 9, 9, 9,10,11,11,10,11,10, 9, 9,
  14809. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,10, 9,
  14810. 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10,11,11,
  14811. 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,11,10,10,11,
  14812. 10,10,11, 9, 9,10,10, 9, 9,10,10, 9, 9,10,10,10,
  14813. 11,10,11,10,10, 9, 9,10, 9, 9, 9, 9, 9, 9,10,10,
  14814. 10,10,11,10,10, 9,10, 9, 9, 9, 9,10, 9, 9, 9,10,
  14815. 10,10,11,11,10,10,10,10, 9, 9,10, 9, 9, 9,10, 9,
  14816. 10,10,10,10,11,10,11,11,10, 9, 9, 9, 9, 9, 9, 9,
  14817. 10,
  14818. };
  14819. static float _vq_quantthresh__44c2_s_p9_2[] = {
  14820. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  14821. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  14822. };
  14823. static long _vq_quantmap__44c2_s_p9_2[] = {
  14824. 15, 13, 11, 9, 7, 5, 3, 1,
  14825. 0, 2, 4, 6, 8, 10, 12, 14,
  14826. 16,
  14827. };
  14828. static encode_aux_threshmatch _vq_auxt__44c2_s_p9_2 = {
  14829. _vq_quantthresh__44c2_s_p9_2,
  14830. _vq_quantmap__44c2_s_p9_2,
  14831. 17,
  14832. 17
  14833. };
  14834. static static_codebook _44c2_s_p9_2 = {
  14835. 2, 289,
  14836. _vq_lengthlist__44c2_s_p9_2,
  14837. 1, -529530880, 1611661312, 5, 0,
  14838. _vq_quantlist__44c2_s_p9_2,
  14839. NULL,
  14840. &_vq_auxt__44c2_s_p9_2,
  14841. NULL,
  14842. 0
  14843. };
  14844. static long _huff_lengthlist__44c2_s_short[] = {
  14845. 9, 9,12,11,11,11,12,12,12,13, 6, 2, 9, 4, 7, 6,
  14846. 8,11,15,17,12, 7, 8, 9, 7, 9,10,13,15,17,11, 4,
  14847. 12, 4, 9, 5, 8,11,16,17,12, 6, 7, 6, 6, 6, 8,11,
  14848. 15,17,11, 5, 9, 5, 6, 5, 6,10,15,15,12, 7,11, 7,
  14849. 7, 6, 7,10,13,16,13, 8,11, 9, 8, 6, 7,10,12,16,
  14850. 13, 9, 9, 8, 5, 5, 6, 9,12,14,16,10, 9, 9, 6, 5,
  14851. 6, 8,11,14,
  14852. };
  14853. static static_codebook _huff_book__44c2_s_short = {
  14854. 2, 100,
  14855. _huff_lengthlist__44c2_s_short,
  14856. 0, 0, 0, 0, 0,
  14857. NULL,
  14858. NULL,
  14859. NULL,
  14860. NULL,
  14861. 0
  14862. };
  14863. static long _huff_lengthlist__44c3_s_long[] = {
  14864. 4, 5,11,10,12,10,10,10,11,12, 4, 2,11, 5,11, 6,
  14865. 7, 9,13,16,11,11, 7,11, 6, 8, 8, 9,11,12,10, 5,
  14866. 11, 6,10, 7, 9,11,16,16,14, 9, 6, 9, 4, 5, 7, 8,
  14867. 11,13,10, 6, 7, 7, 5, 5, 6, 8,10,11,10, 7, 8, 8,
  14868. 6, 6, 5, 7, 9,10,10, 9, 8,11, 8, 7, 6, 6, 7,10,
  14869. 10,12,10,14, 9, 9, 7, 7, 7, 9,10,14,11,16,12,12,
  14870. 9, 8, 8, 9,
  14871. };
  14872. static static_codebook _huff_book__44c3_s_long = {
  14873. 2, 100,
  14874. _huff_lengthlist__44c3_s_long,
  14875. 0, 0, 0, 0, 0,
  14876. NULL,
  14877. NULL,
  14878. NULL,
  14879. NULL,
  14880. 0
  14881. };
  14882. static long _vq_quantlist__44c3_s_p1_0[] = {
  14883. 1,
  14884. 0,
  14885. 2,
  14886. };
  14887. static long _vq_lengthlist__44c3_s_p1_0[] = {
  14888. 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 0,
  14889. 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14890. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14891. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14892. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14893. 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
  14894. 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14895. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14896. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14897. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14898. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
  14899. 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14900. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14901. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14902. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14903. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14904. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14905. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14906. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14907. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14908. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14909. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14910. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14911. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14912. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14913. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14914. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14915. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14916. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14917. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14918. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14919. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14920. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14921. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14922. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14923. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14924. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14925. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14926. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14927. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14928. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14929. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14930. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14931. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14932. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14933. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
  14934. 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
  14935. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14936. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14937. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14938. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
  14939. 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
  14940. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14941. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14942. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14943. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
  14944. 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9,10,
  14945. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14946. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14947. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14948. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14949. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14950. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14951. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14952. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14953. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14954. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14955. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14956. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14957. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14958. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14959. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14960. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14961. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14962. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14963. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14964. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14965. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14966. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14967. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14968. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14969. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14970. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14971. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14972. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14973. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14974. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14975. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14976. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14977. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14978. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14979. 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
  14980. 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14981. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14982. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14983. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14984. 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8,10, 9, 0,
  14985. 0, 0, 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
  14986. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14987. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14988. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14989. 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
  14990. 0, 0, 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 0,
  14991. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14992. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14993. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14994. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14995. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14996. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14997. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14998. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14999. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15000. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15001. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15002. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15003. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15004. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15005. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15006. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15007. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15008. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15009. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15010. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15011. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15012. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15013. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15014. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15015. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15016. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15017. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15018. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15019. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15020. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15021. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15022. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15023. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15024. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15025. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15026. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15027. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15028. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15029. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15030. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15031. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15032. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15033. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15034. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15035. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15036. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15037. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15038. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15039. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15040. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15041. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15042. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15043. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15044. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15045. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15046. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15047. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15048. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15049. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15050. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15051. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15052. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15053. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15054. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15055. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15056. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15057. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15058. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15059. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15060. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15061. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15062. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15063. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15064. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15065. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15066. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15067. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15068. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15069. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15070. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15071. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15072. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15073. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15074. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15075. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15076. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15077. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15078. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15079. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15080. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15081. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15082. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15083. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15084. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15085. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15086. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15087. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15088. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15089. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15090. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15091. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15092. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15093. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15094. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15095. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15096. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15097. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15098. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15099. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15100. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15101. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15102. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15103. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15104. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15105. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15106. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15107. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15108. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15109. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15110. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15111. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15112. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15113. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15114. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15115. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15116. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15117. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15118. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15119. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15120. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15121. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15122. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15123. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15124. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15125. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15126. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15127. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15128. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15129. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15130. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15131. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15132. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15133. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15134. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15135. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15136. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15137. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15138. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15139. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15140. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15141. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15142. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15143. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15144. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15145. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15146. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15147. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15148. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15149. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15150. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15151. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15152. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15153. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15154. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15155. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15156. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15157. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15158. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15159. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15160. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15161. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15162. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15163. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15164. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15165. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15166. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15167. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15168. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15169. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15170. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15171. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15172. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15173. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15174. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15175. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15176. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15177. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15178. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15179. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15180. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15181. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15182. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15183. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15184. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15185. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15186. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15187. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15188. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15189. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15190. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15191. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15192. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15193. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15194. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15195. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15196. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15197. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15198. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15199. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15200. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15201. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15202. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15203. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15204. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15205. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15206. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15207. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15208. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15209. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15210. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15211. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15212. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15213. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15214. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15215. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15216. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15217. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15218. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15219. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15220. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15221. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15222. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15223. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15224. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15225. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15226. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15227. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15228. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15229. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15230. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15231. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15232. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15233. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15234. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15235. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15236. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15237. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15238. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15239. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15240. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15241. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15242. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15243. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15244. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15245. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15246. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15247. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15248. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15249. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15250. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15251. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15252. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15253. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15254. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15255. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15256. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15257. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15258. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15259. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15260. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15261. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15262. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15263. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15264. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15265. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15266. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15267. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15268. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15269. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15270. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15271. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15272. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15273. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15274. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15275. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15276. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15277. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15278. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15279. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15280. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15281. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15282. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15283. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15284. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15285. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15286. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15287. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15288. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15289. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15290. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15291. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15292. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15293. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15294. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15295. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15296. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15297. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15298. 0,
  15299. };
  15300. static float _vq_quantthresh__44c3_s_p1_0[] = {
  15301. -0.5, 0.5,
  15302. };
  15303. static long _vq_quantmap__44c3_s_p1_0[] = {
  15304. 1, 0, 2,
  15305. };
  15306. static encode_aux_threshmatch _vq_auxt__44c3_s_p1_0 = {
  15307. _vq_quantthresh__44c3_s_p1_0,
  15308. _vq_quantmap__44c3_s_p1_0,
  15309. 3,
  15310. 3
  15311. };
  15312. static static_codebook _44c3_s_p1_0 = {
  15313. 8, 6561,
  15314. _vq_lengthlist__44c3_s_p1_0,
  15315. 1, -535822336, 1611661312, 2, 0,
  15316. _vq_quantlist__44c3_s_p1_0,
  15317. NULL,
  15318. &_vq_auxt__44c3_s_p1_0,
  15319. NULL,
  15320. 0
  15321. };
  15322. static long _vq_quantlist__44c3_s_p2_0[] = {
  15323. 2,
  15324. 1,
  15325. 3,
  15326. 0,
  15327. 4,
  15328. };
  15329. static long _vq_lengthlist__44c3_s_p2_0[] = {
  15330. 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
  15331. 8, 7, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 8,
  15332. 7, 0, 0, 0, 7, 7, 0, 0, 0,10, 9, 0, 0, 0, 0, 0,
  15333. 0, 0, 5, 5, 6, 0, 0, 0, 7, 8, 0, 0, 0, 7, 7, 0,
  15334. 0, 0, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15335. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15336. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15337. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15338. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15339. 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0,
  15340. 0, 7, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5,
  15341. 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9,
  15342. 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15343. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15344. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15345. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15346. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15347. 0, 0, 0, 5, 8, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7,
  15348. 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 8, 0,
  15349. 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0,
  15350. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15351. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15352. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15353. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15354. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15355. 8, 9,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0,
  15356. 10,10, 0, 0, 0, 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 9,
  15357. 9, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
  15358. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15359. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15360. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15361. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15362. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15363. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15364. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15365. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15366. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15367. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15368. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15369. 0,
  15370. };
  15371. static float _vq_quantthresh__44c3_s_p2_0[] = {
  15372. -1.5, -0.5, 0.5, 1.5,
  15373. };
  15374. static long _vq_quantmap__44c3_s_p2_0[] = {
  15375. 3, 1, 0, 2, 4,
  15376. };
  15377. static encode_aux_threshmatch _vq_auxt__44c3_s_p2_0 = {
  15378. _vq_quantthresh__44c3_s_p2_0,
  15379. _vq_quantmap__44c3_s_p2_0,
  15380. 5,
  15381. 5
  15382. };
  15383. static static_codebook _44c3_s_p2_0 = {
  15384. 4, 625,
  15385. _vq_lengthlist__44c3_s_p2_0,
  15386. 1, -533725184, 1611661312, 3, 0,
  15387. _vq_quantlist__44c3_s_p2_0,
  15388. NULL,
  15389. &_vq_auxt__44c3_s_p2_0,
  15390. NULL,
  15391. 0
  15392. };
  15393. static long _vq_quantlist__44c3_s_p3_0[] = {
  15394. 2,
  15395. 1,
  15396. 3,
  15397. 0,
  15398. 4,
  15399. };
  15400. static long _vq_lengthlist__44c3_s_p3_0[] = {
  15401. 2, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15402. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
  15403. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15404. 0, 0, 4, 4, 4, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15405. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 8, 8,
  15406. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15407. 0, 0, 0, 0, 6, 6, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0,
  15408. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15409. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15410. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15411. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15412. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15413. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15414. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15415. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15416. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15417. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15418. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15419. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15420. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15421. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15422. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15423. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15424. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15425. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15426. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15427. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15428. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15429. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15430. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15431. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15432. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15433. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15434. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15435. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15436. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15437. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15438. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15439. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15440. 0,
  15441. };
  15442. static float _vq_quantthresh__44c3_s_p3_0[] = {
  15443. -1.5, -0.5, 0.5, 1.5,
  15444. };
  15445. static long _vq_quantmap__44c3_s_p3_0[] = {
  15446. 3, 1, 0, 2, 4,
  15447. };
  15448. static encode_aux_threshmatch _vq_auxt__44c3_s_p3_0 = {
  15449. _vq_quantthresh__44c3_s_p3_0,
  15450. _vq_quantmap__44c3_s_p3_0,
  15451. 5,
  15452. 5
  15453. };
  15454. static static_codebook _44c3_s_p3_0 = {
  15455. 4, 625,
  15456. _vq_lengthlist__44c3_s_p3_0,
  15457. 1, -533725184, 1611661312, 3, 0,
  15458. _vq_quantlist__44c3_s_p3_0,
  15459. NULL,
  15460. &_vq_auxt__44c3_s_p3_0,
  15461. NULL,
  15462. 0
  15463. };
  15464. static long _vq_quantlist__44c3_s_p4_0[] = {
  15465. 4,
  15466. 3,
  15467. 5,
  15468. 2,
  15469. 6,
  15470. 1,
  15471. 7,
  15472. 0,
  15473. 8,
  15474. };
  15475. static long _vq_lengthlist__44c3_s_p4_0[] = {
  15476. 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
  15477. 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
  15478. 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
  15479. 7, 7, 0, 0, 0, 0, 0, 0, 0, 8, 7, 0, 0, 0, 0, 0,
  15480. 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15481. 0,
  15482. };
  15483. static float _vq_quantthresh__44c3_s_p4_0[] = {
  15484. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  15485. };
  15486. static long _vq_quantmap__44c3_s_p4_0[] = {
  15487. 7, 5, 3, 1, 0, 2, 4, 6,
  15488. 8,
  15489. };
  15490. static encode_aux_threshmatch _vq_auxt__44c3_s_p4_0 = {
  15491. _vq_quantthresh__44c3_s_p4_0,
  15492. _vq_quantmap__44c3_s_p4_0,
  15493. 9,
  15494. 9
  15495. };
  15496. static static_codebook _44c3_s_p4_0 = {
  15497. 2, 81,
  15498. _vq_lengthlist__44c3_s_p4_0,
  15499. 1, -531628032, 1611661312, 4, 0,
  15500. _vq_quantlist__44c3_s_p4_0,
  15501. NULL,
  15502. &_vq_auxt__44c3_s_p4_0,
  15503. NULL,
  15504. 0
  15505. };
  15506. static long _vq_quantlist__44c3_s_p5_0[] = {
  15507. 4,
  15508. 3,
  15509. 5,
  15510. 2,
  15511. 6,
  15512. 1,
  15513. 7,
  15514. 0,
  15515. 8,
  15516. };
  15517. static long _vq_lengthlist__44c3_s_p5_0[] = {
  15518. 2, 3, 3, 5, 5, 7, 7, 9, 8, 0, 4, 4, 7, 7, 7, 7,
  15519. 9, 9, 0, 5, 5, 6, 7, 7, 7, 9, 9, 0, 6, 6, 7, 7,
  15520. 7, 7, 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0,
  15521. 8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
  15522. 0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
  15523. 10,
  15524. };
  15525. static float _vq_quantthresh__44c3_s_p5_0[] = {
  15526. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  15527. };
  15528. static long _vq_quantmap__44c3_s_p5_0[] = {
  15529. 7, 5, 3, 1, 0, 2, 4, 6,
  15530. 8,
  15531. };
  15532. static encode_aux_threshmatch _vq_auxt__44c3_s_p5_0 = {
  15533. _vq_quantthresh__44c3_s_p5_0,
  15534. _vq_quantmap__44c3_s_p5_0,
  15535. 9,
  15536. 9
  15537. };
  15538. static static_codebook _44c3_s_p5_0 = {
  15539. 2, 81,
  15540. _vq_lengthlist__44c3_s_p5_0,
  15541. 1, -531628032, 1611661312, 4, 0,
  15542. _vq_quantlist__44c3_s_p5_0,
  15543. NULL,
  15544. &_vq_auxt__44c3_s_p5_0,
  15545. NULL,
  15546. 0
  15547. };
  15548. static long _vq_quantlist__44c3_s_p6_0[] = {
  15549. 8,
  15550. 7,
  15551. 9,
  15552. 6,
  15553. 10,
  15554. 5,
  15555. 11,
  15556. 4,
  15557. 12,
  15558. 3,
  15559. 13,
  15560. 2,
  15561. 14,
  15562. 1,
  15563. 15,
  15564. 0,
  15565. 16,
  15566. };
  15567. static long _vq_lengthlist__44c3_s_p6_0[] = {
  15568. 2, 3, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
  15569. 11, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
  15570. 11,11, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
  15571. 11,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
  15572. 11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
  15573. 10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10, 9,
  15574. 10,10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10,
  15575. 9,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
  15576. 10,10,11,11,12,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
  15577. 10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8, 8,
  15578. 9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8,
  15579. 8, 9, 9,10,10,11,11,12,12,13,12, 0, 0, 0, 0, 0,
  15580. 9, 9,10,10,11,10,11,11,12,12,13,13, 0, 0, 0, 0,
  15581. 0, 0, 0,10,10,10,10,11,11,12,12,13,13, 0, 0, 0,
  15582. 0, 0, 0, 0,10,10,11,11,12,12,12,12,13,13, 0, 0,
  15583. 0, 0, 0, 0, 0,10,10,11,11,11,11,12,12,13,13, 0,
  15584. 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,12,13,13,13,
  15585. 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,
  15586. 13,
  15587. };
  15588. static float _vq_quantthresh__44c3_s_p6_0[] = {
  15589. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  15590. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  15591. };
  15592. static long _vq_quantmap__44c3_s_p6_0[] = {
  15593. 15, 13, 11, 9, 7, 5, 3, 1,
  15594. 0, 2, 4, 6, 8, 10, 12, 14,
  15595. 16,
  15596. };
  15597. static encode_aux_threshmatch _vq_auxt__44c3_s_p6_0 = {
  15598. _vq_quantthresh__44c3_s_p6_0,
  15599. _vq_quantmap__44c3_s_p6_0,
  15600. 17,
  15601. 17
  15602. };
  15603. static static_codebook _44c3_s_p6_0 = {
  15604. 2, 289,
  15605. _vq_lengthlist__44c3_s_p6_0,
  15606. 1, -529530880, 1611661312, 5, 0,
  15607. _vq_quantlist__44c3_s_p6_0,
  15608. NULL,
  15609. &_vq_auxt__44c3_s_p6_0,
  15610. NULL,
  15611. 0
  15612. };
  15613. static long _vq_quantlist__44c3_s_p7_0[] = {
  15614. 1,
  15615. 0,
  15616. 2,
  15617. };
  15618. static long _vq_lengthlist__44c3_s_p7_0[] = {
  15619. 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
  15620. 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
  15621. 10,11,10,10, 6, 9, 9,10,10,10,10, 9, 9, 6, 9, 9,
  15622. 10,10,10,10, 9, 9, 7,10,10,10,11,11,11,10,11, 6,
  15623. 9, 9,10,10, 9,11,10,10, 6, 9, 9,10, 9, 9,10,10,
  15624. 10,
  15625. };
  15626. static float _vq_quantthresh__44c3_s_p7_0[] = {
  15627. -5.5, 5.5,
  15628. };
  15629. static long _vq_quantmap__44c3_s_p7_0[] = {
  15630. 1, 0, 2,
  15631. };
  15632. static encode_aux_threshmatch _vq_auxt__44c3_s_p7_0 = {
  15633. _vq_quantthresh__44c3_s_p7_0,
  15634. _vq_quantmap__44c3_s_p7_0,
  15635. 3,
  15636. 3
  15637. };
  15638. static static_codebook _44c3_s_p7_0 = {
  15639. 4, 81,
  15640. _vq_lengthlist__44c3_s_p7_0,
  15641. 1, -529137664, 1618345984, 2, 0,
  15642. _vq_quantlist__44c3_s_p7_0,
  15643. NULL,
  15644. &_vq_auxt__44c3_s_p7_0,
  15645. NULL,
  15646. 0
  15647. };
  15648. static long _vq_quantlist__44c3_s_p7_1[] = {
  15649. 5,
  15650. 4,
  15651. 6,
  15652. 3,
  15653. 7,
  15654. 2,
  15655. 8,
  15656. 1,
  15657. 9,
  15658. 0,
  15659. 10,
  15660. };
  15661. static long _vq_lengthlist__44c3_s_p7_1[] = {
  15662. 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6,
  15663. 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
  15664. 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
  15665. 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
  15666. 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
  15667. 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
  15668. 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
  15669. 10,10,10, 8, 8, 8, 8, 8, 9,
  15670. };
  15671. static float _vq_quantthresh__44c3_s_p7_1[] = {
  15672. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  15673. 3.5, 4.5,
  15674. };
  15675. static long _vq_quantmap__44c3_s_p7_1[] = {
  15676. 9, 7, 5, 3, 1, 0, 2, 4,
  15677. 6, 8, 10,
  15678. };
  15679. static encode_aux_threshmatch _vq_auxt__44c3_s_p7_1 = {
  15680. _vq_quantthresh__44c3_s_p7_1,
  15681. _vq_quantmap__44c3_s_p7_1,
  15682. 11,
  15683. 11
  15684. };
  15685. static static_codebook _44c3_s_p7_1 = {
  15686. 2, 121,
  15687. _vq_lengthlist__44c3_s_p7_1,
  15688. 1, -531365888, 1611661312, 4, 0,
  15689. _vq_quantlist__44c3_s_p7_1,
  15690. NULL,
  15691. &_vq_auxt__44c3_s_p7_1,
  15692. NULL,
  15693. 0
  15694. };
  15695. static long _vq_quantlist__44c3_s_p8_0[] = {
  15696. 6,
  15697. 5,
  15698. 7,
  15699. 4,
  15700. 8,
  15701. 3,
  15702. 9,
  15703. 2,
  15704. 10,
  15705. 1,
  15706. 11,
  15707. 0,
  15708. 12,
  15709. };
  15710. static long _vq_lengthlist__44c3_s_p8_0[] = {
  15711. 1, 4, 4, 6, 6, 7, 8, 8, 8, 9, 9,10,10, 6, 5, 5,
  15712. 7, 7, 8, 8, 9, 9, 9, 9,10,10, 7, 5, 5, 7, 7, 8,
  15713. 8, 9, 9, 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
  15714. 10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
  15715. 11, 0,11,12, 9, 9, 9,10,10,10,11,11,11,12, 0,13,
  15716. 13, 9, 9, 9, 9,10,10,11,11,12,12, 0, 0, 0,10, 9,
  15717. 9, 9,10,11,11,11,12,12, 0, 0, 0,10,10, 9, 9,11,
  15718. 11,11,11,12,13, 0, 0, 0,13,13,10,10,11,11,12,12,
  15719. 13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
  15720. 0, 0, 0, 0,12,12,11,11,12,12,13,13, 0, 0, 0, 0,
  15721. 0,12,12,11,11,12,12,13,13,
  15722. };
  15723. static float _vq_quantthresh__44c3_s_p8_0[] = {
  15724. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  15725. 12.5, 17.5, 22.5, 27.5,
  15726. };
  15727. static long _vq_quantmap__44c3_s_p8_0[] = {
  15728. 11, 9, 7, 5, 3, 1, 0, 2,
  15729. 4, 6, 8, 10, 12,
  15730. };
  15731. static encode_aux_threshmatch _vq_auxt__44c3_s_p8_0 = {
  15732. _vq_quantthresh__44c3_s_p8_0,
  15733. _vq_quantmap__44c3_s_p8_0,
  15734. 13,
  15735. 13
  15736. };
  15737. static static_codebook _44c3_s_p8_0 = {
  15738. 2, 169,
  15739. _vq_lengthlist__44c3_s_p8_0,
  15740. 1, -526516224, 1616117760, 4, 0,
  15741. _vq_quantlist__44c3_s_p8_0,
  15742. NULL,
  15743. &_vq_auxt__44c3_s_p8_0,
  15744. NULL,
  15745. 0
  15746. };
  15747. static long _vq_quantlist__44c3_s_p8_1[] = {
  15748. 2,
  15749. 1,
  15750. 3,
  15751. 0,
  15752. 4,
  15753. };
  15754. static long _vq_lengthlist__44c3_s_p8_1[] = {
  15755. 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6,
  15756. 5, 5, 5, 5, 6, 6, 6, 5, 5,
  15757. };
  15758. static float _vq_quantthresh__44c3_s_p8_1[] = {
  15759. -1.5, -0.5, 0.5, 1.5,
  15760. };
  15761. static long _vq_quantmap__44c3_s_p8_1[] = {
  15762. 3, 1, 0, 2, 4,
  15763. };
  15764. static encode_aux_threshmatch _vq_auxt__44c3_s_p8_1 = {
  15765. _vq_quantthresh__44c3_s_p8_1,
  15766. _vq_quantmap__44c3_s_p8_1,
  15767. 5,
  15768. 5
  15769. };
  15770. static static_codebook _44c3_s_p8_1 = {
  15771. 2, 25,
  15772. _vq_lengthlist__44c3_s_p8_1,
  15773. 1, -533725184, 1611661312, 3, 0,
  15774. _vq_quantlist__44c3_s_p8_1,
  15775. NULL,
  15776. &_vq_auxt__44c3_s_p8_1,
  15777. NULL,
  15778. 0
  15779. };
  15780. static long _vq_quantlist__44c3_s_p9_0[] = {
  15781. 6,
  15782. 5,
  15783. 7,
  15784. 4,
  15785. 8,
  15786. 3,
  15787. 9,
  15788. 2,
  15789. 10,
  15790. 1,
  15791. 11,
  15792. 0,
  15793. 12,
  15794. };
  15795. static long _vq_lengthlist__44c3_s_p9_0[] = {
  15796. 1, 4, 4,10,10,10,10,10,10,10,10,10,10, 5,10, 7,
  15797. 10,10,10,10,10,10,10,10,10,10, 5, 8, 6,10,10,10,
  15798. 10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
  15799. 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  15800. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  15801. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  15802. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  15803. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  15804. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  15805. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  15806. 9, 9, 9, 9, 9, 9, 9, 9, 9,
  15807. };
  15808. static float _vq_quantthresh__44c3_s_p9_0[] = {
  15809. -1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 382.5,
  15810. 637.5, 892.5, 1147.5, 1402.5,
  15811. };
  15812. static long _vq_quantmap__44c3_s_p9_0[] = {
  15813. 11, 9, 7, 5, 3, 1, 0, 2,
  15814. 4, 6, 8, 10, 12,
  15815. };
  15816. static encode_aux_threshmatch _vq_auxt__44c3_s_p9_0 = {
  15817. _vq_quantthresh__44c3_s_p9_0,
  15818. _vq_quantmap__44c3_s_p9_0,
  15819. 13,
  15820. 13
  15821. };
  15822. static static_codebook _44c3_s_p9_0 = {
  15823. 2, 169,
  15824. _vq_lengthlist__44c3_s_p9_0,
  15825. 1, -514332672, 1627381760, 4, 0,
  15826. _vq_quantlist__44c3_s_p9_0,
  15827. NULL,
  15828. &_vq_auxt__44c3_s_p9_0,
  15829. NULL,
  15830. 0
  15831. };
  15832. static long _vq_quantlist__44c3_s_p9_1[] = {
  15833. 7,
  15834. 6,
  15835. 8,
  15836. 5,
  15837. 9,
  15838. 4,
  15839. 10,
  15840. 3,
  15841. 11,
  15842. 2,
  15843. 12,
  15844. 1,
  15845. 13,
  15846. 0,
  15847. 14,
  15848. };
  15849. static long _vq_lengthlist__44c3_s_p9_1[] = {
  15850. 1, 4, 4, 6, 6, 7, 7, 9, 9,11,11,11,12,12,12, 6,
  15851. 5, 5, 7, 7, 8, 8,10, 9,11,11,13,12,13,14, 6, 5,
  15852. 5, 7, 7, 8, 8,10,10,11,11,12,12,13,13,17, 7, 7,
  15853. 8, 8, 9, 9,10,10,12,12,14,13,14,14,17, 8, 7, 8,
  15854. 7, 9, 9,10,10,12,12,13,13,13,14,17,11,11, 8, 8,
  15855. 10,10,11,11,12,12,13,13,15,14,17,11,11, 8, 7,10,
  15856. 10,11,11,12,12,13,14,14,13,17,17,17,10,11,10,10,
  15857. 12,12,13,12,13,13,14,14,17,16,16,10,10,11, 9,13,
  15858. 12,13,13,13,13,14,14,16,16,15,13,15,11,12,12,12,
  15859. 14,14,14,14,14,15,16,16,16,14,14,11, 9,12,10,13,
  15860. 13,14,14,14,14,16,16,16,16,16,12,13,12,12,13,14,
  15861. 14,14,15,15,15,16,16,15,16,13,11,13,10,14,12,15,
  15862. 14,16,14,15,16,16,16,16,15,15,13,13,13,13,14,14,
  15863. 16,16,16,16,16,15,16,16,14,13,12,13,13,14,16,16,
  15864. 16,
  15865. };
  15866. static float _vq_quantthresh__44c3_s_p9_1[] = {
  15867. -110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5,
  15868. 25.5, 42.5, 59.5, 76.5, 93.5, 110.5,
  15869. };
  15870. static long _vq_quantmap__44c3_s_p9_1[] = {
  15871. 13, 11, 9, 7, 5, 3, 1, 0,
  15872. 2, 4, 6, 8, 10, 12, 14,
  15873. };
  15874. static encode_aux_threshmatch _vq_auxt__44c3_s_p9_1 = {
  15875. _vq_quantthresh__44c3_s_p9_1,
  15876. _vq_quantmap__44c3_s_p9_1,
  15877. 15,
  15878. 15
  15879. };
  15880. static static_codebook _44c3_s_p9_1 = {
  15881. 2, 225,
  15882. _vq_lengthlist__44c3_s_p9_1,
  15883. 1, -522338304, 1620115456, 4, 0,
  15884. _vq_quantlist__44c3_s_p9_1,
  15885. NULL,
  15886. &_vq_auxt__44c3_s_p9_1,
  15887. NULL,
  15888. 0
  15889. };
  15890. static long _vq_quantlist__44c3_s_p9_2[] = {
  15891. 8,
  15892. 7,
  15893. 9,
  15894. 6,
  15895. 10,
  15896. 5,
  15897. 11,
  15898. 4,
  15899. 12,
  15900. 3,
  15901. 13,
  15902. 2,
  15903. 14,
  15904. 1,
  15905. 15,
  15906. 0,
  15907. 16,
  15908. };
  15909. static long _vq_lengthlist__44c3_s_p9_2[] = {
  15910. 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9,
  15911. 8,10, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
  15912. 9, 9,10, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9,
  15913. 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
  15914. 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9,
  15915. 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9,
  15916. 9, 9, 9, 9, 9, 9,10,10,10, 8, 7, 8, 8, 9, 8, 9,
  15917. 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9,
  15918. 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,10, 8, 8, 9,
  15919. 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9,
  15920. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11, 8,
  15921. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,10,
  15922. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,
  15923. 10,10,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
  15924. 11,10,11,10, 9, 9, 9,10, 9, 9, 9, 9, 9, 9,10,10,
  15925. 10,10,11,11,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
  15926. 10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10, 9,
  15927. 10,10,10,10,11,10,11,10,10, 9, 9, 9, 9, 9, 9, 9,
  15928. 9,
  15929. };
  15930. static float _vq_quantthresh__44c3_s_p9_2[] = {
  15931. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  15932. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  15933. };
  15934. static long _vq_quantmap__44c3_s_p9_2[] = {
  15935. 15, 13, 11, 9, 7, 5, 3, 1,
  15936. 0, 2, 4, 6, 8, 10, 12, 14,
  15937. 16,
  15938. };
  15939. static encode_aux_threshmatch _vq_auxt__44c3_s_p9_2 = {
  15940. _vq_quantthresh__44c3_s_p9_2,
  15941. _vq_quantmap__44c3_s_p9_2,
  15942. 17,
  15943. 17
  15944. };
  15945. static static_codebook _44c3_s_p9_2 = {
  15946. 2, 289,
  15947. _vq_lengthlist__44c3_s_p9_2,
  15948. 1, -529530880, 1611661312, 5, 0,
  15949. _vq_quantlist__44c3_s_p9_2,
  15950. NULL,
  15951. &_vq_auxt__44c3_s_p9_2,
  15952. NULL,
  15953. 0
  15954. };
  15955. static long _huff_lengthlist__44c3_s_short[] = {
  15956. 10,10,13,12,13,12,12,12,12,13, 8, 3,11, 5,10, 5,
  15957. 7,11,14,16,11, 6, 9, 8, 7, 7, 9,12,15,16,12, 4,
  15958. 12, 4,10, 5, 8,12,15,16,12, 6, 8, 7, 5, 5, 7,11,
  15959. 14,15,11, 4, 9, 4, 6, 4, 6, 9,13,15,10, 6,10, 7,
  15960. 7, 5, 6, 9,13,15,12, 9,11, 9, 8, 6, 7, 9,12,15,
  15961. 13,11,10, 9, 6, 5, 5, 8,11,14,16,12,11,10, 6, 5,
  15962. 6, 8,10,14,
  15963. };
  15964. static static_codebook _huff_book__44c3_s_short = {
  15965. 2, 100,
  15966. _huff_lengthlist__44c3_s_short,
  15967. 0, 0, 0, 0, 0,
  15968. NULL,
  15969. NULL,
  15970. NULL,
  15971. NULL,
  15972. 0
  15973. };
  15974. static long _huff_lengthlist__44c4_s_long[] = {
  15975. 3, 5,11,11,13,11,11,11,12,12, 5, 2,11, 6,10, 7,
  15976. 8,10,13,16,10, 9, 6,10, 6, 7, 8, 9,11,12,11, 5,
  15977. 11, 7,10, 8,10,12,15,17,12, 8, 5, 9, 4, 5, 7, 8,
  15978. 10,12,10, 6, 7, 8, 5, 5, 6, 8,10,11,10, 8, 8, 9,
  15979. 6, 6, 6, 7, 9,10,11,10, 9,11, 8, 7, 6, 6, 7, 9,
  15980. 11,13,10,15, 9, 9, 7, 7, 7, 8,10,15,11,17,11,11,
  15981. 9, 8, 7, 8,
  15982. };
  15983. static static_codebook _huff_book__44c4_s_long = {
  15984. 2, 100,
  15985. _huff_lengthlist__44c4_s_long,
  15986. 0, 0, 0, 0, 0,
  15987. NULL,
  15988. NULL,
  15989. NULL,
  15990. NULL,
  15991. 0
  15992. };
  15993. static long _vq_quantlist__44c4_s_p1_0[] = {
  15994. 1,
  15995. 0,
  15996. 2,
  15997. };
  15998. static long _vq_lengthlist__44c4_s_p1_0[] = {
  15999. 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 0,
  16000. 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16001. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16002. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16003. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16004. 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
  16005. 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16006. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16007. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16008. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16009. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
  16010. 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16011. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16012. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16013. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16014. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16015. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16016. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16017. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16018. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16019. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16020. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16021. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16022. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16023. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16024. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16025. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16026. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16027. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16028. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16029. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16030. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16031. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16032. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16033. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16034. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16035. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16036. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16037. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16038. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16039. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16040. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16041. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16042. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16043. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16044. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
  16045. 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
  16046. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16047. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16048. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16049. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0, 0,
  16050. 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
  16051. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16052. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16053. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16054. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
  16055. 0, 0, 0, 0, 8,10, 8, 0, 0, 0, 0, 0, 0, 8, 9,10,
  16056. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16057. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16058. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16059. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16060. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16061. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16062. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16063. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16064. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16065. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16066. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16067. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16068. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16069. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16070. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16071. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16072. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16073. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16074. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16075. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16076. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16077. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16078. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16079. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16080. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16081. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16082. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16083. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16084. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16085. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16086. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16087. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16088. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16089. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16090. 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
  16091. 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16092. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16093. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16094. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16095. 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8,10, 9, 0,
  16096. 0, 0, 0, 0, 0, 8, 8,10, 0, 0, 0, 0, 0, 0, 0, 0,
  16097. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16098. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16099. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16100. 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9,
  16101. 0, 0, 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 0,
  16102. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16103. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16104. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16105. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16106. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16107. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16108. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16109. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16110. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16111. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16112. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16113. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16114. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16115. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16116. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16117. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16118. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16119. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16120. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16121. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16122. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16123. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16124. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16125. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16126. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16127. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16128. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16129. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16130. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16131. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16132. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16133. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16134. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16135. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16136. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16137. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16138. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16139. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16140. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16141. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16142. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16143. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16144. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16145. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16146. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16147. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16148. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16149. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16150. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16151. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16152. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16153. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16154. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16155. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16156. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16157. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16158. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16159. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16160. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16161. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16162. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16163. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16164. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16165. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16166. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16167. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16168. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16169. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16170. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16171. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16172. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16173. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16174. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16175. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16176. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16177. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16178. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16179. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16180. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16181. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16182. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16183. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16184. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16185. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16186. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16187. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16188. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16189. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16190. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16191. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16192. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16193. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16194. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16195. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16196. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16197. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16198. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16199. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16200. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16201. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16202. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16203. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16204. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16205. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16206. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16207. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16208. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16209. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16210. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16211. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16212. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16213. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16214. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16215. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16216. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16217. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16218. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16219. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16220. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16221. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16222. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16223. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16224. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16225. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16226. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16227. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16228. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16229. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16230. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16231. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16232. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16233. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16234. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16235. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16236. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16237. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16238. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16239. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16240. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16241. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16242. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16243. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16244. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16245. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16246. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16247. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16248. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16249. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16250. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16251. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16252. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16253. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16254. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16255. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16256. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16257. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16258. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16259. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16260. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16261. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16262. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16263. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16264. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16265. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16266. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16267. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16268. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16269. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16270. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16271. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16272. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16273. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16274. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16275. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16276. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16277. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16278. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16279. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16280. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16281. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16282. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16283. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16284. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16285. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16286. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16287. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16288. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16289. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16290. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16291. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16292. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16293. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16294. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16295. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16296. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16297. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16298. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16299. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16300. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16301. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16302. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16303. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16304. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16305. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16306. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16307. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16308. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16309. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16310. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16311. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16312. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16313. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16314. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16315. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16316. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16317. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16318. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16319. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16320. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16321. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16322. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16323. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16324. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16325. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16326. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16327. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16328. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16329. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16330. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16331. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16332. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16333. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16334. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16335. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16336. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16337. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16338. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16339. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16340. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16341. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16342. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16343. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16344. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16345. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16346. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16347. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16348. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16349. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16350. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16351. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16352. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16353. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16354. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16355. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16356. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16357. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16358. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16359. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16360. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16361. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16362. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16363. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16364. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16365. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16366. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16367. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16368. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16369. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16370. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16371. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16372. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16373. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16374. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16375. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16376. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16377. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16378. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16379. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16380. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16381. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16382. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16383. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16384. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16385. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16386. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16387. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16388. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16389. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16390. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16391. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16392. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16393. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16394. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16395. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16396. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16397. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16398. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16399. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16400. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16401. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16402. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16403. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16404. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16405. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16406. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16407. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16408. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16409. 0,
  16410. };
  16411. static float _vq_quantthresh__44c4_s_p1_0[] = {
  16412. -0.5, 0.5,
  16413. };
  16414. static long _vq_quantmap__44c4_s_p1_0[] = {
  16415. 1, 0, 2,
  16416. };
  16417. static encode_aux_threshmatch _vq_auxt__44c4_s_p1_0 = {
  16418. _vq_quantthresh__44c4_s_p1_0,
  16419. _vq_quantmap__44c4_s_p1_0,
  16420. 3,
  16421. 3
  16422. };
  16423. static static_codebook _44c4_s_p1_0 = {
  16424. 8, 6561,
  16425. _vq_lengthlist__44c4_s_p1_0,
  16426. 1, -535822336, 1611661312, 2, 0,
  16427. _vq_quantlist__44c4_s_p1_0,
  16428. NULL,
  16429. &_vq_auxt__44c4_s_p1_0,
  16430. NULL,
  16431. 0
  16432. };
  16433. static long _vq_quantlist__44c4_s_p2_0[] = {
  16434. 2,
  16435. 1,
  16436. 3,
  16437. 0,
  16438. 4,
  16439. };
  16440. static long _vq_lengthlist__44c4_s_p2_0[] = {
  16441. 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
  16442. 7, 7, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 8,
  16443. 7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
  16444. 0, 0, 5, 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0,
  16445. 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16446. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16447. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16448. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16449. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16450. 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0,
  16451. 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5,
  16452. 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9,
  16453. 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16454. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16455. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16456. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16457. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16458. 0, 0, 0, 5, 8, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7,
  16459. 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 8, 0,
  16460. 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0,
  16461. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16462. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16463. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16464. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16465. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16466. 7,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0,
  16467. 10,10, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0, 9,
  16468. 9, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
  16469. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16470. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16471. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16472. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16473. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16474. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16475. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16476. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16477. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16478. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16479. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16480. 0,
  16481. };
  16482. static float _vq_quantthresh__44c4_s_p2_0[] = {
  16483. -1.5, -0.5, 0.5, 1.5,
  16484. };
  16485. static long _vq_quantmap__44c4_s_p2_0[] = {
  16486. 3, 1, 0, 2, 4,
  16487. };
  16488. static encode_aux_threshmatch _vq_auxt__44c4_s_p2_0 = {
  16489. _vq_quantthresh__44c4_s_p2_0,
  16490. _vq_quantmap__44c4_s_p2_0,
  16491. 5,
  16492. 5
  16493. };
  16494. static static_codebook _44c4_s_p2_0 = {
  16495. 4, 625,
  16496. _vq_lengthlist__44c4_s_p2_0,
  16497. 1, -533725184, 1611661312, 3, 0,
  16498. _vq_quantlist__44c4_s_p2_0,
  16499. NULL,
  16500. &_vq_auxt__44c4_s_p2_0,
  16501. NULL,
  16502. 0
  16503. };
  16504. static long _vq_quantlist__44c4_s_p3_0[] = {
  16505. 2,
  16506. 1,
  16507. 3,
  16508. 0,
  16509. 4,
  16510. };
  16511. static long _vq_lengthlist__44c4_s_p3_0[] = {
  16512. 2, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16513. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 4, 6, 6, 0, 0,
  16514. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16515. 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16516. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
  16517. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16518. 0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  16519. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16520. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16521. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16522. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16523. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16524. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16525. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16526. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16527. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16528. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16529. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16530. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16531. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16532. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16533. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16534. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16535. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16536. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16537. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16538. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16539. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16540. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16541. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16542. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16543. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16544. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16545. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16546. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16547. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16548. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16549. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16550. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16551. 0,
  16552. };
  16553. static float _vq_quantthresh__44c4_s_p3_0[] = {
  16554. -1.5, -0.5, 0.5, 1.5,
  16555. };
  16556. static long _vq_quantmap__44c4_s_p3_0[] = {
  16557. 3, 1, 0, 2, 4,
  16558. };
  16559. static encode_aux_threshmatch _vq_auxt__44c4_s_p3_0 = {
  16560. _vq_quantthresh__44c4_s_p3_0,
  16561. _vq_quantmap__44c4_s_p3_0,
  16562. 5,
  16563. 5
  16564. };
  16565. static static_codebook _44c4_s_p3_0 = {
  16566. 4, 625,
  16567. _vq_lengthlist__44c4_s_p3_0,
  16568. 1, -533725184, 1611661312, 3, 0,
  16569. _vq_quantlist__44c4_s_p3_0,
  16570. NULL,
  16571. &_vq_auxt__44c4_s_p3_0,
  16572. NULL,
  16573. 0
  16574. };
  16575. static long _vq_quantlist__44c4_s_p4_0[] = {
  16576. 4,
  16577. 3,
  16578. 5,
  16579. 2,
  16580. 6,
  16581. 1,
  16582. 7,
  16583. 0,
  16584. 8,
  16585. };
  16586. static long _vq_lengthlist__44c4_s_p4_0[] = {
  16587. 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
  16588. 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
  16589. 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
  16590. 7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
  16591. 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16592. 0,
  16593. };
  16594. static float _vq_quantthresh__44c4_s_p4_0[] = {
  16595. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  16596. };
  16597. static long _vq_quantmap__44c4_s_p4_0[] = {
  16598. 7, 5, 3, 1, 0, 2, 4, 6,
  16599. 8,
  16600. };
  16601. static encode_aux_threshmatch _vq_auxt__44c4_s_p4_0 = {
  16602. _vq_quantthresh__44c4_s_p4_0,
  16603. _vq_quantmap__44c4_s_p4_0,
  16604. 9,
  16605. 9
  16606. };
  16607. static static_codebook _44c4_s_p4_0 = {
  16608. 2, 81,
  16609. _vq_lengthlist__44c4_s_p4_0,
  16610. 1, -531628032, 1611661312, 4, 0,
  16611. _vq_quantlist__44c4_s_p4_0,
  16612. NULL,
  16613. &_vq_auxt__44c4_s_p4_0,
  16614. NULL,
  16615. 0
  16616. };
  16617. static long _vq_quantlist__44c4_s_p5_0[] = {
  16618. 4,
  16619. 3,
  16620. 5,
  16621. 2,
  16622. 6,
  16623. 1,
  16624. 7,
  16625. 0,
  16626. 8,
  16627. };
  16628. static long _vq_lengthlist__44c4_s_p5_0[] = {
  16629. 2, 3, 3, 6, 6, 7, 7, 9, 9, 0, 4, 4, 7, 7, 7, 7,
  16630. 9, 9, 0, 4, 4, 7, 7, 7, 7, 9, 9, 0, 6, 6, 7, 7,
  16631. 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
  16632. 8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
  16633. 0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
  16634. 11,
  16635. };
  16636. static float _vq_quantthresh__44c4_s_p5_0[] = {
  16637. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  16638. };
  16639. static long _vq_quantmap__44c4_s_p5_0[] = {
  16640. 7, 5, 3, 1, 0, 2, 4, 6,
  16641. 8,
  16642. };
  16643. static encode_aux_threshmatch _vq_auxt__44c4_s_p5_0 = {
  16644. _vq_quantthresh__44c4_s_p5_0,
  16645. _vq_quantmap__44c4_s_p5_0,
  16646. 9,
  16647. 9
  16648. };
  16649. static static_codebook _44c4_s_p5_0 = {
  16650. 2, 81,
  16651. _vq_lengthlist__44c4_s_p5_0,
  16652. 1, -531628032, 1611661312, 4, 0,
  16653. _vq_quantlist__44c4_s_p5_0,
  16654. NULL,
  16655. &_vq_auxt__44c4_s_p5_0,
  16656. NULL,
  16657. 0
  16658. };
  16659. static long _vq_quantlist__44c4_s_p6_0[] = {
  16660. 8,
  16661. 7,
  16662. 9,
  16663. 6,
  16664. 10,
  16665. 5,
  16666. 11,
  16667. 4,
  16668. 12,
  16669. 3,
  16670. 13,
  16671. 2,
  16672. 14,
  16673. 1,
  16674. 15,
  16675. 0,
  16676. 16,
  16677. };
  16678. static long _vq_lengthlist__44c4_s_p6_0[] = {
  16679. 2, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,10, 9,10,10,11,
  16680. 11, 0, 4, 4, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
  16681. 11,11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,
  16682. 11,12,12, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
  16683. 11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
  16684. 10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10, 9,
  16685. 10,11,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10,
  16686. 10,11,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
  16687. 10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
  16688. 10,10,10,11,11,12,11,12,12, 0, 0, 0, 0, 0, 8, 8,
  16689. 9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8,
  16690. 8, 9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0,
  16691. 9, 9,10,10,11,10,11,11,12,12,12,12, 0, 0, 0, 0,
  16692. 0, 0, 0,10,10,10,10,11,11,12,12,13,12, 0, 0, 0,
  16693. 0, 0, 0, 0,11,11,11,11,11,12,12,12,13,12, 0, 0,
  16694. 0, 0, 0, 0, 0,11,11,11,11,11,11,12,12,13,13, 0,
  16695. 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,12,12,13,13,
  16696. 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,
  16697. 13,
  16698. };
  16699. static float _vq_quantthresh__44c4_s_p6_0[] = {
  16700. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  16701. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  16702. };
  16703. static long _vq_quantmap__44c4_s_p6_0[] = {
  16704. 15, 13, 11, 9, 7, 5, 3, 1,
  16705. 0, 2, 4, 6, 8, 10, 12, 14,
  16706. 16,
  16707. };
  16708. static encode_aux_threshmatch _vq_auxt__44c4_s_p6_0 = {
  16709. _vq_quantthresh__44c4_s_p6_0,
  16710. _vq_quantmap__44c4_s_p6_0,
  16711. 17,
  16712. 17
  16713. };
  16714. static static_codebook _44c4_s_p6_0 = {
  16715. 2, 289,
  16716. _vq_lengthlist__44c4_s_p6_0,
  16717. 1, -529530880, 1611661312, 5, 0,
  16718. _vq_quantlist__44c4_s_p6_0,
  16719. NULL,
  16720. &_vq_auxt__44c4_s_p6_0,
  16721. NULL,
  16722. 0
  16723. };
  16724. static long _vq_quantlist__44c4_s_p7_0[] = {
  16725. 1,
  16726. 0,
  16727. 2,
  16728. };
  16729. static long _vq_lengthlist__44c4_s_p7_0[] = {
  16730. 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
  16731. 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
  16732. 10,11,10,10, 6, 9, 9,10,10,10,10,10, 9, 6, 9, 9,
  16733. 10, 9,10,11, 9, 9, 7,10,10,11,11,11,11,10,10, 6,
  16734. 9, 9,10, 9, 9,10,10, 9, 6, 9, 9,10,10,10,10,10,
  16735. 10,
  16736. };
  16737. static float _vq_quantthresh__44c4_s_p7_0[] = {
  16738. -5.5, 5.5,
  16739. };
  16740. static long _vq_quantmap__44c4_s_p7_0[] = {
  16741. 1, 0, 2,
  16742. };
  16743. static encode_aux_threshmatch _vq_auxt__44c4_s_p7_0 = {
  16744. _vq_quantthresh__44c4_s_p7_0,
  16745. _vq_quantmap__44c4_s_p7_0,
  16746. 3,
  16747. 3
  16748. };
  16749. static static_codebook _44c4_s_p7_0 = {
  16750. 4, 81,
  16751. _vq_lengthlist__44c4_s_p7_0,
  16752. 1, -529137664, 1618345984, 2, 0,
  16753. _vq_quantlist__44c4_s_p7_0,
  16754. NULL,
  16755. &_vq_auxt__44c4_s_p7_0,
  16756. NULL,
  16757. 0
  16758. };
  16759. static long _vq_quantlist__44c4_s_p7_1[] = {
  16760. 5,
  16761. 4,
  16762. 6,
  16763. 3,
  16764. 7,
  16765. 2,
  16766. 8,
  16767. 1,
  16768. 9,
  16769. 0,
  16770. 10,
  16771. };
  16772. static long _vq_lengthlist__44c4_s_p7_1[] = {
  16773. 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6,
  16774. 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
  16775. 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
  16776. 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
  16777. 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
  16778. 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
  16779. 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 9,10,10,
  16780. 10,10,10, 8, 8, 8, 8, 8, 8,
  16781. };
  16782. static float _vq_quantthresh__44c4_s_p7_1[] = {
  16783. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  16784. 3.5, 4.5,
  16785. };
  16786. static long _vq_quantmap__44c4_s_p7_1[] = {
  16787. 9, 7, 5, 3, 1, 0, 2, 4,
  16788. 6, 8, 10,
  16789. };
  16790. static encode_aux_threshmatch _vq_auxt__44c4_s_p7_1 = {
  16791. _vq_quantthresh__44c4_s_p7_1,
  16792. _vq_quantmap__44c4_s_p7_1,
  16793. 11,
  16794. 11
  16795. };
  16796. static static_codebook _44c4_s_p7_1 = {
  16797. 2, 121,
  16798. _vq_lengthlist__44c4_s_p7_1,
  16799. 1, -531365888, 1611661312, 4, 0,
  16800. _vq_quantlist__44c4_s_p7_1,
  16801. NULL,
  16802. &_vq_auxt__44c4_s_p7_1,
  16803. NULL,
  16804. 0
  16805. };
  16806. static long _vq_quantlist__44c4_s_p8_0[] = {
  16807. 6,
  16808. 5,
  16809. 7,
  16810. 4,
  16811. 8,
  16812. 3,
  16813. 9,
  16814. 2,
  16815. 10,
  16816. 1,
  16817. 11,
  16818. 0,
  16819. 12,
  16820. };
  16821. static long _vq_lengthlist__44c4_s_p8_0[] = {
  16822. 1, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,10,10, 6, 5, 5,
  16823. 7, 7, 8, 8, 9, 9,10,10,11,11, 7, 5, 5, 7, 7, 8,
  16824. 8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
  16825. 10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
  16826. 11, 0,12,12, 9, 9, 9, 9,10,10,10,10,11,11, 0,12,
  16827. 12, 9, 8, 9, 9,10,10,11,11,12,11, 0, 0, 0, 9,10,
  16828. 9, 9,10,10,11,11,12,12, 0, 0, 0,10,10, 9, 9,10,
  16829. 10,11,11,12,12, 0, 0, 0,13,13,10,10,10,11,12,12,
  16830. 12,12, 0, 0, 0,14,14,10,10,11,11,11,11,12,12, 0,
  16831. 0, 0, 0, 0,11,12,11,11,12,12,12,13, 0, 0, 0, 0,
  16832. 0,12,12,11,11,12,12,13,13,
  16833. };
  16834. static float _vq_quantthresh__44c4_s_p8_0[] = {
  16835. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  16836. 12.5, 17.5, 22.5, 27.5,
  16837. };
  16838. static long _vq_quantmap__44c4_s_p8_0[] = {
  16839. 11, 9, 7, 5, 3, 1, 0, 2,
  16840. 4, 6, 8, 10, 12,
  16841. };
  16842. static encode_aux_threshmatch _vq_auxt__44c4_s_p8_0 = {
  16843. _vq_quantthresh__44c4_s_p8_0,
  16844. _vq_quantmap__44c4_s_p8_0,
  16845. 13,
  16846. 13
  16847. };
  16848. static static_codebook _44c4_s_p8_0 = {
  16849. 2, 169,
  16850. _vq_lengthlist__44c4_s_p8_0,
  16851. 1, -526516224, 1616117760, 4, 0,
  16852. _vq_quantlist__44c4_s_p8_0,
  16853. NULL,
  16854. &_vq_auxt__44c4_s_p8_0,
  16855. NULL,
  16856. 0
  16857. };
  16858. static long _vq_quantlist__44c4_s_p8_1[] = {
  16859. 2,
  16860. 1,
  16861. 3,
  16862. 0,
  16863. 4,
  16864. };
  16865. static long _vq_lengthlist__44c4_s_p8_1[] = {
  16866. 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6,
  16867. 5, 5, 5, 5, 6, 6, 6, 5, 5,
  16868. };
  16869. static float _vq_quantthresh__44c4_s_p8_1[] = {
  16870. -1.5, -0.5, 0.5, 1.5,
  16871. };
  16872. static long _vq_quantmap__44c4_s_p8_1[] = {
  16873. 3, 1, 0, 2, 4,
  16874. };
  16875. static encode_aux_threshmatch _vq_auxt__44c4_s_p8_1 = {
  16876. _vq_quantthresh__44c4_s_p8_1,
  16877. _vq_quantmap__44c4_s_p8_1,
  16878. 5,
  16879. 5
  16880. };
  16881. static static_codebook _44c4_s_p8_1 = {
  16882. 2, 25,
  16883. _vq_lengthlist__44c4_s_p8_1,
  16884. 1, -533725184, 1611661312, 3, 0,
  16885. _vq_quantlist__44c4_s_p8_1,
  16886. NULL,
  16887. &_vq_auxt__44c4_s_p8_1,
  16888. NULL,
  16889. 0
  16890. };
  16891. static long _vq_quantlist__44c4_s_p9_0[] = {
  16892. 6,
  16893. 5,
  16894. 7,
  16895. 4,
  16896. 8,
  16897. 3,
  16898. 9,
  16899. 2,
  16900. 10,
  16901. 1,
  16902. 11,
  16903. 0,
  16904. 12,
  16905. };
  16906. static long _vq_lengthlist__44c4_s_p9_0[] = {
  16907. 1, 3, 3,10,10,10,10,10,10,10,10,10,10, 5, 7, 7,
  16908. 10,10,10,10,10,10,10,10,10,10, 5, 7, 8,10,10,10,
  16909. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  16910. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  16911. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  16912. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  16913. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  16914. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  16915. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  16916. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  16917. 10,10,10,10,10, 9, 9, 9, 9,
  16918. };
  16919. static float _vq_quantthresh__44c4_s_p9_0[] = {
  16920. -1732.5, -1417.5, -1102.5, -787.5, -472.5, -157.5, 157.5, 472.5,
  16921. 787.5, 1102.5, 1417.5, 1732.5,
  16922. };
  16923. static long _vq_quantmap__44c4_s_p9_0[] = {
  16924. 11, 9, 7, 5, 3, 1, 0, 2,
  16925. 4, 6, 8, 10, 12,
  16926. };
  16927. static encode_aux_threshmatch _vq_auxt__44c4_s_p9_0 = {
  16928. _vq_quantthresh__44c4_s_p9_0,
  16929. _vq_quantmap__44c4_s_p9_0,
  16930. 13,
  16931. 13
  16932. };
  16933. static static_codebook _44c4_s_p9_0 = {
  16934. 2, 169,
  16935. _vq_lengthlist__44c4_s_p9_0,
  16936. 1, -513964032, 1628680192, 4, 0,
  16937. _vq_quantlist__44c4_s_p9_0,
  16938. NULL,
  16939. &_vq_auxt__44c4_s_p9_0,
  16940. NULL,
  16941. 0
  16942. };
  16943. static long _vq_quantlist__44c4_s_p9_1[] = {
  16944. 7,
  16945. 6,
  16946. 8,
  16947. 5,
  16948. 9,
  16949. 4,
  16950. 10,
  16951. 3,
  16952. 11,
  16953. 2,
  16954. 12,
  16955. 1,
  16956. 13,
  16957. 0,
  16958. 14,
  16959. };
  16960. static long _vq_lengthlist__44c4_s_p9_1[] = {
  16961. 1, 4, 4, 5, 6, 7, 7, 9, 9,11,11,12,12,12,13, 6,
  16962. 5, 5, 6, 7, 8, 8,10,10,11,11,13,13,13,13, 6, 5,
  16963. 5, 7, 7, 8, 8,11,10,11,11,12,13,12,13,17, 7, 7,
  16964. 8, 8, 9, 9,11,11,12,12,12,13,15,14,17, 7, 7, 8,
  16965. 8, 9, 9,11,10,12,12,13,13,14,13,17,11,12, 9, 9,
  16966. 10,10,12,12,13,13,14,14,14,14,17,12,11, 9, 8,11,
  16967. 10,11,12,13,13,13,14,14,14,17,17,17,11,11,11,11,
  16968. 13,13,13,13,14,13,15,14,17,17,17,11,10,11, 9,13,
  16969. 12,13,14,15,14,15,14,17,17,17,14,14,11,12,12,13,
  16970. 14,14,16,15,15,15,17,17,17,15,15,12,11,13,11,13,
  16971. 13,13,15,16,14,17,17,17,17,17,13,13,14,13,14,14,
  16972. 15,15,16,15,17,17,17,17,17,14,14,14,12,14,12,16,
  16973. 14,15,14,17,17,17,17,17,16,17,13,14,14,15,15,15,
  16974. 17,15,17,17,17,17,17,16,17,13,14,14,14,15,17,15,
  16975. 15,
  16976. };
  16977. static float _vq_quantthresh__44c4_s_p9_1[] = {
  16978. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  16979. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  16980. };
  16981. static long _vq_quantmap__44c4_s_p9_1[] = {
  16982. 13, 11, 9, 7, 5, 3, 1, 0,
  16983. 2, 4, 6, 8, 10, 12, 14,
  16984. };
  16985. static encode_aux_threshmatch _vq_auxt__44c4_s_p9_1 = {
  16986. _vq_quantthresh__44c4_s_p9_1,
  16987. _vq_quantmap__44c4_s_p9_1,
  16988. 15,
  16989. 15
  16990. };
  16991. static static_codebook _44c4_s_p9_1 = {
  16992. 2, 225,
  16993. _vq_lengthlist__44c4_s_p9_1,
  16994. 1, -520986624, 1620377600, 4, 0,
  16995. _vq_quantlist__44c4_s_p9_1,
  16996. NULL,
  16997. &_vq_auxt__44c4_s_p9_1,
  16998. NULL,
  16999. 0
  17000. };
  17001. static long _vq_quantlist__44c4_s_p9_2[] = {
  17002. 10,
  17003. 9,
  17004. 11,
  17005. 8,
  17006. 12,
  17007. 7,
  17008. 13,
  17009. 6,
  17010. 14,
  17011. 5,
  17012. 15,
  17013. 4,
  17014. 16,
  17015. 3,
  17016. 17,
  17017. 2,
  17018. 18,
  17019. 1,
  17020. 19,
  17021. 0,
  17022. 20,
  17023. };
  17024. static long _vq_lengthlist__44c4_s_p9_2[] = {
  17025. 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9,
  17026. 9, 9, 9, 9, 9,11, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8,
  17027. 9, 9, 9, 9, 9, 9, 9, 9,10,10,11, 5, 5, 7, 7, 7,
  17028. 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
  17029. 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10,
  17030. 10,10,10,10,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
  17031. 9, 9, 9,10,10,10,10,10,10,11,11,11, 8, 8, 8, 8,
  17032. 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,11,11,
  17033. 11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,
  17034. 10,10,10,11,11,11, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
  17035. 10,10,10,10,10,10,10,10,11,11,11,11,11, 8, 8, 9,
  17036. 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,11,11,11,
  17037. 11,11, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
  17038. 10,10,11,11,11,11,11, 9, 9, 9, 9, 9,10,10,10,10,
  17039. 10,10,10,10,10,10,10,11,11,11,11,11, 9, 9, 9, 9,
  17040. 10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,
  17041. 11,11,11, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,
  17042. 10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
  17043. 10,10,10,10,10,10,11,11,11,11,11,11,11,10,10, 9,
  17044. 10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,
  17045. 11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  17046. 11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
  17047. 10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
  17048. 10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
  17049. 12,11,11,10,10,10,10,10,10,10,10,10,10,10,10,12,
  17050. 11,12,12,11,11,11,11,11,10,10,10,10,10,10,10,10,
  17051. 10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,
  17052. 10,10,10,10,10,10,10,10,10,
  17053. };
  17054. static float _vq_quantthresh__44c4_s_p9_2[] = {
  17055. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  17056. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  17057. 6.5, 7.5, 8.5, 9.5,
  17058. };
  17059. static long _vq_quantmap__44c4_s_p9_2[] = {
  17060. 19, 17, 15, 13, 11, 9, 7, 5,
  17061. 3, 1, 0, 2, 4, 6, 8, 10,
  17062. 12, 14, 16, 18, 20,
  17063. };
  17064. static encode_aux_threshmatch _vq_auxt__44c4_s_p9_2 = {
  17065. _vq_quantthresh__44c4_s_p9_2,
  17066. _vq_quantmap__44c4_s_p9_2,
  17067. 21,
  17068. 21
  17069. };
  17070. static static_codebook _44c4_s_p9_2 = {
  17071. 2, 441,
  17072. _vq_lengthlist__44c4_s_p9_2,
  17073. 1, -529268736, 1611661312, 5, 0,
  17074. _vq_quantlist__44c4_s_p9_2,
  17075. NULL,
  17076. &_vq_auxt__44c4_s_p9_2,
  17077. NULL,
  17078. 0
  17079. };
  17080. static long _huff_lengthlist__44c4_s_short[] = {
  17081. 4, 9,13,12,16,11,12,15,15,16, 4, 2,11, 5,10, 6,
  17082. 8,11,14,14,13,11, 8,11, 7, 8,10,13,17,17,10, 4,
  17083. 11, 5, 9, 6, 9,13,17,17,13, 9, 6, 9, 5, 5, 7,11,
  17084. 15,17,10, 5, 7, 6, 5, 4, 7,10,15,15,10, 7, 9, 8,
  17085. 7, 6, 7,10,14,13,13,10,11,10, 8, 7, 8,10,14,14,
  17086. 12,11,10, 9, 6, 5, 6, 9,13,17,14,13,11,10, 6, 6,
  17087. 6, 8,11,16,
  17088. };
  17089. static static_codebook _huff_book__44c4_s_short = {
  17090. 2, 100,
  17091. _huff_lengthlist__44c4_s_short,
  17092. 0, 0, 0, 0, 0,
  17093. NULL,
  17094. NULL,
  17095. NULL,
  17096. NULL,
  17097. 0
  17098. };
  17099. static long _huff_lengthlist__44c5_s_long[] = {
  17100. 3, 6, 9,14,11,13,12,12,12,12, 6, 3, 5, 8, 6, 8,
  17101. 10,11,12,14, 9, 5, 4,10, 5, 7, 8, 9,11,12,13, 8,
  17102. 10, 9, 9, 9,12,15,16,17,10, 6, 5, 9, 3, 5, 6, 8,
  17103. 10,12,10, 8, 7, 9, 5, 5, 6, 8,10,11,10, 9, 8,11,
  17104. 6, 6, 6, 7, 8,10,12,11, 9,13, 8, 7, 6, 6, 7, 9,
  17105. 11,13,10,15, 9, 9, 7, 7, 7, 8,10,15,10,17,11,10,
  17106. 9, 8, 7, 7,
  17107. };
  17108. static static_codebook _huff_book__44c5_s_long = {
  17109. 2, 100,
  17110. _huff_lengthlist__44c5_s_long,
  17111. 0, 0, 0, 0, 0,
  17112. NULL,
  17113. NULL,
  17114. NULL,
  17115. NULL,
  17116. 0
  17117. };
  17118. static long _vq_quantlist__44c5_s_p1_0[] = {
  17119. 1,
  17120. 0,
  17121. 2,
  17122. };
  17123. static long _vq_lengthlist__44c5_s_p1_0[] = {
  17124. 2, 4, 4, 0, 0, 0, 0, 0, 0, 4, 7, 6, 0, 0, 0, 0,
  17125. 0, 0, 4, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17126. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17127. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17128. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17129. 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
  17130. 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17131. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17132. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17133. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17134. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
  17135. 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17136. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17137. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17138. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17139. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17140. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17141. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17142. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17143. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17144. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17145. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17146. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17147. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17148. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17149. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17150. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17151. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17152. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17153. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17154. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17155. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17156. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17157. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17158. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17159. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17160. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17161. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17162. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17163. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17164. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17165. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17166. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17167. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17168. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17169. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
  17170. 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  17171. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17172. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17173. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17174. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
  17175. 0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
  17176. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17177. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17178. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17179. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 9, 8, 0, 0,
  17180. 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
  17181. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17182. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17183. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17184. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17185. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17186. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17187. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17188. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17189. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17190. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17191. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17192. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17193. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17194. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17195. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17196. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17197. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17198. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17199. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17200. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17201. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17202. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17203. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17204. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17205. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17206. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17207. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17208. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17209. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17210. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17211. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17212. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17213. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17214. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17215. 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  17216. 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17217. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17218. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17219. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17220. 0, 0, 0, 6, 9, 8, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
  17221. 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
  17222. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17223. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17224. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17225. 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
  17226. 0, 0, 0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 0,
  17227. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17228. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17229. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17230. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17231. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17232. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17233. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17234. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17235. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17236. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17237. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17238. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17239. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17240. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17241. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17242. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17243. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17244. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17245. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17246. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17247. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17248. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17249. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17250. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17251. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17252. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17253. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17254. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17255. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17256. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17257. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17258. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17259. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17260. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17261. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17262. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17263. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17264. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17265. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17266. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17267. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17268. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17269. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17270. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17271. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17272. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17273. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17274. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17275. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17276. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17277. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17278. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17279. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17280. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17281. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17282. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17283. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17284. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17285. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17286. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17287. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17288. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17289. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17290. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17291. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17292. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17293. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17294. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17295. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17296. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17297. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17298. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17299. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17300. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17301. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17302. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17303. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17304. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17305. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17306. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17307. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17308. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17309. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17310. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17311. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17312. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17313. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17314. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17315. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17316. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17317. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17318. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17319. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17320. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17321. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17322. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17323. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17324. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17325. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17326. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17327. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17328. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17329. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17330. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17331. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17332. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17333. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17334. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17335. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17336. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17337. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17338. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17339. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17340. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17341. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17342. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17343. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17344. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17345. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17346. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17347. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17348. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17349. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17350. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17351. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17352. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17353. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17354. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17355. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17356. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17357. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17358. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17359. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17360. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17361. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17362. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17363. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17364. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17365. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17366. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17367. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17368. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17369. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17370. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17371. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17372. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17373. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17374. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17375. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17376. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17377. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17378. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17379. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17380. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17381. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17382. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17383. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17384. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17385. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17386. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17387. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17388. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17389. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17390. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17391. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17392. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17393. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17394. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17395. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17396. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17397. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17398. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17399. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17400. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17401. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17402. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17403. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17404. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17405. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17406. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17407. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17408. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17409. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17410. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17411. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17412. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17413. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17414. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17415. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17416. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17417. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17418. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17419. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17420. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17421. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17422. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17423. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17424. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17425. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17426. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17427. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17428. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17429. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17430. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17431. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17432. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17433. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17434. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17435. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17436. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17437. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17438. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17439. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17440. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17441. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17442. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17443. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17444. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17445. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17446. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17447. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17448. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17449. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17450. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17451. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17452. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17453. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17454. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17455. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17456. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17457. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17458. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17459. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17460. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17461. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17462. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17463. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17464. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17465. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17466. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17467. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17468. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17469. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17470. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17471. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17472. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17473. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17474. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17475. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17476. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17477. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17478. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17479. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17480. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17481. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17482. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17483. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17484. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17485. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17486. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17487. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17488. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17489. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17490. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17491. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17492. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17493. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17494. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17495. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17496. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17497. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17498. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17499. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17500. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17501. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17502. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17503. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17504. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17505. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17506. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17507. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17508. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17509. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17510. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17511. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17512. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17513. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17514. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17515. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17516. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17517. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17518. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17519. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17520. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17521. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17522. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17523. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17524. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17525. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17526. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17527. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17528. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17529. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17530. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17531. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17532. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17533. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17534. 0,
  17535. };
  17536. static float _vq_quantthresh__44c5_s_p1_0[] = {
  17537. -0.5, 0.5,
  17538. };
  17539. static long _vq_quantmap__44c5_s_p1_0[] = {
  17540. 1, 0, 2,
  17541. };
  17542. static encode_aux_threshmatch _vq_auxt__44c5_s_p1_0 = {
  17543. _vq_quantthresh__44c5_s_p1_0,
  17544. _vq_quantmap__44c5_s_p1_0,
  17545. 3,
  17546. 3
  17547. };
  17548. static static_codebook _44c5_s_p1_0 = {
  17549. 8, 6561,
  17550. _vq_lengthlist__44c5_s_p1_0,
  17551. 1, -535822336, 1611661312, 2, 0,
  17552. _vq_quantlist__44c5_s_p1_0,
  17553. NULL,
  17554. &_vq_auxt__44c5_s_p1_0,
  17555. NULL,
  17556. 0
  17557. };
  17558. static long _vq_quantlist__44c5_s_p2_0[] = {
  17559. 2,
  17560. 1,
  17561. 3,
  17562. 0,
  17563. 4,
  17564. };
  17565. static long _vq_lengthlist__44c5_s_p2_0[] = {
  17566. 2, 4, 4, 0, 0, 0, 6, 5, 0, 0, 0, 5, 5, 0, 0, 0,
  17567. 7, 7, 0, 0, 0, 0, 0, 0, 0, 4, 6, 5, 0, 0, 0, 8,
  17568. 7, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0,
  17569. 0, 0, 4, 5, 6, 0, 0, 0, 7, 8, 0, 0, 0, 7, 8, 0,
  17570. 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17571. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17572. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17573. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17574. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17575. 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 8, 8, 0, 0,
  17576. 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 6,
  17577. 7, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,
  17578. 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17579. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17580. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17581. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17582. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17583. 0, 0, 0, 6, 8, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8,
  17584. 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 0,
  17585. 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0,
  17586. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17587. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17588. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17589. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17590. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17591. 7, 9, 9, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0,
  17592. 10,10, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,10,
  17593. 10, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
  17594. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17595. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17596. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17597. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17598. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17599. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17600. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17601. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17602. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17603. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17604. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17605. 0,
  17606. };
  17607. static float _vq_quantthresh__44c5_s_p2_0[] = {
  17608. -1.5, -0.5, 0.5, 1.5,
  17609. };
  17610. static long _vq_quantmap__44c5_s_p2_0[] = {
  17611. 3, 1, 0, 2, 4,
  17612. };
  17613. static encode_aux_threshmatch _vq_auxt__44c5_s_p2_0 = {
  17614. _vq_quantthresh__44c5_s_p2_0,
  17615. _vq_quantmap__44c5_s_p2_0,
  17616. 5,
  17617. 5
  17618. };
  17619. static static_codebook _44c5_s_p2_0 = {
  17620. 4, 625,
  17621. _vq_lengthlist__44c5_s_p2_0,
  17622. 1, -533725184, 1611661312, 3, 0,
  17623. _vq_quantlist__44c5_s_p2_0,
  17624. NULL,
  17625. &_vq_auxt__44c5_s_p2_0,
  17626. NULL,
  17627. 0
  17628. };
  17629. static long _vq_quantlist__44c5_s_p3_0[] = {
  17630. 2,
  17631. 1,
  17632. 3,
  17633. 0,
  17634. 4,
  17635. };
  17636. static long _vq_lengthlist__44c5_s_p3_0[] = {
  17637. 2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17638. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
  17639. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17640. 0, 0, 4, 4, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17641. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
  17642. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17643. 0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  17644. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17645. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17646. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17647. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17648. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17649. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17650. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17651. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17652. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17653. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17654. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17655. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17656. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17657. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17658. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17659. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17660. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17661. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17662. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17663. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17664. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17665. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17666. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17667. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17668. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17669. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17670. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17671. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17672. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17673. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17674. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17675. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17676. 0,
  17677. };
  17678. static float _vq_quantthresh__44c5_s_p3_0[] = {
  17679. -1.5, -0.5, 0.5, 1.5,
  17680. };
  17681. static long _vq_quantmap__44c5_s_p3_0[] = {
  17682. 3, 1, 0, 2, 4,
  17683. };
  17684. static encode_aux_threshmatch _vq_auxt__44c5_s_p3_0 = {
  17685. _vq_quantthresh__44c5_s_p3_0,
  17686. _vq_quantmap__44c5_s_p3_0,
  17687. 5,
  17688. 5
  17689. };
  17690. static static_codebook _44c5_s_p3_0 = {
  17691. 4, 625,
  17692. _vq_lengthlist__44c5_s_p3_0,
  17693. 1, -533725184, 1611661312, 3, 0,
  17694. _vq_quantlist__44c5_s_p3_0,
  17695. NULL,
  17696. &_vq_auxt__44c5_s_p3_0,
  17697. NULL,
  17698. 0
  17699. };
  17700. static long _vq_quantlist__44c5_s_p4_0[] = {
  17701. 4,
  17702. 3,
  17703. 5,
  17704. 2,
  17705. 6,
  17706. 1,
  17707. 7,
  17708. 0,
  17709. 8,
  17710. };
  17711. static long _vq_lengthlist__44c5_s_p4_0[] = {
  17712. 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
  17713. 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
  17714. 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
  17715. 8, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
  17716. 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17717. 0,
  17718. };
  17719. static float _vq_quantthresh__44c5_s_p4_0[] = {
  17720. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  17721. };
  17722. static long _vq_quantmap__44c5_s_p4_0[] = {
  17723. 7, 5, 3, 1, 0, 2, 4, 6,
  17724. 8,
  17725. };
  17726. static encode_aux_threshmatch _vq_auxt__44c5_s_p4_0 = {
  17727. _vq_quantthresh__44c5_s_p4_0,
  17728. _vq_quantmap__44c5_s_p4_0,
  17729. 9,
  17730. 9
  17731. };
  17732. static static_codebook _44c5_s_p4_0 = {
  17733. 2, 81,
  17734. _vq_lengthlist__44c5_s_p4_0,
  17735. 1, -531628032, 1611661312, 4, 0,
  17736. _vq_quantlist__44c5_s_p4_0,
  17737. NULL,
  17738. &_vq_auxt__44c5_s_p4_0,
  17739. NULL,
  17740. 0
  17741. };
  17742. static long _vq_quantlist__44c5_s_p5_0[] = {
  17743. 4,
  17744. 3,
  17745. 5,
  17746. 2,
  17747. 6,
  17748. 1,
  17749. 7,
  17750. 0,
  17751. 8,
  17752. };
  17753. static long _vq_lengthlist__44c5_s_p5_0[] = {
  17754. 2, 3, 4, 5, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
  17755. 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7,
  17756. 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
  17757. 7, 7, 8, 8,10,10, 0, 0, 0, 7, 8, 8, 8,10,10, 0,
  17758. 0, 0, 9, 9, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
  17759. 10,
  17760. };
  17761. static float _vq_quantthresh__44c5_s_p5_0[] = {
  17762. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  17763. };
  17764. static long _vq_quantmap__44c5_s_p5_0[] = {
  17765. 7, 5, 3, 1, 0, 2, 4, 6,
  17766. 8,
  17767. };
  17768. static encode_aux_threshmatch _vq_auxt__44c5_s_p5_0 = {
  17769. _vq_quantthresh__44c5_s_p5_0,
  17770. _vq_quantmap__44c5_s_p5_0,
  17771. 9,
  17772. 9
  17773. };
  17774. static static_codebook _44c5_s_p5_0 = {
  17775. 2, 81,
  17776. _vq_lengthlist__44c5_s_p5_0,
  17777. 1, -531628032, 1611661312, 4, 0,
  17778. _vq_quantlist__44c5_s_p5_0,
  17779. NULL,
  17780. &_vq_auxt__44c5_s_p5_0,
  17781. NULL,
  17782. 0
  17783. };
  17784. static long _vq_quantlist__44c5_s_p6_0[] = {
  17785. 8,
  17786. 7,
  17787. 9,
  17788. 6,
  17789. 10,
  17790. 5,
  17791. 11,
  17792. 4,
  17793. 12,
  17794. 3,
  17795. 13,
  17796. 2,
  17797. 14,
  17798. 1,
  17799. 15,
  17800. 0,
  17801. 16,
  17802. };
  17803. static long _vq_lengthlist__44c5_s_p6_0[] = {
  17804. 2, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,12,
  17805. 12, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,
  17806. 12,12, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,
  17807. 11,12,12, 0, 6, 6, 7, 7, 8, 8, 9,10,10,10,11,11,
  17808. 11,12,12,12, 0, 0, 0, 7, 7, 8, 8,10,10,10,10,11,
  17809. 11,12,12,12,12, 0, 0, 0, 7, 7, 9, 9,10,10,10,10,
  17810. 11,11,12,12,12,12, 0, 0, 0, 7, 7, 8, 9,10,10,10,
  17811. 10,11,11,12,12,12,13, 0, 0, 0, 8, 8, 9, 9,10,10,
  17812. 10,10,11,11,12,12,13,12, 0, 0, 0, 0, 0, 9, 9,10,
  17813. 10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8,
  17814. 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8,
  17815. 8, 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
  17816. 9, 9,10,10,11,11,11,12,12,12,13,13, 0, 0, 0, 0,
  17817. 0, 0, 0,10,10,11,11,11,12,12,12,13,13, 0, 0, 0,
  17818. 0, 0, 0, 0,11,11,11,11,12,12,12,13,13,13, 0, 0,
  17819. 0, 0, 0, 0, 0,11,11,11,11,12,12,13,12,13,13, 0,
  17820. 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,13,
  17821. 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,
  17822. 13,
  17823. };
  17824. static float _vq_quantthresh__44c5_s_p6_0[] = {
  17825. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  17826. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  17827. };
  17828. static long _vq_quantmap__44c5_s_p6_0[] = {
  17829. 15, 13, 11, 9, 7, 5, 3, 1,
  17830. 0, 2, 4, 6, 8, 10, 12, 14,
  17831. 16,
  17832. };
  17833. static encode_aux_threshmatch _vq_auxt__44c5_s_p6_0 = {
  17834. _vq_quantthresh__44c5_s_p6_0,
  17835. _vq_quantmap__44c5_s_p6_0,
  17836. 17,
  17837. 17
  17838. };
  17839. static static_codebook _44c5_s_p6_0 = {
  17840. 2, 289,
  17841. _vq_lengthlist__44c5_s_p6_0,
  17842. 1, -529530880, 1611661312, 5, 0,
  17843. _vq_quantlist__44c5_s_p6_0,
  17844. NULL,
  17845. &_vq_auxt__44c5_s_p6_0,
  17846. NULL,
  17847. 0
  17848. };
  17849. static long _vq_quantlist__44c5_s_p7_0[] = {
  17850. 1,
  17851. 0,
  17852. 2,
  17853. };
  17854. static long _vq_lengthlist__44c5_s_p7_0[] = {
  17855. 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
  17856. 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
  17857. 10,11,10,10, 6, 9, 9,10,10, 9,11,10,10, 6, 9, 9,
  17858. 10, 9,10,11,10, 9, 7,10,10,11,11,11,11,10,10, 6,
  17859. 9, 9,10,10, 9,10, 9, 9, 6, 9, 9,10,10,10,11, 9,
  17860. 9,
  17861. };
  17862. static float _vq_quantthresh__44c5_s_p7_0[] = {
  17863. -5.5, 5.5,
  17864. };
  17865. static long _vq_quantmap__44c5_s_p7_0[] = {
  17866. 1, 0, 2,
  17867. };
  17868. static encode_aux_threshmatch _vq_auxt__44c5_s_p7_0 = {
  17869. _vq_quantthresh__44c5_s_p7_0,
  17870. _vq_quantmap__44c5_s_p7_0,
  17871. 3,
  17872. 3
  17873. };
  17874. static static_codebook _44c5_s_p7_0 = {
  17875. 4, 81,
  17876. _vq_lengthlist__44c5_s_p7_0,
  17877. 1, -529137664, 1618345984, 2, 0,
  17878. _vq_quantlist__44c5_s_p7_0,
  17879. NULL,
  17880. &_vq_auxt__44c5_s_p7_0,
  17881. NULL,
  17882. 0
  17883. };
  17884. static long _vq_quantlist__44c5_s_p7_1[] = {
  17885. 5,
  17886. 4,
  17887. 6,
  17888. 3,
  17889. 7,
  17890. 2,
  17891. 8,
  17892. 1,
  17893. 9,
  17894. 0,
  17895. 10,
  17896. };
  17897. static long _vq_lengthlist__44c5_s_p7_1[] = {
  17898. 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6,
  17899. 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
  17900. 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
  17901. 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
  17902. 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
  17903. 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
  17904. 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 9, 8,10,10,
  17905. 10,10,10, 8, 8, 8, 8, 8, 8,
  17906. };
  17907. static float _vq_quantthresh__44c5_s_p7_1[] = {
  17908. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  17909. 3.5, 4.5,
  17910. };
  17911. static long _vq_quantmap__44c5_s_p7_1[] = {
  17912. 9, 7, 5, 3, 1, 0, 2, 4,
  17913. 6, 8, 10,
  17914. };
  17915. static encode_aux_threshmatch _vq_auxt__44c5_s_p7_1 = {
  17916. _vq_quantthresh__44c5_s_p7_1,
  17917. _vq_quantmap__44c5_s_p7_1,
  17918. 11,
  17919. 11
  17920. };
  17921. static static_codebook _44c5_s_p7_1 = {
  17922. 2, 121,
  17923. _vq_lengthlist__44c5_s_p7_1,
  17924. 1, -531365888, 1611661312, 4, 0,
  17925. _vq_quantlist__44c5_s_p7_1,
  17926. NULL,
  17927. &_vq_auxt__44c5_s_p7_1,
  17928. NULL,
  17929. 0
  17930. };
  17931. static long _vq_quantlist__44c5_s_p8_0[] = {
  17932. 6,
  17933. 5,
  17934. 7,
  17935. 4,
  17936. 8,
  17937. 3,
  17938. 9,
  17939. 2,
  17940. 10,
  17941. 1,
  17942. 11,
  17943. 0,
  17944. 12,
  17945. };
  17946. static long _vq_lengthlist__44c5_s_p8_0[] = {
  17947. 1, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,10,10, 6, 5, 5,
  17948. 7, 7, 8, 8, 9, 9,10,10,10,10, 7, 5, 5, 7, 7, 8,
  17949. 8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
  17950. 10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
  17951. 11, 0,11,12, 9, 9, 9, 9, 9,10,10,10,11,11, 0,13,
  17952. 12, 9, 9, 9, 9,10,10,11,11,11,11, 0, 0, 0, 9,10,
  17953. 9, 9,10,10,11,11,12,11, 0, 0, 0,10,10, 9, 9,10,
  17954. 10,11,11,12,12, 0, 0, 0,13,13,10,10,11,11,11,12,
  17955. 12,12, 0, 0, 0,14,14,10,10,11,11,11,11,12,12, 0,
  17956. 0, 0, 0, 0,12,12,11,11,12,12,13,13, 0, 0, 0, 0,
  17957. 0,12,12,11,11,12,12,13,13,
  17958. };
  17959. static float _vq_quantthresh__44c5_s_p8_0[] = {
  17960. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  17961. 12.5, 17.5, 22.5, 27.5,
  17962. };
  17963. static long _vq_quantmap__44c5_s_p8_0[] = {
  17964. 11, 9, 7, 5, 3, 1, 0, 2,
  17965. 4, 6, 8, 10, 12,
  17966. };
  17967. static encode_aux_threshmatch _vq_auxt__44c5_s_p8_0 = {
  17968. _vq_quantthresh__44c5_s_p8_0,
  17969. _vq_quantmap__44c5_s_p8_0,
  17970. 13,
  17971. 13
  17972. };
  17973. static static_codebook _44c5_s_p8_0 = {
  17974. 2, 169,
  17975. _vq_lengthlist__44c5_s_p8_0,
  17976. 1, -526516224, 1616117760, 4, 0,
  17977. _vq_quantlist__44c5_s_p8_0,
  17978. NULL,
  17979. &_vq_auxt__44c5_s_p8_0,
  17980. NULL,
  17981. 0
  17982. };
  17983. static long _vq_quantlist__44c5_s_p8_1[] = {
  17984. 2,
  17985. 1,
  17986. 3,
  17987. 0,
  17988. 4,
  17989. };
  17990. static long _vq_lengthlist__44c5_s_p8_1[] = {
  17991. 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6,
  17992. 5, 5, 5, 5, 6, 6, 6, 5, 5,
  17993. };
  17994. static float _vq_quantthresh__44c5_s_p8_1[] = {
  17995. -1.5, -0.5, 0.5, 1.5,
  17996. };
  17997. static long _vq_quantmap__44c5_s_p8_1[] = {
  17998. 3, 1, 0, 2, 4,
  17999. };
  18000. static encode_aux_threshmatch _vq_auxt__44c5_s_p8_1 = {
  18001. _vq_quantthresh__44c5_s_p8_1,
  18002. _vq_quantmap__44c5_s_p8_1,
  18003. 5,
  18004. 5
  18005. };
  18006. static static_codebook _44c5_s_p8_1 = {
  18007. 2, 25,
  18008. _vq_lengthlist__44c5_s_p8_1,
  18009. 1, -533725184, 1611661312, 3, 0,
  18010. _vq_quantlist__44c5_s_p8_1,
  18011. NULL,
  18012. &_vq_auxt__44c5_s_p8_1,
  18013. NULL,
  18014. 0
  18015. };
  18016. static long _vq_quantlist__44c5_s_p9_0[] = {
  18017. 7,
  18018. 6,
  18019. 8,
  18020. 5,
  18021. 9,
  18022. 4,
  18023. 10,
  18024. 3,
  18025. 11,
  18026. 2,
  18027. 12,
  18028. 1,
  18029. 13,
  18030. 0,
  18031. 14,
  18032. };
  18033. static long _vq_lengthlist__44c5_s_p9_0[] = {
  18034. 1, 3, 3,11,11,11,11,11,11,11,11,11,11,11,11, 5,
  18035. 7, 7,11,11,11,11,11,11,11,11,11,11,11,11, 5, 9,
  18036. 7,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  18037. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  18038. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  18039. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  18040. 11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,
  18041. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  18042. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  18043. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  18044. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  18045. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  18046. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  18047. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  18048. 10,
  18049. };
  18050. static float _vq_quantthresh__44c5_s_p9_0[] = {
  18051. -2320.5, -1963.5, -1606.5, -1249.5, -892.5, -535.5, -178.5, 178.5,
  18052. 535.5, 892.5, 1249.5, 1606.5, 1963.5, 2320.5,
  18053. };
  18054. static long _vq_quantmap__44c5_s_p9_0[] = {
  18055. 13, 11, 9, 7, 5, 3, 1, 0,
  18056. 2, 4, 6, 8, 10, 12, 14,
  18057. };
  18058. static encode_aux_threshmatch _vq_auxt__44c5_s_p9_0 = {
  18059. _vq_quantthresh__44c5_s_p9_0,
  18060. _vq_quantmap__44c5_s_p9_0,
  18061. 15,
  18062. 15
  18063. };
  18064. static static_codebook _44c5_s_p9_0 = {
  18065. 2, 225,
  18066. _vq_lengthlist__44c5_s_p9_0,
  18067. 1, -512522752, 1628852224, 4, 0,
  18068. _vq_quantlist__44c5_s_p9_0,
  18069. NULL,
  18070. &_vq_auxt__44c5_s_p9_0,
  18071. NULL,
  18072. 0
  18073. };
  18074. static long _vq_quantlist__44c5_s_p9_1[] = {
  18075. 8,
  18076. 7,
  18077. 9,
  18078. 6,
  18079. 10,
  18080. 5,
  18081. 11,
  18082. 4,
  18083. 12,
  18084. 3,
  18085. 13,
  18086. 2,
  18087. 14,
  18088. 1,
  18089. 15,
  18090. 0,
  18091. 16,
  18092. };
  18093. static long _vq_lengthlist__44c5_s_p9_1[] = {
  18094. 1, 4, 4, 6, 6, 8, 7, 9, 9,10,10,11,11,12,12,13,
  18095. 13, 6, 5, 5, 6, 6, 8, 8,10,10,11,11,12,12,13,13,
  18096. 13,13, 6, 5, 5, 7, 7, 8, 8,10,10,11,11,12,12,13,
  18097. 13,13,13,18, 7, 7, 8, 8, 9, 9,10,11,11,11,12,12,
  18098. 13,13,13,14,18, 7, 7, 8, 8, 9, 9,11,10,12,12,13,
  18099. 13,13,13,14,15,18,12,12, 9, 9,10,10,11,11,12,12,
  18100. 13,13,13,14,14,14,18,12,12, 9, 8,10,10,11,11,12,
  18101. 12,14,13,13,14,15,15,18,16,18,11,11,11,11,12,12,
  18102. 13,13,13,14,14,14,14,15,17,18,17,11,10,11, 9,12,
  18103. 13,13,13,14,14,13,14,14,14,18,18,18,13,14,11,12,
  18104. 12,12,13,14,13,13,14,15,16,15,18,18,18,15,13,12,
  18105. 9,12,11,13,14,14,15,14,14,16,14,18,18,18,18,18,
  18106. 12,13,13,13,13,14,15,14,15,15,15,15,18,18,18,18,
  18107. 17,14,12,13,11,14,12,15,14,14,15,16,15,18,18,18,
  18108. 17,18,15,18,13,13,14,13,15,14,16,15,17,16,18,18,
  18109. 17,18,18,15,17,14,13,14,12,14,14,15,15,15,15,18,
  18110. 18,18,17,17,18,18,14,15,14,14,14,14,15,14,16,16,
  18111. 17,18,18,18,18,17,17,15,15,13,13,15,13,15,13,15,
  18112. 15,
  18113. };
  18114. static float _vq_quantthresh__44c5_s_p9_1[] = {
  18115. -157.5, -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5,
  18116. 10.5, 31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 157.5,
  18117. };
  18118. static long _vq_quantmap__44c5_s_p9_1[] = {
  18119. 15, 13, 11, 9, 7, 5, 3, 1,
  18120. 0, 2, 4, 6, 8, 10, 12, 14,
  18121. 16,
  18122. };
  18123. static encode_aux_threshmatch _vq_auxt__44c5_s_p9_1 = {
  18124. _vq_quantthresh__44c5_s_p9_1,
  18125. _vq_quantmap__44c5_s_p9_1,
  18126. 17,
  18127. 17
  18128. };
  18129. static static_codebook _44c5_s_p9_1 = {
  18130. 2, 289,
  18131. _vq_lengthlist__44c5_s_p9_1,
  18132. 1, -520814592, 1620377600, 5, 0,
  18133. _vq_quantlist__44c5_s_p9_1,
  18134. NULL,
  18135. &_vq_auxt__44c5_s_p9_1,
  18136. NULL,
  18137. 0
  18138. };
  18139. static long _vq_quantlist__44c5_s_p9_2[] = {
  18140. 10,
  18141. 9,
  18142. 11,
  18143. 8,
  18144. 12,
  18145. 7,
  18146. 13,
  18147. 6,
  18148. 14,
  18149. 5,
  18150. 15,
  18151. 4,
  18152. 16,
  18153. 3,
  18154. 17,
  18155. 2,
  18156. 18,
  18157. 1,
  18158. 19,
  18159. 0,
  18160. 20,
  18161. };
  18162. static long _vq_lengthlist__44c5_s_p9_2[] = {
  18163. 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
  18164. 9, 9, 9, 9, 9,11, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8,
  18165. 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11, 5, 5, 7, 7, 7,
  18166. 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
  18167. 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
  18168. 10,10,10,10,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
  18169. 9, 9, 9, 9, 9, 9, 9,10,10,11,11,11, 8, 8, 8, 8,
  18170. 8, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,11,11,
  18171. 11, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,10,10,10,
  18172. 10,10,10,11,11,11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
  18173. 9,10,10,10,10,10,10,10,11,11,11,11,11, 8, 8, 9,
  18174. 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,11,11,11,
  18175. 11,11, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,
  18176. 10,10,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,10,10,
  18177. 10,10,10,10,10,10,10,11,11,11,11,11, 9, 9, 9, 9,
  18178. 9, 9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,
  18179. 11,11,11, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
  18180. 10,11,11,11,11,11,11,11,10, 9,10,10,10,10,10,10,
  18181. 10,10,10, 9,10,10,11,11,11,11,11,11,11, 9, 9,10,
  18182. 10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,
  18183. 11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  18184. 11,11,11,11,11,11,11,11,11,10,10,10,10,10, 9,10,
  18185. 10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
  18186. 10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
  18187. 11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,
  18188. 11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
  18189. 10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,
  18190. 10,10,10,10,10,10,10,10,10,
  18191. };
  18192. static float _vq_quantthresh__44c5_s_p9_2[] = {
  18193. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  18194. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  18195. 6.5, 7.5, 8.5, 9.5,
  18196. };
  18197. static long _vq_quantmap__44c5_s_p9_2[] = {
  18198. 19, 17, 15, 13, 11, 9, 7, 5,
  18199. 3, 1, 0, 2, 4, 6, 8, 10,
  18200. 12, 14, 16, 18, 20,
  18201. };
  18202. static encode_aux_threshmatch _vq_auxt__44c5_s_p9_2 = {
  18203. _vq_quantthresh__44c5_s_p9_2,
  18204. _vq_quantmap__44c5_s_p9_2,
  18205. 21,
  18206. 21
  18207. };
  18208. static static_codebook _44c5_s_p9_2 = {
  18209. 2, 441,
  18210. _vq_lengthlist__44c5_s_p9_2,
  18211. 1, -529268736, 1611661312, 5, 0,
  18212. _vq_quantlist__44c5_s_p9_2,
  18213. NULL,
  18214. &_vq_auxt__44c5_s_p9_2,
  18215. NULL,
  18216. 0
  18217. };
  18218. static long _huff_lengthlist__44c5_s_short[] = {
  18219. 3, 9,10,15,10,10,11,15,15,17, 4, 5, 7, 8, 7, 7,
  18220. 9,13,15,16, 7, 6, 6,10, 6, 8, 9,12,12,16,10, 8,
  18221. 11, 8, 8, 7,11,15,17,17, 8, 5, 5, 8, 3, 4, 6,10,
  18222. 15,17,10, 7, 7, 7, 4, 4, 5,10,14,17,10, 9, 8, 9,
  18223. 6, 5, 6,10,14,17,12,12,11,12, 9, 8, 8,11,14,17,
  18224. 13,14,13,10, 7, 5, 6, 9,13,17,14,14,14,10, 7, 5,
  18225. 6, 7,10,15,
  18226. };
  18227. static static_codebook _huff_book__44c5_s_short = {
  18228. 2, 100,
  18229. _huff_lengthlist__44c5_s_short,
  18230. 0, 0, 0, 0, 0,
  18231. NULL,
  18232. NULL,
  18233. NULL,
  18234. NULL,
  18235. 0
  18236. };
  18237. static long _huff_lengthlist__44c6_s_long[] = {
  18238. 3, 8,11,13,13,13,12,12,13,18, 6, 3, 4, 7, 9, 9,
  18239. 11,11,13,16, 9, 4, 3, 5, 7, 7, 9,10,14,18,11, 7,
  18240. 4, 4, 6, 6, 8,10,14,15,11, 9, 6, 6, 6, 6, 8,10,
  18241. 13,15,10, 9, 7, 6, 6, 6, 7, 8,12,12,12,10, 9, 8,
  18242. 7, 6, 6, 7,11,12,11,10,10, 9, 9, 7, 7, 6, 9,12,
  18243. 12,12,13,13,13,10, 9, 8,10,12,13,14,16,16,17,14,
  18244. 12,11,11,13,
  18245. };
  18246. static static_codebook _huff_book__44c6_s_long = {
  18247. 2, 100,
  18248. _huff_lengthlist__44c6_s_long,
  18249. 0, 0, 0, 0, 0,
  18250. NULL,
  18251. NULL,
  18252. NULL,
  18253. NULL,
  18254. 0
  18255. };
  18256. static long _vq_quantlist__44c6_s_p1_0[] = {
  18257. 1,
  18258. 0,
  18259. 2,
  18260. };
  18261. static long _vq_lengthlist__44c6_s_p1_0[] = {
  18262. 1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 8, 7, 0, 9, 8, 0,
  18263. 8, 8, 6, 7, 8, 0, 8, 9, 0, 8, 8, 0, 0, 0, 0, 0,
  18264. 0, 0, 0, 0, 5, 8, 8, 0, 8, 8, 0, 8, 8, 5, 8, 8,
  18265. 0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
  18266. 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9, 0, 8, 8, 0, 8,
  18267. 8,
  18268. };
  18269. static float _vq_quantthresh__44c6_s_p1_0[] = {
  18270. -0.5, 0.5,
  18271. };
  18272. static long _vq_quantmap__44c6_s_p1_0[] = {
  18273. 1, 0, 2,
  18274. };
  18275. static encode_aux_threshmatch _vq_auxt__44c6_s_p1_0 = {
  18276. _vq_quantthresh__44c6_s_p1_0,
  18277. _vq_quantmap__44c6_s_p1_0,
  18278. 3,
  18279. 3
  18280. };
  18281. static static_codebook _44c6_s_p1_0 = {
  18282. 4, 81,
  18283. _vq_lengthlist__44c6_s_p1_0,
  18284. 1, -535822336, 1611661312, 2, 0,
  18285. _vq_quantlist__44c6_s_p1_0,
  18286. NULL,
  18287. &_vq_auxt__44c6_s_p1_0,
  18288. NULL,
  18289. 0
  18290. };
  18291. static long _vq_quantlist__44c6_s_p2_0[] = {
  18292. 2,
  18293. 1,
  18294. 3,
  18295. 0,
  18296. 4,
  18297. };
  18298. static long _vq_lengthlist__44c6_s_p2_0[] = {
  18299. 3, 5, 5, 8, 8, 0, 5, 5, 9, 9, 0, 5, 5, 9, 9, 0,
  18300. 7, 7,10,10, 0, 0, 0,10,10, 5, 7, 7, 9, 9, 0, 8,
  18301. 7,10, 9, 0, 8, 8,10,10, 0,10,10,11,11, 0, 0, 0,
  18302. 11,11, 5, 7, 7, 9, 9, 0, 7, 8, 9,10, 0, 7, 8,10,
  18303. 10, 0,10,10,11,11, 0, 0, 0,11,11, 8, 9, 9,11,10,
  18304. 0,11,10,12,12, 0,11,11,12,12, 0,13,13,14,14, 0,
  18305. 0, 0,14,14, 8, 9, 9,10,11, 0,10,11,12,12, 0,11,
  18306. 11,12,12, 0,13,13,14,14, 0, 0, 0,14,14, 0, 0, 0,
  18307. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18308. 0, 0, 0, 0, 0, 0, 5, 8, 8,11,11, 0, 7, 7,10,10,
  18309. 0, 7, 7,10,10, 0, 9, 8,11,10, 0, 0, 0,11,11, 5,
  18310. 7, 8,11,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 8,
  18311. 9,10,11, 0, 0, 0,11,11, 9,10,10,12,12, 0,10,10,
  18312. 12,11, 0,10,10,12,12, 0,12,12,13,13, 0, 0, 0,13,
  18313. 13, 9,10,10,12,12, 0,10,10,11,12, 0,10,10,12,12,
  18314. 0,12,12,13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
  18315. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18316. 0, 0, 0, 5, 8, 7,11,10, 0, 7, 7,10,10, 0, 7, 7,
  18317. 10,10, 0, 8, 9,11,11, 0, 0, 0,11,10, 5, 7, 8,10,
  18318. 11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 8,11,11,
  18319. 0, 0, 0,11,11, 9,10,10,12,12, 0,10,10,12,12, 0,
  18320. 10,10,12,12, 0,12,12,13,13, 0, 0, 0,13,13, 9, 9,
  18321. 10,12,12, 0,10,10,12,12, 0,10,10,12,12, 0,12,12,
  18322. 13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18323. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18324. 7,10,10,13,13, 0, 9, 8,12,12, 0, 8, 9,12,12, 0,
  18325. 10, 9,12,12, 0, 0, 0,12,12, 7,10,10,13,13, 0, 9,
  18326. 9,12,12, 0, 9, 8,12,12, 0, 9,10,12,12, 0, 0, 0,
  18327. 12,12,10,11,11,14,14, 0,11,10,13,13, 0,11,11,13,
  18328. 13, 0,12,12,13,13, 0, 0, 0,13,13,10,11,11,14,14,
  18329. 0,10,11,13,13, 0,11,11,13,13, 0,12,12,13,13, 0,
  18330. 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18331. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18332. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18333. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18334. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,
  18335. 11,11,14,14, 0,11,11,13,13, 0,11,10,13,13, 0,12,
  18336. 12,13,13, 0, 0, 0,13,13,10,11,11,14,14, 0,11,11,
  18337. 13,13, 0,10,11,13,13, 0,12,12,13,13, 0, 0, 0,13,
  18338. 13,
  18339. };
  18340. static float _vq_quantthresh__44c6_s_p2_0[] = {
  18341. -1.5, -0.5, 0.5, 1.5,
  18342. };
  18343. static long _vq_quantmap__44c6_s_p2_0[] = {
  18344. 3, 1, 0, 2, 4,
  18345. };
  18346. static encode_aux_threshmatch _vq_auxt__44c6_s_p2_0 = {
  18347. _vq_quantthresh__44c6_s_p2_0,
  18348. _vq_quantmap__44c6_s_p2_0,
  18349. 5,
  18350. 5
  18351. };
  18352. static static_codebook _44c6_s_p2_0 = {
  18353. 4, 625,
  18354. _vq_lengthlist__44c6_s_p2_0,
  18355. 1, -533725184, 1611661312, 3, 0,
  18356. _vq_quantlist__44c6_s_p2_0,
  18357. NULL,
  18358. &_vq_auxt__44c6_s_p2_0,
  18359. NULL,
  18360. 0
  18361. };
  18362. static long _vq_quantlist__44c6_s_p3_0[] = {
  18363. 4,
  18364. 3,
  18365. 5,
  18366. 2,
  18367. 6,
  18368. 1,
  18369. 7,
  18370. 0,
  18371. 8,
  18372. };
  18373. static long _vq_lengthlist__44c6_s_p3_0[] = {
  18374. 2, 4, 4, 5, 5, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
  18375. 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6,
  18376. 8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0,
  18377. 7, 7, 8, 8,10,10, 0, 0, 0, 7, 7, 9, 9,10,10, 0,
  18378. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18379. 0,
  18380. };
  18381. static float _vq_quantthresh__44c6_s_p3_0[] = {
  18382. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  18383. };
  18384. static long _vq_quantmap__44c6_s_p3_0[] = {
  18385. 7, 5, 3, 1, 0, 2, 4, 6,
  18386. 8,
  18387. };
  18388. static encode_aux_threshmatch _vq_auxt__44c6_s_p3_0 = {
  18389. _vq_quantthresh__44c6_s_p3_0,
  18390. _vq_quantmap__44c6_s_p3_0,
  18391. 9,
  18392. 9
  18393. };
  18394. static static_codebook _44c6_s_p3_0 = {
  18395. 2, 81,
  18396. _vq_lengthlist__44c6_s_p3_0,
  18397. 1, -531628032, 1611661312, 4, 0,
  18398. _vq_quantlist__44c6_s_p3_0,
  18399. NULL,
  18400. &_vq_auxt__44c6_s_p3_0,
  18401. NULL,
  18402. 0
  18403. };
  18404. static long _vq_quantlist__44c6_s_p4_0[] = {
  18405. 8,
  18406. 7,
  18407. 9,
  18408. 6,
  18409. 10,
  18410. 5,
  18411. 11,
  18412. 4,
  18413. 12,
  18414. 3,
  18415. 13,
  18416. 2,
  18417. 14,
  18418. 1,
  18419. 15,
  18420. 0,
  18421. 16,
  18422. };
  18423. static long _vq_lengthlist__44c6_s_p4_0[] = {
  18424. 3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
  18425. 11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 8, 9,10,10,11,11,
  18426. 11,11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
  18427. 11,11,11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,
  18428. 11,11,12,12, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,
  18429. 10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
  18430. 11,11,12,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
  18431. 10,11,11,12,12,12,12, 0, 0, 0, 6, 6, 7, 7, 9, 9,
  18432. 10,10,11,11,12,12,12,13, 0, 0, 0, 0, 0, 7, 7, 9,
  18433. 9,10,10,11,11,12,12,12,13, 0, 0, 0, 0, 0, 0, 0,
  18434. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18435. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18436. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18437. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18438. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18439. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18440. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18441. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18442. 0,
  18443. };
  18444. static float _vq_quantthresh__44c6_s_p4_0[] = {
  18445. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  18446. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  18447. };
  18448. static long _vq_quantmap__44c6_s_p4_0[] = {
  18449. 15, 13, 11, 9, 7, 5, 3, 1,
  18450. 0, 2, 4, 6, 8, 10, 12, 14,
  18451. 16,
  18452. };
  18453. static encode_aux_threshmatch _vq_auxt__44c6_s_p4_0 = {
  18454. _vq_quantthresh__44c6_s_p4_0,
  18455. _vq_quantmap__44c6_s_p4_0,
  18456. 17,
  18457. 17
  18458. };
  18459. static static_codebook _44c6_s_p4_0 = {
  18460. 2, 289,
  18461. _vq_lengthlist__44c6_s_p4_0,
  18462. 1, -529530880, 1611661312, 5, 0,
  18463. _vq_quantlist__44c6_s_p4_0,
  18464. NULL,
  18465. &_vq_auxt__44c6_s_p4_0,
  18466. NULL,
  18467. 0
  18468. };
  18469. static long _vq_quantlist__44c6_s_p5_0[] = {
  18470. 1,
  18471. 0,
  18472. 2,
  18473. };
  18474. static long _vq_lengthlist__44c6_s_p5_0[] = {
  18475. 1, 4, 4, 5, 7, 7, 5, 7, 7, 4, 7, 7, 9,10,10,10,
  18476. 10,10, 4, 7, 7, 9,10,10,10,10,10, 5, 9, 9, 9,11,
  18477. 11, 9,11,11, 7,10,10,11,12,11,12,12,12, 7,10,10,
  18478. 11,12,12,12,12,12, 6,10,10, 9,11,11,10,11,11, 7,
  18479. 10, 9,11,12,12,11,12,11, 7,10,10,11,12,12,11,12,
  18480. 12,
  18481. };
  18482. static float _vq_quantthresh__44c6_s_p5_0[] = {
  18483. -5.5, 5.5,
  18484. };
  18485. static long _vq_quantmap__44c6_s_p5_0[] = {
  18486. 1, 0, 2,
  18487. };
  18488. static encode_aux_threshmatch _vq_auxt__44c6_s_p5_0 = {
  18489. _vq_quantthresh__44c6_s_p5_0,
  18490. _vq_quantmap__44c6_s_p5_0,
  18491. 3,
  18492. 3
  18493. };
  18494. static static_codebook _44c6_s_p5_0 = {
  18495. 4, 81,
  18496. _vq_lengthlist__44c6_s_p5_0,
  18497. 1, -529137664, 1618345984, 2, 0,
  18498. _vq_quantlist__44c6_s_p5_0,
  18499. NULL,
  18500. &_vq_auxt__44c6_s_p5_0,
  18501. NULL,
  18502. 0
  18503. };
  18504. static long _vq_quantlist__44c6_s_p5_1[] = {
  18505. 5,
  18506. 4,
  18507. 6,
  18508. 3,
  18509. 7,
  18510. 2,
  18511. 8,
  18512. 1,
  18513. 9,
  18514. 0,
  18515. 10,
  18516. };
  18517. static long _vq_lengthlist__44c6_s_p5_1[] = {
  18518. 3, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,11, 4, 4, 6, 6,
  18519. 8, 8, 9, 9, 9, 9,11, 4, 4, 6, 6, 8, 8, 9, 8, 9,
  18520. 9,12, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,12,12,12, 6,
  18521. 6, 8, 8, 9, 9, 9, 9,11,11,11, 7, 7, 8, 8, 9, 9,
  18522. 9, 9,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9,11,11,11,
  18523. 7, 7, 8, 8, 8, 8, 9, 9,11,11,11,11,11, 8, 8, 8,
  18524. 8, 9, 9,11,11,11,11,11, 7, 7, 8, 8, 8, 8,11,11,
  18525. 11,11,11, 7, 7, 8, 8, 8, 8,
  18526. };
  18527. static float _vq_quantthresh__44c6_s_p5_1[] = {
  18528. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  18529. 3.5, 4.5,
  18530. };
  18531. static long _vq_quantmap__44c6_s_p5_1[] = {
  18532. 9, 7, 5, 3, 1, 0, 2, 4,
  18533. 6, 8, 10,
  18534. };
  18535. static encode_aux_threshmatch _vq_auxt__44c6_s_p5_1 = {
  18536. _vq_quantthresh__44c6_s_p5_1,
  18537. _vq_quantmap__44c6_s_p5_1,
  18538. 11,
  18539. 11
  18540. };
  18541. static static_codebook _44c6_s_p5_1 = {
  18542. 2, 121,
  18543. _vq_lengthlist__44c6_s_p5_1,
  18544. 1, -531365888, 1611661312, 4, 0,
  18545. _vq_quantlist__44c6_s_p5_1,
  18546. NULL,
  18547. &_vq_auxt__44c6_s_p5_1,
  18548. NULL,
  18549. 0
  18550. };
  18551. static long _vq_quantlist__44c6_s_p6_0[] = {
  18552. 6,
  18553. 5,
  18554. 7,
  18555. 4,
  18556. 8,
  18557. 3,
  18558. 9,
  18559. 2,
  18560. 10,
  18561. 1,
  18562. 11,
  18563. 0,
  18564. 12,
  18565. };
  18566. static long _vq_lengthlist__44c6_s_p6_0[] = {
  18567. 1, 4, 4, 6, 7, 8, 8, 8, 8, 9, 9,10,10, 5, 5, 5,
  18568. 7, 7, 9, 9, 9, 9,10,10,11,11, 6, 5, 5, 7, 7, 9,
  18569. 9, 9, 9,10,10,11,11, 0, 7, 7, 7, 7, 9, 9,10,10,
  18570. 11,11,11,11, 0, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
  18571. 12, 0,11,11, 8, 8,10, 9,10,11,11,11,12,12, 0,12,
  18572. 12, 8, 8,10, 9,11,11,12,11,13,13, 0, 0, 0, 0, 0,
  18573. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18574. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18575. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18576. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18577. 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18578. };
  18579. static float _vq_quantthresh__44c6_s_p6_0[] = {
  18580. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  18581. 12.5, 17.5, 22.5, 27.5,
  18582. };
  18583. static long _vq_quantmap__44c6_s_p6_0[] = {
  18584. 11, 9, 7, 5, 3, 1, 0, 2,
  18585. 4, 6, 8, 10, 12,
  18586. };
  18587. static encode_aux_threshmatch _vq_auxt__44c6_s_p6_0 = {
  18588. _vq_quantthresh__44c6_s_p6_0,
  18589. _vq_quantmap__44c6_s_p6_0,
  18590. 13,
  18591. 13
  18592. };
  18593. static static_codebook _44c6_s_p6_0 = {
  18594. 2, 169,
  18595. _vq_lengthlist__44c6_s_p6_0,
  18596. 1, -526516224, 1616117760, 4, 0,
  18597. _vq_quantlist__44c6_s_p6_0,
  18598. NULL,
  18599. &_vq_auxt__44c6_s_p6_0,
  18600. NULL,
  18601. 0
  18602. };
  18603. static long _vq_quantlist__44c6_s_p6_1[] = {
  18604. 2,
  18605. 1,
  18606. 3,
  18607. 0,
  18608. 4,
  18609. };
  18610. static long _vq_lengthlist__44c6_s_p6_1[] = {
  18611. 3, 4, 4, 5, 5, 6, 4, 4, 5, 5, 6, 4, 4, 5, 4, 6,
  18612. 5, 5, 5, 5, 6, 6, 6, 5, 5,
  18613. };
  18614. static float _vq_quantthresh__44c6_s_p6_1[] = {
  18615. -1.5, -0.5, 0.5, 1.5,
  18616. };
  18617. static long _vq_quantmap__44c6_s_p6_1[] = {
  18618. 3, 1, 0, 2, 4,
  18619. };
  18620. static encode_aux_threshmatch _vq_auxt__44c6_s_p6_1 = {
  18621. _vq_quantthresh__44c6_s_p6_1,
  18622. _vq_quantmap__44c6_s_p6_1,
  18623. 5,
  18624. 5
  18625. };
  18626. static static_codebook _44c6_s_p6_1 = {
  18627. 2, 25,
  18628. _vq_lengthlist__44c6_s_p6_1,
  18629. 1, -533725184, 1611661312, 3, 0,
  18630. _vq_quantlist__44c6_s_p6_1,
  18631. NULL,
  18632. &_vq_auxt__44c6_s_p6_1,
  18633. NULL,
  18634. 0
  18635. };
  18636. static long _vq_quantlist__44c6_s_p7_0[] = {
  18637. 6,
  18638. 5,
  18639. 7,
  18640. 4,
  18641. 8,
  18642. 3,
  18643. 9,
  18644. 2,
  18645. 10,
  18646. 1,
  18647. 11,
  18648. 0,
  18649. 12,
  18650. };
  18651. static long _vq_lengthlist__44c6_s_p7_0[] = {
  18652. 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
  18653. 7, 7, 8, 8, 9, 9,11,11,12,12, 6, 5, 5, 7, 7, 9,
  18654. 9, 9, 9,11,11,12,12,19, 7, 7, 7, 7, 9, 9,10,10,
  18655. 11,11,12,12,19, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
  18656. 12,19,11,11, 8, 8,10,10,11,11,11,12,12,12,19,12,
  18657. 12, 8, 8,10, 9,11,11,12,12,13,12,19,19,19,11,11,
  18658. 10,10,11,11,12,12,13,13,19,19,19,11,11,10,10,11,
  18659. 11,12,12,13,13,19,19,19,14,14,11,11,11,12,13,13,
  18660. 13,13,19,19,19,15,15,11,11,12,12,13,12,14,14,19,
  18661. 19,19,19,18,13,13,12,12,13,13,14,14,18,18,18,18,
  18662. 18,13,12,12,12,13,13,14,14,
  18663. };
  18664. static float _vq_quantthresh__44c6_s_p7_0[] = {
  18665. -60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5,
  18666. 27.5, 38.5, 49.5, 60.5,
  18667. };
  18668. static long _vq_quantmap__44c6_s_p7_0[] = {
  18669. 11, 9, 7, 5, 3, 1, 0, 2,
  18670. 4, 6, 8, 10, 12,
  18671. };
  18672. static encode_aux_threshmatch _vq_auxt__44c6_s_p7_0 = {
  18673. _vq_quantthresh__44c6_s_p7_0,
  18674. _vq_quantmap__44c6_s_p7_0,
  18675. 13,
  18676. 13
  18677. };
  18678. static static_codebook _44c6_s_p7_0 = {
  18679. 2, 169,
  18680. _vq_lengthlist__44c6_s_p7_0,
  18681. 1, -523206656, 1618345984, 4, 0,
  18682. _vq_quantlist__44c6_s_p7_0,
  18683. NULL,
  18684. &_vq_auxt__44c6_s_p7_0,
  18685. NULL,
  18686. 0
  18687. };
  18688. static long _vq_quantlist__44c6_s_p7_1[] = {
  18689. 5,
  18690. 4,
  18691. 6,
  18692. 3,
  18693. 7,
  18694. 2,
  18695. 8,
  18696. 1,
  18697. 9,
  18698. 0,
  18699. 10,
  18700. };
  18701. static long _vq_lengthlist__44c6_s_p7_1[] = {
  18702. 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 9, 5, 5, 7, 7,
  18703. 7, 7, 7, 7, 8, 8, 9, 5, 5, 6, 6, 7, 7, 7, 7, 7,
  18704. 7, 9, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 9, 9, 9, 7,
  18705. 7, 7, 7, 7, 8, 7, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8,
  18706. 8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 7, 7, 9, 9, 9,
  18707. 7, 7, 8, 8, 7, 7, 8, 8, 9, 9, 9, 8, 9, 8, 8, 7,
  18708. 7, 7, 7, 9, 9, 8, 8, 9, 8, 8, 7, 7, 8, 8, 9, 9,
  18709. 9, 9, 8, 7, 7, 7, 7, 8, 8,
  18710. };
  18711. static float _vq_quantthresh__44c6_s_p7_1[] = {
  18712. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  18713. 3.5, 4.5,
  18714. };
  18715. static long _vq_quantmap__44c6_s_p7_1[] = {
  18716. 9, 7, 5, 3, 1, 0, 2, 4,
  18717. 6, 8, 10,
  18718. };
  18719. static encode_aux_threshmatch _vq_auxt__44c6_s_p7_1 = {
  18720. _vq_quantthresh__44c6_s_p7_1,
  18721. _vq_quantmap__44c6_s_p7_1,
  18722. 11,
  18723. 11
  18724. };
  18725. static static_codebook _44c6_s_p7_1 = {
  18726. 2, 121,
  18727. _vq_lengthlist__44c6_s_p7_1,
  18728. 1, -531365888, 1611661312, 4, 0,
  18729. _vq_quantlist__44c6_s_p7_1,
  18730. NULL,
  18731. &_vq_auxt__44c6_s_p7_1,
  18732. NULL,
  18733. 0
  18734. };
  18735. static long _vq_quantlist__44c6_s_p8_0[] = {
  18736. 7,
  18737. 6,
  18738. 8,
  18739. 5,
  18740. 9,
  18741. 4,
  18742. 10,
  18743. 3,
  18744. 11,
  18745. 2,
  18746. 12,
  18747. 1,
  18748. 13,
  18749. 0,
  18750. 14,
  18751. };
  18752. static long _vq_lengthlist__44c6_s_p8_0[] = {
  18753. 1, 4, 4, 7, 7, 8, 8, 7, 7, 9, 9, 9,10,11,11, 6,
  18754. 5, 5, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11, 6, 5,
  18755. 5, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11,17, 8, 8,
  18756. 8, 8,10,10, 8, 9,10,10,11,11,12,11,17, 8, 8, 9,
  18757. 9,10,10, 9, 9,10,10,11,12,12,12,17,12,13, 9, 9,
  18758. 10,10, 9,10,10,10,11,11,13,12,17,13,13,10, 9,10,
  18759. 10,10,10,10,11,12,11,12,12,17,17,17, 9, 9, 9, 9,
  18760. 10,10,11,11,11,12,12,13,17,17,17, 9, 9, 9, 9,11,
  18761. 10,11,11,12,12,12,13,17,17,17,13,13,10,10,11,11,
  18762. 12,11,12,13,13,13,17,17,17,14,13,10, 9,11, 9,12,
  18763. 12,12,13,13,14,17,17,17,17,17,11,12,11,11,12,12,
  18764. 13,14,13,14,17,17,17,17,17,12,10,11, 8,12,11,13,
  18765. 14,14,14,17,17,16,16,16,13,15,11,12,12,13,13,13,
  18766. 14,14,16,16,16,16,16,14,13,12, 9,13,10,14,13,14,
  18767. 13,
  18768. };
  18769. static float _vq_quantthresh__44c6_s_p8_0[] = {
  18770. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  18771. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  18772. };
  18773. static long _vq_quantmap__44c6_s_p8_0[] = {
  18774. 13, 11, 9, 7, 5, 3, 1, 0,
  18775. 2, 4, 6, 8, 10, 12, 14,
  18776. };
  18777. static encode_aux_threshmatch _vq_auxt__44c6_s_p8_0 = {
  18778. _vq_quantthresh__44c6_s_p8_0,
  18779. _vq_quantmap__44c6_s_p8_0,
  18780. 15,
  18781. 15
  18782. };
  18783. static static_codebook _44c6_s_p8_0 = {
  18784. 2, 225,
  18785. _vq_lengthlist__44c6_s_p8_0,
  18786. 1, -520986624, 1620377600, 4, 0,
  18787. _vq_quantlist__44c6_s_p8_0,
  18788. NULL,
  18789. &_vq_auxt__44c6_s_p8_0,
  18790. NULL,
  18791. 0
  18792. };
  18793. static long _vq_quantlist__44c6_s_p8_1[] = {
  18794. 10,
  18795. 9,
  18796. 11,
  18797. 8,
  18798. 12,
  18799. 7,
  18800. 13,
  18801. 6,
  18802. 14,
  18803. 5,
  18804. 15,
  18805. 4,
  18806. 16,
  18807. 3,
  18808. 17,
  18809. 2,
  18810. 18,
  18811. 1,
  18812. 19,
  18813. 0,
  18814. 20,
  18815. };
  18816. static long _vq_lengthlist__44c6_s_p8_1[] = {
  18817. 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9,
  18818. 9, 8, 9, 9, 9,11, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
  18819. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
  18820. 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
  18821. 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
  18822. 9, 9, 9, 9,11,10,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
  18823. 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,11, 8, 8, 8, 8,
  18824. 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9,11,11,
  18825. 11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10, 9,10, 9,
  18826. 10,10, 9,11,11,11, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  18827. 10,10, 9,10, 9, 9, 9, 9,11,11,11,11,11, 8, 8, 9,
  18828. 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,11,11,11,
  18829. 11,11, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10,10, 9, 9,
  18830. 9, 9,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,10,10,
  18831. 9,10, 9,10,10,10,10,11,11,11,11,11, 9, 9, 9, 9,
  18832. 9, 9,10,10,10,10, 9,10,10, 9,10, 9,11,11,11,11,
  18833. 11,11,11, 9, 9, 9, 9,10, 9,10, 9, 9,10,10,10,10,
  18834. 10,10,11,11,11,11,11,11, 9, 9, 9, 9,10,10,10,10,
  18835. 9,10, 9,10,10, 9,11,11,11,11,11,11,10, 9, 9, 9,
  18836. 9, 9,10, 9,10,10,10,10,10,10,10,11,11,11,11,11,
  18837. 11,11, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
  18838. 11,11,11,11,11,11,11,11,11, 9,10, 9,10, 9,10,10,
  18839. 10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
  18840. 10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
  18841. 11,11,11,10,10, 9,10,10,10,10, 9,10, 9,10,10,11,
  18842. 11,11,11,11,11,11,11,11,10,10,10, 9,10,10,10,10,
  18843. 10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,
  18844. 10, 9,10,10,10,10,10,10,10,
  18845. };
  18846. static float _vq_quantthresh__44c6_s_p8_1[] = {
  18847. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  18848. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  18849. 6.5, 7.5, 8.5, 9.5,
  18850. };
  18851. static long _vq_quantmap__44c6_s_p8_1[] = {
  18852. 19, 17, 15, 13, 11, 9, 7, 5,
  18853. 3, 1, 0, 2, 4, 6, 8, 10,
  18854. 12, 14, 16, 18, 20,
  18855. };
  18856. static encode_aux_threshmatch _vq_auxt__44c6_s_p8_1 = {
  18857. _vq_quantthresh__44c6_s_p8_1,
  18858. _vq_quantmap__44c6_s_p8_1,
  18859. 21,
  18860. 21
  18861. };
  18862. static static_codebook _44c6_s_p8_1 = {
  18863. 2, 441,
  18864. _vq_lengthlist__44c6_s_p8_1,
  18865. 1, -529268736, 1611661312, 5, 0,
  18866. _vq_quantlist__44c6_s_p8_1,
  18867. NULL,
  18868. &_vq_auxt__44c6_s_p8_1,
  18869. NULL,
  18870. 0
  18871. };
  18872. static long _vq_quantlist__44c6_s_p9_0[] = {
  18873. 6,
  18874. 5,
  18875. 7,
  18876. 4,
  18877. 8,
  18878. 3,
  18879. 9,
  18880. 2,
  18881. 10,
  18882. 1,
  18883. 11,
  18884. 0,
  18885. 12,
  18886. };
  18887. static long _vq_lengthlist__44c6_s_p9_0[] = {
  18888. 1, 4, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 9, 8,
  18889. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 9, 9, 9, 9, 9,
  18890. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  18891. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  18892. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  18893. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  18894. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  18895. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  18896. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  18897. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8,
  18898. 8, 8, 8, 8, 8, 8, 8, 8, 8,
  18899. };
  18900. static float _vq_quantthresh__44c6_s_p9_0[] = {
  18901. -3503.5, -2866.5, -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5,
  18902. 1592.5, 2229.5, 2866.5, 3503.5,
  18903. };
  18904. static long _vq_quantmap__44c6_s_p9_0[] = {
  18905. 11, 9, 7, 5, 3, 1, 0, 2,
  18906. 4, 6, 8, 10, 12,
  18907. };
  18908. static encode_aux_threshmatch _vq_auxt__44c6_s_p9_0 = {
  18909. _vq_quantthresh__44c6_s_p9_0,
  18910. _vq_quantmap__44c6_s_p9_0,
  18911. 13,
  18912. 13
  18913. };
  18914. static static_codebook _44c6_s_p9_0 = {
  18915. 2, 169,
  18916. _vq_lengthlist__44c6_s_p9_0,
  18917. 1, -511845376, 1630791680, 4, 0,
  18918. _vq_quantlist__44c6_s_p9_0,
  18919. NULL,
  18920. &_vq_auxt__44c6_s_p9_0,
  18921. NULL,
  18922. 0
  18923. };
  18924. static long _vq_quantlist__44c6_s_p9_1[] = {
  18925. 6,
  18926. 5,
  18927. 7,
  18928. 4,
  18929. 8,
  18930. 3,
  18931. 9,
  18932. 2,
  18933. 10,
  18934. 1,
  18935. 11,
  18936. 0,
  18937. 12,
  18938. };
  18939. static long _vq_lengthlist__44c6_s_p9_1[] = {
  18940. 1, 4, 4, 7, 7, 7, 7, 7, 7, 8, 9,10,11, 6, 6, 6,
  18941. 7, 8, 8, 8, 7, 8, 9,10,11,10, 6, 5, 6, 7, 8, 8,
  18942. 8, 8, 8, 9,10,10,11,14, 9, 8, 8, 8, 9, 8, 8, 9,
  18943. 10,10,12,11,14, 8, 8, 9, 8, 9, 8, 8, 8,11,10,11,
  18944. 11,14,14,13, 8, 9, 9, 9, 9,10,11,11,12,12,13,12,
  18945. 12, 8, 7,10, 9, 9, 9,11,11,11,10,13,13,13, 8, 9,
  18946. 9, 8,12,11,11,11,13,11,13,13,13, 9, 8, 9, 8,10,
  18947. 10,11,10,11,10,13,13,13,12,12, 9,10,11,11,11,12,
  18948. 13,12,13,13,13,13,12,10,10,10, 9,13,12,12,13,13,
  18949. 13,13,13,13,12,12,10,10,12,12,13,13,13,13,13,13,
  18950. 13,12,12,11,12,12,12,12,13,
  18951. };
  18952. static float _vq_quantthresh__44c6_s_p9_1[] = {
  18953. -269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5,
  18954. 122.5, 171.5, 220.5, 269.5,
  18955. };
  18956. static long _vq_quantmap__44c6_s_p9_1[] = {
  18957. 11, 9, 7, 5, 3, 1, 0, 2,
  18958. 4, 6, 8, 10, 12,
  18959. };
  18960. static encode_aux_threshmatch _vq_auxt__44c6_s_p9_1 = {
  18961. _vq_quantthresh__44c6_s_p9_1,
  18962. _vq_quantmap__44c6_s_p9_1,
  18963. 13,
  18964. 13
  18965. };
  18966. static static_codebook _44c6_s_p9_1 = {
  18967. 2, 169,
  18968. _vq_lengthlist__44c6_s_p9_1,
  18969. 1, -518889472, 1622704128, 4, 0,
  18970. _vq_quantlist__44c6_s_p9_1,
  18971. NULL,
  18972. &_vq_auxt__44c6_s_p9_1,
  18973. NULL,
  18974. 0
  18975. };
  18976. static long _vq_quantlist__44c6_s_p9_2[] = {
  18977. 24,
  18978. 23,
  18979. 25,
  18980. 22,
  18981. 26,
  18982. 21,
  18983. 27,
  18984. 20,
  18985. 28,
  18986. 19,
  18987. 29,
  18988. 18,
  18989. 30,
  18990. 17,
  18991. 31,
  18992. 16,
  18993. 32,
  18994. 15,
  18995. 33,
  18996. 14,
  18997. 34,
  18998. 13,
  18999. 35,
  19000. 12,
  19001. 36,
  19002. 11,
  19003. 37,
  19004. 10,
  19005. 38,
  19006. 9,
  19007. 39,
  19008. 8,
  19009. 40,
  19010. 7,
  19011. 41,
  19012. 6,
  19013. 42,
  19014. 5,
  19015. 43,
  19016. 4,
  19017. 44,
  19018. 3,
  19019. 45,
  19020. 2,
  19021. 46,
  19022. 1,
  19023. 47,
  19024. 0,
  19025. 48,
  19026. };
  19027. static long _vq_lengthlist__44c6_s_p9_2[] = {
  19028. 2, 4, 3, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  19029. 6, 6, 6, 7, 6, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  19030. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  19031. 7,
  19032. };
  19033. static float _vq_quantthresh__44c6_s_p9_2[] = {
  19034. -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5,
  19035. -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5,
  19036. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  19037. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  19038. 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5,
  19039. 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5,
  19040. };
  19041. static long _vq_quantmap__44c6_s_p9_2[] = {
  19042. 47, 45, 43, 41, 39, 37, 35, 33,
  19043. 31, 29, 27, 25, 23, 21, 19, 17,
  19044. 15, 13, 11, 9, 7, 5, 3, 1,
  19045. 0, 2, 4, 6, 8, 10, 12, 14,
  19046. 16, 18, 20, 22, 24, 26, 28, 30,
  19047. 32, 34, 36, 38, 40, 42, 44, 46,
  19048. 48,
  19049. };
  19050. static encode_aux_threshmatch _vq_auxt__44c6_s_p9_2 = {
  19051. _vq_quantthresh__44c6_s_p9_2,
  19052. _vq_quantmap__44c6_s_p9_2,
  19053. 49,
  19054. 49
  19055. };
  19056. static static_codebook _44c6_s_p9_2 = {
  19057. 1, 49,
  19058. _vq_lengthlist__44c6_s_p9_2,
  19059. 1, -526909440, 1611661312, 6, 0,
  19060. _vq_quantlist__44c6_s_p9_2,
  19061. NULL,
  19062. &_vq_auxt__44c6_s_p9_2,
  19063. NULL,
  19064. 0
  19065. };
  19066. static long _huff_lengthlist__44c6_s_short[] = {
  19067. 4, 9,11,11,13,13,17,16,17,17, 4, 4, 6, 7, 9, 9,
  19068. 12,15,17,17, 7, 5, 4, 5, 7, 8,11,12,17,17, 9, 6,
  19069. 4, 3, 5, 6,10,14,17,17,11, 8, 6, 4, 5, 6, 9,13,
  19070. 17,17,11,10, 7, 5, 5, 5, 8,12,17,17,13,12, 9, 8,
  19071. 7, 6, 8,11,17,17,13,13, 9, 6, 6, 5, 6, 9,17,17,
  19072. 17,16,10, 8, 7, 7, 8, 9,17,17,17,17,14,12,11,11,
  19073. 11,13,17,17,
  19074. };
  19075. static static_codebook _huff_book__44c6_s_short = {
  19076. 2, 100,
  19077. _huff_lengthlist__44c6_s_short,
  19078. 0, 0, 0, 0, 0,
  19079. NULL,
  19080. NULL,
  19081. NULL,
  19082. NULL,
  19083. 0
  19084. };
  19085. static long _huff_lengthlist__44c7_s_long[] = {
  19086. 3, 8,11,13,14,13,13,12,14,16, 6, 4, 5, 7, 9,10,
  19087. 11,11,13,15,10, 4, 3, 5, 7, 7,10,10,14,16,11, 7,
  19088. 4, 4, 5, 6, 8,10,13,15,12, 9, 6, 5, 5, 6, 8, 9,
  19089. 13,15,11, 9, 7, 6, 5, 5, 6, 8,11,13,11,10, 9, 8,
  19090. 7, 6, 6, 7,11,12,12,11,10, 9, 8, 7, 6, 6, 9,11,
  19091. 12,12,12,12,12,10, 9, 8,10,12,12,14,15,16,16,14,
  19092. 12,10,11,13,
  19093. };
  19094. static static_codebook _huff_book__44c7_s_long = {
  19095. 2, 100,
  19096. _huff_lengthlist__44c7_s_long,
  19097. 0, 0, 0, 0, 0,
  19098. NULL,
  19099. NULL,
  19100. NULL,
  19101. NULL,
  19102. 0
  19103. };
  19104. static long _vq_quantlist__44c7_s_p1_0[] = {
  19105. 1,
  19106. 0,
  19107. 2,
  19108. };
  19109. static long _vq_lengthlist__44c7_s_p1_0[] = {
  19110. 1, 5, 5, 0, 5, 5, 0, 5, 5, 6, 8, 7, 0, 9, 8, 0,
  19111. 8, 8, 5, 7, 8, 0, 8, 9, 0, 8, 8, 0, 0, 0, 0, 0,
  19112. 0, 0, 0, 0, 5, 8, 8, 0, 8, 8, 0, 8, 8, 5, 8, 8,
  19113. 0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
  19114. 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9, 0, 8, 8, 0, 8,
  19115. 8,
  19116. };
  19117. static float _vq_quantthresh__44c7_s_p1_0[] = {
  19118. -0.5, 0.5,
  19119. };
  19120. static long _vq_quantmap__44c7_s_p1_0[] = {
  19121. 1, 0, 2,
  19122. };
  19123. static encode_aux_threshmatch _vq_auxt__44c7_s_p1_0 = {
  19124. _vq_quantthresh__44c7_s_p1_0,
  19125. _vq_quantmap__44c7_s_p1_0,
  19126. 3,
  19127. 3
  19128. };
  19129. static static_codebook _44c7_s_p1_0 = {
  19130. 4, 81,
  19131. _vq_lengthlist__44c7_s_p1_0,
  19132. 1, -535822336, 1611661312, 2, 0,
  19133. _vq_quantlist__44c7_s_p1_0,
  19134. NULL,
  19135. &_vq_auxt__44c7_s_p1_0,
  19136. NULL,
  19137. 0
  19138. };
  19139. static long _vq_quantlist__44c7_s_p2_0[] = {
  19140. 2,
  19141. 1,
  19142. 3,
  19143. 0,
  19144. 4,
  19145. };
  19146. static long _vq_lengthlist__44c7_s_p2_0[] = {
  19147. 3, 5, 5, 8, 8, 0, 5, 5, 9, 9, 0, 5, 5, 9, 9, 0,
  19148. 7, 7,10, 9, 0, 0, 0, 9,10, 5, 7, 7, 9, 9, 0, 8,
  19149. 7,10, 9, 0, 8, 7,10, 9, 0,10, 9,11,11, 0, 0, 0,
  19150. 11,11, 6, 7, 7, 9, 9, 0, 7, 8, 9,10, 0, 7, 8,10,
  19151. 10, 0, 9, 9,11,11, 0, 0, 0,11,11, 8, 9, 9,11,10,
  19152. 0,11,10,12,12, 0,11,11,12,12, 0,13,13,14,14, 0,
  19153. 0, 0,14,14, 8, 9, 9,10,11, 0,10,11,11,12, 0,11,
  19154. 11,12,12, 0,13,13,14,14, 0, 0, 0,14,14, 0, 0, 0,
  19155. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19156. 0, 0, 0, 0, 0, 0, 5, 8, 7,11,11, 0, 7, 7,10,10,
  19157. 0, 7, 7,10,10, 0, 9, 8,11,10, 0, 0, 0,11,11, 5,
  19158. 7, 8,11,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 8,
  19159. 9,10,11, 0, 0, 0,11,11, 9,10,10,12,12, 0,10,10,
  19160. 12,11, 0,10,10,12,12, 0,12,12,13,13, 0, 0, 0,13,
  19161. 13, 9,10,10,12,12, 0,10,10,11,12, 0,10,10,12,12,
  19162. 0,12,12,13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
  19163. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19164. 0, 0, 0, 5, 8, 7,11,10, 0, 7, 7,10,10, 0, 7, 7,
  19165. 10,10, 0, 9, 9,11,11, 0, 0, 0,11,10, 5, 7, 8,10,
  19166. 11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 9,11,11,
  19167. 0, 0, 0,10,11, 9,10, 9,12,11, 0,10,10,12,12, 0,
  19168. 10,10,12,11, 0,12,12,13,13, 0, 0, 0,13,13, 9, 9,
  19169. 10,11,12, 0,10,10,12,12, 0,10,10,11,12, 0,12,12,
  19170. 13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19171. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19172. 7, 9, 9,13,13, 0, 9, 8,12,12, 0, 8, 9,12,12, 0,
  19173. 10, 9,12,12, 0, 0, 0,12,12, 7,10, 9,13,13, 0, 9,
  19174. 9,12,12, 0, 9, 8,12,12, 0, 9,10,12,12, 0, 0, 0,
  19175. 12,12,10,11,11,14,14, 0,11,10,13,12, 0,11,11,13,
  19176. 13, 0,12,12,13,13, 0, 0, 0,13,13,10,11,11,14,14,
  19177. 0,10,11,12,13, 0,11,11,13,13, 0,12,12,13,13, 0,
  19178. 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19179. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19180. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19181. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19182. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,
  19183. 11,11,14,14, 0,11,11,13,13, 0,11,10,13,13, 0,12,
  19184. 12,13,13, 0, 0, 0,13,13,10,11,11,14,14, 0,11,11,
  19185. 13,13, 0,10,11,13,13, 0,12,12,13,13, 0, 0, 0,13,
  19186. 13,
  19187. };
  19188. static float _vq_quantthresh__44c7_s_p2_0[] = {
  19189. -1.5, -0.5, 0.5, 1.5,
  19190. };
  19191. static long _vq_quantmap__44c7_s_p2_0[] = {
  19192. 3, 1, 0, 2, 4,
  19193. };
  19194. static encode_aux_threshmatch _vq_auxt__44c7_s_p2_0 = {
  19195. _vq_quantthresh__44c7_s_p2_0,
  19196. _vq_quantmap__44c7_s_p2_0,
  19197. 5,
  19198. 5
  19199. };
  19200. static static_codebook _44c7_s_p2_0 = {
  19201. 4, 625,
  19202. _vq_lengthlist__44c7_s_p2_0,
  19203. 1, -533725184, 1611661312, 3, 0,
  19204. _vq_quantlist__44c7_s_p2_0,
  19205. NULL,
  19206. &_vq_auxt__44c7_s_p2_0,
  19207. NULL,
  19208. 0
  19209. };
  19210. static long _vq_quantlist__44c7_s_p3_0[] = {
  19211. 4,
  19212. 3,
  19213. 5,
  19214. 2,
  19215. 6,
  19216. 1,
  19217. 7,
  19218. 0,
  19219. 8,
  19220. };
  19221. static long _vq_lengthlist__44c7_s_p3_0[] = {
  19222. 2, 4, 4, 5, 5, 7, 7, 8, 8, 0, 4, 4, 6, 6, 7, 7,
  19223. 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6,
  19224. 8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0,
  19225. 7, 7, 9, 9,10,10, 0, 0, 0, 7, 7, 9, 9,10,10, 0,
  19226. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19227. 0,
  19228. };
  19229. static float _vq_quantthresh__44c7_s_p3_0[] = {
  19230. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  19231. };
  19232. static long _vq_quantmap__44c7_s_p3_0[] = {
  19233. 7, 5, 3, 1, 0, 2, 4, 6,
  19234. 8,
  19235. };
  19236. static encode_aux_threshmatch _vq_auxt__44c7_s_p3_0 = {
  19237. _vq_quantthresh__44c7_s_p3_0,
  19238. _vq_quantmap__44c7_s_p3_0,
  19239. 9,
  19240. 9
  19241. };
  19242. static static_codebook _44c7_s_p3_0 = {
  19243. 2, 81,
  19244. _vq_lengthlist__44c7_s_p3_0,
  19245. 1, -531628032, 1611661312, 4, 0,
  19246. _vq_quantlist__44c7_s_p3_0,
  19247. NULL,
  19248. &_vq_auxt__44c7_s_p3_0,
  19249. NULL,
  19250. 0
  19251. };
  19252. static long _vq_quantlist__44c7_s_p4_0[] = {
  19253. 8,
  19254. 7,
  19255. 9,
  19256. 6,
  19257. 10,
  19258. 5,
  19259. 11,
  19260. 4,
  19261. 12,
  19262. 3,
  19263. 13,
  19264. 2,
  19265. 14,
  19266. 1,
  19267. 15,
  19268. 0,
  19269. 16,
  19270. };
  19271. static long _vq_lengthlist__44c7_s_p4_0[] = {
  19272. 3, 4, 4, 6, 5, 7, 7, 7, 7, 8, 8, 9, 9,10,10,11,
  19273. 11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9,10,10,10,
  19274. 11,11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10,
  19275. 11,11,11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,
  19276. 11,11,12,12, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,
  19277. 10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
  19278. 11,11,12,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
  19279. 10,11,11,12,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
  19280. 10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
  19281. 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 0, 0,
  19282. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19283. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19284. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19285. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19286. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19287. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19288. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19289. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19290. 0,
  19291. };
  19292. static float _vq_quantthresh__44c7_s_p4_0[] = {
  19293. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  19294. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  19295. };
  19296. static long _vq_quantmap__44c7_s_p4_0[] = {
  19297. 15, 13, 11, 9, 7, 5, 3, 1,
  19298. 0, 2, 4, 6, 8, 10, 12, 14,
  19299. 16,
  19300. };
  19301. static encode_aux_threshmatch _vq_auxt__44c7_s_p4_0 = {
  19302. _vq_quantthresh__44c7_s_p4_0,
  19303. _vq_quantmap__44c7_s_p4_0,
  19304. 17,
  19305. 17
  19306. };
  19307. static static_codebook _44c7_s_p4_0 = {
  19308. 2, 289,
  19309. _vq_lengthlist__44c7_s_p4_0,
  19310. 1, -529530880, 1611661312, 5, 0,
  19311. _vq_quantlist__44c7_s_p4_0,
  19312. NULL,
  19313. &_vq_auxt__44c7_s_p4_0,
  19314. NULL,
  19315. 0
  19316. };
  19317. static long _vq_quantlist__44c7_s_p5_0[] = {
  19318. 1,
  19319. 0,
  19320. 2,
  19321. };
  19322. static long _vq_lengthlist__44c7_s_p5_0[] = {
  19323. 1, 4, 4, 5, 7, 7, 5, 7, 7, 4, 7, 7,10,11,10,10,
  19324. 11,11, 4, 7, 7,10,10,11,10,10,11, 5,10,10, 9,12,
  19325. 11,10,12,12, 7,11,10,12,12,12,12,13,13, 7,10,11,
  19326. 11,12,12,12,13,13, 5,10,10,10,12,12,10,12,12, 7,
  19327. 11,10,12,13,13,12,12,12, 7,10,11,12,13,13,12,12,
  19328. 12,
  19329. };
  19330. static float _vq_quantthresh__44c7_s_p5_0[] = {
  19331. -5.5, 5.5,
  19332. };
  19333. static long _vq_quantmap__44c7_s_p5_0[] = {
  19334. 1, 0, 2,
  19335. };
  19336. static encode_aux_threshmatch _vq_auxt__44c7_s_p5_0 = {
  19337. _vq_quantthresh__44c7_s_p5_0,
  19338. _vq_quantmap__44c7_s_p5_0,
  19339. 3,
  19340. 3
  19341. };
  19342. static static_codebook _44c7_s_p5_0 = {
  19343. 4, 81,
  19344. _vq_lengthlist__44c7_s_p5_0,
  19345. 1, -529137664, 1618345984, 2, 0,
  19346. _vq_quantlist__44c7_s_p5_0,
  19347. NULL,
  19348. &_vq_auxt__44c7_s_p5_0,
  19349. NULL,
  19350. 0
  19351. };
  19352. static long _vq_quantlist__44c7_s_p5_1[] = {
  19353. 5,
  19354. 4,
  19355. 6,
  19356. 3,
  19357. 7,
  19358. 2,
  19359. 8,
  19360. 1,
  19361. 9,
  19362. 0,
  19363. 10,
  19364. };
  19365. static long _vq_lengthlist__44c7_s_p5_1[] = {
  19366. 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9,12, 4, 4, 6, 6,
  19367. 7, 7, 8, 8, 9, 9,11, 5, 5, 6, 6, 7, 7, 8, 8, 9,
  19368. 9,12, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,12,12,12, 6,
  19369. 6, 7, 7, 8, 8, 9, 9,12,12,12, 6, 6, 7, 7, 8, 8,
  19370. 9, 9,12,11,11, 6, 6, 7, 7, 8, 8, 9, 9,12,12,11,
  19371. 7, 7, 8, 8, 8, 8, 8, 8,12,12,12,11,11, 8, 8, 8,
  19372. 8, 8, 8,12,12,12,11,11, 7, 7, 7, 7, 8, 8,12,12,
  19373. 12,11,11, 7, 7, 7, 7, 8, 8,
  19374. };
  19375. static float _vq_quantthresh__44c7_s_p5_1[] = {
  19376. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  19377. 3.5, 4.5,
  19378. };
  19379. static long _vq_quantmap__44c7_s_p5_1[] = {
  19380. 9, 7, 5, 3, 1, 0, 2, 4,
  19381. 6, 8, 10,
  19382. };
  19383. static encode_aux_threshmatch _vq_auxt__44c7_s_p5_1 = {
  19384. _vq_quantthresh__44c7_s_p5_1,
  19385. _vq_quantmap__44c7_s_p5_1,
  19386. 11,
  19387. 11
  19388. };
  19389. static static_codebook _44c7_s_p5_1 = {
  19390. 2, 121,
  19391. _vq_lengthlist__44c7_s_p5_1,
  19392. 1, -531365888, 1611661312, 4, 0,
  19393. _vq_quantlist__44c7_s_p5_1,
  19394. NULL,
  19395. &_vq_auxt__44c7_s_p5_1,
  19396. NULL,
  19397. 0
  19398. };
  19399. static long _vq_quantlist__44c7_s_p6_0[] = {
  19400. 6,
  19401. 5,
  19402. 7,
  19403. 4,
  19404. 8,
  19405. 3,
  19406. 9,
  19407. 2,
  19408. 10,
  19409. 1,
  19410. 11,
  19411. 0,
  19412. 12,
  19413. };
  19414. static long _vq_lengthlist__44c7_s_p6_0[] = {
  19415. 1, 4, 4, 7, 7, 8, 8, 9, 9,10, 9,10,10, 5, 5, 5,
  19416. 7, 7, 9, 9, 9, 9,10,10,11,11, 6, 5, 5, 7, 7, 9,
  19417. 9, 9, 9,11,10,11,11, 0, 6, 6, 7, 7, 9, 9,10,10,
  19418. 11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
  19419. 12, 0,11,10, 8, 8,10,10,11,11,11,12,12,12, 0,11,
  19420. 11, 8, 8,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
  19421. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19422. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19423. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19424. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19425. 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19426. };
  19427. static float _vq_quantthresh__44c7_s_p6_0[] = {
  19428. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  19429. 12.5, 17.5, 22.5, 27.5,
  19430. };
  19431. static long _vq_quantmap__44c7_s_p6_0[] = {
  19432. 11, 9, 7, 5, 3, 1, 0, 2,
  19433. 4, 6, 8, 10, 12,
  19434. };
  19435. static encode_aux_threshmatch _vq_auxt__44c7_s_p6_0 = {
  19436. _vq_quantthresh__44c7_s_p6_0,
  19437. _vq_quantmap__44c7_s_p6_0,
  19438. 13,
  19439. 13
  19440. };
  19441. static static_codebook _44c7_s_p6_0 = {
  19442. 2, 169,
  19443. _vq_lengthlist__44c7_s_p6_0,
  19444. 1, -526516224, 1616117760, 4, 0,
  19445. _vq_quantlist__44c7_s_p6_0,
  19446. NULL,
  19447. &_vq_auxt__44c7_s_p6_0,
  19448. NULL,
  19449. 0
  19450. };
  19451. static long _vq_quantlist__44c7_s_p6_1[] = {
  19452. 2,
  19453. 1,
  19454. 3,
  19455. 0,
  19456. 4,
  19457. };
  19458. static long _vq_lengthlist__44c7_s_p6_1[] = {
  19459. 3, 4, 4, 5, 5, 6, 4, 4, 5, 5, 6, 4, 4, 4, 5, 6,
  19460. 5, 5, 5, 5, 6, 6, 6, 5, 5,
  19461. };
  19462. static float _vq_quantthresh__44c7_s_p6_1[] = {
  19463. -1.5, -0.5, 0.5, 1.5,
  19464. };
  19465. static long _vq_quantmap__44c7_s_p6_1[] = {
  19466. 3, 1, 0, 2, 4,
  19467. };
  19468. static encode_aux_threshmatch _vq_auxt__44c7_s_p6_1 = {
  19469. _vq_quantthresh__44c7_s_p6_1,
  19470. _vq_quantmap__44c7_s_p6_1,
  19471. 5,
  19472. 5
  19473. };
  19474. static static_codebook _44c7_s_p6_1 = {
  19475. 2, 25,
  19476. _vq_lengthlist__44c7_s_p6_1,
  19477. 1, -533725184, 1611661312, 3, 0,
  19478. _vq_quantlist__44c7_s_p6_1,
  19479. NULL,
  19480. &_vq_auxt__44c7_s_p6_1,
  19481. NULL,
  19482. 0
  19483. };
  19484. static long _vq_quantlist__44c7_s_p7_0[] = {
  19485. 6,
  19486. 5,
  19487. 7,
  19488. 4,
  19489. 8,
  19490. 3,
  19491. 9,
  19492. 2,
  19493. 10,
  19494. 1,
  19495. 11,
  19496. 0,
  19497. 12,
  19498. };
  19499. static long _vq_lengthlist__44c7_s_p7_0[] = {
  19500. 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
  19501. 7, 7, 9, 8, 9, 9,11,11,12,12, 6, 5, 5, 7, 7, 9,
  19502. 9, 9,10,11,11,12,12,20, 7, 7, 7, 7, 9, 9,10,10,
  19503. 11,11,12,12,20, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
  19504. 12,20,11,11, 8, 8,10, 9,11,11,11,11,12,12,20,12,
  19505. 12, 8, 8, 9, 9,11,11,12,12,12,12,20,20,20,11,11,
  19506. 10,10,11,11,12,12,13,13,20,20,20,11,11,10,10,11,
  19507. 11,12,12,13,13,20,20,20,14,14,11,11,11,12,13,13,
  19508. 13,13,20,20,20,15,14,11,11,11,11,13,13,14,14,20,
  19509. 20,20,20,19,12,12,12,12,13,13,14,14,19,19,19,19,
  19510. 19,13,12,12,12,13,13,14,14,
  19511. };
  19512. static float _vq_quantthresh__44c7_s_p7_0[] = {
  19513. -60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5,
  19514. 27.5, 38.5, 49.5, 60.5,
  19515. };
  19516. static long _vq_quantmap__44c7_s_p7_0[] = {
  19517. 11, 9, 7, 5, 3, 1, 0, 2,
  19518. 4, 6, 8, 10, 12,
  19519. };
  19520. static encode_aux_threshmatch _vq_auxt__44c7_s_p7_0 = {
  19521. _vq_quantthresh__44c7_s_p7_0,
  19522. _vq_quantmap__44c7_s_p7_0,
  19523. 13,
  19524. 13
  19525. };
  19526. static static_codebook _44c7_s_p7_0 = {
  19527. 2, 169,
  19528. _vq_lengthlist__44c7_s_p7_0,
  19529. 1, -523206656, 1618345984, 4, 0,
  19530. _vq_quantlist__44c7_s_p7_0,
  19531. NULL,
  19532. &_vq_auxt__44c7_s_p7_0,
  19533. NULL,
  19534. 0
  19535. };
  19536. static long _vq_quantlist__44c7_s_p7_1[] = {
  19537. 5,
  19538. 4,
  19539. 6,
  19540. 3,
  19541. 7,
  19542. 2,
  19543. 8,
  19544. 1,
  19545. 9,
  19546. 0,
  19547. 10,
  19548. };
  19549. static long _vq_lengthlist__44c7_s_p7_1[] = {
  19550. 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 9, 5, 5, 6, 6,
  19551. 7, 7, 7, 7, 8, 8, 9, 5, 5, 6, 6, 7, 7, 7, 7, 7,
  19552. 7, 9, 6, 6, 7, 7, 7, 7, 8, 8, 7, 8, 9, 9, 9, 7,
  19553. 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8,
  19554. 8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9,
  19555. 7, 7, 8, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 7, 7, 7,
  19556. 7, 8, 7, 9, 9, 9, 9, 9, 8, 8, 7, 7, 8, 8, 9, 9,
  19557. 9, 9, 9, 7, 7, 7, 7, 8, 8,
  19558. };
  19559. static float _vq_quantthresh__44c7_s_p7_1[] = {
  19560. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  19561. 3.5, 4.5,
  19562. };
  19563. static long _vq_quantmap__44c7_s_p7_1[] = {
  19564. 9, 7, 5, 3, 1, 0, 2, 4,
  19565. 6, 8, 10,
  19566. };
  19567. static encode_aux_threshmatch _vq_auxt__44c7_s_p7_1 = {
  19568. _vq_quantthresh__44c7_s_p7_1,
  19569. _vq_quantmap__44c7_s_p7_1,
  19570. 11,
  19571. 11
  19572. };
  19573. static static_codebook _44c7_s_p7_1 = {
  19574. 2, 121,
  19575. _vq_lengthlist__44c7_s_p7_1,
  19576. 1, -531365888, 1611661312, 4, 0,
  19577. _vq_quantlist__44c7_s_p7_1,
  19578. NULL,
  19579. &_vq_auxt__44c7_s_p7_1,
  19580. NULL,
  19581. 0
  19582. };
  19583. static long _vq_quantlist__44c7_s_p8_0[] = {
  19584. 7,
  19585. 6,
  19586. 8,
  19587. 5,
  19588. 9,
  19589. 4,
  19590. 10,
  19591. 3,
  19592. 11,
  19593. 2,
  19594. 12,
  19595. 1,
  19596. 13,
  19597. 0,
  19598. 14,
  19599. };
  19600. static long _vq_lengthlist__44c7_s_p8_0[] = {
  19601. 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9, 9,10,11,11, 6,
  19602. 5, 5, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11, 6, 5,
  19603. 5, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11,17, 8, 8,
  19604. 8, 8,10, 9, 8, 9,10,10,11,11,11,11,17, 8, 8, 8,
  19605. 8,10,10, 9, 9,10,10,11,11,12,12,17,12,13, 9, 9,
  19606. 10,10, 9, 9,10,11,11,11,12,12,17,13,13, 9, 9,10,
  19607. 10,10,10,10,10,11,11,12,12,17,17,17, 9, 9, 9, 9,
  19608. 10,10,11,11,11,12,12,12,17,17,17, 9, 9, 9, 9,11,
  19609. 10,11,12,11,12,13,12,17,17,17,13,14,10,10,10,11,
  19610. 12,11,12,12,12,13,17,17,17,14,14,10, 9,10, 9,12,
  19611. 12,12,12,13,13,17,17,17,17,17,11,11,11,11,11,12,
  19612. 13,13,13,14,17,17,17,17,17,12,10,11, 9,12,11,13,
  19613. 15,14,14,17,17,17,17,17,14,15,11,12,12,13,13,12,
  19614. 14,14,17,16,16,16,16,15,13,12, 9,12,10,14,12,15,
  19615. 14,
  19616. };
  19617. static float _vq_quantthresh__44c7_s_p8_0[] = {
  19618. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  19619. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  19620. };
  19621. static long _vq_quantmap__44c7_s_p8_0[] = {
  19622. 13, 11, 9, 7, 5, 3, 1, 0,
  19623. 2, 4, 6, 8, 10, 12, 14,
  19624. };
  19625. static encode_aux_threshmatch _vq_auxt__44c7_s_p8_0 = {
  19626. _vq_quantthresh__44c7_s_p8_0,
  19627. _vq_quantmap__44c7_s_p8_0,
  19628. 15,
  19629. 15
  19630. };
  19631. static static_codebook _44c7_s_p8_0 = {
  19632. 2, 225,
  19633. _vq_lengthlist__44c7_s_p8_0,
  19634. 1, -520986624, 1620377600, 4, 0,
  19635. _vq_quantlist__44c7_s_p8_0,
  19636. NULL,
  19637. &_vq_auxt__44c7_s_p8_0,
  19638. NULL,
  19639. 0
  19640. };
  19641. static long _vq_quantlist__44c7_s_p8_1[] = {
  19642. 10,
  19643. 9,
  19644. 11,
  19645. 8,
  19646. 12,
  19647. 7,
  19648. 13,
  19649. 6,
  19650. 14,
  19651. 5,
  19652. 15,
  19653. 4,
  19654. 16,
  19655. 3,
  19656. 17,
  19657. 2,
  19658. 18,
  19659. 1,
  19660. 19,
  19661. 0,
  19662. 20,
  19663. };
  19664. static long _vq_lengthlist__44c7_s_p8_1[] = {
  19665. 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9,
  19666. 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
  19667. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
  19668. 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
  19669. 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
  19670. 9, 9, 9, 9,11,11,11, 7, 7, 8, 8, 8, 9, 9, 9, 9,
  19671. 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,11, 8, 8, 8, 8,
  19672. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,
  19673. 11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9,
  19674. 10,10, 9,11,11,11, 8, 9, 9, 8, 9, 9, 9, 9, 9, 9,
  19675. 9, 9,10,10, 9, 9,10, 9,11,11,11,11,11, 9, 9, 9,
  19676. 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,11,10,11,
  19677. 11,11, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10, 9,
  19678. 9,10,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9,10,
  19679. 10, 9, 9,10,10,10,10,11,11,11,11,11, 9, 9, 9, 9,
  19680. 9, 9, 9,10,10,10, 9,10,10,10,10, 9,11,11,10,11,
  19681. 11,11,11, 9, 9, 9, 9,10,10,10,10,10,10,10, 9,10,
  19682. 10,10,11,11,11,11,11,11, 9, 9, 9, 9, 9,10,10,10,
  19683. 10,10, 9, 9,10, 9,11,10,11,11,11,11,11, 9, 9, 9,
  19684. 9, 9,10,10, 9,10,10,10,10,10,10,11,11,11,11,11,
  19685. 11,11,10, 9,10, 9,10,10,10,10,10,10,10,10,10, 9,
  19686. 10,11,10,11,11,11,11,11,10, 9, 9,10,10,10,10,10,
  19687. 10,10,10,10,10,11,11,11,11,11,11,11,10,11,10,10,
  19688. 10,10,10,10,10,10, 9,10,10, 9,11,11,11,11,11,10,
  19689. 11,11,11,10,10, 9, 9,10,10,10,10,10, 9,10,10,11,
  19690. 11,11,11,11,10,11,11,11,10,10, 9, 9,10,10,10,10,
  19691. 10,10,10,10,11,11,11,11,11,11,11,11,11,11,11, 9,
  19692. 9, 9, 9,10,10,10,10,10,10,
  19693. };
  19694. static float _vq_quantthresh__44c7_s_p8_1[] = {
  19695. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  19696. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  19697. 6.5, 7.5, 8.5, 9.5,
  19698. };
  19699. static long _vq_quantmap__44c7_s_p8_1[] = {
  19700. 19, 17, 15, 13, 11, 9, 7, 5,
  19701. 3, 1, 0, 2, 4, 6, 8, 10,
  19702. 12, 14, 16, 18, 20,
  19703. };
  19704. static encode_aux_threshmatch _vq_auxt__44c7_s_p8_1 = {
  19705. _vq_quantthresh__44c7_s_p8_1,
  19706. _vq_quantmap__44c7_s_p8_1,
  19707. 21,
  19708. 21
  19709. };
  19710. static static_codebook _44c7_s_p8_1 = {
  19711. 2, 441,
  19712. _vq_lengthlist__44c7_s_p8_1,
  19713. 1, -529268736, 1611661312, 5, 0,
  19714. _vq_quantlist__44c7_s_p8_1,
  19715. NULL,
  19716. &_vq_auxt__44c7_s_p8_1,
  19717. NULL,
  19718. 0
  19719. };
  19720. static long _vq_quantlist__44c7_s_p9_0[] = {
  19721. 6,
  19722. 5,
  19723. 7,
  19724. 4,
  19725. 8,
  19726. 3,
  19727. 9,
  19728. 2,
  19729. 10,
  19730. 1,
  19731. 11,
  19732. 0,
  19733. 12,
  19734. };
  19735. static long _vq_lengthlist__44c7_s_p9_0[] = {
  19736. 1, 4, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 9, 8,
  19737. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 9, 9, 9, 9, 9,
  19738. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  19739. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  19740. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  19741. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  19742. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  19743. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  19744. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  19745. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  19746. 9, 9, 9, 9, 9, 9, 8, 8, 8,
  19747. };
  19748. static float _vq_quantthresh__44c7_s_p9_0[] = {
  19749. -3503.5, -2866.5, -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5,
  19750. 1592.5, 2229.5, 2866.5, 3503.5,
  19751. };
  19752. static long _vq_quantmap__44c7_s_p9_0[] = {
  19753. 11, 9, 7, 5, 3, 1, 0, 2,
  19754. 4, 6, 8, 10, 12,
  19755. };
  19756. static encode_aux_threshmatch _vq_auxt__44c7_s_p9_0 = {
  19757. _vq_quantthresh__44c7_s_p9_0,
  19758. _vq_quantmap__44c7_s_p9_0,
  19759. 13,
  19760. 13
  19761. };
  19762. static static_codebook _44c7_s_p9_0 = {
  19763. 2, 169,
  19764. _vq_lengthlist__44c7_s_p9_0,
  19765. 1, -511845376, 1630791680, 4, 0,
  19766. _vq_quantlist__44c7_s_p9_0,
  19767. NULL,
  19768. &_vq_auxt__44c7_s_p9_0,
  19769. NULL,
  19770. 0
  19771. };
  19772. static long _vq_quantlist__44c7_s_p9_1[] = {
  19773. 6,
  19774. 5,
  19775. 7,
  19776. 4,
  19777. 8,
  19778. 3,
  19779. 9,
  19780. 2,
  19781. 10,
  19782. 1,
  19783. 11,
  19784. 0,
  19785. 12,
  19786. };
  19787. static long _vq_lengthlist__44c7_s_p9_1[] = {
  19788. 1, 4, 4, 7, 7, 7, 7, 7, 7, 9, 8,10,10, 6, 6, 6,
  19789. 7, 8, 8, 8, 8, 8, 9, 9,10,11, 6, 5, 6, 8, 7, 8,
  19790. 8, 8, 8, 9, 9,10,11,14, 9, 8, 9, 8, 9, 8, 8, 9,
  19791. 10,10,11,11,14, 8, 9, 8, 8, 8, 9, 9, 8,12,10,11,
  19792. 11,14,13,13, 8, 9, 9, 9, 9,10,10,12,12,12,14,14,
  19793. 13, 8, 7,10, 9, 9,10,10,11,11,10,14,14,14, 8, 9,
  19794. 9, 8,11,10,12,11,11,11,14,14,14, 9, 7, 9, 8,10,
  19795. 10,11,11,11,10,14,14,14,12,12,10, 9,11,11,11,13,
  19796. 12,13,14,14,14,12,12,10,10,11, 8,11,11,14,13,14,
  19797. 14,14,14,14,12,13,11,12,12,11,14,13,13,13,13,13,
  19798. 13,12,11,11, 9,12,12,12,13,
  19799. };
  19800. static float _vq_quantthresh__44c7_s_p9_1[] = {
  19801. -269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5,
  19802. 122.5, 171.5, 220.5, 269.5,
  19803. };
  19804. static long _vq_quantmap__44c7_s_p9_1[] = {
  19805. 11, 9, 7, 5, 3, 1, 0, 2,
  19806. 4, 6, 8, 10, 12,
  19807. };
  19808. static encode_aux_threshmatch _vq_auxt__44c7_s_p9_1 = {
  19809. _vq_quantthresh__44c7_s_p9_1,
  19810. _vq_quantmap__44c7_s_p9_1,
  19811. 13,
  19812. 13
  19813. };
  19814. static static_codebook _44c7_s_p9_1 = {
  19815. 2, 169,
  19816. _vq_lengthlist__44c7_s_p9_1,
  19817. 1, -518889472, 1622704128, 4, 0,
  19818. _vq_quantlist__44c7_s_p9_1,
  19819. NULL,
  19820. &_vq_auxt__44c7_s_p9_1,
  19821. NULL,
  19822. 0
  19823. };
  19824. static long _vq_quantlist__44c7_s_p9_2[] = {
  19825. 24,
  19826. 23,
  19827. 25,
  19828. 22,
  19829. 26,
  19830. 21,
  19831. 27,
  19832. 20,
  19833. 28,
  19834. 19,
  19835. 29,
  19836. 18,
  19837. 30,
  19838. 17,
  19839. 31,
  19840. 16,
  19841. 32,
  19842. 15,
  19843. 33,
  19844. 14,
  19845. 34,
  19846. 13,
  19847. 35,
  19848. 12,
  19849. 36,
  19850. 11,
  19851. 37,
  19852. 10,
  19853. 38,
  19854. 9,
  19855. 39,
  19856. 8,
  19857. 40,
  19858. 7,
  19859. 41,
  19860. 6,
  19861. 42,
  19862. 5,
  19863. 43,
  19864. 4,
  19865. 44,
  19866. 3,
  19867. 45,
  19868. 2,
  19869. 46,
  19870. 1,
  19871. 47,
  19872. 0,
  19873. 48,
  19874. };
  19875. static long _vq_lengthlist__44c7_s_p9_2[] = {
  19876. 2, 4, 3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  19877. 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  19878. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  19879. 7,
  19880. };
  19881. static float _vq_quantthresh__44c7_s_p9_2[] = {
  19882. -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5,
  19883. -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5,
  19884. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  19885. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  19886. 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5,
  19887. 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5,
  19888. };
  19889. static long _vq_quantmap__44c7_s_p9_2[] = {
  19890. 47, 45, 43, 41, 39, 37, 35, 33,
  19891. 31, 29, 27, 25, 23, 21, 19, 17,
  19892. 15, 13, 11, 9, 7, 5, 3, 1,
  19893. 0, 2, 4, 6, 8, 10, 12, 14,
  19894. 16, 18, 20, 22, 24, 26, 28, 30,
  19895. 32, 34, 36, 38, 40, 42, 44, 46,
  19896. 48,
  19897. };
  19898. static encode_aux_threshmatch _vq_auxt__44c7_s_p9_2 = {
  19899. _vq_quantthresh__44c7_s_p9_2,
  19900. _vq_quantmap__44c7_s_p9_2,
  19901. 49,
  19902. 49
  19903. };
  19904. static static_codebook _44c7_s_p9_2 = {
  19905. 1, 49,
  19906. _vq_lengthlist__44c7_s_p9_2,
  19907. 1, -526909440, 1611661312, 6, 0,
  19908. _vq_quantlist__44c7_s_p9_2,
  19909. NULL,
  19910. &_vq_auxt__44c7_s_p9_2,
  19911. NULL,
  19912. 0
  19913. };
  19914. static long _huff_lengthlist__44c7_s_short[] = {
  19915. 4,10,12,13,15,15,16,16,17,17, 5, 5, 7, 8, 9, 9,
  19916. 12,17,18,18, 7, 5, 4, 5, 7, 8,10,13,18,18, 8, 6,
  19917. 5, 4, 5, 6, 9,12,17,18,10, 9, 6, 4, 4, 5, 8,12,
  19918. 18,17,11, 9, 7, 5, 4, 4, 6,10,17,17,13,12,10, 8,
  19919. 6, 5, 6, 9,17,17,14,13,12, 7, 6, 5, 5, 8,16,17,
  19920. 16,15,14, 8, 8, 7, 7, 9,14,17,17,17,17,12,11,11,
  19921. 11,12,16,17,
  19922. };
  19923. static static_codebook _huff_book__44c7_s_short = {
  19924. 2, 100,
  19925. _huff_lengthlist__44c7_s_short,
  19926. 0, 0, 0, 0, 0,
  19927. NULL,
  19928. NULL,
  19929. NULL,
  19930. NULL,
  19931. 0
  19932. };
  19933. static long _huff_lengthlist__44c8_s_long[] = {
  19934. 3, 8,12,14,14,13,13,12,13,15, 6, 4, 6, 8,10,10,
  19935. 11,11,13,15, 9, 5, 4, 5, 7, 8, 9,10,13,15,11, 7,
  19936. 4, 4, 5, 6, 8, 9,13,14,12, 9, 6, 5, 5, 5, 7, 9,
  19937. 12,14,11,10, 7, 6, 5, 4, 6, 7,11,12,11,10, 9, 8,
  19938. 7, 5, 6, 6,10,11,12,11,10, 9, 8, 6, 6, 5, 8,10,
  19939. 12,12,12,11,11,10, 9, 7, 8,11,12,13,14,14,15,13,
  19940. 10, 9, 9,11,
  19941. };
  19942. static static_codebook _huff_book__44c8_s_long = {
  19943. 2, 100,
  19944. _huff_lengthlist__44c8_s_long,
  19945. 0, 0, 0, 0, 0,
  19946. NULL,
  19947. NULL,
  19948. NULL,
  19949. NULL,
  19950. 0
  19951. };
  19952. static long _vq_quantlist__44c8_s_p1_0[] = {
  19953. 1,
  19954. 0,
  19955. 2,
  19956. };
  19957. static long _vq_lengthlist__44c8_s_p1_0[] = {
  19958. 1, 5, 5, 0, 5, 5, 0, 5, 5, 6, 7, 7, 0, 9, 8, 0,
  19959. 8, 8, 6, 7, 8, 0, 8, 9, 0, 8, 8, 0, 0, 0, 0, 0,
  19960. 0, 0, 0, 0, 5, 8, 8, 0, 8, 8, 0, 8, 8, 5, 8, 8,
  19961. 0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
  19962. 8, 8, 0, 8, 8, 0, 8, 7, 5, 8, 8, 0, 8, 8, 0, 7,
  19963. 8,
  19964. };
  19965. static float _vq_quantthresh__44c8_s_p1_0[] = {
  19966. -0.5, 0.5,
  19967. };
  19968. static long _vq_quantmap__44c8_s_p1_0[] = {
  19969. 1, 0, 2,
  19970. };
  19971. static encode_aux_threshmatch _vq_auxt__44c8_s_p1_0 = {
  19972. _vq_quantthresh__44c8_s_p1_0,
  19973. _vq_quantmap__44c8_s_p1_0,
  19974. 3,
  19975. 3
  19976. };
  19977. static static_codebook _44c8_s_p1_0 = {
  19978. 4, 81,
  19979. _vq_lengthlist__44c8_s_p1_0,
  19980. 1, -535822336, 1611661312, 2, 0,
  19981. _vq_quantlist__44c8_s_p1_0,
  19982. NULL,
  19983. &_vq_auxt__44c8_s_p1_0,
  19984. NULL,
  19985. 0
  19986. };
  19987. static long _vq_quantlist__44c8_s_p2_0[] = {
  19988. 2,
  19989. 1,
  19990. 3,
  19991. 0,
  19992. 4,
  19993. };
  19994. static long _vq_lengthlist__44c8_s_p2_0[] = {
  19995. 3, 5, 5, 8, 8, 0, 6, 6, 8, 8, 0, 5, 6, 8, 8, 0,
  19996. 7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 6, 9, 9, 0, 7,
  19997. 7,10, 9, 0, 7, 7,10, 9, 0, 9, 9,11,11, 0, 0, 0,
  19998. 11,11, 5, 6, 7, 9, 9, 0, 7, 7, 9,10, 0, 7, 7, 9,
  19999. 10, 0, 9, 9,11,11, 0, 0, 0,11,11, 8, 9, 9,11,10,
  20000. 0,11,10,12,11, 0,10,10,12,11, 0,13,13,14,13, 0,
  20001. 0, 0,14,13, 8, 9, 9,10,11, 0,10,11,11,12, 0,10,
  20002. 10,12,12, 0,13,13,13,14, 0, 0, 0,13,14, 0, 0, 0,
  20003. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20004. 0, 0, 0, 0, 0, 0, 6, 7, 7,10,10, 0, 7, 7,10,10,
  20005. 0, 7, 7,10,10, 0, 9, 8,10,10, 0, 0, 0,10,10, 6,
  20006. 7, 7,10,10, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 8,
  20007. 9,10,10, 0, 0, 0,10,10, 8,10, 9,12,12, 0,10, 9,
  20008. 12,11, 0,10,10,11,12, 0,12,11,13,12, 0, 0, 0,13,
  20009. 13, 8, 9,10,11,12, 0, 9,10,11,12, 0,10,10,11,12,
  20010. 0,11,12,12,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
  20011. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20012. 0, 0, 0, 6, 8, 7,11,10, 0, 7, 7,10,10, 0, 7, 7,
  20013. 10, 9, 0, 8, 9,10,10, 0, 0, 0,10,10, 6, 7, 8,10,
  20014. 11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 8,10,10,
  20015. 0, 0, 0,10,10, 8,10, 9,12,11, 0,10,10,12,11, 0,
  20016. 10,10,12,11, 0,11,12,13,12, 0, 0, 0,13,12, 9, 9,
  20017. 10,11,12, 0,10,10,11,12, 0,10,10,11,12, 0,12,11,
  20018. 12,13, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20019. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20020. 7, 9, 9,12,13, 0, 9, 8,12,11, 0, 8, 9,11,12, 0,
  20021. 10, 9,12,11, 0, 0, 0,11,12, 7, 9, 9,13,13, 0, 9,
  20022. 9,11,12, 0, 9, 8,12,11, 0, 9,10,11,12, 0, 0, 0,
  20023. 12,11, 9,11,11,14,13, 0,10,10,13,12, 0,10,10,13,
  20024. 13, 0,12,11,13,12, 0, 0, 0,13,13, 9,11,11,13,14,
  20025. 0,10,10,12,13, 0,10,10,13,13, 0,11,12,12,13, 0,
  20026. 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20027. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20028. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20029. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20030. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
  20031. 11,11,14,13, 0,10,10,13,12, 0,10,10,13,12, 0,11,
  20032. 12,13,13, 0, 0, 0,13,12, 9,11,11,13,14, 0,10,10,
  20033. 13,13, 0,10,10,12,13, 0,12,11,13,13, 0, 0, 0,12,
  20034. 13,
  20035. };
  20036. static float _vq_quantthresh__44c8_s_p2_0[] = {
  20037. -1.5, -0.5, 0.5, 1.5,
  20038. };
  20039. static long _vq_quantmap__44c8_s_p2_0[] = {
  20040. 3, 1, 0, 2, 4,
  20041. };
  20042. static encode_aux_threshmatch _vq_auxt__44c8_s_p2_0 = {
  20043. _vq_quantthresh__44c8_s_p2_0,
  20044. _vq_quantmap__44c8_s_p2_0,
  20045. 5,
  20046. 5
  20047. };
  20048. static static_codebook _44c8_s_p2_0 = {
  20049. 4, 625,
  20050. _vq_lengthlist__44c8_s_p2_0,
  20051. 1, -533725184, 1611661312, 3, 0,
  20052. _vq_quantlist__44c8_s_p2_0,
  20053. NULL,
  20054. &_vq_auxt__44c8_s_p2_0,
  20055. NULL,
  20056. 0
  20057. };
  20058. static long _vq_quantlist__44c8_s_p3_0[] = {
  20059. 4,
  20060. 3,
  20061. 5,
  20062. 2,
  20063. 6,
  20064. 1,
  20065. 7,
  20066. 0,
  20067. 8,
  20068. };
  20069. static long _vq_lengthlist__44c8_s_p3_0[] = {
  20070. 3, 3, 4, 5, 5, 7, 6, 8, 8, 0, 4, 4, 5, 5, 7, 7,
  20071. 9, 9, 0, 4, 4, 5, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6,
  20072. 8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0,
  20073. 7, 7, 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0,
  20074. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20075. 0,
  20076. };
  20077. static float _vq_quantthresh__44c8_s_p3_0[] = {
  20078. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  20079. };
  20080. static long _vq_quantmap__44c8_s_p3_0[] = {
  20081. 7, 5, 3, 1, 0, 2, 4, 6,
  20082. 8,
  20083. };
  20084. static encode_aux_threshmatch _vq_auxt__44c8_s_p3_0 = {
  20085. _vq_quantthresh__44c8_s_p3_0,
  20086. _vq_quantmap__44c8_s_p3_0,
  20087. 9,
  20088. 9
  20089. };
  20090. static static_codebook _44c8_s_p3_0 = {
  20091. 2, 81,
  20092. _vq_lengthlist__44c8_s_p3_0,
  20093. 1, -531628032, 1611661312, 4, 0,
  20094. _vq_quantlist__44c8_s_p3_0,
  20095. NULL,
  20096. &_vq_auxt__44c8_s_p3_0,
  20097. NULL,
  20098. 0
  20099. };
  20100. static long _vq_quantlist__44c8_s_p4_0[] = {
  20101. 8,
  20102. 7,
  20103. 9,
  20104. 6,
  20105. 10,
  20106. 5,
  20107. 11,
  20108. 4,
  20109. 12,
  20110. 3,
  20111. 13,
  20112. 2,
  20113. 14,
  20114. 1,
  20115. 15,
  20116. 0,
  20117. 16,
  20118. };
  20119. static long _vq_lengthlist__44c8_s_p4_0[] = {
  20120. 3, 4, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,10,
  20121. 10, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,10,10,
  20122. 11,11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
  20123. 10,11,11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,
  20124. 11,11,12,12, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,
  20125. 10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
  20126. 11,11,12,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
  20127. 10,11,11,12,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
  20128. 10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
  20129. 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 0, 0,
  20130. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20131. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20132. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20133. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20134. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20135. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20136. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20137. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20138. 0,
  20139. };
  20140. static float _vq_quantthresh__44c8_s_p4_0[] = {
  20141. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  20142. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  20143. };
  20144. static long _vq_quantmap__44c8_s_p4_0[] = {
  20145. 15, 13, 11, 9, 7, 5, 3, 1,
  20146. 0, 2, 4, 6, 8, 10, 12, 14,
  20147. 16,
  20148. };
  20149. static encode_aux_threshmatch _vq_auxt__44c8_s_p4_0 = {
  20150. _vq_quantthresh__44c8_s_p4_0,
  20151. _vq_quantmap__44c8_s_p4_0,
  20152. 17,
  20153. 17
  20154. };
  20155. static static_codebook _44c8_s_p4_0 = {
  20156. 2, 289,
  20157. _vq_lengthlist__44c8_s_p4_0,
  20158. 1, -529530880, 1611661312, 5, 0,
  20159. _vq_quantlist__44c8_s_p4_0,
  20160. NULL,
  20161. &_vq_auxt__44c8_s_p4_0,
  20162. NULL,
  20163. 0
  20164. };
  20165. static long _vq_quantlist__44c8_s_p5_0[] = {
  20166. 1,
  20167. 0,
  20168. 2,
  20169. };
  20170. static long _vq_lengthlist__44c8_s_p5_0[] = {
  20171. 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6,10,10,10,10,
  20172. 10,10, 4, 6, 6,10,10,10,10,10,10, 5,10,10, 9,12,
  20173. 12,10,12,12, 7,10,10,12,12,12,12,12,12, 7,10,10,
  20174. 12,12,12,12,12,13, 6,10,10,10,12,12,11,12,12, 8,
  20175. 10,10,12,13,12,12,12,12, 7,10,10,12,12,13,12,13,
  20176. 12,
  20177. };
  20178. static float _vq_quantthresh__44c8_s_p5_0[] = {
  20179. -5.5, 5.5,
  20180. };
  20181. static long _vq_quantmap__44c8_s_p5_0[] = {
  20182. 1, 0, 2,
  20183. };
  20184. static encode_aux_threshmatch _vq_auxt__44c8_s_p5_0 = {
  20185. _vq_quantthresh__44c8_s_p5_0,
  20186. _vq_quantmap__44c8_s_p5_0,
  20187. 3,
  20188. 3
  20189. };
  20190. static static_codebook _44c8_s_p5_0 = {
  20191. 4, 81,
  20192. _vq_lengthlist__44c8_s_p5_0,
  20193. 1, -529137664, 1618345984, 2, 0,
  20194. _vq_quantlist__44c8_s_p5_0,
  20195. NULL,
  20196. &_vq_auxt__44c8_s_p5_0,
  20197. NULL,
  20198. 0
  20199. };
  20200. static long _vq_quantlist__44c8_s_p5_1[] = {
  20201. 5,
  20202. 4,
  20203. 6,
  20204. 3,
  20205. 7,
  20206. 2,
  20207. 8,
  20208. 1,
  20209. 9,
  20210. 0,
  20211. 10,
  20212. };
  20213. static long _vq_lengthlist__44c8_s_p5_1[] = {
  20214. 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7,10, 4, 4, 6, 6,
  20215. 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
  20216. 8,11, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11, 6,
  20217. 6, 7, 7, 8, 8, 8, 8,11,11,11, 6, 6, 7, 7, 8, 8,
  20218. 8, 8,11,11,11, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11,
  20219. 7, 7, 7, 7, 8, 8, 8, 8,11,11,11,11,11, 7, 7, 8,
  20220. 8, 8, 8,11,11,11,11,11, 7, 7, 7, 7, 8, 8,11,11,
  20221. 11,11,11, 7, 7, 7, 7, 8, 8,
  20222. };
  20223. static float _vq_quantthresh__44c8_s_p5_1[] = {
  20224. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  20225. 3.5, 4.5,
  20226. };
  20227. static long _vq_quantmap__44c8_s_p5_1[] = {
  20228. 9, 7, 5, 3, 1, 0, 2, 4,
  20229. 6, 8, 10,
  20230. };
  20231. static encode_aux_threshmatch _vq_auxt__44c8_s_p5_1 = {
  20232. _vq_quantthresh__44c8_s_p5_1,
  20233. _vq_quantmap__44c8_s_p5_1,
  20234. 11,
  20235. 11
  20236. };
  20237. static static_codebook _44c8_s_p5_1 = {
  20238. 2, 121,
  20239. _vq_lengthlist__44c8_s_p5_1,
  20240. 1, -531365888, 1611661312, 4, 0,
  20241. _vq_quantlist__44c8_s_p5_1,
  20242. NULL,
  20243. &_vq_auxt__44c8_s_p5_1,
  20244. NULL,
  20245. 0
  20246. };
  20247. static long _vq_quantlist__44c8_s_p6_0[] = {
  20248. 6,
  20249. 5,
  20250. 7,
  20251. 4,
  20252. 8,
  20253. 3,
  20254. 9,
  20255. 2,
  20256. 10,
  20257. 1,
  20258. 11,
  20259. 0,
  20260. 12,
  20261. };
  20262. static long _vq_lengthlist__44c8_s_p6_0[] = {
  20263. 1, 4, 4, 7, 6, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
  20264. 7, 7, 9, 9,10, 9,11,11,12,12, 6, 5, 5, 7, 7, 9,
  20265. 9,10,10,11,11,12,12, 0, 6, 6, 7, 7, 9, 9,10,10,
  20266. 11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,12,12,12,
  20267. 12, 0,10,10, 8, 8,10,10,11,11,12,12,13,13, 0,11,
  20268. 11, 8, 8,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
  20269. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20270. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20271. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20272. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20273. 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20274. };
  20275. static float _vq_quantthresh__44c8_s_p6_0[] = {
  20276. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  20277. 12.5, 17.5, 22.5, 27.5,
  20278. };
  20279. static long _vq_quantmap__44c8_s_p6_0[] = {
  20280. 11, 9, 7, 5, 3, 1, 0, 2,
  20281. 4, 6, 8, 10, 12,
  20282. };
  20283. static encode_aux_threshmatch _vq_auxt__44c8_s_p6_0 = {
  20284. _vq_quantthresh__44c8_s_p6_0,
  20285. _vq_quantmap__44c8_s_p6_0,
  20286. 13,
  20287. 13
  20288. };
  20289. static static_codebook _44c8_s_p6_0 = {
  20290. 2, 169,
  20291. _vq_lengthlist__44c8_s_p6_0,
  20292. 1, -526516224, 1616117760, 4, 0,
  20293. _vq_quantlist__44c8_s_p6_0,
  20294. NULL,
  20295. &_vq_auxt__44c8_s_p6_0,
  20296. NULL,
  20297. 0
  20298. };
  20299. static long _vq_quantlist__44c8_s_p6_1[] = {
  20300. 2,
  20301. 1,
  20302. 3,
  20303. 0,
  20304. 4,
  20305. };
  20306. static long _vq_lengthlist__44c8_s_p6_1[] = {
  20307. 3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6,
  20308. 5, 5, 5, 5, 6, 6, 6, 5, 5,
  20309. };
  20310. static float _vq_quantthresh__44c8_s_p6_1[] = {
  20311. -1.5, -0.5, 0.5, 1.5,
  20312. };
  20313. static long _vq_quantmap__44c8_s_p6_1[] = {
  20314. 3, 1, 0, 2, 4,
  20315. };
  20316. static encode_aux_threshmatch _vq_auxt__44c8_s_p6_1 = {
  20317. _vq_quantthresh__44c8_s_p6_1,
  20318. _vq_quantmap__44c8_s_p6_1,
  20319. 5,
  20320. 5
  20321. };
  20322. static static_codebook _44c8_s_p6_1 = {
  20323. 2, 25,
  20324. _vq_lengthlist__44c8_s_p6_1,
  20325. 1, -533725184, 1611661312, 3, 0,
  20326. _vq_quantlist__44c8_s_p6_1,
  20327. NULL,
  20328. &_vq_auxt__44c8_s_p6_1,
  20329. NULL,
  20330. 0
  20331. };
  20332. static long _vq_quantlist__44c8_s_p7_0[] = {
  20333. 6,
  20334. 5,
  20335. 7,
  20336. 4,
  20337. 8,
  20338. 3,
  20339. 9,
  20340. 2,
  20341. 10,
  20342. 1,
  20343. 11,
  20344. 0,
  20345. 12,
  20346. };
  20347. static long _vq_lengthlist__44c8_s_p7_0[] = {
  20348. 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
  20349. 7, 7, 9, 9,10,10,11,11,12,12, 6, 5, 5, 7, 7, 9,
  20350. 9,10,10,11,11,12,12,20, 6, 7, 7, 7, 9, 9,10,10,
  20351. 11,11,12,12,20, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
  20352. 12,20,11,11, 8, 8,10,10,11,11,12,12,12,12,20,12,
  20353. 12, 8, 8,10, 9,11,11,12,12,13,13,20,20,20,11,10,
  20354. 10,10,11,11,12,12,13,13,20,20,20,10,11,10,10,11,
  20355. 11,12,12,13,13,20,20,20,14,15,11,11,12,12,13,13,
  20356. 14,13,20,20,20,15,15,11,11,12,12,13,13,14,14,20,
  20357. 20,20,20,19,13,13,12,12,13,13,14,14,19,19,19,19,
  20358. 19,13,13,12,12,13,13,14,14,
  20359. };
  20360. static float _vq_quantthresh__44c8_s_p7_0[] = {
  20361. -60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5,
  20362. 27.5, 38.5, 49.5, 60.5,
  20363. };
  20364. static long _vq_quantmap__44c8_s_p7_0[] = {
  20365. 11, 9, 7, 5, 3, 1, 0, 2,
  20366. 4, 6, 8, 10, 12,
  20367. };
  20368. static encode_aux_threshmatch _vq_auxt__44c8_s_p7_0 = {
  20369. _vq_quantthresh__44c8_s_p7_0,
  20370. _vq_quantmap__44c8_s_p7_0,
  20371. 13,
  20372. 13
  20373. };
  20374. static static_codebook _44c8_s_p7_0 = {
  20375. 2, 169,
  20376. _vq_lengthlist__44c8_s_p7_0,
  20377. 1, -523206656, 1618345984, 4, 0,
  20378. _vq_quantlist__44c8_s_p7_0,
  20379. NULL,
  20380. &_vq_auxt__44c8_s_p7_0,
  20381. NULL,
  20382. 0
  20383. };
  20384. static long _vq_quantlist__44c8_s_p7_1[] = {
  20385. 5,
  20386. 4,
  20387. 6,
  20388. 3,
  20389. 7,
  20390. 2,
  20391. 8,
  20392. 1,
  20393. 9,
  20394. 0,
  20395. 10,
  20396. };
  20397. static long _vq_lengthlist__44c8_s_p7_1[] = {
  20398. 4, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 5, 5, 7, 7,
  20399. 7, 7, 7, 7, 7, 7, 8, 5, 5, 7, 7, 7, 7, 7, 7, 7,
  20400. 7, 8, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7,
  20401. 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
  20402. 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
  20403. 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
  20404. 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 8, 8,
  20405. 8, 8, 8, 7, 7, 7, 7, 7, 7,
  20406. };
  20407. static float _vq_quantthresh__44c8_s_p7_1[] = {
  20408. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  20409. 3.5, 4.5,
  20410. };
  20411. static long _vq_quantmap__44c8_s_p7_1[] = {
  20412. 9, 7, 5, 3, 1, 0, 2, 4,
  20413. 6, 8, 10,
  20414. };
  20415. static encode_aux_threshmatch _vq_auxt__44c8_s_p7_1 = {
  20416. _vq_quantthresh__44c8_s_p7_1,
  20417. _vq_quantmap__44c8_s_p7_1,
  20418. 11,
  20419. 11
  20420. };
  20421. static static_codebook _44c8_s_p7_1 = {
  20422. 2, 121,
  20423. _vq_lengthlist__44c8_s_p7_1,
  20424. 1, -531365888, 1611661312, 4, 0,
  20425. _vq_quantlist__44c8_s_p7_1,
  20426. NULL,
  20427. &_vq_auxt__44c8_s_p7_1,
  20428. NULL,
  20429. 0
  20430. };
  20431. static long _vq_quantlist__44c8_s_p8_0[] = {
  20432. 7,
  20433. 6,
  20434. 8,
  20435. 5,
  20436. 9,
  20437. 4,
  20438. 10,
  20439. 3,
  20440. 11,
  20441. 2,
  20442. 12,
  20443. 1,
  20444. 13,
  20445. 0,
  20446. 14,
  20447. };
  20448. static long _vq_lengthlist__44c8_s_p8_0[] = {
  20449. 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,11, 6,
  20450. 5, 5, 7, 7, 9, 9, 8, 8,10,10,11,11,11,12, 6, 5,
  20451. 5, 7, 7, 9, 9, 9, 8,10,10,11,10,11,12,18, 8, 8,
  20452. 8, 8, 9, 9, 9, 9,10,10,11,11,12,12,18, 8, 8, 8,
  20453. 8, 9, 9, 9, 9,10,10,11,11,12,13,18,12,12, 9, 9,
  20454. 10,10, 9, 9,10,11,11,12,13,12,18,12,12, 9, 9,10,
  20455. 10,10,10,10,11,11,12,13,13,18,18,18, 9, 9, 9, 9,
  20456. 10,10,11,11,12,12,12,12,18,18,18, 9, 9, 9, 9,10,
  20457. 10,11,11,12,12,13,13,18,18,18,13,13,10,10,11,11,
  20458. 12,11,12,12,13,13,18,18,18,14,14,10, 9,11,10,12,
  20459. 12,12,12,13,13,18,18,18,18,18,11,12,11,11,12,12,
  20460. 13,13,14,13,18,18,18,18,18,12,11,11,10,12,11,13,
  20461. 13,13,14,18,18,18,18,18,15,16,12,12,12,13,13,13,
  20462. 14,14,18,17,17,17,17,16,14,12,11,12,11,13,12,15,
  20463. 14,
  20464. };
  20465. static float _vq_quantthresh__44c8_s_p8_0[] = {
  20466. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  20467. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  20468. };
  20469. static long _vq_quantmap__44c8_s_p8_0[] = {
  20470. 13, 11, 9, 7, 5, 3, 1, 0,
  20471. 2, 4, 6, 8, 10, 12, 14,
  20472. };
  20473. static encode_aux_threshmatch _vq_auxt__44c8_s_p8_0 = {
  20474. _vq_quantthresh__44c8_s_p8_0,
  20475. _vq_quantmap__44c8_s_p8_0,
  20476. 15,
  20477. 15
  20478. };
  20479. static static_codebook _44c8_s_p8_0 = {
  20480. 2, 225,
  20481. _vq_lengthlist__44c8_s_p8_0,
  20482. 1, -520986624, 1620377600, 4, 0,
  20483. _vq_quantlist__44c8_s_p8_0,
  20484. NULL,
  20485. &_vq_auxt__44c8_s_p8_0,
  20486. NULL,
  20487. 0
  20488. };
  20489. static long _vq_quantlist__44c8_s_p8_1[] = {
  20490. 10,
  20491. 9,
  20492. 11,
  20493. 8,
  20494. 12,
  20495. 7,
  20496. 13,
  20497. 6,
  20498. 14,
  20499. 5,
  20500. 15,
  20501. 4,
  20502. 16,
  20503. 3,
  20504. 17,
  20505. 2,
  20506. 18,
  20507. 1,
  20508. 19,
  20509. 0,
  20510. 20,
  20511. };
  20512. static long _vq_lengthlist__44c8_s_p8_1[] = {
  20513. 4, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  20514. 8, 9, 9, 9, 9,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8,
  20515. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
  20516. 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
  20517. 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20518. 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9, 9,
  20519. 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 9,
  20520. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
  20521. 10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20522. 9, 9, 9,10,10,11, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20523. 9, 9, 9, 9, 9, 9, 9, 9,11,11,10,11,10, 9, 9, 9,
  20524. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
  20525. 10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,
  20526. 9, 9,10,11,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20527. 9, 9, 9, 9, 9, 9, 9,10,10,11,10,10, 9, 9, 9, 9,
  20528. 9, 9, 9, 9,10, 9, 9, 9, 9, 9, 9, 9,11,10,11,10,
  20529. 10,10,10, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9, 9,
  20530. 9,11,11,11,10,10,11,10, 9, 9, 9, 9, 9, 9,10,10,
  20531. 9, 9, 9, 9, 9, 9,10,11,10,10,10,11,10, 9, 9, 9,
  20532. 9, 9, 9, 9, 9, 9, 9,10, 9,10, 9,11,11,10,10,10,
  20533. 10,10, 9, 9, 9,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20534. 10,10,11,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9,
  20535. 9, 9, 9,10,10,11,11,10,11,10,10,10,10,10,10, 9,
  20536. 10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
  20537. 10,10,10, 9,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
  20538. 10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
  20539. 9, 9,10, 9,10,10,10,10,10,10,10,10,10,10,10, 9,
  20540. 9, 9, 9,10, 9, 9,10, 9, 9,
  20541. };
  20542. static float _vq_quantthresh__44c8_s_p8_1[] = {
  20543. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  20544. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  20545. 6.5, 7.5, 8.5, 9.5,
  20546. };
  20547. static long _vq_quantmap__44c8_s_p8_1[] = {
  20548. 19, 17, 15, 13, 11, 9, 7, 5,
  20549. 3, 1, 0, 2, 4, 6, 8, 10,
  20550. 12, 14, 16, 18, 20,
  20551. };
  20552. static encode_aux_threshmatch _vq_auxt__44c8_s_p8_1 = {
  20553. _vq_quantthresh__44c8_s_p8_1,
  20554. _vq_quantmap__44c8_s_p8_1,
  20555. 21,
  20556. 21
  20557. };
  20558. static static_codebook _44c8_s_p8_1 = {
  20559. 2, 441,
  20560. _vq_lengthlist__44c8_s_p8_1,
  20561. 1, -529268736, 1611661312, 5, 0,
  20562. _vq_quantlist__44c8_s_p8_1,
  20563. NULL,
  20564. &_vq_auxt__44c8_s_p8_1,
  20565. NULL,
  20566. 0
  20567. };
  20568. static long _vq_quantlist__44c8_s_p9_0[] = {
  20569. 8,
  20570. 7,
  20571. 9,
  20572. 6,
  20573. 10,
  20574. 5,
  20575. 11,
  20576. 4,
  20577. 12,
  20578. 3,
  20579. 13,
  20580. 2,
  20581. 14,
  20582. 1,
  20583. 15,
  20584. 0,
  20585. 16,
  20586. };
  20587. static long _vq_lengthlist__44c8_s_p9_0[] = {
  20588. 1, 5, 5,10,10,10,10,10,10,10,10,10,10,10,10,10,
  20589. 10, 7,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  20590. 10,10, 6, 8,10,10,10,10,10,10,10,10,10,10,10,10,
  20591. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  20592. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  20593. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  20594. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  20595. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  20596. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  20597. 10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
  20598. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20599. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20600. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20601. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20602. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20603. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20604. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20605. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  20606. 9,
  20607. };
  20608. static float _vq_quantthresh__44c8_s_p9_0[] = {
  20609. -6982.5, -6051.5, -5120.5, -4189.5, -3258.5, -2327.5, -1396.5, -465.5,
  20610. 465.5, 1396.5, 2327.5, 3258.5, 4189.5, 5120.5, 6051.5, 6982.5,
  20611. };
  20612. static long _vq_quantmap__44c8_s_p9_0[] = {
  20613. 15, 13, 11, 9, 7, 5, 3, 1,
  20614. 0, 2, 4, 6, 8, 10, 12, 14,
  20615. 16,
  20616. };
  20617. static encode_aux_threshmatch _vq_auxt__44c8_s_p9_0 = {
  20618. _vq_quantthresh__44c8_s_p9_0,
  20619. _vq_quantmap__44c8_s_p9_0,
  20620. 17,
  20621. 17
  20622. };
  20623. static static_codebook _44c8_s_p9_0 = {
  20624. 2, 289,
  20625. _vq_lengthlist__44c8_s_p9_0,
  20626. 1, -509798400, 1631393792, 5, 0,
  20627. _vq_quantlist__44c8_s_p9_0,
  20628. NULL,
  20629. &_vq_auxt__44c8_s_p9_0,
  20630. NULL,
  20631. 0
  20632. };
  20633. static long _vq_quantlist__44c8_s_p9_1[] = {
  20634. 9,
  20635. 8,
  20636. 10,
  20637. 7,
  20638. 11,
  20639. 6,
  20640. 12,
  20641. 5,
  20642. 13,
  20643. 4,
  20644. 14,
  20645. 3,
  20646. 15,
  20647. 2,
  20648. 16,
  20649. 1,
  20650. 17,
  20651. 0,
  20652. 18,
  20653. };
  20654. static long _vq_lengthlist__44c8_s_p9_1[] = {
  20655. 1, 4, 4, 7, 7, 7, 7, 7, 7, 9, 9,10,10,11,10,13,
  20656. 12,11,12, 6, 6, 6, 8, 8, 8, 8, 8, 8, 9,10,10,10,
  20657. 12,12,12,12,13,15, 5, 5, 5, 8, 8, 8, 8, 8, 8,10,
  20658. 9,10,11,12,13,12,13,13,12,15, 9, 8, 9, 9, 9, 9,
  20659. 9, 9,10,10,10,11,14,12,13,15,12,14,15, 8, 9, 9,
  20660. 9, 9, 9, 9, 9,10,10,12,11,12,11,12,13,13,13,15,
  20661. 13,13, 9, 9,10, 9,10,10,11,10,11,12,12,12,14,13,
  20662. 14,15,15,13,13, 9, 8,10, 9,10,10,11,10,12,12,13,
  20663. 13,14,13,14,15,15,15,15, 9, 9, 9, 9,10,11,12,12,
  20664. 12,13,13,13,14,15,15,14,15,15,15, 9, 7, 9, 8,12,
  20665. 11,11,13,12,12,13,12,14,13,13,14,15,15,15,13,13,
  20666. 10,10,12,11,13,13,12,12,13,13,14,13,13,15,15,15,
  20667. 15,12,13,11, 9,11,10,12,12,15,13,13,13,14,13,14,
  20668. 13,15,15,15,15,15,12,12,11,11,12,13,15,13,13,14,
  20669. 14,14,15,14,15,15,15,15,15,13,11,12,11,12,11,13,
  20670. 14,13,13,14,14,13,14,15,15,15,15,15,15,15,12,12,
  20671. 12,13,15,13,15,14,15,14,13,15,15,15,15,15,15,14,
  20672. 15,13,13,12,11,14,12,15,13,14,14,14,13,15,15,15,
  20673. 15,15,15,15,14,13,14,13,15,13,15,15,15,14,15,14,
  20674. 15,15,15,15,15,15,15,14,14,14,13,13,13,15,15,15,
  20675. 15,14,15,15,15,15,15,15,15,15,15,15,12,13,13,13,
  20676. 14,15,15,13,15,15,15,15,15,15,15,15,15,15,15,15,
  20677. 15,14,14,15,15,15,14,14,15,
  20678. };
  20679. static float _vq_quantthresh__44c8_s_p9_1[] = {
  20680. -416.5, -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5,
  20681. -24.5, 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5,
  20682. 367.5, 416.5,
  20683. };
  20684. static long _vq_quantmap__44c8_s_p9_1[] = {
  20685. 17, 15, 13, 11, 9, 7, 5, 3,
  20686. 1, 0, 2, 4, 6, 8, 10, 12,
  20687. 14, 16, 18,
  20688. };
  20689. static encode_aux_threshmatch _vq_auxt__44c8_s_p9_1 = {
  20690. _vq_quantthresh__44c8_s_p9_1,
  20691. _vq_quantmap__44c8_s_p9_1,
  20692. 19,
  20693. 19
  20694. };
  20695. static static_codebook _44c8_s_p9_1 = {
  20696. 2, 361,
  20697. _vq_lengthlist__44c8_s_p9_1,
  20698. 1, -518287360, 1622704128, 5, 0,
  20699. _vq_quantlist__44c8_s_p9_1,
  20700. NULL,
  20701. &_vq_auxt__44c8_s_p9_1,
  20702. NULL,
  20703. 0
  20704. };
  20705. static long _vq_quantlist__44c8_s_p9_2[] = {
  20706. 24,
  20707. 23,
  20708. 25,
  20709. 22,
  20710. 26,
  20711. 21,
  20712. 27,
  20713. 20,
  20714. 28,
  20715. 19,
  20716. 29,
  20717. 18,
  20718. 30,
  20719. 17,
  20720. 31,
  20721. 16,
  20722. 32,
  20723. 15,
  20724. 33,
  20725. 14,
  20726. 34,
  20727. 13,
  20728. 35,
  20729. 12,
  20730. 36,
  20731. 11,
  20732. 37,
  20733. 10,
  20734. 38,
  20735. 9,
  20736. 39,
  20737. 8,
  20738. 40,
  20739. 7,
  20740. 41,
  20741. 6,
  20742. 42,
  20743. 5,
  20744. 43,
  20745. 4,
  20746. 44,
  20747. 3,
  20748. 45,
  20749. 2,
  20750. 46,
  20751. 1,
  20752. 47,
  20753. 0,
  20754. 48,
  20755. };
  20756. static long _vq_lengthlist__44c8_s_p9_2[] = {
  20757. 3, 4, 3, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
  20758. 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 7, 6, 7,
  20759. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  20760. 7,
  20761. };
  20762. static float _vq_quantthresh__44c8_s_p9_2[] = {
  20763. -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5,
  20764. -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5,
  20765. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  20766. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  20767. 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5,
  20768. 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5,
  20769. };
  20770. static long _vq_quantmap__44c8_s_p9_2[] = {
  20771. 47, 45, 43, 41, 39, 37, 35, 33,
  20772. 31, 29, 27, 25, 23, 21, 19, 17,
  20773. 15, 13, 11, 9, 7, 5, 3, 1,
  20774. 0, 2, 4, 6, 8, 10, 12, 14,
  20775. 16, 18, 20, 22, 24, 26, 28, 30,
  20776. 32, 34, 36, 38, 40, 42, 44, 46,
  20777. 48,
  20778. };
  20779. static encode_aux_threshmatch _vq_auxt__44c8_s_p9_2 = {
  20780. _vq_quantthresh__44c8_s_p9_2,
  20781. _vq_quantmap__44c8_s_p9_2,
  20782. 49,
  20783. 49
  20784. };
  20785. static static_codebook _44c8_s_p9_2 = {
  20786. 1, 49,
  20787. _vq_lengthlist__44c8_s_p9_2,
  20788. 1, -526909440, 1611661312, 6, 0,
  20789. _vq_quantlist__44c8_s_p9_2,
  20790. NULL,
  20791. &_vq_auxt__44c8_s_p9_2,
  20792. NULL,
  20793. 0
  20794. };
  20795. static long _huff_lengthlist__44c8_s_short[] = {
  20796. 4,11,13,14,16,15,16,16,17,16, 5, 6, 8, 9,10, 9,
  20797. 11,17,16,17, 6, 6, 6, 6, 7, 8, 9,14,16,17, 8, 6,
  20798. 5, 4, 6, 7, 9,12,14,17, 9, 7, 6, 5, 5, 5, 8,11,
  20799. 14,17,10, 9, 7, 6, 5, 3, 5, 8,13,17,12,11, 9, 8,
  20800. 7, 4, 4, 6,14,17,13,13,12, 8, 7, 5, 4, 5,12,17,
  20801. 17,14,15,10, 8, 7, 7, 7,11,17,17,16,17,14,12,10,
  20802. 11,11,15,17,
  20803. };
  20804. static static_codebook _huff_book__44c8_s_short = {
  20805. 2, 100,
  20806. _huff_lengthlist__44c8_s_short,
  20807. 0, 0, 0, 0, 0,
  20808. NULL,
  20809. NULL,
  20810. NULL,
  20811. NULL,
  20812. 0
  20813. };
  20814. static long _huff_lengthlist__44c9_s_long[] = {
  20815. 3, 8,13,14,15,15,13,13,14,14, 6, 5, 8,10,12,12,
  20816. 13,12,13,14,10, 6, 5, 6, 8, 9,11,11,13,14,13, 8,
  20817. 5, 4, 5, 6, 9,10,13,14,14,11, 7, 5, 4, 5, 8, 9,
  20818. 12,14,12,11, 8, 6, 5, 3, 5, 7,10,13,12,10,10, 8,
  20819. 7, 5, 4, 6, 9,12,13,12,11,10, 9, 6, 5, 5, 7,10,
  20820. 13,12,12,11,11, 9, 8, 7, 8,10,12,12,13,13,14,12,
  20821. 10, 9, 9,10,
  20822. };
  20823. static static_codebook _huff_book__44c9_s_long = {
  20824. 2, 100,
  20825. _huff_lengthlist__44c9_s_long,
  20826. 0, 0, 0, 0, 0,
  20827. NULL,
  20828. NULL,
  20829. NULL,
  20830. NULL,
  20831. 0
  20832. };
  20833. static long _vq_quantlist__44c9_s_p1_0[] = {
  20834. 1,
  20835. 0,
  20836. 2,
  20837. };
  20838. static long _vq_lengthlist__44c9_s_p1_0[] = {
  20839. 1, 5, 5, 0, 5, 5, 0, 5, 5, 6, 8, 8, 0, 9, 8, 0,
  20840. 8, 8, 6, 8, 8, 0, 8, 9, 0, 8, 8, 0, 0, 0, 0, 0,
  20841. 0, 0, 0, 0, 5, 8, 8, 0, 8, 7, 0, 8, 8, 5, 8, 8,
  20842. 0, 7, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
  20843. 9, 8, 0, 8, 8, 0, 7, 7, 5, 8, 9, 0, 8, 8, 0, 7,
  20844. 7,
  20845. };
  20846. static float _vq_quantthresh__44c9_s_p1_0[] = {
  20847. -0.5, 0.5,
  20848. };
  20849. static long _vq_quantmap__44c9_s_p1_0[] = {
  20850. 1, 0, 2,
  20851. };
  20852. static encode_aux_threshmatch _vq_auxt__44c9_s_p1_0 = {
  20853. _vq_quantthresh__44c9_s_p1_0,
  20854. _vq_quantmap__44c9_s_p1_0,
  20855. 3,
  20856. 3
  20857. };
  20858. static static_codebook _44c9_s_p1_0 = {
  20859. 4, 81,
  20860. _vq_lengthlist__44c9_s_p1_0,
  20861. 1, -535822336, 1611661312, 2, 0,
  20862. _vq_quantlist__44c9_s_p1_0,
  20863. NULL,
  20864. &_vq_auxt__44c9_s_p1_0,
  20865. NULL,
  20866. 0
  20867. };
  20868. static long _vq_quantlist__44c9_s_p2_0[] = {
  20869. 2,
  20870. 1,
  20871. 3,
  20872. 0,
  20873. 4,
  20874. };
  20875. static long _vq_lengthlist__44c9_s_p2_0[] = {
  20876. 3, 6, 6, 8, 8, 0, 6, 6, 8, 8, 0, 5, 5, 8, 8, 0,
  20877. 7, 7, 9, 9, 0, 0, 0, 9, 9, 6, 7, 7, 9, 8, 0, 8,
  20878. 7, 9, 9, 0, 7, 7, 9, 9, 0, 9, 9,11,10, 0, 0, 0,
  20879. 10,10, 6, 7, 7, 8, 9, 0, 7, 8, 9, 9, 0, 7, 7, 9,
  20880. 9, 0, 9, 9,10,11, 0, 0, 0,10,10, 8, 9, 9,10,10,
  20881. 0,10,10,11,11, 0,10,10,11,11, 0,12,12,13,12, 0,
  20882. 0, 0,13,13, 8, 8, 9,10,10, 0,10,10,11,12, 0,10,
  20883. 10,11,11, 0,12,12,13,13, 0, 0, 0,13,13, 0, 0, 0,
  20884. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20885. 0, 0, 0, 0, 0, 0, 6, 8, 7,10,10, 0, 7, 7,10, 9,
  20886. 0, 7, 7,10,10, 0, 9, 8,10,10, 0, 0, 0,10,10, 6,
  20887. 7, 7,10,10, 0, 7, 7, 9,10, 0, 7, 7,10,10, 0, 8,
  20888. 9,10,10, 0, 0, 0,10,10, 8, 9, 9,11,11, 0,10, 9,
  20889. 11,11, 0,10,10,11,11, 0,11,11,12,12, 0, 0, 0,12,
  20890. 12, 8, 9, 9,11,11, 0, 9,10,11,11, 0,10,10,11,11,
  20891. 0,11,11,12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0,
  20892. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20893. 0, 0, 0, 5, 8, 7,10,10, 0, 7, 7,10,10, 0, 7, 7,
  20894. 10, 9, 0, 8, 9,10,10, 0, 0, 0,10, 9, 5, 7, 8,10,
  20895. 10, 0, 7, 7,10,10, 0, 7, 7, 9,10, 0, 9, 8,10,10,
  20896. 0, 0, 0,10,10, 8, 9, 9,12,11, 0,10,10,11,11, 0,
  20897. 10, 9,11,11, 0,11,11,12,12, 0, 0, 0,12,12, 8, 9,
  20898. 9,11,11, 0,10,10,11,11, 0, 9,10,11,11, 0,11,11,
  20899. 12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20900. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20901. 7, 9, 9,12,12, 0, 9, 9,11,11, 0, 8, 9,11,11, 0,
  20902. 10, 9,12,11, 0, 0, 0,11,11, 7, 9, 9,12,12, 0, 8,
  20903. 9,11,11, 0, 9, 8,11,11, 0, 9,10,11,11, 0, 0, 0,
  20904. 11,11, 9,11,11,13,13, 0,10,10,12,12, 0,10,10,12,
  20905. 12, 0,12,11,12,12, 0, 0, 0,13,13, 9,10,11,13,13,
  20906. 0,10,10,12,12, 0,10,10,12,12, 0,11,11,12,12, 0,
  20907. 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20908. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20909. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20910. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20911. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
  20912. 11,10,13,13, 0,10,10,12,12, 0,10, 9,12,12, 0,11,
  20913. 11,12,13, 0, 0, 0,12,11, 9,10,10,12,13, 0,10,10,
  20914. 12,12, 0,10,10,12,12, 0,11,11,13,12, 0, 0, 0,12,
  20915. 12,
  20916. };
  20917. static float _vq_quantthresh__44c9_s_p2_0[] = {
  20918. -1.5, -0.5, 0.5, 1.5,
  20919. };
  20920. static long _vq_quantmap__44c9_s_p2_0[] = {
  20921. 3, 1, 0, 2, 4,
  20922. };
  20923. static encode_aux_threshmatch _vq_auxt__44c9_s_p2_0 = {
  20924. _vq_quantthresh__44c9_s_p2_0,
  20925. _vq_quantmap__44c9_s_p2_0,
  20926. 5,
  20927. 5
  20928. };
  20929. static static_codebook _44c9_s_p2_0 = {
  20930. 4, 625,
  20931. _vq_lengthlist__44c9_s_p2_0,
  20932. 1, -533725184, 1611661312, 3, 0,
  20933. _vq_quantlist__44c9_s_p2_0,
  20934. NULL,
  20935. &_vq_auxt__44c9_s_p2_0,
  20936. NULL,
  20937. 0
  20938. };
  20939. static long _vq_quantlist__44c9_s_p3_0[] = {
  20940. 4,
  20941. 3,
  20942. 5,
  20943. 2,
  20944. 6,
  20945. 1,
  20946. 7,
  20947. 0,
  20948. 8,
  20949. };
  20950. static long _vq_lengthlist__44c9_s_p3_0[] = {
  20951. 3, 4, 4, 5, 5, 6, 6, 8, 8, 0, 4, 4, 5, 5, 7, 6,
  20952. 8, 8, 0, 4, 4, 5, 5, 7, 7, 8, 8, 0, 5, 5, 6, 6,
  20953. 7, 7, 9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0,
  20954. 7, 7, 8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0,
  20955. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20956. 0,
  20957. };
  20958. static float _vq_quantthresh__44c9_s_p3_0[] = {
  20959. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  20960. };
  20961. static long _vq_quantmap__44c9_s_p3_0[] = {
  20962. 7, 5, 3, 1, 0, 2, 4, 6,
  20963. 8,
  20964. };
  20965. static encode_aux_threshmatch _vq_auxt__44c9_s_p3_0 = {
  20966. _vq_quantthresh__44c9_s_p3_0,
  20967. _vq_quantmap__44c9_s_p3_0,
  20968. 9,
  20969. 9
  20970. };
  20971. static static_codebook _44c9_s_p3_0 = {
  20972. 2, 81,
  20973. _vq_lengthlist__44c9_s_p3_0,
  20974. 1, -531628032, 1611661312, 4, 0,
  20975. _vq_quantlist__44c9_s_p3_0,
  20976. NULL,
  20977. &_vq_auxt__44c9_s_p3_0,
  20978. NULL,
  20979. 0
  20980. };
  20981. static long _vq_quantlist__44c9_s_p4_0[] = {
  20982. 8,
  20983. 7,
  20984. 9,
  20985. 6,
  20986. 10,
  20987. 5,
  20988. 11,
  20989. 4,
  20990. 12,
  20991. 3,
  20992. 13,
  20993. 2,
  20994. 14,
  20995. 1,
  20996. 15,
  20997. 0,
  20998. 16,
  20999. };
  21000. static long _vq_lengthlist__44c9_s_p4_0[] = {
  21001. 4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,
  21002. 10, 0, 5, 5, 5, 5, 6, 6, 8, 7, 8, 8, 9, 9,10,10,
  21003. 11,11, 0, 5, 5, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,
  21004. 10,11,11, 0, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,
  21005. 11,11,12,12, 0, 0, 0, 6, 6, 7, 7, 8, 8, 9, 9,10,
  21006. 10,11,11,12,12, 0, 0, 0, 7, 7, 7, 7, 9, 9, 9, 9,
  21007. 11,11,11,11,12,12, 0, 0, 0, 7, 7, 7, 8, 9, 9, 9,
  21008. 9,11,10,11,11,12,12, 0, 0, 0, 7, 7, 7, 7, 9, 9,
  21009. 10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 7, 7, 9,
  21010. 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 0, 0,
  21011. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21012. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21013. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21014. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21015. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21016. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21017. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21018. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21019. 0,
  21020. };
  21021. static float _vq_quantthresh__44c9_s_p4_0[] = {
  21022. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  21023. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  21024. };
  21025. static long _vq_quantmap__44c9_s_p4_0[] = {
  21026. 15, 13, 11, 9, 7, 5, 3, 1,
  21027. 0, 2, 4, 6, 8, 10, 12, 14,
  21028. 16,
  21029. };
  21030. static encode_aux_threshmatch _vq_auxt__44c9_s_p4_0 = {
  21031. _vq_quantthresh__44c9_s_p4_0,
  21032. _vq_quantmap__44c9_s_p4_0,
  21033. 17,
  21034. 17
  21035. };
  21036. static static_codebook _44c9_s_p4_0 = {
  21037. 2, 289,
  21038. _vq_lengthlist__44c9_s_p4_0,
  21039. 1, -529530880, 1611661312, 5, 0,
  21040. _vq_quantlist__44c9_s_p4_0,
  21041. NULL,
  21042. &_vq_auxt__44c9_s_p4_0,
  21043. NULL,
  21044. 0
  21045. };
  21046. static long _vq_quantlist__44c9_s_p5_0[] = {
  21047. 1,
  21048. 0,
  21049. 2,
  21050. };
  21051. static long _vq_lengthlist__44c9_s_p5_0[] = {
  21052. 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6,10,10,10,10,
  21053. 10,10, 4, 6, 6,10,10,10,10,10,10, 5,10,10, 9,12,
  21054. 12,10,12,12, 7,10,10,12,12,12,12,12,13, 7,10,10,
  21055. 12,12,12,12,13,13, 6,10,10,10,12,12,11,12,12, 8,
  21056. 10,10,12,12,12,12,12,12, 7,10,10,12,12,13,12,12,
  21057. 12,
  21058. };
  21059. static float _vq_quantthresh__44c9_s_p5_0[] = {
  21060. -5.5, 5.5,
  21061. };
  21062. static long _vq_quantmap__44c9_s_p5_0[] = {
  21063. 1, 0, 2,
  21064. };
  21065. static encode_aux_threshmatch _vq_auxt__44c9_s_p5_0 = {
  21066. _vq_quantthresh__44c9_s_p5_0,
  21067. _vq_quantmap__44c9_s_p5_0,
  21068. 3,
  21069. 3
  21070. };
  21071. static static_codebook _44c9_s_p5_0 = {
  21072. 4, 81,
  21073. _vq_lengthlist__44c9_s_p5_0,
  21074. 1, -529137664, 1618345984, 2, 0,
  21075. _vq_quantlist__44c9_s_p5_0,
  21076. NULL,
  21077. &_vq_auxt__44c9_s_p5_0,
  21078. NULL,
  21079. 0
  21080. };
  21081. static long _vq_quantlist__44c9_s_p5_1[] = {
  21082. 5,
  21083. 4,
  21084. 6,
  21085. 3,
  21086. 7,
  21087. 2,
  21088. 8,
  21089. 1,
  21090. 9,
  21091. 0,
  21092. 10,
  21093. };
  21094. static long _vq_lengthlist__44c9_s_p5_1[] = {
  21095. 4, 5, 5, 6, 6, 6, 7, 7, 7, 7, 7,10, 5, 5, 6, 6,
  21096. 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6, 7, 7, 7, 7, 8,
  21097. 8,11, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11, 6,
  21098. 6, 7, 7, 8, 8, 8, 8,11,11,11, 6, 6, 7, 7, 8, 8,
  21099. 8, 8,11,11,11, 6, 6, 7, 7, 7, 7, 8, 8,11,11,11,
  21100. 7, 7, 7, 7, 7, 7, 8, 8,11,11,11,11,11, 7, 7, 7,
  21101. 7, 8, 8,11,11,11,11,11, 7, 7, 7, 7, 7, 7,11,11,
  21102. 11,11,11, 7, 7, 7, 7, 7, 7,
  21103. };
  21104. static float _vq_quantthresh__44c9_s_p5_1[] = {
  21105. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  21106. 3.5, 4.5,
  21107. };
  21108. static long _vq_quantmap__44c9_s_p5_1[] = {
  21109. 9, 7, 5, 3, 1, 0, 2, 4,
  21110. 6, 8, 10,
  21111. };
  21112. static encode_aux_threshmatch _vq_auxt__44c9_s_p5_1 = {
  21113. _vq_quantthresh__44c9_s_p5_1,
  21114. _vq_quantmap__44c9_s_p5_1,
  21115. 11,
  21116. 11
  21117. };
  21118. static static_codebook _44c9_s_p5_1 = {
  21119. 2, 121,
  21120. _vq_lengthlist__44c9_s_p5_1,
  21121. 1, -531365888, 1611661312, 4, 0,
  21122. _vq_quantlist__44c9_s_p5_1,
  21123. NULL,
  21124. &_vq_auxt__44c9_s_p5_1,
  21125. NULL,
  21126. 0
  21127. };
  21128. static long _vq_quantlist__44c9_s_p6_0[] = {
  21129. 6,
  21130. 5,
  21131. 7,
  21132. 4,
  21133. 8,
  21134. 3,
  21135. 9,
  21136. 2,
  21137. 10,
  21138. 1,
  21139. 11,
  21140. 0,
  21141. 12,
  21142. };
  21143. static long _vq_lengthlist__44c9_s_p6_0[] = {
  21144. 2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 5, 4, 4,
  21145. 6, 6, 8, 8, 9, 9,10,10,11,11, 6, 4, 4, 6, 6, 8,
  21146. 8, 9, 9,10,10,12,12, 0, 6, 6, 6, 6, 8, 8,10,10,
  21147. 11,11,12,12, 0, 6, 6, 6, 6, 8, 8,10,10,11,11,12,
  21148. 12, 0,10,10, 8, 8, 9, 9,11,11,12,12,13,13, 0,11,
  21149. 11, 8, 8, 9,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
  21150. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21151. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21152. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21153. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21154. 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21155. };
  21156. static float _vq_quantthresh__44c9_s_p6_0[] = {
  21157. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  21158. 12.5, 17.5, 22.5, 27.5,
  21159. };
  21160. static long _vq_quantmap__44c9_s_p6_0[] = {
  21161. 11, 9, 7, 5, 3, 1, 0, 2,
  21162. 4, 6, 8, 10, 12,
  21163. };
  21164. static encode_aux_threshmatch _vq_auxt__44c9_s_p6_0 = {
  21165. _vq_quantthresh__44c9_s_p6_0,
  21166. _vq_quantmap__44c9_s_p6_0,
  21167. 13,
  21168. 13
  21169. };
  21170. static static_codebook _44c9_s_p6_0 = {
  21171. 2, 169,
  21172. _vq_lengthlist__44c9_s_p6_0,
  21173. 1, -526516224, 1616117760, 4, 0,
  21174. _vq_quantlist__44c9_s_p6_0,
  21175. NULL,
  21176. &_vq_auxt__44c9_s_p6_0,
  21177. NULL,
  21178. 0
  21179. };
  21180. static long _vq_quantlist__44c9_s_p6_1[] = {
  21181. 2,
  21182. 1,
  21183. 3,
  21184. 0,
  21185. 4,
  21186. };
  21187. static long _vq_lengthlist__44c9_s_p6_1[] = {
  21188. 4, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5,
  21189. 5, 5, 5, 5, 5, 5, 5, 5, 5,
  21190. };
  21191. static float _vq_quantthresh__44c9_s_p6_1[] = {
  21192. -1.5, -0.5, 0.5, 1.5,
  21193. };
  21194. static long _vq_quantmap__44c9_s_p6_1[] = {
  21195. 3, 1, 0, 2, 4,
  21196. };
  21197. static encode_aux_threshmatch _vq_auxt__44c9_s_p6_1 = {
  21198. _vq_quantthresh__44c9_s_p6_1,
  21199. _vq_quantmap__44c9_s_p6_1,
  21200. 5,
  21201. 5
  21202. };
  21203. static static_codebook _44c9_s_p6_1 = {
  21204. 2, 25,
  21205. _vq_lengthlist__44c9_s_p6_1,
  21206. 1, -533725184, 1611661312, 3, 0,
  21207. _vq_quantlist__44c9_s_p6_1,
  21208. NULL,
  21209. &_vq_auxt__44c9_s_p6_1,
  21210. NULL,
  21211. 0
  21212. };
  21213. static long _vq_quantlist__44c9_s_p7_0[] = {
  21214. 6,
  21215. 5,
  21216. 7,
  21217. 4,
  21218. 8,
  21219. 3,
  21220. 9,
  21221. 2,
  21222. 10,
  21223. 1,
  21224. 11,
  21225. 0,
  21226. 12,
  21227. };
  21228. static long _vq_lengthlist__44c9_s_p7_0[] = {
  21229. 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 6, 5, 5,
  21230. 7, 7, 9, 8,10,10,11,11,12,12, 6, 5, 5, 7, 7, 9,
  21231. 9,10,10,11,11,12,12,20, 6, 6, 7, 7, 9, 9,10,10,
  21232. 11,11,12,12,20, 7, 7, 7, 7, 9, 9,10,10,11,11,13,
  21233. 12,20,10,10, 8, 8, 9, 9,11,11,12,12,13,13,20,11,
  21234. 11, 8, 8, 9, 9,11,11,12,12,13,13,20,20,20,10,10,
  21235. 10,10,11,11,12,12,13,13,20,20,20,10,10,10,10,11,
  21236. 11,12,12,13,13,20,20,20,14,14,11,11,12,12,13,13,
  21237. 14,13,20,20,20,14,15,11,11,11,11,13,13,14,13,20,
  21238. 20,20,20,19,12,12,12,12,13,13,14,14,19,19,19,19,
  21239. 19,13,13,12,12,13,13,14,14,
  21240. };
  21241. static float _vq_quantthresh__44c9_s_p7_0[] = {
  21242. -60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5,
  21243. 27.5, 38.5, 49.5, 60.5,
  21244. };
  21245. static long _vq_quantmap__44c9_s_p7_0[] = {
  21246. 11, 9, 7, 5, 3, 1, 0, 2,
  21247. 4, 6, 8, 10, 12,
  21248. };
  21249. static encode_aux_threshmatch _vq_auxt__44c9_s_p7_0 = {
  21250. _vq_quantthresh__44c9_s_p7_0,
  21251. _vq_quantmap__44c9_s_p7_0,
  21252. 13,
  21253. 13
  21254. };
  21255. static static_codebook _44c9_s_p7_0 = {
  21256. 2, 169,
  21257. _vq_lengthlist__44c9_s_p7_0,
  21258. 1, -523206656, 1618345984, 4, 0,
  21259. _vq_quantlist__44c9_s_p7_0,
  21260. NULL,
  21261. &_vq_auxt__44c9_s_p7_0,
  21262. NULL,
  21263. 0
  21264. };
  21265. static long _vq_quantlist__44c9_s_p7_1[] = {
  21266. 5,
  21267. 4,
  21268. 6,
  21269. 3,
  21270. 7,
  21271. 2,
  21272. 8,
  21273. 1,
  21274. 9,
  21275. 0,
  21276. 10,
  21277. };
  21278. static long _vq_lengthlist__44c9_s_p7_1[] = {
  21279. 5, 6, 6, 6, 6, 7, 6, 7, 7, 7, 7, 8, 6, 6, 6, 6,
  21280. 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7,
  21281. 7, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 6,
  21282. 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
  21283. 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
  21284. 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
  21285. 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
  21286. 8, 8, 8, 7, 7, 7, 7, 7, 7,
  21287. };
  21288. static float _vq_quantthresh__44c9_s_p7_1[] = {
  21289. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  21290. 3.5, 4.5,
  21291. };
  21292. static long _vq_quantmap__44c9_s_p7_1[] = {
  21293. 9, 7, 5, 3, 1, 0, 2, 4,
  21294. 6, 8, 10,
  21295. };
  21296. static encode_aux_threshmatch _vq_auxt__44c9_s_p7_1 = {
  21297. _vq_quantthresh__44c9_s_p7_1,
  21298. _vq_quantmap__44c9_s_p7_1,
  21299. 11,
  21300. 11
  21301. };
  21302. static static_codebook _44c9_s_p7_1 = {
  21303. 2, 121,
  21304. _vq_lengthlist__44c9_s_p7_1,
  21305. 1, -531365888, 1611661312, 4, 0,
  21306. _vq_quantlist__44c9_s_p7_1,
  21307. NULL,
  21308. &_vq_auxt__44c9_s_p7_1,
  21309. NULL,
  21310. 0
  21311. };
  21312. static long _vq_quantlist__44c9_s_p8_0[] = {
  21313. 7,
  21314. 6,
  21315. 8,
  21316. 5,
  21317. 9,
  21318. 4,
  21319. 10,
  21320. 3,
  21321. 11,
  21322. 2,
  21323. 12,
  21324. 1,
  21325. 13,
  21326. 0,
  21327. 14,
  21328. };
  21329. static long _vq_lengthlist__44c9_s_p8_0[] = {
  21330. 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,11, 6,
  21331. 5, 5, 7, 7, 9, 9, 8, 9,10,10,11,11,12,12, 6, 5,
  21332. 5, 7, 7, 9, 9, 9, 9,10,10,11,11,12,12,19, 7, 8,
  21333. 8, 8, 9, 9, 9, 9,10,10,11,11,12,13,19, 8, 8, 8,
  21334. 8, 9, 9, 9, 9,10,10,11,12,12,12,19,12,12, 9, 9,
  21335. 9,10, 9,10,10,10,12,12,12,12,19,12,12, 9, 9,10,
  21336. 9,10,10,11,11,12,11,13,13,19,19,19, 9, 9, 9, 9,
  21337. 10,10,11,11,12,12,12,12,19,19,19, 9, 9, 9, 9,10,
  21338. 10,11,11,12,12,13,13,19,19,19,13,13,10,10,10,10,
  21339. 12,12,12,12,13,13,19,19,19,13,13,10,10,10,10,12,
  21340. 12,12,12,13,13,19,19,19,19,19,11,12,11,11,12,12,
  21341. 13,12,13,13,19,19,19,18,18,12,11,11,10,12,11,13,
  21342. 13,13,14,18,18,18,18,18,15,16,12,12,13,12,13,13,
  21343. 14,14,18,18,18,18,18,16,15,12,11,12,11,13,13,14,
  21344. 14,
  21345. };
  21346. static float _vq_quantthresh__44c9_s_p8_0[] = {
  21347. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  21348. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  21349. };
  21350. static long _vq_quantmap__44c9_s_p8_0[] = {
  21351. 13, 11, 9, 7, 5, 3, 1, 0,
  21352. 2, 4, 6, 8, 10, 12, 14,
  21353. };
  21354. static encode_aux_threshmatch _vq_auxt__44c9_s_p8_0 = {
  21355. _vq_quantthresh__44c9_s_p8_0,
  21356. _vq_quantmap__44c9_s_p8_0,
  21357. 15,
  21358. 15
  21359. };
  21360. static static_codebook _44c9_s_p8_0 = {
  21361. 2, 225,
  21362. _vq_lengthlist__44c9_s_p8_0,
  21363. 1, -520986624, 1620377600, 4, 0,
  21364. _vq_quantlist__44c9_s_p8_0,
  21365. NULL,
  21366. &_vq_auxt__44c9_s_p8_0,
  21367. NULL,
  21368. 0
  21369. };
  21370. static long _vq_quantlist__44c9_s_p8_1[] = {
  21371. 10,
  21372. 9,
  21373. 11,
  21374. 8,
  21375. 12,
  21376. 7,
  21377. 13,
  21378. 6,
  21379. 14,
  21380. 5,
  21381. 15,
  21382. 4,
  21383. 16,
  21384. 3,
  21385. 17,
  21386. 2,
  21387. 18,
  21388. 1,
  21389. 19,
  21390. 0,
  21391. 20,
  21392. };
  21393. static long _vq_lengthlist__44c9_s_p8_1[] = {
  21394. 4, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9,
  21395. 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
  21396. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
  21397. 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
  21398. 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  21399. 9, 9, 9, 9,10,10,10, 7, 8, 8, 8, 9, 9, 9, 9, 9,
  21400. 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8,
  21401. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
  21402. 10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  21403. 9, 9, 9,10,10,10, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
  21404. 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9,
  21405. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
  21406. 10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  21407. 9, 9,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  21408. 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9, 9,
  21409. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,
  21410. 10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  21411. 9,10,10,10,10,10,10,10, 9, 9, 9, 9,10,10,10,10,
  21412. 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10, 9, 9, 9,
  21413. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,
  21414. 10,10, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9, 9, 9, 9,
  21415. 10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9,
  21416. 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
  21417. 10,10, 9, 9, 9,10, 9, 9, 9, 9,10,10,10,10,10,10,
  21418. 10,10,10, 9,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
  21419. 10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
  21420. 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10, 9,
  21421. 9, 9, 9, 9, 9, 9, 9, 9, 9,
  21422. };
  21423. static float _vq_quantthresh__44c9_s_p8_1[] = {
  21424. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  21425. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  21426. 6.5, 7.5, 8.5, 9.5,
  21427. };
  21428. static long _vq_quantmap__44c9_s_p8_1[] = {
  21429. 19, 17, 15, 13, 11, 9, 7, 5,
  21430. 3, 1, 0, 2, 4, 6, 8, 10,
  21431. 12, 14, 16, 18, 20,
  21432. };
  21433. static encode_aux_threshmatch _vq_auxt__44c9_s_p8_1 = {
  21434. _vq_quantthresh__44c9_s_p8_1,
  21435. _vq_quantmap__44c9_s_p8_1,
  21436. 21,
  21437. 21
  21438. };
  21439. static static_codebook _44c9_s_p8_1 = {
  21440. 2, 441,
  21441. _vq_lengthlist__44c9_s_p8_1,
  21442. 1, -529268736, 1611661312, 5, 0,
  21443. _vq_quantlist__44c9_s_p8_1,
  21444. NULL,
  21445. &_vq_auxt__44c9_s_p8_1,
  21446. NULL,
  21447. 0
  21448. };
  21449. static long _vq_quantlist__44c9_s_p9_0[] = {
  21450. 9,
  21451. 8,
  21452. 10,
  21453. 7,
  21454. 11,
  21455. 6,
  21456. 12,
  21457. 5,
  21458. 13,
  21459. 4,
  21460. 14,
  21461. 3,
  21462. 15,
  21463. 2,
  21464. 16,
  21465. 1,
  21466. 17,
  21467. 0,
  21468. 18,
  21469. };
  21470. static long _vq_lengthlist__44c9_s_p9_0[] = {
  21471. 1, 4, 4,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21472. 10,10,10, 7, 9,10,10,10,10,10,10,10,10,10,10,10,
  21473. 10,10,10,10,10,10, 7, 9,10,10,10,10,10,10,10,10,
  21474. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21475. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21476. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21477. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21478. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21479. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21480. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21481. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21482. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21483. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21484. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21485. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21486. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21487. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21488. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21489. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21490. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21491. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  21492. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
  21493. 9, 9, 9, 9, 9, 9, 9, 9, 9,
  21494. };
  21495. static float _vq_quantthresh__44c9_s_p9_0[] = {
  21496. -7913.5, -6982.5, -6051.5, -5120.5, -4189.5, -3258.5, -2327.5, -1396.5,
  21497. -465.5, 465.5, 1396.5, 2327.5, 3258.5, 4189.5, 5120.5, 6051.5,
  21498. 6982.5, 7913.5,
  21499. };
  21500. static long _vq_quantmap__44c9_s_p9_0[] = {
  21501. 17, 15, 13, 11, 9, 7, 5, 3,
  21502. 1, 0, 2, 4, 6, 8, 10, 12,
  21503. 14, 16, 18,
  21504. };
  21505. static encode_aux_threshmatch _vq_auxt__44c9_s_p9_0 = {
  21506. _vq_quantthresh__44c9_s_p9_0,
  21507. _vq_quantmap__44c9_s_p9_0,
  21508. 19,
  21509. 19
  21510. };
  21511. static static_codebook _44c9_s_p9_0 = {
  21512. 2, 361,
  21513. _vq_lengthlist__44c9_s_p9_0,
  21514. 1, -508535424, 1631393792, 5, 0,
  21515. _vq_quantlist__44c9_s_p9_0,
  21516. NULL,
  21517. &_vq_auxt__44c9_s_p9_0,
  21518. NULL,
  21519. 0
  21520. };
  21521. static long _vq_quantlist__44c9_s_p9_1[] = {
  21522. 9,
  21523. 8,
  21524. 10,
  21525. 7,
  21526. 11,
  21527. 6,
  21528. 12,
  21529. 5,
  21530. 13,
  21531. 4,
  21532. 14,
  21533. 3,
  21534. 15,
  21535. 2,
  21536. 16,
  21537. 1,
  21538. 17,
  21539. 0,
  21540. 18,
  21541. };
  21542. static long _vq_lengthlist__44c9_s_p9_1[] = {
  21543. 1, 4, 4, 7, 7, 8, 8, 8, 8, 9,10,10,10,12,11,12,
  21544. 13,13,12, 6, 5, 5, 8, 8, 8, 9, 8, 9,10,10,11,11,
  21545. 12,12,14,13,13,12, 5, 5, 5, 8, 8, 9, 8, 8, 9,10,
  21546. 10,11,11,12,12,14,12,13,13,16, 8, 8, 9, 9, 9, 9,
  21547. 9, 9,10,10,11,12,13,13,13,13,14,14,16, 8, 8, 9,
  21548. 9, 9, 9, 9, 9,11,11,12,11,13,13,14,13,13,13,16,
  21549. 14,13, 9, 9, 9, 9,10,10,11,12,12,13,13,13,14,13,
  21550. 15,14,16,13,13, 9, 8, 9, 9,10,10,12,11,13,13,14,
  21551. 14,14,14,15,14,16,16,16, 9, 9, 9, 9,10,10,12,12,
  21552. 12,13,13,13,15,13,15,15,16,16,16, 9, 7, 9, 8,10,
  21553. 11,11,12,12,13,13,16,15,14,14,14,16,16,16,13,13,
  21554. 10,10,11,11,13,15,13,14,13,14,14,13,14,14,16,16,
  21555. 16,13,12,10, 9,11,11,12,12,14,14,13,14,14,14,14,
  21556. 14,16,16,16,16,16,12,13,11,11,12,13,13,13,14,15,
  21557. 14,14,16,15,16,16,16,16,16,12,11,12,12,15,13,13,
  21558. 13,14,13,15,14,15,14,16,16,16,16,16,14,15,12,13,
  21559. 13,12,14,15,15,14,15,14,15,13,16,16,16,16,16,16,
  21560. 16,13,13,14,12,16,12,16,15,14,15,14,14,16,16,16,
  21561. 16,16,16,16,15,14,14,14,15,16,16,16,16,14,16,16,
  21562. 16,16,16,16,16,16,16,14,14,14,12,15,11,15,13,16,
  21563. 15,16,15,16,16,16,16,16,16,16,15,16,14,14,15,13,
  21564. 15,16,16,16,16,15,16,16,16,16,16,16,16,16,16,15,
  21565. 15,14,13,14,16,16,14,15,16,
  21566. };
  21567. static float _vq_quantthresh__44c9_s_p9_1[] = {
  21568. -416.5, -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5,
  21569. -24.5, 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5,
  21570. 367.5, 416.5,
  21571. };
  21572. static long _vq_quantmap__44c9_s_p9_1[] = {
  21573. 17, 15, 13, 11, 9, 7, 5, 3,
  21574. 1, 0, 2, 4, 6, 8, 10, 12,
  21575. 14, 16, 18,
  21576. };
  21577. static encode_aux_threshmatch _vq_auxt__44c9_s_p9_1 = {
  21578. _vq_quantthresh__44c9_s_p9_1,
  21579. _vq_quantmap__44c9_s_p9_1,
  21580. 19,
  21581. 19
  21582. };
  21583. static static_codebook _44c9_s_p9_1 = {
  21584. 2, 361,
  21585. _vq_lengthlist__44c9_s_p9_1,
  21586. 1, -518287360, 1622704128, 5, 0,
  21587. _vq_quantlist__44c9_s_p9_1,
  21588. NULL,
  21589. &_vq_auxt__44c9_s_p9_1,
  21590. NULL,
  21591. 0
  21592. };
  21593. static long _vq_quantlist__44c9_s_p9_2[] = {
  21594. 24,
  21595. 23,
  21596. 25,
  21597. 22,
  21598. 26,
  21599. 21,
  21600. 27,
  21601. 20,
  21602. 28,
  21603. 19,
  21604. 29,
  21605. 18,
  21606. 30,
  21607. 17,
  21608. 31,
  21609. 16,
  21610. 32,
  21611. 15,
  21612. 33,
  21613. 14,
  21614. 34,
  21615. 13,
  21616. 35,
  21617. 12,
  21618. 36,
  21619. 11,
  21620. 37,
  21621. 10,
  21622. 38,
  21623. 9,
  21624. 39,
  21625. 8,
  21626. 40,
  21627. 7,
  21628. 41,
  21629. 6,
  21630. 42,
  21631. 5,
  21632. 43,
  21633. 4,
  21634. 44,
  21635. 3,
  21636. 45,
  21637. 2,
  21638. 46,
  21639. 1,
  21640. 47,
  21641. 0,
  21642. 48,
  21643. };
  21644. static long _vq_lengthlist__44c9_s_p9_2[] = {
  21645. 3, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
  21646. 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  21647. 6, 7, 6, 6, 7, 7, 6, 7, 6, 7, 7, 7, 7, 7, 7, 7,
  21648. 7,
  21649. };
  21650. static float _vq_quantthresh__44c9_s_p9_2[] = {
  21651. -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5,
  21652. -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5,
  21653. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  21654. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  21655. 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5,
  21656. 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5,
  21657. };
  21658. static long _vq_quantmap__44c9_s_p9_2[] = {
  21659. 47, 45, 43, 41, 39, 37, 35, 33,
  21660. 31, 29, 27, 25, 23, 21, 19, 17,
  21661. 15, 13, 11, 9, 7, 5, 3, 1,
  21662. 0, 2, 4, 6, 8, 10, 12, 14,
  21663. 16, 18, 20, 22, 24, 26, 28, 30,
  21664. 32, 34, 36, 38, 40, 42, 44, 46,
  21665. 48,
  21666. };
  21667. static encode_aux_threshmatch _vq_auxt__44c9_s_p9_2 = {
  21668. _vq_quantthresh__44c9_s_p9_2,
  21669. _vq_quantmap__44c9_s_p9_2,
  21670. 49,
  21671. 49
  21672. };
  21673. static static_codebook _44c9_s_p9_2 = {
  21674. 1, 49,
  21675. _vq_lengthlist__44c9_s_p9_2,
  21676. 1, -526909440, 1611661312, 6, 0,
  21677. _vq_quantlist__44c9_s_p9_2,
  21678. NULL,
  21679. &_vq_auxt__44c9_s_p9_2,
  21680. NULL,
  21681. 0
  21682. };
  21683. static long _huff_lengthlist__44c9_s_short[] = {
  21684. 5,13,17,15,16,16,18,17,18,18, 5, 7,10,12,12,12,
  21685. 12,17,18,17, 7, 6, 7, 8, 9, 9, 9,13,17,17, 8, 6,
  21686. 6, 5, 6, 7, 8,11,16,18, 9, 7, 7, 5, 5, 6, 7,10,
  21687. 15,18, 9, 8, 7, 6, 5, 4, 5, 7,13,17,11,11, 9, 8,
  21688. 7, 4, 3, 5,12,18,13,13,12,10, 7, 5, 4, 3, 8,13,
  21689. 16,16,16,13, 8, 8, 7, 5, 8,12,15,18,17,15,11,10,
  21690. 9, 8,10,14,
  21691. };
  21692. static static_codebook _huff_book__44c9_s_short = {
  21693. 2, 100,
  21694. _huff_lengthlist__44c9_s_short,
  21695. 0, 0, 0, 0, 0,
  21696. NULL,
  21697. NULL,
  21698. NULL,
  21699. NULL,
  21700. 0
  21701. };
  21702. static long _vq_quantlist__8c0_s_p1_0[] = {
  21703. 1,
  21704. 0,
  21705. 2,
  21706. };
  21707. static long _vq_lengthlist__8c0_s_p1_0[] = {
  21708. 1, 5, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
  21709. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21710. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21711. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21712. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21713. 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0,
  21714. 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21715. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21716. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21717. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21718. 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  21719. 0, 0, 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21720. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21721. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21722. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21723. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21724. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21725. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21726. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21727. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21728. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21729. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21730. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21731. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21732. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21733. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21734. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21735. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21736. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21737. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21738. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21739. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21740. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21741. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21742. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21743. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21744. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21745. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21746. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21747. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21748. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21749. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21750. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21751. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21752. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21753. 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
  21754. 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
  21755. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21756. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21757. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21758. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10, 9, 0, 0, 0,
  21759. 0, 0, 0, 8, 9,11, 0, 0, 0, 0, 0, 0, 9,11,11, 0,
  21760. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21761. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21762. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21763. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9,10, 0, 0,
  21764. 0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 9,11,11,
  21765. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21766. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21767. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21768. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21769. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21770. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21771. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21772. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21773. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21774. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21775. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21776. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21777. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21778. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21779. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21780. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21781. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21782. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21783. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21784. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21785. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21786. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21787. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21788. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21789. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21790. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21791. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21792. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21793. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21794. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21795. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21796. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21797. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21798. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21799. 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
  21800. 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21801. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21802. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21803. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21804. 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,11, 0,
  21805. 0, 0, 0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 0, 0,
  21806. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21807. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21808. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21809. 0, 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 9,11,11,
  21810. 0, 0, 0, 0, 0, 0, 8,11, 9, 0, 0, 0, 0, 0, 0, 0,
  21811. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21812. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21813. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21814. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21815. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21816. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21817. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21818. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21819. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21820. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21821. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21822. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21823. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21824. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21825. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21826. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21827. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21828. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21829. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21830. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21831. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21832. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21833. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21834. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21835. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21836. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21837. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21838. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21839. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21840. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21841. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21842. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21843. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21844. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21845. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21846. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21847. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21848. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21849. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21850. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21851. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21852. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21853. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21854. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21855. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21856. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21857. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21858. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21859. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21860. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21861. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21862. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21863. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21864. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21865. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21866. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21867. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21868. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21869. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21870. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21871. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21872. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21873. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21874. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21875. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21876. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21877. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21878. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21879. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21880. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21881. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21882. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21883. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21884. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21885. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21886. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21887. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21888. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21889. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21890. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21891. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21892. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21893. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21894. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21895. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21896. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21897. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21898. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21899. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21900. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21901. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21902. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21903. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21904. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21905. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21906. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21907. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21908. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21909. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21910. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21911. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21912. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21913. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21914. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21915. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21916. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21917. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21918. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21919. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21920. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21921. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21922. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21923. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21924. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21925. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21926. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21927. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21928. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21929. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21930. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21931. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21932. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21933. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21934. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21935. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21936. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21937. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21938. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21939. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21940. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21941. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21942. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21943. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21944. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21945. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21946. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21947. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21948. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21949. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21950. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21951. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21952. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21953. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21954. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21955. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21956. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21957. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21958. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21959. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21960. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21961. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21962. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21963. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21964. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21965. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21966. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21967. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21968. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21969. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21970. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21971. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21972. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21973. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21974. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21975. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21976. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21977. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21978. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21979. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21980. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21981. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21982. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21983. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21984. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21985. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21986. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21987. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21988. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21989. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21990. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21991. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21992. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21993. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21994. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21995. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21996. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21997. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21998. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21999. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22000. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22001. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22002. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22003. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22004. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22005. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22006. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22007. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22008. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22009. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22010. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22011. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22012. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22013. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22014. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22015. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22016. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22017. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22018. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22019. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22020. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22021. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22022. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22023. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22024. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22025. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22026. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22027. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22028. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22029. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22030. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22031. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22032. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22033. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22034. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22035. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22036. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22037. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22038. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22039. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22040. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22041. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22042. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22043. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22044. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22045. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22046. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22047. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22048. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22049. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22050. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22051. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22052. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22053. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22054. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22055. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22056. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22057. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22058. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22059. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22060. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22061. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22062. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22063. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22064. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22065. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22066. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22067. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22068. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22069. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22070. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22071. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22072. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22073. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22074. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22075. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22076. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22077. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22078. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22079. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22080. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22081. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22082. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22083. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22084. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22085. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22086. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22087. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22088. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22089. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22090. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22091. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22092. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22093. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22094. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22095. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22096. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22097. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22098. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22099. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22100. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22101. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22102. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22103. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22104. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22105. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22106. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22107. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22108. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22109. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22110. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22111. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22112. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22113. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22114. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22115. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22116. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22117. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22118. 0,
  22119. };
  22120. static float _vq_quantthresh__8c0_s_p1_0[] = {
  22121. -0.5, 0.5,
  22122. };
  22123. static long _vq_quantmap__8c0_s_p1_0[] = {
  22124. 1, 0, 2,
  22125. };
  22126. static encode_aux_threshmatch _vq_auxt__8c0_s_p1_0 = {
  22127. _vq_quantthresh__8c0_s_p1_0,
  22128. _vq_quantmap__8c0_s_p1_0,
  22129. 3,
  22130. 3
  22131. };
  22132. static static_codebook _8c0_s_p1_0 = {
  22133. 8, 6561,
  22134. _vq_lengthlist__8c0_s_p1_0,
  22135. 1, -535822336, 1611661312, 2, 0,
  22136. _vq_quantlist__8c0_s_p1_0,
  22137. NULL,
  22138. &_vq_auxt__8c0_s_p1_0,
  22139. NULL,
  22140. 0
  22141. };
  22142. static long _vq_quantlist__8c0_s_p2_0[] = {
  22143. 2,
  22144. 1,
  22145. 3,
  22146. 0,
  22147. 4,
  22148. };
  22149. static long _vq_lengthlist__8c0_s_p2_0[] = {
  22150. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22151. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22152. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22153. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22154. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22155. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22156. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22157. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22158. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22159. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22160. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22161. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22162. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22163. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22164. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22165. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22166. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22167. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22168. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22169. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22170. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22171. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22172. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22173. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22174. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22175. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22176. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22177. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22178. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22179. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22180. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22181. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22182. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22183. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22184. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22185. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22186. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22187. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22188. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22189. 0,
  22190. };
  22191. static float _vq_quantthresh__8c0_s_p2_0[] = {
  22192. -1.5, -0.5, 0.5, 1.5,
  22193. };
  22194. static long _vq_quantmap__8c0_s_p2_0[] = {
  22195. 3, 1, 0, 2, 4,
  22196. };
  22197. static encode_aux_threshmatch _vq_auxt__8c0_s_p2_0 = {
  22198. _vq_quantthresh__8c0_s_p2_0,
  22199. _vq_quantmap__8c0_s_p2_0,
  22200. 5,
  22201. 5
  22202. };
  22203. static static_codebook _8c0_s_p2_0 = {
  22204. 4, 625,
  22205. _vq_lengthlist__8c0_s_p2_0,
  22206. 1, -533725184, 1611661312, 3, 0,
  22207. _vq_quantlist__8c0_s_p2_0,
  22208. NULL,
  22209. &_vq_auxt__8c0_s_p2_0,
  22210. NULL,
  22211. 0
  22212. };
  22213. static long _vq_quantlist__8c0_s_p3_0[] = {
  22214. 2,
  22215. 1,
  22216. 3,
  22217. 0,
  22218. 4,
  22219. };
  22220. static long _vq_lengthlist__8c0_s_p3_0[] = {
  22221. 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22222. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 7, 0, 0,
  22223. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22224. 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22225. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 8, 8,
  22226. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22227. 0, 0, 0, 0, 6, 7, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0,
  22228. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22229. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22230. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22231. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22232. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22233. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22234. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22235. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22236. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22237. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22238. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22239. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22240. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22241. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22242. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22243. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22244. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22245. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22246. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22247. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22248. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22249. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22250. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22251. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22252. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22253. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22254. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22255. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22256. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22257. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22258. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22259. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22260. 0,
  22261. };
  22262. static float _vq_quantthresh__8c0_s_p3_0[] = {
  22263. -1.5, -0.5, 0.5, 1.5,
  22264. };
  22265. static long _vq_quantmap__8c0_s_p3_0[] = {
  22266. 3, 1, 0, 2, 4,
  22267. };
  22268. static encode_aux_threshmatch _vq_auxt__8c0_s_p3_0 = {
  22269. _vq_quantthresh__8c0_s_p3_0,
  22270. _vq_quantmap__8c0_s_p3_0,
  22271. 5,
  22272. 5
  22273. };
  22274. static static_codebook _8c0_s_p3_0 = {
  22275. 4, 625,
  22276. _vq_lengthlist__8c0_s_p3_0,
  22277. 1, -533725184, 1611661312, 3, 0,
  22278. _vq_quantlist__8c0_s_p3_0,
  22279. NULL,
  22280. &_vq_auxt__8c0_s_p3_0,
  22281. NULL,
  22282. 0
  22283. };
  22284. static long _vq_quantlist__8c0_s_p4_0[] = {
  22285. 4,
  22286. 3,
  22287. 5,
  22288. 2,
  22289. 6,
  22290. 1,
  22291. 7,
  22292. 0,
  22293. 8,
  22294. };
  22295. static long _vq_lengthlist__8c0_s_p4_0[] = {
  22296. 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
  22297. 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
  22298. 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  22299. 8, 8, 0, 0, 0, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0,
  22300. 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22301. 0,
  22302. };
  22303. static float _vq_quantthresh__8c0_s_p4_0[] = {
  22304. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  22305. };
  22306. static long _vq_quantmap__8c0_s_p4_0[] = {
  22307. 7, 5, 3, 1, 0, 2, 4, 6,
  22308. 8,
  22309. };
  22310. static encode_aux_threshmatch _vq_auxt__8c0_s_p4_0 = {
  22311. _vq_quantthresh__8c0_s_p4_0,
  22312. _vq_quantmap__8c0_s_p4_0,
  22313. 9,
  22314. 9
  22315. };
  22316. static static_codebook _8c0_s_p4_0 = {
  22317. 2, 81,
  22318. _vq_lengthlist__8c0_s_p4_0,
  22319. 1, -531628032, 1611661312, 4, 0,
  22320. _vq_quantlist__8c0_s_p4_0,
  22321. NULL,
  22322. &_vq_auxt__8c0_s_p4_0,
  22323. NULL,
  22324. 0
  22325. };
  22326. static long _vq_quantlist__8c0_s_p5_0[] = {
  22327. 4,
  22328. 3,
  22329. 5,
  22330. 2,
  22331. 6,
  22332. 1,
  22333. 7,
  22334. 0,
  22335. 8,
  22336. };
  22337. static long _vq_lengthlist__8c0_s_p5_0[] = {
  22338. 1, 3, 3, 5, 5, 7, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
  22339. 8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 9, 0, 0, 0, 8, 8,
  22340. 8, 8, 9, 9, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, 0,
  22341. 9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
  22342. 0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
  22343. 10,
  22344. };
  22345. static float _vq_quantthresh__8c0_s_p5_0[] = {
  22346. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  22347. };
  22348. static long _vq_quantmap__8c0_s_p5_0[] = {
  22349. 7, 5, 3, 1, 0, 2, 4, 6,
  22350. 8,
  22351. };
  22352. static encode_aux_threshmatch _vq_auxt__8c0_s_p5_0 = {
  22353. _vq_quantthresh__8c0_s_p5_0,
  22354. _vq_quantmap__8c0_s_p5_0,
  22355. 9,
  22356. 9
  22357. };
  22358. static static_codebook _8c0_s_p5_0 = {
  22359. 2, 81,
  22360. _vq_lengthlist__8c0_s_p5_0,
  22361. 1, -531628032, 1611661312, 4, 0,
  22362. _vq_quantlist__8c0_s_p5_0,
  22363. NULL,
  22364. &_vq_auxt__8c0_s_p5_0,
  22365. NULL,
  22366. 0
  22367. };
  22368. static long _vq_quantlist__8c0_s_p6_0[] = {
  22369. 8,
  22370. 7,
  22371. 9,
  22372. 6,
  22373. 10,
  22374. 5,
  22375. 11,
  22376. 4,
  22377. 12,
  22378. 3,
  22379. 13,
  22380. 2,
  22381. 14,
  22382. 1,
  22383. 15,
  22384. 0,
  22385. 16,
  22386. };
  22387. static long _vq_lengthlist__8c0_s_p6_0[] = {
  22388. 1, 3, 3, 6, 6, 8, 8, 9, 9, 8, 8,10, 9,10,10,11,
  22389. 11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
  22390. 11,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
  22391. 11,12,11, 0, 0, 0, 8, 8, 9, 9,10,10, 9, 9,10,10,
  22392. 11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10, 9, 9,11,
  22393. 10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,10,10,
  22394. 11,11,11,12,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,10,
  22395. 10,11,11,12,12,13,13, 0, 0, 0,10,10,10,10,11,11,
  22396. 10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,10, 9,10,
  22397. 11,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
  22398. 10, 9,10,11,12,12,13,13,14,13, 0, 0, 0, 0, 0, 9,
  22399. 9, 9,10,10,10,11,11,13,12,13,13, 0, 0, 0, 0, 0,
  22400. 10,10,10,10,11,11,12,12,13,13,14,14, 0, 0, 0, 0,
  22401. 0, 0, 0,10,10,11,11,12,12,13,13,13,14, 0, 0, 0,
  22402. 0, 0, 0, 0,11,11,11,11,12,12,13,14,14,14, 0, 0,
  22403. 0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,14,13, 0,
  22404. 0, 0, 0, 0, 0, 0,11,11,12,12,13,13,14,14,14,14,
  22405. 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
  22406. 14,
  22407. };
  22408. static float _vq_quantthresh__8c0_s_p6_0[] = {
  22409. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  22410. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  22411. };
  22412. static long _vq_quantmap__8c0_s_p6_0[] = {
  22413. 15, 13, 11, 9, 7, 5, 3, 1,
  22414. 0, 2, 4, 6, 8, 10, 12, 14,
  22415. 16,
  22416. };
  22417. static encode_aux_threshmatch _vq_auxt__8c0_s_p6_0 = {
  22418. _vq_quantthresh__8c0_s_p6_0,
  22419. _vq_quantmap__8c0_s_p6_0,
  22420. 17,
  22421. 17
  22422. };
  22423. static static_codebook _8c0_s_p6_0 = {
  22424. 2, 289,
  22425. _vq_lengthlist__8c0_s_p6_0,
  22426. 1, -529530880, 1611661312, 5, 0,
  22427. _vq_quantlist__8c0_s_p6_0,
  22428. NULL,
  22429. &_vq_auxt__8c0_s_p6_0,
  22430. NULL,
  22431. 0
  22432. };
  22433. static long _vq_quantlist__8c0_s_p7_0[] = {
  22434. 1,
  22435. 0,
  22436. 2,
  22437. };
  22438. static long _vq_lengthlist__8c0_s_p7_0[] = {
  22439. 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,11, 9,10,12,
  22440. 9,10, 4, 7, 7,10,10,10,11, 9, 9, 6,11,10,11,11,
  22441. 12,11,11,11, 6,10,10,11,11,12,11,10,10, 6, 9,10,
  22442. 11,11,11,11,10,10, 7,10,11,12,11,11,12,11,12, 6,
  22443. 9, 9,10, 9, 9,11,10,10, 6, 9, 9,10,10,10,11,10,
  22444. 10,
  22445. };
  22446. static float _vq_quantthresh__8c0_s_p7_0[] = {
  22447. -5.5, 5.5,
  22448. };
  22449. static long _vq_quantmap__8c0_s_p7_0[] = {
  22450. 1, 0, 2,
  22451. };
  22452. static encode_aux_threshmatch _vq_auxt__8c0_s_p7_0 = {
  22453. _vq_quantthresh__8c0_s_p7_0,
  22454. _vq_quantmap__8c0_s_p7_0,
  22455. 3,
  22456. 3
  22457. };
  22458. static static_codebook _8c0_s_p7_0 = {
  22459. 4, 81,
  22460. _vq_lengthlist__8c0_s_p7_0,
  22461. 1, -529137664, 1618345984, 2, 0,
  22462. _vq_quantlist__8c0_s_p7_0,
  22463. NULL,
  22464. &_vq_auxt__8c0_s_p7_0,
  22465. NULL,
  22466. 0
  22467. };
  22468. static long _vq_quantlist__8c0_s_p7_1[] = {
  22469. 5,
  22470. 4,
  22471. 6,
  22472. 3,
  22473. 7,
  22474. 2,
  22475. 8,
  22476. 1,
  22477. 9,
  22478. 0,
  22479. 10,
  22480. };
  22481. static long _vq_lengthlist__8c0_s_p7_1[] = {
  22482. 1, 3, 3, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10, 7, 7,
  22483. 8, 8, 9, 9, 9, 9,10,10, 9, 7, 7, 8, 8, 9, 9, 9,
  22484. 9,10,10,10, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10, 8,
  22485. 8, 9, 9, 9, 9, 8, 9,10,10,10, 8, 8, 9, 9, 9,10,
  22486. 10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,10,11,10,11,
  22487. 9, 9, 9, 9,10,10,10,10,11,11,11,10,10, 9, 9,10,
  22488. 10,10, 9,11,10,10,10,10,10,10, 9, 9,10,10,11,11,
  22489. 10,10,10, 9, 9, 9,10,10,10,
  22490. };
  22491. static float _vq_quantthresh__8c0_s_p7_1[] = {
  22492. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  22493. 3.5, 4.5,
  22494. };
  22495. static long _vq_quantmap__8c0_s_p7_1[] = {
  22496. 9, 7, 5, 3, 1, 0, 2, 4,
  22497. 6, 8, 10,
  22498. };
  22499. static encode_aux_threshmatch _vq_auxt__8c0_s_p7_1 = {
  22500. _vq_quantthresh__8c0_s_p7_1,
  22501. _vq_quantmap__8c0_s_p7_1,
  22502. 11,
  22503. 11
  22504. };
  22505. static static_codebook _8c0_s_p7_1 = {
  22506. 2, 121,
  22507. _vq_lengthlist__8c0_s_p7_1,
  22508. 1, -531365888, 1611661312, 4, 0,
  22509. _vq_quantlist__8c0_s_p7_1,
  22510. NULL,
  22511. &_vq_auxt__8c0_s_p7_1,
  22512. NULL,
  22513. 0
  22514. };
  22515. static long _vq_quantlist__8c0_s_p8_0[] = {
  22516. 6,
  22517. 5,
  22518. 7,
  22519. 4,
  22520. 8,
  22521. 3,
  22522. 9,
  22523. 2,
  22524. 10,
  22525. 1,
  22526. 11,
  22527. 0,
  22528. 12,
  22529. };
  22530. static long _vq_lengthlist__8c0_s_p8_0[] = {
  22531. 1, 4, 4, 7, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 6, 6,
  22532. 7, 7, 8, 8, 7, 7, 8, 9,10,10, 7, 6, 6, 7, 7, 8,
  22533. 7, 7, 7, 9, 9,10,12, 0, 8, 8, 8, 8, 8, 9, 8, 8,
  22534. 9, 9,10,10, 0, 8, 8, 8, 8, 8, 9, 8, 9, 9, 9,11,
  22535. 10, 0, 0,13, 9, 8, 9, 9, 9, 9,10,10,11,11, 0,13,
  22536. 0, 9, 9, 9, 9, 9, 9,11,10,11,11, 0, 0, 0, 8, 9,
  22537. 10, 9,10,10,13,11,12,12, 0, 0, 0, 8, 9, 9, 9,10,
  22538. 10,13,12,12,13, 0, 0, 0,12, 0,10,10,12,11,10,11,
  22539. 12,12, 0, 0, 0,13,13,10,10,10,11,12, 0,13, 0, 0,
  22540. 0, 0, 0, 0,13,11, 0,12,12,12,13,12, 0, 0, 0, 0,
  22541. 0, 0,13,13,11,13,13,11,12,
  22542. };
  22543. static float _vq_quantthresh__8c0_s_p8_0[] = {
  22544. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  22545. 12.5, 17.5, 22.5, 27.5,
  22546. };
  22547. static long _vq_quantmap__8c0_s_p8_0[] = {
  22548. 11, 9, 7, 5, 3, 1, 0, 2,
  22549. 4, 6, 8, 10, 12,
  22550. };
  22551. static encode_aux_threshmatch _vq_auxt__8c0_s_p8_0 = {
  22552. _vq_quantthresh__8c0_s_p8_0,
  22553. _vq_quantmap__8c0_s_p8_0,
  22554. 13,
  22555. 13
  22556. };
  22557. static static_codebook _8c0_s_p8_0 = {
  22558. 2, 169,
  22559. _vq_lengthlist__8c0_s_p8_0,
  22560. 1, -526516224, 1616117760, 4, 0,
  22561. _vq_quantlist__8c0_s_p8_0,
  22562. NULL,
  22563. &_vq_auxt__8c0_s_p8_0,
  22564. NULL,
  22565. 0
  22566. };
  22567. static long _vq_quantlist__8c0_s_p8_1[] = {
  22568. 2,
  22569. 1,
  22570. 3,
  22571. 0,
  22572. 4,
  22573. };
  22574. static long _vq_lengthlist__8c0_s_p8_1[] = {
  22575. 1, 3, 4, 5, 5, 7, 6, 6, 6, 5, 7, 7, 7, 6, 6, 7,
  22576. 7, 7, 6, 6, 7, 7, 7, 6, 6,
  22577. };
  22578. static float _vq_quantthresh__8c0_s_p8_1[] = {
  22579. -1.5, -0.5, 0.5, 1.5,
  22580. };
  22581. static long _vq_quantmap__8c0_s_p8_1[] = {
  22582. 3, 1, 0, 2, 4,
  22583. };
  22584. static encode_aux_threshmatch _vq_auxt__8c0_s_p8_1 = {
  22585. _vq_quantthresh__8c0_s_p8_1,
  22586. _vq_quantmap__8c0_s_p8_1,
  22587. 5,
  22588. 5
  22589. };
  22590. static static_codebook _8c0_s_p8_1 = {
  22591. 2, 25,
  22592. _vq_lengthlist__8c0_s_p8_1,
  22593. 1, -533725184, 1611661312, 3, 0,
  22594. _vq_quantlist__8c0_s_p8_1,
  22595. NULL,
  22596. &_vq_auxt__8c0_s_p8_1,
  22597. NULL,
  22598. 0
  22599. };
  22600. static long _vq_quantlist__8c0_s_p9_0[] = {
  22601. 1,
  22602. 0,
  22603. 2,
  22604. };
  22605. static long _vq_lengthlist__8c0_s_p9_0[] = {
  22606. 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  22607. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  22608. 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  22609. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  22610. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  22611. 7,
  22612. };
  22613. static float _vq_quantthresh__8c0_s_p9_0[] = {
  22614. -157.5, 157.5,
  22615. };
  22616. static long _vq_quantmap__8c0_s_p9_0[] = {
  22617. 1, 0, 2,
  22618. };
  22619. static encode_aux_threshmatch _vq_auxt__8c0_s_p9_0 = {
  22620. _vq_quantthresh__8c0_s_p9_0,
  22621. _vq_quantmap__8c0_s_p9_0,
  22622. 3,
  22623. 3
  22624. };
  22625. static static_codebook _8c0_s_p9_0 = {
  22626. 4, 81,
  22627. _vq_lengthlist__8c0_s_p9_0,
  22628. 1, -518803456, 1628680192, 2, 0,
  22629. _vq_quantlist__8c0_s_p9_0,
  22630. NULL,
  22631. &_vq_auxt__8c0_s_p9_0,
  22632. NULL,
  22633. 0
  22634. };
  22635. static long _vq_quantlist__8c0_s_p9_1[] = {
  22636. 7,
  22637. 6,
  22638. 8,
  22639. 5,
  22640. 9,
  22641. 4,
  22642. 10,
  22643. 3,
  22644. 11,
  22645. 2,
  22646. 12,
  22647. 1,
  22648. 13,
  22649. 0,
  22650. 14,
  22651. };
  22652. static long _vq_lengthlist__8c0_s_p9_1[] = {
  22653. 1, 4, 4, 5, 5,10, 8,11,11,11,11,11,11,11,11, 6,
  22654. 6, 6, 7, 6,11,10,11,11,11,11,11,11,11,11, 7, 5,
  22655. 6, 6, 6, 8, 7,11,11,11,11,11,11,11,11,11, 7, 8,
  22656. 8, 8, 9, 9,11,11,11,11,11,11,11,11,11, 9, 8, 7,
  22657. 8, 9,11,11,11,11,11,11,11,11,11,11,11,10,11,11,
  22658. 11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,
  22659. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  22660. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  22661. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  22662. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  22663. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  22664. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  22665. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  22666. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  22667. 11,
  22668. };
  22669. static float _vq_quantthresh__8c0_s_p9_1[] = {
  22670. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  22671. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  22672. };
  22673. static long _vq_quantmap__8c0_s_p9_1[] = {
  22674. 13, 11, 9, 7, 5, 3, 1, 0,
  22675. 2, 4, 6, 8, 10, 12, 14,
  22676. };
  22677. static encode_aux_threshmatch _vq_auxt__8c0_s_p9_1 = {
  22678. _vq_quantthresh__8c0_s_p9_1,
  22679. _vq_quantmap__8c0_s_p9_1,
  22680. 15,
  22681. 15
  22682. };
  22683. static static_codebook _8c0_s_p9_1 = {
  22684. 2, 225,
  22685. _vq_lengthlist__8c0_s_p9_1,
  22686. 1, -520986624, 1620377600, 4, 0,
  22687. _vq_quantlist__8c0_s_p9_1,
  22688. NULL,
  22689. &_vq_auxt__8c0_s_p9_1,
  22690. NULL,
  22691. 0
  22692. };
  22693. static long _vq_quantlist__8c0_s_p9_2[] = {
  22694. 10,
  22695. 9,
  22696. 11,
  22697. 8,
  22698. 12,
  22699. 7,
  22700. 13,
  22701. 6,
  22702. 14,
  22703. 5,
  22704. 15,
  22705. 4,
  22706. 16,
  22707. 3,
  22708. 17,
  22709. 2,
  22710. 18,
  22711. 1,
  22712. 19,
  22713. 0,
  22714. 20,
  22715. };
  22716. static long _vq_lengthlist__8c0_s_p9_2[] = {
  22717. 1, 5, 5, 7, 7, 8, 7, 8, 8,10,10, 9, 9,10,10,10,
  22718. 11,11,10,12,11,12,12,12, 9, 8, 8, 8, 8, 8, 9,10,
  22719. 10,10,10,11,11,11,10,11,11,12,12,11,12, 8, 8, 7,
  22720. 7, 8, 9,10,10,10, 9,10,10, 9,10,10,11,11,11,11,
  22721. 11,11, 9, 9, 9, 9, 8, 9,10,10,11,10,10,11,11,12,
  22722. 10,10,12,12,11,11,10, 9, 9,10, 8, 9,10,10,10, 9,
  22723. 10,10,11,11,10,11,10,10,10,12,12,12, 9,10, 9,10,
  22724. 9, 9,10,10,11,11,11,11,10,10,10,11,12,11,12,11,
  22725. 12,10,11,10,11, 9,10, 9,10, 9,10,10, 9,10,10,11,
  22726. 10,11,11,11,11,12,11, 9,10,10,10,10,11,11,11,11,
  22727. 11,10,11,11,11,11,10,12,10,12,12,11,12,10,10,11,
  22728. 10, 9,11,10,11, 9,10,11,10,10,10,11,11,11,11,12,
  22729. 12,10, 9, 9,11,10, 9,12,11,10,12,12,11,11,11,11,
  22730. 10,11,11,12,11,10,12, 9,11,10,11,10,10,11,10,11,
  22731. 9,10,10,10,11,12,11,11,12,11,10,10,11,11, 9,10,
  22732. 10,12,10,11,10,10,10, 9,10,10,10,10, 9,10,10,11,
  22733. 11,11,11,12,11,10,10,10,10,11,11,10,11,11, 9,11,
  22734. 10,12,10,12,11,10,11,10,10,10,11,10,10,11,11,10,
  22735. 11,10,10,10,10,11,11,12,10,10,10,11,10,11,12,11,
  22736. 10,11,10,10,11,11,10,12,10, 9,10,10,11,11,11,10,
  22737. 12,10,10,11,11,11,10,10,11,10,10,10,11,10,11,10,
  22738. 12,11,11,10,10,10,12,10,10,11, 9,10,11,11,11,10,
  22739. 10,11,10,10, 9,11,11,12,12,11,12,11,11,11,11,11,
  22740. 11, 9,10,11,10,12,10,10,10,10,11,10,10,11,10,10,
  22741. 12,10,10,10,10,10, 9,12,10,10,10,10,12, 9,11,10,
  22742. 10,11,10,12,12,10,12,12,12,10,10,10,10, 9,10,11,
  22743. 10,10,12,10,10,12,11,10,11,10,10,12,11,10,12,10,
  22744. 10,11, 9,11,10, 9,10, 9,10,
  22745. };
  22746. static float _vq_quantthresh__8c0_s_p9_2[] = {
  22747. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  22748. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  22749. 6.5, 7.5, 8.5, 9.5,
  22750. };
  22751. static long _vq_quantmap__8c0_s_p9_2[] = {
  22752. 19, 17, 15, 13, 11, 9, 7, 5,
  22753. 3, 1, 0, 2, 4, 6, 8, 10,
  22754. 12, 14, 16, 18, 20,
  22755. };
  22756. static encode_aux_threshmatch _vq_auxt__8c0_s_p9_2 = {
  22757. _vq_quantthresh__8c0_s_p9_2,
  22758. _vq_quantmap__8c0_s_p9_2,
  22759. 21,
  22760. 21
  22761. };
  22762. static static_codebook _8c0_s_p9_2 = {
  22763. 2, 441,
  22764. _vq_lengthlist__8c0_s_p9_2,
  22765. 1, -529268736, 1611661312, 5, 0,
  22766. _vq_quantlist__8c0_s_p9_2,
  22767. NULL,
  22768. &_vq_auxt__8c0_s_p9_2,
  22769. NULL,
  22770. 0
  22771. };
  22772. static long _huff_lengthlist__8c0_s_single[] = {
  22773. 4, 5,18, 7,10, 6, 7, 8, 9,10, 5, 2,18, 5, 7, 5,
  22774. 6, 7, 8,11,17,17,17,17,17,17,17,17,17,17, 7, 4,
  22775. 17, 6, 9, 6, 8,10,12,15,11, 7,17, 9, 6, 6, 7, 9,
  22776. 11,15, 6, 4,17, 6, 6, 4, 5, 8,11,16, 6, 6,17, 8,
  22777. 6, 5, 6, 9,13,16, 8, 9,17,11, 9, 8, 8,11,13,17,
  22778. 9,12,17,15,14,13,12,13,14,17,12,15,17,17,17,17,
  22779. 17,16,17,17,
  22780. };
  22781. static static_codebook _huff_book__8c0_s_single = {
  22782. 2, 100,
  22783. _huff_lengthlist__8c0_s_single,
  22784. 0, 0, 0, 0, 0,
  22785. NULL,
  22786. NULL,
  22787. NULL,
  22788. NULL,
  22789. 0
  22790. };
  22791. static long _vq_quantlist__8c1_s_p1_0[] = {
  22792. 1,
  22793. 0,
  22794. 2,
  22795. };
  22796. static long _vq_lengthlist__8c1_s_p1_0[] = {
  22797. 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
  22798. 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22799. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22800. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22801. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22802. 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0,
  22803. 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22804. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22805. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22806. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22807. 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
  22808. 0, 0, 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22809. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22810. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22811. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22812. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22813. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22814. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22815. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22816. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22817. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22818. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22819. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22820. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22821. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22822. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22823. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22824. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22825. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22826. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22827. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22828. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22829. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22830. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22831. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22832. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22833. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22834. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22835. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22836. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22837. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22838. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22839. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22840. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22841. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22842. 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
  22843. 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
  22844. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22845. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22846. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22847. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
  22848. 0, 0, 0, 8, 8,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
  22849. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22850. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22851. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22852. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
  22853. 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
  22854. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22855. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22856. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22857. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22858. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22859. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22860. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22861. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22862. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22863. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22864. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22865. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22866. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22867. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22868. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22869. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22870. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22871. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22872. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22873. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22874. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22875. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22876. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22877. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22878. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22879. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22880. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22881. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22882. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22883. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22884. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22885. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22886. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22887. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22888. 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
  22889. 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22890. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22891. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22892. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22893. 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
  22894. 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
  22895. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22896. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22897. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22898. 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
  22899. 0, 0, 0, 0, 0, 0, 8,10, 8, 0, 0, 0, 0, 0, 0, 0,
  22900. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22901. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22902. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22903. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22904. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22905. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22906. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22907. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22908. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22909. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22910. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22911. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22912. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22913. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22914. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22915. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22916. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22917. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22918. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22919. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22920. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22921. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22922. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22923. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22924. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22925. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22926. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22927. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22928. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22929. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22930. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22931. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22932. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22933. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22934. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22935. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22936. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22937. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22938. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22939. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22940. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22941. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22942. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22943. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22944. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22945. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22946. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22947. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22948. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22949. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22950. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22951. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22952. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22953. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22954. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22955. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22956. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22957. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22958. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22959. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22960. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22961. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22962. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22963. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22964. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22965. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22966. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22967. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22968. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22969. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22970. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22971. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22972. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22973. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22974. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22975. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22976. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22977. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22978. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22979. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22980. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22981. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22982. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22983. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22984. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22985. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22986. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22987. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22988. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22989. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22990. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22991. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22992. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22993. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22994. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22995. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22996. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22997. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22998. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22999. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23000. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23001. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23002. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23003. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23004. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23005. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23006. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23007. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23008. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23009. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23010. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23011. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23012. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23013. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23014. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23015. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23016. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23017. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23018. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23019. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23020. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23021. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23022. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23023. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23024. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23025. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23026. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23027. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23028. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23029. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23030. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23031. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23032. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23033. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23034. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23035. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23036. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23037. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23038. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23039. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23040. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23041. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23042. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23043. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23044. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23045. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23046. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23047. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23048. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23049. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23050. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23051. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23052. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23053. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23054. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23055. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23056. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23057. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23058. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23059. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23060. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23061. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23062. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23063. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23064. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23065. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23066. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23067. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23068. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23069. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23070. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23071. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23072. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23073. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23074. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23075. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23076. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23077. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23078. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23079. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23080. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23081. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23082. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23083. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23084. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23085. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23086. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23087. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23088. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23089. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23090. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23091. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23092. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23093. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23094. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23095. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23096. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23097. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23098. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23099. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23100. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23101. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23102. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23103. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23104. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23105. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23106. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23107. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23108. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23109. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23110. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23111. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23112. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23113. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23114. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23115. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23116. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23117. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23118. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23119. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23120. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23121. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23122. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23123. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23124. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23125. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23126. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23127. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23128. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23129. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23130. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23131. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23132. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23133. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23134. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23135. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23136. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23137. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23138. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23139. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23140. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23141. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23142. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23143. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23144. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23145. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23146. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23147. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23148. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23149. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23150. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23151. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23152. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23153. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23154. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23155. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23156. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23157. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23158. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23159. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23160. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23161. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23162. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23163. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23164. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23165. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23166. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23167. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23168. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23169. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23170. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23171. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23172. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23173. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23174. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23175. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23176. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23177. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23178. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23179. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23180. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23181. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23182. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23183. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23184. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23185. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23186. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23187. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23188. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23189. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23190. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23191. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23192. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23193. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23194. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23195. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23196. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23197. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23198. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23199. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23200. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23201. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23202. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23203. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23204. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23205. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23206. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23207. 0,
  23208. };
  23209. static float _vq_quantthresh__8c1_s_p1_0[] = {
  23210. -0.5, 0.5,
  23211. };
  23212. static long _vq_quantmap__8c1_s_p1_0[] = {
  23213. 1, 0, 2,
  23214. };
  23215. static encode_aux_threshmatch _vq_auxt__8c1_s_p1_0 = {
  23216. _vq_quantthresh__8c1_s_p1_0,
  23217. _vq_quantmap__8c1_s_p1_0,
  23218. 3,
  23219. 3
  23220. };
  23221. static static_codebook _8c1_s_p1_0 = {
  23222. 8, 6561,
  23223. _vq_lengthlist__8c1_s_p1_0,
  23224. 1, -535822336, 1611661312, 2, 0,
  23225. _vq_quantlist__8c1_s_p1_0,
  23226. NULL,
  23227. &_vq_auxt__8c1_s_p1_0,
  23228. NULL,
  23229. 0
  23230. };
  23231. static long _vq_quantlist__8c1_s_p2_0[] = {
  23232. 2,
  23233. 1,
  23234. 3,
  23235. 0,
  23236. 4,
  23237. };
  23238. static long _vq_lengthlist__8c1_s_p2_0[] = {
  23239. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23240. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23241. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23242. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23243. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23244. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23245. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23246. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23247. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23248. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23249. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23250. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23251. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23252. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23253. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23254. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23255. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23256. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23257. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23258. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23259. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23260. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23261. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23262. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23263. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23264. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23265. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23266. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23267. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23268. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23269. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23270. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23271. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23272. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23273. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23274. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23275. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23276. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23277. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23278. 0,
  23279. };
  23280. static float _vq_quantthresh__8c1_s_p2_0[] = {
  23281. -1.5, -0.5, 0.5, 1.5,
  23282. };
  23283. static long _vq_quantmap__8c1_s_p2_0[] = {
  23284. 3, 1, 0, 2, 4,
  23285. };
  23286. static encode_aux_threshmatch _vq_auxt__8c1_s_p2_0 = {
  23287. _vq_quantthresh__8c1_s_p2_0,
  23288. _vq_quantmap__8c1_s_p2_0,
  23289. 5,
  23290. 5
  23291. };
  23292. static static_codebook _8c1_s_p2_0 = {
  23293. 4, 625,
  23294. _vq_lengthlist__8c1_s_p2_0,
  23295. 1, -533725184, 1611661312, 3, 0,
  23296. _vq_quantlist__8c1_s_p2_0,
  23297. NULL,
  23298. &_vq_auxt__8c1_s_p2_0,
  23299. NULL,
  23300. 0
  23301. };
  23302. static long _vq_quantlist__8c1_s_p3_0[] = {
  23303. 2,
  23304. 1,
  23305. 3,
  23306. 0,
  23307. 4,
  23308. };
  23309. static long _vq_lengthlist__8c1_s_p3_0[] = {
  23310. 2, 4, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23311. 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
  23312. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23313. 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23314. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
  23315. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23316. 0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  23317. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23318. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23319. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23320. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23321. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23322. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23323. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23324. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23325. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23326. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23327. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23328. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23329. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23330. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23331. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23332. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23333. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23334. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23335. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23336. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23337. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23338. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23339. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23340. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23341. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23342. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23343. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23344. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23345. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23346. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23347. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23348. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23349. 0,
  23350. };
  23351. static float _vq_quantthresh__8c1_s_p3_0[] = {
  23352. -1.5, -0.5, 0.5, 1.5,
  23353. };
  23354. static long _vq_quantmap__8c1_s_p3_0[] = {
  23355. 3, 1, 0, 2, 4,
  23356. };
  23357. static encode_aux_threshmatch _vq_auxt__8c1_s_p3_0 = {
  23358. _vq_quantthresh__8c1_s_p3_0,
  23359. _vq_quantmap__8c1_s_p3_0,
  23360. 5,
  23361. 5
  23362. };
  23363. static static_codebook _8c1_s_p3_0 = {
  23364. 4, 625,
  23365. _vq_lengthlist__8c1_s_p3_0,
  23366. 1, -533725184, 1611661312, 3, 0,
  23367. _vq_quantlist__8c1_s_p3_0,
  23368. NULL,
  23369. &_vq_auxt__8c1_s_p3_0,
  23370. NULL,
  23371. 0
  23372. };
  23373. static long _vq_quantlist__8c1_s_p4_0[] = {
  23374. 4,
  23375. 3,
  23376. 5,
  23377. 2,
  23378. 6,
  23379. 1,
  23380. 7,
  23381. 0,
  23382. 8,
  23383. };
  23384. static long _vq_lengthlist__8c1_s_p4_0[] = {
  23385. 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
  23386. 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
  23387. 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
  23388. 8, 8, 0, 0, 0, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0,
  23389. 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23390. 0,
  23391. };
  23392. static float _vq_quantthresh__8c1_s_p4_0[] = {
  23393. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  23394. };
  23395. static long _vq_quantmap__8c1_s_p4_0[] = {
  23396. 7, 5, 3, 1, 0, 2, 4, 6,
  23397. 8,
  23398. };
  23399. static encode_aux_threshmatch _vq_auxt__8c1_s_p4_0 = {
  23400. _vq_quantthresh__8c1_s_p4_0,
  23401. _vq_quantmap__8c1_s_p4_0,
  23402. 9,
  23403. 9
  23404. };
  23405. static static_codebook _8c1_s_p4_0 = {
  23406. 2, 81,
  23407. _vq_lengthlist__8c1_s_p4_0,
  23408. 1, -531628032, 1611661312, 4, 0,
  23409. _vq_quantlist__8c1_s_p4_0,
  23410. NULL,
  23411. &_vq_auxt__8c1_s_p4_0,
  23412. NULL,
  23413. 0
  23414. };
  23415. static long _vq_quantlist__8c1_s_p5_0[] = {
  23416. 4,
  23417. 3,
  23418. 5,
  23419. 2,
  23420. 6,
  23421. 1,
  23422. 7,
  23423. 0,
  23424. 8,
  23425. };
  23426. static long _vq_lengthlist__8c1_s_p5_0[] = {
  23427. 1, 3, 3, 4, 5, 6, 6, 8, 8, 0, 0, 0, 8, 8, 7, 7,
  23428. 9, 9, 0, 0, 0, 8, 8, 7, 7, 9, 9, 0, 0, 0, 9,10,
  23429. 8, 8, 9, 9, 0, 0, 0,10,10, 8, 8, 9, 9, 0, 0, 0,
  23430. 11,10, 8, 8,10,10, 0, 0, 0,11,11, 8, 8,10,10, 0,
  23431. 0, 0,12,12, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
  23432. 10,
  23433. };
  23434. static float _vq_quantthresh__8c1_s_p5_0[] = {
  23435. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  23436. };
  23437. static long _vq_quantmap__8c1_s_p5_0[] = {
  23438. 7, 5, 3, 1, 0, 2, 4, 6,
  23439. 8,
  23440. };
  23441. static encode_aux_threshmatch _vq_auxt__8c1_s_p5_0 = {
  23442. _vq_quantthresh__8c1_s_p5_0,
  23443. _vq_quantmap__8c1_s_p5_0,
  23444. 9,
  23445. 9
  23446. };
  23447. static static_codebook _8c1_s_p5_0 = {
  23448. 2, 81,
  23449. _vq_lengthlist__8c1_s_p5_0,
  23450. 1, -531628032, 1611661312, 4, 0,
  23451. _vq_quantlist__8c1_s_p5_0,
  23452. NULL,
  23453. &_vq_auxt__8c1_s_p5_0,
  23454. NULL,
  23455. 0
  23456. };
  23457. static long _vq_quantlist__8c1_s_p6_0[] = {
  23458. 8,
  23459. 7,
  23460. 9,
  23461. 6,
  23462. 10,
  23463. 5,
  23464. 11,
  23465. 4,
  23466. 12,
  23467. 3,
  23468. 13,
  23469. 2,
  23470. 14,
  23471. 1,
  23472. 15,
  23473. 0,
  23474. 16,
  23475. };
  23476. static long _vq_lengthlist__8c1_s_p6_0[] = {
  23477. 1, 3, 3, 5, 5, 8, 8, 8, 8, 9, 9,10,10,11,11,11,
  23478. 11, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11,
  23479. 12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
  23480. 11,12,12, 0, 0, 0, 9, 9, 8, 8,10,10,10,10,11,11,
  23481. 12,12,12,12, 0, 0, 0, 9, 9, 8, 8,10,10,10,10,11,
  23482. 11,12,12,12,12, 0, 0, 0,10,10, 9, 9,10,10,10,10,
  23483. 11,11,12,12,13,13, 0, 0, 0,10,10, 9, 9,10,10,10,
  23484. 10,11,11,12,12,13,13, 0, 0, 0,11,11, 9, 9,10,10,
  23485. 10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
  23486. 10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
  23487. 10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0, 9,
  23488. 9,10,10,11,11,12,11,12,12,13,13, 0, 0, 0, 0, 0,
  23489. 10,10,11,11,11,11,12,12,13,12,13,13, 0, 0, 0, 0,
  23490. 0, 0, 0,11,10,11,11,12,12,13,13,13,13, 0, 0, 0,
  23491. 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0, 0,
  23492. 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,13, 0,
  23493. 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
  23494. 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
  23495. 14,
  23496. };
  23497. static float _vq_quantthresh__8c1_s_p6_0[] = {
  23498. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  23499. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  23500. };
  23501. static long _vq_quantmap__8c1_s_p6_0[] = {
  23502. 15, 13, 11, 9, 7, 5, 3, 1,
  23503. 0, 2, 4, 6, 8, 10, 12, 14,
  23504. 16,
  23505. };
  23506. static encode_aux_threshmatch _vq_auxt__8c1_s_p6_0 = {
  23507. _vq_quantthresh__8c1_s_p6_0,
  23508. _vq_quantmap__8c1_s_p6_0,
  23509. 17,
  23510. 17
  23511. };
  23512. static static_codebook _8c1_s_p6_0 = {
  23513. 2, 289,
  23514. _vq_lengthlist__8c1_s_p6_0,
  23515. 1, -529530880, 1611661312, 5, 0,
  23516. _vq_quantlist__8c1_s_p6_0,
  23517. NULL,
  23518. &_vq_auxt__8c1_s_p6_0,
  23519. NULL,
  23520. 0
  23521. };
  23522. static long _vq_quantlist__8c1_s_p7_0[] = {
  23523. 1,
  23524. 0,
  23525. 2,
  23526. };
  23527. static long _vq_lengthlist__8c1_s_p7_0[] = {
  23528. 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
  23529. 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
  23530. 10,11,10,10, 6, 9, 9,10, 9,10,11,10,10, 6, 9, 9,
  23531. 10, 9, 9,11, 9,10, 7,10,10,11,11,11,11,10,10, 6,
  23532. 9, 9,10,10,10,11, 9, 9, 6, 9, 9,10,10,10,10, 9,
  23533. 9,
  23534. };
  23535. static float _vq_quantthresh__8c1_s_p7_0[] = {
  23536. -5.5, 5.5,
  23537. };
  23538. static long _vq_quantmap__8c1_s_p7_0[] = {
  23539. 1, 0, 2,
  23540. };
  23541. static encode_aux_threshmatch _vq_auxt__8c1_s_p7_0 = {
  23542. _vq_quantthresh__8c1_s_p7_0,
  23543. _vq_quantmap__8c1_s_p7_0,
  23544. 3,
  23545. 3
  23546. };
  23547. static static_codebook _8c1_s_p7_0 = {
  23548. 4, 81,
  23549. _vq_lengthlist__8c1_s_p7_0,
  23550. 1, -529137664, 1618345984, 2, 0,
  23551. _vq_quantlist__8c1_s_p7_0,
  23552. NULL,
  23553. &_vq_auxt__8c1_s_p7_0,
  23554. NULL,
  23555. 0
  23556. };
  23557. static long _vq_quantlist__8c1_s_p7_1[] = {
  23558. 5,
  23559. 4,
  23560. 6,
  23561. 3,
  23562. 7,
  23563. 2,
  23564. 8,
  23565. 1,
  23566. 9,
  23567. 0,
  23568. 10,
  23569. };
  23570. static long _vq_lengthlist__8c1_s_p7_1[] = {
  23571. 2, 3, 3, 5, 5, 7, 7, 7, 7, 7, 7,10,10, 9, 7, 7,
  23572. 7, 7, 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8,
  23573. 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
  23574. 7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
  23575. 8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
  23576. 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
  23577. 8, 8, 8,10,10,10,10,10, 8, 8, 8, 8, 8, 8,10,10,
  23578. 10,10,10, 8, 8, 8, 8, 8, 8,
  23579. };
  23580. static float _vq_quantthresh__8c1_s_p7_1[] = {
  23581. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  23582. 3.5, 4.5,
  23583. };
  23584. static long _vq_quantmap__8c1_s_p7_1[] = {
  23585. 9, 7, 5, 3, 1, 0, 2, 4,
  23586. 6, 8, 10,
  23587. };
  23588. static encode_aux_threshmatch _vq_auxt__8c1_s_p7_1 = {
  23589. _vq_quantthresh__8c1_s_p7_1,
  23590. _vq_quantmap__8c1_s_p7_1,
  23591. 11,
  23592. 11
  23593. };
  23594. static static_codebook _8c1_s_p7_1 = {
  23595. 2, 121,
  23596. _vq_lengthlist__8c1_s_p7_1,
  23597. 1, -531365888, 1611661312, 4, 0,
  23598. _vq_quantlist__8c1_s_p7_1,
  23599. NULL,
  23600. &_vq_auxt__8c1_s_p7_1,
  23601. NULL,
  23602. 0
  23603. };
  23604. static long _vq_quantlist__8c1_s_p8_0[] = {
  23605. 6,
  23606. 5,
  23607. 7,
  23608. 4,
  23609. 8,
  23610. 3,
  23611. 9,
  23612. 2,
  23613. 10,
  23614. 1,
  23615. 11,
  23616. 0,
  23617. 12,
  23618. };
  23619. static long _vq_lengthlist__8c1_s_p8_0[] = {
  23620. 1, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5,
  23621. 7, 7, 8, 8, 8, 8, 9,10,11,11, 7, 5, 5, 7, 7, 8,
  23622. 8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
  23623. 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
  23624. 11, 0,12,12, 9, 9, 9, 9,10, 9,10,11,11,11, 0,13,
  23625. 12, 9, 8, 9, 9,10,10,11,11,12,11, 0, 0, 0, 9, 9,
  23626. 9, 9,10,10,11,11,12,12, 0, 0, 0,10,10, 9, 9,10,
  23627. 10,11,11,12,12, 0, 0, 0,13,13,10,10,11,11,12,11,
  23628. 13,12, 0, 0, 0,14,14,10,10,11,10,11,11,12,12, 0,
  23629. 0, 0, 0, 0,12,12,11,11,12,12,13,13, 0, 0, 0, 0,
  23630. 0,12,12,11,10,12,11,13,12,
  23631. };
  23632. static float _vq_quantthresh__8c1_s_p8_0[] = {
  23633. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  23634. 12.5, 17.5, 22.5, 27.5,
  23635. };
  23636. static long _vq_quantmap__8c1_s_p8_0[] = {
  23637. 11, 9, 7, 5, 3, 1, 0, 2,
  23638. 4, 6, 8, 10, 12,
  23639. };
  23640. static encode_aux_threshmatch _vq_auxt__8c1_s_p8_0 = {
  23641. _vq_quantthresh__8c1_s_p8_0,
  23642. _vq_quantmap__8c1_s_p8_0,
  23643. 13,
  23644. 13
  23645. };
  23646. static static_codebook _8c1_s_p8_0 = {
  23647. 2, 169,
  23648. _vq_lengthlist__8c1_s_p8_0,
  23649. 1, -526516224, 1616117760, 4, 0,
  23650. _vq_quantlist__8c1_s_p8_0,
  23651. NULL,
  23652. &_vq_auxt__8c1_s_p8_0,
  23653. NULL,
  23654. 0
  23655. };
  23656. static long _vq_quantlist__8c1_s_p8_1[] = {
  23657. 2,
  23658. 1,
  23659. 3,
  23660. 0,
  23661. 4,
  23662. };
  23663. static long _vq_lengthlist__8c1_s_p8_1[] = {
  23664. 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
  23665. 6, 6, 5, 5, 6, 6, 6, 5, 5,
  23666. };
  23667. static float _vq_quantthresh__8c1_s_p8_1[] = {
  23668. -1.5, -0.5, 0.5, 1.5,
  23669. };
  23670. static long _vq_quantmap__8c1_s_p8_1[] = {
  23671. 3, 1, 0, 2, 4,
  23672. };
  23673. static encode_aux_threshmatch _vq_auxt__8c1_s_p8_1 = {
  23674. _vq_quantthresh__8c1_s_p8_1,
  23675. _vq_quantmap__8c1_s_p8_1,
  23676. 5,
  23677. 5
  23678. };
  23679. static static_codebook _8c1_s_p8_1 = {
  23680. 2, 25,
  23681. _vq_lengthlist__8c1_s_p8_1,
  23682. 1, -533725184, 1611661312, 3, 0,
  23683. _vq_quantlist__8c1_s_p8_1,
  23684. NULL,
  23685. &_vq_auxt__8c1_s_p8_1,
  23686. NULL,
  23687. 0
  23688. };
  23689. static long _vq_quantlist__8c1_s_p9_0[] = {
  23690. 6,
  23691. 5,
  23692. 7,
  23693. 4,
  23694. 8,
  23695. 3,
  23696. 9,
  23697. 2,
  23698. 10,
  23699. 1,
  23700. 11,
  23701. 0,
  23702. 12,
  23703. };
  23704. static long _vq_lengthlist__8c1_s_p9_0[] = {
  23705. 1, 3, 3,10,10,10,10,10,10,10,10,10,10, 5, 6, 6,
  23706. 10,10,10,10,10,10,10,10,10,10, 6, 7, 8,10,10,10,
  23707. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  23708. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  23709. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  23710. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  23711. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  23712. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  23713. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  23714. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  23715. 10,10,10,10,10, 9, 9, 9, 9,
  23716. };
  23717. static float _vq_quantthresh__8c1_s_p9_0[] = {
  23718. -1732.5, -1417.5, -1102.5, -787.5, -472.5, -157.5, 157.5, 472.5,
  23719. 787.5, 1102.5, 1417.5, 1732.5,
  23720. };
  23721. static long _vq_quantmap__8c1_s_p9_0[] = {
  23722. 11, 9, 7, 5, 3, 1, 0, 2,
  23723. 4, 6, 8, 10, 12,
  23724. };
  23725. static encode_aux_threshmatch _vq_auxt__8c1_s_p9_0 = {
  23726. _vq_quantthresh__8c1_s_p9_0,
  23727. _vq_quantmap__8c1_s_p9_0,
  23728. 13,
  23729. 13
  23730. };
  23731. static static_codebook _8c1_s_p9_0 = {
  23732. 2, 169,
  23733. _vq_lengthlist__8c1_s_p9_0,
  23734. 1, -513964032, 1628680192, 4, 0,
  23735. _vq_quantlist__8c1_s_p9_0,
  23736. NULL,
  23737. &_vq_auxt__8c1_s_p9_0,
  23738. NULL,
  23739. 0
  23740. };
  23741. static long _vq_quantlist__8c1_s_p9_1[] = {
  23742. 7,
  23743. 6,
  23744. 8,
  23745. 5,
  23746. 9,
  23747. 4,
  23748. 10,
  23749. 3,
  23750. 11,
  23751. 2,
  23752. 12,
  23753. 1,
  23754. 13,
  23755. 0,
  23756. 14,
  23757. };
  23758. static long _vq_lengthlist__8c1_s_p9_1[] = {
  23759. 1, 4, 4, 5, 5, 7, 7, 9, 9,11,11,12,12,13,13, 6,
  23760. 5, 5, 6, 6, 9, 9,10,10,12,12,12,13,15,14, 6, 5,
  23761. 5, 7, 7, 9, 9,10,10,12,12,12,13,14,13,17, 7, 7,
  23762. 8, 8,10,10,11,11,12,13,13,13,13,13,17, 7, 7, 8,
  23763. 8,10,10,11,11,13,13,13,13,14,14,17,11,11, 9, 9,
  23764. 11,11,12,12,12,13,13,14,15,13,17,12,12, 9, 9,11,
  23765. 11,12,12,13,13,13,13,14,16,17,17,17,11,12,12,12,
  23766. 13,13,13,14,15,14,15,15,17,17,17,12,12,11,11,13,
  23767. 13,14,14,15,14,15,15,17,17,17,15,15,13,13,14,14,
  23768. 15,14,15,15,16,15,17,17,17,15,15,13,13,13,14,14,
  23769. 15,15,15,15,16,17,17,17,17,16,14,15,14,14,15,14,
  23770. 14,15,15,15,17,17,17,17,17,14,14,16,14,15,15,15,
  23771. 15,15,15,17,17,17,17,17,17,16,16,15,17,15,15,14,
  23772. 17,15,17,16,17,17,17,17,16,15,14,15,15,15,15,15,
  23773. 15,
  23774. };
  23775. static float _vq_quantthresh__8c1_s_p9_1[] = {
  23776. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  23777. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  23778. };
  23779. static long _vq_quantmap__8c1_s_p9_1[] = {
  23780. 13, 11, 9, 7, 5, 3, 1, 0,
  23781. 2, 4, 6, 8, 10, 12, 14,
  23782. };
  23783. static encode_aux_threshmatch _vq_auxt__8c1_s_p9_1 = {
  23784. _vq_quantthresh__8c1_s_p9_1,
  23785. _vq_quantmap__8c1_s_p9_1,
  23786. 15,
  23787. 15
  23788. };
  23789. static static_codebook _8c1_s_p9_1 = {
  23790. 2, 225,
  23791. _vq_lengthlist__8c1_s_p9_1,
  23792. 1, -520986624, 1620377600, 4, 0,
  23793. _vq_quantlist__8c1_s_p9_1,
  23794. NULL,
  23795. &_vq_auxt__8c1_s_p9_1,
  23796. NULL,
  23797. 0
  23798. };
  23799. static long _vq_quantlist__8c1_s_p9_2[] = {
  23800. 10,
  23801. 9,
  23802. 11,
  23803. 8,
  23804. 12,
  23805. 7,
  23806. 13,
  23807. 6,
  23808. 14,
  23809. 5,
  23810. 15,
  23811. 4,
  23812. 16,
  23813. 3,
  23814. 17,
  23815. 2,
  23816. 18,
  23817. 1,
  23818. 19,
  23819. 0,
  23820. 20,
  23821. };
  23822. static long _vq_lengthlist__8c1_s_p9_2[] = {
  23823. 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9,
  23824. 9, 9, 9, 9, 9,11,11,12, 7, 7, 7, 7, 8, 8, 9, 9,
  23825. 9, 9,10,10,10,10,10,10,10,10,11,11,11, 7, 7, 7,
  23826. 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,11,
  23827. 11,12, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,
  23828. 10,10,10,10,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
  23829. 9,10,10,10,10,10,10,10,10,11,11,11, 8, 8, 8, 8,
  23830. 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,11,11,
  23831. 11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10,
  23832. 10,10,10,11,12,11, 9, 9, 8, 9, 9, 9, 9, 9,10,10,
  23833. 10,10,10,10,10,10,10,10,11,11,11,11,11, 8, 8, 9,
  23834. 9, 9, 9,10,10,10,10,10,10,10,10,10,10,11,12,11,
  23835. 12,11, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
  23836. 10,10,11,11,11,11,11, 9, 9, 9, 9,10,10,10,10,10,
  23837. 10,10,10,10,10,10,10,12,11,12,11,11, 9, 9, 9,10,
  23838. 10,10,10,10,10,10,10,10,10,10,10,10,12,11,11,11,
  23839. 11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
  23840. 11,11,11,12,11,11,12,11,10,10,10,10,10,10,10,10,
  23841. 10,10,10,10,11,10,11,11,11,11,11,11,11,10,10,10,
  23842. 10,10,10,10,10,10,10,10,10,10,10,11,11,12,11,12,
  23843. 11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  23844. 11,11,12,11,12,11,11,11,11,10,10,10,10,10,10,10,
  23845. 10,10,10,10,10,11,11,12,11,11,12,11,11,12,10,10,
  23846. 11,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
  23847. 11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,12,
  23848. 12,11,12,11,11,12,12,12,11,11,10,10,10,10,10,10,
  23849. 10,10,10,11,12,12,11,12,12,11,12,11,11,11,11,10,
  23850. 10,10,10,10,10,10,10,10,10,
  23851. };
  23852. static float _vq_quantthresh__8c1_s_p9_2[] = {
  23853. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  23854. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  23855. 6.5, 7.5, 8.5, 9.5,
  23856. };
  23857. static long _vq_quantmap__8c1_s_p9_2[] = {
  23858. 19, 17, 15, 13, 11, 9, 7, 5,
  23859. 3, 1, 0, 2, 4, 6, 8, 10,
  23860. 12, 14, 16, 18, 20,
  23861. };
  23862. static encode_aux_threshmatch _vq_auxt__8c1_s_p9_2 = {
  23863. _vq_quantthresh__8c1_s_p9_2,
  23864. _vq_quantmap__8c1_s_p9_2,
  23865. 21,
  23866. 21
  23867. };
  23868. static static_codebook _8c1_s_p9_2 = {
  23869. 2, 441,
  23870. _vq_lengthlist__8c1_s_p9_2,
  23871. 1, -529268736, 1611661312, 5, 0,
  23872. _vq_quantlist__8c1_s_p9_2,
  23873. NULL,
  23874. &_vq_auxt__8c1_s_p9_2,
  23875. NULL,
  23876. 0
  23877. };
  23878. static long _huff_lengthlist__8c1_s_single[] = {
  23879. 4, 6,18, 8,11, 8, 8, 9, 9,10, 4, 4,18, 5, 9, 5,
  23880. 6, 7, 8,10,18,18,18,18,17,17,17,17,17,17, 7, 5,
  23881. 17, 6,11, 6, 7, 8, 9,12,12, 9,17,12, 8, 8, 9,10,
  23882. 10,13, 7, 5,17, 6, 8, 4, 5, 6, 8,10, 6, 5,17, 6,
  23883. 8, 5, 4, 5, 7, 9, 7, 7,17, 8, 9, 6, 5, 5, 6, 8,
  23884. 8, 8,17, 9,11, 8, 6, 6, 6, 7, 9,10,17,12,12,10,
  23885. 9, 7, 7, 8,
  23886. };
  23887. static static_codebook _huff_book__8c1_s_single = {
  23888. 2, 100,
  23889. _huff_lengthlist__8c1_s_single,
  23890. 0, 0, 0, 0, 0,
  23891. NULL,
  23892. NULL,
  23893. NULL,
  23894. NULL,
  23895. 0
  23896. };
  23897. /***** residue backends *********************************************/
  23898. static vorbis_info_residue0 _residue_44_mid={
  23899. 0,-1, -1, 10,-1,
  23900. /* 0 1 2 3 4 5 6 7 8 */
  23901. {0},
  23902. {-1},
  23903. { .5, 1.5, 1.5, 2.5, 2.5, 4.5, 8.5, 16.5, 32.5},
  23904. { .5, .5, 999., .5, 999., 4.5, 8.5, 16.5, 32.5},
  23905. };
  23906. static vorbis_info_residue0 _residue_44_high={
  23907. 0,-1, -1, 10,-1,
  23908. /* 0 1 2 3 4 5 6 7 8 */
  23909. {0},
  23910. {-1},
  23911. { .5, 1.5, 2.5, 4.5, 8.5, 16.5, 32.5, 71.5,157.5},
  23912. { .5, 1.5, 2.5, 3.5, 4.5, 8.5, 16.5, 71.5,157.5},
  23913. };
  23914. static static_bookblock _resbook_44s_0={
  23915. {
  23916. {0},{0,0,&_44c0_s_p1_0},{0,0,&_44c0_s_p2_0},{0,0,&_44c0_s_p3_0},
  23917. {0,0,&_44c0_s_p4_0},{0,0,&_44c0_s_p5_0},{0,0,&_44c0_s_p6_0},
  23918. {&_44c0_s_p7_0,&_44c0_s_p7_1},{&_44c0_s_p8_0,&_44c0_s_p8_1},
  23919. {&_44c0_s_p9_0,&_44c0_s_p9_1,&_44c0_s_p9_2}
  23920. }
  23921. };
  23922. static static_bookblock _resbook_44sm_0={
  23923. {
  23924. {0},{0,0,&_44c0_sm_p1_0},{0,0,&_44c0_sm_p2_0},{0,0,&_44c0_sm_p3_0},
  23925. {0,0,&_44c0_sm_p4_0},{0,0,&_44c0_sm_p5_0},{0,0,&_44c0_sm_p6_0},
  23926. {&_44c0_sm_p7_0,&_44c0_sm_p7_1},{&_44c0_sm_p8_0,&_44c0_sm_p8_1},
  23927. {&_44c0_sm_p9_0,&_44c0_sm_p9_1,&_44c0_sm_p9_2}
  23928. }
  23929. };
  23930. static static_bookblock _resbook_44s_1={
  23931. {
  23932. {0},{0,0,&_44c1_s_p1_0},{0,0,&_44c1_s_p2_0},{0,0,&_44c1_s_p3_0},
  23933. {0,0,&_44c1_s_p4_0},{0,0,&_44c1_s_p5_0},{0,0,&_44c1_s_p6_0},
  23934. {&_44c1_s_p7_0,&_44c1_s_p7_1},{&_44c1_s_p8_0,&_44c1_s_p8_1},
  23935. {&_44c1_s_p9_0,&_44c1_s_p9_1,&_44c1_s_p9_2}
  23936. }
  23937. };
  23938. static static_bookblock _resbook_44sm_1={
  23939. {
  23940. {0},{0,0,&_44c1_sm_p1_0},{0,0,&_44c1_sm_p2_0},{0,0,&_44c1_sm_p3_0},
  23941. {0,0,&_44c1_sm_p4_0},{0,0,&_44c1_sm_p5_0},{0,0,&_44c1_sm_p6_0},
  23942. {&_44c1_sm_p7_0,&_44c1_sm_p7_1},{&_44c1_sm_p8_0,&_44c1_sm_p8_1},
  23943. {&_44c1_sm_p9_0,&_44c1_sm_p9_1,&_44c1_sm_p9_2}
  23944. }
  23945. };
  23946. static static_bookblock _resbook_44s_2={
  23947. {
  23948. {0},{0,0,&_44c2_s_p1_0},{0,0,&_44c2_s_p2_0},{0,0,&_44c2_s_p3_0},
  23949. {0,0,&_44c2_s_p4_0},{0,0,&_44c2_s_p5_0},{0,0,&_44c2_s_p6_0},
  23950. {&_44c2_s_p7_0,&_44c2_s_p7_1},{&_44c2_s_p8_0,&_44c2_s_p8_1},
  23951. {&_44c2_s_p9_0,&_44c2_s_p9_1,&_44c2_s_p9_2}
  23952. }
  23953. };
  23954. static static_bookblock _resbook_44s_3={
  23955. {
  23956. {0},{0,0,&_44c3_s_p1_0},{0,0,&_44c3_s_p2_0},{0,0,&_44c3_s_p3_0},
  23957. {0,0,&_44c3_s_p4_0},{0,0,&_44c3_s_p5_0},{0,0,&_44c3_s_p6_0},
  23958. {&_44c3_s_p7_0,&_44c3_s_p7_1},{&_44c3_s_p8_0,&_44c3_s_p8_1},
  23959. {&_44c3_s_p9_0,&_44c3_s_p9_1,&_44c3_s_p9_2}
  23960. }
  23961. };
  23962. static static_bookblock _resbook_44s_4={
  23963. {
  23964. {0},{0,0,&_44c4_s_p1_0},{0,0,&_44c4_s_p2_0},{0,0,&_44c4_s_p3_0},
  23965. {0,0,&_44c4_s_p4_0},{0,0,&_44c4_s_p5_0},{0,0,&_44c4_s_p6_0},
  23966. {&_44c4_s_p7_0,&_44c4_s_p7_1},{&_44c4_s_p8_0,&_44c4_s_p8_1},
  23967. {&_44c4_s_p9_0,&_44c4_s_p9_1,&_44c4_s_p9_2}
  23968. }
  23969. };
  23970. static static_bookblock _resbook_44s_5={
  23971. {
  23972. {0},{0,0,&_44c5_s_p1_0},{0,0,&_44c5_s_p2_0},{0,0,&_44c5_s_p3_0},
  23973. {0,0,&_44c5_s_p4_0},{0,0,&_44c5_s_p5_0},{0,0,&_44c5_s_p6_0},
  23974. {&_44c5_s_p7_0,&_44c5_s_p7_1},{&_44c5_s_p8_0,&_44c5_s_p8_1},
  23975. {&_44c5_s_p9_0,&_44c5_s_p9_1,&_44c5_s_p9_2}
  23976. }
  23977. };
  23978. static static_bookblock _resbook_44s_6={
  23979. {
  23980. {0},{0,0,&_44c6_s_p1_0},{0,0,&_44c6_s_p2_0},{0,0,&_44c6_s_p3_0},
  23981. {0,0,&_44c6_s_p4_0},
  23982. {&_44c6_s_p5_0,&_44c6_s_p5_1},
  23983. {&_44c6_s_p6_0,&_44c6_s_p6_1},
  23984. {&_44c6_s_p7_0,&_44c6_s_p7_1},
  23985. {&_44c6_s_p8_0,&_44c6_s_p8_1},
  23986. {&_44c6_s_p9_0,&_44c6_s_p9_1,&_44c6_s_p9_2}
  23987. }
  23988. };
  23989. static static_bookblock _resbook_44s_7={
  23990. {
  23991. {0},{0,0,&_44c7_s_p1_0},{0,0,&_44c7_s_p2_0},{0,0,&_44c7_s_p3_0},
  23992. {0,0,&_44c7_s_p4_0},
  23993. {&_44c7_s_p5_0,&_44c7_s_p5_1},
  23994. {&_44c7_s_p6_0,&_44c7_s_p6_1},
  23995. {&_44c7_s_p7_0,&_44c7_s_p7_1},
  23996. {&_44c7_s_p8_0,&_44c7_s_p8_1},
  23997. {&_44c7_s_p9_0,&_44c7_s_p9_1,&_44c7_s_p9_2}
  23998. }
  23999. };
  24000. static static_bookblock _resbook_44s_8={
  24001. {
  24002. {0},{0,0,&_44c8_s_p1_0},{0,0,&_44c8_s_p2_0},{0,0,&_44c8_s_p3_0},
  24003. {0,0,&_44c8_s_p4_0},
  24004. {&_44c8_s_p5_0,&_44c8_s_p5_1},
  24005. {&_44c8_s_p6_0,&_44c8_s_p6_1},
  24006. {&_44c8_s_p7_0,&_44c8_s_p7_1},
  24007. {&_44c8_s_p8_0,&_44c8_s_p8_1},
  24008. {&_44c8_s_p9_0,&_44c8_s_p9_1,&_44c8_s_p9_2}
  24009. }
  24010. };
  24011. static static_bookblock _resbook_44s_9={
  24012. {
  24013. {0},{0,0,&_44c9_s_p1_0},{0,0,&_44c9_s_p2_0},{0,0,&_44c9_s_p3_0},
  24014. {0,0,&_44c9_s_p4_0},
  24015. {&_44c9_s_p5_0,&_44c9_s_p5_1},
  24016. {&_44c9_s_p6_0,&_44c9_s_p6_1},
  24017. {&_44c9_s_p7_0,&_44c9_s_p7_1},
  24018. {&_44c9_s_p8_0,&_44c9_s_p8_1},
  24019. {&_44c9_s_p9_0,&_44c9_s_p9_1,&_44c9_s_p9_2}
  24020. }
  24021. };
  24022. static vorbis_residue_template _res_44s_0[]={
  24023. {2,0, &_residue_44_mid,
  24024. &_huff_book__44c0_s_short,&_huff_book__44c0_sm_short,
  24025. &_resbook_44s_0,&_resbook_44sm_0},
  24026. {2,0, &_residue_44_mid,
  24027. &_huff_book__44c0_s_long,&_huff_book__44c0_sm_long,
  24028. &_resbook_44s_0,&_resbook_44sm_0}
  24029. };
  24030. static vorbis_residue_template _res_44s_1[]={
  24031. {2,0, &_residue_44_mid,
  24032. &_huff_book__44c1_s_short,&_huff_book__44c1_sm_short,
  24033. &_resbook_44s_1,&_resbook_44sm_1},
  24034. {2,0, &_residue_44_mid,
  24035. &_huff_book__44c1_s_long,&_huff_book__44c1_sm_long,
  24036. &_resbook_44s_1,&_resbook_44sm_1}
  24037. };
  24038. static vorbis_residue_template _res_44s_2[]={
  24039. {2,0, &_residue_44_mid,
  24040. &_huff_book__44c2_s_short,&_huff_book__44c2_s_short,
  24041. &_resbook_44s_2,&_resbook_44s_2},
  24042. {2,0, &_residue_44_mid,
  24043. &_huff_book__44c2_s_long,&_huff_book__44c2_s_long,
  24044. &_resbook_44s_2,&_resbook_44s_2}
  24045. };
  24046. static vorbis_residue_template _res_44s_3[]={
  24047. {2,0, &_residue_44_mid,
  24048. &_huff_book__44c3_s_short,&_huff_book__44c3_s_short,
  24049. &_resbook_44s_3,&_resbook_44s_3},
  24050. {2,0, &_residue_44_mid,
  24051. &_huff_book__44c3_s_long,&_huff_book__44c3_s_long,
  24052. &_resbook_44s_3,&_resbook_44s_3}
  24053. };
  24054. static vorbis_residue_template _res_44s_4[]={
  24055. {2,0, &_residue_44_mid,
  24056. &_huff_book__44c4_s_short,&_huff_book__44c4_s_short,
  24057. &_resbook_44s_4,&_resbook_44s_4},
  24058. {2,0, &_residue_44_mid,
  24059. &_huff_book__44c4_s_long,&_huff_book__44c4_s_long,
  24060. &_resbook_44s_4,&_resbook_44s_4}
  24061. };
  24062. static vorbis_residue_template _res_44s_5[]={
  24063. {2,0, &_residue_44_mid,
  24064. &_huff_book__44c5_s_short,&_huff_book__44c5_s_short,
  24065. &_resbook_44s_5,&_resbook_44s_5},
  24066. {2,0, &_residue_44_mid,
  24067. &_huff_book__44c5_s_long,&_huff_book__44c5_s_long,
  24068. &_resbook_44s_5,&_resbook_44s_5}
  24069. };
  24070. static vorbis_residue_template _res_44s_6[]={
  24071. {2,0, &_residue_44_high,
  24072. &_huff_book__44c6_s_short,&_huff_book__44c6_s_short,
  24073. &_resbook_44s_6,&_resbook_44s_6},
  24074. {2,0, &_residue_44_high,
  24075. &_huff_book__44c6_s_long,&_huff_book__44c6_s_long,
  24076. &_resbook_44s_6,&_resbook_44s_6}
  24077. };
  24078. static vorbis_residue_template _res_44s_7[]={
  24079. {2,0, &_residue_44_high,
  24080. &_huff_book__44c7_s_short,&_huff_book__44c7_s_short,
  24081. &_resbook_44s_7,&_resbook_44s_7},
  24082. {2,0, &_residue_44_high,
  24083. &_huff_book__44c7_s_long,&_huff_book__44c7_s_long,
  24084. &_resbook_44s_7,&_resbook_44s_7}
  24085. };
  24086. static vorbis_residue_template _res_44s_8[]={
  24087. {2,0, &_residue_44_high,
  24088. &_huff_book__44c8_s_short,&_huff_book__44c8_s_short,
  24089. &_resbook_44s_8,&_resbook_44s_8},
  24090. {2,0, &_residue_44_high,
  24091. &_huff_book__44c8_s_long,&_huff_book__44c8_s_long,
  24092. &_resbook_44s_8,&_resbook_44s_8}
  24093. };
  24094. static vorbis_residue_template _res_44s_9[]={
  24095. {2,0, &_residue_44_high,
  24096. &_huff_book__44c9_s_short,&_huff_book__44c9_s_short,
  24097. &_resbook_44s_9,&_resbook_44s_9},
  24098. {2,0, &_residue_44_high,
  24099. &_huff_book__44c9_s_long,&_huff_book__44c9_s_long,
  24100. &_resbook_44s_9,&_resbook_44s_9}
  24101. };
  24102. static vorbis_mapping_template _mapres_template_44_stereo[]={
  24103. { _map_nominal, _res_44s_0 }, /* 0 */
  24104. { _map_nominal, _res_44s_1 }, /* 1 */
  24105. { _map_nominal, _res_44s_2 }, /* 2 */
  24106. { _map_nominal, _res_44s_3 }, /* 3 */
  24107. { _map_nominal, _res_44s_4 }, /* 4 */
  24108. { _map_nominal, _res_44s_5 }, /* 5 */
  24109. { _map_nominal, _res_44s_6 }, /* 6 */
  24110. { _map_nominal, _res_44s_7 }, /* 7 */
  24111. { _map_nominal, _res_44s_8 }, /* 8 */
  24112. { _map_nominal, _res_44s_9 }, /* 9 */
  24113. };
  24114. /********************************************************************
  24115. * *
  24116. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  24117. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  24118. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  24119. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  24120. * *
  24121. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  24122. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  24123. * *
  24124. ********************************************************************
  24125. function: key psychoacoustic settings for 44.1/48kHz
  24126. last mod: $Id: psych_44.h,v 1.29 2003/09/02 07:32:17 xiphmont Exp $
  24127. ********************************************************************/
  24128. /* preecho trigger settings *****************************************/
  24129. static vorbis_info_psy_global _psy_global_44[5]={
  24130. {8, /* lines per eighth octave */
  24131. {20.f,14.f,12.f,12.f,12.f,12.f,12.f},
  24132. {-60.f,-30.f,-40.f,-40.f,-40.f,-40.f,-40.f}, 2,-75.f,
  24133. -6.f,
  24134. {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
  24135. },
  24136. {8, /* lines per eighth octave */
  24137. {14.f,10.f,10.f,10.f,10.f,10.f,10.f},
  24138. {-40.f,-30.f,-25.f,-25.f,-25.f,-25.f,-25.f}, 2,-80.f,
  24139. -6.f,
  24140. {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
  24141. },
  24142. {8, /* lines per eighth octave */
  24143. {12.f,10.f,10.f,10.f,10.f,10.f,10.f},
  24144. {-20.f,-20.f,-15.f,-15.f,-15.f,-15.f,-15.f}, 0,-80.f,
  24145. -6.f,
  24146. {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
  24147. },
  24148. {8, /* lines per eighth octave */
  24149. {10.f,8.f,8.f,8.f,8.f,8.f,8.f},
  24150. {-20.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-80.f,
  24151. -6.f,
  24152. {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
  24153. },
  24154. {8, /* lines per eighth octave */
  24155. {10.f,6.f,6.f,6.f,6.f,6.f,6.f},
  24156. {-15.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-85.f,
  24157. -6.f,
  24158. {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
  24159. },
  24160. };
  24161. /* noise compander lookups * low, mid, high quality ****************/
  24162. static compandblock _psy_compand_44[6]={
  24163. /* sub-mode Z short */
  24164. {{
  24165. 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
  24166. 8, 9,10,11,12,13,14, 15, /* 15dB */
  24167. 16,17,18,19,20,21,22, 23, /* 23dB */
  24168. 24,25,26,27,28,29,30, 31, /* 31dB */
  24169. 32,33,34,35,36,37,38, 39, /* 39dB */
  24170. }},
  24171. /* mode_Z nominal short*/
  24172. {{
  24173. 0, 1, 2, 3, 4, 5, 6, 6, /* 7dB */
  24174. 7, 7, 7, 7, 6, 6, 6, 7, /* 15dB */
  24175. 7, 8, 9,10,11,12,13, 14, /* 23dB */
  24176. 15,16,17,17,17,18,18, 19, /* 31dB */
  24177. 19,19,20,21,22,23,24, 25, /* 39dB */
  24178. }},
  24179. /* mode A short */
  24180. {{
  24181. 0, 1, 2, 3, 4, 5, 5, 5, /* 7dB */
  24182. 6, 6, 6, 5, 4, 4, 4, 4, /* 15dB */
  24183. 4, 4, 5, 5, 5, 6, 6, 6, /* 23dB */
  24184. 7, 7, 7, 8, 8, 8, 9, 10, /* 31dB */
  24185. 11,12,13,14,15,16,17, 18, /* 39dB */
  24186. }},
  24187. /* sub-mode Z long */
  24188. {{
  24189. 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
  24190. 8, 9,10,11,12,13,14, 15, /* 15dB */
  24191. 16,17,18,19,20,21,22, 23, /* 23dB */
  24192. 24,25,26,27,28,29,30, 31, /* 31dB */
  24193. 32,33,34,35,36,37,38, 39, /* 39dB */
  24194. }},
  24195. /* mode_Z nominal long */
  24196. {{
  24197. 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
  24198. 8, 9,10,11,12,12,13, 13, /* 15dB */
  24199. 13,14,14,14,15,15,15, 15, /* 23dB */
  24200. 16,16,17,17,17,18,18, 19, /* 31dB */
  24201. 19,19,20,21,22,23,24, 25, /* 39dB */
  24202. }},
  24203. /* mode A long */
  24204. {{
  24205. 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
  24206. 8, 8, 7, 6, 5, 4, 4, 4, /* 15dB */
  24207. 4, 4, 5, 5, 5, 6, 6, 6, /* 23dB */
  24208. 7, 7, 7, 8, 8, 8, 9, 10, /* 31dB */
  24209. 11,12,13,14,15,16,17, 18, /* 39dB */
  24210. }}
  24211. };
  24212. /* tonal masking curve level adjustments *************************/
  24213. static vp_adjblock _vp_tonemask_adj_longblock[11]={
  24214. /* adjust for mode zero */
  24215. /* 63 125 250 500 1 2 4 8 16 */
  24216. {{-15,-15,-15,-15,-10, -8, -4,-2, 0, 0, 0,10, 0, 0, 0, 0, 0}}, /* 0 */
  24217. {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 5, 0, 0, 0, 0, 0}}, /* 1 */
  24218. {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
  24219. {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 3 */
  24220. {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 4 */
  24221. {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 5 */
  24222. {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 6 */
  24223. {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 7 */
  24224. {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 8 */
  24225. {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 9 */
  24226. {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 10 */
  24227. };
  24228. static vp_adjblock _vp_tonemask_adj_otherblock[11]={
  24229. /* adjust for mode zero */
  24230. /* 63 125 250 500 1 2 4 8 16 */
  24231. {{-20,-20,-20,-20,-14,-12,-10, -8, -4, 0, 0,10, 0, 0, 0, 0, 0}}, /* 0 */
  24232. {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 5, 0, 0, 0, 0, 0}}, /* 1 */
  24233. {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
  24234. {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 3 */
  24235. {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 4 */
  24236. {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 5 */
  24237. {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 6 */
  24238. {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 7 */
  24239. {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 8 */
  24240. {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 9 */
  24241. {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 10 */
  24242. };
  24243. static noise3 _psy_noisebias_trans_low[2]={
  24244. /* 63 125 250 500 1k 2k 4k 8k 16k*/
  24245. /* 0 */
  24246. {{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
  24247. {-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2, 2, 2, 4, 8, 8, 15},
  24248. {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
  24249. /* 1 */
  24250. {{{-15,-15,-15,-15,-15,-10, -5, 0, 2, 2, 6, 6, 6, 8, 10, 12, 15},
  24251. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, 0, 0, 0, 2, 4, 10},
  24252. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4, -2}}},
  24253. };
  24254. static noise3 _psy_noisebias_long_low[2]={
  24255. /*63 125 250 500 1k 2k 4k 8k 16k*/
  24256. /* 0 */
  24257. {{{-10,-10,-10,-10,-10, -4, 0, 0, 0, 6, 6, 6, 6, 10, 10, 12, 20},
  24258. {-20,-20,-20,-20,-20,-20,-10, -2, 0, 0, 0, 0, 0, 2, 4, 6, 15},
  24259. {-20,-20,-20,-20,-20,-20,-20,-10, -6, -6, -6, -6, -6, -4, -4, -4, -2}}},
  24260. /* 1 */
  24261. {{{-10,-10,-10,-10,-10,-10, -8, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
  24262. {-20,-20,-20,-20,-20,-20,-20,-14, -8, -2, 0, 0, 0, 0, 2, 4, 10},
  24263. {-20,-20,-20,-20,-20,-20,-20,-14, -6, -6, -6, -6, -6, -4, -4, -4, -2}}},
  24264. };
  24265. static noise3 _psy_noisebias_trans[11]={
  24266. /* 63 125 250 500 1k 2k 4k 8k 16k*/
  24267. /* 0 */
  24268. {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
  24269. {-30,-30,-30,-30,-26,-22,-20,-14, -8, -4, 0, 0, 0, 0, 2, 4, 10},
  24270. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4, -2}}},
  24271. /* 1 */
  24272. {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
  24273. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 8},
  24274. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},
  24275. /* 2 */
  24276. {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
  24277. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 6},
  24278. {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
  24279. /* 3 */
  24280. {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
  24281. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 6},
  24282. {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
  24283. /* 4 */
  24284. {{{-20,-20,-20,-20,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
  24285. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 5},
  24286. {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
  24287. /* 5 */
  24288. {{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
  24289. {-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1, 2},
  24290. {-34,-34,-34,-34,-30,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},
  24291. /* 6 */
  24292. {{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
  24293. {-32,-32,-32,-32,-28,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2, 1},
  24294. {-34,-34,-34,-34,-30,-26,-24,-18,-17,-15,-15,-15,-15,-13,-13,-12, -8}}},
  24295. /* 7 */
  24296. {{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
  24297. {-32,-32,-32,-32,-28,-24,-24,-18,-14,-12,-10, -8, -8, -8, -6, -4, 0},
  24298. {-34,-34,-34,-34,-30,-26,-26,-24,-22,-19,-19,-19,-19,-18,-17,-16,-12}}},
  24299. /* 8 */
  24300. {{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2, 0, 0, 0, 1, 2, 3, 7},
  24301. {-36,-36,-36,-36,-30,-30,-30,-24,-18,-14,-12,-10,-10,-10, -8, -6, -2},
  24302. {-36,-36,-36,-36,-34,-30,-28,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
  24303. /* 9 */
  24304. {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
  24305. {-36,-36,-36,-36,-34,-32,-32,-28,-20,-16,-16,-16,-16,-14,-12,-10, -7},
  24306. {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
  24307. /* 10 */
  24308. {{{-30,-30,-30,-30,-30,-30,-30,-28,-20,-14,-14,-14,-14,-14,-14,-12,-10},
  24309. {-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-30,-30,-30,-30,-30,-30,-20},
  24310. {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
  24311. };
  24312. static noise3 _psy_noisebias_long[11]={
  24313. /*63 125 250 500 1k 2k 4k 8k 16k*/
  24314. /* 0 */
  24315. {{{-10,-10,-10,-10,-10,-10, -8, 2, 2, 2, 4, 4, 5, 5, 5, 8, 10},
  24316. {-20,-20,-20,-20,-20,-20,-20,-14, -6, 0, 0, 0, 0, 0, 2, 4, 10},
  24317. {-20,-20,-20,-20,-20,-20,-20,-14, -8, -6, -6, -6, -6, -4, -4, -4, -2}}},
  24318. /* 1 */
  24319. {{{-10,-10,-10,-10,-10,-10, -8, -4, 0, 2, 4, 4, 5, 5, 5, 8, 10},
  24320. {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 8},
  24321. {-20,-20,-20,-20,-20,-20,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},
  24322. /* 2 */
  24323. {{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
  24324. {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 6},
  24325. {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
  24326. /* 3 */
  24327. {{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
  24328. {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 6},
  24329. {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
  24330. /* 4 */
  24331. {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
  24332. {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 5},
  24333. {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
  24334. /* 5 */
  24335. {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
  24336. {-22,-22,-22,-22,-22,-22,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1, 2},
  24337. {-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},
  24338. /* 6 */
  24339. {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
  24340. {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2, 1},
  24341. {-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12, -8}}},
  24342. /* 7 */
  24343. {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
  24344. {-24,-24,-24,-24,-24,-24,-24,-18,-14,-10, -8, -8, -8, -8, -6, -4, 0},
  24345. {-26,-26,-26,-26,-26,-26,-26,-22,-20,-19,-19,-19,-19,-18,-17,-16,-12}}},
  24346. /* 8 */
  24347. {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 0, 0, 0, 0, 1, 2, 3, 7},
  24348. {-26,-26,-26,-26,-26,-26,-26,-20,-16,-12,-10,-10,-10,-10, -8, -6, -2},
  24349. {-28,-28,-28,-28,-28,-28,-28,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
  24350. /* 9 */
  24351. {{{-22,-22,-22,-22,-22,-22,-22,-18,-14, -8, -4, -4, -4, -4, -4, -2, 2},
  24352. {-26,-26,-26,-26,-26,-26,-26,-22,-18,-16,-16,-16,-16,-14,-12,-10, -7},
  24353. {-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
  24354. /* 10 */
  24355. {{{-24,-24,-24,-24,-24,-24,-24,-24,-24,-18,-14,-14,-14,-14,-14,-12,-10},
  24356. {-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-20},
  24357. {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
  24358. };
  24359. static noise3 _psy_noisebias_impulse[11]={
  24360. /* 63 125 250 500 1k 2k 4k 8k 16k*/
  24361. /* 0 */
  24362. {{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 4, 8, 8, 8, 10, 12, 14, 20},
  24363. {-30,-30,-30,-30,-26,-22,-20,-14, -6, -2, 0, 0, 0, 0, 2, 4, 10},
  24364. {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
  24365. /* 1 */
  24366. {{{-12,-12,-12,-12,-12, -8, -6, -4, 0, 4, 4, 4, 4, 10, 12, 14, 20},
  24367. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -4, -4, -2, -2, -2, -2, 2},
  24368. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8,-10,-10, -8, -8, -8, -6, -4}}},
  24369. /* 2 */
  24370. {{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 8, 10, 10, 16},
  24371. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
  24372. {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
  24373. /* 3 */
  24374. {{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 6, 8, 8, 14},
  24375. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
  24376. {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
  24377. /* 4 */
  24378. {{{-16,-16,-16,-16,-16,-12,-10, -6, -2, 0, 0, 0, 0, 4, 6, 6, 12},
  24379. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
  24380. {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
  24381. /* 5 */
  24382. {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 4, 6, 11},
  24383. {-32,-32,-32,-32,-28,-24,-22,-16,-10, -6, -8, -8, -6, -6, -6, -4, -2},
  24384. {-34,-34,-34,-34,-30,-26,-24,-18,-14,-12,-12,-12,-12,-12,-10, -9, -5}}},
  24385. /* 6 */
  24386. {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 4, 6, 11},
  24387. {-34,-34,-34,-34,-30,-30,-24,-20,-12,-12,-14,-14,-10, -9, -8, -6, -4},
  24388. {-34,-34,-34,-34,-34,-30,-26,-20,-16,-15,-15,-15,-15,-15,-13,-12, -8}}},
  24389. /* 7 */
  24390. {{{-22,-22,-22,-22,-22,-20,-14,-10, -6, 0, 0, 0, 0, 4, 4, 6, 11},
  24391. {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10,-10},
  24392. {-34,-34,-34,-34,-32,-32,-30,-24,-20,-19,-19,-19,-19,-19,-17,-16,-12}}},
  24393. /* 8 */
  24394. {{{-24,-24,-24,-24,-24,-22,-14,-10, -6, -1, -1, -1, -1, 3, 3, 5, 10},
  24395. {-34,-34,-34,-34,-30,-30,-30,-24,-20,-20,-20,-20,-20,-18,-16,-16,-14},
  24396. {-36,-36,-36,-36,-36,-34,-28,-24,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
  24397. /* 9 */
  24398. {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
  24399. {-36,-36,-36,-36,-34,-32,-32,-30,-26,-26,-26,-26,-26,-22,-20,-20,-18},
  24400. {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
  24401. /* 10 */
  24402. {{{-30,-30,-30,-30,-30,-26,-24,-24,-24,-20,-16,-16,-16,-16,-16,-14,-12},
  24403. {-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-30,-30,-30,-30,-30,-30,-26},
  24404. {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
  24405. };
  24406. static noise3 _psy_noisebias_padding[11]={
  24407. /* 63 125 250 500 1k 2k 4k 8k 16k*/
  24408. /* 0 */
  24409. {{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
  24410. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, 2, 3, 6, 6, 8, 10},
  24411. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -4, -4, -2, 0, 2}}},
  24412. /* 1 */
  24413. {{{-12,-12,-12,-12,-12, -8, -6, -4, 0, 4, 4, 4, 4, 10, 12, 14, 20},
  24414. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, 0, 0, 0, 2, 2, 4, 8},
  24415. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -6, -4, -2, 0}}},
  24416. /* 2 */
  24417. {{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 8, 10, 10, 16},
  24418. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, 0, 0, 0, 2, 2, 4, 8},
  24419. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
  24420. /* 3 */
  24421. {{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 6, 8, 8, 14},
  24422. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -1, -1, -1, 0, 0, 2, 6},
  24423. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
  24424. /* 4 */
  24425. {{{-16,-16,-16,-16,-16,-12,-10, -6, -2, 0, 0, 0, 0, 4, 6, 6, 12},
  24426. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -1, -1, -1, -1, 0, 2, 6},
  24427. {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
  24428. /* 5 */
  24429. {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 6, 6, 12},
  24430. {-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -3, -3, -3, -3, -2, 0, 4},
  24431. {-34,-34,-34,-34,-30,-26,-24,-18,-14,-10,-10,-10,-10,-10, -8, -5, -3}}},
  24432. /* 6 */
  24433. {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 6, 6, 12},
  24434. {-34,-34,-34,-34,-30,-30,-24,-20,-14, -8, -4, -4, -4, -4, -3, -1, 4},
  24435. {-34,-34,-34,-34,-34,-30,-26,-20,-16,-13,-13,-13,-13,-13,-11, -8, -6}}},
  24436. /* 7 */
  24437. {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 6, 6, 12},
  24438. {-34,-34,-34,-34,-30,-30,-30,-24,-16,-10, -8, -6, -6, -6, -5, -3, 1},
  24439. {-34,-34,-34,-34,-32,-32,-28,-22,-18,-16,-16,-16,-16,-16,-14,-12,-10}}},
  24440. /* 8 */
  24441. {{{-22,-22,-22,-22,-22,-20,-14,-10, -4, 0, 0, 0, 0, 3, 5, 5, 11},
  24442. {-34,-34,-34,-34,-30,-30,-30,-24,-16,-12,-10, -8, -8, -8, -7, -5, -2},
  24443. {-36,-36,-36,-36,-36,-34,-28,-22,-20,-20,-20,-20,-20,-20,-20,-16,-14}}},
  24444. /* 9 */
  24445. {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -2, -2, -2, -2, 0, 2, 6},
  24446. {-36,-36,-36,-36,-34,-32,-32,-24,-16,-12,-12,-12,-12,-12,-10, -8, -5},
  24447. {-40,-40,-40,-40,-40,-40,-40,-32,-26,-24,-24,-24,-24,-24,-24,-20,-18}}},
  24448. /* 10 */
  24449. {{{-30,-30,-30,-30,-30,-26,-24,-24,-24,-20,-12,-12,-12,-12,-12,-10, -8},
  24450. {-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-25,-25,-25,-25,-25,-25,-15},
  24451. {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
  24452. };
  24453. static noiseguard _psy_noiseguards_44[4]={
  24454. {3,3,15},
  24455. {3,3,15},
  24456. {10,10,100},
  24457. {10,10,100},
  24458. };
  24459. static int _psy_tone_suppress[11]={
  24460. -20,-20,-20,-20,-24,-30,-40,-40,-45,-45,-45,
  24461. };
  24462. static int _psy_tone_0dB[11]={
  24463. 90,95,95,95,95,105,105,105,105,105,105,
  24464. };
  24465. static int _psy_noise_suppress[11]={
  24466. -20,-24,-24,-24,-24,-30,-40,-40,-45,-45,-45,
  24467. };
  24468. static vorbis_info_psy _psy_info_template={
  24469. -1,
  24470. -140.,-140.,
  24471. /* tonemask att boost/decay,suppr,curves */
  24472. {0.f,0.f,0.f}, 0.,0., -40.f, {0.},
  24473. /*noisemaskp,supp, low/high window, low/hi guard, minimum */
  24474. 1, -0.f, .5f, .5f, 0,0,0,
  24475. {{-1},{-1},{-1}},{-1},105.f,
  24476. 0,0,-1,-1,0.,
  24477. };
  24478. /* ath ****************/
  24479. static int _psy_ath_floater[11]={
  24480. -100,-100,-100,-100,-100,-105,-105,-105,-105,-110,-120,
  24481. };
  24482. static int _psy_ath_abs[11]={
  24483. -130,-130,-130,-140,-140,-140,-140,-140,-140,-140,-150,
  24484. };
  24485. /* stereo setup. These don't map directly to quality level, there's
  24486. an additional indirection as several of the below may be used in a
  24487. single bitmanaged stream
  24488. ****************/
  24489. /* various stereo possibilities */
  24490. /* stereo mode by base quality level */
  24491. static adj_stereo _psy_stereo_modes_44_low[2]={
  24492. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 */
  24493. {{ 4, 4, 4, 4, 4, 4, 4, 3, 2, 2, 1, 0, 0, 0, 0},
  24494. { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 4, 3},
  24495. { 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 8, 8},
  24496. { 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},
  24497. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 */
  24498. {{ 4, 4, 4, 4, 4, 4, 4, 3, 2, 2, 1, 0, 0, 0, 0},
  24499. { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 4, 3},
  24500. { 1, 2, 3, 4, 5, 5, 6, 6, 6, 6, 6, 7, 8, 8, 8},
  24501. { 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},
  24502. };
  24503. static adj_stereo _psy_stereo_modes_44[11]={
  24504. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 */
  24505. {{ 4, 4, 4, 4, 4, 4, 4, 3, 2, 2, 1, 0, 0, 0, 0},
  24506. { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 4, 3},
  24507. { 1, 2, 3, 4, 5, 5, 6, 6, 6, 6, 6, 7, 8, 8, 8},
  24508. { 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},
  24509. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 */
  24510. {{ 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0},
  24511. { 8, 8, 8, 8, 6, 6, 5, 5, 5, 5, 5, 5, 5, 4, 3},
  24512. { 1, 2, 3, 4, 4, 5, 6, 6, 6, 6, 6, 8, 8, 8, 8},
  24513. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  24514. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 */
  24515. {{ 3, 3, 3, 3, 3, 3, 2, 2, 2, 1, 0, 0, 0, 0, 0},
  24516. { 8, 8, 8, 6, 5, 5, 5, 5, 5, 5, 5, 4, 3, 2, 1},
  24517. { 3, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8},
  24518. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  24519. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 */
  24520. {{ 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0},
  24521. { 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 2, 1},
  24522. { 4, 4, 5, 6, 6, 6, 6, 6, 8, 8, 10, 10, 10, 10, 10},
  24523. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  24524. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4 */
  24525. {{ 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  24526. { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 2, 1, 0},
  24527. { 6, 6, 6, 8, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10},
  24528. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  24529. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5 */
  24530. {{ 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  24531. { 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0},
  24532. { 6, 6, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10},
  24533. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  24534. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6 */
  24535. {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  24536. { 3, 3, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  24537. { 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
  24538. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  24539. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7 */
  24540. {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  24541. { 3, 3, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  24542. { 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
  24543. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  24544. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8 */
  24545. {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  24546. { 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  24547. { 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
  24548. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  24549. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 9 */
  24550. {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  24551. { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  24552. { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
  24553. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  24554. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 10 */
  24555. {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  24556. { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  24557. { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
  24558. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  24559. };
  24560. /* tone master attenuation by base quality mode and bitrate tweak */
  24561. static att3 _psy_tone_masteratt_44_low[2]={
  24562. {{ 34, 20, 8}, 0, 1.25}, /* 0 */
  24563. {{ 34, 20, 8}, -2, 1.25}, /* 1 */
  24564. };
  24565. static att3 _psy_tone_masteratt_44[11]={
  24566. {{ 30, 20, 8}, -2, 1.25}, /* 0 */
  24567. {{ 25, 14, 4}, 0, 0}, /* 1 */
  24568. {{ 20, 10, -2}, 0, 0}, /* 2 */
  24569. {{ 20, 9, -4}, 0, 0}, /* 3 */
  24570. {{ 20, 9, -4}, 0, 0}, /* 4 */
  24571. {{ 20, 6, -6}, 0, 0}, /* 5 */
  24572. {{ 20, 3, -10}, 0, 0}, /* 6 */
  24573. {{ 18, 1, -14}, 0, 0}, /* 7 */
  24574. {{ 18, 0, -16}, 0, 0}, /* 8 */
  24575. {{ 18, -2, -16}, 0, 0}, /* 9 */
  24576. {{ 12, -2, -20}, 0, 0}, /* 10 */
  24577. };
  24578. /* lowpass by mode **************/
  24579. static double _psy_lowpass_44_low[2]={
  24580. 15.1,15.1,
  24581. };
  24582. static double _psy_lowpass_44[11]={
  24583. 15.1,15.8,16.5,17.9,20.5,48.,999.,999.,999.,999.,999.
  24584. };
  24585. /* noise normalization **********/
  24586. static int _noise_start_short_44[10]={
  24587. 16,16,16,16,32,32,9999,9999,9999,9999
  24588. };
  24589. static int _noise_start_long_44[10]={
  24590. 128,128,128,256,512,512,9999,9999,9999,9999
  24591. };
  24592. static int _noise_part_short_44[10]={
  24593. 8,8,8,8,8,8,8,8,8,8
  24594. };
  24595. static int _noise_part_long_44[10]={
  24596. 32,32,32,32,32,32,32,32,32,32
  24597. };
  24598. static double _noise_thresh_44[10]={
  24599. .2,.2,.3,.4,.5,.5,9999.,9999.,9999.,9999.,
  24600. };
  24601. static double _noise_thresh_44_2[2]={
  24602. .5,.5,
  24603. };
  24604. static int _noise_start_short_44_low[2]={
  24605. 32,32
  24606. };
  24607. static int _noise_start_long_44_low[2]={
  24608. 256,256
  24609. };
  24610. static double rate_mapping_44_stereo_low[2]={
  24611. 22500.,32000.
  24612. };
  24613. static double rate_mapping_44_stereo[11]={
  24614. 32000.,40000.,48000.,56000.,64000.,
  24615. 80000.,96000.,112000.,128000.,160000.,250001.
  24616. };
  24617. static double quality_mapping_44_stereo_low[2]={
  24618. -.1,.0,
  24619. };
  24620. static double quality_mapping_44[11]={
  24621. .0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1.0
  24622. };
  24623. static int blocksize_short_44_low[1]={
  24624. 512
  24625. };
  24626. static int blocksize_long_44_low[1]={
  24627. 4096
  24628. };
  24629. static int blocksize_short_44[10]={
  24630. 256,256,256,256,256,256,256,256,256,256
  24631. };
  24632. static int blocksize_long_44[10]={
  24633. 2048,2048,2048,2048,2048,2048,2048,2048,2048,2048
  24634. };
  24635. static double _psy_compand_short_mapping[11]={
  24636. 1., 1., 1.3, 1.6, 2., 2., 2., 2., 2., 2., 2.
  24637. };
  24638. static double _psy_compand_long_mapping[11]={
  24639. 4., 4., 4.3, 4.6, 5., 5., 5., 5., 5., 5., 5.
  24640. };
  24641. static double _global_mapping_44[11]={
  24642. 1., 1., 1.5, 2., 2., 2.5, 2.7, 3.0, 3.5, 4., 4.
  24643. };
  24644. static double _global_mapping_44_low[2]={
  24645. 0., 1.,
  24646. };
  24647. static int _floor_short_mapping_44_low[1]={
  24648. 1,
  24649. };
  24650. static int _floor_long_mapping_44_low[1]={
  24651. 8
  24652. };
  24653. static int _floor_short_mapping_44[10]={
  24654. 0,0,2,2,4,5,5,5,5,5
  24655. };
  24656. static int _floor_long_mapping_44[10]={
  24657. 7,7,7,7,7,7,7,7,7,7
  24658. };
  24659. ve_setup_data_template ve_setup_44_stereo={
  24660. 10,
  24661. rate_mapping_44_stereo,
  24662. quality_mapping_44,
  24663. 2,
  24664. 40000,
  24665. 50000,
  24666. blocksize_short_44,
  24667. blocksize_long_44,
  24668. _psy_tone_masteratt_44,
  24669. _psy_tone_0dB,
  24670. _psy_tone_suppress,
  24671. _vp_tonemask_adj_otherblock,
  24672. _vp_tonemask_adj_longblock,
  24673. _vp_tonemask_adj_otherblock,
  24674. _psy_noiseguards_44,
  24675. _psy_noisebias_impulse,
  24676. _psy_noisebias_padding,
  24677. _psy_noisebias_trans,
  24678. _psy_noisebias_long,
  24679. _psy_noise_suppress,
  24680. _psy_compand_44,
  24681. _psy_compand_short_mapping,
  24682. _psy_compand_long_mapping,
  24683. {_noise_start_short_44,_noise_start_long_44},
  24684. {_noise_part_short_44,_noise_part_long_44},
  24685. _noise_thresh_44,
  24686. _psy_ath_floater,
  24687. _psy_ath_abs,
  24688. _psy_lowpass_44,
  24689. _psy_global_44,
  24690. _global_mapping_44,
  24691. _psy_stereo_modes_44,
  24692. _floor_books,
  24693. _floor,
  24694. _floor_short_mapping_44,
  24695. _floor_long_mapping_44,
  24696. _mapres_template_44_stereo
  24697. };
  24698. ve_setup_data_template ve_setup_44_stereo_low={
  24699. 1,
  24700. rate_mapping_44_stereo_low,
  24701. quality_mapping_44_stereo_low,
  24702. 2,
  24703. 40000,
  24704. 50000,
  24705. blocksize_short_44_low,
  24706. blocksize_long_44_low,
  24707. _psy_tone_masteratt_44_low,
  24708. _psy_tone_0dB,
  24709. _psy_tone_suppress,
  24710. _vp_tonemask_adj_otherblock,
  24711. _vp_tonemask_adj_longblock,
  24712. _vp_tonemask_adj_otherblock,
  24713. _psy_noiseguards_44,
  24714. _psy_noisebias_trans_low,
  24715. _psy_noisebias_trans_low,
  24716. _psy_noisebias_trans_low,
  24717. _psy_noisebias_long_low,
  24718. _psy_noise_suppress,
  24719. _psy_compand_44,
  24720. _psy_compand_short_mapping,
  24721. _psy_compand_long_mapping,
  24722. {_noise_start_short_44_low,_noise_start_long_44_low},
  24723. {_noise_part_short_44,_noise_part_long_44},
  24724. _noise_thresh_44,
  24725. _psy_ath_floater,
  24726. _psy_ath_abs,
  24727. _psy_lowpass_44_low,
  24728. _psy_global_44,
  24729. _global_mapping_44_low,
  24730. _psy_stereo_modes_44_low,
  24731. _floor_books,
  24732. _floor,
  24733. _floor_short_mapping_44_low,
  24734. _floor_long_mapping_44_low,
  24735. _mapres_template_44_stereo
  24736. };
  24737. /********************************************************************
  24738. * *
  24739. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  24740. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  24741. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  24742. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  24743. * *
  24744. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  24745. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  24746. * *
  24747. ********************************************************************
  24748. function: toplevel settings for 44.1/48kHz uncoupled modes
  24749. last mod: $Id: setup_44u.h,v 1.3 2002/07/11 06:41:05 xiphmont Exp $
  24750. ********************************************************************/
  24751. /********************************************************************
  24752. * *
  24753. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  24754. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  24755. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  24756. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  24757. * *
  24758. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  24759. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  24760. * *
  24761. ********************************************************************
  24762. function: toplevel residue templates for 32/44.1/48kHz uncoupled
  24763. last mod: $Id: residue_44u.h,v 1.3 2002/07/11 06:41:04 xiphmont Exp $
  24764. ********************************************************************/
  24765. /********************************************************************
  24766. * *
  24767. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  24768. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  24769. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  24770. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  24771. * *
  24772. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  24773. * by the Xiph.Org Foundation http://www.xiph.org/ *
  24774. * *
  24775. ********************************************************************
  24776. function: static codebooks autogenerated by huff/huffbuld
  24777. last modified: $Id: res_books_uncoupled.h,v 1.2 2002/07/11 10:27:53 xiphmont Exp $
  24778. ********************************************************************/
  24779. static long _vq_quantlist__16u0__p1_0[] = {
  24780. 1,
  24781. 0,
  24782. 2,
  24783. };
  24784. static long _vq_lengthlist__16u0__p1_0[] = {
  24785. 1, 4, 4, 5, 7, 7, 5, 7, 8, 5, 8, 8, 8,10,10, 8,
  24786. 10,11, 5, 8, 8, 8,10,10, 8,10,10, 4, 9, 9, 9,12,
  24787. 11, 8,11,11, 8,12,11,10,12,14,10,13,13, 7,11,11,
  24788. 10,14,12,11,14,14, 4, 9, 9, 8,11,11, 9,11,12, 7,
  24789. 11,11,10,13,14,10,12,14, 8,11,12,10,14,14,10,13,
  24790. 12,
  24791. };
  24792. static float _vq_quantthresh__16u0__p1_0[] = {
  24793. -0.5, 0.5,
  24794. };
  24795. static long _vq_quantmap__16u0__p1_0[] = {
  24796. 1, 0, 2,
  24797. };
  24798. static encode_aux_threshmatch _vq_auxt__16u0__p1_0 = {
  24799. _vq_quantthresh__16u0__p1_0,
  24800. _vq_quantmap__16u0__p1_0,
  24801. 3,
  24802. 3
  24803. };
  24804. static static_codebook _16u0__p1_0 = {
  24805. 4, 81,
  24806. _vq_lengthlist__16u0__p1_0,
  24807. 1, -535822336, 1611661312, 2, 0,
  24808. _vq_quantlist__16u0__p1_0,
  24809. NULL,
  24810. &_vq_auxt__16u0__p1_0,
  24811. NULL,
  24812. 0
  24813. };
  24814. static long _vq_quantlist__16u0__p2_0[] = {
  24815. 1,
  24816. 0,
  24817. 2,
  24818. };
  24819. static long _vq_lengthlist__16u0__p2_0[] = {
  24820. 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 9, 7,
  24821. 8, 9, 5, 7, 7, 7, 9, 8, 7, 9, 7, 4, 7, 7, 7, 9,
  24822. 9, 7, 8, 8, 6, 9, 8, 7, 8,11, 9,11,10, 6, 8, 9,
  24823. 8,11, 8, 9,10,11, 4, 7, 7, 7, 8, 8, 7, 9, 9, 6,
  24824. 9, 8, 9,11,10, 8, 8,11, 6, 8, 9, 9,10,11, 8,11,
  24825. 8,
  24826. };
  24827. static float _vq_quantthresh__16u0__p2_0[] = {
  24828. -0.5, 0.5,
  24829. };
  24830. static long _vq_quantmap__16u0__p2_0[] = {
  24831. 1, 0, 2,
  24832. };
  24833. static encode_aux_threshmatch _vq_auxt__16u0__p2_0 = {
  24834. _vq_quantthresh__16u0__p2_0,
  24835. _vq_quantmap__16u0__p2_0,
  24836. 3,
  24837. 3
  24838. };
  24839. static static_codebook _16u0__p2_0 = {
  24840. 4, 81,
  24841. _vq_lengthlist__16u0__p2_0,
  24842. 1, -535822336, 1611661312, 2, 0,
  24843. _vq_quantlist__16u0__p2_0,
  24844. NULL,
  24845. &_vq_auxt__16u0__p2_0,
  24846. NULL,
  24847. 0
  24848. };
  24849. static long _vq_quantlist__16u0__p3_0[] = {
  24850. 2,
  24851. 1,
  24852. 3,
  24853. 0,
  24854. 4,
  24855. };
  24856. static long _vq_lengthlist__16u0__p3_0[] = {
  24857. 1, 5, 5, 7, 7, 6, 7, 7, 8, 8, 6, 7, 8, 8, 8, 8,
  24858. 9, 9,11,11, 8, 9, 9,11,11, 6, 9, 8,10,10, 8,10,
  24859. 10,11,11, 8,10,10,11,11,10,11,10,13,12, 9,11,10,
  24860. 13,13, 6, 8, 9,10,10, 8,10,10,11,11, 8,10,10,11,
  24861. 11, 9,10,11,13,12,10,10,11,12,12, 8,11,11,14,13,
  24862. 10,12,11,15,13, 9,12,11,15,14,12,14,13,16,14,12,
  24863. 13,13,17,14, 8,11,11,13,14, 9,11,12,14,15,10,11,
  24864. 12,13,15,11,13,13,14,16,12,13,14,14,16, 5, 9, 9,
  24865. 11,11, 9,11,11,12,12, 8,11,11,12,12,11,12,12,15,
  24866. 14,10,12,12,15,15, 8,11,11,13,12,10,12,12,13,13,
  24867. 10,12,12,14,13,12,12,13,14,15,11,13,13,17,16, 7,
  24868. 11,11,13,13,10,12,12,14,13,10,12,12,13,14,12,13,
  24869. 12,15,14,11,13,13,15,14, 9,12,12,16,15,11,13,13,
  24870. 17,16,10,13,13,16,16,13,14,15,15,16,13,15,14,19,
  24871. 17, 9,12,12,14,16,11,13,13,15,16,10,13,13,17,16,
  24872. 13,14,13,17,15,12,15,15,16,17, 5, 9, 9,11,11, 8,
  24873. 11,11,13,12, 9,11,11,12,12,10,12,12,14,15,11,12,
  24874. 12,14,14, 7,11,10,13,12,10,12,12,14,13,10,11,12,
  24875. 13,13,11,13,13,15,16,12,12,13,15,15, 7,11,11,13,
  24876. 13,10,13,13,14,14,10,12,12,13,13,11,13,13,16,15,
  24877. 12,13,13,15,14, 9,12,12,15,15,10,13,13,17,16,11,
  24878. 12,13,15,15,12,15,14,18,18,13,14,14,16,17, 9,12,
  24879. 12,15,16,10,13,13,15,16,11,13,13,15,16,13,15,15,
  24880. 17,17,13,15,14,16,15, 7,11,11,15,16,10,13,12,16,
  24881. 17,10,12,13,15,17,15,16,16,18,17,13,15,15,17,18,
  24882. 8,12,12,16,16,11,13,14,17,18,11,13,13,18,16,15,
  24883. 17,16,17,19,14,15,15,17,16, 8,12,12,16,15,11,14,
  24884. 13,18,17,11,13,14,18,17,15,16,16,18,17,13,16,16,
  24885. 18,18,11,15,14,18,17,13,14,15,18, 0,12,15,15, 0,
  24886. 17,17,16,17,17,18,14,16,18,18, 0,11,14,14,17, 0,
  24887. 12,15,14,17,19,12,15,14,18, 0,15,18,16, 0,17,14,
  24888. 18,16,18, 0, 7,11,11,16,15,10,12,12,18,16,10,13,
  24889. 13,16,15,13,15,14,17,17,14,16,16,19,18, 8,12,12,
  24890. 16,16,11,13,13,18,16,11,13,14,17,16,14,15,15,19,
  24891. 18,15,16,16, 0,19, 8,12,12,16,17,11,13,13,17,17,
  24892. 11,14,13,17,17,13,15,15,17,19,15,17,17,19, 0,11,
  24893. 14,15,19,17,12,15,16,18,18,12,14,15,19,17,14,16,
  24894. 17, 0,18,16,16,19,17, 0,11,14,14,18,19,12,15,14,
  24895. 17,17,13,16,14,17,16,14,17,16,18,18,15,18,15, 0,
  24896. 18,
  24897. };
  24898. static float _vq_quantthresh__16u0__p3_0[] = {
  24899. -1.5, -0.5, 0.5, 1.5,
  24900. };
  24901. static long _vq_quantmap__16u0__p3_0[] = {
  24902. 3, 1, 0, 2, 4,
  24903. };
  24904. static encode_aux_threshmatch _vq_auxt__16u0__p3_0 = {
  24905. _vq_quantthresh__16u0__p3_0,
  24906. _vq_quantmap__16u0__p3_0,
  24907. 5,
  24908. 5
  24909. };
  24910. static static_codebook _16u0__p3_0 = {
  24911. 4, 625,
  24912. _vq_lengthlist__16u0__p3_0,
  24913. 1, -533725184, 1611661312, 3, 0,
  24914. _vq_quantlist__16u0__p3_0,
  24915. NULL,
  24916. &_vq_auxt__16u0__p3_0,
  24917. NULL,
  24918. 0
  24919. };
  24920. static long _vq_quantlist__16u0__p4_0[] = {
  24921. 2,
  24922. 1,
  24923. 3,
  24924. 0,
  24925. 4,
  24926. };
  24927. static long _vq_lengthlist__16u0__p4_0[] = {
  24928. 3, 5, 5, 8, 8, 6, 6, 6, 9, 9, 6, 6, 6, 9, 9, 9,
  24929. 10, 9,11,11, 9, 9, 9,11,11, 6, 7, 7,10,10, 7, 7,
  24930. 8,10,10, 7, 7, 8,10,10,10,10,10,11,12, 9,10,10,
  24931. 11,12, 6, 7, 7,10,10, 7, 8, 7,10,10, 7, 8, 7,10,
  24932. 10,10,11,10,12,11,10,10,10,13,10, 9,10,10,12,12,
  24933. 10,11,10,14,12, 9,11,11,13,13,11,12,13,13,13,11,
  24934. 12,12,15,13, 9,10,10,12,13, 9,11,10,12,13,10,10,
  24935. 11,12,13,11,12,12,12,13,11,12,12,13,13, 5, 7, 7,
  24936. 10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,12,
  24937. 13,10,10,11,12,12, 6, 8, 8,11,10, 7, 8, 9,10,12,
  24938. 8, 9, 9,11,11,11,10,11,11,12,10,11,11,13,12, 7,
  24939. 8, 8,10,11, 8, 9, 8,11,10, 8, 9, 9,11,11,10,12,
  24940. 10,13,11,10,11,11,13,13,10,11,10,14,13,10,10,11,
  24941. 13,13,10,12,11,14,13,12,11,13,12,13,13,12,13,14,
  24942. 14,10,11,11,13,13,10,11,10,12,13,10,12,12,12,14,
  24943. 12,12,12,14,12,12,13,12,17,15, 5, 7, 7,10,10, 7,
  24944. 8, 8,10,10, 7, 8, 8,11,10,10,10,11,12,12,10,11,
  24945. 11,12,13, 6, 8, 8,11,10, 8, 9, 9,11,11, 7, 8, 9,
  24946. 10,11,11,11,11,12,12,10,10,11,12,13, 6, 8, 8,10,
  24947. 11, 8, 9, 9,11,11, 7, 9, 7,11,10,10,12,12,13,13,
  24948. 11,11,10,13,11, 9,11,10,14,13,11,11,11,15,13,10,
  24949. 10,11,13,13,12,13,13,14,14,12,11,12,12,13,10,11,
  24950. 11,12,13,10,11,12,13,13,10,11,10,13,12,12,12,13,
  24951. 14, 0,12,13,11,13,11, 8,10,10,13,13,10,11,11,14,
  24952. 13,10,11,11,13,12,13,14,14,14,15,12,12,12,15,14,
  24953. 9,11,10,13,12,10,10,11,13,14,11,11,11,15,12,13,
  24954. 12,14,15,16,13,13,13,14,13, 9,11,11,12,12,10,12,
  24955. 11,13,13,10,11,11,13,14,13,13,13,15,15,13,13,14,
  24956. 17,15,11,12,12,14,14,10,11,12,13,15,12,13,13, 0,
  24957. 15,13,11,14,12,16,14,16,14, 0,15,11,12,12,14,16,
  24958. 11,13,12,16,15,12,13,13,14,15,12,14,12,15,13,15,
  24959. 14,14,16,16, 8,10,10,13,13,10,11,10,13,14,10,11,
  24960. 11,13,13,13,13,12,14,14,14,13,13,16,17, 9,10,10,
  24961. 12,14,10,12,11,14,13,10,11,12,13,14,12,12,12,15,
  24962. 15,13,13,13,14,14, 9,10,10,13,13,10,11,12,12,14,
  24963. 10,11,10,13,13,13,13,13,14,16,13,13,13,14,14,11,
  24964. 12,13,15,13,12,14,13,14,16,12,12,13,13,14,13,14,
  24965. 14,17,15,13,12,17,13,16,11,12,13,14,15,12,13,14,
  24966. 14,17,11,12,11,14,14,13,16,14,16, 0,14,15,11,15,
  24967. 11,
  24968. };
  24969. static float _vq_quantthresh__16u0__p4_0[] = {
  24970. -1.5, -0.5, 0.5, 1.5,
  24971. };
  24972. static long _vq_quantmap__16u0__p4_0[] = {
  24973. 3, 1, 0, 2, 4,
  24974. };
  24975. static encode_aux_threshmatch _vq_auxt__16u0__p4_0 = {
  24976. _vq_quantthresh__16u0__p4_0,
  24977. _vq_quantmap__16u0__p4_0,
  24978. 5,
  24979. 5
  24980. };
  24981. static static_codebook _16u0__p4_0 = {
  24982. 4, 625,
  24983. _vq_lengthlist__16u0__p4_0,
  24984. 1, -533725184, 1611661312, 3, 0,
  24985. _vq_quantlist__16u0__p4_0,
  24986. NULL,
  24987. &_vq_auxt__16u0__p4_0,
  24988. NULL,
  24989. 0
  24990. };
  24991. static long _vq_quantlist__16u0__p5_0[] = {
  24992. 4,
  24993. 3,
  24994. 5,
  24995. 2,
  24996. 6,
  24997. 1,
  24998. 7,
  24999. 0,
  25000. 8,
  25001. };
  25002. static long _vq_lengthlist__16u0__p5_0[] = {
  25003. 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
  25004. 9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9,
  25005. 9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,11, 7, 8, 8,
  25006. 9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
  25007. 9, 9,10,10,11,11,12,12, 9, 9, 9,10,10,11,11,12,
  25008. 12,
  25009. };
  25010. static float _vq_quantthresh__16u0__p5_0[] = {
  25011. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  25012. };
  25013. static long _vq_quantmap__16u0__p5_0[] = {
  25014. 7, 5, 3, 1, 0, 2, 4, 6,
  25015. 8,
  25016. };
  25017. static encode_aux_threshmatch _vq_auxt__16u0__p5_0 = {
  25018. _vq_quantthresh__16u0__p5_0,
  25019. _vq_quantmap__16u0__p5_0,
  25020. 9,
  25021. 9
  25022. };
  25023. static static_codebook _16u0__p5_0 = {
  25024. 2, 81,
  25025. _vq_lengthlist__16u0__p5_0,
  25026. 1, -531628032, 1611661312, 4, 0,
  25027. _vq_quantlist__16u0__p5_0,
  25028. NULL,
  25029. &_vq_auxt__16u0__p5_0,
  25030. NULL,
  25031. 0
  25032. };
  25033. static long _vq_quantlist__16u0__p6_0[] = {
  25034. 6,
  25035. 5,
  25036. 7,
  25037. 4,
  25038. 8,
  25039. 3,
  25040. 9,
  25041. 2,
  25042. 10,
  25043. 1,
  25044. 11,
  25045. 0,
  25046. 12,
  25047. };
  25048. static long _vq_lengthlist__16u0__p6_0[] = {
  25049. 1, 4, 4, 7, 7,10,10,12,12,13,13,18,17, 3, 6, 6,
  25050. 9, 9,11,11,13,13,14,14,18,17, 3, 6, 6, 9, 9,11,
  25051. 11,13,13,14,14,17,18, 7, 9, 9,11,11,13,13,14,14,
  25052. 15,15, 0, 0, 7, 9, 9,11,11,13,13,14,14,15,16,19,
  25053. 18,10,11,11,13,13,14,14,16,15,17,18, 0, 0,10,11,
  25054. 11,13,13,14,14,15,15,16,18, 0, 0,11,13,13,14,14,
  25055. 15,15,17,17, 0,19, 0, 0,11,13,13,14,14,14,15,16,
  25056. 18, 0,19, 0, 0,13,14,14,15,15,18,17,18,18, 0,19,
  25057. 0, 0,13,14,14,15,16,16,16,18,18,19, 0, 0, 0,16,
  25058. 17,17, 0,17,19,19, 0,19, 0, 0, 0, 0,16,19,16,17,
  25059. 18, 0,19, 0, 0, 0, 0, 0, 0,
  25060. };
  25061. static float _vq_quantthresh__16u0__p6_0[] = {
  25062. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  25063. 12.5, 17.5, 22.5, 27.5,
  25064. };
  25065. static long _vq_quantmap__16u0__p6_0[] = {
  25066. 11, 9, 7, 5, 3, 1, 0, 2,
  25067. 4, 6, 8, 10, 12,
  25068. };
  25069. static encode_aux_threshmatch _vq_auxt__16u0__p6_0 = {
  25070. _vq_quantthresh__16u0__p6_0,
  25071. _vq_quantmap__16u0__p6_0,
  25072. 13,
  25073. 13
  25074. };
  25075. static static_codebook _16u0__p6_0 = {
  25076. 2, 169,
  25077. _vq_lengthlist__16u0__p6_0,
  25078. 1, -526516224, 1616117760, 4, 0,
  25079. _vq_quantlist__16u0__p6_0,
  25080. NULL,
  25081. &_vq_auxt__16u0__p6_0,
  25082. NULL,
  25083. 0
  25084. };
  25085. static long _vq_quantlist__16u0__p6_1[] = {
  25086. 2,
  25087. 1,
  25088. 3,
  25089. 0,
  25090. 4,
  25091. };
  25092. static long _vq_lengthlist__16u0__p6_1[] = {
  25093. 1, 4, 5, 6, 6, 4, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6,
  25094. 6, 6, 7, 7, 6, 6, 6, 7, 7,
  25095. };
  25096. static float _vq_quantthresh__16u0__p6_1[] = {
  25097. -1.5, -0.5, 0.5, 1.5,
  25098. };
  25099. static long _vq_quantmap__16u0__p6_1[] = {
  25100. 3, 1, 0, 2, 4,
  25101. };
  25102. static encode_aux_threshmatch _vq_auxt__16u0__p6_1 = {
  25103. _vq_quantthresh__16u0__p6_1,
  25104. _vq_quantmap__16u0__p6_1,
  25105. 5,
  25106. 5
  25107. };
  25108. static static_codebook _16u0__p6_1 = {
  25109. 2, 25,
  25110. _vq_lengthlist__16u0__p6_1,
  25111. 1, -533725184, 1611661312, 3, 0,
  25112. _vq_quantlist__16u0__p6_1,
  25113. NULL,
  25114. &_vq_auxt__16u0__p6_1,
  25115. NULL,
  25116. 0
  25117. };
  25118. static long _vq_quantlist__16u0__p7_0[] = {
  25119. 1,
  25120. 0,
  25121. 2,
  25122. };
  25123. static long _vq_lengthlist__16u0__p7_0[] = {
  25124. 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  25125. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  25126. 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  25127. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  25128. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  25129. 7,
  25130. };
  25131. static float _vq_quantthresh__16u0__p7_0[] = {
  25132. -157.5, 157.5,
  25133. };
  25134. static long _vq_quantmap__16u0__p7_0[] = {
  25135. 1, 0, 2,
  25136. };
  25137. static encode_aux_threshmatch _vq_auxt__16u0__p7_0 = {
  25138. _vq_quantthresh__16u0__p7_0,
  25139. _vq_quantmap__16u0__p7_0,
  25140. 3,
  25141. 3
  25142. };
  25143. static static_codebook _16u0__p7_0 = {
  25144. 4, 81,
  25145. _vq_lengthlist__16u0__p7_0,
  25146. 1, -518803456, 1628680192, 2, 0,
  25147. _vq_quantlist__16u0__p7_0,
  25148. NULL,
  25149. &_vq_auxt__16u0__p7_0,
  25150. NULL,
  25151. 0
  25152. };
  25153. static long _vq_quantlist__16u0__p7_1[] = {
  25154. 7,
  25155. 6,
  25156. 8,
  25157. 5,
  25158. 9,
  25159. 4,
  25160. 10,
  25161. 3,
  25162. 11,
  25163. 2,
  25164. 12,
  25165. 1,
  25166. 13,
  25167. 0,
  25168. 14,
  25169. };
  25170. static long _vq_lengthlist__16u0__p7_1[] = {
  25171. 1, 5, 5, 6, 5, 9,10,11,11,10,10,10,10,10,10, 5,
  25172. 8, 8, 8,10,10,10,10,10,10,10,10,10,10,10, 5, 8,
  25173. 9, 9, 9,10,10,10,10,10,10,10,10,10,10, 5,10, 8,
  25174. 10,10,10,10,10,10,10,10,10,10,10,10, 4, 8, 9,10,
  25175. 10,10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10,
  25176. 10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10,10,
  25177. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  25178. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  25179. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  25180. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  25181. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  25182. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  25183. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  25184. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  25185. 10,
  25186. };
  25187. static float _vq_quantthresh__16u0__p7_1[] = {
  25188. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  25189. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  25190. };
  25191. static long _vq_quantmap__16u0__p7_1[] = {
  25192. 13, 11, 9, 7, 5, 3, 1, 0,
  25193. 2, 4, 6, 8, 10, 12, 14,
  25194. };
  25195. static encode_aux_threshmatch _vq_auxt__16u0__p7_1 = {
  25196. _vq_quantthresh__16u0__p7_1,
  25197. _vq_quantmap__16u0__p7_1,
  25198. 15,
  25199. 15
  25200. };
  25201. static static_codebook _16u0__p7_1 = {
  25202. 2, 225,
  25203. _vq_lengthlist__16u0__p7_1,
  25204. 1, -520986624, 1620377600, 4, 0,
  25205. _vq_quantlist__16u0__p7_1,
  25206. NULL,
  25207. &_vq_auxt__16u0__p7_1,
  25208. NULL,
  25209. 0
  25210. };
  25211. static long _vq_quantlist__16u0__p7_2[] = {
  25212. 10,
  25213. 9,
  25214. 11,
  25215. 8,
  25216. 12,
  25217. 7,
  25218. 13,
  25219. 6,
  25220. 14,
  25221. 5,
  25222. 15,
  25223. 4,
  25224. 16,
  25225. 3,
  25226. 17,
  25227. 2,
  25228. 18,
  25229. 1,
  25230. 19,
  25231. 0,
  25232. 20,
  25233. };
  25234. static long _vq_lengthlist__16u0__p7_2[] = {
  25235. 1, 6, 6, 7, 8, 7, 7,10, 9,10, 9,11,10, 9,11,10,
  25236. 9, 9, 9, 9,10, 6, 8, 7, 9, 9, 8, 8,10,10, 9,11,
  25237. 11,12,12,10, 9,11, 9,12,10, 9, 6, 9, 8, 9,12, 8,
  25238. 8,11, 9,11,11,12,11,12,12,10,11,11,10,10,11, 7,
  25239. 10, 9, 9, 9, 9, 9,10, 9,10, 9,10,10,12,10,10,10,
  25240. 11,12,10,10, 7, 9, 9, 9,10, 9, 9,10,10, 9, 9, 9,
  25241. 11,11,10,10,10,10, 9, 9,12, 7, 9,10, 9,11, 9,10,
  25242. 9,10,11,11,11,10,11,12, 9,12,11,10,10,10, 7, 9,
  25243. 9, 9, 9,10,12,10, 9,11,12,10,11,12,12,11, 9,10,
  25244. 11,10,11, 7, 9,10,10,11,10, 9,10,11,11,11,10,12,
  25245. 12,12,11,11,10,11,11,12, 8, 9,10,12,11,10,10,12,
  25246. 12,12,12,12,10,11,11, 9,11,10,12,11,11, 8, 9,10,
  25247. 10,11,12,11,11,10,10,10,12,12,12, 9,10,12,12,12,
  25248. 12,12, 8,10,11,10,10,12, 9,11,12,12,11,12,12,12,
  25249. 12,10,12,10,10,10,10, 8,12,11,11,11,10,10,11,12,
  25250. 12,12,12,11,12,12,12,11,11,11,12,10, 9,10,10,12,
  25251. 10,12,10,12,12,10,10,10,11,12,12,12,11,12,12,12,
  25252. 11,10,11,12,12,12,11,12,12,11,12,12,11,12,12,12,
  25253. 12,11,12,12,10,10,10,10,11,11,12,11,12,12,12,12,
  25254. 12,12,12,11,12,11,10,11,11,12,11,11, 9,10,10,10,
  25255. 12,10,10,11, 9,11,12,11,12,11,12,12,10,11,10,12,
  25256. 9, 9, 9,12,11,10,11,10,12,10,12,10,12,12,12,11,
  25257. 11,11,11,11,10, 9,10,10,11,10,11,11,12,11,10,11,
  25258. 12,12,12,11,11, 9,12,10,12, 9,10,12,10,10,11,10,
  25259. 11,11,12,11,10,11,10,11,11,11,11,12,11,11,10, 9,
  25260. 10,10,10, 9,11,11,10, 9,12,10,11,12,11,12,12,11,
  25261. 12,11,12,11,10,11,10,12,11,12,11,12,11,12,10,11,
  25262. 10,10,12,11,10,11,11,11,10,
  25263. };
  25264. static float _vq_quantthresh__16u0__p7_2[] = {
  25265. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  25266. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  25267. 6.5, 7.5, 8.5, 9.5,
  25268. };
  25269. static long _vq_quantmap__16u0__p7_2[] = {
  25270. 19, 17, 15, 13, 11, 9, 7, 5,
  25271. 3, 1, 0, 2, 4, 6, 8, 10,
  25272. 12, 14, 16, 18, 20,
  25273. };
  25274. static encode_aux_threshmatch _vq_auxt__16u0__p7_2 = {
  25275. _vq_quantthresh__16u0__p7_2,
  25276. _vq_quantmap__16u0__p7_2,
  25277. 21,
  25278. 21
  25279. };
  25280. static static_codebook _16u0__p7_2 = {
  25281. 2, 441,
  25282. _vq_lengthlist__16u0__p7_2,
  25283. 1, -529268736, 1611661312, 5, 0,
  25284. _vq_quantlist__16u0__p7_2,
  25285. NULL,
  25286. &_vq_auxt__16u0__p7_2,
  25287. NULL,
  25288. 0
  25289. };
  25290. static long _huff_lengthlist__16u0__single[] = {
  25291. 3, 5, 8, 7,14, 8, 9,19, 5, 2, 5, 5, 9, 6, 9,19,
  25292. 8, 4, 5, 7, 8, 9,13,19, 7, 4, 6, 5, 9, 6, 9,19,
  25293. 12, 8, 7, 9,10,11,13,19, 8, 5, 8, 6, 9, 6, 7,19,
  25294. 8, 8,10, 7, 7, 4, 5,19,12,17,19,15,18,13,11,18,
  25295. };
  25296. static static_codebook _huff_book__16u0__single = {
  25297. 2, 64,
  25298. _huff_lengthlist__16u0__single,
  25299. 0, 0, 0, 0, 0,
  25300. NULL,
  25301. NULL,
  25302. NULL,
  25303. NULL,
  25304. 0
  25305. };
  25306. static long _huff_lengthlist__16u1__long[] = {
  25307. 3, 6,10, 8,12, 8,14, 8,14,19, 5, 3, 5, 5, 7, 6,
  25308. 11, 7,16,19, 7, 5, 6, 7, 7, 9,11,12,19,19, 6, 4,
  25309. 7, 5, 7, 6,10, 7,18,18, 8, 6, 7, 7, 7, 7, 8, 9,
  25310. 18,18, 7, 5, 8, 5, 7, 5, 8, 6,18,18,12, 9,10, 9,
  25311. 9, 9, 8, 9,18,18, 8, 7,10, 6, 8, 5, 6, 4,11,18,
  25312. 11,15,16,12,11, 8, 8, 6, 9,18,14,18,18,18,16,16,
  25313. 16,13,16,18,
  25314. };
  25315. static static_codebook _huff_book__16u1__long = {
  25316. 2, 100,
  25317. _huff_lengthlist__16u1__long,
  25318. 0, 0, 0, 0, 0,
  25319. NULL,
  25320. NULL,
  25321. NULL,
  25322. NULL,
  25323. 0
  25324. };
  25325. static long _vq_quantlist__16u1__p1_0[] = {
  25326. 1,
  25327. 0,
  25328. 2,
  25329. };
  25330. static long _vq_lengthlist__16u1__p1_0[] = {
  25331. 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 7, 7,10,10, 7,
  25332. 9,10, 5, 7, 8, 7,10, 9, 7,10,10, 5, 8, 8, 8,10,
  25333. 10, 8,10,10, 7,10,10,10,11,12,10,12,13, 7,10,10,
  25334. 9,13,11,10,12,13, 5, 8, 8, 8,10,10, 8,10,10, 7,
  25335. 10,10,10,12,12, 9,11,12, 7,10,11,10,12,12,10,13,
  25336. 11,
  25337. };
  25338. static float _vq_quantthresh__16u1__p1_0[] = {
  25339. -0.5, 0.5,
  25340. };
  25341. static long _vq_quantmap__16u1__p1_0[] = {
  25342. 1, 0, 2,
  25343. };
  25344. static encode_aux_threshmatch _vq_auxt__16u1__p1_0 = {
  25345. _vq_quantthresh__16u1__p1_0,
  25346. _vq_quantmap__16u1__p1_0,
  25347. 3,
  25348. 3
  25349. };
  25350. static static_codebook _16u1__p1_0 = {
  25351. 4, 81,
  25352. _vq_lengthlist__16u1__p1_0,
  25353. 1, -535822336, 1611661312, 2, 0,
  25354. _vq_quantlist__16u1__p1_0,
  25355. NULL,
  25356. &_vq_auxt__16u1__p1_0,
  25357. NULL,
  25358. 0
  25359. };
  25360. static long _vq_quantlist__16u1__p2_0[] = {
  25361. 1,
  25362. 0,
  25363. 2,
  25364. };
  25365. static long _vq_lengthlist__16u1__p2_0[] = {
  25366. 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 7, 8, 6,
  25367. 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 6, 8,
  25368. 8, 6, 8, 8, 6, 8, 8, 7, 7,10, 8, 9, 9, 6, 8, 8,
  25369. 7, 9, 8, 8, 9,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
  25370. 8, 8, 8,10, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 7,10,
  25371. 8,
  25372. };
  25373. static float _vq_quantthresh__16u1__p2_0[] = {
  25374. -0.5, 0.5,
  25375. };
  25376. static long _vq_quantmap__16u1__p2_0[] = {
  25377. 1, 0, 2,
  25378. };
  25379. static encode_aux_threshmatch _vq_auxt__16u1__p2_0 = {
  25380. _vq_quantthresh__16u1__p2_0,
  25381. _vq_quantmap__16u1__p2_0,
  25382. 3,
  25383. 3
  25384. };
  25385. static static_codebook _16u1__p2_0 = {
  25386. 4, 81,
  25387. _vq_lengthlist__16u1__p2_0,
  25388. 1, -535822336, 1611661312, 2, 0,
  25389. _vq_quantlist__16u1__p2_0,
  25390. NULL,
  25391. &_vq_auxt__16u1__p2_0,
  25392. NULL,
  25393. 0
  25394. };
  25395. static long _vq_quantlist__16u1__p3_0[] = {
  25396. 2,
  25397. 1,
  25398. 3,
  25399. 0,
  25400. 4,
  25401. };
  25402. static long _vq_lengthlist__16u1__p3_0[] = {
  25403. 1, 5, 5, 8, 8, 6, 7, 7, 9, 9, 5, 7, 7, 9, 9, 9,
  25404. 10, 9,11,11, 9, 9,10,11,11, 6, 8, 8,10,10, 8, 9,
  25405. 10,11,11, 8, 9,10,11,11,10,11,11,12,13,10,11,11,
  25406. 13,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10, 9,11,
  25407. 11,10,11,11,13,13,10,11,11,13,12, 9,11,11,14,13,
  25408. 10,12,12,15,14,10,12,11,14,13,12,13,13,15,15,12,
  25409. 13,13,16,14, 9,11,11,13,14,10,11,12,14,14,10,12,
  25410. 12,14,15,12,13,13,14,15,12,13,14,15,16, 5, 8, 8,
  25411. 11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
  25412. 14,11,12,12,14,14, 8,10,10,12,12, 9,11,12,12,13,
  25413. 10,12,12,13,13,12,12,13,14,15,11,13,13,15,15, 7,
  25414. 10,10,12,12, 9,12,11,13,12,10,11,12,13,13,12,13,
  25415. 12,15,14,11,12,13,15,15,10,12,12,15,14,11,13,13,
  25416. 16,15,11,13,13,16,15,14,13,14,15,16,13,15,15,17,
  25417. 17,10,12,12,14,15,11,12,12,15,15,11,13,13,15,16,
  25418. 13,15,13,16,15,13,15,15,16,17, 5, 8, 8,11,11, 8,
  25419. 10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
  25420. 12,14,14, 7,10,10,12,12,10,12,12,14,13, 9,11,12,
  25421. 12,13,12,13,13,15,15,12,12,13,13,15, 7,10,10,12,
  25422. 13,10,11,12,13,13,10,12,11,13,13,11,13,13,15,15,
  25423. 12,13,12,15,14, 9,12,12,15,14,11,13,13,15,15,11,
  25424. 12,13,15,15,13,14,14,17,19,13,13,14,16,16,10,12,
  25425. 12,14,15,11,13,13,15,16,11,13,12,16,15,13,15,15,
  25426. 17,18,14,15,13,16,15, 8,11,11,15,14,10,12,12,16,
  25427. 15,10,12,12,16,16,14,15,15,18,17,13,14,15,16,18,
  25428. 9,12,12,15,15,11,12,14,16,17,11,13,13,16,15,15,
  25429. 15,15,17,18,14,15,16,17,17, 9,12,12,15,15,11,14,
  25430. 13,16,16,11,13,13,16,16,15,16,15,17,18,14,16,15,
  25431. 17,16,12,14,14,17,16,12,14,15,18,17,13,15,15,17,
  25432. 17,15,15,18,16,20,15,16,17,18,18,11,14,14,16,17,
  25433. 13,15,14,18,17,13,15,15,17,17,15,17,15,18,17,15,
  25434. 17,16,19,18, 8,11,11,14,15,10,12,12,15,15,10,12,
  25435. 12,16,16,13,14,14,17,16,14,15,15,17,17, 9,12,12,
  25436. 15,16,11,13,13,16,16,11,12,13,16,16,14,16,15,20,
  25437. 17,14,16,16,17,17, 9,12,12,15,16,11,13,13,16,17,
  25438. 11,13,13,17,16,14,15,15,17,18,15,15,15,18,18,11,
  25439. 14,14,17,16,13,15,15,17,17,13,14,14,18,17,15,16,
  25440. 16,18,19,15,15,17,17,19,11,14,14,16,17,13,15,14,
  25441. 17,19,13,15,14,18,17,15,17,16,18,18,15,17,15,18,
  25442. 16,
  25443. };
  25444. static float _vq_quantthresh__16u1__p3_0[] = {
  25445. -1.5, -0.5, 0.5, 1.5,
  25446. };
  25447. static long _vq_quantmap__16u1__p3_0[] = {
  25448. 3, 1, 0, 2, 4,
  25449. };
  25450. static encode_aux_threshmatch _vq_auxt__16u1__p3_0 = {
  25451. _vq_quantthresh__16u1__p3_0,
  25452. _vq_quantmap__16u1__p3_0,
  25453. 5,
  25454. 5
  25455. };
  25456. static static_codebook _16u1__p3_0 = {
  25457. 4, 625,
  25458. _vq_lengthlist__16u1__p3_0,
  25459. 1, -533725184, 1611661312, 3, 0,
  25460. _vq_quantlist__16u1__p3_0,
  25461. NULL,
  25462. &_vq_auxt__16u1__p3_0,
  25463. NULL,
  25464. 0
  25465. };
  25466. static long _vq_quantlist__16u1__p4_0[] = {
  25467. 2,
  25468. 1,
  25469. 3,
  25470. 0,
  25471. 4,
  25472. };
  25473. static long _vq_lengthlist__16u1__p4_0[] = {
  25474. 4, 5, 5, 8, 8, 6, 6, 7, 9, 9, 6, 6, 6, 9, 9, 9,
  25475. 10, 9,11,11, 9, 9,10,11,11, 6, 7, 7,10, 9, 7, 7,
  25476. 8, 9,10, 7, 7, 8,10,10,10,10,10,10,12, 9, 9,10,
  25477. 11,12, 6, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 7,10,
  25478. 10, 9,10, 9,12,11,10,10, 9,12,10, 9,10,10,12,11,
  25479. 10,10,10,12,12, 9,10,10,12,12,12,11,12,13,13,11,
  25480. 11,12,12,13, 9,10,10,11,12, 9,10,10,12,12,10,10,
  25481. 10,12,12,11,12,11,14,13,11,12,12,14,13, 5, 7, 7,
  25482. 10,10, 7, 8, 8,10,10, 7, 8, 7,10,10,10,10,10,12,
  25483. 12,10,10,10,12,12, 6, 8, 7,10,10, 7, 7, 9,10,11,
  25484. 8, 9, 9,11,10,10,10,11,11,13,10,10,11,12,13, 6,
  25485. 8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,10,11,10,11,
  25486. 10,13,11,10,11,10,12,12,10,11,10,12,11,10,10,10,
  25487. 12,13,10,11,11,13,12,11,11,13,11,14,12,12,13,14,
  25488. 14, 9,10,10,12,13,10,11,10,13,12,10,11,11,12,13,
  25489. 11,12,11,14,12,12,13,13,15,14, 5, 7, 7,10,10, 7,
  25490. 7, 8,10,10, 7, 8, 8,10,10,10,10,10,11,12,10,10,
  25491. 10,12,12, 7, 8, 8,10,10, 8, 9, 8,11,10, 7, 8, 9,
  25492. 10,11,10,11,11,12,12,10,10,11,11,13, 7, 7, 8,10,
  25493. 10, 8, 8, 9,10,11, 7, 9, 7,11,10,10,11,11,13,12,
  25494. 11,11,10,13,11, 9,10,10,12,12,10,11,11,13,12,10,
  25495. 10,11,12,12,12,13,13,14,14,11,11,12,12,14,10,10,
  25496. 11,12,12,10,11,11,12,13,10,10,10,13,12,12,13,13,
  25497. 15,14,12,13,10,14,11, 8,10,10,12,12,10,11,10,13,
  25498. 13, 9,10,10,12,12,12,13,13,15,14,11,12,12,13,13,
  25499. 9,10,10,13,12,10,10,11,13,13,10,11,10,13,12,12,
  25500. 12,13,14,15,12,13,12,15,13, 9,10,10,12,13,10,11,
  25501. 10,13,12,10,10,11,12,13,12,14,12,15,13,12,12,13,
  25502. 14,15,11,12,11,14,13,11,11,12,14,15,12,13,12,15,
  25503. 14,13,11,15,11,16,13,14,14,16,15,11,12,12,14,14,
  25504. 11,12,11,14,13,12,12,13,14,15,13,14,12,16,12,14,
  25505. 14,14,15,15, 8,10,10,12,12, 9,10,10,12,12,10,10,
  25506. 11,13,13,11,12,12,13,13,12,13,13,14,15, 9,10,10,
  25507. 13,12,10,11,11,13,12,10,10,11,13,13,12,13,12,15,
  25508. 14,12,12,13,13,16, 9, 9,10,12,13,10,10,11,12,13,
  25509. 10,11,10,13,13,12,12,13,13,15,13,13,12,15,13,11,
  25510. 12,12,14,14,12,13,12,15,14,11,11,12,13,14,14,14,
  25511. 14,16,15,13,12,15,12,16,11,11,12,13,14,12,13,13,
  25512. 14,15,10,12,11,14,13,14,15,14,16,16,13,14,11,15,
  25513. 11,
  25514. };
  25515. static float _vq_quantthresh__16u1__p4_0[] = {
  25516. -1.5, -0.5, 0.5, 1.5,
  25517. };
  25518. static long _vq_quantmap__16u1__p4_0[] = {
  25519. 3, 1, 0, 2, 4,
  25520. };
  25521. static encode_aux_threshmatch _vq_auxt__16u1__p4_0 = {
  25522. _vq_quantthresh__16u1__p4_0,
  25523. _vq_quantmap__16u1__p4_0,
  25524. 5,
  25525. 5
  25526. };
  25527. static static_codebook _16u1__p4_0 = {
  25528. 4, 625,
  25529. _vq_lengthlist__16u1__p4_0,
  25530. 1, -533725184, 1611661312, 3, 0,
  25531. _vq_quantlist__16u1__p4_0,
  25532. NULL,
  25533. &_vq_auxt__16u1__p4_0,
  25534. NULL,
  25535. 0
  25536. };
  25537. static long _vq_quantlist__16u1__p5_0[] = {
  25538. 4,
  25539. 3,
  25540. 5,
  25541. 2,
  25542. 6,
  25543. 1,
  25544. 7,
  25545. 0,
  25546. 8,
  25547. };
  25548. static long _vq_lengthlist__16u1__p5_0[] = {
  25549. 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
  25550. 10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
  25551. 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8,
  25552. 10, 9,11,11,12,11, 7, 8, 8, 9, 9,11,11,12,12, 9,
  25553. 10,10,11,11,12,12,13,12, 9,10,10,11,11,12,12,12,
  25554. 13,
  25555. };
  25556. static float _vq_quantthresh__16u1__p5_0[] = {
  25557. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  25558. };
  25559. static long _vq_quantmap__16u1__p5_0[] = {
  25560. 7, 5, 3, 1, 0, 2, 4, 6,
  25561. 8,
  25562. };
  25563. static encode_aux_threshmatch _vq_auxt__16u1__p5_0 = {
  25564. _vq_quantthresh__16u1__p5_0,
  25565. _vq_quantmap__16u1__p5_0,
  25566. 9,
  25567. 9
  25568. };
  25569. static static_codebook _16u1__p5_0 = {
  25570. 2, 81,
  25571. _vq_lengthlist__16u1__p5_0,
  25572. 1, -531628032, 1611661312, 4, 0,
  25573. _vq_quantlist__16u1__p5_0,
  25574. NULL,
  25575. &_vq_auxt__16u1__p5_0,
  25576. NULL,
  25577. 0
  25578. };
  25579. static long _vq_quantlist__16u1__p6_0[] = {
  25580. 4,
  25581. 3,
  25582. 5,
  25583. 2,
  25584. 6,
  25585. 1,
  25586. 7,
  25587. 0,
  25588. 8,
  25589. };
  25590. static long _vq_lengthlist__16u1__p6_0[] = {
  25591. 3, 4, 4, 6, 6, 7, 7, 9, 9, 4, 4, 4, 6, 6, 8, 8,
  25592. 9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7,
  25593. 8, 8,10, 9, 6, 6, 6, 7, 7, 8, 8, 9,10, 7, 8, 7,
  25594. 8, 8, 9, 9,10,10, 7, 8, 8, 8, 8, 9, 9,10,10, 9,
  25595. 9, 9,10,10,10,10,11,11, 9, 9, 9,10,10,10,10,11,
  25596. 11,
  25597. };
  25598. static float _vq_quantthresh__16u1__p6_0[] = {
  25599. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  25600. };
  25601. static long _vq_quantmap__16u1__p6_0[] = {
  25602. 7, 5, 3, 1, 0, 2, 4, 6,
  25603. 8,
  25604. };
  25605. static encode_aux_threshmatch _vq_auxt__16u1__p6_0 = {
  25606. _vq_quantthresh__16u1__p6_0,
  25607. _vq_quantmap__16u1__p6_0,
  25608. 9,
  25609. 9
  25610. };
  25611. static static_codebook _16u1__p6_0 = {
  25612. 2, 81,
  25613. _vq_lengthlist__16u1__p6_0,
  25614. 1, -531628032, 1611661312, 4, 0,
  25615. _vq_quantlist__16u1__p6_0,
  25616. NULL,
  25617. &_vq_auxt__16u1__p6_0,
  25618. NULL,
  25619. 0
  25620. };
  25621. static long _vq_quantlist__16u1__p7_0[] = {
  25622. 1,
  25623. 0,
  25624. 2,
  25625. };
  25626. static long _vq_lengthlist__16u1__p7_0[] = {
  25627. 1, 4, 4, 4, 8, 8, 4, 8, 8, 5,11, 9, 8,12,11, 8,
  25628. 12,11, 5,10,11, 8,11,12, 8,11,12, 4,11,11,11,14,
  25629. 13,10,13,13, 8,14,13,12,14,16,12,16,15, 8,14,14,
  25630. 13,16,14,12,15,16, 4,11,11,10,14,13,11,14,14, 8,
  25631. 15,14,12,15,15,12,14,16, 8,14,14,11,16,15,12,15,
  25632. 13,
  25633. };
  25634. static float _vq_quantthresh__16u1__p7_0[] = {
  25635. -5.5, 5.5,
  25636. };
  25637. static long _vq_quantmap__16u1__p7_0[] = {
  25638. 1, 0, 2,
  25639. };
  25640. static encode_aux_threshmatch _vq_auxt__16u1__p7_0 = {
  25641. _vq_quantthresh__16u1__p7_0,
  25642. _vq_quantmap__16u1__p7_0,
  25643. 3,
  25644. 3
  25645. };
  25646. static static_codebook _16u1__p7_0 = {
  25647. 4, 81,
  25648. _vq_lengthlist__16u1__p7_0,
  25649. 1, -529137664, 1618345984, 2, 0,
  25650. _vq_quantlist__16u1__p7_0,
  25651. NULL,
  25652. &_vq_auxt__16u1__p7_0,
  25653. NULL,
  25654. 0
  25655. };
  25656. static long _vq_quantlist__16u1__p7_1[] = {
  25657. 5,
  25658. 4,
  25659. 6,
  25660. 3,
  25661. 7,
  25662. 2,
  25663. 8,
  25664. 1,
  25665. 9,
  25666. 0,
  25667. 10,
  25668. };
  25669. static long _vq_lengthlist__16u1__p7_1[] = {
  25670. 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 6, 5, 7, 7,
  25671. 8, 8, 8, 8, 8, 8, 4, 5, 6, 7, 7, 8, 8, 8, 8, 8,
  25672. 8, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8,
  25673. 8, 8, 8, 9, 9, 9, 9, 7, 8, 8, 8, 8, 9, 9, 9,10,
  25674. 9,10, 7, 8, 8, 8, 8, 9, 9, 9, 9,10, 9, 8, 8, 8,
  25675. 9, 9,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9,10,
  25676. 10,10,10, 8, 8, 8, 9, 9, 9,10,10,10,10,10, 8, 8,
  25677. 8, 9, 9,10,10,10,10,10,10,
  25678. };
  25679. static float _vq_quantthresh__16u1__p7_1[] = {
  25680. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  25681. 3.5, 4.5,
  25682. };
  25683. static long _vq_quantmap__16u1__p7_1[] = {
  25684. 9, 7, 5, 3, 1, 0, 2, 4,
  25685. 6, 8, 10,
  25686. };
  25687. static encode_aux_threshmatch _vq_auxt__16u1__p7_1 = {
  25688. _vq_quantthresh__16u1__p7_1,
  25689. _vq_quantmap__16u1__p7_1,
  25690. 11,
  25691. 11
  25692. };
  25693. static static_codebook _16u1__p7_1 = {
  25694. 2, 121,
  25695. _vq_lengthlist__16u1__p7_1,
  25696. 1, -531365888, 1611661312, 4, 0,
  25697. _vq_quantlist__16u1__p7_1,
  25698. NULL,
  25699. &_vq_auxt__16u1__p7_1,
  25700. NULL,
  25701. 0
  25702. };
  25703. static long _vq_quantlist__16u1__p8_0[] = {
  25704. 5,
  25705. 4,
  25706. 6,
  25707. 3,
  25708. 7,
  25709. 2,
  25710. 8,
  25711. 1,
  25712. 9,
  25713. 0,
  25714. 10,
  25715. };
  25716. static long _vq_lengthlist__16u1__p8_0[] = {
  25717. 1, 4, 4, 5, 5, 8, 8,10,10,12,12, 4, 7, 7, 8, 8,
  25718. 9, 9,12,11,14,13, 4, 7, 7, 7, 8, 9,10,11,11,13,
  25719. 12, 5, 8, 8, 9, 9,11,11,12,13,15,14, 5, 7, 8, 9,
  25720. 9,11,11,13,13,17,15, 8, 9,10,11,11,12,13,17,14,
  25721. 17,16, 8,10, 9,11,11,12,12,13,15,15,17,10,11,11,
  25722. 12,13,14,15,15,16,16,17, 9,11,11,12,12,14,15,17,
  25723. 15,15,16,11,14,12,14,15,16,15,16,16,16,15,11,13,
  25724. 13,14,14,15,15,16,16,15,16,
  25725. };
  25726. static float _vq_quantthresh__16u1__p8_0[] = {
  25727. -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5,
  25728. 38.5, 49.5,
  25729. };
  25730. static long _vq_quantmap__16u1__p8_0[] = {
  25731. 9, 7, 5, 3, 1, 0, 2, 4,
  25732. 6, 8, 10,
  25733. };
  25734. static encode_aux_threshmatch _vq_auxt__16u1__p8_0 = {
  25735. _vq_quantthresh__16u1__p8_0,
  25736. _vq_quantmap__16u1__p8_0,
  25737. 11,
  25738. 11
  25739. };
  25740. static static_codebook _16u1__p8_0 = {
  25741. 2, 121,
  25742. _vq_lengthlist__16u1__p8_0,
  25743. 1, -524582912, 1618345984, 4, 0,
  25744. _vq_quantlist__16u1__p8_0,
  25745. NULL,
  25746. &_vq_auxt__16u1__p8_0,
  25747. NULL,
  25748. 0
  25749. };
  25750. static long _vq_quantlist__16u1__p8_1[] = {
  25751. 5,
  25752. 4,
  25753. 6,
  25754. 3,
  25755. 7,
  25756. 2,
  25757. 8,
  25758. 1,
  25759. 9,
  25760. 0,
  25761. 10,
  25762. };
  25763. static long _vq_lengthlist__16u1__p8_1[] = {
  25764. 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 4, 6, 6, 7, 7,
  25765. 8, 7, 8, 8, 8, 8, 4, 6, 6, 7, 7, 7, 7, 8, 8, 8,
  25766. 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 6, 7, 7, 7,
  25767. 7, 8, 8, 8, 8, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9,
  25768. 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
  25769. 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
  25770. 9, 9, 9, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 8,
  25771. 8, 9, 9, 9, 9, 9, 9, 9, 9,
  25772. };
  25773. static float _vq_quantthresh__16u1__p8_1[] = {
  25774. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  25775. 3.5, 4.5,
  25776. };
  25777. static long _vq_quantmap__16u1__p8_1[] = {
  25778. 9, 7, 5, 3, 1, 0, 2, 4,
  25779. 6, 8, 10,
  25780. };
  25781. static encode_aux_threshmatch _vq_auxt__16u1__p8_1 = {
  25782. _vq_quantthresh__16u1__p8_1,
  25783. _vq_quantmap__16u1__p8_1,
  25784. 11,
  25785. 11
  25786. };
  25787. static static_codebook _16u1__p8_1 = {
  25788. 2, 121,
  25789. _vq_lengthlist__16u1__p8_1,
  25790. 1, -531365888, 1611661312, 4, 0,
  25791. _vq_quantlist__16u1__p8_1,
  25792. NULL,
  25793. &_vq_auxt__16u1__p8_1,
  25794. NULL,
  25795. 0
  25796. };
  25797. static long _vq_quantlist__16u1__p9_0[] = {
  25798. 7,
  25799. 6,
  25800. 8,
  25801. 5,
  25802. 9,
  25803. 4,
  25804. 10,
  25805. 3,
  25806. 11,
  25807. 2,
  25808. 12,
  25809. 1,
  25810. 13,
  25811. 0,
  25812. 14,
  25813. };
  25814. static long _vq_lengthlist__16u1__p9_0[] = {
  25815. 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25816. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25817. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25818. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25819. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25820. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25821. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25822. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25823. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25824. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25825. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25826. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25827. 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  25828. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  25829. 8,
  25830. };
  25831. static float _vq_quantthresh__16u1__p9_0[] = {
  25832. -1657.5, -1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5,
  25833. 382.5, 637.5, 892.5, 1147.5, 1402.5, 1657.5,
  25834. };
  25835. static long _vq_quantmap__16u1__p9_0[] = {
  25836. 13, 11, 9, 7, 5, 3, 1, 0,
  25837. 2, 4, 6, 8, 10, 12, 14,
  25838. };
  25839. static encode_aux_threshmatch _vq_auxt__16u1__p9_0 = {
  25840. _vq_quantthresh__16u1__p9_0,
  25841. _vq_quantmap__16u1__p9_0,
  25842. 15,
  25843. 15
  25844. };
  25845. static static_codebook _16u1__p9_0 = {
  25846. 2, 225,
  25847. _vq_lengthlist__16u1__p9_0,
  25848. 1, -514071552, 1627381760, 4, 0,
  25849. _vq_quantlist__16u1__p9_0,
  25850. NULL,
  25851. &_vq_auxt__16u1__p9_0,
  25852. NULL,
  25853. 0
  25854. };
  25855. static long _vq_quantlist__16u1__p9_1[] = {
  25856. 7,
  25857. 6,
  25858. 8,
  25859. 5,
  25860. 9,
  25861. 4,
  25862. 10,
  25863. 3,
  25864. 11,
  25865. 2,
  25866. 12,
  25867. 1,
  25868. 13,
  25869. 0,
  25870. 14,
  25871. };
  25872. static long _vq_lengthlist__16u1__p9_1[] = {
  25873. 1, 6, 5, 9, 9,10,10, 6, 7, 9, 9,10,10,10,10, 5,
  25874. 10, 8,10, 8,10,10, 8, 8,10, 9,10,10,10,10, 5, 8,
  25875. 9,10,10,10,10, 8,10,10,10,10,10,10,10, 9,10,10,
  25876. 10,10,10,10, 9, 9,10,10,10,10,10,10, 9, 9, 8, 9,
  25877. 10,10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,
  25878. 10,10,10,10,10,10,10,10,10,10,10, 8,10,10,10,10,
  25879. 10,10,10,10,10,10,10,10,10, 6, 8, 8,10,10,10, 8,
  25880. 10,10,10,10,10,10,10,10, 5, 8, 8,10,10,10, 9, 9,
  25881. 10,10,10,10,10,10,10,10, 9,10,10,10,10,10,10,10,
  25882. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  25883. 10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
  25884. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25885. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25886. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  25887. 9,
  25888. };
  25889. static float _vq_quantthresh__16u1__p9_1[] = {
  25890. -110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5,
  25891. 25.5, 42.5, 59.5, 76.5, 93.5, 110.5,
  25892. };
  25893. static long _vq_quantmap__16u1__p9_1[] = {
  25894. 13, 11, 9, 7, 5, 3, 1, 0,
  25895. 2, 4, 6, 8, 10, 12, 14,
  25896. };
  25897. static encode_aux_threshmatch _vq_auxt__16u1__p9_1 = {
  25898. _vq_quantthresh__16u1__p9_1,
  25899. _vq_quantmap__16u1__p9_1,
  25900. 15,
  25901. 15
  25902. };
  25903. static static_codebook _16u1__p9_1 = {
  25904. 2, 225,
  25905. _vq_lengthlist__16u1__p9_1,
  25906. 1, -522338304, 1620115456, 4, 0,
  25907. _vq_quantlist__16u1__p9_1,
  25908. NULL,
  25909. &_vq_auxt__16u1__p9_1,
  25910. NULL,
  25911. 0
  25912. };
  25913. static long _vq_quantlist__16u1__p9_2[] = {
  25914. 8,
  25915. 7,
  25916. 9,
  25917. 6,
  25918. 10,
  25919. 5,
  25920. 11,
  25921. 4,
  25922. 12,
  25923. 3,
  25924. 13,
  25925. 2,
  25926. 14,
  25927. 1,
  25928. 15,
  25929. 0,
  25930. 16,
  25931. };
  25932. static long _vq_lengthlist__16u1__p9_2[] = {
  25933. 1, 6, 6, 7, 8, 8,11,10, 9, 9,11, 9,10, 9,11,11,
  25934. 9, 6, 7, 6,11, 8,11, 9,10,10,11, 9,11,10,10,10,
  25935. 11, 9, 5, 7, 7, 8, 8,10,11, 8, 8,11, 9, 9,10,11,
  25936. 9,10,11, 8, 9, 6, 8, 8, 9, 9,10,10,11,11,11, 9,
  25937. 11,10, 9,11, 8, 8, 8, 9, 8, 9,10,11, 9, 9,11,11,
  25938. 10, 9, 9,11,10, 8,11, 8, 9, 8,11, 9,10, 9,10,11,
  25939. 11,10,10, 9,10,10, 8, 8, 9,10,10,10, 9,11, 9,10,
  25940. 11,11,11,11,10, 9,11, 9, 9,11,11,10, 8,11,11,11,
  25941. 9,10,10,11,10,11,11, 9,11,10, 9,11,10,10,10,10,
  25942. 9,11,10,11,10, 9, 9,10,11, 9, 8,10,11,11,10,10,
  25943. 11, 9,11,10,11,11,10,11, 9, 9, 8,10, 8, 9,11, 9,
  25944. 8,10,10, 9,11,10,11,10,11, 9,11, 8,10,11,11,11,
  25945. 11,10,10,11,11,11,11,10,11,11,10, 9, 8,10,10, 9,
  25946. 11,10,11,11,11, 9, 9, 9,11,11,11,10,10, 9, 9,10,
  25947. 9,11,11,11,11, 8,10,11,10,11,11,10,11,11, 9, 9,
  25948. 9,10, 9,11, 9,11,11,11,11,11,10,11,11,10,11,10,
  25949. 11,11, 9,11,10,11,10, 9,10, 9,10,10,11,11,11,11,
  25950. 9,10, 9,10,11,11,10,11,11,11,11,11,11,10,11,11,
  25951. 10,
  25952. };
  25953. static float _vq_quantthresh__16u1__p9_2[] = {
  25954. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  25955. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  25956. };
  25957. static long _vq_quantmap__16u1__p9_2[] = {
  25958. 15, 13, 11, 9, 7, 5, 3, 1,
  25959. 0, 2, 4, 6, 8, 10, 12, 14,
  25960. 16,
  25961. };
  25962. static encode_aux_threshmatch _vq_auxt__16u1__p9_2 = {
  25963. _vq_quantthresh__16u1__p9_2,
  25964. _vq_quantmap__16u1__p9_2,
  25965. 17,
  25966. 17
  25967. };
  25968. static static_codebook _16u1__p9_2 = {
  25969. 2, 289,
  25970. _vq_lengthlist__16u1__p9_2,
  25971. 1, -529530880, 1611661312, 5, 0,
  25972. _vq_quantlist__16u1__p9_2,
  25973. NULL,
  25974. &_vq_auxt__16u1__p9_2,
  25975. NULL,
  25976. 0
  25977. };
  25978. static long _huff_lengthlist__16u1__short[] = {
  25979. 5, 7,10, 9,11,10,15,11,13,16, 6, 4, 6, 6, 7, 7,
  25980. 10, 9,12,16,10, 6, 5, 6, 6, 7,10,11,16,16, 9, 6,
  25981. 7, 6, 7, 7,10, 8,14,16,11, 6, 5, 4, 5, 6, 8, 9,
  25982. 15,16, 9, 6, 6, 5, 6, 6, 9, 8,14,16,12, 7, 6, 6,
  25983. 5, 6, 6, 7,13,16, 8, 6, 7, 6, 5, 5, 4, 4,11,16,
  25984. 9, 8, 9, 9, 7, 7, 6, 5,13,16,14,14,16,15,16,15,
  25985. 16,16,16,16,
  25986. };
  25987. static static_codebook _huff_book__16u1__short = {
  25988. 2, 100,
  25989. _huff_lengthlist__16u1__short,
  25990. 0, 0, 0, 0, 0,
  25991. NULL,
  25992. NULL,
  25993. NULL,
  25994. NULL,
  25995. 0
  25996. };
  25997. static long _huff_lengthlist__16u2__long[] = {
  25998. 5, 7,10,10,10,11,11,13,18,19, 6, 5, 5, 6, 7, 8,
  25999. 9,12,19,19, 8, 5, 4, 4, 6, 7, 9,13,19,19, 8, 5,
  26000. 4, 4, 5, 6, 8,12,17,19, 7, 5, 5, 4, 4, 5, 7,12,
  26001. 18,18, 8, 7, 7, 6, 5, 5, 6,10,18,18, 9, 9, 9, 8,
  26002. 6, 5, 6, 9,18,18,11,13,13,13, 8, 7, 7, 9,16,18,
  26003. 13,17,18,16,11, 9, 9, 9,17,18,15,18,18,18,15,13,
  26004. 13,14,18,18,
  26005. };
  26006. static static_codebook _huff_book__16u2__long = {
  26007. 2, 100,
  26008. _huff_lengthlist__16u2__long,
  26009. 0, 0, 0, 0, 0,
  26010. NULL,
  26011. NULL,
  26012. NULL,
  26013. NULL,
  26014. 0
  26015. };
  26016. static long _huff_lengthlist__16u2__short[] = {
  26017. 8,11,12,12,14,15,16,16,16,16, 9, 7, 7, 8, 9,11,
  26018. 13,14,16,16,13, 7, 6, 6, 7, 9,12,13,15,16,15, 7,
  26019. 6, 5, 4, 6,10,11,14,16,12, 8, 7, 4, 2, 4, 7,10,
  26020. 14,16,11, 9, 7, 5, 3, 4, 6, 9,14,16,11,10, 9, 7,
  26021. 5, 5, 6, 9,16,16,10,10, 9, 8, 6, 6, 7,10,16,16,
  26022. 11,11,11,10,10,10,11,14,16,16,16,14,14,13,14,16,
  26023. 16,16,16,16,
  26024. };
  26025. static static_codebook _huff_book__16u2__short = {
  26026. 2, 100,
  26027. _huff_lengthlist__16u2__short,
  26028. 0, 0, 0, 0, 0,
  26029. NULL,
  26030. NULL,
  26031. NULL,
  26032. NULL,
  26033. 0
  26034. };
  26035. static long _vq_quantlist__16u2_p1_0[] = {
  26036. 1,
  26037. 0,
  26038. 2,
  26039. };
  26040. static long _vq_lengthlist__16u2_p1_0[] = {
  26041. 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 9, 9, 7,
  26042. 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 8, 9,
  26043. 9, 7, 9, 9, 7, 9, 9, 9,10,10, 9,10,10, 7, 9, 9,
  26044. 9,10,10, 9,10,11, 5, 7, 8, 8, 9, 9, 8, 9, 9, 7,
  26045. 9, 9, 9,10,10, 9, 9,10, 7, 9, 9, 9,10,10, 9,11,
  26046. 10,
  26047. };
  26048. static float _vq_quantthresh__16u2_p1_0[] = {
  26049. -0.5, 0.5,
  26050. };
  26051. static long _vq_quantmap__16u2_p1_0[] = {
  26052. 1, 0, 2,
  26053. };
  26054. static encode_aux_threshmatch _vq_auxt__16u2_p1_0 = {
  26055. _vq_quantthresh__16u2_p1_0,
  26056. _vq_quantmap__16u2_p1_0,
  26057. 3,
  26058. 3
  26059. };
  26060. static static_codebook _16u2_p1_0 = {
  26061. 4, 81,
  26062. _vq_lengthlist__16u2_p1_0,
  26063. 1, -535822336, 1611661312, 2, 0,
  26064. _vq_quantlist__16u2_p1_0,
  26065. NULL,
  26066. &_vq_auxt__16u2_p1_0,
  26067. NULL,
  26068. 0
  26069. };
  26070. static long _vq_quantlist__16u2_p2_0[] = {
  26071. 2,
  26072. 1,
  26073. 3,
  26074. 0,
  26075. 4,
  26076. };
  26077. static long _vq_lengthlist__16u2_p2_0[] = {
  26078. 3, 5, 5, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 9,
  26079. 10, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
  26080. 8,10,10, 7, 8, 8,10,10,10,10,10,12,12, 9,10,10,
  26081. 11,12, 5, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,
  26082. 10, 9,10,10,12,11,10,10,10,12,12, 9,10,10,12,12,
  26083. 10,11,10,13,12, 9,10,10,12,12,12,12,12,14,14,11,
  26084. 12,12,13,14, 9,10,10,12,12, 9,10,10,12,12,10,10,
  26085. 10,12,12,11,12,12,14,13,12,13,12,14,14, 5, 7, 7,
  26086. 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,12,
  26087. 12,10,10,11,12,12, 7, 8, 8,10,10, 8, 9, 9,11,11,
  26088. 8, 9, 9,11,11,11,11,11,12,13,10,11,11,12,13, 7,
  26089. 8, 8,10,10, 8, 9, 8,11,10, 8, 9, 9,11,11,10,11,
  26090. 10,13,12,10,11,11,13,13, 9,11,10,13,13,10,11,11,
  26091. 13,13,10,11,11,13,13,12,12,13,13,15,12,12,13,14,
  26092. 15, 9,10,10,12,12,10,11,10,13,12,10,11,11,13,13,
  26093. 11,13,11,14,13,12,13,13,15,15, 5, 7, 7, 9, 9, 7,
  26094. 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,12,10,10,
  26095. 11,12,12, 7, 8, 8,10,10, 8, 9, 9,11,11, 8, 8, 9,
  26096. 10,11,10,11,11,13,13,10,10,11,12,13, 7, 8, 8,10,
  26097. 11, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,12,
  26098. 11,11,11,13,12, 9,10,10,12,12,10,11,11,13,13,10,
  26099. 10,11,12,13,12,13,13,15,14,11,11,13,12,14,10,10,
  26100. 11,13,13,10,11,11,13,13,10,11,11,13,13,12,13,13,
  26101. 14,14,12,13,12,14,13, 8,10, 9,12,12, 9,11,10,13,
  26102. 13, 9,10,10,12,13,12,13,13,14,14,12,12,13,14,14,
  26103. 9,11,10,13,13,10,11,11,13,13,10,11,11,13,13,12,
  26104. 13,13,15,15,13,13,13,14,15, 9,10,10,12,13,10,11,
  26105. 10,13,12,10,11,11,13,13,12,13,12,15,14,13,13,13,
  26106. 14,15,11,12,12,15,14,12,12,13,15,15,12,13,13,15,
  26107. 14,14,13,15,14,16,13,14,15,16,16,11,12,12,14,14,
  26108. 11,12,12,15,14,12,13,13,15,15,13,14,13,16,14,14,
  26109. 14,14,16,16, 8, 9, 9,12,12, 9,10,10,13,12, 9,10,
  26110. 10,13,13,12,12,12,14,14,12,12,13,15,15, 9,10,10,
  26111. 13,12,10,11,11,13,13,10,10,11,13,14,12,13,13,15,
  26112. 15,12,12,13,14,15, 9,10,10,13,13,10,11,11,13,13,
  26113. 10,11,11,13,13,12,13,13,14,14,13,14,13,15,14,11,
  26114. 12,12,14,14,12,13,13,15,14,11,12,12,14,15,14,14,
  26115. 14,16,15,13,12,14,14,16,11,12,13,14,15,12,13,13,
  26116. 14,16,12,13,12,15,14,13,15,14,16,16,14,15,13,16,
  26117. 13,
  26118. };
  26119. static float _vq_quantthresh__16u2_p2_0[] = {
  26120. -1.5, -0.5, 0.5, 1.5,
  26121. };
  26122. static long _vq_quantmap__16u2_p2_0[] = {
  26123. 3, 1, 0, 2, 4,
  26124. };
  26125. static encode_aux_threshmatch _vq_auxt__16u2_p2_0 = {
  26126. _vq_quantthresh__16u2_p2_0,
  26127. _vq_quantmap__16u2_p2_0,
  26128. 5,
  26129. 5
  26130. };
  26131. static static_codebook _16u2_p2_0 = {
  26132. 4, 625,
  26133. _vq_lengthlist__16u2_p2_0,
  26134. 1, -533725184, 1611661312, 3, 0,
  26135. _vq_quantlist__16u2_p2_0,
  26136. NULL,
  26137. &_vq_auxt__16u2_p2_0,
  26138. NULL,
  26139. 0
  26140. };
  26141. static long _vq_quantlist__16u2_p3_0[] = {
  26142. 4,
  26143. 3,
  26144. 5,
  26145. 2,
  26146. 6,
  26147. 1,
  26148. 7,
  26149. 0,
  26150. 8,
  26151. };
  26152. static long _vq_lengthlist__16u2_p3_0[] = {
  26153. 2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 5, 6, 6, 8, 7,
  26154. 9, 9, 4, 5, 5, 6, 6, 7, 8, 9, 9, 6, 6, 6, 7, 7,
  26155. 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8, 9,10, 7, 8, 7,
  26156. 8, 8, 9, 9,10,10, 7, 8, 8, 8, 8, 9, 9,10,10, 9,
  26157. 9, 9,10, 9,10,10,11,11, 9, 9, 9,10,10,10,10,11,
  26158. 11,
  26159. };
  26160. static float _vq_quantthresh__16u2_p3_0[] = {
  26161. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  26162. };
  26163. static long _vq_quantmap__16u2_p3_0[] = {
  26164. 7, 5, 3, 1, 0, 2, 4, 6,
  26165. 8,
  26166. };
  26167. static encode_aux_threshmatch _vq_auxt__16u2_p3_0 = {
  26168. _vq_quantthresh__16u2_p3_0,
  26169. _vq_quantmap__16u2_p3_0,
  26170. 9,
  26171. 9
  26172. };
  26173. static static_codebook _16u2_p3_0 = {
  26174. 2, 81,
  26175. _vq_lengthlist__16u2_p3_0,
  26176. 1, -531628032, 1611661312, 4, 0,
  26177. _vq_quantlist__16u2_p3_0,
  26178. NULL,
  26179. &_vq_auxt__16u2_p3_0,
  26180. NULL,
  26181. 0
  26182. };
  26183. static long _vq_quantlist__16u2_p4_0[] = {
  26184. 8,
  26185. 7,
  26186. 9,
  26187. 6,
  26188. 10,
  26189. 5,
  26190. 11,
  26191. 4,
  26192. 12,
  26193. 3,
  26194. 13,
  26195. 2,
  26196. 14,
  26197. 1,
  26198. 15,
  26199. 0,
  26200. 16,
  26201. };
  26202. static long _vq_lengthlist__16u2_p4_0[] = {
  26203. 2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,11,
  26204. 11, 5, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
  26205. 12,11, 5, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
  26206. 11,12,12, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
  26207. 11,11,12,12, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,
  26208. 10,11,11,12,12, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,
  26209. 11,11,12,12,12,12, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,
  26210. 10,11,11,11,12,12,12, 9, 9, 9, 9, 9, 9,10,10,10,
  26211. 10,10,11,11,12,12,13,13, 8, 9, 9, 9, 9,10, 9,10,
  26212. 10,10,10,11,11,12,12,13,13, 9, 9, 9, 9, 9,10,10,
  26213. 10,10,11,11,11,12,12,12,13,13, 9, 9, 9, 9, 9,10,
  26214. 10,10,10,11,11,12,11,12,12,13,13,10,10,10,10,10,
  26215. 11,11,11,11,11,12,12,12,12,13,13,14,10,10,10,10,
  26216. 10,11,11,11,11,12,11,12,12,13,12,13,13,11,11,11,
  26217. 11,11,12,12,12,12,12,12,13,13,13,13,14,14,11,11,
  26218. 11,11,11,12,12,12,12,12,12,13,12,13,13,14,14,11,
  26219. 12,12,12,12,12,12,13,13,13,13,13,13,14,14,14,14,
  26220. 11,12,12,12,12,12,12,13,13,13,13,14,13,14,14,14,
  26221. 14,
  26222. };
  26223. static float _vq_quantthresh__16u2_p4_0[] = {
  26224. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  26225. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  26226. };
  26227. static long _vq_quantmap__16u2_p4_0[] = {
  26228. 15, 13, 11, 9, 7, 5, 3, 1,
  26229. 0, 2, 4, 6, 8, 10, 12, 14,
  26230. 16,
  26231. };
  26232. static encode_aux_threshmatch _vq_auxt__16u2_p4_0 = {
  26233. _vq_quantthresh__16u2_p4_0,
  26234. _vq_quantmap__16u2_p4_0,
  26235. 17,
  26236. 17
  26237. };
  26238. static static_codebook _16u2_p4_0 = {
  26239. 2, 289,
  26240. _vq_lengthlist__16u2_p4_0,
  26241. 1, -529530880, 1611661312, 5, 0,
  26242. _vq_quantlist__16u2_p4_0,
  26243. NULL,
  26244. &_vq_auxt__16u2_p4_0,
  26245. NULL,
  26246. 0
  26247. };
  26248. static long _vq_quantlist__16u2_p5_0[] = {
  26249. 1,
  26250. 0,
  26251. 2,
  26252. };
  26253. static long _vq_lengthlist__16u2_p5_0[] = {
  26254. 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 7,10, 9, 7,
  26255. 10, 9, 5, 8, 9, 7, 9,10, 7, 9,10, 4, 9, 9, 9,11,
  26256. 11, 8,11,11, 7,11,11,10,10,13,10,14,13, 7,11,11,
  26257. 10,13,11,10,13,14, 5, 9, 9, 8,11,11, 9,11,11, 7,
  26258. 11,11,10,14,13,10,12,14, 7,11,11,10,13,13,10,13,
  26259. 10,
  26260. };
  26261. static float _vq_quantthresh__16u2_p5_0[] = {
  26262. -5.5, 5.5,
  26263. };
  26264. static long _vq_quantmap__16u2_p5_0[] = {
  26265. 1, 0, 2,
  26266. };
  26267. static encode_aux_threshmatch _vq_auxt__16u2_p5_0 = {
  26268. _vq_quantthresh__16u2_p5_0,
  26269. _vq_quantmap__16u2_p5_0,
  26270. 3,
  26271. 3
  26272. };
  26273. static static_codebook _16u2_p5_0 = {
  26274. 4, 81,
  26275. _vq_lengthlist__16u2_p5_0,
  26276. 1, -529137664, 1618345984, 2, 0,
  26277. _vq_quantlist__16u2_p5_0,
  26278. NULL,
  26279. &_vq_auxt__16u2_p5_0,
  26280. NULL,
  26281. 0
  26282. };
  26283. static long _vq_quantlist__16u2_p5_1[] = {
  26284. 5,
  26285. 4,
  26286. 6,
  26287. 3,
  26288. 7,
  26289. 2,
  26290. 8,
  26291. 1,
  26292. 9,
  26293. 0,
  26294. 10,
  26295. };
  26296. static long _vq_lengthlist__16u2_p5_1[] = {
  26297. 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 5, 5, 5, 7, 7,
  26298. 7, 7, 8, 8, 8, 8, 5, 5, 6, 7, 7, 7, 7, 8, 8, 8,
  26299. 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7,
  26300. 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 9, 9,
  26301. 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
  26302. 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
  26303. 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8,
  26304. 8, 8, 8, 9, 9, 9, 9, 9, 9,
  26305. };
  26306. static float _vq_quantthresh__16u2_p5_1[] = {
  26307. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  26308. 3.5, 4.5,
  26309. };
  26310. static long _vq_quantmap__16u2_p5_1[] = {
  26311. 9, 7, 5, 3, 1, 0, 2, 4,
  26312. 6, 8, 10,
  26313. };
  26314. static encode_aux_threshmatch _vq_auxt__16u2_p5_1 = {
  26315. _vq_quantthresh__16u2_p5_1,
  26316. _vq_quantmap__16u2_p5_1,
  26317. 11,
  26318. 11
  26319. };
  26320. static static_codebook _16u2_p5_1 = {
  26321. 2, 121,
  26322. _vq_lengthlist__16u2_p5_1,
  26323. 1, -531365888, 1611661312, 4, 0,
  26324. _vq_quantlist__16u2_p5_1,
  26325. NULL,
  26326. &_vq_auxt__16u2_p5_1,
  26327. NULL,
  26328. 0
  26329. };
  26330. static long _vq_quantlist__16u2_p6_0[] = {
  26331. 6,
  26332. 5,
  26333. 7,
  26334. 4,
  26335. 8,
  26336. 3,
  26337. 9,
  26338. 2,
  26339. 10,
  26340. 1,
  26341. 11,
  26342. 0,
  26343. 12,
  26344. };
  26345. static long _vq_lengthlist__16u2_p6_0[] = {
  26346. 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 6, 6,
  26347. 8, 8, 9, 9, 9, 9,10,10,12,11, 4, 6, 6, 8, 8, 9,
  26348. 9, 9, 9,10,10,11,12, 7, 8, 8, 9, 9,10,10,10,10,
  26349. 12,12,13,12, 7, 8, 8, 9, 9,10,10,10,10,11,12,12,
  26350. 12, 8, 9, 9,10,10,11,11,11,11,12,12,13,13, 8, 9,
  26351. 9,10,10,11,11,11,11,12,13,13,13, 8, 9, 9,10,10,
  26352. 11,11,12,12,13,13,14,14, 8, 9, 9,10,10,11,11,12,
  26353. 12,13,13,14,14, 9,10,10,11,12,13,12,13,14,14,14,
  26354. 14,14, 9,10,10,11,12,12,13,13,13,14,14,14,14,10,
  26355. 11,11,12,12,13,13,14,14,15,15,15,15,10,11,11,12,
  26356. 12,13,13,14,14,14,14,15,15,
  26357. };
  26358. static float _vq_quantthresh__16u2_p6_0[] = {
  26359. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  26360. 12.5, 17.5, 22.5, 27.5,
  26361. };
  26362. static long _vq_quantmap__16u2_p6_0[] = {
  26363. 11, 9, 7, 5, 3, 1, 0, 2,
  26364. 4, 6, 8, 10, 12,
  26365. };
  26366. static encode_aux_threshmatch _vq_auxt__16u2_p6_0 = {
  26367. _vq_quantthresh__16u2_p6_0,
  26368. _vq_quantmap__16u2_p6_0,
  26369. 13,
  26370. 13
  26371. };
  26372. static static_codebook _16u2_p6_0 = {
  26373. 2, 169,
  26374. _vq_lengthlist__16u2_p6_0,
  26375. 1, -526516224, 1616117760, 4, 0,
  26376. _vq_quantlist__16u2_p6_0,
  26377. NULL,
  26378. &_vq_auxt__16u2_p6_0,
  26379. NULL,
  26380. 0
  26381. };
  26382. static long _vq_quantlist__16u2_p6_1[] = {
  26383. 2,
  26384. 1,
  26385. 3,
  26386. 0,
  26387. 4,
  26388. };
  26389. static long _vq_lengthlist__16u2_p6_1[] = {
  26390. 2, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
  26391. 5, 5, 6, 6, 5, 5, 5, 6, 6,
  26392. };
  26393. static float _vq_quantthresh__16u2_p6_1[] = {
  26394. -1.5, -0.5, 0.5, 1.5,
  26395. };
  26396. static long _vq_quantmap__16u2_p6_1[] = {
  26397. 3, 1, 0, 2, 4,
  26398. };
  26399. static encode_aux_threshmatch _vq_auxt__16u2_p6_1 = {
  26400. _vq_quantthresh__16u2_p6_1,
  26401. _vq_quantmap__16u2_p6_1,
  26402. 5,
  26403. 5
  26404. };
  26405. static static_codebook _16u2_p6_1 = {
  26406. 2, 25,
  26407. _vq_lengthlist__16u2_p6_1,
  26408. 1, -533725184, 1611661312, 3, 0,
  26409. _vq_quantlist__16u2_p6_1,
  26410. NULL,
  26411. &_vq_auxt__16u2_p6_1,
  26412. NULL,
  26413. 0
  26414. };
  26415. static long _vq_quantlist__16u2_p7_0[] = {
  26416. 6,
  26417. 5,
  26418. 7,
  26419. 4,
  26420. 8,
  26421. 3,
  26422. 9,
  26423. 2,
  26424. 10,
  26425. 1,
  26426. 11,
  26427. 0,
  26428. 12,
  26429. };
  26430. static long _vq_lengthlist__16u2_p7_0[] = {
  26431. 1, 4, 4, 7, 7, 7, 7, 8, 8, 9, 9,10,10, 4, 6, 6,
  26432. 9, 9, 9, 9, 9, 9,10,10,11,11, 4, 6, 6, 8, 9, 9,
  26433. 9, 9, 9,10,11,12,11, 7, 8, 9,10,10,10,10,11,10,
  26434. 11,12,12,13, 7, 9, 9,10,10,10,10,10,10,11,12,13,
  26435. 13, 7, 9, 8,10,10,11,11,11,12,12,13,13,14, 7, 9,
  26436. 9,10,10,11,11,11,12,13,13,13,13, 8, 9, 9,10,11,
  26437. 11,12,12,12,13,13,13,13, 8, 9, 9,10,11,11,11,12,
  26438. 12,13,13,14,14, 9,10,10,12,11,12,13,13,13,14,13,
  26439. 13,13, 9,10,10,11,11,12,12,13,14,13,13,14,13,10,
  26440. 11,11,12,13,14,14,14,15,14,14,14,14,10,11,11,12,
  26441. 12,13,13,13,14,14,14,15,14,
  26442. };
  26443. static float _vq_quantthresh__16u2_p7_0[] = {
  26444. -60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5,
  26445. 27.5, 38.5, 49.5, 60.5,
  26446. };
  26447. static long _vq_quantmap__16u2_p7_0[] = {
  26448. 11, 9, 7, 5, 3, 1, 0, 2,
  26449. 4, 6, 8, 10, 12,
  26450. };
  26451. static encode_aux_threshmatch _vq_auxt__16u2_p7_0 = {
  26452. _vq_quantthresh__16u2_p7_0,
  26453. _vq_quantmap__16u2_p7_0,
  26454. 13,
  26455. 13
  26456. };
  26457. static static_codebook _16u2_p7_0 = {
  26458. 2, 169,
  26459. _vq_lengthlist__16u2_p7_0,
  26460. 1, -523206656, 1618345984, 4, 0,
  26461. _vq_quantlist__16u2_p7_0,
  26462. NULL,
  26463. &_vq_auxt__16u2_p7_0,
  26464. NULL,
  26465. 0
  26466. };
  26467. static long _vq_quantlist__16u2_p7_1[] = {
  26468. 5,
  26469. 4,
  26470. 6,
  26471. 3,
  26472. 7,
  26473. 2,
  26474. 8,
  26475. 1,
  26476. 9,
  26477. 0,
  26478. 10,
  26479. };
  26480. static long _vq_lengthlist__16u2_p7_1[] = {
  26481. 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7,
  26482. 7, 7, 7, 7, 8, 8, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8,
  26483. 8, 6, 6, 7, 7, 7, 8, 7, 8, 8, 8, 8, 6, 7, 7, 7,
  26484. 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
  26485. 8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7,
  26486. 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8,
  26487. 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8,
  26488. 8, 8, 8, 8, 8, 8, 8, 8, 8,
  26489. };
  26490. static float _vq_quantthresh__16u2_p7_1[] = {
  26491. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  26492. 3.5, 4.5,
  26493. };
  26494. static long _vq_quantmap__16u2_p7_1[] = {
  26495. 9, 7, 5, 3, 1, 0, 2, 4,
  26496. 6, 8, 10,
  26497. };
  26498. static encode_aux_threshmatch _vq_auxt__16u2_p7_1 = {
  26499. _vq_quantthresh__16u2_p7_1,
  26500. _vq_quantmap__16u2_p7_1,
  26501. 11,
  26502. 11
  26503. };
  26504. static static_codebook _16u2_p7_1 = {
  26505. 2, 121,
  26506. _vq_lengthlist__16u2_p7_1,
  26507. 1, -531365888, 1611661312, 4, 0,
  26508. _vq_quantlist__16u2_p7_1,
  26509. NULL,
  26510. &_vq_auxt__16u2_p7_1,
  26511. NULL,
  26512. 0
  26513. };
  26514. static long _vq_quantlist__16u2_p8_0[] = {
  26515. 7,
  26516. 6,
  26517. 8,
  26518. 5,
  26519. 9,
  26520. 4,
  26521. 10,
  26522. 3,
  26523. 11,
  26524. 2,
  26525. 12,
  26526. 1,
  26527. 13,
  26528. 0,
  26529. 14,
  26530. };
  26531. static long _vq_lengthlist__16u2_p8_0[] = {
  26532. 1, 5, 5, 7, 7, 8, 8, 7, 7, 8, 8,10, 9,11,11, 4,
  26533. 6, 6, 8, 8,10, 9, 9, 8, 9, 9,10,10,12,14, 4, 6,
  26534. 7, 8, 9, 9,10, 9, 8, 9, 9,10,12,12,11, 7, 8, 8,
  26535. 10,10,10,10, 9, 9,10,10,11,13,13,12, 7, 8, 8, 9,
  26536. 11,11,10, 9, 9,11,10,12,11,11,14, 8, 9, 9,11,10,
  26537. 11,11,10,10,11,11,13,12,14,12, 8, 9, 9,11,12,11,
  26538. 11,10,10,12,11,12,12,12,14, 7, 8, 8, 9, 9,10,10,
  26539. 10,11,12,11,13,13,14,12, 7, 8, 9, 9, 9,10,10,11,
  26540. 11,11,12,12,14,14,14, 8,10, 9,10,11,11,11,11,14,
  26541. 12,12,13,14,14,13, 9, 9, 9,10,11,11,11,12,12,12,
  26542. 14,12,14,13,14,10,10,10,12,11,12,11,14,13,14,13,
  26543. 14,14,13,14, 9,10,10,11,12,11,13,12,13,13,14,14,
  26544. 14,13,14,10,13,13,12,12,11,12,14,13,14,13,14,12,
  26545. 14,13,10,11,11,12,11,12,12,14,14,14,13,14,14,14,
  26546. 14,
  26547. };
  26548. static float _vq_quantthresh__16u2_p8_0[] = {
  26549. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  26550. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  26551. };
  26552. static long _vq_quantmap__16u2_p8_0[] = {
  26553. 13, 11, 9, 7, 5, 3, 1, 0,
  26554. 2, 4, 6, 8, 10, 12, 14,
  26555. };
  26556. static encode_aux_threshmatch _vq_auxt__16u2_p8_0 = {
  26557. _vq_quantthresh__16u2_p8_0,
  26558. _vq_quantmap__16u2_p8_0,
  26559. 15,
  26560. 15
  26561. };
  26562. static static_codebook _16u2_p8_0 = {
  26563. 2, 225,
  26564. _vq_lengthlist__16u2_p8_0,
  26565. 1, -520986624, 1620377600, 4, 0,
  26566. _vq_quantlist__16u2_p8_0,
  26567. NULL,
  26568. &_vq_auxt__16u2_p8_0,
  26569. NULL,
  26570. 0
  26571. };
  26572. static long _vq_quantlist__16u2_p8_1[] = {
  26573. 10,
  26574. 9,
  26575. 11,
  26576. 8,
  26577. 12,
  26578. 7,
  26579. 13,
  26580. 6,
  26581. 14,
  26582. 5,
  26583. 15,
  26584. 4,
  26585. 16,
  26586. 3,
  26587. 17,
  26588. 2,
  26589. 18,
  26590. 1,
  26591. 19,
  26592. 0,
  26593. 20,
  26594. };
  26595. static long _vq_lengthlist__16u2_p8_1[] = {
  26596. 2, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10, 9,10, 9, 9,
  26597. 9,10,10,10,10, 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,
  26598. 10, 9,10,10,10,10,10,10,11,10, 5, 6, 6, 7, 7, 8,
  26599. 8, 8, 9, 9,10,10,10,10,10,10,10,10,10,10,10, 7,
  26600. 7, 7, 8, 8, 9, 8, 9, 9,10, 9,10,10,10,10,10,10,
  26601. 11,10,11,10, 7, 7, 7, 8, 8, 8, 9, 9, 9,10, 9,10,
  26602. 10,10,10,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9,
  26603. 10, 9,10,10,10,10,10,10,10,11,10,10,11,10, 8, 8,
  26604. 8, 8, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,11,
  26605. 11,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
  26606. 11,10,11,10,11,10,11,10, 8, 9, 9, 9, 9, 9,10,10,
  26607. 10,10,10,10,10,10,10,10,11,11,10,10,10, 9,10, 9,
  26608. 9,10,10,10,11,10,10,10,10,10,10,10,10,11,11,11,
  26609. 11,11, 9, 9, 9,10, 9,10,10,10,10,10,10,11,10,11,
  26610. 10,11,11,11,11,10,10, 9,10, 9,10,10,10,10,11,10,
  26611. 10,10,10,10,11,10,11,10,11,10,10,11, 9,10,10,10,
  26612. 10,10,10,10,10,10,11,10,10,11,11,10,11,11,11,11,
  26613. 11, 9, 9,10,10,10,10,10,11,10,10,11,10,10,11,10,
  26614. 10,11,11,11,11,11, 9,10,10,10,10,10,10,10,11,10,
  26615. 11,10,11,10,11,11,11,11,11,10,11,10,10,10,10,10,
  26616. 10,10,10,10,11,11,11,11,11,11,11,11,11,10,11,11,
  26617. 10,10,10,10,10,11,10,10,10,11,10,11,11,11,11,10,
  26618. 12,11,11,11,10,10,10,10,10,10,11,10,10,10,11,11,
  26619. 12,11,11,11,11,11,11,11,11,11,10,10,10,11,10,11,
  26620. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,
  26621. 10,10,11,10,11,10,10,11,11,11,11,11,11,11,11,11,
  26622. 11,11,11,10,10,10,10,10,10,10,11,11,10,11,11,10,
  26623. 11,11,10,11,11,11,10,11,11,
  26624. };
  26625. static float _vq_quantthresh__16u2_p8_1[] = {
  26626. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  26627. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  26628. 6.5, 7.5, 8.5, 9.5,
  26629. };
  26630. static long _vq_quantmap__16u2_p8_1[] = {
  26631. 19, 17, 15, 13, 11, 9, 7, 5,
  26632. 3, 1, 0, 2, 4, 6, 8, 10,
  26633. 12, 14, 16, 18, 20,
  26634. };
  26635. static encode_aux_threshmatch _vq_auxt__16u2_p8_1 = {
  26636. _vq_quantthresh__16u2_p8_1,
  26637. _vq_quantmap__16u2_p8_1,
  26638. 21,
  26639. 21
  26640. };
  26641. static static_codebook _16u2_p8_1 = {
  26642. 2, 441,
  26643. _vq_lengthlist__16u2_p8_1,
  26644. 1, -529268736, 1611661312, 5, 0,
  26645. _vq_quantlist__16u2_p8_1,
  26646. NULL,
  26647. &_vq_auxt__16u2_p8_1,
  26648. NULL,
  26649. 0
  26650. };
  26651. static long _vq_quantlist__16u2_p9_0[] = {
  26652. 5586,
  26653. 4655,
  26654. 6517,
  26655. 3724,
  26656. 7448,
  26657. 2793,
  26658. 8379,
  26659. 1862,
  26660. 9310,
  26661. 931,
  26662. 10241,
  26663. 0,
  26664. 11172,
  26665. 5521,
  26666. 5651,
  26667. };
  26668. static long _vq_lengthlist__16u2_p9_0[] = {
  26669. 1,10,10,10,10,10,10,10,10,10,10,10,10, 5, 4,10,
  26670. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  26671. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  26672. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  26673. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  26674. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  26675. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  26676. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  26677. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  26678. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  26679. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  26680. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  26681. 10,10,10, 4,10,10,10,10,10,10,10,10,10,10,10,10,
  26682. 6, 6, 5,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 5,
  26683. 5,
  26684. };
  26685. static float _vq_quantthresh__16u2_p9_0[] = {
  26686. -5120.5, -4189.5, -3258.5, -2327.5, -1396.5, -498, -32.5, 32.5,
  26687. 498, 1396.5, 2327.5, 3258.5, 4189.5, 5120.5,
  26688. };
  26689. static long _vq_quantmap__16u2_p9_0[] = {
  26690. 11, 9, 7, 5, 3, 1, 13, 0,
  26691. 14, 2, 4, 6, 8, 10, 12,
  26692. };
  26693. static encode_aux_threshmatch _vq_auxt__16u2_p9_0 = {
  26694. _vq_quantthresh__16u2_p9_0,
  26695. _vq_quantmap__16u2_p9_0,
  26696. 15,
  26697. 15
  26698. };
  26699. static static_codebook _16u2_p9_0 = {
  26700. 2, 225,
  26701. _vq_lengthlist__16u2_p9_0,
  26702. 1, -510275072, 1611661312, 14, 0,
  26703. _vq_quantlist__16u2_p9_0,
  26704. NULL,
  26705. &_vq_auxt__16u2_p9_0,
  26706. NULL,
  26707. 0
  26708. };
  26709. static long _vq_quantlist__16u2_p9_1[] = {
  26710. 392,
  26711. 343,
  26712. 441,
  26713. 294,
  26714. 490,
  26715. 245,
  26716. 539,
  26717. 196,
  26718. 588,
  26719. 147,
  26720. 637,
  26721. 98,
  26722. 686,
  26723. 49,
  26724. 735,
  26725. 0,
  26726. 784,
  26727. 388,
  26728. 396,
  26729. };
  26730. static long _vq_lengthlist__16u2_p9_1[] = {
  26731. 1,12,10,12,10,12,10,12,11,12,12,12,12,12,12,12,
  26732. 12, 5, 5, 9,10,12,11,11,12,12,12,12,12,12,12,12,
  26733. 12,12,12,12,10, 9, 9,11, 9,11,11,12,11,12,12,12,
  26734. 12,12,12,12,12,12,12, 8, 8,10,11, 9,12,11,12,12,
  26735. 12,12,12,12,12,12,12,12,12,12, 9, 8,10,11,12,11,
  26736. 12,11,12,12,12,12,12,12,12,12,12,12,12, 8, 9,11,
  26737. 11,10,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  26738. 9,10,11,12,11,12,11,12,12,12,12,12,12,12,12,12,
  26739. 12,12,12, 9, 9,11,12,12,12,12,12,12,12,12,12,12,
  26740. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  26741. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  26742. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  26743. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  26744. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  26745. 12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,
  26746. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  26747. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  26748. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  26749. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  26750. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  26751. 11,11,11, 5, 8, 9, 9, 8,11, 9,11,11,11,11,11,11,
  26752. 11,11,11,11, 5, 5, 4, 8, 8, 8, 8,10, 9,10,10,11,
  26753. 11,11,11,11,11,11,11, 5, 4,
  26754. };
  26755. static float _vq_quantthresh__16u2_p9_1[] = {
  26756. -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, -26.5,
  26757. -2, 2, 26.5, 73.5, 122.5, 171.5, 220.5, 269.5,
  26758. 318.5, 367.5,
  26759. };
  26760. static long _vq_quantmap__16u2_p9_1[] = {
  26761. 15, 13, 11, 9, 7, 5, 3, 1,
  26762. 17, 0, 18, 2, 4, 6, 8, 10,
  26763. 12, 14, 16,
  26764. };
  26765. static encode_aux_threshmatch _vq_auxt__16u2_p9_1 = {
  26766. _vq_quantthresh__16u2_p9_1,
  26767. _vq_quantmap__16u2_p9_1,
  26768. 19,
  26769. 19
  26770. };
  26771. static static_codebook _16u2_p9_1 = {
  26772. 2, 361,
  26773. _vq_lengthlist__16u2_p9_1,
  26774. 1, -518488064, 1611661312, 10, 0,
  26775. _vq_quantlist__16u2_p9_1,
  26776. NULL,
  26777. &_vq_auxt__16u2_p9_1,
  26778. NULL,
  26779. 0
  26780. };
  26781. static long _vq_quantlist__16u2_p9_2[] = {
  26782. 24,
  26783. 23,
  26784. 25,
  26785. 22,
  26786. 26,
  26787. 21,
  26788. 27,
  26789. 20,
  26790. 28,
  26791. 19,
  26792. 29,
  26793. 18,
  26794. 30,
  26795. 17,
  26796. 31,
  26797. 16,
  26798. 32,
  26799. 15,
  26800. 33,
  26801. 14,
  26802. 34,
  26803. 13,
  26804. 35,
  26805. 12,
  26806. 36,
  26807. 11,
  26808. 37,
  26809. 10,
  26810. 38,
  26811. 9,
  26812. 39,
  26813. 8,
  26814. 40,
  26815. 7,
  26816. 41,
  26817. 6,
  26818. 42,
  26819. 5,
  26820. 43,
  26821. 4,
  26822. 44,
  26823. 3,
  26824. 45,
  26825. 2,
  26826. 46,
  26827. 1,
  26828. 47,
  26829. 0,
  26830. 48,
  26831. };
  26832. static long _vq_lengthlist__16u2_p9_2[] = {
  26833. 1, 3, 3, 4, 7, 7, 7, 8, 7, 7, 7, 7, 8, 8, 8, 8,
  26834. 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 9, 9, 8, 9, 9,
  26835. 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,12,12,10,
  26836. 11,
  26837. };
  26838. static float _vq_quantthresh__16u2_p9_2[] = {
  26839. -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5,
  26840. -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5,
  26841. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  26842. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  26843. 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5,
  26844. 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5,
  26845. };
  26846. static long _vq_quantmap__16u2_p9_2[] = {
  26847. 47, 45, 43, 41, 39, 37, 35, 33,
  26848. 31, 29, 27, 25, 23, 21, 19, 17,
  26849. 15, 13, 11, 9, 7, 5, 3, 1,
  26850. 0, 2, 4, 6, 8, 10, 12, 14,
  26851. 16, 18, 20, 22, 24, 26, 28, 30,
  26852. 32, 34, 36, 38, 40, 42, 44, 46,
  26853. 48,
  26854. };
  26855. static encode_aux_threshmatch _vq_auxt__16u2_p9_2 = {
  26856. _vq_quantthresh__16u2_p9_2,
  26857. _vq_quantmap__16u2_p9_2,
  26858. 49,
  26859. 49
  26860. };
  26861. static static_codebook _16u2_p9_2 = {
  26862. 1, 49,
  26863. _vq_lengthlist__16u2_p9_2,
  26864. 1, -526909440, 1611661312, 6, 0,
  26865. _vq_quantlist__16u2_p9_2,
  26866. NULL,
  26867. &_vq_auxt__16u2_p9_2,
  26868. NULL,
  26869. 0
  26870. };
  26871. static long _huff_lengthlist__44u0__long[] = {
  26872. 3, 7,12,10,15,10, 9,18, 5, 2, 5, 6, 8, 7, 9,20,
  26873. 10, 4, 4, 6, 6, 8,11,20, 9, 5, 6, 5, 7, 6, 9,20,
  26874. 11, 7, 5, 7, 5, 7,10,20,10, 6, 7, 6, 6, 6, 8,17,
  26875. 9, 8,10, 7, 7, 5, 5,17,11,18,19,14,13, 9, 8,19,
  26876. };
  26877. static static_codebook _huff_book__44u0__long = {
  26878. 2, 64,
  26879. _huff_lengthlist__44u0__long,
  26880. 0, 0, 0, 0, 0,
  26881. NULL,
  26882. NULL,
  26883. NULL,
  26884. NULL,
  26885. 0
  26886. };
  26887. static long _vq_quantlist__44u0__p1_0[] = {
  26888. 1,
  26889. 0,
  26890. 2,
  26891. };
  26892. static long _vq_lengthlist__44u0__p1_0[] = {
  26893. 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
  26894. 10,11, 5, 8, 8, 8,10,10, 8,11,11, 4, 8, 8, 8,11,
  26895. 11, 8,11,11, 8,11,11,11,13,14,11,13,14, 7,11,11,
  26896. 10,14,12,11,13,14, 4, 8, 8, 8,11,11, 8,11,11, 8,
  26897. 11,11,11,14,13,10,12,13, 8,11,12,11,14,14,11,14,
  26898. 13,
  26899. };
  26900. static float _vq_quantthresh__44u0__p1_0[] = {
  26901. -0.5, 0.5,
  26902. };
  26903. static long _vq_quantmap__44u0__p1_0[] = {
  26904. 1, 0, 2,
  26905. };
  26906. static encode_aux_threshmatch _vq_auxt__44u0__p1_0 = {
  26907. _vq_quantthresh__44u0__p1_0,
  26908. _vq_quantmap__44u0__p1_0,
  26909. 3,
  26910. 3
  26911. };
  26912. static static_codebook _44u0__p1_0 = {
  26913. 4, 81,
  26914. _vq_lengthlist__44u0__p1_0,
  26915. 1, -535822336, 1611661312, 2, 0,
  26916. _vq_quantlist__44u0__p1_0,
  26917. NULL,
  26918. &_vq_auxt__44u0__p1_0,
  26919. NULL,
  26920. 0
  26921. };
  26922. static long _vq_quantlist__44u0__p2_0[] = {
  26923. 1,
  26924. 0,
  26925. 2,
  26926. };
  26927. static long _vq_lengthlist__44u0__p2_0[] = {
  26928. 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 6, 7, 8, 8, 6,
  26929. 7, 8, 5, 6, 7, 6, 8, 7, 7, 8, 8, 5, 7, 7, 7, 8,
  26930. 8, 7, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
  26931. 7,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 8, 6,
  26932. 8, 8, 8,10,10, 7, 8,10, 6, 8, 8, 8,10,10, 8,10,
  26933. 9,
  26934. };
  26935. static float _vq_quantthresh__44u0__p2_0[] = {
  26936. -0.5, 0.5,
  26937. };
  26938. static long _vq_quantmap__44u0__p2_0[] = {
  26939. 1, 0, 2,
  26940. };
  26941. static encode_aux_threshmatch _vq_auxt__44u0__p2_0 = {
  26942. _vq_quantthresh__44u0__p2_0,
  26943. _vq_quantmap__44u0__p2_0,
  26944. 3,
  26945. 3
  26946. };
  26947. static static_codebook _44u0__p2_0 = {
  26948. 4, 81,
  26949. _vq_lengthlist__44u0__p2_0,
  26950. 1, -535822336, 1611661312, 2, 0,
  26951. _vq_quantlist__44u0__p2_0,
  26952. NULL,
  26953. &_vq_auxt__44u0__p2_0,
  26954. NULL,
  26955. 0
  26956. };
  26957. static long _vq_quantlist__44u0__p3_0[] = {
  26958. 2,
  26959. 1,
  26960. 3,
  26961. 0,
  26962. 4,
  26963. };
  26964. static long _vq_lengthlist__44u0__p3_0[] = {
  26965. 1, 5, 5, 8, 8, 5, 7, 7, 9, 9, 5, 7, 8, 9, 9, 8,
  26966. 10, 9,12,11, 8, 9,10,11,12, 6, 8, 8,10,10, 8,10,
  26967. 10,11,11, 8, 9,10,11,11,10,12,11,13,13,10,11,11,
  26968. 13,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10,10,11,
  26969. 11,10,11,11,13,13,10,11,11,13,13, 9,11,11,15,14,
  26970. 10,12,11,15,14,10,12,11,15,14,12,14,13,16,15,12,
  26971. 13,13,17,15, 9,11,11,14,14,10,11,12,14,15,10,11,
  26972. 12,14,17,12,13,14,15,16,13,13,14,15,17, 5, 8, 8,
  26973. 11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,15,
  26974. 14,11,12,12,14,15, 8,10,10,13,12,10,12,12,13,13,
  26975. 10,12,12,14,14,12,13,13,15,15,11,13,13,15,16, 7,
  26976. 10,10,12,12, 9,12,11,14,13,10,12,12,13,14,12,13,
  26977. 12,15,15,12,13,13,16,17,10,12,12,15,16,12,13,13,
  26978. 17,15,11,13,13,17,16,15,15,15,17,17,13,15,16,18,
  26979. 18, 9,12,12,15,17,11,13,12,16,16,11,13,13,16,18,
  26980. 14,15,14,16,16,13,15,15,17,18, 5, 8, 8,11,11, 8,
  26981. 10,10,12,12, 8,10,10,12,12,10,12,12,15,15,11,12,
  26982. 12,14,15, 7,10,10,12,12,10,12,12,14,14, 9,11,12,
  26983. 13,13,12,13,13,16,16,12,12,13,15,15, 8,10,10,12,
  26984. 13,10,12,12,13,14,10,12,12,13,13,12,13,13,16,16,
  26985. 12,13,13,15,15,10,12,12,15,16,11,13,13,17,16,11,
  26986. 12,13,17,16,13,15,15,18,19,14,14,14,17,16,10,12,
  26987. 12,15,15,11,13,13,15,16,11,13,13,15,17,13,15,15,
  26988. 18,20,14,15,15,17,17, 8,11,11,15,16,10,13,12,17,
  26989. 16,10,12,13,16,17,15,16,15,20,19,14,15,16,18,19,
  26990. 9,12,12,15,17,11,13,14,18,18,11,13,14,17,17,16,
  26991. 17,18,19,19,15,16,18,19,20, 9,12,12,16,16,11,14,
  26992. 12,17,17,11,13,13,16,19,15,16,15,20,19,15,15,15,
  26993. 19,17,12,14,14,18,19,14,15,15,19,18,13,15,15,18,
  26994. 17,17,18,19,20, 0,15,16,17,20, 0,12,15,14,17,18,
  26995. 13,16,14,20,20,13,16,15,19,18,16,20,17,20,19,16,
  26996. 17,16, 0,19, 8,11,11,15,15,10,12,12,17,17,10,12,
  26997. 13,16,16,13,14,15,17,17,15,16,17,19,19, 9,12,12,
  26998. 16,17,11,13,13,18,16,11,13,13,16,17,14,15,16,19,
  26999. 18,15,16,17,17,18, 9,12,12,17,16,11,14,13,16,16,
  27000. 12,14,13,17,18,14,16,15,18,19,17,17,17,19,18,12,
  27001. 14,14,19,17,13,15,15,17, 0,13,14,16, 0, 0,15,16,
  27002. 16,19, 0,16,16,19,19, 0,12,15,14,19,18,13,15,15,
  27003. 19, 0,14,16,15, 0,19,15,17,17, 0,19,17,18,17, 0,
  27004. 19,
  27005. };
  27006. static float _vq_quantthresh__44u0__p3_0[] = {
  27007. -1.5, -0.5, 0.5, 1.5,
  27008. };
  27009. static long _vq_quantmap__44u0__p3_0[] = {
  27010. 3, 1, 0, 2, 4,
  27011. };
  27012. static encode_aux_threshmatch _vq_auxt__44u0__p3_0 = {
  27013. _vq_quantthresh__44u0__p3_0,
  27014. _vq_quantmap__44u0__p3_0,
  27015. 5,
  27016. 5
  27017. };
  27018. static static_codebook _44u0__p3_0 = {
  27019. 4, 625,
  27020. _vq_lengthlist__44u0__p3_0,
  27021. 1, -533725184, 1611661312, 3, 0,
  27022. _vq_quantlist__44u0__p3_0,
  27023. NULL,
  27024. &_vq_auxt__44u0__p3_0,
  27025. NULL,
  27026. 0
  27027. };
  27028. static long _vq_quantlist__44u0__p4_0[] = {
  27029. 2,
  27030. 1,
  27031. 3,
  27032. 0,
  27033. 4,
  27034. };
  27035. static long _vq_lengthlist__44u0__p4_0[] = {
  27036. 4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9,
  27037. 9, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
  27038. 8,10,10, 6, 7, 8, 9,10,10,10,10,11,12, 9,10,10,
  27039. 11,12, 5, 7, 7, 9, 9, 6, 8, 7,10,10, 7, 8, 8,10,
  27040. 10, 9,10,10,12,11,10,10,10,12,11, 9,10,10,12,12,
  27041. 10,11,10,13,13, 9,10,10,13,13,12,12,12,14,14,11,
  27042. 12,12,14,14, 9,10,10,12,12, 9,10,10,13,13,10,10,
  27043. 10,12,13,11,12,12,14,14,12,13,12,14,14, 5, 7, 7,
  27044. 10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,13,
  27045. 12,10,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,10,11,
  27046. 8, 9, 9,11,11,10,10,11,12,13,10,11,11,13,14, 6,
  27047. 8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
  27048. 10,13,11,10,11,11,13,13,10,11,10,13,13,10,10,11,
  27049. 13,14,10,11,11,14,13,12,11,13,12,14,12,13,13,15,
  27050. 15, 9,10,10,13,13,10,11,10,13,13,10,11,11,13,14,
  27051. 12,13,11,15,12,12,13,13,14,15, 5, 7, 7,10, 9, 7,
  27052. 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,12,10,10,
  27053. 10,12,13, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 8, 9,
  27054. 10,11,10,11,11,13,13,10,10,11,11,14, 7, 8, 8,10,
  27055. 10, 8, 9, 9,11,11, 8, 9, 8,11,10,10,11,11,13,13,
  27056. 10,11,10,13,11, 9,10,10,13,13,10,11,11,14,13,10,
  27057. 10,11,12,13,13,13,13,15,14,12,11,13,12,15, 9,10,
  27058. 11,13,13,10,11,11,13,14,10,11,10,13,13,12,13,13,
  27059. 15,15,12,13,11,15,12, 8,10,10,13,12,10,11,11,13,
  27060. 13, 9,10,11,13,13,13,13,13,15,15,12,13,13,15,15,
  27061. 9,10,10,13,13,10,11,11,13,14,10,11,11,14,13,13,
  27062. 13,14,14,15,13,13,13,14,15, 9,10,10,13,13,10,11,
  27063. 10,14,13,10,11,11,13,14,13,14,13,15,14,12,13,13,
  27064. 14,15,11,13,13,15,14,11,11,13,14,15,12,14,13,15,
  27065. 15,13,12,15,12,16,14,14,15,17,16,11,12,12,14,15,
  27066. 11,13,11,15,14,12,13,13,15,15,14,14,12,17,13,14,
  27067. 15,15,18,16, 8,10,10,13,12, 9,10,10,13,13,10,10,
  27068. 11,13,13,12,13,13,14,14,12,13,13,15,15, 9,10,10,
  27069. 13,13,10,11,11,14,13,10,10,11,13,14,12,13,13,17,
  27070. 15,12,12,13,14,16, 9,10,10,13,13,10,11,11,13,13,
  27071. 10,11,10,14,13,13,13,13,14,15,13,14,13,15,15,11,
  27072. 13,12,14,14,12,13,13,16,14,11,12,13,15,15,14,15,
  27073. 16,17,18,14,12,15,14,16,11,12,13,14,15,12,13,13,
  27074. 15,16,11,13,11,15,14,14,16,14,16,17,14,15,12,16,
  27075. 12,
  27076. };
  27077. static float _vq_quantthresh__44u0__p4_0[] = {
  27078. -1.5, -0.5, 0.5, 1.5,
  27079. };
  27080. static long _vq_quantmap__44u0__p4_0[] = {
  27081. 3, 1, 0, 2, 4,
  27082. };
  27083. static encode_aux_threshmatch _vq_auxt__44u0__p4_0 = {
  27084. _vq_quantthresh__44u0__p4_0,
  27085. _vq_quantmap__44u0__p4_0,
  27086. 5,
  27087. 5
  27088. };
  27089. static static_codebook _44u0__p4_0 = {
  27090. 4, 625,
  27091. _vq_lengthlist__44u0__p4_0,
  27092. 1, -533725184, 1611661312, 3, 0,
  27093. _vq_quantlist__44u0__p4_0,
  27094. NULL,
  27095. &_vq_auxt__44u0__p4_0,
  27096. NULL,
  27097. 0
  27098. };
  27099. static long _vq_quantlist__44u0__p5_0[] = {
  27100. 4,
  27101. 3,
  27102. 5,
  27103. 2,
  27104. 6,
  27105. 1,
  27106. 7,
  27107. 0,
  27108. 8,
  27109. };
  27110. static long _vq_lengthlist__44u0__p5_0[] = {
  27111. 1, 4, 4, 7, 7, 8, 8, 9, 9, 4, 6, 5, 8, 8, 8, 8,
  27112. 10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
  27113. 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8,
  27114. 10, 9,10,11,12,12, 8, 8, 8, 9, 9,11,11,12,12, 9,
  27115. 10,10,11,11,12,12,13,13, 9,10,10,11,11,12,12,13,
  27116. 13,
  27117. };
  27118. static float _vq_quantthresh__44u0__p5_0[] = {
  27119. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  27120. };
  27121. static long _vq_quantmap__44u0__p5_0[] = {
  27122. 7, 5, 3, 1, 0, 2, 4, 6,
  27123. 8,
  27124. };
  27125. static encode_aux_threshmatch _vq_auxt__44u0__p5_0 = {
  27126. _vq_quantthresh__44u0__p5_0,
  27127. _vq_quantmap__44u0__p5_0,
  27128. 9,
  27129. 9
  27130. };
  27131. static static_codebook _44u0__p5_0 = {
  27132. 2, 81,
  27133. _vq_lengthlist__44u0__p5_0,
  27134. 1, -531628032, 1611661312, 4, 0,
  27135. _vq_quantlist__44u0__p5_0,
  27136. NULL,
  27137. &_vq_auxt__44u0__p5_0,
  27138. NULL,
  27139. 0
  27140. };
  27141. static long _vq_quantlist__44u0__p6_0[] = {
  27142. 6,
  27143. 5,
  27144. 7,
  27145. 4,
  27146. 8,
  27147. 3,
  27148. 9,
  27149. 2,
  27150. 10,
  27151. 1,
  27152. 11,
  27153. 0,
  27154. 12,
  27155. };
  27156. static long _vq_lengthlist__44u0__p6_0[] = {
  27157. 1, 4, 4, 6, 6, 8, 8,10, 9,10,10,14,14, 4, 6, 5,
  27158. 8, 8, 9, 9,10,10,11,11,14,14, 4, 5, 6, 8, 8, 9,
  27159. 9,10,10,11,11,14,14, 7, 8, 8, 9, 9,10,10,11,11,
  27160. 12,12,15,15, 7, 8, 8, 9, 9,10,10,11,11,12,12,14,
  27161. 15, 9, 9, 9,10,10,11,11,12,11,12,12,15,16, 9, 9,
  27162. 9,10,10,11,11,11,11,12,12,15,15,10,10,10,11,11,
  27163. 12,11,12,12,13,13,16,16,10,10,10,11,11,12,12,12,
  27164. 12,13,13,16,17,11,11,12,12,12,13,13,14,13,14,14,
  27165. 18,17,11,11,11,12,12,12,12,13,14,14,14,18,18,14,
  27166. 14,14,15,15,15,16,16,16,17,17, 0,19,14,14,14,15,
  27167. 15,16,17,16,17,17,17,19, 0,
  27168. };
  27169. static float _vq_quantthresh__44u0__p6_0[] = {
  27170. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  27171. 12.5, 17.5, 22.5, 27.5,
  27172. };
  27173. static long _vq_quantmap__44u0__p6_0[] = {
  27174. 11, 9, 7, 5, 3, 1, 0, 2,
  27175. 4, 6, 8, 10, 12,
  27176. };
  27177. static encode_aux_threshmatch _vq_auxt__44u0__p6_0 = {
  27178. _vq_quantthresh__44u0__p6_0,
  27179. _vq_quantmap__44u0__p6_0,
  27180. 13,
  27181. 13
  27182. };
  27183. static static_codebook _44u0__p6_0 = {
  27184. 2, 169,
  27185. _vq_lengthlist__44u0__p6_0,
  27186. 1, -526516224, 1616117760, 4, 0,
  27187. _vq_quantlist__44u0__p6_0,
  27188. NULL,
  27189. &_vq_auxt__44u0__p6_0,
  27190. NULL,
  27191. 0
  27192. };
  27193. static long _vq_quantlist__44u0__p6_1[] = {
  27194. 2,
  27195. 1,
  27196. 3,
  27197. 0,
  27198. 4,
  27199. };
  27200. static long _vq_lengthlist__44u0__p6_1[] = {
  27201. 2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
  27202. 6, 6, 6, 6, 5, 6, 6, 6, 6,
  27203. };
  27204. static float _vq_quantthresh__44u0__p6_1[] = {
  27205. -1.5, -0.5, 0.5, 1.5,
  27206. };
  27207. static long _vq_quantmap__44u0__p6_1[] = {
  27208. 3, 1, 0, 2, 4,
  27209. };
  27210. static encode_aux_threshmatch _vq_auxt__44u0__p6_1 = {
  27211. _vq_quantthresh__44u0__p6_1,
  27212. _vq_quantmap__44u0__p6_1,
  27213. 5,
  27214. 5
  27215. };
  27216. static static_codebook _44u0__p6_1 = {
  27217. 2, 25,
  27218. _vq_lengthlist__44u0__p6_1,
  27219. 1, -533725184, 1611661312, 3, 0,
  27220. _vq_quantlist__44u0__p6_1,
  27221. NULL,
  27222. &_vq_auxt__44u0__p6_1,
  27223. NULL,
  27224. 0
  27225. };
  27226. static long _vq_quantlist__44u0__p7_0[] = {
  27227. 2,
  27228. 1,
  27229. 3,
  27230. 0,
  27231. 4,
  27232. };
  27233. static long _vq_lengthlist__44u0__p7_0[] = {
  27234. 1, 5, 5,11,11, 9,11,11,11,11,11,11,11,11,11,11,
  27235. 11,11,11,11,11,11,11,11,11, 8,11,11,11,11,11,11,
  27236. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27237. 11,11, 9,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27238. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27239. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27240. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27241. 11,11,11,11,11,11,11,11,11,11,11,11,11, 8,11,11,
  27242. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27243. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27244. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27245. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27246. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27247. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27248. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27249. 11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,
  27250. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27251. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27252. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27253. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27254. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27255. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27256. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  27257. 11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,
  27258. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27259. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27260. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27261. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27262. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27263. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27264. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27265. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27266. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27267. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27268. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27269. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27270. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27271. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27272. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  27273. 10,
  27274. };
  27275. static float _vq_quantthresh__44u0__p7_0[] = {
  27276. -253.5, -84.5, 84.5, 253.5,
  27277. };
  27278. static long _vq_quantmap__44u0__p7_0[] = {
  27279. 3, 1, 0, 2, 4,
  27280. };
  27281. static encode_aux_threshmatch _vq_auxt__44u0__p7_0 = {
  27282. _vq_quantthresh__44u0__p7_0,
  27283. _vq_quantmap__44u0__p7_0,
  27284. 5,
  27285. 5
  27286. };
  27287. static static_codebook _44u0__p7_0 = {
  27288. 4, 625,
  27289. _vq_lengthlist__44u0__p7_0,
  27290. 1, -518709248, 1626677248, 3, 0,
  27291. _vq_quantlist__44u0__p7_0,
  27292. NULL,
  27293. &_vq_auxt__44u0__p7_0,
  27294. NULL,
  27295. 0
  27296. };
  27297. static long _vq_quantlist__44u0__p7_1[] = {
  27298. 6,
  27299. 5,
  27300. 7,
  27301. 4,
  27302. 8,
  27303. 3,
  27304. 9,
  27305. 2,
  27306. 10,
  27307. 1,
  27308. 11,
  27309. 0,
  27310. 12,
  27311. };
  27312. static long _vq_lengthlist__44u0__p7_1[] = {
  27313. 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 4, 7, 7,
  27314. 8, 8, 8, 8, 9, 9,11,10,12,11, 4, 6, 7, 8, 8, 7,
  27315. 8, 9, 9,10,11,12,11, 7, 8, 8, 9, 9,10,10,11,11,
  27316. 12,11,13,13, 7, 8, 8, 9,10,10,10,11,11,12,12,12,
  27317. 13, 7, 8, 8,10,10,12,12,13,12,16,13,13,14, 7, 8,
  27318. 8,10,11,12,12,13,12,13,13,14,14, 8, 9,10,12,12,
  27319. 14,13,16,15,16,16,16,15, 8,10,10,12,12,14,13,14,
  27320. 15,16,16,15,16,10,11,12,14,14,14,14,16,13,16,15,
  27321. 16,16,10,11,12,13,13,15,14,14,15,16,16,14,14,13,
  27322. 14,13,15,16,16,16,15,15,16,16,16,16,11,15,14,16,
  27323. 16,14,14,16,15,16,14,16,15,
  27324. };
  27325. static float _vq_quantthresh__44u0__p7_1[] = {
  27326. -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5,
  27327. 32.5, 45.5, 58.5, 71.5,
  27328. };
  27329. static long _vq_quantmap__44u0__p7_1[] = {
  27330. 11, 9, 7, 5, 3, 1, 0, 2,
  27331. 4, 6, 8, 10, 12,
  27332. };
  27333. static encode_aux_threshmatch _vq_auxt__44u0__p7_1 = {
  27334. _vq_quantthresh__44u0__p7_1,
  27335. _vq_quantmap__44u0__p7_1,
  27336. 13,
  27337. 13
  27338. };
  27339. static static_codebook _44u0__p7_1 = {
  27340. 2, 169,
  27341. _vq_lengthlist__44u0__p7_1,
  27342. 1, -523010048, 1618608128, 4, 0,
  27343. _vq_quantlist__44u0__p7_1,
  27344. NULL,
  27345. &_vq_auxt__44u0__p7_1,
  27346. NULL,
  27347. 0
  27348. };
  27349. static long _vq_quantlist__44u0__p7_2[] = {
  27350. 6,
  27351. 5,
  27352. 7,
  27353. 4,
  27354. 8,
  27355. 3,
  27356. 9,
  27357. 2,
  27358. 10,
  27359. 1,
  27360. 11,
  27361. 0,
  27362. 12,
  27363. };
  27364. static long _vq_lengthlist__44u0__p7_2[] = {
  27365. 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 5, 5, 6,
  27366. 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 5, 5, 5, 7, 7, 8,
  27367. 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 7, 8, 8, 8, 9, 9,
  27368. 9, 9, 9, 9, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
  27369. 9, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8,
  27370. 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9,
  27371. 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 9, 9, 9, 9, 8, 9,
  27372. 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  27373. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
  27374. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  27375. 9, 9, 9, 9, 9, 9, 9, 9, 9,
  27376. };
  27377. static float _vq_quantthresh__44u0__p7_2[] = {
  27378. -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5,
  27379. 2.5, 3.5, 4.5, 5.5,
  27380. };
  27381. static long _vq_quantmap__44u0__p7_2[] = {
  27382. 11, 9, 7, 5, 3, 1, 0, 2,
  27383. 4, 6, 8, 10, 12,
  27384. };
  27385. static encode_aux_threshmatch _vq_auxt__44u0__p7_2 = {
  27386. _vq_quantthresh__44u0__p7_2,
  27387. _vq_quantmap__44u0__p7_2,
  27388. 13,
  27389. 13
  27390. };
  27391. static static_codebook _44u0__p7_2 = {
  27392. 2, 169,
  27393. _vq_lengthlist__44u0__p7_2,
  27394. 1, -531103744, 1611661312, 4, 0,
  27395. _vq_quantlist__44u0__p7_2,
  27396. NULL,
  27397. &_vq_auxt__44u0__p7_2,
  27398. NULL,
  27399. 0
  27400. };
  27401. static long _huff_lengthlist__44u0__short[] = {
  27402. 6,10,11,12,13,12,12,12, 4, 6, 6, 9, 9,10,11,13,
  27403. 3, 4, 3, 7, 6, 8,10,15, 5, 7, 7, 9, 8, 9,11,16,
  27404. 6, 7, 5, 8, 5, 7,10,16, 7, 8, 7, 9, 6, 7,10,16,
  27405. 10, 6, 3, 5, 4, 5, 7,16,13, 8, 5, 7, 6, 7,10,15,
  27406. };
  27407. static static_codebook _huff_book__44u0__short = {
  27408. 2, 64,
  27409. _huff_lengthlist__44u0__short,
  27410. 0, 0, 0, 0, 0,
  27411. NULL,
  27412. NULL,
  27413. NULL,
  27414. NULL,
  27415. 0
  27416. };
  27417. static long _huff_lengthlist__44u1__long[] = {
  27418. 4, 8,13,11,14,11,10,14, 6, 3, 5, 6, 8, 7, 9,14,
  27419. 12, 4, 3, 6, 5, 7,10,18,11, 6, 6, 6, 6, 6, 8,16,
  27420. 13, 7, 4, 6, 4, 6, 9,19,11, 6, 6, 5, 5, 5, 7,16,
  27421. 10, 8, 9, 7, 9, 6, 4,12,11,16,18,19,18,10, 7,11,
  27422. };
  27423. static static_codebook _huff_book__44u1__long = {
  27424. 2, 64,
  27425. _huff_lengthlist__44u1__long,
  27426. 0, 0, 0, 0, 0,
  27427. NULL,
  27428. NULL,
  27429. NULL,
  27430. NULL,
  27431. 0
  27432. };
  27433. static long _vq_quantlist__44u1__p1_0[] = {
  27434. 1,
  27435. 0,
  27436. 2,
  27437. };
  27438. static long _vq_lengthlist__44u1__p1_0[] = {
  27439. 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
  27440. 10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
  27441. 11, 8,11,11, 8,11,11,11,13,14,11,13,14, 8,11,11,
  27442. 10,14,11,11,13,14, 4, 8, 8, 8,11,11, 8,11,11, 7,
  27443. 11,11,11,14,13,10,12,13, 8,11,11,11,14,14,11,14,
  27444. 13,
  27445. };
  27446. static float _vq_quantthresh__44u1__p1_0[] = {
  27447. -0.5, 0.5,
  27448. };
  27449. static long _vq_quantmap__44u1__p1_0[] = {
  27450. 1, 0, 2,
  27451. };
  27452. static encode_aux_threshmatch _vq_auxt__44u1__p1_0 = {
  27453. _vq_quantthresh__44u1__p1_0,
  27454. _vq_quantmap__44u1__p1_0,
  27455. 3,
  27456. 3
  27457. };
  27458. static static_codebook _44u1__p1_0 = {
  27459. 4, 81,
  27460. _vq_lengthlist__44u1__p1_0,
  27461. 1, -535822336, 1611661312, 2, 0,
  27462. _vq_quantlist__44u1__p1_0,
  27463. NULL,
  27464. &_vq_auxt__44u1__p1_0,
  27465. NULL,
  27466. 0
  27467. };
  27468. static long _vq_quantlist__44u1__p2_0[] = {
  27469. 1,
  27470. 0,
  27471. 2,
  27472. };
  27473. static long _vq_lengthlist__44u1__p2_0[] = {
  27474. 2, 5, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
  27475. 7, 8, 5, 6, 6, 6, 8, 7, 7, 8, 8, 5, 6, 6, 7, 8,
  27476. 8, 6, 8, 8, 7, 8, 8, 8, 9,10, 8, 9, 9, 6, 8, 8,
  27477. 7, 9, 8, 8, 9,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
  27478. 8, 8, 8,10, 9, 7, 8, 9, 7, 8, 8, 8, 9, 9, 8,10,
  27479. 9,
  27480. };
  27481. static float _vq_quantthresh__44u1__p2_0[] = {
  27482. -0.5, 0.5,
  27483. };
  27484. static long _vq_quantmap__44u1__p2_0[] = {
  27485. 1, 0, 2,
  27486. };
  27487. static encode_aux_threshmatch _vq_auxt__44u1__p2_0 = {
  27488. _vq_quantthresh__44u1__p2_0,
  27489. _vq_quantmap__44u1__p2_0,
  27490. 3,
  27491. 3
  27492. };
  27493. static static_codebook _44u1__p2_0 = {
  27494. 4, 81,
  27495. _vq_lengthlist__44u1__p2_0,
  27496. 1, -535822336, 1611661312, 2, 0,
  27497. _vq_quantlist__44u1__p2_0,
  27498. NULL,
  27499. &_vq_auxt__44u1__p2_0,
  27500. NULL,
  27501. 0
  27502. };
  27503. static long _vq_quantlist__44u1__p3_0[] = {
  27504. 2,
  27505. 1,
  27506. 3,
  27507. 0,
  27508. 4,
  27509. };
  27510. static long _vq_lengthlist__44u1__p3_0[] = {
  27511. 2, 5, 4, 7, 7, 5, 7, 7, 9, 8, 5, 7, 7, 8, 9, 8,
  27512. 9, 9,11,11, 8, 9, 9,11,11, 5, 7, 7,10,10, 7, 9,
  27513. 9,11,10, 7, 9, 9,10,10, 9,11,10,13,12, 9,10,10,
  27514. 12,13, 5, 7, 7,10, 9, 7, 9, 9,11,10, 7, 9, 9,10,
  27515. 11, 9,10,10,12,12,10,10,11,12,13, 8,10,10,14,13,
  27516. 9,11,11,15,13, 9,11,11,15,13,12,14,12,16,14,12,
  27517. 13,12,15,14, 8,10,10,13,14, 9,11,11,13,14,10,11,
  27518. 11,13,15,12,12,13,14,15,12,13,14,14,16, 5, 7, 7,
  27519. 10,10, 7, 9, 9,11,11, 7, 9, 9,11,12,10,11,11,14,
  27520. 14,10,11,11,14,14, 7, 9, 9,12,12, 9,11,11,13,12,
  27521. 9,11,11,13,13,12,12,12,14,14,11,12,13,15,15, 7,
  27522. 9, 9,12,11, 9,11,10,12,12, 9,11,11,12,13,11,12,
  27523. 11,14,14,11,12,12,15,16, 9,11,11,15,15,11,12,12,
  27524. 16,15,10,12,12,16,15,14,15,15,17,16,13,14,14,17,
  27525. 17, 9,11,11,14,15,10,12,11,15,15,10,12,12,15,17,
  27526. 13,14,13,16,15,13,14,15,17,17, 5, 7, 7,10,10, 7,
  27527. 9, 9,12,11, 7, 9, 9,11,12,10,11,11,14,14,10,11,
  27528. 11,13,14, 7, 9, 9,11,12, 9,11,11,13,13, 9,10,11,
  27529. 12,12,11,12,12,15,15,11,12,12,13,14, 7,10, 9,12,
  27530. 12, 9,11,11,13,13, 9,11,11,12,12,11,12,12,16,15,
  27531. 11,12,12,14,14, 9,11,11,15,14,10,12,12,16,15,10,
  27532. 11,12,15,15,13,14,14,17,18,13,13,14,15,16, 9,11,
  27533. 11,15,16,10,12,12,15,15,11,12,12,14,17,13,14,14,
  27534. 17,17,14,14,14,16,18, 7,10,10,14,15,10,12,12,16,
  27535. 15,10,11,12,16,16,14,16,15,18,17,13,15,14,17,19,
  27536. 9,11,12,16,15,11,13,13,17,16,10,13,13,16,16,15,
  27537. 16,16,17,19,13,15,15,17,17, 8,11,11,15,15,10,13,
  27538. 11,16,16,10,13,13,16,17,14,16,15,18,19,13,15,15,
  27539. 17,17,12,14,14,18,18,13,14,15,18,19,12,14,15,17,
  27540. 18,16,18,18,19, 0,14,15,16,18,18,11,14,13,17,18,
  27541. 12,16,14,19,19,12,15,14, 0,18,15,17,16,18,17,14,
  27542. 17,16,18,18, 7,10,10,15,14,10,12,11,16,16,10,11,
  27543. 12,16,16,13,15,14,19,18,14,15,16,18,18, 8,11,11,
  27544. 15,15,10,13,12,17,16,10,12,13,16,17,14,14,15,19,
  27545. 18,14,15,16,18, 0, 9,11,11,16,15,11,13,12,15,16,
  27546. 11,13,13,16,16,14,15,14, 0,17,15,16,16,19,18,11,
  27547. 14,14,18,17,12,14,15,17,17,12,13,15, 0,17,14,15,
  27548. 16,18,17,16,17,18,17,19,11,14,13,17,19,12,15,14,
  27549. 18,19,13,16,14, 0,19,14,17,15, 0,18,15,18,16, 0,
  27550. 0,
  27551. };
  27552. static float _vq_quantthresh__44u1__p3_0[] = {
  27553. -1.5, -0.5, 0.5, 1.5,
  27554. };
  27555. static long _vq_quantmap__44u1__p3_0[] = {
  27556. 3, 1, 0, 2, 4,
  27557. };
  27558. static encode_aux_threshmatch _vq_auxt__44u1__p3_0 = {
  27559. _vq_quantthresh__44u1__p3_0,
  27560. _vq_quantmap__44u1__p3_0,
  27561. 5,
  27562. 5
  27563. };
  27564. static static_codebook _44u1__p3_0 = {
  27565. 4, 625,
  27566. _vq_lengthlist__44u1__p3_0,
  27567. 1, -533725184, 1611661312, 3, 0,
  27568. _vq_quantlist__44u1__p3_0,
  27569. NULL,
  27570. &_vq_auxt__44u1__p3_0,
  27571. NULL,
  27572. 0
  27573. };
  27574. static long _vq_quantlist__44u1__p4_0[] = {
  27575. 2,
  27576. 1,
  27577. 3,
  27578. 0,
  27579. 4,
  27580. };
  27581. static long _vq_lengthlist__44u1__p4_0[] = {
  27582. 4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 9,
  27583. 9, 9,11,11, 9, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
  27584. 8,10,10, 6, 7, 8, 9,10,10,10,10,11,12, 9, 9,10,
  27585. 11,12, 6, 7, 7, 9, 9, 6, 8, 7,10, 9, 7, 8, 8,10,
  27586. 10, 9,10, 9,12,11,10,10,10,12,11, 9,10,10,12,12,
  27587. 10,10,10,13,12, 9,10,10,12,12,12,12,12,14,14,11,
  27588. 12,12,13,14, 9,10,10,12,12, 9,10,10,13,12,10,10,
  27589. 10,12,13,12,12,12,14,13,12,12,12,14,14, 5, 7, 7,
  27590. 9, 9, 7, 8, 7,10,10, 7, 7, 8,10,10,10,10,10,12,
  27591. 12,10,10,10,12,12, 7, 8, 8,10,10, 8, 8, 9,10,11,
  27592. 8, 8, 8,11,11,10,10,11,11,13,10,11,11,12,13, 6,
  27593. 7, 7,10,10, 7, 8, 8,11,10, 8, 8, 9,11,11,10,11,
  27594. 10,13,11,10,11,11,13,12,10,11,10,13,12,10,10,11,
  27595. 13,13,10,11,11,13,13,12,11,13,12,14,12,13,13,15,
  27596. 15, 9,10,10,12,13,10,11,10,13,13,10,11,11,13,14,
  27597. 12,13,11,14,12,12,13,13,14,15, 5, 7, 7, 9,10, 7,
  27598. 8, 7,10,10, 7, 7, 8,10,10,10,10,10,12,12,10,10,
  27599. 10,12,12, 6, 7, 7,10,10, 8, 9, 8,11,11, 7, 8, 8,
  27600. 10,11,10,11,11,12,13,10,10,11,11,13, 7, 8, 8,10,
  27601. 10, 8, 8, 8,11,11, 8, 9, 8,11,10,10,11,10,13,12,
  27602. 10,11,10,13,12, 9,10,10,13,12,10,11,11,13,13, 9,
  27603. 10,10,12,13,13,13,13,15,14,12,11,13,12,15,10,10,
  27604. 11,12,13,10,11,11,13,13,10,11,10,13,13,12,13,13,
  27605. 15,15,12,13,11,14,12, 8,10, 9,12,12, 9,10,10,13,
  27606. 13, 9,10,10,13,13,13,13,13,14,15,12,12,12,14,14,
  27607. 9,10,10,13,12,10,11,11,13,13,10,11,11,13,12,13,
  27608. 13,14,14,16,12,13,13,15,14, 9,10,10,13,13,10,11,
  27609. 10,13,13,10,11,11,13,13,13,14,12,15,14,12,13,13,
  27610. 14,15,12,12,12,14,14,11,12,12,14,15,12,13,13,15,
  27611. 14,14,12,15,12,16,14,14,15,17,16,11,12,12,14,14,
  27612. 11,12,11,15,14,12,13,13,15,15,13,14,12,16,13,14,
  27613. 14,15,17,16, 8,10,10,12,12, 9,10,10,13,12,10,10,
  27614. 10,13,13,12,13,12,14,14,12,13,13,15,14, 9,10,10,
  27615. 13,13,10,11,11,13,13,10,10,11,12,13,13,13,13,15,
  27616. 15,12,12,13,14,15, 9,10,10,12,13,10,11,11,12,13,
  27617. 10,11,10,13,13,12,13,13,14,15,13,14,13,15,14,11,
  27618. 12,12,15,14,12,13,13,15,14,11,12,12,14,15,14,14,
  27619. 14,17,15,13,12,15,13,16,12,12,12,14,15,12,13,13,
  27620. 14,15,11,12,12,15,14,14,15,14,16,17,13,15,12,16,
  27621. 12,
  27622. };
  27623. static float _vq_quantthresh__44u1__p4_0[] = {
  27624. -1.5, -0.5, 0.5, 1.5,
  27625. };
  27626. static long _vq_quantmap__44u1__p4_0[] = {
  27627. 3, 1, 0, 2, 4,
  27628. };
  27629. static encode_aux_threshmatch _vq_auxt__44u1__p4_0 = {
  27630. _vq_quantthresh__44u1__p4_0,
  27631. _vq_quantmap__44u1__p4_0,
  27632. 5,
  27633. 5
  27634. };
  27635. static static_codebook _44u1__p4_0 = {
  27636. 4, 625,
  27637. _vq_lengthlist__44u1__p4_0,
  27638. 1, -533725184, 1611661312, 3, 0,
  27639. _vq_quantlist__44u1__p4_0,
  27640. NULL,
  27641. &_vq_auxt__44u1__p4_0,
  27642. NULL,
  27643. 0
  27644. };
  27645. static long _vq_quantlist__44u1__p5_0[] = {
  27646. 4,
  27647. 3,
  27648. 5,
  27649. 2,
  27650. 6,
  27651. 1,
  27652. 7,
  27653. 0,
  27654. 8,
  27655. };
  27656. static long _vq_lengthlist__44u1__p5_0[] = {
  27657. 1, 4, 4, 7, 7, 8, 8,10,10, 4, 6, 5, 8, 8, 8, 8,
  27658. 10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 7, 9, 9,
  27659. 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8,
  27660. 9, 9,10,11,12,12, 8, 8, 9, 9, 9,10,10,12,12,10,
  27661. 10,10,11,11,12,12,13,13,10,10,10,11,11,12,12,13,
  27662. 13,
  27663. };
  27664. static float _vq_quantthresh__44u1__p5_0[] = {
  27665. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  27666. };
  27667. static long _vq_quantmap__44u1__p5_0[] = {
  27668. 7, 5, 3, 1, 0, 2, 4, 6,
  27669. 8,
  27670. };
  27671. static encode_aux_threshmatch _vq_auxt__44u1__p5_0 = {
  27672. _vq_quantthresh__44u1__p5_0,
  27673. _vq_quantmap__44u1__p5_0,
  27674. 9,
  27675. 9
  27676. };
  27677. static static_codebook _44u1__p5_0 = {
  27678. 2, 81,
  27679. _vq_lengthlist__44u1__p5_0,
  27680. 1, -531628032, 1611661312, 4, 0,
  27681. _vq_quantlist__44u1__p5_0,
  27682. NULL,
  27683. &_vq_auxt__44u1__p5_0,
  27684. NULL,
  27685. 0
  27686. };
  27687. static long _vq_quantlist__44u1__p6_0[] = {
  27688. 6,
  27689. 5,
  27690. 7,
  27691. 4,
  27692. 8,
  27693. 3,
  27694. 9,
  27695. 2,
  27696. 10,
  27697. 1,
  27698. 11,
  27699. 0,
  27700. 12,
  27701. };
  27702. static long _vq_lengthlist__44u1__p6_0[] = {
  27703. 1, 4, 4, 7, 7, 9, 8,10, 9,11,10,14,13, 4, 5, 5,
  27704. 8, 8, 9, 9,11,11,11,11,14,14, 4, 5, 5, 8, 8, 9,
  27705. 9,10,11,11,11,14,14, 7, 8, 8, 9, 9,11,10,11,11,
  27706. 12,12,16,15, 7, 8, 8, 9, 9,10,11,11,11,12,12,15,
  27707. 15, 9,10,10,11,11,11,11,12,12,13,13,16,16, 9,10,
  27708. 10,11,11,11,11,12,12,12,13,16,15,10,11,11,11,11,
  27709. 12,12,13,13,13,13,16,17,10,11,11,11,11,12,12,12,
  27710. 12,13,14,16,16,11,12,12,12,12,13,13,14,14,14,15,
  27711. 18,17,11,12,12,12,12,13,13,13,14,14,15,18,18,15,
  27712. 14,15,15,15,16,16,17,17,18,17,20,20,14,15,15,15,
  27713. 15,16,17,17,16,18, 0,19, 0,
  27714. };
  27715. static float _vq_quantthresh__44u1__p6_0[] = {
  27716. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  27717. 12.5, 17.5, 22.5, 27.5,
  27718. };
  27719. static long _vq_quantmap__44u1__p6_0[] = {
  27720. 11, 9, 7, 5, 3, 1, 0, 2,
  27721. 4, 6, 8, 10, 12,
  27722. };
  27723. static encode_aux_threshmatch _vq_auxt__44u1__p6_0 = {
  27724. _vq_quantthresh__44u1__p6_0,
  27725. _vq_quantmap__44u1__p6_0,
  27726. 13,
  27727. 13
  27728. };
  27729. static static_codebook _44u1__p6_0 = {
  27730. 2, 169,
  27731. _vq_lengthlist__44u1__p6_0,
  27732. 1, -526516224, 1616117760, 4, 0,
  27733. _vq_quantlist__44u1__p6_0,
  27734. NULL,
  27735. &_vq_auxt__44u1__p6_0,
  27736. NULL,
  27737. 0
  27738. };
  27739. static long _vq_quantlist__44u1__p6_1[] = {
  27740. 2,
  27741. 1,
  27742. 3,
  27743. 0,
  27744. 4,
  27745. };
  27746. static long _vq_lengthlist__44u1__p6_1[] = {
  27747. 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
  27748. 6, 5, 6, 6, 5, 5, 6, 6, 6,
  27749. };
  27750. static float _vq_quantthresh__44u1__p6_1[] = {
  27751. -1.5, -0.5, 0.5, 1.5,
  27752. };
  27753. static long _vq_quantmap__44u1__p6_1[] = {
  27754. 3, 1, 0, 2, 4,
  27755. };
  27756. static encode_aux_threshmatch _vq_auxt__44u1__p6_1 = {
  27757. _vq_quantthresh__44u1__p6_1,
  27758. _vq_quantmap__44u1__p6_1,
  27759. 5,
  27760. 5
  27761. };
  27762. static static_codebook _44u1__p6_1 = {
  27763. 2, 25,
  27764. _vq_lengthlist__44u1__p6_1,
  27765. 1, -533725184, 1611661312, 3, 0,
  27766. _vq_quantlist__44u1__p6_1,
  27767. NULL,
  27768. &_vq_auxt__44u1__p6_1,
  27769. NULL,
  27770. 0
  27771. };
  27772. static long _vq_quantlist__44u1__p7_0[] = {
  27773. 3,
  27774. 2,
  27775. 4,
  27776. 1,
  27777. 5,
  27778. 0,
  27779. 6,
  27780. };
  27781. static long _vq_lengthlist__44u1__p7_0[] = {
  27782. 1, 3, 3, 9, 9, 9, 9, 5, 7, 7, 9, 9, 9, 9, 5, 6,
  27783. 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  27784. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  27785. 8,
  27786. };
  27787. static float _vq_quantthresh__44u1__p7_0[] = {
  27788. -422.5, -253.5, -84.5, 84.5, 253.5, 422.5,
  27789. };
  27790. static long _vq_quantmap__44u1__p7_0[] = {
  27791. 5, 3, 1, 0, 2, 4, 6,
  27792. };
  27793. static encode_aux_threshmatch _vq_auxt__44u1__p7_0 = {
  27794. _vq_quantthresh__44u1__p7_0,
  27795. _vq_quantmap__44u1__p7_0,
  27796. 7,
  27797. 7
  27798. };
  27799. static static_codebook _44u1__p7_0 = {
  27800. 2, 49,
  27801. _vq_lengthlist__44u1__p7_0,
  27802. 1, -518017024, 1626677248, 3, 0,
  27803. _vq_quantlist__44u1__p7_0,
  27804. NULL,
  27805. &_vq_auxt__44u1__p7_0,
  27806. NULL,
  27807. 0
  27808. };
  27809. static long _vq_quantlist__44u1__p7_1[] = {
  27810. 6,
  27811. 5,
  27812. 7,
  27813. 4,
  27814. 8,
  27815. 3,
  27816. 9,
  27817. 2,
  27818. 10,
  27819. 1,
  27820. 11,
  27821. 0,
  27822. 12,
  27823. };
  27824. static long _vq_lengthlist__44u1__p7_1[] = {
  27825. 1, 4, 4, 6, 6, 6, 7, 8, 8, 9, 9,11,10, 4, 7, 7,
  27826. 8, 8, 8, 8, 9, 9,11,10,12,11, 4, 6, 7, 8, 8, 8,
  27827. 8,10,10,10,11,12,11, 7, 8, 8, 9, 9,10,10,11,11,
  27828. 12,12,13,13, 7, 8, 8, 9, 9,10,10,11,11,12,12,13,
  27829. 13, 7, 8, 8,10,10,13,12,13,13,16,13,13,14, 7, 8,
  27830. 8,10,11,12,12,13,13,14,14,14,14, 8,10,10,13,12,
  27831. 13,13,16,14,15,15,16,15, 8,10,11,12,13,13,13,13,
  27832. 16,15,16,16,14,10,12,13,14,15,15,14,14,14,15,16,
  27833. 15,16,10,11,12,13,13,15,15,16,16,16,14,16,16,12,
  27834. 13,13,15,14,15,14,15,15,14,15,16,16,11,14,14,15,
  27835. 14,16,15,16,14,15,16,14,15,
  27836. };
  27837. static float _vq_quantthresh__44u1__p7_1[] = {
  27838. -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5,
  27839. 32.5, 45.5, 58.5, 71.5,
  27840. };
  27841. static long _vq_quantmap__44u1__p7_1[] = {
  27842. 11, 9, 7, 5, 3, 1, 0, 2,
  27843. 4, 6, 8, 10, 12,
  27844. };
  27845. static encode_aux_threshmatch _vq_auxt__44u1__p7_1 = {
  27846. _vq_quantthresh__44u1__p7_1,
  27847. _vq_quantmap__44u1__p7_1,
  27848. 13,
  27849. 13
  27850. };
  27851. static static_codebook _44u1__p7_1 = {
  27852. 2, 169,
  27853. _vq_lengthlist__44u1__p7_1,
  27854. 1, -523010048, 1618608128, 4, 0,
  27855. _vq_quantlist__44u1__p7_1,
  27856. NULL,
  27857. &_vq_auxt__44u1__p7_1,
  27858. NULL,
  27859. 0
  27860. };
  27861. static long _vq_quantlist__44u1__p7_2[] = {
  27862. 6,
  27863. 5,
  27864. 7,
  27865. 4,
  27866. 8,
  27867. 3,
  27868. 9,
  27869. 2,
  27870. 10,
  27871. 1,
  27872. 11,
  27873. 0,
  27874. 12,
  27875. };
  27876. static long _vq_lengthlist__44u1__p7_2[] = {
  27877. 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 5, 6, 6,
  27878. 6, 7, 8, 7, 8, 8, 8, 9, 9, 9, 5, 6, 6, 7, 7, 8,
  27879. 8, 8, 8, 8, 8, 8, 9, 6, 7, 7, 7, 7, 8, 8, 8, 9,
  27880. 9, 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9,
  27881. 9, 7, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 7, 8,
  27882. 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 9, 9, 9,
  27883. 8, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 8, 9,
  27884. 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  27885. 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
  27886. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  27887. 9, 9, 9, 9, 9, 9, 9, 9, 9,
  27888. };
  27889. static float _vq_quantthresh__44u1__p7_2[] = {
  27890. -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5,
  27891. 2.5, 3.5, 4.5, 5.5,
  27892. };
  27893. static long _vq_quantmap__44u1__p7_2[] = {
  27894. 11, 9, 7, 5, 3, 1, 0, 2,
  27895. 4, 6, 8, 10, 12,
  27896. };
  27897. static encode_aux_threshmatch _vq_auxt__44u1__p7_2 = {
  27898. _vq_quantthresh__44u1__p7_2,
  27899. _vq_quantmap__44u1__p7_2,
  27900. 13,
  27901. 13
  27902. };
  27903. static static_codebook _44u1__p7_2 = {
  27904. 2, 169,
  27905. _vq_lengthlist__44u1__p7_2,
  27906. 1, -531103744, 1611661312, 4, 0,
  27907. _vq_quantlist__44u1__p7_2,
  27908. NULL,
  27909. &_vq_auxt__44u1__p7_2,
  27910. NULL,
  27911. 0
  27912. };
  27913. static long _huff_lengthlist__44u1__short[] = {
  27914. 7,12,12,14,16,13,12,15, 6, 9,10,13,11,11,12,12,
  27915. 4, 5, 5, 8, 5, 7, 9,12, 6, 7, 8,10, 8, 9,11,16,
  27916. 5, 5, 4, 7, 4, 5, 7,15, 6, 5, 5, 8, 5, 5, 6,15,
  27917. 8, 7, 4, 7, 3, 4, 5,16,15,11, 6, 8, 5, 6, 8,16,
  27918. };
  27919. static static_codebook _huff_book__44u1__short = {
  27920. 2, 64,
  27921. _huff_lengthlist__44u1__short,
  27922. 0, 0, 0, 0, 0,
  27923. NULL,
  27924. NULL,
  27925. NULL,
  27926. NULL,
  27927. 0
  27928. };
  27929. static long _huff_lengthlist__44u2__long[] = {
  27930. 8,14,15,15,17,15,12,13,13, 3, 4, 7, 8, 7, 8,11,
  27931. 20, 4, 3, 6, 5, 7, 9,16,15, 6, 5, 6, 6, 6, 8,15,
  27932. 20, 7, 4, 6, 4, 5, 8,18,16, 7, 6, 6, 5, 5, 6,14,
  27933. 11, 7, 8, 7, 7, 5, 4,10,10,13,15,16,19,10, 6,10,
  27934. };
  27935. static static_codebook _huff_book__44u2__long = {
  27936. 2, 64,
  27937. _huff_lengthlist__44u2__long,
  27938. 0, 0, 0, 0, 0,
  27939. NULL,
  27940. NULL,
  27941. NULL,
  27942. NULL,
  27943. 0
  27944. };
  27945. static long _vq_quantlist__44u2__p1_0[] = {
  27946. 1,
  27947. 0,
  27948. 2,
  27949. };
  27950. static long _vq_lengthlist__44u2__p1_0[] = {
  27951. 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
  27952. 10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
  27953. 11, 8,11,11, 8,11,11,11,13,14,11,13,13, 8,11,11,
  27954. 10,13,12,11,13,14, 4, 8, 8, 8,11,11, 8,11,11, 7,
  27955. 11,11,11,14,13,10,12,13, 8,11,11,11,14,13,11,13,
  27956. 13,
  27957. };
  27958. static float _vq_quantthresh__44u2__p1_0[] = {
  27959. -0.5, 0.5,
  27960. };
  27961. static long _vq_quantmap__44u2__p1_0[] = {
  27962. 1, 0, 2,
  27963. };
  27964. static encode_aux_threshmatch _vq_auxt__44u2__p1_0 = {
  27965. _vq_quantthresh__44u2__p1_0,
  27966. _vq_quantmap__44u2__p1_0,
  27967. 3,
  27968. 3
  27969. };
  27970. static static_codebook _44u2__p1_0 = {
  27971. 4, 81,
  27972. _vq_lengthlist__44u2__p1_0,
  27973. 1, -535822336, 1611661312, 2, 0,
  27974. _vq_quantlist__44u2__p1_0,
  27975. NULL,
  27976. &_vq_auxt__44u2__p1_0,
  27977. NULL,
  27978. 0
  27979. };
  27980. static long _vq_quantlist__44u2__p2_0[] = {
  27981. 1,
  27982. 0,
  27983. 2,
  27984. };
  27985. static long _vq_lengthlist__44u2__p2_0[] = {
  27986. 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
  27987. 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
  27988. 7, 6, 7, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 8, 8,
  27989. 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 8, 6, 7, 8, 6,
  27990. 8, 8, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
  27991. 9,
  27992. };
  27993. static float _vq_quantthresh__44u2__p2_0[] = {
  27994. -0.5, 0.5,
  27995. };
  27996. static long _vq_quantmap__44u2__p2_0[] = {
  27997. 1, 0, 2,
  27998. };
  27999. static encode_aux_threshmatch _vq_auxt__44u2__p2_0 = {
  28000. _vq_quantthresh__44u2__p2_0,
  28001. _vq_quantmap__44u2__p2_0,
  28002. 3,
  28003. 3
  28004. };
  28005. static static_codebook _44u2__p2_0 = {
  28006. 4, 81,
  28007. _vq_lengthlist__44u2__p2_0,
  28008. 1, -535822336, 1611661312, 2, 0,
  28009. _vq_quantlist__44u2__p2_0,
  28010. NULL,
  28011. &_vq_auxt__44u2__p2_0,
  28012. NULL,
  28013. 0
  28014. };
  28015. static long _vq_quantlist__44u2__p3_0[] = {
  28016. 2,
  28017. 1,
  28018. 3,
  28019. 0,
  28020. 4,
  28021. };
  28022. static long _vq_lengthlist__44u2__p3_0[] = {
  28023. 2, 4, 4, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
  28024. 9, 9,12,12, 8, 9,10,11,12, 5, 7, 7,10,10, 7, 9,
  28025. 9,11,10, 7, 8, 9,10,11,10,11,10,14,13, 9,10,10,
  28026. 12,13, 5, 7, 7,10,10, 7, 9, 8,11,10, 7, 9, 9,11,
  28027. 11, 9,10,10,13,12,10,10,11,13,13, 8,10,10,15,13,
  28028. 10,11,11,15,13, 9,11,11,14,13,13,14,13,17,15,12,
  28029. 13,13,15,15, 8,10,10,13,14, 9,11,11,13,14,10,11,
  28030. 12,13,16,12,13,13,15,15,13,13,14,15,17, 5, 7, 7,
  28031. 10,10, 7, 9, 9,11,11, 7, 9, 9,11,12,10,11,11,14,
  28032. 14,10,11,12,14,14, 7, 9, 9,12,12, 9,11,11,13,12,
  28033. 9,11,11,13,13,12,13,12,14,14,11,12,12,15,14, 7,
  28034. 9, 9,12,11, 9,11,10,13,11, 9,11,11,12,13,11,12,
  28035. 11,14,13,11,12,12,15,15,10,12,12,16,15,11,13,13,
  28036. 16,16,10,12,12,16,16,14,14,14,17,16,13,14,14,17,
  28037. 18, 9,11,11,14,15,10,12,11,15,15,10,12,12,15,17,
  28038. 13,15,13,17,16,13,14,15,17,19, 5, 7, 7,10,10, 7,
  28039. 9, 9,12,11, 7, 9, 9,11,11,10,11,11,15,14,10,11,
  28040. 12,13,14, 7, 9, 9,12,12, 9,11,11,13,12, 8,10,11,
  28041. 12,12,11,12,12,15,15,11,11,12,14,14, 7, 9, 9,12,
  28042. 12, 9,11,11,13,13, 9,11,11,12,12,11,12,12,16,15,
  28043. 11,12,13,14,14, 9,11,11,16,15,10,12,12,16,15,10,
  28044. 11,12,14,14,13,14,15,18,17,13,13,14,16,16,10,12,
  28045. 12,15,15,10,13,12,15,17,11,13,12,15,16,13,15,14,
  28046. 17,18,14,15,14,15,17, 8,10,10,15,15,10,12,12,17,
  28047. 15,10,12,12,17,16,14,16,15,17,17,13,14,15,16,16,
  28048. 9,11,12,16,16,11,13,13,16,17,11,13,13,16,16,15,
  28049. 16,16, 0, 0,14,15,15,19,17, 9,11,11,17,16,10,13,
  28050. 11,16,16,11,12,12,16,17,15,16,15,19,19,14,16,15,
  28051. 0,18,12,14,15, 0, 0,14,15,16,18,18,13,14,15,17,
  28052. 17,16,18,18, 0, 0,15,16,16,19,18,11,14,13, 0,18,
  28053. 13,16,13,17,17,13,15,14, 0, 0,17,17,15,19,18,14,
  28054. 16,16,19, 0, 8,10,10,15,15,10,12,11,16,16,10,11,
  28055. 12,17,16,14,15,15,17,18,15,15,16, 0, 0, 9,11,11,
  28056. 15,15,11,13,12,16,18,10,12,13,17,17,13,15,15,17,
  28057. 19,15,15,16,19,18, 9,12,11, 0,16,11,13,12,16,16,
  28058. 11,13,13,16,17,14,16,15,19,19,15,15,16,18,18,12,
  28059. 14,14,17,18,13,14,15,18, 0,13,14,15,18,19,15,17,
  28060. 16, 0,19,16,15,18,17,19,12,14,14,19,19,13,15,15,
  28061. 0,18,13,17,15,18,18,15,16,17, 0,19,17,19,18,18,
  28062. 0,
  28063. };
  28064. static float _vq_quantthresh__44u2__p3_0[] = {
  28065. -1.5, -0.5, 0.5, 1.5,
  28066. };
  28067. static long _vq_quantmap__44u2__p3_0[] = {
  28068. 3, 1, 0, 2, 4,
  28069. };
  28070. static encode_aux_threshmatch _vq_auxt__44u2__p3_0 = {
  28071. _vq_quantthresh__44u2__p3_0,
  28072. _vq_quantmap__44u2__p3_0,
  28073. 5,
  28074. 5
  28075. };
  28076. static static_codebook _44u2__p3_0 = {
  28077. 4, 625,
  28078. _vq_lengthlist__44u2__p3_0,
  28079. 1, -533725184, 1611661312, 3, 0,
  28080. _vq_quantlist__44u2__p3_0,
  28081. NULL,
  28082. &_vq_auxt__44u2__p3_0,
  28083. NULL,
  28084. 0
  28085. };
  28086. static long _vq_quantlist__44u2__p4_0[] = {
  28087. 2,
  28088. 1,
  28089. 3,
  28090. 0,
  28091. 4,
  28092. };
  28093. static long _vq_lengthlist__44u2__p4_0[] = {
  28094. 4, 5, 5, 9, 9, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 9,
  28095. 10, 9,12,11, 9, 9,10,11,12, 6, 7, 7,10,10, 7, 8,
  28096. 7,10,10, 7, 7, 8,10,10,10,10,10,12,12, 9,10,10,
  28097. 11,12, 6, 7, 7,10,10, 7, 8, 7,10,10, 7, 7, 7,10,
  28098. 10, 9,10,10,12,11,10,10,10,12,12, 9,10,10,13,12,
  28099. 10,10,10,13,13,10,10,10,13,12,12,12,12,14,14,12,
  28100. 12,12,14,14, 9,10,10,12,13, 9,10,10,13,13,10,10,
  28101. 10,13,13,12,12,12,15,14,12,13,12,14,14, 5, 7, 7,
  28102. 10,10, 7, 8, 7,10,10, 7, 7, 8,10,10,10,10,10,12,
  28103. 12,10,10,10,12,12, 7, 8, 8,10,10, 8, 8, 8,10,11,
  28104. 8, 8, 8,11,10,10,10,11,11,13,10,10,11,12,13, 6,
  28105. 7, 7,10,10, 7, 8, 7,11,10, 8, 8, 8,10,11,10,11,
  28106. 10,13,11,10,10,10,13,12,10,11,10,13,13,10,10,10,
  28107. 12,13,10,11,11,13,13,12,11,13,11,14,12,13,13,14,
  28108. 14, 9,10,10,12,13,10,10,10,13,12,10,10,11,13,13,
  28109. 12,13,11,14,12,13,13,13,15,14, 5, 7, 7,10,10, 7,
  28110. 7, 7,10,10, 7, 7, 8,10,10,10,10,10,12,12,10,10,
  28111. 10,12,13, 6, 7, 7,10,10, 8, 8, 8,11,10, 7, 7, 8,
  28112. 10,11,10,10,10,12,12,10,10,11,11,13, 7, 8, 8,10,
  28113. 10, 7, 8, 8,10,11, 8, 8, 8,11,10,10,11,10,13,12,
  28114. 10,11,10,13,11, 9,10,10,13,13,10,11,11,13,13,10,
  28115. 10,10,12,13,13,13,13,14,14,12,11,13,12,14,10,10,
  28116. 11,13,13,10,11,11,13,13,10,10,10,13,12,12,13,13,
  28117. 14,14,12,13,11,15,12, 9,10,10,13,13,10,10,10,13,
  28118. 13,10,10,10,13,13,13,13,13,15,15,12,13,13,14,14,
  28119. 9,10,10,13,13,10,10,11,13,13,10,11,10,13,12,13,
  28120. 12,13,14,15,13,13,13,15,14, 9,10,10,13,13,10,10,
  28121. 10,13,12,10,10,11,12,13,13,13,12,15,14,13,13,13,
  28122. 14,14,12,13,12,15,14,12,11,12,14,14,12,13,12,15,
  28123. 14,14,12,15,12,16,14,14,15,16,16,12,12,12,14,15,
  28124. 11,12,11,15,14,12,13,13,14,15,14,14,12,16,13,14,
  28125. 14,15,16,16, 9,10,10,13,13,10,10,10,13,13,10,10,
  28126. 10,13,13,12,13,12,14,14,13,13,13,15,15, 9,10,10,
  28127. 13,13,10,11,10,13,12,10,10,10,12,13,13,13,13,14,
  28128. 14,12,12,13,14,15, 9,10,10,13,13,10,10,11,12,13,
  28129. 10,11,10,13,13,13,13,13,14,15,13,13,13,15,14,12,
  28130. 12,12,15,14,12,13,12,15,14,11,11,12,14,15,14,14,
  28131. 14,17,16,14,12,14,13,17,12,12,13,14,16,13,13,13,
  28132. 13,15,12,12,11,14,14,14,15,14,16,16,14,14,12,16,
  28133. 12,
  28134. };
  28135. static float _vq_quantthresh__44u2__p4_0[] = {
  28136. -1.5, -0.5, 0.5, 1.5,
  28137. };
  28138. static long _vq_quantmap__44u2__p4_0[] = {
  28139. 3, 1, 0, 2, 4,
  28140. };
  28141. static encode_aux_threshmatch _vq_auxt__44u2__p4_0 = {
  28142. _vq_quantthresh__44u2__p4_0,
  28143. _vq_quantmap__44u2__p4_0,
  28144. 5,
  28145. 5
  28146. };
  28147. static static_codebook _44u2__p4_0 = {
  28148. 4, 625,
  28149. _vq_lengthlist__44u2__p4_0,
  28150. 1, -533725184, 1611661312, 3, 0,
  28151. _vq_quantlist__44u2__p4_0,
  28152. NULL,
  28153. &_vq_auxt__44u2__p4_0,
  28154. NULL,
  28155. 0
  28156. };
  28157. static long _vq_quantlist__44u2__p5_0[] = {
  28158. 4,
  28159. 3,
  28160. 5,
  28161. 2,
  28162. 6,
  28163. 1,
  28164. 7,
  28165. 0,
  28166. 8,
  28167. };
  28168. static long _vq_lengthlist__44u2__p5_0[] = {
  28169. 2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 4, 7, 7, 8, 7,
  28170. 9, 9, 4, 4, 4, 7, 7, 7, 8, 9, 9, 6, 7, 7, 8, 8,
  28171. 8, 9,10,10, 6, 7, 7, 8, 8, 9, 8,10,10, 7, 8, 7,
  28172. 8, 9, 9,10,11,11, 7, 7, 8, 9, 9,10,10,11,11, 9,
  28173. 9, 9,10,10,11,11,12,12, 9, 9, 9,10,10,11,11,12,
  28174. 12,
  28175. };
  28176. static float _vq_quantthresh__44u2__p5_0[] = {
  28177. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  28178. };
  28179. static long _vq_quantmap__44u2__p5_0[] = {
  28180. 7, 5, 3, 1, 0, 2, 4, 6,
  28181. 8,
  28182. };
  28183. static encode_aux_threshmatch _vq_auxt__44u2__p5_0 = {
  28184. _vq_quantthresh__44u2__p5_0,
  28185. _vq_quantmap__44u2__p5_0,
  28186. 9,
  28187. 9
  28188. };
  28189. static static_codebook _44u2__p5_0 = {
  28190. 2, 81,
  28191. _vq_lengthlist__44u2__p5_0,
  28192. 1, -531628032, 1611661312, 4, 0,
  28193. _vq_quantlist__44u2__p5_0,
  28194. NULL,
  28195. &_vq_auxt__44u2__p5_0,
  28196. NULL,
  28197. 0
  28198. };
  28199. static long _vq_quantlist__44u2__p6_0[] = {
  28200. 6,
  28201. 5,
  28202. 7,
  28203. 4,
  28204. 8,
  28205. 3,
  28206. 9,
  28207. 2,
  28208. 10,
  28209. 1,
  28210. 11,
  28211. 0,
  28212. 12,
  28213. };
  28214. static long _vq_lengthlist__44u2__p6_0[] = {
  28215. 1, 4, 4, 6, 6, 8, 8, 9,10,11,11,14,14, 4, 6, 5,
  28216. 8, 8, 9, 9,11,11,11,11,14,14, 4, 5, 5, 8, 8, 9,
  28217. 9,10,11,11,12,14,14, 7, 8, 8, 9, 9,11,10,11,11,
  28218. 12,12,15,15, 7, 8, 8, 9, 9,11,11,11,11,12,12,15,
  28219. 14, 9,10,10,11,11,11,11,12,12,13,12,16,16, 9,10,
  28220. 10,11,11,11,11,12,12,13,13,15,16,10,11,11,11,11,
  28221. 12,12,13,13,13,13,17,16,10,11,11,12,12,12,12,12,
  28222. 13,14,14,16,16,11,12,12,12,12,13,13,14,14,14,14,
  28223. 17,17,11,12,12,12,12,13,13,14,14,15,14,18,17,15,
  28224. 14,15,15,15,16,16,17,18,19,17,19, 0,15,15,15,15,
  28225. 15,16,17,16,16,18,17, 0, 0,
  28226. };
  28227. static float _vq_quantthresh__44u2__p6_0[] = {
  28228. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  28229. 12.5, 17.5, 22.5, 27.5,
  28230. };
  28231. static long _vq_quantmap__44u2__p6_0[] = {
  28232. 11, 9, 7, 5, 3, 1, 0, 2,
  28233. 4, 6, 8, 10, 12,
  28234. };
  28235. static encode_aux_threshmatch _vq_auxt__44u2__p6_0 = {
  28236. _vq_quantthresh__44u2__p6_0,
  28237. _vq_quantmap__44u2__p6_0,
  28238. 13,
  28239. 13
  28240. };
  28241. static static_codebook _44u2__p6_0 = {
  28242. 2, 169,
  28243. _vq_lengthlist__44u2__p6_0,
  28244. 1, -526516224, 1616117760, 4, 0,
  28245. _vq_quantlist__44u2__p6_0,
  28246. NULL,
  28247. &_vq_auxt__44u2__p6_0,
  28248. NULL,
  28249. 0
  28250. };
  28251. static long _vq_quantlist__44u2__p6_1[] = {
  28252. 2,
  28253. 1,
  28254. 3,
  28255. 0,
  28256. 4,
  28257. };
  28258. static long _vq_lengthlist__44u2__p6_1[] = {
  28259. 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 5, 5,
  28260. 6, 6, 6, 6, 5, 5, 6, 6, 6,
  28261. };
  28262. static float _vq_quantthresh__44u2__p6_1[] = {
  28263. -1.5, -0.5, 0.5, 1.5,
  28264. };
  28265. static long _vq_quantmap__44u2__p6_1[] = {
  28266. 3, 1, 0, 2, 4,
  28267. };
  28268. static encode_aux_threshmatch _vq_auxt__44u2__p6_1 = {
  28269. _vq_quantthresh__44u2__p6_1,
  28270. _vq_quantmap__44u2__p6_1,
  28271. 5,
  28272. 5
  28273. };
  28274. static static_codebook _44u2__p6_1 = {
  28275. 2, 25,
  28276. _vq_lengthlist__44u2__p6_1,
  28277. 1, -533725184, 1611661312, 3, 0,
  28278. _vq_quantlist__44u2__p6_1,
  28279. NULL,
  28280. &_vq_auxt__44u2__p6_1,
  28281. NULL,
  28282. 0
  28283. };
  28284. static long _vq_quantlist__44u2__p7_0[] = {
  28285. 4,
  28286. 3,
  28287. 5,
  28288. 2,
  28289. 6,
  28290. 1,
  28291. 7,
  28292. 0,
  28293. 8,
  28294. };
  28295. static long _vq_lengthlist__44u2__p7_0[] = {
  28296. 1, 3, 3,10,10,10,10,10,10, 4,10,10,10,10,10,10,
  28297. 10,10, 4,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
  28298. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  28299. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  28300. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  28301. 9,
  28302. };
  28303. static float _vq_quantthresh__44u2__p7_0[] = {
  28304. -591.5, -422.5, -253.5, -84.5, 84.5, 253.5, 422.5, 591.5,
  28305. };
  28306. static long _vq_quantmap__44u2__p7_0[] = {
  28307. 7, 5, 3, 1, 0, 2, 4, 6,
  28308. 8,
  28309. };
  28310. static encode_aux_threshmatch _vq_auxt__44u2__p7_0 = {
  28311. _vq_quantthresh__44u2__p7_0,
  28312. _vq_quantmap__44u2__p7_0,
  28313. 9,
  28314. 9
  28315. };
  28316. static static_codebook _44u2__p7_0 = {
  28317. 2, 81,
  28318. _vq_lengthlist__44u2__p7_0,
  28319. 1, -516612096, 1626677248, 4, 0,
  28320. _vq_quantlist__44u2__p7_0,
  28321. NULL,
  28322. &_vq_auxt__44u2__p7_0,
  28323. NULL,
  28324. 0
  28325. };
  28326. static long _vq_quantlist__44u2__p7_1[] = {
  28327. 6,
  28328. 5,
  28329. 7,
  28330. 4,
  28331. 8,
  28332. 3,
  28333. 9,
  28334. 2,
  28335. 10,
  28336. 1,
  28337. 11,
  28338. 0,
  28339. 12,
  28340. };
  28341. static long _vq_lengthlist__44u2__p7_1[] = {
  28342. 1, 4, 4, 6, 6, 7, 7, 8, 7, 9, 9,10,10, 4, 7, 6,
  28343. 8, 8, 8, 8,10, 9,11,10,12,12, 4, 6, 7, 8, 8, 8,
  28344. 8,10,10,11,11,12,12, 7, 8, 8,10, 9,10,10,12,11,
  28345. 13,12,13,13, 7, 8, 8, 9, 9,10,10,11,11,13,13,14,
  28346. 15, 7, 8, 9,10,10,12,11,14,13,13,14,14,15, 7, 8,
  28347. 9,10,10,11,12,13,13,15,14,14,15, 8,10,10,12,11,
  28348. 13,13,15,15,15,17,15,15, 8,10,10,11,12,14,13,14,
  28349. 15,17,15,15,15,10,11,11,14,13,14,14,15,15,17,17,
  28350. 16,17,10,11,12,13,13,14,14,14,15,16,15,15,17,11,
  28351. 12,13,14,13,16,16,16,14,17,16,17,17,11,12,13,15,
  28352. 15,15,15,16,15,15,15,15,17,
  28353. };
  28354. static float _vq_quantthresh__44u2__p7_1[] = {
  28355. -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5,
  28356. 32.5, 45.5, 58.5, 71.5,
  28357. };
  28358. static long _vq_quantmap__44u2__p7_1[] = {
  28359. 11, 9, 7, 5, 3, 1, 0, 2,
  28360. 4, 6, 8, 10, 12,
  28361. };
  28362. static encode_aux_threshmatch _vq_auxt__44u2__p7_1 = {
  28363. _vq_quantthresh__44u2__p7_1,
  28364. _vq_quantmap__44u2__p7_1,
  28365. 13,
  28366. 13
  28367. };
  28368. static static_codebook _44u2__p7_1 = {
  28369. 2, 169,
  28370. _vq_lengthlist__44u2__p7_1,
  28371. 1, -523010048, 1618608128, 4, 0,
  28372. _vq_quantlist__44u2__p7_1,
  28373. NULL,
  28374. &_vq_auxt__44u2__p7_1,
  28375. NULL,
  28376. 0
  28377. };
  28378. static long _vq_quantlist__44u2__p7_2[] = {
  28379. 6,
  28380. 5,
  28381. 7,
  28382. 4,
  28383. 8,
  28384. 3,
  28385. 9,
  28386. 2,
  28387. 10,
  28388. 1,
  28389. 11,
  28390. 0,
  28391. 12,
  28392. };
  28393. static long _vq_lengthlist__44u2__p7_2[] = {
  28394. 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 5, 6, 6,
  28395. 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 5, 6, 6, 7, 7, 8,
  28396. 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7, 7, 8, 8, 8, 8,
  28397. 9, 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
  28398. 9, 7, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 7, 8,
  28399. 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 8,
  28400. 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
  28401. 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  28402. 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  28403. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  28404. 9, 9, 9, 9, 9, 9, 9, 9, 9,
  28405. };
  28406. static float _vq_quantthresh__44u2__p7_2[] = {
  28407. -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5,
  28408. 2.5, 3.5, 4.5, 5.5,
  28409. };
  28410. static long _vq_quantmap__44u2__p7_2[] = {
  28411. 11, 9, 7, 5, 3, 1, 0, 2,
  28412. 4, 6, 8, 10, 12,
  28413. };
  28414. static encode_aux_threshmatch _vq_auxt__44u2__p7_2 = {
  28415. _vq_quantthresh__44u2__p7_2,
  28416. _vq_quantmap__44u2__p7_2,
  28417. 13,
  28418. 13
  28419. };
  28420. static static_codebook _44u2__p7_2 = {
  28421. 2, 169,
  28422. _vq_lengthlist__44u2__p7_2,
  28423. 1, -531103744, 1611661312, 4, 0,
  28424. _vq_quantlist__44u2__p7_2,
  28425. NULL,
  28426. &_vq_auxt__44u2__p7_2,
  28427. NULL,
  28428. 0
  28429. };
  28430. static long _huff_lengthlist__44u2__short[] = {
  28431. 16,15,15,16,14,16,16,16,16, 9, 8,11,10,10,10,15,
  28432. 16, 6, 3, 7, 5, 7, 9,16,16,11, 7,11, 9,10,12,16,
  28433. 16, 9, 4, 8, 3, 5, 8,16,16,11, 6, 9, 4, 4, 7,16,
  28434. 16,11, 5, 9, 3, 3, 5,12,16,15, 6,11, 5, 5, 6,14,
  28435. };
  28436. static static_codebook _huff_book__44u2__short = {
  28437. 2, 64,
  28438. _huff_lengthlist__44u2__short,
  28439. 0, 0, 0, 0, 0,
  28440. NULL,
  28441. NULL,
  28442. NULL,
  28443. NULL,
  28444. 0
  28445. };
  28446. static long _huff_lengthlist__44u3__long[] = {
  28447. 7,11,14,13,14,12,12,12,12, 2, 5, 8, 9, 8, 9,11,
  28448. 17, 4, 3, 6, 5, 7, 9,15,14, 6, 6, 7, 7, 7, 8,14,
  28449. 17, 8, 5, 7, 4, 5, 7,15,13, 7, 6, 7, 5, 5, 6,14,
  28450. 10, 8, 8, 7, 7, 5, 4, 9,10,12,15,14,16,10, 6, 9,
  28451. };
  28452. static static_codebook _huff_book__44u3__long = {
  28453. 2, 64,
  28454. _huff_lengthlist__44u3__long,
  28455. 0, 0, 0, 0, 0,
  28456. NULL,
  28457. NULL,
  28458. NULL,
  28459. NULL,
  28460. 0
  28461. };
  28462. static long _vq_quantlist__44u3__p1_0[] = {
  28463. 1,
  28464. 0,
  28465. 2,
  28466. };
  28467. static long _vq_lengthlist__44u3__p1_0[] = {
  28468. 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
  28469. 10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
  28470. 11, 8,11,11, 8,11,11,11,13,14,11,13,14, 7,11,11,
  28471. 10,13,11,11,13,14, 4, 8, 8, 8,11,11, 8,11,11, 8,
  28472. 11,11,11,14,14,10,12,14, 8,11,11,11,14,13,11,14,
  28473. 13,
  28474. };
  28475. static float _vq_quantthresh__44u3__p1_0[] = {
  28476. -0.5, 0.5,
  28477. };
  28478. static long _vq_quantmap__44u3__p1_0[] = {
  28479. 1, 0, 2,
  28480. };
  28481. static encode_aux_threshmatch _vq_auxt__44u3__p1_0 = {
  28482. _vq_quantthresh__44u3__p1_0,
  28483. _vq_quantmap__44u3__p1_0,
  28484. 3,
  28485. 3
  28486. };
  28487. static static_codebook _44u3__p1_0 = {
  28488. 4, 81,
  28489. _vq_lengthlist__44u3__p1_0,
  28490. 1, -535822336, 1611661312, 2, 0,
  28491. _vq_quantlist__44u3__p1_0,
  28492. NULL,
  28493. &_vq_auxt__44u3__p1_0,
  28494. NULL,
  28495. 0
  28496. };
  28497. static long _vq_quantlist__44u3__p2_0[] = {
  28498. 1,
  28499. 0,
  28500. 2,
  28501. };
  28502. static long _vq_lengthlist__44u3__p2_0[] = {
  28503. 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
  28504. 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
  28505. 7, 6, 8, 8, 6, 8, 8, 8, 8, 9, 8, 9, 9, 6, 8, 7,
  28506. 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 8, 6, 8, 8, 6,
  28507. 8, 8, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
  28508. 8,
  28509. };
  28510. static float _vq_quantthresh__44u3__p2_0[] = {
  28511. -0.5, 0.5,
  28512. };
  28513. static long _vq_quantmap__44u3__p2_0[] = {
  28514. 1, 0, 2,
  28515. };
  28516. static encode_aux_threshmatch _vq_auxt__44u3__p2_0 = {
  28517. _vq_quantthresh__44u3__p2_0,
  28518. _vq_quantmap__44u3__p2_0,
  28519. 3,
  28520. 3
  28521. };
  28522. static static_codebook _44u3__p2_0 = {
  28523. 4, 81,
  28524. _vq_lengthlist__44u3__p2_0,
  28525. 1, -535822336, 1611661312, 2, 0,
  28526. _vq_quantlist__44u3__p2_0,
  28527. NULL,
  28528. &_vq_auxt__44u3__p2_0,
  28529. NULL,
  28530. 0
  28531. };
  28532. static long _vq_quantlist__44u3__p3_0[] = {
  28533. 2,
  28534. 1,
  28535. 3,
  28536. 0,
  28537. 4,
  28538. };
  28539. static long _vq_lengthlist__44u3__p3_0[] = {
  28540. 2, 4, 4, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
  28541. 10, 9,12,12, 8, 9,10,12,12, 5, 7, 7,10,10, 7, 9,
  28542. 9,11,11, 7, 8, 9,10,11,10,11,10,14,13, 9,10,11,
  28543. 13,13, 5, 7, 7,10,10, 7, 9, 8,11,10, 7, 9, 9,11,
  28544. 11, 9,10,10,13,12,10,10,11,13,14, 8,10,10,14,13,
  28545. 10,11,11,15,13, 9,11,11,14,13,13,14,13,17,15,12,
  28546. 13,13,17,14, 8,10,10,14,14, 9,11,11,14,15,10,11,
  28547. 12,14,16,12,13,13,14,17,13,13,14,14,17, 5, 7, 7,
  28548. 10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,11,11,15,
  28549. 14,10,11,11,15,14, 7, 9, 9,12,12, 9,11,11,13,13,
  28550. 9,11,11,13,13,11,12,12,15,14,11,12,12,15,16, 7,
  28551. 9, 9,12,11, 8,11,10,13,12, 9,11,11,12,13,11,12,
  28552. 11,16,14,11,12,13,15,16,10,12,12,17,15,11,12,13,
  28553. 16,15,11,12,12,16,16,15,15,15,16,16,13,14,15, 0,
  28554. 17, 9,11,11,15,15,10,12,11,16,15,11,12,12,15,17,
  28555. 13,15,13,16,15,13,15,14, 0,18, 5, 7, 7,10,10, 7,
  28556. 9, 9,12,11, 7, 9, 9,11,11,10,11,11,14,14,10,11,
  28557. 11,14,15, 7, 9, 9,12,11, 9,11,11,13,12, 8,10,11,
  28558. 11,12,11,12,12,16,15,11,11,12,13,14, 7, 9, 9,12,
  28559. 12, 9,11,11,13,13, 9,11,11,13,13,11,12,12,16,15,
  28560. 12,12,12,15,15, 9,11,11,17,15,11,12,12,17,16,10,
  28561. 11,12,15,15,13,14,15,18,17,13,13,14,15,15, 9,12,
  28562. 12,15,14,11,13,12,16,16,11,12,12,15,15,13,15,14,
  28563. 0, 0,14,15,14,16,18, 8,10,10,15,15,10,12,12,16,
  28564. 14,10,11,11,16,16,15,16,16,18,16,13,15,14,17,18,
  28565. 9,11,11,16,15,11,12,13,17,17,11,13,13,16,15,15,
  28566. 16,16,18,18,14,16,15,18,17, 9,11,11,16,16,10,13,
  28567. 12,16,16,11,12,12,16,16,14,16,16,17, 0,14,15,15,
  28568. 18,16,12,14,14, 0, 0,14,15,16, 0, 0,14,15,15, 0,
  28569. 0,17,17,16, 0, 0,15,16,18,17, 0,11,14,14,18, 0,
  28570. 12,15,13, 0,18,13,15,14,18, 0,15,16,15, 0,18,15,
  28571. 18,17, 0,18, 8,10,10,15,15,10,12,11,15,15,10,11,
  28572. 12,15,15,13,14,15,17, 0,14,15,16,17, 0, 9,11,11,
  28573. 15,15,11,12,12,17,15,10,12,13,16,15,13,15,15,18,
  28574. 18,15,16,17,18,18, 9,12,11,16,16,11,13,13,16,16,
  28575. 11,13,13,18,15,14,15,15,18, 0,16,16,17, 0,17,12,
  28576. 13,13,18,18,13,14,14,17,18,13,14,15,18,17,17,18,
  28577. 18, 0,18,16,16,18,16, 0,12,15,13,18,18,13,14,15,
  28578. 18,18,13,16,14,17,18,15,17,16, 0,18,17, 0,17, 0,
  28579. 0,
  28580. };
  28581. static float _vq_quantthresh__44u3__p3_0[] = {
  28582. -1.5, -0.5, 0.5, 1.5,
  28583. };
  28584. static long _vq_quantmap__44u3__p3_0[] = {
  28585. 3, 1, 0, 2, 4,
  28586. };
  28587. static encode_aux_threshmatch _vq_auxt__44u3__p3_0 = {
  28588. _vq_quantthresh__44u3__p3_0,
  28589. _vq_quantmap__44u3__p3_0,
  28590. 5,
  28591. 5
  28592. };
  28593. static static_codebook _44u3__p3_0 = {
  28594. 4, 625,
  28595. _vq_lengthlist__44u3__p3_0,
  28596. 1, -533725184, 1611661312, 3, 0,
  28597. _vq_quantlist__44u3__p3_0,
  28598. NULL,
  28599. &_vq_auxt__44u3__p3_0,
  28600. NULL,
  28601. 0
  28602. };
  28603. static long _vq_quantlist__44u3__p4_0[] = {
  28604. 2,
  28605. 1,
  28606. 3,
  28607. 0,
  28608. 4,
  28609. };
  28610. static long _vq_lengthlist__44u3__p4_0[] = {
  28611. 4, 6, 6, 9, 9, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 9,
  28612. 10, 9,12,11, 9, 9,10,11,12, 6, 7, 7, 9, 9, 7, 7,
  28613. 7,10,10, 6, 7, 7, 9,10,10,10,10,12,12, 9, 9,10,
  28614. 11,12, 6, 7, 7, 9, 9, 7, 7, 7,10, 9, 7, 7, 7,10,
  28615. 10, 9,10, 9,12,11,10,10,10,12,12, 9,10,10,12,12,
  28616. 10,10,10,13,12, 9,10,10,12,12,12,12,12,14,14,12,
  28617. 12,12,13,14, 9,10,10,12,12, 9,10,10,12,12,10,10,
  28618. 10,12,13,11,12,12,14,13,12,12,12,14,14, 6, 7, 7,
  28619. 10, 9, 7, 8, 7,10,10, 7, 7, 7,10,10,10,10,10,12,
  28620. 12,10,10,10,12,12, 7, 8, 8,10,10, 8, 8, 8,10,10,
  28621. 7, 8, 8,10,10,10,10,11,11,13,10,10,11,12,13, 6,
  28622. 7, 7,10,10, 7, 8, 7,10,10, 8, 8, 8,10,10,10,11,
  28623. 10,13,11,10,10,10,12,12,10,10,10,13,12,10,10,10,
  28624. 12,13,10,10,10,13,12,12,11,13,12,14,12,12,13,14,
  28625. 14, 9,10,10,12,13, 9,10,10,12,12,10,10,11,12,13,
  28626. 12,12,11,14,12,12,12,13,14,14, 6, 7, 7, 9, 9, 7,
  28627. 7, 7,10,10, 7, 7, 8,10,10,10,10,10,12,12,10,10,
  28628. 10,12,12, 6, 7, 7,10,10, 8, 8, 8,10,10, 7, 7, 8,
  28629. 10,10,10,10,10,12,12,10,10,11,11,13, 7, 8, 8,10,
  28630. 10, 7, 8, 8,10,10, 8, 8, 8,10,10,10,10,10,12,12,
  28631. 10,11,10,13,11, 9,10,10,13,12,10,11,10,13,12, 9,
  28632. 10,10,12,13,12,13,12,14,14,12,11,12,12,14,10,10,
  28633. 10,12,13,10,10,11,12,13,10,10,10,12,12,12,13,12,
  28634. 14,14,12,12,11,14,12, 9,10, 9,12,12,10,10,10,13,
  28635. 13, 9,10,10,13,13,12,13,13,15,14,12,12,13,14,14,
  28636. 9,10,10,13,13,10,10,10,12,13,10,10,10,13,12,13,
  28637. 12,13,14,15,12,13,13,15,14, 9,10,10,13,12,10,10,
  28638. 10,13,12,10,10,10,12,13,12,13,12,14,14,13,12,12,
  28639. 14,14,12,12,12,15,14,12,11,12,14,14,12,13,12,14,
  28640. 14,14,12,14,12,16,14,14,14,16,16,11,12,12,14,14,
  28641. 11,12,11,15,13,12,12,12,14,15,13,14,12,16,13,14,
  28642. 14,15,16,16, 9,10,10,12,12, 9,10,10,13,12, 9,10,
  28643. 10,13,13,12,12,12,14,14,12,13,13,14,15, 9,10,10,
  28644. 13,12,10,11,10,13,12,10,10,10,12,13,12,13,12,14,
  28645. 14,12,12,13,14,15, 9,10,10,13,13,10,10,10,12,13,
  28646. 10,10,10,13,13,12,13,13,14,15,13,13,12,14,14,11,
  28647. 12,12,14,14,12,13,12,15,14,11,11,12,14,15,14,14,
  28648. 14,16,16,14,12,14,13,16,12,12,12,14,15,12,12,13,
  28649. 14,15,12,12,11,14,14,14,14,14,16,16,14,14,12,16,
  28650. 12,
  28651. };
  28652. static float _vq_quantthresh__44u3__p4_0[] = {
  28653. -1.5, -0.5, 0.5, 1.5,
  28654. };
  28655. static long _vq_quantmap__44u3__p4_0[] = {
  28656. 3, 1, 0, 2, 4,
  28657. };
  28658. static encode_aux_threshmatch _vq_auxt__44u3__p4_0 = {
  28659. _vq_quantthresh__44u3__p4_0,
  28660. _vq_quantmap__44u3__p4_0,
  28661. 5,
  28662. 5
  28663. };
  28664. static static_codebook _44u3__p4_0 = {
  28665. 4, 625,
  28666. _vq_lengthlist__44u3__p4_0,
  28667. 1, -533725184, 1611661312, 3, 0,
  28668. _vq_quantlist__44u3__p4_0,
  28669. NULL,
  28670. &_vq_auxt__44u3__p4_0,
  28671. NULL,
  28672. 0
  28673. };
  28674. static long _vq_quantlist__44u3__p5_0[] = {
  28675. 4,
  28676. 3,
  28677. 5,
  28678. 2,
  28679. 6,
  28680. 1,
  28681. 7,
  28682. 0,
  28683. 8,
  28684. };
  28685. static long _vq_lengthlist__44u3__p5_0[] = {
  28686. 2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 4, 7, 6, 8, 8,
  28687. 9, 9, 4, 4, 4, 6, 7, 8, 8, 9, 9, 6, 7, 6, 8, 8,
  28688. 9, 9,10,10, 6, 6, 7, 8, 8, 9, 9,10,10, 8, 8, 8,
  28689. 9, 9,10,10,11,11, 8, 8, 8, 9, 9,10,10,11,11, 9,
  28690. 9, 9,10,10,11,11,12,12, 9, 9,10,10,10,11,11,12,
  28691. 12,
  28692. };
  28693. static float _vq_quantthresh__44u3__p5_0[] = {
  28694. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  28695. };
  28696. static long _vq_quantmap__44u3__p5_0[] = {
  28697. 7, 5, 3, 1, 0, 2, 4, 6,
  28698. 8,
  28699. };
  28700. static encode_aux_threshmatch _vq_auxt__44u3__p5_0 = {
  28701. _vq_quantthresh__44u3__p5_0,
  28702. _vq_quantmap__44u3__p5_0,
  28703. 9,
  28704. 9
  28705. };
  28706. static static_codebook _44u3__p5_0 = {
  28707. 2, 81,
  28708. _vq_lengthlist__44u3__p5_0,
  28709. 1, -531628032, 1611661312, 4, 0,
  28710. _vq_quantlist__44u3__p5_0,
  28711. NULL,
  28712. &_vq_auxt__44u3__p5_0,
  28713. NULL,
  28714. 0
  28715. };
  28716. static long _vq_quantlist__44u3__p6_0[] = {
  28717. 6,
  28718. 5,
  28719. 7,
  28720. 4,
  28721. 8,
  28722. 3,
  28723. 9,
  28724. 2,
  28725. 10,
  28726. 1,
  28727. 11,
  28728. 0,
  28729. 12,
  28730. };
  28731. static long _vq_lengthlist__44u3__p6_0[] = {
  28732. 1, 4, 4, 6, 6, 8, 8, 9,10,10,11,13,14, 4, 6, 5,
  28733. 8, 8, 9, 9,10,10,11,11,14,14, 4, 5, 6, 8, 8, 9,
  28734. 9,10,10,11,11,14,14, 7, 8, 8, 9, 9,10,10,11,11,
  28735. 12,12,15,15, 7, 8, 8, 9, 9,10,10,11,11,12,12,14,
  28736. 15, 8, 9, 9,10,10,11,11,12,12,13,12,16,16, 8, 9,
  28737. 9,10,10,11,11,12,12,12,12,16,16,10,11,10,11,11,
  28738. 12,12,13,13,13,13,17,16,10,11,11,11,11,12,12,12,
  28739. 12,13,13,17,17,11,11,12,12,12,13,13,13,14,14,14,
  28740. 16,17,11,12,11,12,12,13,13,14,14,14,14,19,17,14,
  28741. 14,14,16,15,16,16,16,17,17,17,20,19,14,15,15,15,
  28742. 15,15,16,16,17,17,17,20,19,
  28743. };
  28744. static float _vq_quantthresh__44u3__p6_0[] = {
  28745. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  28746. 12.5, 17.5, 22.5, 27.5,
  28747. };
  28748. static long _vq_quantmap__44u3__p6_0[] = {
  28749. 11, 9, 7, 5, 3, 1, 0, 2,
  28750. 4, 6, 8, 10, 12,
  28751. };
  28752. static encode_aux_threshmatch _vq_auxt__44u3__p6_0 = {
  28753. _vq_quantthresh__44u3__p6_0,
  28754. _vq_quantmap__44u3__p6_0,
  28755. 13,
  28756. 13
  28757. };
  28758. static static_codebook _44u3__p6_0 = {
  28759. 2, 169,
  28760. _vq_lengthlist__44u3__p6_0,
  28761. 1, -526516224, 1616117760, 4, 0,
  28762. _vq_quantlist__44u3__p6_0,
  28763. NULL,
  28764. &_vq_auxt__44u3__p6_0,
  28765. NULL,
  28766. 0
  28767. };
  28768. static long _vq_quantlist__44u3__p6_1[] = {
  28769. 2,
  28770. 1,
  28771. 3,
  28772. 0,
  28773. 4,
  28774. };
  28775. static long _vq_lengthlist__44u3__p6_1[] = {
  28776. 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
  28777. 6, 5, 6, 6, 5, 5, 6, 6, 6,
  28778. };
  28779. static float _vq_quantthresh__44u3__p6_1[] = {
  28780. -1.5, -0.5, 0.5, 1.5,
  28781. };
  28782. static long _vq_quantmap__44u3__p6_1[] = {
  28783. 3, 1, 0, 2, 4,
  28784. };
  28785. static encode_aux_threshmatch _vq_auxt__44u3__p6_1 = {
  28786. _vq_quantthresh__44u3__p6_1,
  28787. _vq_quantmap__44u3__p6_1,
  28788. 5,
  28789. 5
  28790. };
  28791. static static_codebook _44u3__p6_1 = {
  28792. 2, 25,
  28793. _vq_lengthlist__44u3__p6_1,
  28794. 1, -533725184, 1611661312, 3, 0,
  28795. _vq_quantlist__44u3__p6_1,
  28796. NULL,
  28797. &_vq_auxt__44u3__p6_1,
  28798. NULL,
  28799. 0
  28800. };
  28801. static long _vq_quantlist__44u3__p7_0[] = {
  28802. 4,
  28803. 3,
  28804. 5,
  28805. 2,
  28806. 6,
  28807. 1,
  28808. 7,
  28809. 0,
  28810. 8,
  28811. };
  28812. static long _vq_lengthlist__44u3__p7_0[] = {
  28813. 1, 4, 4, 9, 9, 9, 9, 9, 9, 4, 9, 9, 9, 9, 9, 9,
  28814. 9, 9, 3, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  28815. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  28816. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8,
  28817. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  28818. 8,
  28819. };
  28820. static float _vq_quantthresh__44u3__p7_0[] = {
  28821. -892.5, -637.5, -382.5, -127.5, 127.5, 382.5, 637.5, 892.5,
  28822. };
  28823. static long _vq_quantmap__44u3__p7_0[] = {
  28824. 7, 5, 3, 1, 0, 2, 4, 6,
  28825. 8,
  28826. };
  28827. static encode_aux_threshmatch _vq_auxt__44u3__p7_0 = {
  28828. _vq_quantthresh__44u3__p7_0,
  28829. _vq_quantmap__44u3__p7_0,
  28830. 9,
  28831. 9
  28832. };
  28833. static static_codebook _44u3__p7_0 = {
  28834. 2, 81,
  28835. _vq_lengthlist__44u3__p7_0,
  28836. 1, -515907584, 1627381760, 4, 0,
  28837. _vq_quantlist__44u3__p7_0,
  28838. NULL,
  28839. &_vq_auxt__44u3__p7_0,
  28840. NULL,
  28841. 0
  28842. };
  28843. static long _vq_quantlist__44u3__p7_1[] = {
  28844. 7,
  28845. 6,
  28846. 8,
  28847. 5,
  28848. 9,
  28849. 4,
  28850. 10,
  28851. 3,
  28852. 11,
  28853. 2,
  28854. 12,
  28855. 1,
  28856. 13,
  28857. 0,
  28858. 14,
  28859. };
  28860. static long _vq_lengthlist__44u3__p7_1[] = {
  28861. 1, 4, 4, 6, 5, 7, 7, 9, 8,10,10,11,11,12,13, 4,
  28862. 7, 6, 7, 7, 9, 9,10,10,11,11,14,13,14,13, 4, 6,
  28863. 7, 7, 8, 9, 9,10,10,12,12,13,13,13,13, 6, 8, 8,
  28864. 10, 9,11,11,12,12,13,13,14,14,15,14, 6, 8, 8, 9,
  28865. 9,11,11,12,12,14,14,14,15,15,15, 8, 9, 9,11,10,
  28866. 13,12,14,14,14,14,15,16,15,15, 8, 9, 9,11,11,12,
  28867. 12,14,14,15,14,15,15,14,17, 9,10,10,13,12,14,14,
  28868. 15,14,14,17,15,15,16,15, 9,11,11,12,13,14,14,15,
  28869. 15,15,16,15,17,16,17,11,12,12,14,14,15,14,16,16,
  28870. 16,15,15,17,16,16,11,12,13,14,15,15,15,15,15,16,
  28871. 16,17,17,16,17,12,13,13,15,14,15,15,15,15,16,16,
  28872. 16,17,17,17,13,12,14,14,15,15,15,15,16,17,17,15,
  28873. 17,17,17,12,14,14,16,15,17,16,17,16,17,16,17,17,
  28874. 17,17,14,13,14,15,16,17,17,17,15,17,17,17,16,17,
  28875. 16,
  28876. };
  28877. static float _vq_quantthresh__44u3__p7_1[] = {
  28878. -110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5,
  28879. 25.5, 42.5, 59.5, 76.5, 93.5, 110.5,
  28880. };
  28881. static long _vq_quantmap__44u3__p7_1[] = {
  28882. 13, 11, 9, 7, 5, 3, 1, 0,
  28883. 2, 4, 6, 8, 10, 12, 14,
  28884. };
  28885. static encode_aux_threshmatch _vq_auxt__44u3__p7_1 = {
  28886. _vq_quantthresh__44u3__p7_1,
  28887. _vq_quantmap__44u3__p7_1,
  28888. 15,
  28889. 15
  28890. };
  28891. static static_codebook _44u3__p7_1 = {
  28892. 2, 225,
  28893. _vq_lengthlist__44u3__p7_1,
  28894. 1, -522338304, 1620115456, 4, 0,
  28895. _vq_quantlist__44u3__p7_1,
  28896. NULL,
  28897. &_vq_auxt__44u3__p7_1,
  28898. NULL,
  28899. 0
  28900. };
  28901. static long _vq_quantlist__44u3__p7_2[] = {
  28902. 8,
  28903. 7,
  28904. 9,
  28905. 6,
  28906. 10,
  28907. 5,
  28908. 11,
  28909. 4,
  28910. 12,
  28911. 3,
  28912. 13,
  28913. 2,
  28914. 14,
  28915. 1,
  28916. 15,
  28917. 0,
  28918. 16,
  28919. };
  28920. static long _vq_lengthlist__44u3__p7_2[] = {
  28921. 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
  28922. 9, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
  28923. 9, 9, 5, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9,
  28924. 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
  28925. 9, 9,10, 9, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
  28926. 9, 9, 9, 9, 9, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
  28927. 9, 9, 9,10,10,10, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
  28928. 9, 9, 9,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9,
  28929. 9, 9,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9,
  28930. 9, 9, 9,10,10,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,
  28931. 9, 9, 9, 9,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
  28932. 9, 9, 9, 9, 9,10,10,10,10,10,10, 9, 9, 9, 9, 9,
  28933. 9, 9,10, 9,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
  28934. 9, 9, 9,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
  28935. 9, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9,
  28936. 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
  28937. 9,10,10, 9,10, 9,10,10,10,10,10,10,10,10,10,10,
  28938. 9,10, 9,10, 9,10,10,10,10,10,10,10,10,10,10,10,
  28939. 10,
  28940. };
  28941. static float _vq_quantthresh__44u3__p7_2[] = {
  28942. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  28943. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  28944. };
  28945. static long _vq_quantmap__44u3__p7_2[] = {
  28946. 15, 13, 11, 9, 7, 5, 3, 1,
  28947. 0, 2, 4, 6, 8, 10, 12, 14,
  28948. 16,
  28949. };
  28950. static encode_aux_threshmatch _vq_auxt__44u3__p7_2 = {
  28951. _vq_quantthresh__44u3__p7_2,
  28952. _vq_quantmap__44u3__p7_2,
  28953. 17,
  28954. 17
  28955. };
  28956. static static_codebook _44u3__p7_2 = {
  28957. 2, 289,
  28958. _vq_lengthlist__44u3__p7_2,
  28959. 1, -529530880, 1611661312, 5, 0,
  28960. _vq_quantlist__44u3__p7_2,
  28961. NULL,
  28962. &_vq_auxt__44u3__p7_2,
  28963. NULL,
  28964. 0
  28965. };
  28966. static long _huff_lengthlist__44u3__short[] = {
  28967. 17,17,17,17,17,17,16,16,16,12,11,13,11,12,11,15,
  28968. 16, 9, 4, 8, 5, 7, 9,15,16,14, 9,12,10,10,12,16,
  28969. 16,11, 4, 9, 3, 4, 8,16,16,12, 6,10, 3, 4, 7,16,
  28970. 16,12, 6,11, 3, 3, 4,12,16,16, 7,13, 5, 5, 6,13,
  28971. };
  28972. static static_codebook _huff_book__44u3__short = {
  28973. 2, 64,
  28974. _huff_lengthlist__44u3__short,
  28975. 0, 0, 0, 0, 0,
  28976. NULL,
  28977. NULL,
  28978. NULL,
  28979. NULL,
  28980. 0
  28981. };
  28982. static long _huff_lengthlist__44u4__long[] = {
  28983. 3, 7,11,11,12,11,11,12, 5, 3, 5, 7, 8, 8, 9,11,
  28984. 9, 4, 4, 6, 6, 7, 9,15,10, 6, 6, 7, 7, 7, 8,14,
  28985. 12, 7, 5, 6, 4, 5, 7,15,10, 7, 6, 7, 5, 5, 6,13,
  28986. 9, 8, 8, 7, 7, 5, 4, 8,10,12,14,13,14,10, 5, 7,
  28987. };
  28988. static static_codebook _huff_book__44u4__long = {
  28989. 2, 64,
  28990. _huff_lengthlist__44u4__long,
  28991. 0, 0, 0, 0, 0,
  28992. NULL,
  28993. NULL,
  28994. NULL,
  28995. NULL,
  28996. 0
  28997. };
  28998. static long _vq_quantlist__44u4__p1_0[] = {
  28999. 1,
  29000. 0,
  29001. 2,
  29002. };
  29003. static long _vq_lengthlist__44u4__p1_0[] = {
  29004. 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
  29005. 10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
  29006. 11, 8,11,11, 8,11,11,11,13,14,11,14,14, 7,11,10,
  29007. 10,14,12,11,14,14, 4, 8, 8, 8,11,11, 8,11,11, 8,
  29008. 11,11,11,14,14,10,12,14, 8,11,11,11,14,14,11,14,
  29009. 13,
  29010. };
  29011. static float _vq_quantthresh__44u4__p1_0[] = {
  29012. -0.5, 0.5,
  29013. };
  29014. static long _vq_quantmap__44u4__p1_0[] = {
  29015. 1, 0, 2,
  29016. };
  29017. static encode_aux_threshmatch _vq_auxt__44u4__p1_0 = {
  29018. _vq_quantthresh__44u4__p1_0,
  29019. _vq_quantmap__44u4__p1_0,
  29020. 3,
  29021. 3
  29022. };
  29023. static static_codebook _44u4__p1_0 = {
  29024. 4, 81,
  29025. _vq_lengthlist__44u4__p1_0,
  29026. 1, -535822336, 1611661312, 2, 0,
  29027. _vq_quantlist__44u4__p1_0,
  29028. NULL,
  29029. &_vq_auxt__44u4__p1_0,
  29030. NULL,
  29031. 0
  29032. };
  29033. static long _vq_quantlist__44u4__p2_0[] = {
  29034. 1,
  29035. 0,
  29036. 2,
  29037. };
  29038. static long _vq_lengthlist__44u4__p2_0[] = {
  29039. 2, 5, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
  29040. 7, 8, 5, 6, 6, 6, 8, 7, 7, 8, 8, 5, 6, 6, 7, 8,
  29041. 8, 6, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
  29042. 7, 9, 8, 8, 9,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
  29043. 8, 8, 8,10, 9, 8, 8, 9, 6, 8, 8, 8,10,10, 8,10,
  29044. 9,
  29045. };
  29046. static float _vq_quantthresh__44u4__p2_0[] = {
  29047. -0.5, 0.5,
  29048. };
  29049. static long _vq_quantmap__44u4__p2_0[] = {
  29050. 1, 0, 2,
  29051. };
  29052. static encode_aux_threshmatch _vq_auxt__44u4__p2_0 = {
  29053. _vq_quantthresh__44u4__p2_0,
  29054. _vq_quantmap__44u4__p2_0,
  29055. 3,
  29056. 3
  29057. };
  29058. static static_codebook _44u4__p2_0 = {
  29059. 4, 81,
  29060. _vq_lengthlist__44u4__p2_0,
  29061. 1, -535822336, 1611661312, 2, 0,
  29062. _vq_quantlist__44u4__p2_0,
  29063. NULL,
  29064. &_vq_auxt__44u4__p2_0,
  29065. NULL,
  29066. 0
  29067. };
  29068. static long _vq_quantlist__44u4__p3_0[] = {
  29069. 2,
  29070. 1,
  29071. 3,
  29072. 0,
  29073. 4,
  29074. };
  29075. static long _vq_lengthlist__44u4__p3_0[] = {
  29076. 2, 4, 4, 7, 7, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
  29077. 10, 9,12,12, 8, 9, 9,12,12, 5, 7, 7,10, 9, 7, 9,
  29078. 9,11,11, 7, 8, 9,10,11,10,11,11,13,13, 9,10,11,
  29079. 13,13, 5, 7, 7, 9,10, 7, 9, 9,11,11, 7, 9, 9,11,
  29080. 11, 9,11,10,13,12,10,11,11,13,13, 8,10,10,13,13,
  29081. 10,11,11,15,13, 9,11,11,14,13,13,15,13,16,15,12,
  29082. 13,13,15,15, 8,10,10,13,14, 9,11,11,14,14,10,11,
  29083. 12,14,16,12,13,13,14,16,13,14,14,15,17, 5, 7, 7,
  29084. 10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,11,11,15,
  29085. 14,10,11,11,14,14, 7, 9, 9,12,12, 9,11,11,13,13,
  29086. 9,11,11,13,13,11,12,13,15,15,11,13,13,16,15, 7,
  29087. 9, 9,11,11, 9,11,10,13,12, 9,11,12,13,13,11,13,
  29088. 12,16,14,11,13,13,15,16,10,12,12,18,15,11,12,13,
  29089. 16,15,11,13,13,17,16,15,15,15,17,17,14,15,16,18,
  29090. 19, 9,11,11,15,15,10,12,11,15,16,11,13,13,15,16,
  29091. 13,15,13,18,15,14,15,15,17,19, 5, 7, 7,10,10, 7,
  29092. 9, 9,12,11, 7, 9, 9,11,12,10,12,11,14,14,10,11,
  29093. 12,14,15, 7, 9, 9,11,11, 9,11,11,13,12, 9,10,11,
  29094. 12,13,11,13,13,16,17,11,11,13,14,15, 7, 9, 9,12,
  29095. 12, 9,11,11,13,13, 9,11,11,13,13,11,13,12,15,16,
  29096. 11,13,13,16,15, 9,11,11,16,15,11,13,12,16,15,10,
  29097. 12,12,16,15,14,15,16,19,17,13,14,15,15,16,10,11,
  29098. 12,15,15,11,13,13,16,16,11,13,12,16,17,14,15,15,
  29099. 18,17,14,16,14,16,19, 7,10,10,15,14,10,12,12,16,
  29100. 15,10,11,11,16,15,14,16,16,19,18,13,15,14,17,17,
  29101. 9,11,11,17,16,11,13,14,18,17,11,13,13,16,16,15,
  29102. 16,17,19, 0,14,15,18,16,19, 9,11,11,16,15,11,13,
  29103. 12,18,16,11,13,13,17,16,14,16,16,17,19,15,16,15,
  29104. 18, 0,12,14,15,18,19,13,15,16,19,17,14,16,15,18,
  29105. 0,17,16,19, 0,18,16,17,18, 0, 0,11,13,14,18,19,
  29106. 13,15,13,19,19,14,15,15,17,17,15,17,15,19,17,16,
  29107. 18,18,19, 0, 8,10,10,14,14,10,12,11,15,15,10,11,
  29108. 12,15,17,13,15,15,17,16,14,15,15,18, 0, 9,11,11,
  29109. 15,15,11,13,13,18,16,10,12,13,16,17,14,15,16,17,
  29110. 18,14,15,17,19,19, 9,12,12,15,16,11,13,13,16,17,
  29111. 11,14,13,19,16,14,16,15,18,19,15,16,18,19,18,12,
  29112. 14,14,19,18,13,15,17,18,17,13,14,15,18, 0,16, 0,
  29113. 0,18,18,16,15, 0,17,19,12,15,14,17, 0,13,15,16,
  29114. 19,18,13,16,15, 0,19,16,18,16,19,18,17,19,16, 0,
  29115. 19,
  29116. };
  29117. static float _vq_quantthresh__44u4__p3_0[] = {
  29118. -1.5, -0.5, 0.5, 1.5,
  29119. };
  29120. static long _vq_quantmap__44u4__p3_0[] = {
  29121. 3, 1, 0, 2, 4,
  29122. };
  29123. static encode_aux_threshmatch _vq_auxt__44u4__p3_0 = {
  29124. _vq_quantthresh__44u4__p3_0,
  29125. _vq_quantmap__44u4__p3_0,
  29126. 5,
  29127. 5
  29128. };
  29129. static static_codebook _44u4__p3_0 = {
  29130. 4, 625,
  29131. _vq_lengthlist__44u4__p3_0,
  29132. 1, -533725184, 1611661312, 3, 0,
  29133. _vq_quantlist__44u4__p3_0,
  29134. NULL,
  29135. &_vq_auxt__44u4__p3_0,
  29136. NULL,
  29137. 0
  29138. };
  29139. static long _vq_quantlist__44u4__p4_0[] = {
  29140. 2,
  29141. 1,
  29142. 3,
  29143. 0,
  29144. 4,
  29145. };
  29146. static long _vq_lengthlist__44u4__p4_0[] = {
  29147. 4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 9,
  29148. 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
  29149. 8,10,10, 6, 7, 8, 9,10, 9,10,10,11,12, 9, 9,10,
  29150. 11,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 8,10,
  29151. 10, 9,10, 9,12,11, 9,10,10,12,11, 9, 9, 9,12,11,
  29152. 9,10,10,12,12, 9,10,10,12,12,11,12,12,13,14,11,
  29153. 11,12,13,14, 9, 9, 9,11,12, 9,10,10,12,12, 9,10,
  29154. 10,12,12,11,12,11,14,13,11,12,12,13,13, 5, 7, 7,
  29155. 9, 9, 7, 8, 8,10,10, 7, 7, 8,10,10, 9,10,10,12,
  29156. 12, 9,10,10,12,12, 7, 8, 8,10,10, 8, 8, 9,10,11,
  29157. 8, 9, 9,11,11,10,10,11,11,13,10,10,11,12,13, 6,
  29158. 7, 8,10,10, 7, 9, 8,11,10, 8, 8, 9,10,11,10,11,
  29159. 10,13,11,10,11,11,13,12, 9,10,10,12,12,10,10,11,
  29160. 12,13,10,11,11,13,13,12,11,13,12,15,12,13,13,14,
  29161. 14, 9,10,10,12,12, 9,11,10,13,12,10,11,11,13,13,
  29162. 11,13,11,14,12,12,13,13,14,15, 5, 7, 7, 9, 9, 7,
  29163. 8, 7,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10,
  29164. 10,12,12, 6, 8, 7,10,10, 8, 9, 8,11,10, 7, 8, 9,
  29165. 10,11,10,11,11,12,13,10,10,11,11,13, 7, 8, 8,10,
  29166. 10, 8, 9, 9,10,11, 8, 9, 8,11,10,10,11,11,13,12,
  29167. 10,11,10,13,11, 9,10,10,13,12,10,11,11,13,13, 9,
  29168. 10,10,12,13,12,13,13,15,14,11,11,13,12,14, 9,10,
  29169. 10,12,12,10,11,11,13,13,10,11,10,13,12,12,13,13,
  29170. 14,14,12,13,11,15,12, 8, 9, 9,12,12, 9,10,10,13,
  29171. 12, 9,10,10,12,12,12,13,12,14,14,11,12,12,14,13,
  29172. 9,10,10,12,12,10,10,11,13,13,10,11,11,13,12,12,
  29173. 13,13,14,15,12,13,13,15,14, 9,10,10,12,12, 9,11,
  29174. 10,13,12,10,10,11,12,13,12,13,12,15,14,12,13,13,
  29175. 14,14,11,12,12,14,13,11,11,12,13,14,12,13,13,15,
  29176. 14,13,12,14,12,16,14,15,14,16,16,11,12,12,14,14,
  29177. 11,12,11,15,13,12,13,13,14,15,13,14,12,16,13,14,
  29178. 14,15,16,16, 8, 9, 9,12,12, 9,10,10,12,12, 9,10,
  29179. 10,12,13,11,12,12,14,13,12,12,13,14,14, 9,10,10,
  29180. 12,12,10,11,11,13,12,10,10,11,12,13,12,13,13,14,
  29181. 14,12,12,13,14,15, 9,10,10,12,13,10,11,11,12,13,
  29182. 10,11,10,13,13,12,13,13,14,15,12,13,13,15,14,11,
  29183. 12,12,14,14,12,13,13,15,14,11,11,12,14,15,14,14,
  29184. 14,17,16,13,12,14,13,16,11,12,12,13,15,12,13,13,
  29185. 14,15,11,12,11,14,14,14,15,14,15,17,13,14,12,16,
  29186. 12,
  29187. };
  29188. static float _vq_quantthresh__44u4__p4_0[] = {
  29189. -1.5, -0.5, 0.5, 1.5,
  29190. };
  29191. static long _vq_quantmap__44u4__p4_0[] = {
  29192. 3, 1, 0, 2, 4,
  29193. };
  29194. static encode_aux_threshmatch _vq_auxt__44u4__p4_0 = {
  29195. _vq_quantthresh__44u4__p4_0,
  29196. _vq_quantmap__44u4__p4_0,
  29197. 5,
  29198. 5
  29199. };
  29200. static static_codebook _44u4__p4_0 = {
  29201. 4, 625,
  29202. _vq_lengthlist__44u4__p4_0,
  29203. 1, -533725184, 1611661312, 3, 0,
  29204. _vq_quantlist__44u4__p4_0,
  29205. NULL,
  29206. &_vq_auxt__44u4__p4_0,
  29207. NULL,
  29208. 0
  29209. };
  29210. static long _vq_quantlist__44u4__p5_0[] = {
  29211. 4,
  29212. 3,
  29213. 5,
  29214. 2,
  29215. 6,
  29216. 1,
  29217. 7,
  29218. 0,
  29219. 8,
  29220. };
  29221. static long _vq_lengthlist__44u4__p5_0[] = {
  29222. 2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 4, 7, 6, 8, 7,
  29223. 10, 9, 4, 4, 5, 6, 7, 7, 8, 9, 9, 6, 7, 6, 8, 8,
  29224. 8, 8,10,10, 6, 6, 7, 8, 8, 8, 9,10,10, 7, 8, 7,
  29225. 9, 8,10,10,11,11, 7, 7, 8, 8, 9,10,10,11,11, 9,
  29226. 10, 9,10,10,11,11,12,12, 9, 9,10,10,10,11,11,12,
  29227. 12,
  29228. };
  29229. static float _vq_quantthresh__44u4__p5_0[] = {
  29230. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  29231. };
  29232. static long _vq_quantmap__44u4__p5_0[] = {
  29233. 7, 5, 3, 1, 0, 2, 4, 6,
  29234. 8,
  29235. };
  29236. static encode_aux_threshmatch _vq_auxt__44u4__p5_0 = {
  29237. _vq_quantthresh__44u4__p5_0,
  29238. _vq_quantmap__44u4__p5_0,
  29239. 9,
  29240. 9
  29241. };
  29242. static static_codebook _44u4__p5_0 = {
  29243. 2, 81,
  29244. _vq_lengthlist__44u4__p5_0,
  29245. 1, -531628032, 1611661312, 4, 0,
  29246. _vq_quantlist__44u4__p5_0,
  29247. NULL,
  29248. &_vq_auxt__44u4__p5_0,
  29249. NULL,
  29250. 0
  29251. };
  29252. static long _vq_quantlist__44u4__p6_0[] = {
  29253. 6,
  29254. 5,
  29255. 7,
  29256. 4,
  29257. 8,
  29258. 3,
  29259. 9,
  29260. 2,
  29261. 10,
  29262. 1,
  29263. 11,
  29264. 0,
  29265. 12,
  29266. };
  29267. static long _vq_lengthlist__44u4__p6_0[] = {
  29268. 1, 4, 4, 6, 6, 8, 8, 9,10,10,11,13,13, 4, 6, 5,
  29269. 8, 8, 9, 9,10,10,11,11,14,14, 4, 5, 6, 8, 8, 9,
  29270. 9,10,10,11,11,14,14, 7, 8, 8, 9, 9,10,10,11,11,
  29271. 12,12,15,15, 7, 8, 8, 9, 9,10,10,11,11,12,12,15,
  29272. 15, 8, 9, 9,10,10,11,11,12,12,13,13,16,16, 8, 9,
  29273. 9,10,10,11,11,12,12,13,13,16,16,10,10,10,11,11,
  29274. 12,12,13,13,14,13,16,16,10,10,11,11,12,12,12,13,
  29275. 13,13,14,16,17,11,12,11,12,12,13,13,13,14,14,14,
  29276. 17,16,11,11,12,12,12,13,13,14,14,15,14,17,17,14,
  29277. 14,14,15,15,16,16,17,17,17,19,19, 0,14,15,15,15,
  29278. 15,16,16,16,17,17,19,20,20,
  29279. };
  29280. static float _vq_quantthresh__44u4__p6_0[] = {
  29281. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  29282. 12.5, 17.5, 22.5, 27.5,
  29283. };
  29284. static long _vq_quantmap__44u4__p6_0[] = {
  29285. 11, 9, 7, 5, 3, 1, 0, 2,
  29286. 4, 6, 8, 10, 12,
  29287. };
  29288. static encode_aux_threshmatch _vq_auxt__44u4__p6_0 = {
  29289. _vq_quantthresh__44u4__p6_0,
  29290. _vq_quantmap__44u4__p6_0,
  29291. 13,
  29292. 13
  29293. };
  29294. static static_codebook _44u4__p6_0 = {
  29295. 2, 169,
  29296. _vq_lengthlist__44u4__p6_0,
  29297. 1, -526516224, 1616117760, 4, 0,
  29298. _vq_quantlist__44u4__p6_0,
  29299. NULL,
  29300. &_vq_auxt__44u4__p6_0,
  29301. NULL,
  29302. 0
  29303. };
  29304. static long _vq_quantlist__44u4__p6_1[] = {
  29305. 2,
  29306. 1,
  29307. 3,
  29308. 0,
  29309. 4,
  29310. };
  29311. static long _vq_lengthlist__44u4__p6_1[] = {
  29312. 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
  29313. 6, 5, 6, 6, 5, 5, 6, 6, 6,
  29314. };
  29315. static float _vq_quantthresh__44u4__p6_1[] = {
  29316. -1.5, -0.5, 0.5, 1.5,
  29317. };
  29318. static long _vq_quantmap__44u4__p6_1[] = {
  29319. 3, 1, 0, 2, 4,
  29320. };
  29321. static encode_aux_threshmatch _vq_auxt__44u4__p6_1 = {
  29322. _vq_quantthresh__44u4__p6_1,
  29323. _vq_quantmap__44u4__p6_1,
  29324. 5,
  29325. 5
  29326. };
  29327. static static_codebook _44u4__p6_1 = {
  29328. 2, 25,
  29329. _vq_lengthlist__44u4__p6_1,
  29330. 1, -533725184, 1611661312, 3, 0,
  29331. _vq_quantlist__44u4__p6_1,
  29332. NULL,
  29333. &_vq_auxt__44u4__p6_1,
  29334. NULL,
  29335. 0
  29336. };
  29337. static long _vq_quantlist__44u4__p7_0[] = {
  29338. 6,
  29339. 5,
  29340. 7,
  29341. 4,
  29342. 8,
  29343. 3,
  29344. 9,
  29345. 2,
  29346. 10,
  29347. 1,
  29348. 11,
  29349. 0,
  29350. 12,
  29351. };
  29352. static long _vq_lengthlist__44u4__p7_0[] = {
  29353. 1, 3, 3,11,11,11,11,11,11,11,11,11,11, 4,10, 9,
  29354. 11,11,11,11,11,11,11,11,11,11, 4,10,10,11,11,11,
  29355. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  29356. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  29357. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  29358. 11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
  29359. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  29360. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  29361. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  29362. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  29363. 10,10,10,10,10,10,10,10,10,
  29364. };
  29365. static float _vq_quantthresh__44u4__p7_0[] = {
  29366. -1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 382.5,
  29367. 637.5, 892.5, 1147.5, 1402.5,
  29368. };
  29369. static long _vq_quantmap__44u4__p7_0[] = {
  29370. 11, 9, 7, 5, 3, 1, 0, 2,
  29371. 4, 6, 8, 10, 12,
  29372. };
  29373. static encode_aux_threshmatch _vq_auxt__44u4__p7_0 = {
  29374. _vq_quantthresh__44u4__p7_0,
  29375. _vq_quantmap__44u4__p7_0,
  29376. 13,
  29377. 13
  29378. };
  29379. static static_codebook _44u4__p7_0 = {
  29380. 2, 169,
  29381. _vq_lengthlist__44u4__p7_0,
  29382. 1, -514332672, 1627381760, 4, 0,
  29383. _vq_quantlist__44u4__p7_0,
  29384. NULL,
  29385. &_vq_auxt__44u4__p7_0,
  29386. NULL,
  29387. 0
  29388. };
  29389. static long _vq_quantlist__44u4__p7_1[] = {
  29390. 7,
  29391. 6,
  29392. 8,
  29393. 5,
  29394. 9,
  29395. 4,
  29396. 10,
  29397. 3,
  29398. 11,
  29399. 2,
  29400. 12,
  29401. 1,
  29402. 13,
  29403. 0,
  29404. 14,
  29405. };
  29406. static long _vq_lengthlist__44u4__p7_1[] = {
  29407. 1, 4, 4, 6, 6, 7, 7, 9, 8,10,10,11,11,12,12, 4,
  29408. 7, 6, 8, 7, 9, 9,10,10,11,10,12,11,12,12, 4, 6,
  29409. 6, 7, 8, 9, 9,10,10,11,11,12,12,13,13, 6, 8, 8,
  29410. 10, 9,11,10,11,11,12,12,14,13,13,13, 6, 8, 8, 9,
  29411. 9,11,11,12,12,12,12,13,14,13,14, 8, 9, 9,11,10,
  29412. 12,12,13,12,13,14,14,14,14,14, 8, 9, 9,10,11,12,
  29413. 11,12,13,13,14,14,13,14,14, 9,10,10,12,12,14,13,
  29414. 14,14,15,15,16,15,15,15, 9,10,10,11,12,13,13,13,
  29415. 14,15,15,18,16,17,15,10,12,12,13,13,15,14,15,14,
  29416. 16,16,16,15,16,15,10,11,11,13,13,14,14,17,16,15,
  29417. 16,18,16,15,16,11,12,13,14,13,15,14,15,16,17,15,
  29418. 16,16,15,16,11,12,13,14,15,14,16,15,15,16,15,15,
  29419. 17,17,17,12,13,13,14,14,14,15,16,14,15,15,16,16,
  29420. 16,16,12,13,13,13,14,15,15,15,14,16,16,16,16,16,
  29421. 17,
  29422. };
  29423. static float _vq_quantthresh__44u4__p7_1[] = {
  29424. -110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5,
  29425. 25.5, 42.5, 59.5, 76.5, 93.5, 110.5,
  29426. };
  29427. static long _vq_quantmap__44u4__p7_1[] = {
  29428. 13, 11, 9, 7, 5, 3, 1, 0,
  29429. 2, 4, 6, 8, 10, 12, 14,
  29430. };
  29431. static encode_aux_threshmatch _vq_auxt__44u4__p7_1 = {
  29432. _vq_quantthresh__44u4__p7_1,
  29433. _vq_quantmap__44u4__p7_1,
  29434. 15,
  29435. 15
  29436. };
  29437. static static_codebook _44u4__p7_1 = {
  29438. 2, 225,
  29439. _vq_lengthlist__44u4__p7_1,
  29440. 1, -522338304, 1620115456, 4, 0,
  29441. _vq_quantlist__44u4__p7_1,
  29442. NULL,
  29443. &_vq_auxt__44u4__p7_1,
  29444. NULL,
  29445. 0
  29446. };
  29447. static long _vq_quantlist__44u4__p7_2[] = {
  29448. 8,
  29449. 7,
  29450. 9,
  29451. 6,
  29452. 10,
  29453. 5,
  29454. 11,
  29455. 4,
  29456. 12,
  29457. 3,
  29458. 13,
  29459. 2,
  29460. 14,
  29461. 1,
  29462. 15,
  29463. 0,
  29464. 16,
  29465. };
  29466. static long _vq_lengthlist__44u4__p7_2[] = {
  29467. 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
  29468. 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
  29469. 9, 9, 5, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 9, 9, 9,
  29470. 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
  29471. 9, 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9,
  29472. 9, 9, 9, 9, 9, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
  29473. 9, 9, 9, 9,10,10, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
  29474. 9, 9, 9, 9, 9,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9,
  29475. 9, 9,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9,
  29476. 9, 9, 9,10,10,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,
  29477. 9, 9, 9, 9,10,10,10,10,10,10, 8, 9, 9, 9, 9, 9,
  29478. 9, 9, 9, 9, 9,10,10,10,10,10,10, 9, 9, 9, 9, 9,
  29479. 9, 9,10, 9, 9,10,10,10,10,10,10,10, 9, 9, 9, 9,
  29480. 9, 9,10, 9,10,10,10,10,10,10,10,10,10, 9, 9, 9,
  29481. 9, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9,
  29482. 9, 9, 9,10, 9,10,10,10,10,10,10,10,10,10,10, 9,
  29483. 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  29484. 9, 9, 9,10, 9,10,10,10,10,10,10,10,10,10,10,10,
  29485. 10,
  29486. };
  29487. static float _vq_quantthresh__44u4__p7_2[] = {
  29488. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  29489. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  29490. };
  29491. static long _vq_quantmap__44u4__p7_2[] = {
  29492. 15, 13, 11, 9, 7, 5, 3, 1,
  29493. 0, 2, 4, 6, 8, 10, 12, 14,
  29494. 16,
  29495. };
  29496. static encode_aux_threshmatch _vq_auxt__44u4__p7_2 = {
  29497. _vq_quantthresh__44u4__p7_2,
  29498. _vq_quantmap__44u4__p7_2,
  29499. 17,
  29500. 17
  29501. };
  29502. static static_codebook _44u4__p7_2 = {
  29503. 2, 289,
  29504. _vq_lengthlist__44u4__p7_2,
  29505. 1, -529530880, 1611661312, 5, 0,
  29506. _vq_quantlist__44u4__p7_2,
  29507. NULL,
  29508. &_vq_auxt__44u4__p7_2,
  29509. NULL,
  29510. 0
  29511. };
  29512. static long _huff_lengthlist__44u4__short[] = {
  29513. 3, 9,14,12,17,13,13,13, 4, 7, 8, 9,12,10,11,12,
  29514. 6, 5, 4, 7, 6, 7, 9,14, 8, 8, 7, 9, 8, 9,10,13,
  29515. 9, 8, 5, 7, 3, 5, 8,15, 9, 9, 6, 8, 4, 5, 7,16,
  29516. 11,10, 6, 9, 4, 3, 6,15,17,16, 8,11, 5, 5, 7,16,
  29517. };
  29518. static static_codebook _huff_book__44u4__short = {
  29519. 2, 64,
  29520. _huff_lengthlist__44u4__short,
  29521. 0, 0, 0, 0, 0,
  29522. NULL,
  29523. NULL,
  29524. NULL,
  29525. NULL,
  29526. 0
  29527. };
  29528. static long _huff_lengthlist__44u5__long[] = {
  29529. 3, 8,13,12,14,13,16,11,12,13, 5, 4, 5, 6, 8, 9,
  29530. 10, 9,12,12,10, 5, 4, 6, 6, 8, 9,10,14,16,10, 6,
  29531. 6, 6, 6, 7, 9, 8,12,13,13, 7, 5, 6, 4, 6, 6, 7,
  29532. 11,16,10, 7, 7, 7, 6, 6, 7, 7,11,14,14, 9, 8, 8,
  29533. 5, 6, 6, 7,11,16, 9, 8, 8, 8, 6, 6, 6, 4, 7,12,
  29534. 11,10,12,11,10, 9,10, 5, 6,10,10,13,15,15,15,15,
  29535. 14, 8, 7, 9,
  29536. };
  29537. static static_codebook _huff_book__44u5__long = {
  29538. 2, 100,
  29539. _huff_lengthlist__44u5__long,
  29540. 0, 0, 0, 0, 0,
  29541. NULL,
  29542. NULL,
  29543. NULL,
  29544. NULL,
  29545. 0
  29546. };
  29547. static long _vq_quantlist__44u5__p1_0[] = {
  29548. 1,
  29549. 0,
  29550. 2,
  29551. };
  29552. static long _vq_lengthlist__44u5__p1_0[] = {
  29553. 1, 4, 4, 5, 8, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
  29554. 9,10, 5, 8, 8, 7,10, 9, 8,10,10, 4, 8, 8, 8,11,
  29555. 10, 8,10,10, 8,11,11,10,12,13,10,13,13, 7,10,10,
  29556. 9,13,11,10,13,13, 5, 8, 8, 8,10,10, 8,10,10, 7,
  29557. 10,10,10,13,13,10,11,13, 8,10,11,10,13,13,10,13,
  29558. 12,
  29559. };
  29560. static float _vq_quantthresh__44u5__p1_0[] = {
  29561. -0.5, 0.5,
  29562. };
  29563. static long _vq_quantmap__44u5__p1_0[] = {
  29564. 1, 0, 2,
  29565. };
  29566. static encode_aux_threshmatch _vq_auxt__44u5__p1_0 = {
  29567. _vq_quantthresh__44u5__p1_0,
  29568. _vq_quantmap__44u5__p1_0,
  29569. 3,
  29570. 3
  29571. };
  29572. static static_codebook _44u5__p1_0 = {
  29573. 4, 81,
  29574. _vq_lengthlist__44u5__p1_0,
  29575. 1, -535822336, 1611661312, 2, 0,
  29576. _vq_quantlist__44u5__p1_0,
  29577. NULL,
  29578. &_vq_auxt__44u5__p1_0,
  29579. NULL,
  29580. 0
  29581. };
  29582. static long _vq_quantlist__44u5__p2_0[] = {
  29583. 1,
  29584. 0,
  29585. 2,
  29586. };
  29587. static long _vq_lengthlist__44u5__p2_0[] = {
  29588. 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
  29589. 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
  29590. 7, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 7, 8,
  29591. 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 8, 8, 6,
  29592. 8, 8, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
  29593. 9,
  29594. };
  29595. static float _vq_quantthresh__44u5__p2_0[] = {
  29596. -0.5, 0.5,
  29597. };
  29598. static long _vq_quantmap__44u5__p2_0[] = {
  29599. 1, 0, 2,
  29600. };
  29601. static encode_aux_threshmatch _vq_auxt__44u5__p2_0 = {
  29602. _vq_quantthresh__44u5__p2_0,
  29603. _vq_quantmap__44u5__p2_0,
  29604. 3,
  29605. 3
  29606. };
  29607. static static_codebook _44u5__p2_0 = {
  29608. 4, 81,
  29609. _vq_lengthlist__44u5__p2_0,
  29610. 1, -535822336, 1611661312, 2, 0,
  29611. _vq_quantlist__44u5__p2_0,
  29612. NULL,
  29613. &_vq_auxt__44u5__p2_0,
  29614. NULL,
  29615. 0
  29616. };
  29617. static long _vq_quantlist__44u5__p3_0[] = {
  29618. 2,
  29619. 1,
  29620. 3,
  29621. 0,
  29622. 4,
  29623. };
  29624. static long _vq_lengthlist__44u5__p3_0[] = {
  29625. 2, 4, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
  29626. 10, 9,12,12, 8, 9,10,12,13, 5, 7, 7,10, 9, 7, 9,
  29627. 9,11,11, 7, 8, 9,10,11,10,11,11,13,14, 9,10,11,
  29628. 13,13, 5, 7, 7, 9, 9, 7, 9, 8,11,10, 7, 9, 9,11,
  29629. 11, 9,11,10,14,13,10,11,11,13,14, 8,10,10,13,13,
  29630. 10,11,11,15,14, 9,11,11,14,14,13,15,14,18,16,12,
  29631. 13,14,16,16, 8,10,10,13,13, 9,11,11,14,14,10,11,
  29632. 12,14,15,12,13,13,16,16,13,14,14,15,17, 5, 7, 7,
  29633. 10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,11,11,15,
  29634. 14,10,11,11,14,14, 7, 9, 9,12,11, 9,11,11,13,13,
  29635. 9,11,11,13,13,12,12,13,15,15,11,12,13,16,15, 6,
  29636. 9, 9,11,11, 8,11,10,13,12, 9,10,11,12,14,11,13,
  29637. 11,16,14,11,13,13,15,16,10,11,11,15,15,11,12,13,
  29638. 16,15,11,13,13,16,16,14,15,15,17,18,14,15,16,17,
  29639. 18, 9,11,11,14,15,10,12,11,15,15,11,12,13,15,16,
  29640. 13,15,13,17,15,14,15,16,18,19, 5, 7, 7,10,10, 7,
  29641. 9, 9,11,11, 7, 9, 9,11,11,10,11,11,15,14,10,11,
  29642. 11,14,15, 6, 9, 9,11,11, 9,11,10,13,13, 8,10,11,
  29643. 12,13,11,13,13,15,15,11,11,13,13,15, 7, 9, 9,11,
  29644. 12, 9,11,11,13,13, 9,11,11,13,13,11,13,12,17,16,
  29645. 11,13,12,16,15, 9,11,11,15,14,11,13,13,16,16,10,
  29646. 11,12,15,15,14,15,15,17,17,13,13,15,15,17,10,11,
  29647. 12,15,15,11,13,13,16,19,11,13,12,17,17,14,16,15,
  29648. 19,17,14,15,15,18,18, 8,10,10,14,14,10,12,11,16,
  29649. 15, 9,11,11,15,16,14,16,15,17,17,13,14,14,18,17,
  29650. 9,11,11,16,15,11,13,13,16,18,11,13,13,17,16,15,
  29651. 16,17,18, 0,15,15,16, 0,18, 9,11,11,16,15,10,13,
  29652. 12,17,15,11,13,13,16,17,14,18,15,19,18,15,16,16,
  29653. 19,18,13,15,15,19,17,13,15,15,18,18,14,15,15,19,
  29654. 0,17,18, 0,19,19,16,17,17, 0,18,12,14,13,18,17,
  29655. 13,15,13,19,18,14,15,15,19,19,16,17,15, 0,17,16,
  29656. 19,17,19,18, 8,10,10,14,14,10,11,11,15,15,10,11,
  29657. 11,16,16,13,15,15,17,16,14,15,15,18,19, 9,11,11,
  29658. 16,15,11,13,13,19,16,10,12,13,15,17,15,15,15,19,
  29659. 19,15,16,16,17, 0, 9,11,11,16,16,11,13,13,16,17,
  29660. 11,13,13,18,18,14,16,15,18,18,15,17,16,19, 0,12,
  29661. 14,14,17,18,13,16,16,18,18,13,14,15,17, 0,16,17,
  29662. 17, 0, 0,16,15, 0,19,17,12,15,14,17,18,14,15,16,
  29663. 0,18,14,16,16,18, 0,16,17,17, 0, 0,17,19,17,19,
  29664. 0,
  29665. };
  29666. static float _vq_quantthresh__44u5__p3_0[] = {
  29667. -1.5, -0.5, 0.5, 1.5,
  29668. };
  29669. static long _vq_quantmap__44u5__p3_0[] = {
  29670. 3, 1, 0, 2, 4,
  29671. };
  29672. static encode_aux_threshmatch _vq_auxt__44u5__p3_0 = {
  29673. _vq_quantthresh__44u5__p3_0,
  29674. _vq_quantmap__44u5__p3_0,
  29675. 5,
  29676. 5
  29677. };
  29678. static static_codebook _44u5__p3_0 = {
  29679. 4, 625,
  29680. _vq_lengthlist__44u5__p3_0,
  29681. 1, -533725184, 1611661312, 3, 0,
  29682. _vq_quantlist__44u5__p3_0,
  29683. NULL,
  29684. &_vq_auxt__44u5__p3_0,
  29685. NULL,
  29686. 0
  29687. };
  29688. static long _vq_quantlist__44u5__p4_0[] = {
  29689. 2,
  29690. 1,
  29691. 3,
  29692. 0,
  29693. 4,
  29694. };
  29695. static long _vq_lengthlist__44u5__p4_0[] = {
  29696. 4, 6, 6, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
  29697. 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
  29698. 8,10,10, 6, 7, 8, 9,10, 9,10,10,11,11, 9, 9,10,
  29699. 11,12, 6, 7, 7, 9, 9, 6, 8, 7,10, 9, 7, 8, 8,10,
  29700. 10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,12,11,
  29701. 9,10,10,12,12, 9,10,10,12,12,11,12,12,13,13,11,
  29702. 11,12,12,13, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
  29703. 10,12,12,11,12,11,13,13,11,12,12,14,13, 6, 7, 7,
  29704. 9, 9, 7, 8, 7,10,10, 7, 7, 8, 9,10, 9,10,10,12,
  29705. 11, 9,10,10,11,11, 7, 8, 8,10,10, 8, 8, 9,10,11,
  29706. 8, 8, 8,11,10,10,10,11,11,12,10,10,11,12,12, 6,
  29707. 7, 7,10,10, 7, 8, 8,11,10, 8, 8, 9,10,11,10,11,
  29708. 10,13,11,10,10,11,12,12, 9,10,10,12,12,10,10,10,
  29709. 12,13,10,11,11,13,13,12,11,12,11,14,12,12,13,13,
  29710. 14, 9,10,10,12,12, 9,10,10,12,12,10,10,11,12,13,
  29711. 11,12,11,14,12,12,12,12,14,14, 6, 7, 7, 9, 9, 7,
  29712. 8, 7,10,10, 7, 7, 8,10,10, 9,10,10,11,11, 9,10,
  29713. 10,12,12, 6, 7, 7,10,10, 8, 9, 8,11,10, 7, 8, 8,
  29714. 10,11,10,10,11,12,12,10,10,11,11,13, 7, 8, 8,10,
  29715. 10, 8, 8, 8,10,11, 8, 9, 8,11,10,10,11,10,12,12,
  29716. 10,11,10,12,11, 9,10,10,12,12,10,11,11,13,12, 9,
  29717. 10,10,12,12,12,12,12,14,14,11,11,12,12,14, 9,10,
  29718. 10,12,12,10,11,11,12,12,10,10,10,12,12,12,13,12,
  29719. 14,14,11,12,11,14,11, 8, 9, 9,11,11, 9,10,10,12,
  29720. 12, 9,10,10,12,12,11,12,12,14,14,11,12,12,13,13,
  29721. 9,10,10,12,12,10,10,11,12,13,10,11,10,13,12,12,
  29722. 12,13,14,14,12,12,12,14,13, 9,10,10,12,12, 9,10,
  29723. 10,13,12,10,10,11,12,13,12,13,12,14,13,12,12,13,
  29724. 13,14,11,12,11,14,13,11,11,12,13,14,12,13,12,14,
  29725. 14,13,12,14,11,16,13,14,14,16,15,11,11,11,13,13,
  29726. 11,12,11,14,13,12,12,13,14,15,12,14,12,16,12,14,
  29727. 14,14,16,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
  29728. 10,12,12,11,12,12,13,13,12,12,12,14,14, 9,10,10,
  29729. 12,12,10,11,10,13,12, 9,10,10,12,13,12,12,12,14,
  29730. 13,12,12,13,13,15, 9,10,10,12,12,10,10,11,12,13,
  29731. 10,11,10,13,12,12,13,12,14,14,12,13,12,14,13,11,
  29732. 11,11,13,13,12,13,12,14,14,11,11,12,13,14,13,14,
  29733. 14,16,15,13,12,14,12,15,11,12,12,13,14,12,12,13,
  29734. 14,14,11,12,11,14,13,13,14,14,15,16,13,14,11,16,
  29735. 11,
  29736. };
  29737. static float _vq_quantthresh__44u5__p4_0[] = {
  29738. -1.5, -0.5, 0.5, 1.5,
  29739. };
  29740. static long _vq_quantmap__44u5__p4_0[] = {
  29741. 3, 1, 0, 2, 4,
  29742. };
  29743. static encode_aux_threshmatch _vq_auxt__44u5__p4_0 = {
  29744. _vq_quantthresh__44u5__p4_0,
  29745. _vq_quantmap__44u5__p4_0,
  29746. 5,
  29747. 5
  29748. };
  29749. static static_codebook _44u5__p4_0 = {
  29750. 4, 625,
  29751. _vq_lengthlist__44u5__p4_0,
  29752. 1, -533725184, 1611661312, 3, 0,
  29753. _vq_quantlist__44u5__p4_0,
  29754. NULL,
  29755. &_vq_auxt__44u5__p4_0,
  29756. NULL,
  29757. 0
  29758. };
  29759. static long _vq_quantlist__44u5__p5_0[] = {
  29760. 4,
  29761. 3,
  29762. 5,
  29763. 2,
  29764. 6,
  29765. 1,
  29766. 7,
  29767. 0,
  29768. 8,
  29769. };
  29770. static long _vq_lengthlist__44u5__p5_0[] = {
  29771. 2, 4, 3, 6, 6, 8, 7,10,10, 3, 5, 5, 8, 7, 8, 8,
  29772. 11,11, 3, 5, 5, 7, 8, 8, 8,10,11, 6, 8, 7, 9, 9,
  29773. 10, 9,12,11, 7, 7, 8, 9, 9, 9,10,11,12, 8, 8, 8,
  29774. 10, 9,11,11,13,12, 8, 8, 8, 9,10,11,12,12,13,10,
  29775. 11,10,12,11,13,12,14,14,10,10,11,11,12,12,13,14,
  29776. 14,
  29777. };
  29778. static float _vq_quantthresh__44u5__p5_0[] = {
  29779. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  29780. };
  29781. static long _vq_quantmap__44u5__p5_0[] = {
  29782. 7, 5, 3, 1, 0, 2, 4, 6,
  29783. 8,
  29784. };
  29785. static encode_aux_threshmatch _vq_auxt__44u5__p5_0 = {
  29786. _vq_quantthresh__44u5__p5_0,
  29787. _vq_quantmap__44u5__p5_0,
  29788. 9,
  29789. 9
  29790. };
  29791. static static_codebook _44u5__p5_0 = {
  29792. 2, 81,
  29793. _vq_lengthlist__44u5__p5_0,
  29794. 1, -531628032, 1611661312, 4, 0,
  29795. _vq_quantlist__44u5__p5_0,
  29796. NULL,
  29797. &_vq_auxt__44u5__p5_0,
  29798. NULL,
  29799. 0
  29800. };
  29801. static long _vq_quantlist__44u5__p6_0[] = {
  29802. 4,
  29803. 3,
  29804. 5,
  29805. 2,
  29806. 6,
  29807. 1,
  29808. 7,
  29809. 0,
  29810. 8,
  29811. };
  29812. static long _vq_lengthlist__44u5__p6_0[] = {
  29813. 3, 4, 4, 5, 6, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
  29814. 9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7,
  29815. 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 7, 7,
  29816. 8, 8, 9, 9,10,10, 7, 7, 7, 8, 8, 9, 9,10,11, 9,
  29817. 9, 9,10,10,11,10,11,11, 9, 9, 9,10,10,11,11,11,
  29818. 11,
  29819. };
  29820. static float _vq_quantthresh__44u5__p6_0[] = {
  29821. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  29822. };
  29823. static long _vq_quantmap__44u5__p6_0[] = {
  29824. 7, 5, 3, 1, 0, 2, 4, 6,
  29825. 8,
  29826. };
  29827. static encode_aux_threshmatch _vq_auxt__44u5__p6_0 = {
  29828. _vq_quantthresh__44u5__p6_0,
  29829. _vq_quantmap__44u5__p6_0,
  29830. 9,
  29831. 9
  29832. };
  29833. static static_codebook _44u5__p6_0 = {
  29834. 2, 81,
  29835. _vq_lengthlist__44u5__p6_0,
  29836. 1, -531628032, 1611661312, 4, 0,
  29837. _vq_quantlist__44u5__p6_0,
  29838. NULL,
  29839. &_vq_auxt__44u5__p6_0,
  29840. NULL,
  29841. 0
  29842. };
  29843. static long _vq_quantlist__44u5__p7_0[] = {
  29844. 1,
  29845. 0,
  29846. 2,
  29847. };
  29848. static long _vq_lengthlist__44u5__p7_0[] = {
  29849. 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 8,11,10, 7,
  29850. 10,10, 5, 9, 9, 8,10,10, 8,10,11, 4, 9, 9, 9,11,
  29851. 11, 9,12,11, 8,11,11,11,12,12,10,12,12, 7,11,11,
  29852. 10,12,12,10,12,12, 4, 9, 9, 9,11,11, 9,11,11, 7,
  29853. 11,11,10,12,12,10,11,12, 8,11,11,10,12,12,11,12,
  29854. 12,
  29855. };
  29856. static float _vq_quantthresh__44u5__p7_0[] = {
  29857. -5.5, 5.5,
  29858. };
  29859. static long _vq_quantmap__44u5__p7_0[] = {
  29860. 1, 0, 2,
  29861. };
  29862. static encode_aux_threshmatch _vq_auxt__44u5__p7_0 = {
  29863. _vq_quantthresh__44u5__p7_0,
  29864. _vq_quantmap__44u5__p7_0,
  29865. 3,
  29866. 3
  29867. };
  29868. static static_codebook _44u5__p7_0 = {
  29869. 4, 81,
  29870. _vq_lengthlist__44u5__p7_0,
  29871. 1, -529137664, 1618345984, 2, 0,
  29872. _vq_quantlist__44u5__p7_0,
  29873. NULL,
  29874. &_vq_auxt__44u5__p7_0,
  29875. NULL,
  29876. 0
  29877. };
  29878. static long _vq_quantlist__44u5__p7_1[] = {
  29879. 5,
  29880. 4,
  29881. 6,
  29882. 3,
  29883. 7,
  29884. 2,
  29885. 8,
  29886. 1,
  29887. 9,
  29888. 0,
  29889. 10,
  29890. };
  29891. static long _vq_lengthlist__44u5__p7_1[] = {
  29892. 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 7,
  29893. 8, 8, 9, 8, 9, 8, 4, 5, 5, 7, 7, 8, 8, 8, 9, 9,
  29894. 9, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 6, 7, 7, 8,
  29895. 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 9, 8, 9, 9, 9, 9,
  29896. 9, 9, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8, 9, 8,
  29897. 9, 9, 9, 9,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
  29898. 10,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10, 8, 9,
  29899. 9, 9, 9, 9, 9,10,10,10,10,
  29900. };
  29901. static float _vq_quantthresh__44u5__p7_1[] = {
  29902. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  29903. 3.5, 4.5,
  29904. };
  29905. static long _vq_quantmap__44u5__p7_1[] = {
  29906. 9, 7, 5, 3, 1, 0, 2, 4,
  29907. 6, 8, 10,
  29908. };
  29909. static encode_aux_threshmatch _vq_auxt__44u5__p7_1 = {
  29910. _vq_quantthresh__44u5__p7_1,
  29911. _vq_quantmap__44u5__p7_1,
  29912. 11,
  29913. 11
  29914. };
  29915. static static_codebook _44u5__p7_1 = {
  29916. 2, 121,
  29917. _vq_lengthlist__44u5__p7_1,
  29918. 1, -531365888, 1611661312, 4, 0,
  29919. _vq_quantlist__44u5__p7_1,
  29920. NULL,
  29921. &_vq_auxt__44u5__p7_1,
  29922. NULL,
  29923. 0
  29924. };
  29925. static long _vq_quantlist__44u5__p8_0[] = {
  29926. 5,
  29927. 4,
  29928. 6,
  29929. 3,
  29930. 7,
  29931. 2,
  29932. 8,
  29933. 1,
  29934. 9,
  29935. 0,
  29936. 10,
  29937. };
  29938. static long _vq_lengthlist__44u5__p8_0[] = {
  29939. 1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7,
  29940. 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11,
  29941. 11, 6, 8, 8, 9, 9,10,10,12,11,13,12, 6, 7, 8, 9,
  29942. 9,10,10,11,11,12,12, 8, 9, 9,10,10,11,12,12,12,
  29943. 14,13, 8, 9, 9,10,10,11,11,12,13,14,13,10,11,10,
  29944. 12,12,13,13,14,13,15,14,10,11,11,12,12,12,13,13,
  29945. 13,15,15,11,12,12,13,12,13,14,14,14,15,14,11,11,
  29946. 12,13,13,13,14,14,14,15,15,
  29947. };
  29948. static float _vq_quantthresh__44u5__p8_0[] = {
  29949. -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5,
  29950. 38.5, 49.5,
  29951. };
  29952. static long _vq_quantmap__44u5__p8_0[] = {
  29953. 9, 7, 5, 3, 1, 0, 2, 4,
  29954. 6, 8, 10,
  29955. };
  29956. static encode_aux_threshmatch _vq_auxt__44u5__p8_0 = {
  29957. _vq_quantthresh__44u5__p8_0,
  29958. _vq_quantmap__44u5__p8_0,
  29959. 11,
  29960. 11
  29961. };
  29962. static static_codebook _44u5__p8_0 = {
  29963. 2, 121,
  29964. _vq_lengthlist__44u5__p8_0,
  29965. 1, -524582912, 1618345984, 4, 0,
  29966. _vq_quantlist__44u5__p8_0,
  29967. NULL,
  29968. &_vq_auxt__44u5__p8_0,
  29969. NULL,
  29970. 0
  29971. };
  29972. static long _vq_quantlist__44u5__p8_1[] = {
  29973. 5,
  29974. 4,
  29975. 6,
  29976. 3,
  29977. 7,
  29978. 2,
  29979. 8,
  29980. 1,
  29981. 9,
  29982. 0,
  29983. 10,
  29984. };
  29985. static long _vq_lengthlist__44u5__p8_1[] = {
  29986. 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 6, 5, 6, 6,
  29987. 7, 7, 8, 8, 8, 8, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8,
  29988. 8, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 7, 7,
  29989. 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
  29990. 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
  29991. 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
  29992. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  29993. 8, 8, 8, 8, 8, 8, 8, 8, 8,
  29994. };
  29995. static float _vq_quantthresh__44u5__p8_1[] = {
  29996. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  29997. 3.5, 4.5,
  29998. };
  29999. static long _vq_quantmap__44u5__p8_1[] = {
  30000. 9, 7, 5, 3, 1, 0, 2, 4,
  30001. 6, 8, 10,
  30002. };
  30003. static encode_aux_threshmatch _vq_auxt__44u5__p8_1 = {
  30004. _vq_quantthresh__44u5__p8_1,
  30005. _vq_quantmap__44u5__p8_1,
  30006. 11,
  30007. 11
  30008. };
  30009. static static_codebook _44u5__p8_1 = {
  30010. 2, 121,
  30011. _vq_lengthlist__44u5__p8_1,
  30012. 1, -531365888, 1611661312, 4, 0,
  30013. _vq_quantlist__44u5__p8_1,
  30014. NULL,
  30015. &_vq_auxt__44u5__p8_1,
  30016. NULL,
  30017. 0
  30018. };
  30019. static long _vq_quantlist__44u5__p9_0[] = {
  30020. 6,
  30021. 5,
  30022. 7,
  30023. 4,
  30024. 8,
  30025. 3,
  30026. 9,
  30027. 2,
  30028. 10,
  30029. 1,
  30030. 11,
  30031. 0,
  30032. 12,
  30033. };
  30034. static long _vq_lengthlist__44u5__p9_0[] = {
  30035. 1, 3, 3,12,10,12,12,12,12,12,12,12,12, 3, 8, 9,
  30036. 12,12,12,12,12,12,12,12,12,12, 4, 9, 9,12,12,12,
  30037. 12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,
  30038. 12,12,12,12, 9,12,12,12,12,12,12,12,12,12,12,12,
  30039. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30040. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30041. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30042. 12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,
  30043. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  30044. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  30045. 11,11,11,11,11,11,11,11,11,
  30046. };
  30047. static float _vq_quantthresh__44u5__p9_0[] = {
  30048. -1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 382.5,
  30049. 637.5, 892.5, 1147.5, 1402.5,
  30050. };
  30051. static long _vq_quantmap__44u5__p9_0[] = {
  30052. 11, 9, 7, 5, 3, 1, 0, 2,
  30053. 4, 6, 8, 10, 12,
  30054. };
  30055. static encode_aux_threshmatch _vq_auxt__44u5__p9_0 = {
  30056. _vq_quantthresh__44u5__p9_0,
  30057. _vq_quantmap__44u5__p9_0,
  30058. 13,
  30059. 13
  30060. };
  30061. static static_codebook _44u5__p9_0 = {
  30062. 2, 169,
  30063. _vq_lengthlist__44u5__p9_0,
  30064. 1, -514332672, 1627381760, 4, 0,
  30065. _vq_quantlist__44u5__p9_0,
  30066. NULL,
  30067. &_vq_auxt__44u5__p9_0,
  30068. NULL,
  30069. 0
  30070. };
  30071. static long _vq_quantlist__44u5__p9_1[] = {
  30072. 7,
  30073. 6,
  30074. 8,
  30075. 5,
  30076. 9,
  30077. 4,
  30078. 10,
  30079. 3,
  30080. 11,
  30081. 2,
  30082. 12,
  30083. 1,
  30084. 13,
  30085. 0,
  30086. 14,
  30087. };
  30088. static long _vq_lengthlist__44u5__p9_1[] = {
  30089. 1, 4, 4, 7, 7, 8, 9, 7, 7, 8, 8, 9, 9,10,10, 5,
  30090. 6, 6, 9, 8,10,10, 9, 8, 9, 9,10, 9,11,10, 4, 6,
  30091. 6, 8, 9, 9,10, 8, 9, 9,10,10,10,11,10, 7, 8, 8,
  30092. 10,10,11,11,10,10,11,11,11,11,11,11, 7, 8, 8,10,
  30093. 10,11,11,10,10,11,11,11,11,11,12, 8, 9,10,11,10,
  30094. 12,12,11,11,11,11,12,12,12,13, 8, 9, 9,11,11,11,
  30095. 12,11,11,11,11,12,12,12,12, 8, 9, 9,10,10,11,11,
  30096. 12,11,12,12,12,13,13,13, 8, 9, 9,10,10,11,11,12,
  30097. 11,12,12,13,13,12,13, 9,10,10,11,11,12,11,12,13,
  30098. 14,14,15,15,15,14, 9,10,10,11,11,12,12,12,12,13,
  30099. 13,14,14,14,14, 9,10,11,12,11,12,13,14,13,14,13,
  30100. 14,14,14,14, 9,11,11,11,11,12,13,13,13,14,13,15,
  30101. 15,14,14,10,11,11,12,12,13,13,13,13,14,14,14,15,
  30102. 15,15,10,11,11,12,12,12,13,13,13,15,14,15,14,14,
  30103. 14,
  30104. };
  30105. static float _vq_quantthresh__44u5__p9_1[] = {
  30106. -110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5,
  30107. 25.5, 42.5, 59.5, 76.5, 93.5, 110.5,
  30108. };
  30109. static long _vq_quantmap__44u5__p9_1[] = {
  30110. 13, 11, 9, 7, 5, 3, 1, 0,
  30111. 2, 4, 6, 8, 10, 12, 14,
  30112. };
  30113. static encode_aux_threshmatch _vq_auxt__44u5__p9_1 = {
  30114. _vq_quantthresh__44u5__p9_1,
  30115. _vq_quantmap__44u5__p9_1,
  30116. 15,
  30117. 15
  30118. };
  30119. static static_codebook _44u5__p9_1 = {
  30120. 2, 225,
  30121. _vq_lengthlist__44u5__p9_1,
  30122. 1, -522338304, 1620115456, 4, 0,
  30123. _vq_quantlist__44u5__p9_1,
  30124. NULL,
  30125. &_vq_auxt__44u5__p9_1,
  30126. NULL,
  30127. 0
  30128. };
  30129. static long _vq_quantlist__44u5__p9_2[] = {
  30130. 8,
  30131. 7,
  30132. 9,
  30133. 6,
  30134. 10,
  30135. 5,
  30136. 11,
  30137. 4,
  30138. 12,
  30139. 3,
  30140. 13,
  30141. 2,
  30142. 14,
  30143. 1,
  30144. 15,
  30145. 0,
  30146. 16,
  30147. };
  30148. static long _vq_lengthlist__44u5__p9_2[] = {
  30149. 3, 5, 5, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
  30150. 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
  30151. 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
  30152. 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
  30153. 9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
  30154. 9, 9, 9, 9, 9, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
  30155. 9, 9, 9, 9, 9, 9, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9,
  30156. 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9,
  30157. 9, 9, 9, 9, 9, 9,10, 9, 8, 8, 8, 9, 9, 9, 9, 9,
  30158. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  30159. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  30160. 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9, 9, 9, 9,
  30161. 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9,10, 9, 9, 9, 9,
  30162. 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10, 9, 9, 9, 9,
  30163. 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9,10, 9, 9, 9,
  30164. 9, 9, 9, 9, 9, 9,10,10,10,10, 9,10,10,10,10, 9,
  30165. 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9, 9, 9, 9,10,
  30166. 9, 9, 9, 9, 9, 9, 9,10, 9,10, 9, 9, 9,10,10, 9,
  30167. 9,
  30168. };
  30169. static float _vq_quantthresh__44u5__p9_2[] = {
  30170. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  30171. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  30172. };
  30173. static long _vq_quantmap__44u5__p9_2[] = {
  30174. 15, 13, 11, 9, 7, 5, 3, 1,
  30175. 0, 2, 4, 6, 8, 10, 12, 14,
  30176. 16,
  30177. };
  30178. static encode_aux_threshmatch _vq_auxt__44u5__p9_2 = {
  30179. _vq_quantthresh__44u5__p9_2,
  30180. _vq_quantmap__44u5__p9_2,
  30181. 17,
  30182. 17
  30183. };
  30184. static static_codebook _44u5__p9_2 = {
  30185. 2, 289,
  30186. _vq_lengthlist__44u5__p9_2,
  30187. 1, -529530880, 1611661312, 5, 0,
  30188. _vq_quantlist__44u5__p9_2,
  30189. NULL,
  30190. &_vq_auxt__44u5__p9_2,
  30191. NULL,
  30192. 0
  30193. };
  30194. static long _huff_lengthlist__44u5__short[] = {
  30195. 4,11,16,14,18,15,18,15,17,17, 4, 6, 9, 9,12, 9,
  30196. 14,10,14,17, 6, 6, 5, 7, 6, 8,10,10,16,17, 7, 8,
  30197. 7, 9, 9,10,12,12,14,17, 8, 6, 5, 7, 4, 7, 5, 7,
  30198. 14,17, 9, 9, 8, 9, 7,10, 8,10,14,17,11, 9, 7, 9,
  30199. 4, 7, 3, 6,15,17,11,10,10,10, 6, 9, 5, 6,14,17,
  30200. 17,17,10,15, 4, 8, 3, 5,12,17,17,17,12,16, 7,11,
  30201. 6, 8,16,17,
  30202. };
  30203. static static_codebook _huff_book__44u5__short = {
  30204. 2, 100,
  30205. _huff_lengthlist__44u5__short,
  30206. 0, 0, 0, 0, 0,
  30207. NULL,
  30208. NULL,
  30209. NULL,
  30210. NULL,
  30211. 0
  30212. };
  30213. static long _huff_lengthlist__44u6__long[] = {
  30214. 3, 9,14,13,15,13,16,12,12,12, 5, 4, 6, 7, 8, 9,
  30215. 10,10,13,12,10, 5, 5, 6, 6, 9, 9,10,14,14,10, 6,
  30216. 6, 7, 6, 8, 9, 9,13,12,13, 7, 5, 6, 4, 6, 6, 7,
  30217. 11,15,10, 8, 7, 7, 6, 7, 7, 7,11,13,16,10, 8, 8,
  30218. 5, 6, 4, 6,10,14, 9, 9, 9, 8, 6, 6, 5, 4, 7,11,
  30219. 11,11,12,11,10, 9, 9, 5, 5, 9,10,13,14,14,14,14,
  30220. 15, 8, 7, 8,
  30221. };
  30222. static static_codebook _huff_book__44u6__long = {
  30223. 2, 100,
  30224. _huff_lengthlist__44u6__long,
  30225. 0, 0, 0, 0, 0,
  30226. NULL,
  30227. NULL,
  30228. NULL,
  30229. NULL,
  30230. 0
  30231. };
  30232. static long _vq_quantlist__44u6__p1_0[] = {
  30233. 1,
  30234. 0,
  30235. 2,
  30236. };
  30237. static long _vq_lengthlist__44u6__p1_0[] = {
  30238. 1, 4, 4, 4, 8, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
  30239. 9,10, 5, 8, 8, 7,10, 9, 8,10,10, 5, 8, 8, 8,11,
  30240. 10, 8,10,10, 8,11,10,10,12,13,10,13,13, 7,10,10,
  30241. 10,13,11,10,13,13, 5, 8, 8, 8,11,10, 8,10,10, 7,
  30242. 10,10,10,13,13, 9,11,13, 8,10,11,10,13,13,10,13,
  30243. 12,
  30244. };
  30245. static float _vq_quantthresh__44u6__p1_0[] = {
  30246. -0.5, 0.5,
  30247. };
  30248. static long _vq_quantmap__44u6__p1_0[] = {
  30249. 1, 0, 2,
  30250. };
  30251. static encode_aux_threshmatch _vq_auxt__44u6__p1_0 = {
  30252. _vq_quantthresh__44u6__p1_0,
  30253. _vq_quantmap__44u6__p1_0,
  30254. 3,
  30255. 3
  30256. };
  30257. static static_codebook _44u6__p1_0 = {
  30258. 4, 81,
  30259. _vq_lengthlist__44u6__p1_0,
  30260. 1, -535822336, 1611661312, 2, 0,
  30261. _vq_quantlist__44u6__p1_0,
  30262. NULL,
  30263. &_vq_auxt__44u6__p1_0,
  30264. NULL,
  30265. 0
  30266. };
  30267. static long _vq_quantlist__44u6__p2_0[] = {
  30268. 1,
  30269. 0,
  30270. 2,
  30271. };
  30272. static long _vq_lengthlist__44u6__p2_0[] = {
  30273. 3, 5, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 7, 8, 6,
  30274. 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 6, 8,
  30275. 7, 6, 7, 8, 6, 8, 8, 8, 8, 9, 8, 9, 9, 6, 7, 7,
  30276. 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 7, 8, 6,
  30277. 7, 7, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
  30278. 8,
  30279. };
  30280. static float _vq_quantthresh__44u6__p2_0[] = {
  30281. -0.5, 0.5,
  30282. };
  30283. static long _vq_quantmap__44u6__p2_0[] = {
  30284. 1, 0, 2,
  30285. };
  30286. static encode_aux_threshmatch _vq_auxt__44u6__p2_0 = {
  30287. _vq_quantthresh__44u6__p2_0,
  30288. _vq_quantmap__44u6__p2_0,
  30289. 3,
  30290. 3
  30291. };
  30292. static static_codebook _44u6__p2_0 = {
  30293. 4, 81,
  30294. _vq_lengthlist__44u6__p2_0,
  30295. 1, -535822336, 1611661312, 2, 0,
  30296. _vq_quantlist__44u6__p2_0,
  30297. NULL,
  30298. &_vq_auxt__44u6__p2_0,
  30299. NULL,
  30300. 0
  30301. };
  30302. static long _vq_quantlist__44u6__p3_0[] = {
  30303. 2,
  30304. 1,
  30305. 3,
  30306. 0,
  30307. 4,
  30308. };
  30309. static long _vq_lengthlist__44u6__p3_0[] = {
  30310. 2, 4, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
  30311. 10, 9,13,12, 8, 9,10,12,13, 5, 7, 7,10, 9, 7, 9,
  30312. 9,11,11, 7, 8, 9,10,11,10,11,11,13,14, 9,10,11,
  30313. 13,13, 5, 7, 7, 9, 9, 7, 9, 8,11,10, 7, 9, 9,11,
  30314. 11, 9,11,10,14,13,10,11,11,14,13, 8,10,10,14,13,
  30315. 10,12,11,15,14, 9,11,11,15,14,13,15,14,20,16,13,
  30316. 13,14,16,16, 8,10,10,13,14, 9,11,11,14,15,10,11,
  30317. 12,14,15,13,13,14,16,16,13,14,14,16,17, 5, 7, 7,
  30318. 10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,11,11,15,
  30319. 14,10,11,11,14,14, 7, 9, 9,12,11, 9,11,11,12,13,
  30320. 9,11,11,13,13,11,12,13,14,16,11,12,13,16,16, 6,
  30321. 9, 8,11,11, 8,11,10,13,12, 9,10,11,12,13,11,13,
  30322. 11,15,14,11,13,13,15,15,10,12,11,15,14,11,12,13,
  30323. 17,16,11,13,13,16,17,14,15,16,17,17,14,15,16,20,
  30324. 0, 9,11,11,14,15,10,13,12,16,16,11,13,13,17,17,
  30325. 13,15,14,17,15,15,16,16, 0, 0, 5, 7, 7,10,10, 7,
  30326. 9, 9,11,11, 7, 8, 9,11,11,10,11,11,14,14,10,11,
  30327. 11,14,14, 6, 9, 9,11,11, 9,11,11,14,12, 8,10,11,
  30328. 12,13,11,13,13,16,16,11,11,13,14,16, 7, 9, 9,11,
  30329. 12, 9,11,11,13,13, 9,11,11,13,12,11,13,12,16,16,
  30330. 12,13,12,16,14, 9,11,11,16,15,11,13,13,17,15,10,
  30331. 12,12,15,16,14,16,16, 0,17,13,14,15,15,17,10,11,
  30332. 12,15,15,11,13,13,17,17,11,13,13,15,16,14,15,15,
  30333. 19,18,14,15,15,19,16, 8,10,10,14,14,10,12,11,15,
  30334. 16,10,11,11,15,17,13,16,15,19,19,13,15,14,17,17,
  30335. 9,11,12,15,16,11,13,13,18,19,11,13,13,16,17,16,
  30336. 16,17, 0, 0,15,15,16, 0,19, 9,11,11,15,16,10,13,
  30337. 12,17,15,11,13,13,16,17,14,17,15,18,17,15,16,15,
  30338. 18, 0,13,14,15, 0,19,14,16,16, 0,17,15,16,16, 0,
  30339. 17,16,17, 0, 0, 0,16,17,19, 0, 0,12,14,14,17,17,
  30340. 13,15,13, 0,19,14,16,16,18,19,16,18,15,19,18,17,
  30341. 18,17,19, 0, 8,10,10,14,13,10,11,11,16,15,10,11,
  30342. 11,15,15,13,15,15,19,18,14,15,16, 0,18, 9,11,11,
  30343. 15,14,11,13,13, 0,16,10,12,13,15,17,14,16,16, 0,
  30344. 18,15,16,17,17, 0, 9,11,11,16,15,11,13,13,16,16,
  30345. 11,14,13,18,18,15,17,15,18,17,15,16,18, 0, 0,12,
  30346. 14,14,18,19,14,15,16, 0,18,13,14,15,18, 0,17,17,
  30347. 17, 0, 0,16,15,18,17, 0,12,14,15,17,19,14,16,16,
  30348. 19, 0,14,17,16, 0,18,17,19,17, 0, 0,16,18,17, 0,
  30349. 17,
  30350. };
  30351. static float _vq_quantthresh__44u6__p3_0[] = {
  30352. -1.5, -0.5, 0.5, 1.5,
  30353. };
  30354. static long _vq_quantmap__44u6__p3_0[] = {
  30355. 3, 1, 0, 2, 4,
  30356. };
  30357. static encode_aux_threshmatch _vq_auxt__44u6__p3_0 = {
  30358. _vq_quantthresh__44u6__p3_0,
  30359. _vq_quantmap__44u6__p3_0,
  30360. 5,
  30361. 5
  30362. };
  30363. static static_codebook _44u6__p3_0 = {
  30364. 4, 625,
  30365. _vq_lengthlist__44u6__p3_0,
  30366. 1, -533725184, 1611661312, 3, 0,
  30367. _vq_quantlist__44u6__p3_0,
  30368. NULL,
  30369. &_vq_auxt__44u6__p3_0,
  30370. NULL,
  30371. 0
  30372. };
  30373. static long _vq_quantlist__44u6__p4_0[] = {
  30374. 2,
  30375. 1,
  30376. 3,
  30377. 0,
  30378. 4,
  30379. };
  30380. static long _vq_lengthlist__44u6__p4_0[] = {
  30381. 4, 6, 6, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
  30382. 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
  30383. 8,10,10, 6, 7, 8, 9,10, 9,10,10,11,12, 9, 9,10,
  30384. 11,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 8,10,
  30385. 10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,11,11,
  30386. 9,10,10,12,12, 9, 9,10,12,12,11,12,12,13,13,11,
  30387. 11,12,12,13, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
  30388. 10,12,12,11,12,11,13,13,11,12,12,13,13, 6, 7, 7,
  30389. 9, 9, 7, 8, 7,10, 9, 7, 7, 8, 9,10, 9,10,10,12,
  30390. 11, 9,10,10,11,12, 7, 8, 8,10,10, 8, 8, 9,10,10,
  30391. 8, 8, 8,10,10,10,10,11,12,12,10,10,11,12,12, 6,
  30392. 7, 7,10,10, 7, 8, 8,11,10, 8, 8, 9,10,11,10,11,
  30393. 10,12,11,10,10,11,12,12, 9,10,10,12,12,10,10,11,
  30394. 12,12,10,11,10,13,12,12,12,12,12,14,12,12,12,13,
  30395. 14, 9,10,10,12,12, 9,10,10,12,12,10,10,11,12,13,
  30396. 11,12,11,14,12,12,12,13,14,14, 6, 7, 7, 9, 9, 7,
  30397. 8, 7,10, 9, 7, 7, 8,10,10, 9,10,10,12,11, 9,10,
  30398. 10,11,12, 6, 7, 7,10,10, 8, 9, 8,11,10, 7, 8, 8,
  30399. 10,10,10,10,11,12,12,10,10,10,11,12, 7, 8, 8,10,
  30400. 10, 8, 8, 8,10,10, 8, 8, 8,10,10,10,11,10,12,12,
  30401. 10,11,10,12,11, 9,10,10,12,12,10,11,10,13,12, 9,
  30402. 10,10,12,12,12,12,12,14,14,11,11,12,12,13, 9,10,
  30403. 10,12,12,10,11,11,12,12,10,11,10,12,12,12,12,12,
  30404. 14,14,12,12,12,14,12, 8, 9, 9,11,11, 9,10,10,12,
  30405. 12, 9,10,10,12,12,11,12,12,13,13,11,12,12,13,13,
  30406. 9,10,10,12,12,10,10,11,12,13,10,11,10,12,12,12,
  30407. 12,13,13,14,12,12,12,14,14, 9,10,10,12,12, 9,10,
  30408. 10,12,12,10,10,10,12,12,12,12,12,14,13,12,12,12,
  30409. 14,14,11,12,12,13,13,11,12,12,14,14,12,12,12,14,
  30410. 14,13,12,14,12,15,13,14,14,15,15,11,11,11,13,13,
  30411. 11,12,11,14,13,12,12,12,14,14,12,14,12,15,12,13,
  30412. 14,14,15,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
  30413. 10,12,12,11,12,12,13,13,11,12,12,13,14, 9,10,10,
  30414. 12,12,10,11,10,13,12, 9,10,10,12,13,12,12,12,15,
  30415. 14,12,12,13,13,14, 9,10,10,12,12,10,10,11,12,12,
  30416. 10,11,10,12,12,12,13,12,14,14,12,13,12,14,13,11,
  30417. 11,11,13,13,12,12,12,14,13,11,11,12,13,14,13,14,
  30418. 14,15,15,12,12,14,12,15,11,12,12,13,14,12,12,12,
  30419. 14,14,11,12,12,14,14,13,14,14,15,15,13,14,12,16,
  30420. 12,
  30421. };
  30422. static float _vq_quantthresh__44u6__p4_0[] = {
  30423. -1.5, -0.5, 0.5, 1.5,
  30424. };
  30425. static long _vq_quantmap__44u6__p4_0[] = {
  30426. 3, 1, 0, 2, 4,
  30427. };
  30428. static encode_aux_threshmatch _vq_auxt__44u6__p4_0 = {
  30429. _vq_quantthresh__44u6__p4_0,
  30430. _vq_quantmap__44u6__p4_0,
  30431. 5,
  30432. 5
  30433. };
  30434. static static_codebook _44u6__p4_0 = {
  30435. 4, 625,
  30436. _vq_lengthlist__44u6__p4_0,
  30437. 1, -533725184, 1611661312, 3, 0,
  30438. _vq_quantlist__44u6__p4_0,
  30439. NULL,
  30440. &_vq_auxt__44u6__p4_0,
  30441. NULL,
  30442. 0
  30443. };
  30444. static long _vq_quantlist__44u6__p5_0[] = {
  30445. 4,
  30446. 3,
  30447. 5,
  30448. 2,
  30449. 6,
  30450. 1,
  30451. 7,
  30452. 0,
  30453. 8,
  30454. };
  30455. static long _vq_lengthlist__44u6__p5_0[] = {
  30456. 2, 3, 3, 6, 6, 8, 8,10,10, 4, 5, 5, 8, 7, 8, 8,
  30457. 11,11, 3, 5, 5, 7, 8, 8, 8,11,11, 6, 8, 7,10, 9,
  30458. 10, 9,12,12, 6, 7, 8, 9,10, 9,10,12,12, 8, 8, 8,
  30459. 10, 9,12,11,13,13, 8, 8, 8, 9,10,11,12,12,13,10,
  30460. 11,11,12,11,13,12,14,14,10,10,11,11,12,13,13,14,
  30461. 14,
  30462. };
  30463. static float _vq_quantthresh__44u6__p5_0[] = {
  30464. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  30465. };
  30466. static long _vq_quantmap__44u6__p5_0[] = {
  30467. 7, 5, 3, 1, 0, 2, 4, 6,
  30468. 8,
  30469. };
  30470. static encode_aux_threshmatch _vq_auxt__44u6__p5_0 = {
  30471. _vq_quantthresh__44u6__p5_0,
  30472. _vq_quantmap__44u6__p5_0,
  30473. 9,
  30474. 9
  30475. };
  30476. static static_codebook _44u6__p5_0 = {
  30477. 2, 81,
  30478. _vq_lengthlist__44u6__p5_0,
  30479. 1, -531628032, 1611661312, 4, 0,
  30480. _vq_quantlist__44u6__p5_0,
  30481. NULL,
  30482. &_vq_auxt__44u6__p5_0,
  30483. NULL,
  30484. 0
  30485. };
  30486. static long _vq_quantlist__44u6__p6_0[] = {
  30487. 4,
  30488. 3,
  30489. 5,
  30490. 2,
  30491. 6,
  30492. 1,
  30493. 7,
  30494. 0,
  30495. 8,
  30496. };
  30497. static long _vq_lengthlist__44u6__p6_0[] = {
  30498. 3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
  30499. 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
  30500. 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 7, 7,
  30501. 8, 8, 9, 9,10,10, 7, 7, 7, 8, 8, 9, 9,10,11, 9,
  30502. 9, 9,10,10,11,11,11,11, 9, 9, 9,10,10,10,11,11,
  30503. 11,
  30504. };
  30505. static float _vq_quantthresh__44u6__p6_0[] = {
  30506. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  30507. };
  30508. static long _vq_quantmap__44u6__p6_0[] = {
  30509. 7, 5, 3, 1, 0, 2, 4, 6,
  30510. 8,
  30511. };
  30512. static encode_aux_threshmatch _vq_auxt__44u6__p6_0 = {
  30513. _vq_quantthresh__44u6__p6_0,
  30514. _vq_quantmap__44u6__p6_0,
  30515. 9,
  30516. 9
  30517. };
  30518. static static_codebook _44u6__p6_0 = {
  30519. 2, 81,
  30520. _vq_lengthlist__44u6__p6_0,
  30521. 1, -531628032, 1611661312, 4, 0,
  30522. _vq_quantlist__44u6__p6_0,
  30523. NULL,
  30524. &_vq_auxt__44u6__p6_0,
  30525. NULL,
  30526. 0
  30527. };
  30528. static long _vq_quantlist__44u6__p7_0[] = {
  30529. 1,
  30530. 0,
  30531. 2,
  30532. };
  30533. static long _vq_lengthlist__44u6__p7_0[] = {
  30534. 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 8,11,10, 8,
  30535. 11,10, 5, 8, 9, 7,10,10, 8,10,11, 4, 9, 9, 9,12,
  30536. 11, 9,11,12, 8,11,12,11,12,13,10,13,12, 7,12,11,
  30537. 10,12,12,10,13,13, 4, 9, 9, 8,11,11, 9,11,12, 7,
  30538. 12,12,10,13,13,10,12,13, 8,12,12,10,13,13,11,13,
  30539. 12,
  30540. };
  30541. static float _vq_quantthresh__44u6__p7_0[] = {
  30542. -5.5, 5.5,
  30543. };
  30544. static long _vq_quantmap__44u6__p7_0[] = {
  30545. 1, 0, 2,
  30546. };
  30547. static encode_aux_threshmatch _vq_auxt__44u6__p7_0 = {
  30548. _vq_quantthresh__44u6__p7_0,
  30549. _vq_quantmap__44u6__p7_0,
  30550. 3,
  30551. 3
  30552. };
  30553. static static_codebook _44u6__p7_0 = {
  30554. 4, 81,
  30555. _vq_lengthlist__44u6__p7_0,
  30556. 1, -529137664, 1618345984, 2, 0,
  30557. _vq_quantlist__44u6__p7_0,
  30558. NULL,
  30559. &_vq_auxt__44u6__p7_0,
  30560. NULL,
  30561. 0
  30562. };
  30563. static long _vq_quantlist__44u6__p7_1[] = {
  30564. 5,
  30565. 4,
  30566. 6,
  30567. 3,
  30568. 7,
  30569. 2,
  30570. 8,
  30571. 1,
  30572. 9,
  30573. 0,
  30574. 10,
  30575. };
  30576. static long _vq_lengthlist__44u6__p7_1[] = {
  30577. 3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 6, 6,
  30578. 8, 7, 8, 8, 8, 8, 4, 5, 5, 6, 6, 7, 8, 8, 8, 8,
  30579. 8, 6, 7, 6, 7, 7, 8, 8, 9, 9, 9, 9, 6, 6, 7, 7,
  30580. 7, 8, 8, 9, 9, 9, 9, 7, 8, 7, 8, 8, 9, 9, 9, 9,
  30581. 9, 9, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8,
  30582. 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
  30583. 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10, 8, 8,
  30584. 8, 9, 9, 9, 9, 9, 9,10,10,
  30585. };
  30586. static float _vq_quantthresh__44u6__p7_1[] = {
  30587. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  30588. 3.5, 4.5,
  30589. };
  30590. static long _vq_quantmap__44u6__p7_1[] = {
  30591. 9, 7, 5, 3, 1, 0, 2, 4,
  30592. 6, 8, 10,
  30593. };
  30594. static encode_aux_threshmatch _vq_auxt__44u6__p7_1 = {
  30595. _vq_quantthresh__44u6__p7_1,
  30596. _vq_quantmap__44u6__p7_1,
  30597. 11,
  30598. 11
  30599. };
  30600. static static_codebook _44u6__p7_1 = {
  30601. 2, 121,
  30602. _vq_lengthlist__44u6__p7_1,
  30603. 1, -531365888, 1611661312, 4, 0,
  30604. _vq_quantlist__44u6__p7_1,
  30605. NULL,
  30606. &_vq_auxt__44u6__p7_1,
  30607. NULL,
  30608. 0
  30609. };
  30610. static long _vq_quantlist__44u6__p8_0[] = {
  30611. 5,
  30612. 4,
  30613. 6,
  30614. 3,
  30615. 7,
  30616. 2,
  30617. 8,
  30618. 1,
  30619. 9,
  30620. 0,
  30621. 10,
  30622. };
  30623. static long _vq_lengthlist__44u6__p8_0[] = {
  30624. 1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7,
  30625. 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11,
  30626. 11, 6, 8, 8, 9, 9,10,10,11,11,12,12, 6, 8, 8, 9,
  30627. 9,10,10,11,11,12,12, 8, 9, 9,10,10,11,11,12,12,
  30628. 13,13, 8, 9, 9,10,10,11,11,12,12,13,13,10,10,10,
  30629. 11,11,12,12,13,13,14,14,10,10,10,11,11,12,13,13,
  30630. 13,14,14,11,12,12,13,13,13,13,14,14,15,14,11,11,
  30631. 11,13,13,14,13,14,14,15,14,
  30632. };
  30633. static float _vq_quantthresh__44u6__p8_0[] = {
  30634. -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5,
  30635. 38.5, 49.5,
  30636. };
  30637. static long _vq_quantmap__44u6__p8_0[] = {
  30638. 9, 7, 5, 3, 1, 0, 2, 4,
  30639. 6, 8, 10,
  30640. };
  30641. static encode_aux_threshmatch _vq_auxt__44u6__p8_0 = {
  30642. _vq_quantthresh__44u6__p8_0,
  30643. _vq_quantmap__44u6__p8_0,
  30644. 11,
  30645. 11
  30646. };
  30647. static static_codebook _44u6__p8_0 = {
  30648. 2, 121,
  30649. _vq_lengthlist__44u6__p8_0,
  30650. 1, -524582912, 1618345984, 4, 0,
  30651. _vq_quantlist__44u6__p8_0,
  30652. NULL,
  30653. &_vq_auxt__44u6__p8_0,
  30654. NULL,
  30655. 0
  30656. };
  30657. static long _vq_quantlist__44u6__p8_1[] = {
  30658. 5,
  30659. 4,
  30660. 6,
  30661. 3,
  30662. 7,
  30663. 2,
  30664. 8,
  30665. 1,
  30666. 9,
  30667. 0,
  30668. 10,
  30669. };
  30670. static long _vq_lengthlist__44u6__p8_1[] = {
  30671. 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 6,
  30672. 7, 7, 7, 7, 8, 8, 5, 6, 6, 6, 7, 7, 7, 7, 7, 8,
  30673. 8, 6, 7, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 7, 7,
  30674. 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
  30675. 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7,
  30676. 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8,
  30677. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  30678. 8, 8, 8, 8, 8, 8, 8, 8, 8,
  30679. };
  30680. static float _vq_quantthresh__44u6__p8_1[] = {
  30681. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  30682. 3.5, 4.5,
  30683. };
  30684. static long _vq_quantmap__44u6__p8_1[] = {
  30685. 9, 7, 5, 3, 1, 0, 2, 4,
  30686. 6, 8, 10,
  30687. };
  30688. static encode_aux_threshmatch _vq_auxt__44u6__p8_1 = {
  30689. _vq_quantthresh__44u6__p8_1,
  30690. _vq_quantmap__44u6__p8_1,
  30691. 11,
  30692. 11
  30693. };
  30694. static static_codebook _44u6__p8_1 = {
  30695. 2, 121,
  30696. _vq_lengthlist__44u6__p8_1,
  30697. 1, -531365888, 1611661312, 4, 0,
  30698. _vq_quantlist__44u6__p8_1,
  30699. NULL,
  30700. &_vq_auxt__44u6__p8_1,
  30701. NULL,
  30702. 0
  30703. };
  30704. static long _vq_quantlist__44u6__p9_0[] = {
  30705. 7,
  30706. 6,
  30707. 8,
  30708. 5,
  30709. 9,
  30710. 4,
  30711. 10,
  30712. 3,
  30713. 11,
  30714. 2,
  30715. 12,
  30716. 1,
  30717. 13,
  30718. 0,
  30719. 14,
  30720. };
  30721. static long _vq_lengthlist__44u6__p9_0[] = {
  30722. 1, 3, 3,10,12,13,13,13,13,13,13,13,13,13,13, 3,
  30723. 9, 9,13,13,13,13,13,13,13,13,13,13,12,12, 4, 9,
  30724. 9,12,12,12,12,12,12,12,12,12,12,12,12, 9,12,12,
  30725. 12,12,12,12,12,12,12,12,12,12,12,12, 9,11,12,12,
  30726. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30727. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30728. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30729. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30730. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30731. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30732. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30733. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30734. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30735. 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
  30736. 12,
  30737. };
  30738. static float _vq_quantthresh__44u6__p9_0[] = {
  30739. -1657.5, -1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5,
  30740. 382.5, 637.5, 892.5, 1147.5, 1402.5, 1657.5,
  30741. };
  30742. static long _vq_quantmap__44u6__p9_0[] = {
  30743. 13, 11, 9, 7, 5, 3, 1, 0,
  30744. 2, 4, 6, 8, 10, 12, 14,
  30745. };
  30746. static encode_aux_threshmatch _vq_auxt__44u6__p9_0 = {
  30747. _vq_quantthresh__44u6__p9_0,
  30748. _vq_quantmap__44u6__p9_0,
  30749. 15,
  30750. 15
  30751. };
  30752. static static_codebook _44u6__p9_0 = {
  30753. 2, 225,
  30754. _vq_lengthlist__44u6__p9_0,
  30755. 1, -514071552, 1627381760, 4, 0,
  30756. _vq_quantlist__44u6__p9_0,
  30757. NULL,
  30758. &_vq_auxt__44u6__p9_0,
  30759. NULL,
  30760. 0
  30761. };
  30762. static long _vq_quantlist__44u6__p9_1[] = {
  30763. 7,
  30764. 6,
  30765. 8,
  30766. 5,
  30767. 9,
  30768. 4,
  30769. 10,
  30770. 3,
  30771. 11,
  30772. 2,
  30773. 12,
  30774. 1,
  30775. 13,
  30776. 0,
  30777. 14,
  30778. };
  30779. static long _vq_lengthlist__44u6__p9_1[] = {
  30780. 1, 4, 4, 7, 7, 8, 8, 7, 7, 8, 8, 9, 9, 9, 9, 5,
  30781. 6, 6, 8, 8,10,10, 9, 9,10, 9,10, 9,10,10, 4, 6,
  30782. 6, 8, 9,10,10, 8, 9, 9,10,10,10,10,10, 7, 9, 8,
  30783. 10,10,11,11,10,10,11,11,11,11,12,12, 7, 8, 8,10,
  30784. 10,11,11,10,10,10,11,11,11,11,12, 8,10,10,11,11,
  30785. 12,12,11,11,11,11,12,12,12,13, 8, 9, 9,11,11,12,
  30786. 12,11,11,12,12,12,12,12,12, 8, 9, 9,10,10,11,11,
  30787. 13,12,13,12,13,13,13,13, 8, 9, 9,10,10,11,11,12,
  30788. 12,12,12,13,12,13,12, 9,10,10,11,11,12,12,13,13,
  30789. 14,12,13,13,14,13, 9,10,10,11,11,12,12,12,12,13,
  30790. 13,13,13,14,14, 9,11,10,11,11,12,13,13,12,13,13,
  30791. 15,13,14,14, 9,10,10,11,12,12,13,13,13,13,13,14,
  30792. 14,14,14,10,11,11,12,12,13,12,13,13,14,14,14,14,
  30793. 14,15,10,11,11,11,12,13,13,13,13,14,14,14,14,14,
  30794. 14,
  30795. };
  30796. static float _vq_quantthresh__44u6__p9_1[] = {
  30797. -110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5,
  30798. 25.5, 42.5, 59.5, 76.5, 93.5, 110.5,
  30799. };
  30800. static long _vq_quantmap__44u6__p9_1[] = {
  30801. 13, 11, 9, 7, 5, 3, 1, 0,
  30802. 2, 4, 6, 8, 10, 12, 14,
  30803. };
  30804. static encode_aux_threshmatch _vq_auxt__44u6__p9_1 = {
  30805. _vq_quantthresh__44u6__p9_1,
  30806. _vq_quantmap__44u6__p9_1,
  30807. 15,
  30808. 15
  30809. };
  30810. static static_codebook _44u6__p9_1 = {
  30811. 2, 225,
  30812. _vq_lengthlist__44u6__p9_1,
  30813. 1, -522338304, 1620115456, 4, 0,
  30814. _vq_quantlist__44u6__p9_1,
  30815. NULL,
  30816. &_vq_auxt__44u6__p9_1,
  30817. NULL,
  30818. 0
  30819. };
  30820. static long _vq_quantlist__44u6__p9_2[] = {
  30821. 8,
  30822. 7,
  30823. 9,
  30824. 6,
  30825. 10,
  30826. 5,
  30827. 11,
  30828. 4,
  30829. 12,
  30830. 3,
  30831. 13,
  30832. 2,
  30833. 14,
  30834. 1,
  30835. 15,
  30836. 0,
  30837. 16,
  30838. };
  30839. static long _vq_lengthlist__44u6__p9_2[] = {
  30840. 3, 5, 5, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
  30841. 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
  30842. 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
  30843. 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
  30844. 9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
  30845. 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9,
  30846. 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
  30847. 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9,
  30848. 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
  30849. 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9,
  30850. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  30851. 9, 9, 9, 9, 9, 9, 9,10, 9,10,10, 9, 9, 9, 9, 9,
  30852. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  30853. 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10, 9, 9, 9,
  30854. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10, 9, 9,
  30855. 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10, 9, 9, 9, 9,
  30856. 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10, 9, 9, 9, 9,
  30857. 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10, 9, 9, 9,10,
  30858. 9,
  30859. };
  30860. static float _vq_quantthresh__44u6__p9_2[] = {
  30861. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  30862. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  30863. };
  30864. static long _vq_quantmap__44u6__p9_2[] = {
  30865. 15, 13, 11, 9, 7, 5, 3, 1,
  30866. 0, 2, 4, 6, 8, 10, 12, 14,
  30867. 16,
  30868. };
  30869. static encode_aux_threshmatch _vq_auxt__44u6__p9_2 = {
  30870. _vq_quantthresh__44u6__p9_2,
  30871. _vq_quantmap__44u6__p9_2,
  30872. 17,
  30873. 17
  30874. };
  30875. static static_codebook _44u6__p9_2 = {
  30876. 2, 289,
  30877. _vq_lengthlist__44u6__p9_2,
  30878. 1, -529530880, 1611661312, 5, 0,
  30879. _vq_quantlist__44u6__p9_2,
  30880. NULL,
  30881. &_vq_auxt__44u6__p9_2,
  30882. NULL,
  30883. 0
  30884. };
  30885. static long _huff_lengthlist__44u6__short[] = {
  30886. 5,11,15,14,17,14,17,15,17,17, 4, 6, 9, 9,14, 9,
  30887. 17,10,15,17, 6, 6, 5, 7, 7, 9,11,10,15,17, 6, 8,
  30888. 8,10, 9,11,14,13,16,17, 7, 6, 5, 7, 5, 7, 5, 8,
  30889. 15,17, 9, 8, 8, 9, 8,10,10,11,14,17,10, 8, 7, 9,
  30890. 4, 7, 3, 5,11,17,10,10,10,10, 6, 9, 4, 5,11,17,
  30891. 16,16,13,15, 5,10, 4, 3, 9,16,17,17,14,17, 7,11,
  30892. 6, 6,11,17,
  30893. };
  30894. static static_codebook _huff_book__44u6__short = {
  30895. 2, 100,
  30896. _huff_lengthlist__44u6__short,
  30897. 0, 0, 0, 0, 0,
  30898. NULL,
  30899. NULL,
  30900. NULL,
  30901. NULL,
  30902. 0
  30903. };
  30904. static long _huff_lengthlist__44u7__long[] = {
  30905. 3, 9,15,13,16,13,16,12,12,12, 5, 5, 7, 8, 8,10,
  30906. 11,10,13,13,10, 5, 5, 6, 6, 9, 9,10,14,14, 9, 6,
  30907. 6, 7, 6, 8, 9,10,13,12,13, 7, 5, 6, 4, 6, 6, 8,
  30908. 12,13,11, 8, 7, 8, 6, 7, 7, 7,11,13,15,10, 8, 8,
  30909. 5, 6, 4, 5, 9,13, 9, 9, 8, 9, 7, 7, 4, 4, 6,11,
  30910. 11,11,12,12,10,10, 8, 5, 5, 9,10,12,13,15,13,13,
  30911. 12, 7, 6, 8,
  30912. };
  30913. static static_codebook _huff_book__44u7__long = {
  30914. 2, 100,
  30915. _huff_lengthlist__44u7__long,
  30916. 0, 0, 0, 0, 0,
  30917. NULL,
  30918. NULL,
  30919. NULL,
  30920. NULL,
  30921. 0
  30922. };
  30923. static long _vq_quantlist__44u7__p1_0[] = {
  30924. 1,
  30925. 0,
  30926. 2,
  30927. };
  30928. static long _vq_lengthlist__44u7__p1_0[] = {
  30929. 1, 4, 4, 5, 7, 7, 4, 7, 7, 5, 8, 8, 8,10,10, 7,
  30930. 10,10, 5, 8, 8, 7,10, 9, 8,10,10, 5, 8, 8, 8,11,
  30931. 10, 8,10,10, 8,11,10,10,12,13,11,13,13, 7,10,10,
  30932. 10,13,11,11,13,13, 5, 8, 8, 8,11,10, 8,10,10, 7,
  30933. 10,10,11,13,13,10,11,13, 8,11,11,10,13,13,10,13,
  30934. 12,
  30935. };
  30936. static float _vq_quantthresh__44u7__p1_0[] = {
  30937. -0.5, 0.5,
  30938. };
  30939. static long _vq_quantmap__44u7__p1_0[] = {
  30940. 1, 0, 2,
  30941. };
  30942. static encode_aux_threshmatch _vq_auxt__44u7__p1_0 = {
  30943. _vq_quantthresh__44u7__p1_0,
  30944. _vq_quantmap__44u7__p1_0,
  30945. 3,
  30946. 3
  30947. };
  30948. static static_codebook _44u7__p1_0 = {
  30949. 4, 81,
  30950. _vq_lengthlist__44u7__p1_0,
  30951. 1, -535822336, 1611661312, 2, 0,
  30952. _vq_quantlist__44u7__p1_0,
  30953. NULL,
  30954. &_vq_auxt__44u7__p1_0,
  30955. NULL,
  30956. 0
  30957. };
  30958. static long _vq_quantlist__44u7__p2_0[] = {
  30959. 1,
  30960. 0,
  30961. 2,
  30962. };
  30963. static long _vq_lengthlist__44u7__p2_0[] = {
  30964. 3, 5, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 7, 8, 6,
  30965. 7, 7, 5, 6, 6, 6, 7, 7, 6, 8, 8, 5, 6, 6, 6, 8,
  30966. 7, 6, 7, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 7, 7,
  30967. 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 7, 8, 6,
  30968. 7, 7, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
  30969. 9,
  30970. };
  30971. static float _vq_quantthresh__44u7__p2_0[] = {
  30972. -0.5, 0.5,
  30973. };
  30974. static long _vq_quantmap__44u7__p2_0[] = {
  30975. 1, 0, 2,
  30976. };
  30977. static encode_aux_threshmatch _vq_auxt__44u7__p2_0 = {
  30978. _vq_quantthresh__44u7__p2_0,
  30979. _vq_quantmap__44u7__p2_0,
  30980. 3,
  30981. 3
  30982. };
  30983. static static_codebook _44u7__p2_0 = {
  30984. 4, 81,
  30985. _vq_lengthlist__44u7__p2_0,
  30986. 1, -535822336, 1611661312, 2, 0,
  30987. _vq_quantlist__44u7__p2_0,
  30988. NULL,
  30989. &_vq_auxt__44u7__p2_0,
  30990. NULL,
  30991. 0
  30992. };
  30993. static long _vq_quantlist__44u7__p3_0[] = {
  30994. 2,
  30995. 1,
  30996. 3,
  30997. 0,
  30998. 4,
  30999. };
  31000. static long _vq_lengthlist__44u7__p3_0[] = {
  31001. 2, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
  31002. 9, 9,12,12, 8, 9, 9,12,12, 5, 7, 7,10, 9, 7, 9,
  31003. 9,11,11, 6, 8, 9,10,11,10,11,11,13,14, 9,10,11,
  31004. 13,13, 5, 7, 7, 9, 9, 6, 9, 8,11,10, 7, 9, 9,11,
  31005. 11, 9,11,10,13,13,10,11,11,14,13, 8,10,10,14,13,
  31006. 10,11,11,16,14, 9,11,11,14,14,13,15,14,17,16,12,
  31007. 13,14,16,15, 8, 9,10,13,14, 9,11,11,14,14,10,11,
  31008. 11,14,15,13,13,14,17,17,13,14,15,16,17, 5, 7, 7,
  31009. 10,10, 7, 9, 8,11,11, 7, 8, 9,11,11,10,11,11,14,
  31010. 14,10,11,11,14,14, 7, 9, 9,11,11, 9,11,11,13,13,
  31011. 9,11,11,13,13,11,12,13,15,17,11,12,13,16,18, 6,
  31012. 8, 8,11,11, 8,10,10,13,12, 9,11,11,12,13,11,13,
  31013. 11,16,14,11,13,12,16,16,10,11,11,15,15,11,13,13,
  31014. 16,16,11,13,13,18,16,14,14,15,17,16,14,15,17,19,
  31015. 0, 9,11,11,14,15,10,12,12,15,17,11,13,13,15,17,
  31016. 14,15,13, 0,15,15,17,16,18, 0, 5, 7, 7, 9,10, 7,
  31017. 9, 9,11,11, 7, 8, 9,11,11,10,11,11,14,14,10,11,
  31018. 11,14,14, 6, 8, 9,11,11, 9,11,11,14,13, 8,10,10,
  31019. 11,14,11,13,13,17,15,11,12,13,14,16, 7, 9, 9,11,
  31020. 11, 9,11,11,13,12, 9,11,11,12,13,11,13,12,15,15,
  31021. 11,13,12,16,15, 9,11,11,15,15,11,12,13,16,15,10,
  31022. 11,12,16,15,15,16,16, 0, 0,14,13,15,16,19, 9,11,
  31023. 12,15,15,11,13,13,17,16,11,13,12,15,17,14,16,16,
  31024. 18, 0,15,15,16,18,17, 8,10,10,13,14,10,11,11,15,
  31025. 16,10,11,11,15,16,14,15,15,17,19,14,14,15,19,19,
  31026. 9,11,11,16,15,11,13,13,17,17,11,13,13,17,17,15,
  31027. 17,16, 0, 0,15,17,17, 0,17, 9,11,11,15,15,11,13,
  31028. 12,16,16,11,13,13,18,17,15,16,15,19,19,14,16,18,
  31029. 17,19,13,15,15, 0,18,14,16,17,17,18,14,16,16,19,
  31030. 19,18,19,19, 0, 0,16,17,18,19, 0,12,14,14,16,18,
  31031. 13,16,14, 0,19,14,16,17,19, 0,16,19,16,19,17,17,
  31032. 18,18, 0, 0, 8,10,10,14,13, 9,11,11,15,14,10,11,
  31033. 12,14,16,13,15,14,19,19,14,16,16,18,17, 9,11,11,
  31034. 16,15,11,13,13, 0,17,10,12,13,15,16,15,18,16,19,
  31035. 19,14,15,16,18,18, 9,11,12,15,15,11,13,13,17,19,
  31036. 11,13,13,17,17,15,17,16,19,19,15,17,16, 0, 0,12,
  31037. 14,14, 0,19,14,16,15, 0,19,13,14,16,19, 0,16,18,
  31038. 18, 0, 0,16,16,17,17, 0,13,14,14,17, 0,14,17,16,
  31039. 0,19,14,16,16,19,18,17,19,17, 0, 0,18,18,17, 0,
  31040. 0,
  31041. };
  31042. static float _vq_quantthresh__44u7__p3_0[] = {
  31043. -1.5, -0.5, 0.5, 1.5,
  31044. };
  31045. static long _vq_quantmap__44u7__p3_0[] = {
  31046. 3, 1, 0, 2, 4,
  31047. };
  31048. static encode_aux_threshmatch _vq_auxt__44u7__p3_0 = {
  31049. _vq_quantthresh__44u7__p3_0,
  31050. _vq_quantmap__44u7__p3_0,
  31051. 5,
  31052. 5
  31053. };
  31054. static static_codebook _44u7__p3_0 = {
  31055. 4, 625,
  31056. _vq_lengthlist__44u7__p3_0,
  31057. 1, -533725184, 1611661312, 3, 0,
  31058. _vq_quantlist__44u7__p3_0,
  31059. NULL,
  31060. &_vq_auxt__44u7__p3_0,
  31061. NULL,
  31062. 0
  31063. };
  31064. static long _vq_quantlist__44u7__p4_0[] = {
  31065. 2,
  31066. 1,
  31067. 3,
  31068. 0,
  31069. 4,
  31070. };
  31071. static long _vq_lengthlist__44u7__p4_0[] = {
  31072. 5, 6, 6, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
  31073. 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
  31074. 7,10,10, 6, 7, 8, 9,10, 9,10,10,11,12, 9, 9,10,
  31075. 11,12, 6, 7, 7, 9, 9, 6, 7, 7,10, 9, 7, 7, 8,10,
  31076. 10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,11,11,
  31077. 9,10,10,12,12, 9,10,10,11,12,11,12,12,13,13,11,
  31078. 11,12,12,13, 8, 9, 9,11,11, 9,10,10,12,11, 9,10,
  31079. 10,12,12,11,12,11,13,12,11,12,12,13,14, 6, 7, 7,
  31080. 9, 9, 7, 8, 7,10, 9, 7, 7, 8, 9,10, 9,10,10,12,
  31081. 11, 9,10,10,11,12, 7, 8, 8,10,10, 8, 8, 8,10,10,
  31082. 8, 8, 8,10,10,10,10,11,12,12,10,10,11,12,12, 6,
  31083. 7, 7,10,10, 7, 8, 8,10,10, 8, 8, 8,10,11, 9,10,
  31084. 10,12,11,10,10,11,12,12, 9,10,10,12,12,10,10,10,
  31085. 12,12,10,11,10,12,12,12,12,12,13,14,12,12,12,13,
  31086. 14, 9,10,10,11,12, 9,10,10,12,12,10,10,11,12,12,
  31087. 11,12,11,14,12,12,12,12,14,14, 6, 7, 7, 9, 9, 7,
  31088. 8, 7,10, 9, 7, 7, 8, 9,10, 9,10,10,12,11, 9,10,
  31089. 10,11,12, 6, 7, 7,10,10, 8, 8, 8,11,10, 7, 8, 8,
  31090. 10,10,10,10,10,12,12,10,10,10,11,12, 7, 8, 8,10,
  31091. 10, 8, 8, 8,10,10, 8, 8, 8,10,10,10,11,10,12,12,
  31092. 10,11,10,12,12, 9,10,10,12,12,10,11,10,13,12, 9,
  31093. 10,10,12,12,12,12,12,14,14,11,11,12,12,14, 9,10,
  31094. 10,12,12,10,10,10,12,12,10,11,10,12,12,12,12,12,
  31095. 14,14,12,12,12,14,13, 8, 9, 9,11,11, 9,10,10,12,
  31096. 12, 9,10,10,12,12,11,12,12,14,13,11,12,12,13,13,
  31097. 9,10,10,12,12,10,10,10,12,12,10,11,11,12,12,12,
  31098. 12,13,14,14,12,12,12,14,14, 9,10, 9,12,12, 9,10,
  31099. 10,12,12,10,10,11,12,12,12,12,11,14,13,12,12,12,
  31100. 13,14,11,12,12,13,13,12,12,12,14,14,12,13,12,14,
  31101. 14,13,13,14,13,15,14,14,14,15,15,11,11,11,13,13,
  31102. 11,12,11,14,13,12,12,12,14,14,12,13,12,15,12,13,
  31103. 14,14,15,15, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
  31104. 10,12,12,11,12,12,13,13,11,12,12,13,14, 9,10,10,
  31105. 12,11,10,10,10,12,12, 9,10,10,12,12,12,13,12,14,
  31106. 13,11,12,12,13,14, 9,10,10,12,12,10,10,10,12,12,
  31107. 10,11,11,12,12,12,12,12,14,14,12,13,12,14,13,11,
  31108. 11,11,13,13,12,12,12,14,13,11,11,12,13,14,13,14,
  31109. 14,15,15,13,12,13,12,15,11,12,12,13,14,12,12,12,
  31110. 14,14,11,12,12,14,14,13,14,14,15,15,13,14,13,15,
  31111. 13,
  31112. };
  31113. static float _vq_quantthresh__44u7__p4_0[] = {
  31114. -1.5, -0.5, 0.5, 1.5,
  31115. };
  31116. static long _vq_quantmap__44u7__p4_0[] = {
  31117. 3, 1, 0, 2, 4,
  31118. };
  31119. static encode_aux_threshmatch _vq_auxt__44u7__p4_0 = {
  31120. _vq_quantthresh__44u7__p4_0,
  31121. _vq_quantmap__44u7__p4_0,
  31122. 5,
  31123. 5
  31124. };
  31125. static static_codebook _44u7__p4_0 = {
  31126. 4, 625,
  31127. _vq_lengthlist__44u7__p4_0,
  31128. 1, -533725184, 1611661312, 3, 0,
  31129. _vq_quantlist__44u7__p4_0,
  31130. NULL,
  31131. &_vq_auxt__44u7__p4_0,
  31132. NULL,
  31133. 0
  31134. };
  31135. static long _vq_quantlist__44u7__p5_0[] = {
  31136. 4,
  31137. 3,
  31138. 5,
  31139. 2,
  31140. 6,
  31141. 1,
  31142. 7,
  31143. 0,
  31144. 8,
  31145. };
  31146. static long _vq_lengthlist__44u7__p5_0[] = {
  31147. 2, 3, 3, 6, 6, 8, 8,10,10, 3, 5, 5, 8, 7, 8, 8,
  31148. 11,11, 4, 5, 5, 7, 8, 8, 8,11,11, 6, 8, 7, 9, 9,
  31149. 10, 9,12,12, 6, 7, 8, 9,10, 9,10,12,12, 8, 8, 8,
  31150. 10, 9,12,11,13,13, 8, 8, 8, 9,10,11,12,13,13,10,
  31151. 11,11,12,11,13,13,14,14,10,11,11,12,12,13,13,14,
  31152. 14,
  31153. };
  31154. static float _vq_quantthresh__44u7__p5_0[] = {
  31155. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  31156. };
  31157. static long _vq_quantmap__44u7__p5_0[] = {
  31158. 7, 5, 3, 1, 0, 2, 4, 6,
  31159. 8,
  31160. };
  31161. static encode_aux_threshmatch _vq_auxt__44u7__p5_0 = {
  31162. _vq_quantthresh__44u7__p5_0,
  31163. _vq_quantmap__44u7__p5_0,
  31164. 9,
  31165. 9
  31166. };
  31167. static static_codebook _44u7__p5_0 = {
  31168. 2, 81,
  31169. _vq_lengthlist__44u7__p5_0,
  31170. 1, -531628032, 1611661312, 4, 0,
  31171. _vq_quantlist__44u7__p5_0,
  31172. NULL,
  31173. &_vq_auxt__44u7__p5_0,
  31174. NULL,
  31175. 0
  31176. };
  31177. static long _vq_quantlist__44u7__p6_0[] = {
  31178. 4,
  31179. 3,
  31180. 5,
  31181. 2,
  31182. 6,
  31183. 1,
  31184. 7,
  31185. 0,
  31186. 8,
  31187. };
  31188. static long _vq_lengthlist__44u7__p6_0[] = {
  31189. 4, 4, 4, 5, 5, 7, 7, 9, 9, 4, 4, 4, 6, 6, 7, 7,
  31190. 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
  31191. 8, 8, 9, 9, 5, 6, 6, 6, 7, 8, 8, 9, 9, 7, 7, 7,
  31192. 8, 8, 9, 9,10,10, 7, 7, 7, 8, 8, 9, 9,10,10, 9,
  31193. 9, 9,10, 9,10,10,11,11, 9, 9, 9, 9,10,10,10,11,
  31194. 11,
  31195. };
  31196. static float _vq_quantthresh__44u7__p6_0[] = {
  31197. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  31198. };
  31199. static long _vq_quantmap__44u7__p6_0[] = {
  31200. 7, 5, 3, 1, 0, 2, 4, 6,
  31201. 8,
  31202. };
  31203. static encode_aux_threshmatch _vq_auxt__44u7__p6_0 = {
  31204. _vq_quantthresh__44u7__p6_0,
  31205. _vq_quantmap__44u7__p6_0,
  31206. 9,
  31207. 9
  31208. };
  31209. static static_codebook _44u7__p6_0 = {
  31210. 2, 81,
  31211. _vq_lengthlist__44u7__p6_0,
  31212. 1, -531628032, 1611661312, 4, 0,
  31213. _vq_quantlist__44u7__p6_0,
  31214. NULL,
  31215. &_vq_auxt__44u7__p6_0,
  31216. NULL,
  31217. 0
  31218. };
  31219. static long _vq_quantlist__44u7__p7_0[] = {
  31220. 1,
  31221. 0,
  31222. 2,
  31223. };
  31224. static long _vq_lengthlist__44u7__p7_0[] = {
  31225. 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 8,10,10, 8,
  31226. 10,10, 5, 8, 9, 8,10,10, 8,10,10, 4, 9, 9, 9,11,
  31227. 12, 8,12,11, 8,12,11,11,12,13,10,13,13, 7,12,11,
  31228. 10,13,12,10,13,13, 4, 9, 9, 8,11,12, 9,11,12, 7,
  31229. 11,12,10,13,13,10,12,13, 8,11,12,10,13,13,10,13,
  31230. 12,
  31231. };
  31232. static float _vq_quantthresh__44u7__p7_0[] = {
  31233. -5.5, 5.5,
  31234. };
  31235. static long _vq_quantmap__44u7__p7_0[] = {
  31236. 1, 0, 2,
  31237. };
  31238. static encode_aux_threshmatch _vq_auxt__44u7__p7_0 = {
  31239. _vq_quantthresh__44u7__p7_0,
  31240. _vq_quantmap__44u7__p7_0,
  31241. 3,
  31242. 3
  31243. };
  31244. static static_codebook _44u7__p7_0 = {
  31245. 4, 81,
  31246. _vq_lengthlist__44u7__p7_0,
  31247. 1, -529137664, 1618345984, 2, 0,
  31248. _vq_quantlist__44u7__p7_0,
  31249. NULL,
  31250. &_vq_auxt__44u7__p7_0,
  31251. NULL,
  31252. 0
  31253. };
  31254. static long _vq_quantlist__44u7__p7_1[] = {
  31255. 5,
  31256. 4,
  31257. 6,
  31258. 3,
  31259. 7,
  31260. 2,
  31261. 8,
  31262. 1,
  31263. 9,
  31264. 0,
  31265. 10,
  31266. };
  31267. static long _vq_lengthlist__44u7__p7_1[] = {
  31268. 3, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8, 5, 5, 5, 6, 6,
  31269. 7, 7, 8, 8, 8, 8, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8,
  31270. 8, 6, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 6, 6, 6, 7,
  31271. 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 8, 7, 8, 8, 9, 9,
  31272. 9, 9, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
  31273. 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
  31274. 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8,
  31275. 8, 8, 8, 9, 9, 9, 9, 9, 9,
  31276. };
  31277. static float _vq_quantthresh__44u7__p7_1[] = {
  31278. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  31279. 3.5, 4.5,
  31280. };
  31281. static long _vq_quantmap__44u7__p7_1[] = {
  31282. 9, 7, 5, 3, 1, 0, 2, 4,
  31283. 6, 8, 10,
  31284. };
  31285. static encode_aux_threshmatch _vq_auxt__44u7__p7_1 = {
  31286. _vq_quantthresh__44u7__p7_1,
  31287. _vq_quantmap__44u7__p7_1,
  31288. 11,
  31289. 11
  31290. };
  31291. static static_codebook _44u7__p7_1 = {
  31292. 2, 121,
  31293. _vq_lengthlist__44u7__p7_1,
  31294. 1, -531365888, 1611661312, 4, 0,
  31295. _vq_quantlist__44u7__p7_1,
  31296. NULL,
  31297. &_vq_auxt__44u7__p7_1,
  31298. NULL,
  31299. 0
  31300. };
  31301. static long _vq_quantlist__44u7__p8_0[] = {
  31302. 5,
  31303. 4,
  31304. 6,
  31305. 3,
  31306. 7,
  31307. 2,
  31308. 8,
  31309. 1,
  31310. 9,
  31311. 0,
  31312. 10,
  31313. };
  31314. static long _vq_lengthlist__44u7__p8_0[] = {
  31315. 1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7,
  31316. 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11,
  31317. 11, 6, 8, 8, 9, 9,10,10,11,11,12,12, 6, 8, 8, 9,
  31318. 9,10,10,11,11,12,12, 8, 9, 9,10,10,11,11,12,12,
  31319. 14,13, 8, 9, 9,10,10,11,11,12,12,13,13,10,10,10,
  31320. 11,11,12,12,13,13,14,14,10,10,10,11,11,12,13,13,
  31321. 13,14,14,11,12,11,13,12,13,14,14,14,15,15,11,11,
  31322. 12,13,13,13,13,14,14,15,15,
  31323. };
  31324. static float _vq_quantthresh__44u7__p8_0[] = {
  31325. -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5,
  31326. 38.5, 49.5,
  31327. };
  31328. static long _vq_quantmap__44u7__p8_0[] = {
  31329. 9, 7, 5, 3, 1, 0, 2, 4,
  31330. 6, 8, 10,
  31331. };
  31332. static encode_aux_threshmatch _vq_auxt__44u7__p8_0 = {
  31333. _vq_quantthresh__44u7__p8_0,
  31334. _vq_quantmap__44u7__p8_0,
  31335. 11,
  31336. 11
  31337. };
  31338. static static_codebook _44u7__p8_0 = {
  31339. 2, 121,
  31340. _vq_lengthlist__44u7__p8_0,
  31341. 1, -524582912, 1618345984, 4, 0,
  31342. _vq_quantlist__44u7__p8_0,
  31343. NULL,
  31344. &_vq_auxt__44u7__p8_0,
  31345. NULL,
  31346. 0
  31347. };
  31348. static long _vq_quantlist__44u7__p8_1[] = {
  31349. 5,
  31350. 4,
  31351. 6,
  31352. 3,
  31353. 7,
  31354. 2,
  31355. 8,
  31356. 1,
  31357. 9,
  31358. 0,
  31359. 10,
  31360. };
  31361. static long _vq_lengthlist__44u7__p8_1[] = {
  31362. 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 6,
  31363. 7, 7, 7, 7, 8, 8, 5, 6, 6, 6, 7, 7, 7, 7, 7, 8,
  31364. 8, 6, 7, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 7, 7,
  31365. 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
  31366. 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7,
  31367. 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8,
  31368. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  31369. 8, 8, 8, 8, 8, 8, 8, 8, 8,
  31370. };
  31371. static float _vq_quantthresh__44u7__p8_1[] = {
  31372. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  31373. 3.5, 4.5,
  31374. };
  31375. static long _vq_quantmap__44u7__p8_1[] = {
  31376. 9, 7, 5, 3, 1, 0, 2, 4,
  31377. 6, 8, 10,
  31378. };
  31379. static encode_aux_threshmatch _vq_auxt__44u7__p8_1 = {
  31380. _vq_quantthresh__44u7__p8_1,
  31381. _vq_quantmap__44u7__p8_1,
  31382. 11,
  31383. 11
  31384. };
  31385. static static_codebook _44u7__p8_1 = {
  31386. 2, 121,
  31387. _vq_lengthlist__44u7__p8_1,
  31388. 1, -531365888, 1611661312, 4, 0,
  31389. _vq_quantlist__44u7__p8_1,
  31390. NULL,
  31391. &_vq_auxt__44u7__p8_1,
  31392. NULL,
  31393. 0
  31394. };
  31395. static long _vq_quantlist__44u7__p9_0[] = {
  31396. 5,
  31397. 4,
  31398. 6,
  31399. 3,
  31400. 7,
  31401. 2,
  31402. 8,
  31403. 1,
  31404. 9,
  31405. 0,
  31406. 10,
  31407. };
  31408. static long _vq_lengthlist__44u7__p9_0[] = {
  31409. 1, 4, 4, 9, 9, 9, 9, 9, 9, 9, 9, 5, 9, 9, 9, 9,
  31410. 9, 9, 9, 9, 9, 9, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  31411. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  31412. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  31413. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  31414. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8,
  31415. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  31416. 8, 8, 8, 8, 8, 8, 8, 8, 8,
  31417. };
  31418. static float _vq_quantthresh__44u7__p9_0[] = {
  31419. -2866.5, -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 1592.5,
  31420. 2229.5, 2866.5,
  31421. };
  31422. static long _vq_quantmap__44u7__p9_0[] = {
  31423. 9, 7, 5, 3, 1, 0, 2, 4,
  31424. 6, 8, 10,
  31425. };
  31426. static encode_aux_threshmatch _vq_auxt__44u7__p9_0 = {
  31427. _vq_quantthresh__44u7__p9_0,
  31428. _vq_quantmap__44u7__p9_0,
  31429. 11,
  31430. 11
  31431. };
  31432. static static_codebook _44u7__p9_0 = {
  31433. 2, 121,
  31434. _vq_lengthlist__44u7__p9_0,
  31435. 1, -512171520, 1630791680, 4, 0,
  31436. _vq_quantlist__44u7__p9_0,
  31437. NULL,
  31438. &_vq_auxt__44u7__p9_0,
  31439. NULL,
  31440. 0
  31441. };
  31442. static long _vq_quantlist__44u7__p9_1[] = {
  31443. 6,
  31444. 5,
  31445. 7,
  31446. 4,
  31447. 8,
  31448. 3,
  31449. 9,
  31450. 2,
  31451. 10,
  31452. 1,
  31453. 11,
  31454. 0,
  31455. 12,
  31456. };
  31457. static long _vq_lengthlist__44u7__p9_1[] = {
  31458. 1, 4, 4, 5, 5, 7, 7,10, 9,11,11,12,12, 4, 7, 6,
  31459. 8, 8, 9, 9,11,10,13,12,13,13, 4, 6, 7, 8, 8, 9,
  31460. 9,10,11,13,13,12,13, 5, 8, 8,10, 9,12,11,12,12,
  31461. 13,13,15,14, 6, 8, 8,10,10,11,11,13,12,13,14,14,
  31462. 15, 8,10,10,12,11,13,13,14,15,15,16,15,16, 8, 9,
  31463. 10,12,12,13,13,16,15,15,15,15,15,10,11,11,14,13,
  31464. 14,14,16,16,15,16,16,16,10,12,12,12,14,14,14,15,
  31465. 16,15,16,15,16,11,12,12,14,14,16,16,15,16,16,16,
  31466. 16,16,12,12,13,13,15,15,14,15,16,16,16,16,16,12,
  31467. 14,14,15,14,16,16,16,16,16,16,16,16,13,14,13,14,
  31468. 15,16,15,16,16,16,16,16,16,
  31469. };
  31470. static float _vq_quantthresh__44u7__p9_1[] = {
  31471. -269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5,
  31472. 122.5, 171.5, 220.5, 269.5,
  31473. };
  31474. static long _vq_quantmap__44u7__p9_1[] = {
  31475. 11, 9, 7, 5, 3, 1, 0, 2,
  31476. 4, 6, 8, 10, 12,
  31477. };
  31478. static encode_aux_threshmatch _vq_auxt__44u7__p9_1 = {
  31479. _vq_quantthresh__44u7__p9_1,
  31480. _vq_quantmap__44u7__p9_1,
  31481. 13,
  31482. 13
  31483. };
  31484. static static_codebook _44u7__p9_1 = {
  31485. 2, 169,
  31486. _vq_lengthlist__44u7__p9_1,
  31487. 1, -518889472, 1622704128, 4, 0,
  31488. _vq_quantlist__44u7__p9_1,
  31489. NULL,
  31490. &_vq_auxt__44u7__p9_1,
  31491. NULL,
  31492. 0
  31493. };
  31494. static long _vq_quantlist__44u7__p9_2[] = {
  31495. 24,
  31496. 23,
  31497. 25,
  31498. 22,
  31499. 26,
  31500. 21,
  31501. 27,
  31502. 20,
  31503. 28,
  31504. 19,
  31505. 29,
  31506. 18,
  31507. 30,
  31508. 17,
  31509. 31,
  31510. 16,
  31511. 32,
  31512. 15,
  31513. 33,
  31514. 14,
  31515. 34,
  31516. 13,
  31517. 35,
  31518. 12,
  31519. 36,
  31520. 11,
  31521. 37,
  31522. 10,
  31523. 38,
  31524. 9,
  31525. 39,
  31526. 8,
  31527. 40,
  31528. 7,
  31529. 41,
  31530. 6,
  31531. 42,
  31532. 5,
  31533. 43,
  31534. 4,
  31535. 44,
  31536. 3,
  31537. 45,
  31538. 2,
  31539. 46,
  31540. 1,
  31541. 47,
  31542. 0,
  31543. 48,
  31544. };
  31545. static long _vq_lengthlist__44u7__p9_2[] = {
  31546. 2, 4, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
  31547. 6, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8,
  31548. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  31549. 8,
  31550. };
  31551. static float _vq_quantthresh__44u7__p9_2[] = {
  31552. -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5,
  31553. -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5,
  31554. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  31555. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  31556. 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5,
  31557. 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5,
  31558. };
  31559. static long _vq_quantmap__44u7__p9_2[] = {
  31560. 47, 45, 43, 41, 39, 37, 35, 33,
  31561. 31, 29, 27, 25, 23, 21, 19, 17,
  31562. 15, 13, 11, 9, 7, 5, 3, 1,
  31563. 0, 2, 4, 6, 8, 10, 12, 14,
  31564. 16, 18, 20, 22, 24, 26, 28, 30,
  31565. 32, 34, 36, 38, 40, 42, 44, 46,
  31566. 48,
  31567. };
  31568. static encode_aux_threshmatch _vq_auxt__44u7__p9_2 = {
  31569. _vq_quantthresh__44u7__p9_2,
  31570. _vq_quantmap__44u7__p9_2,
  31571. 49,
  31572. 49
  31573. };
  31574. static static_codebook _44u7__p9_2 = {
  31575. 1, 49,
  31576. _vq_lengthlist__44u7__p9_2,
  31577. 1, -526909440, 1611661312, 6, 0,
  31578. _vq_quantlist__44u7__p9_2,
  31579. NULL,
  31580. &_vq_auxt__44u7__p9_2,
  31581. NULL,
  31582. 0
  31583. };
  31584. static long _huff_lengthlist__44u7__short[] = {
  31585. 6,14,18,18,18,18,17,17,17,17, 4, 8,11,12,13,11,
  31586. 13,11,16,17, 6, 7, 8, 9, 8, 9,12, 9,14,17, 6, 9,
  31587. 11,12,12,12,15,12,17,17, 6, 6, 6, 8, 5, 7, 7, 8,
  31588. 14,17, 7, 9, 9,11, 8,10,10,11,14,16, 8, 7, 7, 8,
  31589. 5, 7, 4, 5,11,17, 9, 8,10, 9, 7, 9, 4, 2, 9,16,
  31590. 15,14,16,14, 8,14, 4, 3, 7,16,17,17,16,17, 9,15,
  31591. 6, 5,10,17,
  31592. };
  31593. static static_codebook _huff_book__44u7__short = {
  31594. 2, 100,
  31595. _huff_lengthlist__44u7__short,
  31596. 0, 0, 0, 0, 0,
  31597. NULL,
  31598. NULL,
  31599. NULL,
  31600. NULL,
  31601. 0
  31602. };
  31603. static long _huff_lengthlist__44u8__long[] = {
  31604. 3, 9,13,13,14,13,13,13,13,14, 5, 4, 6, 8,10,12,
  31605. 13,15,13,14, 9, 5, 3, 5, 8,10,12,14,13,13,11, 7,
  31606. 4, 3, 5, 7,10,11,12,14,11, 9, 7, 4, 4, 6, 8,10,
  31607. 13,14,10,11, 9, 7, 6, 6, 7, 9,12,15,12,11,11, 8,
  31608. 7, 6, 6, 7,11,14,12,12,12,10, 8, 7, 6, 7, 9,13,
  31609. 11,12,13,12,11, 8, 8, 7, 9,12,11,14,16,16,15,11,
  31610. 10, 9, 9,11,
  31611. };
  31612. static static_codebook _huff_book__44u8__long = {
  31613. 2, 100,
  31614. _huff_lengthlist__44u8__long,
  31615. 0, 0, 0, 0, 0,
  31616. NULL,
  31617. NULL,
  31618. NULL,
  31619. NULL,
  31620. 0
  31621. };
  31622. static long _huff_lengthlist__44u8__short[] = {
  31623. 7,15,18,18,18,18,18,18,18,18, 4, 6, 9,10,10,11,
  31624. 16,15,18,18, 5, 6, 6, 6, 8,10,15,15,18,18, 5, 6,
  31625. 5, 4, 6, 9,12,15,17,18, 7, 6, 6, 5, 6, 5, 8,11,
  31626. 15,18,10, 9, 9, 7, 4, 3, 6,10,16,17,13,12,12, 6,
  31627. 6, 4, 5, 9,14,16,16,17,13, 5, 5, 4, 5, 8,13,16,
  31628. 17,17,14, 7, 7, 6, 7,10,15,17,17,17,17,11,12,12,
  31629. 12,14,17,17,
  31630. };
  31631. static static_codebook _huff_book__44u8__short = {
  31632. 2, 100,
  31633. _huff_lengthlist__44u8__short,
  31634. 0, 0, 0, 0, 0,
  31635. NULL,
  31636. NULL,
  31637. NULL,
  31638. NULL,
  31639. 0
  31640. };
  31641. static long _vq_quantlist__44u8_p1_0[] = {
  31642. 1,
  31643. 0,
  31644. 2,
  31645. };
  31646. static long _vq_lengthlist__44u8_p1_0[] = {
  31647. 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 8, 9, 9, 7,
  31648. 8, 9, 5, 7, 7, 7, 9, 8, 8, 9, 9, 5, 7, 7, 7, 9,
  31649. 9, 7, 9, 9, 8, 9, 9, 9,10,11, 9,10,10, 7, 9, 9,
  31650. 9,10, 9, 9,10,11, 5, 7, 7, 7, 9, 9, 8, 9, 9, 7,
  31651. 9, 9, 9,11,10, 9, 9,10, 8, 9, 9, 9,10,10, 9,11,
  31652. 10,
  31653. };
  31654. static float _vq_quantthresh__44u8_p1_0[] = {
  31655. -0.5, 0.5,
  31656. };
  31657. static long _vq_quantmap__44u8_p1_0[] = {
  31658. 1, 0, 2,
  31659. };
  31660. static encode_aux_threshmatch _vq_auxt__44u8_p1_0 = {
  31661. _vq_quantthresh__44u8_p1_0,
  31662. _vq_quantmap__44u8_p1_0,
  31663. 3,
  31664. 3
  31665. };
  31666. static static_codebook _44u8_p1_0 = {
  31667. 4, 81,
  31668. _vq_lengthlist__44u8_p1_0,
  31669. 1, -535822336, 1611661312, 2, 0,
  31670. _vq_quantlist__44u8_p1_0,
  31671. NULL,
  31672. &_vq_auxt__44u8_p1_0,
  31673. NULL,
  31674. 0
  31675. };
  31676. static long _vq_quantlist__44u8_p2_0[] = {
  31677. 2,
  31678. 1,
  31679. 3,
  31680. 0,
  31681. 4,
  31682. };
  31683. static long _vq_lengthlist__44u8_p2_0[] = {
  31684. 4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
  31685. 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
  31686. 8,10,10, 7, 7, 8, 9,10, 9,10,10,12,12, 9, 9,10,
  31687. 11,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 8,10,
  31688. 10, 9,10, 9,12,11, 9,10,10,12,12, 8, 9, 9,11,11,
  31689. 9,10,10,12,12, 9,10,10,12,12,11,12,12,13,13,11,
  31690. 11,12,13,13, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
  31691. 10,12,12,11,12,11,13,13,11,12,12,14,13, 5, 7, 7,
  31692. 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,
  31693. 12, 9,10,10,11,12, 7, 8, 8,10,10, 8, 9, 9,11,11,
  31694. 8, 9, 9,10,11,10,11,11,12,12,10,10,11,12,13, 6,
  31695. 8, 8,10,10, 7, 8, 8,11,10, 8, 8, 9,10,11,10,11,
  31696. 10,12,11,10,11,11,12,12, 9,10,10,12,12,10,11,11,
  31697. 13,13,10,11,11,13,13,12,12,13,13,14,12,12,13,14,
  31698. 14, 9,10,10,12,12, 9,10,10,12,12,10,11,11,12,13,
  31699. 11,12,11,14,12,12,12,12,14,14, 5, 7, 7, 9, 9, 7,
  31700. 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,11, 9,10,
  31701. 10,12,12, 6, 8, 8,10,10, 8, 9, 8,11,10, 7, 8, 8,
  31702. 10,11,10,11,11,13,12,10,10,11,11,13, 7, 8, 8,10,
  31703. 10, 8, 9, 9,11,10, 8, 9, 9,11,11,10,11,10,13,12,
  31704. 10,11,11,12,12, 9,10,10,12,12,10,11,11,13,12, 9,
  31705. 10,10,12,12,12,13,13,14,14,11,11,12,12,14, 9,10,
  31706. 10,12,12,10,11,11,13,13,10,11,11,13,12,12,13,12,
  31707. 14,14,12,13,12,14,13, 8, 9, 9,11,11, 9,10,10,12,
  31708. 12, 9,10,10,12,12,11,12,12,14,13,11,12,12,13,14,
  31709. 9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,
  31710. 13,13,14,15,12,12,13,14,14, 9,10,10,12,12, 9,11,
  31711. 10,13,12,10,11,11,12,13,12,13,12,14,13,12,12,13,
  31712. 14,14,11,12,12,14,14,12,12,12,14,14,12,13,13,14,
  31713. 14,13,13,14,14,16,14,14,14,15,15,11,12,12,14,14,
  31714. 11,12,11,14,13,12,12,13,14,14,13,14,12,15,13,14,
  31715. 14,14,15,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
  31716. 10,12,12,11,12,12,14,13,11,12,12,13,14, 9,10,10,
  31717. 12,12,10,11,10,13,12, 9,10,11,12,13,12,13,12,14,
  31718. 14,12,12,13,13,14, 9,10,10,12,12,10,11,11,13,13,
  31719. 10,11,11,13,13,12,12,12,14,14,12,13,12,15,14,11,
  31720. 12,11,14,13,12,13,12,14,14,11,11,12,13,14,13,14,
  31721. 14,16,15,13,12,14,13,15,11,12,12,13,14,12,13,13,
  31722. 14,14,12,13,12,14,14,14,14,14,15,16,13,14,13,15,
  31723. 14,
  31724. };
  31725. static float _vq_quantthresh__44u8_p2_0[] = {
  31726. -1.5, -0.5, 0.5, 1.5,
  31727. };
  31728. static long _vq_quantmap__44u8_p2_0[] = {
  31729. 3, 1, 0, 2, 4,
  31730. };
  31731. static encode_aux_threshmatch _vq_auxt__44u8_p2_0 = {
  31732. _vq_quantthresh__44u8_p2_0,
  31733. _vq_quantmap__44u8_p2_0,
  31734. 5,
  31735. 5
  31736. };
  31737. static static_codebook _44u8_p2_0 = {
  31738. 4, 625,
  31739. _vq_lengthlist__44u8_p2_0,
  31740. 1, -533725184, 1611661312, 3, 0,
  31741. _vq_quantlist__44u8_p2_0,
  31742. NULL,
  31743. &_vq_auxt__44u8_p2_0,
  31744. NULL,
  31745. 0
  31746. };
  31747. static long _vq_quantlist__44u8_p3_0[] = {
  31748. 4,
  31749. 3,
  31750. 5,
  31751. 2,
  31752. 6,
  31753. 1,
  31754. 7,
  31755. 0,
  31756. 8,
  31757. };
  31758. static long _vq_lengthlist__44u8_p3_0[] = {
  31759. 3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
  31760. 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
  31761. 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8, 9,10, 7, 7, 7,
  31762. 8, 8, 9, 9,11,10, 7, 7, 7, 8, 8, 9, 9,10,11, 9,
  31763. 9, 9,10,10,11,10,12,12, 9, 9, 9,10,10,10,11,12,
  31764. 12,
  31765. };
  31766. static float _vq_quantthresh__44u8_p3_0[] = {
  31767. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  31768. };
  31769. static long _vq_quantmap__44u8_p3_0[] = {
  31770. 7, 5, 3, 1, 0, 2, 4, 6,
  31771. 8,
  31772. };
  31773. static encode_aux_threshmatch _vq_auxt__44u8_p3_0 = {
  31774. _vq_quantthresh__44u8_p3_0,
  31775. _vq_quantmap__44u8_p3_0,
  31776. 9,
  31777. 9
  31778. };
  31779. static static_codebook _44u8_p3_0 = {
  31780. 2, 81,
  31781. _vq_lengthlist__44u8_p3_0,
  31782. 1, -531628032, 1611661312, 4, 0,
  31783. _vq_quantlist__44u8_p3_0,
  31784. NULL,
  31785. &_vq_auxt__44u8_p3_0,
  31786. NULL,
  31787. 0
  31788. };
  31789. static long _vq_quantlist__44u8_p4_0[] = {
  31790. 8,
  31791. 7,
  31792. 9,
  31793. 6,
  31794. 10,
  31795. 5,
  31796. 11,
  31797. 4,
  31798. 12,
  31799. 3,
  31800. 13,
  31801. 2,
  31802. 14,
  31803. 1,
  31804. 15,
  31805. 0,
  31806. 16,
  31807. };
  31808. static long _vq_lengthlist__44u8_p4_0[] = {
  31809. 4, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,11,11,11,
  31810. 11, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,
  31811. 12,12, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
  31812. 11,11,12, 6, 6, 6, 7, 7, 8, 7, 9, 9, 9, 9,10,10,
  31813. 11,11,12,12, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 9,10,
  31814. 10,11,11,12,12, 7, 7, 7, 8, 7, 9, 8, 9, 9,10, 9,
  31815. 11,10,11,11,12,12, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9,
  31816. 10,10,10,11,11,12,12, 8, 8, 8, 9, 9, 9, 9,10,10,
  31817. 10,10,11,11,11,11,12,12, 8, 8, 8, 8, 9, 9, 9,10,
  31818. 10,10,10,11,11,11,12,12,12, 9, 9, 9, 9, 9,10, 9,
  31819. 10,10,11,10,11,11,12,12,12,12, 9, 9, 9, 9, 9, 9,
  31820. 10,10,10,11,11,11,11,12,12,12,13,10,10,10,10,10,
  31821. 11,10,11,11,11,11,12,12,12,12,12,13,10,10,10,10,
  31822. 10,10,11,11,11,11,11,12,12,12,12,13,12,11,11,11,
  31823. 11,11,11,11,12,12,12,12,12,12,12,13,13,13,11,11,
  31824. 11,11,11,11,11,12,12,12,12,12,12,13,12,13,13,11,
  31825. 12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,
  31826. 12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,
  31827. 13,
  31828. };
  31829. static float _vq_quantthresh__44u8_p4_0[] = {
  31830. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  31831. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  31832. };
  31833. static long _vq_quantmap__44u8_p4_0[] = {
  31834. 15, 13, 11, 9, 7, 5, 3, 1,
  31835. 0, 2, 4, 6, 8, 10, 12, 14,
  31836. 16,
  31837. };
  31838. static encode_aux_threshmatch _vq_auxt__44u8_p4_0 = {
  31839. _vq_quantthresh__44u8_p4_0,
  31840. _vq_quantmap__44u8_p4_0,
  31841. 17,
  31842. 17
  31843. };
  31844. static static_codebook _44u8_p4_0 = {
  31845. 2, 289,
  31846. _vq_lengthlist__44u8_p4_0,
  31847. 1, -529530880, 1611661312, 5, 0,
  31848. _vq_quantlist__44u8_p4_0,
  31849. NULL,
  31850. &_vq_auxt__44u8_p4_0,
  31851. NULL,
  31852. 0
  31853. };
  31854. static long _vq_quantlist__44u8_p5_0[] = {
  31855. 1,
  31856. 0,
  31857. 2,
  31858. };
  31859. static long _vq_lengthlist__44u8_p5_0[] = {
  31860. 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 8, 7, 7, 8, 9, 7,
  31861. 9, 9, 5, 7, 8, 7, 9, 9, 7, 9, 8, 5, 7, 7, 8, 9,
  31862. 9, 7, 9, 9, 7, 9, 9, 8, 9,11, 9,11,11, 7, 9, 9,
  31863. 9,11,10, 9,11,11, 5, 7, 8, 7, 9, 9, 8, 9, 9, 7,
  31864. 9, 9, 9,11,11, 9,10,11, 7, 9, 9, 9,11,11, 8,11,
  31865. 9,
  31866. };
  31867. static float _vq_quantthresh__44u8_p5_0[] = {
  31868. -5.5, 5.5,
  31869. };
  31870. static long _vq_quantmap__44u8_p5_0[] = {
  31871. 1, 0, 2,
  31872. };
  31873. static encode_aux_threshmatch _vq_auxt__44u8_p5_0 = {
  31874. _vq_quantthresh__44u8_p5_0,
  31875. _vq_quantmap__44u8_p5_0,
  31876. 3,
  31877. 3
  31878. };
  31879. static static_codebook _44u8_p5_0 = {
  31880. 4, 81,
  31881. _vq_lengthlist__44u8_p5_0,
  31882. 1, -529137664, 1618345984, 2, 0,
  31883. _vq_quantlist__44u8_p5_0,
  31884. NULL,
  31885. &_vq_auxt__44u8_p5_0,
  31886. NULL,
  31887. 0
  31888. };
  31889. static long _vq_quantlist__44u8_p5_1[] = {
  31890. 5,
  31891. 4,
  31892. 6,
  31893. 3,
  31894. 7,
  31895. 2,
  31896. 8,
  31897. 1,
  31898. 9,
  31899. 0,
  31900. 10,
  31901. };
  31902. static long _vq_lengthlist__44u8_p5_1[] = {
  31903. 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 8, 5, 6, 6, 6, 6,
  31904. 7, 7, 7, 7, 8, 8, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8,
  31905. 8, 6, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 6, 6, 6, 7,
  31906. 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
  31907. 8, 8, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
  31908. 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8,
  31909. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  31910. 8, 8, 8, 8, 8, 8, 8, 8, 8,
  31911. };
  31912. static float _vq_quantthresh__44u8_p5_1[] = {
  31913. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  31914. 3.5, 4.5,
  31915. };
  31916. static long _vq_quantmap__44u8_p5_1[] = {
  31917. 9, 7, 5, 3, 1, 0, 2, 4,
  31918. 6, 8, 10,
  31919. };
  31920. static encode_aux_threshmatch _vq_auxt__44u8_p5_1 = {
  31921. _vq_quantthresh__44u8_p5_1,
  31922. _vq_quantmap__44u8_p5_1,
  31923. 11,
  31924. 11
  31925. };
  31926. static static_codebook _44u8_p5_1 = {
  31927. 2, 121,
  31928. _vq_lengthlist__44u8_p5_1,
  31929. 1, -531365888, 1611661312, 4, 0,
  31930. _vq_quantlist__44u8_p5_1,
  31931. NULL,
  31932. &_vq_auxt__44u8_p5_1,
  31933. NULL,
  31934. 0
  31935. };
  31936. static long _vq_quantlist__44u8_p6_0[] = {
  31937. 6,
  31938. 5,
  31939. 7,
  31940. 4,
  31941. 8,
  31942. 3,
  31943. 9,
  31944. 2,
  31945. 10,
  31946. 1,
  31947. 11,
  31948. 0,
  31949. 12,
  31950. };
  31951. static long _vq_lengthlist__44u8_p6_0[] = {
  31952. 1, 4, 4, 7, 7, 8, 8, 8, 8, 9,10,10,10, 5, 6, 6,
  31953. 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 6, 6, 7, 7, 8,
  31954. 9, 9, 9,10,10,11,11, 7, 7, 7, 8, 8, 9, 9,10,10,
  31955. 11,11,11,11, 7, 7, 7, 8, 8, 9, 9,10,10,10,11,11,
  31956. 11, 8, 9, 9, 9, 9,10,10,10,10,11,11,12,12, 8, 9,
  31957. 9, 9, 9,10,10,10,11,11,11,12,12, 8, 9, 9,10,10,
  31958. 11,10,11,11,12,12,12,12, 9, 9, 9,10,10,11,11,11,
  31959. 11,12,12,12,12,10,10,10,11,11,11,11,12,12,12,12,
  31960. 13,13,10,10,10,11,11,11,11,12,12,12,12,13,13,11,
  31961. 11,11,12,12,12,12,12,12,13,13,13,13,11,11,11,12,
  31962. 12,12,12,12,12,13,13,13,13,
  31963. };
  31964. static float _vq_quantthresh__44u8_p6_0[] = {
  31965. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  31966. 12.5, 17.5, 22.5, 27.5,
  31967. };
  31968. static long _vq_quantmap__44u8_p6_0[] = {
  31969. 11, 9, 7, 5, 3, 1, 0, 2,
  31970. 4, 6, 8, 10, 12,
  31971. };
  31972. static encode_aux_threshmatch _vq_auxt__44u8_p6_0 = {
  31973. _vq_quantthresh__44u8_p6_0,
  31974. _vq_quantmap__44u8_p6_0,
  31975. 13,
  31976. 13
  31977. };
  31978. static static_codebook _44u8_p6_0 = {
  31979. 2, 169,
  31980. _vq_lengthlist__44u8_p6_0,
  31981. 1, -526516224, 1616117760, 4, 0,
  31982. _vq_quantlist__44u8_p6_0,
  31983. NULL,
  31984. &_vq_auxt__44u8_p6_0,
  31985. NULL,
  31986. 0
  31987. };
  31988. static long _vq_quantlist__44u8_p6_1[] = {
  31989. 2,
  31990. 1,
  31991. 3,
  31992. 0,
  31993. 4,
  31994. };
  31995. static long _vq_lengthlist__44u8_p6_1[] = {
  31996. 3, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
  31997. 5, 5, 5, 5, 5, 5, 5, 5, 5,
  31998. };
  31999. static float _vq_quantthresh__44u8_p6_1[] = {
  32000. -1.5, -0.5, 0.5, 1.5,
  32001. };
  32002. static long _vq_quantmap__44u8_p6_1[] = {
  32003. 3, 1, 0, 2, 4,
  32004. };
  32005. static encode_aux_threshmatch _vq_auxt__44u8_p6_1 = {
  32006. _vq_quantthresh__44u8_p6_1,
  32007. _vq_quantmap__44u8_p6_1,
  32008. 5,
  32009. 5
  32010. };
  32011. static static_codebook _44u8_p6_1 = {
  32012. 2, 25,
  32013. _vq_lengthlist__44u8_p6_1,
  32014. 1, -533725184, 1611661312, 3, 0,
  32015. _vq_quantlist__44u8_p6_1,
  32016. NULL,
  32017. &_vq_auxt__44u8_p6_1,
  32018. NULL,
  32019. 0
  32020. };
  32021. static long _vq_quantlist__44u8_p7_0[] = {
  32022. 6,
  32023. 5,
  32024. 7,
  32025. 4,
  32026. 8,
  32027. 3,
  32028. 9,
  32029. 2,
  32030. 10,
  32031. 1,
  32032. 11,
  32033. 0,
  32034. 12,
  32035. };
  32036. static long _vq_lengthlist__44u8_p7_0[] = {
  32037. 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 6, 6,
  32038. 8, 8, 9, 8, 9, 9,10,10,11,11, 4, 6, 6, 8, 8, 8,
  32039. 9, 9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,10,10,
  32040. 11,11,12,12, 7, 8, 8, 9, 9,10,10,10,10,11,11,12,
  32041. 12, 8, 9, 9,10,10,10,10,11,11,12,12,13,13, 8, 9,
  32042. 9,10,10,10,11,11,11,12,13,13,13, 9, 9, 9,10,10,
  32043. 11,11,12,12,13,13,14,14, 9, 9, 9,10,10,11,11,12,
  32044. 12,13,13,14,14,10,10,10,11,11,12,12,13,13,14,14,
  32045. 14,14,10,10,11,11,12,12,12,13,13,13,14,14,15,11,
  32046. 11,11,12,12,13,13,14,14,14,14,16,15,11,11,11,12,
  32047. 12,13,13,14,14,14,14,16,15,
  32048. };
  32049. static float _vq_quantthresh__44u8_p7_0[] = {
  32050. -60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5,
  32051. 27.5, 38.5, 49.5, 60.5,
  32052. };
  32053. static long _vq_quantmap__44u8_p7_0[] = {
  32054. 11, 9, 7, 5, 3, 1, 0, 2,
  32055. 4, 6, 8, 10, 12,
  32056. };
  32057. static encode_aux_threshmatch _vq_auxt__44u8_p7_0 = {
  32058. _vq_quantthresh__44u8_p7_0,
  32059. _vq_quantmap__44u8_p7_0,
  32060. 13,
  32061. 13
  32062. };
  32063. static static_codebook _44u8_p7_0 = {
  32064. 2, 169,
  32065. _vq_lengthlist__44u8_p7_0,
  32066. 1, -523206656, 1618345984, 4, 0,
  32067. _vq_quantlist__44u8_p7_0,
  32068. NULL,
  32069. &_vq_auxt__44u8_p7_0,
  32070. NULL,
  32071. 0
  32072. };
  32073. static long _vq_quantlist__44u8_p7_1[] = {
  32074. 5,
  32075. 4,
  32076. 6,
  32077. 3,
  32078. 7,
  32079. 2,
  32080. 8,
  32081. 1,
  32082. 9,
  32083. 0,
  32084. 10,
  32085. };
  32086. static long _vq_lengthlist__44u8_p7_1[] = {
  32087. 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7,
  32088. 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7,
  32089. 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 6, 7, 7, 7,
  32090. 7, 7, 7, 7, 7, 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 8,
  32091. 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 7, 7, 7,
  32092. 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8,
  32093. 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7,
  32094. 7, 8, 8, 8, 8, 8, 8, 8, 8,
  32095. };
  32096. static float _vq_quantthresh__44u8_p7_1[] = {
  32097. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  32098. 3.5, 4.5,
  32099. };
  32100. static long _vq_quantmap__44u8_p7_1[] = {
  32101. 9, 7, 5, 3, 1, 0, 2, 4,
  32102. 6, 8, 10,
  32103. };
  32104. static encode_aux_threshmatch _vq_auxt__44u8_p7_1 = {
  32105. _vq_quantthresh__44u8_p7_1,
  32106. _vq_quantmap__44u8_p7_1,
  32107. 11,
  32108. 11
  32109. };
  32110. static static_codebook _44u8_p7_1 = {
  32111. 2, 121,
  32112. _vq_lengthlist__44u8_p7_1,
  32113. 1, -531365888, 1611661312, 4, 0,
  32114. _vq_quantlist__44u8_p7_1,
  32115. NULL,
  32116. &_vq_auxt__44u8_p7_1,
  32117. NULL,
  32118. 0
  32119. };
  32120. static long _vq_quantlist__44u8_p8_0[] = {
  32121. 7,
  32122. 6,
  32123. 8,
  32124. 5,
  32125. 9,
  32126. 4,
  32127. 10,
  32128. 3,
  32129. 11,
  32130. 2,
  32131. 12,
  32132. 1,
  32133. 13,
  32134. 0,
  32135. 14,
  32136. };
  32137. static long _vq_lengthlist__44u8_p8_0[] = {
  32138. 1, 4, 4, 7, 7, 8, 8, 8, 7, 9, 8,10,10,11,11, 4,
  32139. 6, 6, 8, 8,10,10, 9, 9,10,10,11,10,12,12, 4, 6,
  32140. 6, 8, 8, 9,10, 9, 9,10,10,11,11,11,12, 7, 8, 8,
  32141. 10,10,11,11,11,10,11,11,13,12,13,12, 7, 8, 8,10,
  32142. 10,11,11,10,11,11,11,12,12,13,13, 8,10, 9,11,11,
  32143. 12,12,11,11,12,12,13,13,14,14, 8, 9, 9,11,11,12,
  32144. 12,11,11,12,12,14,13,13,13, 8, 9, 9,11,10,12,11,
  32145. 12,12,13,13,14,13,14,13, 8, 9, 9,11,11,11,12,12,
  32146. 12,13,13,13,14,14,14, 9,10,10,12,11,12,12,13,13,
  32147. 14,14,15,13,14,14, 9,10,10,11,12,12,12,13,13,14,
  32148. 14,15,14,14,14,10,11,11,12,12,13,13,14,13,14,14,
  32149. 15,14,15,15,10,11,11,12,12,13,13,13,14,14,14,14,
  32150. 15,16,15,11,12,12,13,12,14,14,14,13,15,14,16,15,
  32151. 16,15,11,12,12,13,13,13,14,14,15,15,15,15,16,15,
  32152. 15,
  32153. };
  32154. static float _vq_quantthresh__44u8_p8_0[] = {
  32155. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  32156. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  32157. };
  32158. static long _vq_quantmap__44u8_p8_0[] = {
  32159. 13, 11, 9, 7, 5, 3, 1, 0,
  32160. 2, 4, 6, 8, 10, 12, 14,
  32161. };
  32162. static encode_aux_threshmatch _vq_auxt__44u8_p8_0 = {
  32163. _vq_quantthresh__44u8_p8_0,
  32164. _vq_quantmap__44u8_p8_0,
  32165. 15,
  32166. 15
  32167. };
  32168. static static_codebook _44u8_p8_0 = {
  32169. 2, 225,
  32170. _vq_lengthlist__44u8_p8_0,
  32171. 1, -520986624, 1620377600, 4, 0,
  32172. _vq_quantlist__44u8_p8_0,
  32173. NULL,
  32174. &_vq_auxt__44u8_p8_0,
  32175. NULL,
  32176. 0
  32177. };
  32178. static long _vq_quantlist__44u8_p8_1[] = {
  32179. 10,
  32180. 9,
  32181. 11,
  32182. 8,
  32183. 12,
  32184. 7,
  32185. 13,
  32186. 6,
  32187. 14,
  32188. 5,
  32189. 15,
  32190. 4,
  32191. 16,
  32192. 3,
  32193. 17,
  32194. 2,
  32195. 18,
  32196. 1,
  32197. 19,
  32198. 0,
  32199. 20,
  32200. };
  32201. static long _vq_lengthlist__44u8_p8_1[] = {
  32202. 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
  32203. 9, 9, 9, 9, 9, 6, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9,
  32204. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 7, 6, 7, 7, 8,
  32205. 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7,
  32206. 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  32207. 9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9,
  32208. 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9,
  32209. 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9,10, 9,10, 8, 8,
  32210. 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  32211. 9, 9,10, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  32212. 10, 9,10,10, 9,10, 9,10, 8, 8, 8, 9, 9, 9, 9, 9,
  32213. 9, 9, 9, 9, 9, 9,10,10, 9,10,10, 9,10, 9, 9, 9,
  32214. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,
  32215. 10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
  32216. 10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  32217. 9, 9,10, 9,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
  32218. 9, 9, 9, 9, 9,10, 9, 9,10,10,10,10,10,10,10,10,
  32219. 10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
  32220. 10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
  32221. 10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,10,
  32222. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  32223. 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,
  32224. 10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
  32225. 10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
  32226. 10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9,
  32227. 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
  32228. 10,10,10,10, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,
  32229. 10,10,10,10,10,10,10,10,10,
  32230. };
  32231. static float _vq_quantthresh__44u8_p8_1[] = {
  32232. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  32233. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  32234. 6.5, 7.5, 8.5, 9.5,
  32235. };
  32236. static long _vq_quantmap__44u8_p8_1[] = {
  32237. 19, 17, 15, 13, 11, 9, 7, 5,
  32238. 3, 1, 0, 2, 4, 6, 8, 10,
  32239. 12, 14, 16, 18, 20,
  32240. };
  32241. static encode_aux_threshmatch _vq_auxt__44u8_p8_1 = {
  32242. _vq_quantthresh__44u8_p8_1,
  32243. _vq_quantmap__44u8_p8_1,
  32244. 21,
  32245. 21
  32246. };
  32247. static static_codebook _44u8_p8_1 = {
  32248. 2, 441,
  32249. _vq_lengthlist__44u8_p8_1,
  32250. 1, -529268736, 1611661312, 5, 0,
  32251. _vq_quantlist__44u8_p8_1,
  32252. NULL,
  32253. &_vq_auxt__44u8_p8_1,
  32254. NULL,
  32255. 0
  32256. };
  32257. static long _vq_quantlist__44u8_p9_0[] = {
  32258. 4,
  32259. 3,
  32260. 5,
  32261. 2,
  32262. 6,
  32263. 1,
  32264. 7,
  32265. 0,
  32266. 8,
  32267. };
  32268. static long _vq_lengthlist__44u8_p9_0[] = {
  32269. 1, 4, 4, 9, 9, 9, 9, 9, 9, 5, 9, 9, 8, 8, 8, 8,
  32270. 8, 8, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  32271. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  32272. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  32273. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  32274. 8,
  32275. };
  32276. static float _vq_quantthresh__44u8_p9_0[] = {
  32277. -3258.5, -2327.5, -1396.5, -465.5, 465.5, 1396.5, 2327.5, 3258.5,
  32278. };
  32279. static long _vq_quantmap__44u8_p9_0[] = {
  32280. 7, 5, 3, 1, 0, 2, 4, 6,
  32281. 8,
  32282. };
  32283. static encode_aux_threshmatch _vq_auxt__44u8_p9_0 = {
  32284. _vq_quantthresh__44u8_p9_0,
  32285. _vq_quantmap__44u8_p9_0,
  32286. 9,
  32287. 9
  32288. };
  32289. static static_codebook _44u8_p9_0 = {
  32290. 2, 81,
  32291. _vq_lengthlist__44u8_p9_0,
  32292. 1, -511895552, 1631393792, 4, 0,
  32293. _vq_quantlist__44u8_p9_0,
  32294. NULL,
  32295. &_vq_auxt__44u8_p9_0,
  32296. NULL,
  32297. 0
  32298. };
  32299. static long _vq_quantlist__44u8_p9_1[] = {
  32300. 9,
  32301. 8,
  32302. 10,
  32303. 7,
  32304. 11,
  32305. 6,
  32306. 12,
  32307. 5,
  32308. 13,
  32309. 4,
  32310. 14,
  32311. 3,
  32312. 15,
  32313. 2,
  32314. 16,
  32315. 1,
  32316. 17,
  32317. 0,
  32318. 18,
  32319. };
  32320. static long _vq_lengthlist__44u8_p9_1[] = {
  32321. 1, 4, 4, 7, 7, 8, 8, 7, 8, 9, 9,10,10,11,11,12,
  32322. 12,12,12, 4, 7, 6, 9, 9, 9, 9, 9, 8, 9, 9,11,10,
  32323. 12,11,13,12,13,14, 4, 6, 6, 9, 9, 9, 9, 8, 9, 9,
  32324. 10,10,11,12,12,12,12,13,12, 7, 9, 8,11,10,10,10,
  32325. 10,10,11,11,12,11,14,12,13,14,14,13, 7, 8, 9,10,
  32326. 10,10,10,10,10,11,11,12,13,13,13,14,15,15,13, 8,
  32327. 9, 9,11,11,11,11,11,12,13,12,14,14,14,14,14,14,
  32328. 15,13, 8, 9, 9,10,11,11,11,12,12,13,12,13,14,13,
  32329. 15,14,15,15,15, 8, 9, 9,10,10,12,11,13,12,13,13,
  32330. 14,14,13,15,14,15,14,14, 8, 9, 9,10,11,12,12,13,
  32331. 13,14,14,14,14,15,15,15,12,14,14, 9,11,10,11,11,
  32332. 14,12,13,14,15,14,14,14,14,15,15,15,15,15, 9,10,
  32333. 11,11,12,12,13,13,14,14,14,14,15,15,14,15,15,15,
  32334. 15,10,11,11,12,12,14,14,13,14,14,15,15,15,15,15,
  32335. 15,15,15,15,10,11,11,12,13,13,13,14,14,15,15,14,
  32336. 14,15,15,15,15,14,15,11,12,13,15,13,14,15,15,15,
  32337. 15,14,15,15,15,15,15,15,15,15,11,12,12,14,14,14,
  32338. 13,14,15,15,14,15,15,15,15,15,15,15,15,13,13,14,
  32339. 13,13,14,14,15,14,15,15,15,15,15,15,15,15,15,15,
  32340. 11,14,13,14,14,15,14,14,15,15,15,15,15,15,15,15,
  32341. 15,15,15,12,12,13,14,13,13,14,15,14,15,15,15,15,
  32342. 15,15,15,15,15,15,13,13,14,14,13,15,14,14,15,15,
  32343. 14,15,15,15,15,15,15,15,15,
  32344. };
  32345. static float _vq_quantthresh__44u8_p9_1[] = {
  32346. -416.5, -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5,
  32347. -24.5, 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5,
  32348. 367.5, 416.5,
  32349. };
  32350. static long _vq_quantmap__44u8_p9_1[] = {
  32351. 17, 15, 13, 11, 9, 7, 5, 3,
  32352. 1, 0, 2, 4, 6, 8, 10, 12,
  32353. 14, 16, 18,
  32354. };
  32355. static encode_aux_threshmatch _vq_auxt__44u8_p9_1 = {
  32356. _vq_quantthresh__44u8_p9_1,
  32357. _vq_quantmap__44u8_p9_1,
  32358. 19,
  32359. 19
  32360. };
  32361. static static_codebook _44u8_p9_1 = {
  32362. 2, 361,
  32363. _vq_lengthlist__44u8_p9_1,
  32364. 1, -518287360, 1622704128, 5, 0,
  32365. _vq_quantlist__44u8_p9_1,
  32366. NULL,
  32367. &_vq_auxt__44u8_p9_1,
  32368. NULL,
  32369. 0
  32370. };
  32371. static long _vq_quantlist__44u8_p9_2[] = {
  32372. 24,
  32373. 23,
  32374. 25,
  32375. 22,
  32376. 26,
  32377. 21,
  32378. 27,
  32379. 20,
  32380. 28,
  32381. 19,
  32382. 29,
  32383. 18,
  32384. 30,
  32385. 17,
  32386. 31,
  32387. 16,
  32388. 32,
  32389. 15,
  32390. 33,
  32391. 14,
  32392. 34,
  32393. 13,
  32394. 35,
  32395. 12,
  32396. 36,
  32397. 11,
  32398. 37,
  32399. 10,
  32400. 38,
  32401. 9,
  32402. 39,
  32403. 8,
  32404. 40,
  32405. 7,
  32406. 41,
  32407. 6,
  32408. 42,
  32409. 5,
  32410. 43,
  32411. 4,
  32412. 44,
  32413. 3,
  32414. 45,
  32415. 2,
  32416. 46,
  32417. 1,
  32418. 47,
  32419. 0,
  32420. 48,
  32421. };
  32422. static long _vq_lengthlist__44u8_p9_2[] = {
  32423. 2, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
  32424. 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,
  32425. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  32426. 7,
  32427. };
  32428. static float _vq_quantthresh__44u8_p9_2[] = {
  32429. -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5,
  32430. -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5,
  32431. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  32432. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  32433. 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5,
  32434. 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5,
  32435. };
  32436. static long _vq_quantmap__44u8_p9_2[] = {
  32437. 47, 45, 43, 41, 39, 37, 35, 33,
  32438. 31, 29, 27, 25, 23, 21, 19, 17,
  32439. 15, 13, 11, 9, 7, 5, 3, 1,
  32440. 0, 2, 4, 6, 8, 10, 12, 14,
  32441. 16, 18, 20, 22, 24, 26, 28, 30,
  32442. 32, 34, 36, 38, 40, 42, 44, 46,
  32443. 48,
  32444. };
  32445. static encode_aux_threshmatch _vq_auxt__44u8_p9_2 = {
  32446. _vq_quantthresh__44u8_p9_2,
  32447. _vq_quantmap__44u8_p9_2,
  32448. 49,
  32449. 49
  32450. };
  32451. static static_codebook _44u8_p9_2 = {
  32452. 1, 49,
  32453. _vq_lengthlist__44u8_p9_2,
  32454. 1, -526909440, 1611661312, 6, 0,
  32455. _vq_quantlist__44u8_p9_2,
  32456. NULL,
  32457. &_vq_auxt__44u8_p9_2,
  32458. NULL,
  32459. 0
  32460. };
  32461. static long _huff_lengthlist__44u9__long[] = {
  32462. 3, 9,13,13,14,14,13,14,14,13, 5, 5, 9,10,12,13,
  32463. 13,14,14,14, 9, 5, 6, 6, 8,11,12,14,14,14,11, 7,
  32464. 5, 3, 5, 8,10,12,13,12,12,10, 7, 4, 3, 5, 8,10,
  32465. 12,13,10,12, 9, 7, 4, 4, 6, 8,11,13,12,12,11, 9,
  32466. 7, 5, 6, 7, 9,13,12,12,12,11, 8, 7, 6, 6, 8,12,
  32467. 12,12,13,12,10, 9, 7, 7, 8,11,11,13,15,15,14,12,
  32468. 10, 9, 9,10,
  32469. };
  32470. static static_codebook _huff_book__44u9__long = {
  32471. 2, 100,
  32472. _huff_lengthlist__44u9__long,
  32473. 0, 0, 0, 0, 0,
  32474. NULL,
  32475. NULL,
  32476. NULL,
  32477. NULL,
  32478. 0
  32479. };
  32480. static long _huff_lengthlist__44u9__short[] = {
  32481. 10,17,18,18,18,18,18,18,18,18, 5, 8,12,13,14,13,
  32482. 16,17,16,17, 5, 6, 8, 8,10, 9,12,16,16,17, 5, 6,
  32483. 7, 5, 6, 9,12,15,16,16, 7, 6, 6, 4, 5, 7, 9,14,
  32484. 15,17,10, 8, 8, 6, 6, 3, 5, 9,13,18,14,11,11,10,
  32485. 6, 3, 4, 7,13,17,15,16,16,10, 5, 6, 4, 4, 9,13,
  32486. 18,18,18,11, 6, 8, 5, 6,10,15,18,18,18,14,10,11,
  32487. 9,10,16,18,
  32488. };
  32489. static static_codebook _huff_book__44u9__short = {
  32490. 2, 100,
  32491. _huff_lengthlist__44u9__short,
  32492. 0, 0, 0, 0, 0,
  32493. NULL,
  32494. NULL,
  32495. NULL,
  32496. NULL,
  32497. 0
  32498. };
  32499. static long _vq_quantlist__44u9_p1_0[] = {
  32500. 1,
  32501. 0,
  32502. 2,
  32503. };
  32504. static long _vq_lengthlist__44u9_p1_0[] = {
  32505. 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 8, 9, 9, 7,
  32506. 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 7, 9,
  32507. 9, 7, 9, 9, 8, 9, 9, 9,10,11, 9,11,10, 7, 9, 9,
  32508. 9,11,10, 9,10,11, 5, 7, 7, 7, 9, 9, 7, 9, 9, 7,
  32509. 9, 9, 9,11,11, 9,10,11, 8, 9, 9, 9,10,10, 9,11,
  32510. 10,
  32511. };
  32512. static float _vq_quantthresh__44u9_p1_0[] = {
  32513. -0.5, 0.5,
  32514. };
  32515. static long _vq_quantmap__44u9_p1_0[] = {
  32516. 1, 0, 2,
  32517. };
  32518. static encode_aux_threshmatch _vq_auxt__44u9_p1_0 = {
  32519. _vq_quantthresh__44u9_p1_0,
  32520. _vq_quantmap__44u9_p1_0,
  32521. 3,
  32522. 3
  32523. };
  32524. static static_codebook _44u9_p1_0 = {
  32525. 4, 81,
  32526. _vq_lengthlist__44u9_p1_0,
  32527. 1, -535822336, 1611661312, 2, 0,
  32528. _vq_quantlist__44u9_p1_0,
  32529. NULL,
  32530. &_vq_auxt__44u9_p1_0,
  32531. NULL,
  32532. 0
  32533. };
  32534. static long _vq_quantlist__44u9_p2_0[] = {
  32535. 2,
  32536. 1,
  32537. 3,
  32538. 0,
  32539. 4,
  32540. };
  32541. static long _vq_lengthlist__44u9_p2_0[] = {
  32542. 3, 6, 5, 8, 8, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
  32543. 9, 9,11,10, 8, 9, 9,10,11, 6, 7, 7, 9, 9, 7, 8,
  32544. 8,10,10, 7, 8, 8, 9,10, 9,10,10,11,11, 9, 9,10,
  32545. 11,11, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 8,10,
  32546. 10, 9,10, 9,11,11, 9,10,10,11,11, 8, 9, 9,11,11,
  32547. 9,10,10,12,11, 9,10,10,11,11,11,12,12,13,13,11,
  32548. 11,11,12,13, 8, 9, 9,11,11, 9,10,10,11,11, 9,10,
  32549. 10,12,12,11,11,11,13,12,11,11,11,13,13, 6, 7, 7,
  32550. 9, 9, 7, 8, 8,10, 9, 7, 8, 8, 9,10, 9,10,10,11,
  32551. 11, 9,10,10,11,11, 7, 8, 8,10,10, 8, 9, 9,10,10,
  32552. 8, 9, 9,10,10,10,10,10,12,12,10,10,10,11,12, 7,
  32553. 8, 8,10,10, 8, 9, 8,10,10, 8, 9, 9,10,10, 9,10,
  32554. 10,12,11,10,10,10,12,12, 9,10,10,12,11,10,10,10,
  32555. 12,12,10,10,10,12,12,12,12,12,12,13,11,12,12,13,
  32556. 13, 9,10,10,11,11, 9,10,10,12,11,10,10,10,12,12,
  32557. 11,12,11,13,12,12,12,12,13,13, 6, 7, 7, 9, 9, 7,
  32558. 8, 8,10, 9, 7, 8, 8, 9,10, 9,10,10,12,11, 9,10,
  32559. 10,11,11, 7, 8, 8,10, 9, 8, 9, 9,11,10, 8, 8, 9,
  32560. 10,10,10,10,10,12,12,10,10,10,11,12, 7, 8, 8,10,
  32561. 10, 8, 9, 9,10,10, 8, 9, 9,10,10,10,10,10,12,12,
  32562. 10,10,10,12,12, 9,10,10,11,11,10,11,10,12,12, 9,
  32563. 10,10,11,12,11,12,12,13,13,11,11,12,11,13, 9,10,
  32564. 10,11,12,10,10,10,12,12,10,10,10,12,12,11,12,12,
  32565. 13,13,12,12,12,13,13, 8, 9, 9,11,11, 9,10,10,12,
  32566. 11, 9,10,10,11,12,11,12,12,13,13,11,11,12,13,13,
  32567. 9,10,10,12,12,10,10,10,12,12,10,11,10,12,12,12,
  32568. 12,12,13,13,12,12,12,13,13, 9,10,10,12,11,10,10,
  32569. 10,12,11,10,10,10,12,12,11,12,12,13,13,12,12,12,
  32570. 13,14,11,12,12,13,13,11,12,12,13,13,11,12,12,13,
  32571. 13,13,13,14,13,15,13,13,13,14,14,11,11,11,13,13,
  32572. 11,12,11,13,13,11,12,12,13,13,12,13,12,14,12,13,
  32573. 13,13,15,14, 8, 9, 9,11,11, 9,10,10,11,11, 9,10,
  32574. 10,11,12,11,12,11,13,13,11,12,12,13,13, 9,10,10,
  32575. 11,11,10,11,10,12,12, 9,10,10,12,12,12,12,12,13,
  32576. 13,11,11,12,12,13, 9,10,10,12,12,10,10,11,12,12,
  32577. 10,11,10,12,12,11,12,12,13,13,12,12,12,13,13,11,
  32578. 11,11,13,13,11,12,12,13,13,11,11,12,13,13,13,13,
  32579. 13,14,14,12,12,13,12,14,11,11,12,13,13,12,12,12,
  32580. 14,13,11,12,12,13,13,13,13,13,14,14,13,13,13,14,
  32581. 13,
  32582. };
  32583. static float _vq_quantthresh__44u9_p2_0[] = {
  32584. -1.5, -0.5, 0.5, 1.5,
  32585. };
  32586. static long _vq_quantmap__44u9_p2_0[] = {
  32587. 3, 1, 0, 2, 4,
  32588. };
  32589. static encode_aux_threshmatch _vq_auxt__44u9_p2_0 = {
  32590. _vq_quantthresh__44u9_p2_0,
  32591. _vq_quantmap__44u9_p2_0,
  32592. 5,
  32593. 5
  32594. };
  32595. static static_codebook _44u9_p2_0 = {
  32596. 4, 625,
  32597. _vq_lengthlist__44u9_p2_0,
  32598. 1, -533725184, 1611661312, 3, 0,
  32599. _vq_quantlist__44u9_p2_0,
  32600. NULL,
  32601. &_vq_auxt__44u9_p2_0,
  32602. NULL,
  32603. 0
  32604. };
  32605. static long _vq_quantlist__44u9_p3_0[] = {
  32606. 4,
  32607. 3,
  32608. 5,
  32609. 2,
  32610. 6,
  32611. 1,
  32612. 7,
  32613. 0,
  32614. 8,
  32615. };
  32616. static long _vq_lengthlist__44u9_p3_0[] = {
  32617. 3, 4, 4, 5, 5, 7, 7, 9, 8, 4, 5, 5, 6, 6, 7, 7,
  32618. 9, 9, 4, 5, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 6,
  32619. 8, 7, 9, 9, 5, 6, 6, 6, 7, 7, 8, 9, 9, 7, 7, 7,
  32620. 8, 7, 9, 8,10,10, 7, 7, 7, 7, 8, 8, 9,10,10, 9,
  32621. 9, 9, 9, 9,10,10,11,11, 9, 9, 9, 9, 9,10,10,11,
  32622. 11,
  32623. };
  32624. static float _vq_quantthresh__44u9_p3_0[] = {
  32625. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  32626. };
  32627. static long _vq_quantmap__44u9_p3_0[] = {
  32628. 7, 5, 3, 1, 0, 2, 4, 6,
  32629. 8,
  32630. };
  32631. static encode_aux_threshmatch _vq_auxt__44u9_p3_0 = {
  32632. _vq_quantthresh__44u9_p3_0,
  32633. _vq_quantmap__44u9_p3_0,
  32634. 9,
  32635. 9
  32636. };
  32637. static static_codebook _44u9_p3_0 = {
  32638. 2, 81,
  32639. _vq_lengthlist__44u9_p3_0,
  32640. 1, -531628032, 1611661312, 4, 0,
  32641. _vq_quantlist__44u9_p3_0,
  32642. NULL,
  32643. &_vq_auxt__44u9_p3_0,
  32644. NULL,
  32645. 0
  32646. };
  32647. static long _vq_quantlist__44u9_p4_0[] = {
  32648. 8,
  32649. 7,
  32650. 9,
  32651. 6,
  32652. 10,
  32653. 5,
  32654. 11,
  32655. 4,
  32656. 12,
  32657. 3,
  32658. 13,
  32659. 2,
  32660. 14,
  32661. 1,
  32662. 15,
  32663. 0,
  32664. 16,
  32665. };
  32666. static long _vq_lengthlist__44u9_p4_0[] = {
  32667. 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
  32668. 11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 9,11,10,
  32669. 12,11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9,10,10,
  32670. 11,11,11, 6, 6, 6, 7, 6, 7, 7, 8, 8, 9, 9,10,10,
  32671. 11,11,12,12, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9,10,
  32672. 10,11,11,12,12, 7, 7, 7, 7, 7, 8, 8, 9, 8, 9, 9,
  32673. 10,10,11,11,12,12, 7, 7, 7, 7, 7, 8, 8, 8, 9, 9,
  32674. 9,10,10,11,11,12,12, 8, 8, 8, 8, 8, 9, 8, 9, 9,
  32675. 10,10,11,10,12,11,12,12, 8, 8, 8, 8, 8, 8, 9, 9,
  32676. 9,10,10,10,11,11,12,12,13, 8, 8, 8, 9, 9, 9, 9,
  32677. 10,10,11,10,11,11,12,12,13,12, 8, 8, 9, 9, 9, 9,
  32678. 9,10,10,10,11,11,11,12,12,12,13, 9,10, 9,10,10,
  32679. 10,10,11,10,11,11,12,11,13,12,13,13, 9, 9,10,10,
  32680. 10,10,10,10,11,11,11,11,12,12,13,13,13,10,11,10,
  32681. 11,11,11,11,12,11,12,12,13,12,13,13,14,13,10,10,
  32682. 11,11,11,11,11,11,12,12,12,12,13,13,13,13,14,11,
  32683. 12,11,12,12,12,12,12,12,13,13,13,13,14,13,14,14,
  32684. 11,11,12,12,12,12,12,12,12,12,13,13,13,13,14,14,
  32685. 14,
  32686. };
  32687. static float _vq_quantthresh__44u9_p4_0[] = {
  32688. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  32689. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  32690. };
  32691. static long _vq_quantmap__44u9_p4_0[] = {
  32692. 15, 13, 11, 9, 7, 5, 3, 1,
  32693. 0, 2, 4, 6, 8, 10, 12, 14,
  32694. 16,
  32695. };
  32696. static encode_aux_threshmatch _vq_auxt__44u9_p4_0 = {
  32697. _vq_quantthresh__44u9_p4_0,
  32698. _vq_quantmap__44u9_p4_0,
  32699. 17,
  32700. 17
  32701. };
  32702. static static_codebook _44u9_p4_0 = {
  32703. 2, 289,
  32704. _vq_lengthlist__44u9_p4_0,
  32705. 1, -529530880, 1611661312, 5, 0,
  32706. _vq_quantlist__44u9_p4_0,
  32707. NULL,
  32708. &_vq_auxt__44u9_p4_0,
  32709. NULL,
  32710. 0
  32711. };
  32712. static long _vq_quantlist__44u9_p5_0[] = {
  32713. 1,
  32714. 0,
  32715. 2,
  32716. };
  32717. static long _vq_lengthlist__44u9_p5_0[] = {
  32718. 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 8, 7, 7, 8, 9, 7,
  32719. 8, 9, 5, 7, 8, 7, 9, 8, 7, 9, 8, 5, 8, 8, 8, 9,
  32720. 9, 7, 9, 9, 7, 9, 9, 8, 9,11, 9,11,10, 7, 9, 9,
  32721. 9,11, 9, 9,10,11, 5, 7, 8, 7, 9, 9, 8, 9, 9, 7,
  32722. 9, 9, 9,11,10, 9, 9,11, 7, 9, 9, 9,10,11, 8,11,
  32723. 9,
  32724. };
  32725. static float _vq_quantthresh__44u9_p5_0[] = {
  32726. -5.5, 5.5,
  32727. };
  32728. static long _vq_quantmap__44u9_p5_0[] = {
  32729. 1, 0, 2,
  32730. };
  32731. static encode_aux_threshmatch _vq_auxt__44u9_p5_0 = {
  32732. _vq_quantthresh__44u9_p5_0,
  32733. _vq_quantmap__44u9_p5_0,
  32734. 3,
  32735. 3
  32736. };
  32737. static static_codebook _44u9_p5_0 = {
  32738. 4, 81,
  32739. _vq_lengthlist__44u9_p5_0,
  32740. 1, -529137664, 1618345984, 2, 0,
  32741. _vq_quantlist__44u9_p5_0,
  32742. NULL,
  32743. &_vq_auxt__44u9_p5_0,
  32744. NULL,
  32745. 0
  32746. };
  32747. static long _vq_quantlist__44u9_p5_1[] = {
  32748. 5,
  32749. 4,
  32750. 6,
  32751. 3,
  32752. 7,
  32753. 2,
  32754. 8,
  32755. 1,
  32756. 9,
  32757. 0,
  32758. 10,
  32759. };
  32760. static long _vq_lengthlist__44u9_p5_1[] = {
  32761. 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6,
  32762. 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,
  32763. 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 7, 7,
  32764. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8,
  32765. 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7,
  32766. 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
  32767. 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 7,
  32768. 7, 7, 7, 8, 8, 8, 8, 8, 8,
  32769. };
  32770. static float _vq_quantthresh__44u9_p5_1[] = {
  32771. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  32772. 3.5, 4.5,
  32773. };
  32774. static long _vq_quantmap__44u9_p5_1[] = {
  32775. 9, 7, 5, 3, 1, 0, 2, 4,
  32776. 6, 8, 10,
  32777. };
  32778. static encode_aux_threshmatch _vq_auxt__44u9_p5_1 = {
  32779. _vq_quantthresh__44u9_p5_1,
  32780. _vq_quantmap__44u9_p5_1,
  32781. 11,
  32782. 11
  32783. };
  32784. static static_codebook _44u9_p5_1 = {
  32785. 2, 121,
  32786. _vq_lengthlist__44u9_p5_1,
  32787. 1, -531365888, 1611661312, 4, 0,
  32788. _vq_quantlist__44u9_p5_1,
  32789. NULL,
  32790. &_vq_auxt__44u9_p5_1,
  32791. NULL,
  32792. 0
  32793. };
  32794. static long _vq_quantlist__44u9_p6_0[] = {
  32795. 6,
  32796. 5,
  32797. 7,
  32798. 4,
  32799. 8,
  32800. 3,
  32801. 9,
  32802. 2,
  32803. 10,
  32804. 1,
  32805. 11,
  32806. 0,
  32807. 12,
  32808. };
  32809. static long _vq_lengthlist__44u9_p6_0[] = {
  32810. 2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 4, 5, 5,
  32811. 7, 7, 8, 8, 8, 8,10,10,11,11, 4, 5, 5, 7, 7, 8,
  32812. 8, 8, 8,10,10,11,11, 6, 7, 7, 8, 7, 8, 8, 9, 9,
  32813. 10,10,11,11, 6, 7, 7, 8, 7, 8, 8, 9, 9,10,10,11,
  32814. 11, 7, 8, 8, 8, 8, 9, 9, 9,10,11,11,12,12, 7, 8,
  32815. 8, 8, 8, 9, 9,10, 9,11,11,12,12, 8, 9, 8, 9, 9,
  32816. 10,10,10,10,11,11,12,12, 8, 8, 8, 9, 9,10, 9,10,
  32817. 10,11,11,12,12, 9,10,10,10,10,11,11,11,11,12,12,
  32818. 13,13, 9,10,10,10,10,11,11,11,11,12,12,13,12,10,
  32819. 11,11,11,11,12,12,12,12,12,12,13,13,10,11,11,11,
  32820. 11,12,12,12,12,13,12,13,13,
  32821. };
  32822. static float _vq_quantthresh__44u9_p6_0[] = {
  32823. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  32824. 12.5, 17.5, 22.5, 27.5,
  32825. };
  32826. static long _vq_quantmap__44u9_p6_0[] = {
  32827. 11, 9, 7, 5, 3, 1, 0, 2,
  32828. 4, 6, 8, 10, 12,
  32829. };
  32830. static encode_aux_threshmatch _vq_auxt__44u9_p6_0 = {
  32831. _vq_quantthresh__44u9_p6_0,
  32832. _vq_quantmap__44u9_p6_0,
  32833. 13,
  32834. 13
  32835. };
  32836. static static_codebook _44u9_p6_0 = {
  32837. 2, 169,
  32838. _vq_lengthlist__44u9_p6_0,
  32839. 1, -526516224, 1616117760, 4, 0,
  32840. _vq_quantlist__44u9_p6_0,
  32841. NULL,
  32842. &_vq_auxt__44u9_p6_0,
  32843. NULL,
  32844. 0
  32845. };
  32846. static long _vq_quantlist__44u9_p6_1[] = {
  32847. 2,
  32848. 1,
  32849. 3,
  32850. 0,
  32851. 4,
  32852. };
  32853. static long _vq_lengthlist__44u9_p6_1[] = {
  32854. 4, 4, 4, 5, 5, 4, 5, 4, 5, 5, 4, 4, 5, 5, 5, 5,
  32855. 5, 5, 5, 5, 5, 5, 5, 5, 5,
  32856. };
  32857. static float _vq_quantthresh__44u9_p6_1[] = {
  32858. -1.5, -0.5, 0.5, 1.5,
  32859. };
  32860. static long _vq_quantmap__44u9_p6_1[] = {
  32861. 3, 1, 0, 2, 4,
  32862. };
  32863. static encode_aux_threshmatch _vq_auxt__44u9_p6_1 = {
  32864. _vq_quantthresh__44u9_p6_1,
  32865. _vq_quantmap__44u9_p6_1,
  32866. 5,
  32867. 5
  32868. };
  32869. static static_codebook _44u9_p6_1 = {
  32870. 2, 25,
  32871. _vq_lengthlist__44u9_p6_1,
  32872. 1, -533725184, 1611661312, 3, 0,
  32873. _vq_quantlist__44u9_p6_1,
  32874. NULL,
  32875. &_vq_auxt__44u9_p6_1,
  32876. NULL,
  32877. 0
  32878. };
  32879. static long _vq_quantlist__44u9_p7_0[] = {
  32880. 6,
  32881. 5,
  32882. 7,
  32883. 4,
  32884. 8,
  32885. 3,
  32886. 9,
  32887. 2,
  32888. 10,
  32889. 1,
  32890. 11,
  32891. 0,
  32892. 12,
  32893. };
  32894. static long _vq_lengthlist__44u9_p7_0[] = {
  32895. 1, 5, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 5, 6, 6,
  32896. 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 6, 6, 7, 7, 8,
  32897. 8, 9, 9,10,10,11,11, 6, 7, 7, 8, 8, 9, 9,10,10,
  32898. 11,11,12,12, 7, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
  32899. 12, 8, 8, 8, 9, 9,10,10,11,10,12,12,13,12, 8, 8,
  32900. 8, 9, 9,10,10,11,11,12,12,12,13, 9, 9, 9,10,10,
  32901. 11,11,12,11,13,13,13,14, 9, 9, 9,10,10,11,11,11,
  32902. 12,13,12,13,13,10,10,10,11,11,12,12,13,12,13,13,
  32903. 14,14,10,10,10,11,11,11,12,12,12,13,13,14,14,11,
  32904. 11,11,12,12,13,13,13,13,14,14,15,14,11,11,11,12,
  32905. 12,13,13,13,14,14,15,15,15,
  32906. };
  32907. static float _vq_quantthresh__44u9_p7_0[] = {
  32908. -60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5,
  32909. 27.5, 38.5, 49.5, 60.5,
  32910. };
  32911. static long _vq_quantmap__44u9_p7_0[] = {
  32912. 11, 9, 7, 5, 3, 1, 0, 2,
  32913. 4, 6, 8, 10, 12,
  32914. };
  32915. static encode_aux_threshmatch _vq_auxt__44u9_p7_0 = {
  32916. _vq_quantthresh__44u9_p7_0,
  32917. _vq_quantmap__44u9_p7_0,
  32918. 13,
  32919. 13
  32920. };
  32921. static static_codebook _44u9_p7_0 = {
  32922. 2, 169,
  32923. _vq_lengthlist__44u9_p7_0,
  32924. 1, -523206656, 1618345984, 4, 0,
  32925. _vq_quantlist__44u9_p7_0,
  32926. NULL,
  32927. &_vq_auxt__44u9_p7_0,
  32928. NULL,
  32929. 0
  32930. };
  32931. static long _vq_quantlist__44u9_p7_1[] = {
  32932. 5,
  32933. 4,
  32934. 6,
  32935. 3,
  32936. 7,
  32937. 2,
  32938. 8,
  32939. 1,
  32940. 9,
  32941. 0,
  32942. 10,
  32943. };
  32944. static long _vq_lengthlist__44u9_p7_1[] = {
  32945. 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7,
  32946. 7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7,
  32947. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  32948. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  32949. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  32950. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  32951. 7, 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 7, 7,
  32952. 7, 7, 7, 7, 7, 7, 8, 8, 8,
  32953. };
  32954. static float _vq_quantthresh__44u9_p7_1[] = {
  32955. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  32956. 3.5, 4.5,
  32957. };
  32958. static long _vq_quantmap__44u9_p7_1[] = {
  32959. 9, 7, 5, 3, 1, 0, 2, 4,
  32960. 6, 8, 10,
  32961. };
  32962. static encode_aux_threshmatch _vq_auxt__44u9_p7_1 = {
  32963. _vq_quantthresh__44u9_p7_1,
  32964. _vq_quantmap__44u9_p7_1,
  32965. 11,
  32966. 11
  32967. };
  32968. static static_codebook _44u9_p7_1 = {
  32969. 2, 121,
  32970. _vq_lengthlist__44u9_p7_1,
  32971. 1, -531365888, 1611661312, 4, 0,
  32972. _vq_quantlist__44u9_p7_1,
  32973. NULL,
  32974. &_vq_auxt__44u9_p7_1,
  32975. NULL,
  32976. 0
  32977. };
  32978. static long _vq_quantlist__44u9_p8_0[] = {
  32979. 7,
  32980. 6,
  32981. 8,
  32982. 5,
  32983. 9,
  32984. 4,
  32985. 10,
  32986. 3,
  32987. 11,
  32988. 2,
  32989. 12,
  32990. 1,
  32991. 13,
  32992. 0,
  32993. 14,
  32994. };
  32995. static long _vq_lengthlist__44u9_p8_0[] = {
  32996. 1, 4, 4, 7, 7, 8, 8, 8, 7, 9, 9,10,10,11,11, 4,
  32997. 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,10,12,11, 4, 6,
  32998. 6, 8, 8, 9,10, 9, 9,10,10,11,11,12,12, 7, 8, 8,
  32999. 10,10,11,11,11,10,11,11,12,12,13,12, 7, 8, 8,10,
  33000. 10,11,11,10,10,11,12,12,12,13,13, 8,10, 9,11,11,
  33001. 12,12,11,12,12,12,13,13,14,14, 8, 9, 9,11,11,12,
  33002. 12,11,12,12,13,13,13,14,14, 8, 9, 9,10,10,11,11,
  33003. 13,12,13,13,14,14,15,14, 8, 9, 9,10,10,11,12,12,
  33004. 13,13,13,14,14,14,15, 9,10,10,11,11,13,12,13,13,
  33005. 14,14,15,15,15,15, 9,10,10,11,12,12,12,13,13,14,
  33006. 15,14,15,15,15,10,11,11,12,12,13,13,14,14,15,15,
  33007. 15,16,16,15,10,11,11,12,12,13,14,14,14,15,14,15,
  33008. 16,16,17,11,12,12,13,13,14,14,15,14,16,15,15,16,
  33009. 16,16,11,12,12,13,13,14,14,14,15,15,15,16,16,17,
  33010. 16,
  33011. };
  33012. static float _vq_quantthresh__44u9_p8_0[] = {
  33013. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  33014. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  33015. };
  33016. static long _vq_quantmap__44u9_p8_0[] = {
  33017. 13, 11, 9, 7, 5, 3, 1, 0,
  33018. 2, 4, 6, 8, 10, 12, 14,
  33019. };
  33020. static encode_aux_threshmatch _vq_auxt__44u9_p8_0 = {
  33021. _vq_quantthresh__44u9_p8_0,
  33022. _vq_quantmap__44u9_p8_0,
  33023. 15,
  33024. 15
  33025. };
  33026. static static_codebook _44u9_p8_0 = {
  33027. 2, 225,
  33028. _vq_lengthlist__44u9_p8_0,
  33029. 1, -520986624, 1620377600, 4, 0,
  33030. _vq_quantlist__44u9_p8_0,
  33031. NULL,
  33032. &_vq_auxt__44u9_p8_0,
  33033. NULL,
  33034. 0
  33035. };
  33036. static long _vq_quantlist__44u9_p8_1[] = {
  33037. 10,
  33038. 9,
  33039. 11,
  33040. 8,
  33041. 12,
  33042. 7,
  33043. 13,
  33044. 6,
  33045. 14,
  33046. 5,
  33047. 15,
  33048. 4,
  33049. 16,
  33050. 3,
  33051. 17,
  33052. 2,
  33053. 18,
  33054. 1,
  33055. 19,
  33056. 0,
  33057. 20,
  33058. };
  33059. static long _vq_lengthlist__44u9_p8_1[] = {
  33060. 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
  33061. 9, 9, 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9,
  33062. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 7, 7, 7, 7, 8,
  33063. 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7,
  33064. 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33065. 9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
  33066. 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9,
  33067. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 8, 8,
  33068. 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,
  33069. 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33070. 9, 9, 9, 9,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9,
  33071. 9, 9, 9, 9, 9, 9, 9,10, 9, 9,10,10, 9, 9, 9, 9,
  33072. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9,10,
  33073. 10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
  33074. 10,10,10, 9,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33075. 9,10, 9,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
  33076. 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
  33077. 10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,
  33078. 10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33079. 10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,
  33080. 9,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,
  33081. 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10,10,10,10,10,
  33082. 10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,
  33083. 10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
  33084. 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
  33085. 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
  33086. 10,10,10,10, 9, 9, 9, 9, 9, 9,10,10, 9,10,10,10,
  33087. 10,10,10,10,10,10,10,10,10,
  33088. };
  33089. static float _vq_quantthresh__44u9_p8_1[] = {
  33090. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  33091. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  33092. 6.5, 7.5, 8.5, 9.5,
  33093. };
  33094. static long _vq_quantmap__44u9_p8_1[] = {
  33095. 19, 17, 15, 13, 11, 9, 7, 5,
  33096. 3, 1, 0, 2, 4, 6, 8, 10,
  33097. 12, 14, 16, 18, 20,
  33098. };
  33099. static encode_aux_threshmatch _vq_auxt__44u9_p8_1 = {
  33100. _vq_quantthresh__44u9_p8_1,
  33101. _vq_quantmap__44u9_p8_1,
  33102. 21,
  33103. 21
  33104. };
  33105. static static_codebook _44u9_p8_1 = {
  33106. 2, 441,
  33107. _vq_lengthlist__44u9_p8_1,
  33108. 1, -529268736, 1611661312, 5, 0,
  33109. _vq_quantlist__44u9_p8_1,
  33110. NULL,
  33111. &_vq_auxt__44u9_p8_1,
  33112. NULL,
  33113. 0
  33114. };
  33115. static long _vq_quantlist__44u9_p9_0[] = {
  33116. 7,
  33117. 6,
  33118. 8,
  33119. 5,
  33120. 9,
  33121. 4,
  33122. 10,
  33123. 3,
  33124. 11,
  33125. 2,
  33126. 12,
  33127. 1,
  33128. 13,
  33129. 0,
  33130. 14,
  33131. };
  33132. static long _vq_lengthlist__44u9_p9_0[] = {
  33133. 1, 5, 5,10,10,10,10,10,10,10,10,10,10,10,10, 5,
  33134. 10,10,10,10,10,10,10,10,10,10,10,10,10,10, 5,10,
  33135. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  33136. 10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
  33137. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33138. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33139. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33140. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33141. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33142. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33143. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33144. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33145. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33146. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  33147. 9,
  33148. };
  33149. static float _vq_quantthresh__44u9_p9_0[] = {
  33150. -6051.5, -5120.5, -4189.5, -3258.5, -2327.5, -1396.5, -465.5, 465.5,
  33151. 1396.5, 2327.5, 3258.5, 4189.5, 5120.5, 6051.5,
  33152. };
  33153. static long _vq_quantmap__44u9_p9_0[] = {
  33154. 13, 11, 9, 7, 5, 3, 1, 0,
  33155. 2, 4, 6, 8, 10, 12, 14,
  33156. };
  33157. static encode_aux_threshmatch _vq_auxt__44u9_p9_0 = {
  33158. _vq_quantthresh__44u9_p9_0,
  33159. _vq_quantmap__44u9_p9_0,
  33160. 15,
  33161. 15
  33162. };
  33163. static static_codebook _44u9_p9_0 = {
  33164. 2, 225,
  33165. _vq_lengthlist__44u9_p9_0,
  33166. 1, -510036736, 1631393792, 4, 0,
  33167. _vq_quantlist__44u9_p9_0,
  33168. NULL,
  33169. &_vq_auxt__44u9_p9_0,
  33170. NULL,
  33171. 0
  33172. };
  33173. static long _vq_quantlist__44u9_p9_1[] = {
  33174. 9,
  33175. 8,
  33176. 10,
  33177. 7,
  33178. 11,
  33179. 6,
  33180. 12,
  33181. 5,
  33182. 13,
  33183. 4,
  33184. 14,
  33185. 3,
  33186. 15,
  33187. 2,
  33188. 16,
  33189. 1,
  33190. 17,
  33191. 0,
  33192. 18,
  33193. };
  33194. static long _vq_lengthlist__44u9_p9_1[] = {
  33195. 1, 4, 4, 7, 7, 8, 8, 7, 7, 9, 9,10,10,12,11,12,
  33196. 11,12,12, 4, 7, 6, 9, 9, 9, 9, 9, 9,10, 9,11, 9,
  33197. 11,11,13,12,14,12, 4, 6, 6, 9, 9, 9, 9, 8, 9,10,
  33198. 10,11,11,12,12,12,13,13,13, 7, 9, 8,11,11,11,11,
  33199. 10,10,11,11,12,12,14,13,14,14,15,13, 7, 9, 9,10,
  33200. 10,10,10,10,10,11,11,12,13,13,13,14,14,15,13, 8,
  33201. 9, 9,12,10,11,11,12,11,12,12,13,13,14,14,15,16,
  33202. 15,14, 8, 9, 9,10,11,12,11,11,12,13,12,14,14,13,
  33203. 15,16,15,14,16, 7, 9, 9,10,10,12,11,12,13,16,13,
  33204. 14,16,14,15,15,15,15,15, 7, 9, 9,10,11,11,12,12,
  33205. 13,14,16,14,14,16,16,14,14,14,15, 9,10,11,12,12,
  33206. 12,13,13,13,16,15,16,15,14,15,15,15,16,16, 9,10,
  33207. 11,12,13,13,14,13,14,15,14,14,16,16,16,16,16,16,
  33208. 16,10,11,11,13,13,15,13,15,13,14,16,16,16,16,16,
  33209. 16,15,14,16,11,11,12,12,13,13,15,13,15,14,15,16,
  33210. 16,16,16,16,16,16,16,12,13,13,13,13,15,14,15,16,
  33211. 16,16,16,14,16,16,16,16,16,16,13,12,12,14,14,13,
  33212. 15,14,16,15,16,16,16,16,16,16,16,16,15,12,12,13,
  33213. 13,14,16,15,16,15,16,16,16,16,16,16,16,16,16,16,
  33214. 12,13,13,14,15,14,14,16,16,15,16,16,16,16,16,16,
  33215. 15,16,16,13,14,14,13,14,14,15,16,15,16,16,16,16,
  33216. 16,16,16,16,15,16,12,13,13,14,14,14,14,16,16,16,
  33217. 16,16,16,15,16,16,16,16,16,
  33218. };
  33219. static float _vq_quantthresh__44u9_p9_1[] = {
  33220. -416.5, -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5,
  33221. -24.5, 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5,
  33222. 367.5, 416.5,
  33223. };
  33224. static long _vq_quantmap__44u9_p9_1[] = {
  33225. 17, 15, 13, 11, 9, 7, 5, 3,
  33226. 1, 0, 2, 4, 6, 8, 10, 12,
  33227. 14, 16, 18,
  33228. };
  33229. static encode_aux_threshmatch _vq_auxt__44u9_p9_1 = {
  33230. _vq_quantthresh__44u9_p9_1,
  33231. _vq_quantmap__44u9_p9_1,
  33232. 19,
  33233. 19
  33234. };
  33235. static static_codebook _44u9_p9_1 = {
  33236. 2, 361,
  33237. _vq_lengthlist__44u9_p9_1,
  33238. 1, -518287360, 1622704128, 5, 0,
  33239. _vq_quantlist__44u9_p9_1,
  33240. NULL,
  33241. &_vq_auxt__44u9_p9_1,
  33242. NULL,
  33243. 0
  33244. };
  33245. static long _vq_quantlist__44u9_p9_2[] = {
  33246. 24,
  33247. 23,
  33248. 25,
  33249. 22,
  33250. 26,
  33251. 21,
  33252. 27,
  33253. 20,
  33254. 28,
  33255. 19,
  33256. 29,
  33257. 18,
  33258. 30,
  33259. 17,
  33260. 31,
  33261. 16,
  33262. 32,
  33263. 15,
  33264. 33,
  33265. 14,
  33266. 34,
  33267. 13,
  33268. 35,
  33269. 12,
  33270. 36,
  33271. 11,
  33272. 37,
  33273. 10,
  33274. 38,
  33275. 9,
  33276. 39,
  33277. 8,
  33278. 40,
  33279. 7,
  33280. 41,
  33281. 6,
  33282. 42,
  33283. 5,
  33284. 43,
  33285. 4,
  33286. 44,
  33287. 3,
  33288. 45,
  33289. 2,
  33290. 46,
  33291. 1,
  33292. 47,
  33293. 0,
  33294. 48,
  33295. };
  33296. static long _vq_lengthlist__44u9_p9_2[] = {
  33297. 2, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
  33298. 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,
  33299. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  33300. 7,
  33301. };
  33302. static float _vq_quantthresh__44u9_p9_2[] = {
  33303. -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5,
  33304. -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5,
  33305. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  33306. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  33307. 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5,
  33308. 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5,
  33309. };
  33310. static long _vq_quantmap__44u9_p9_2[] = {
  33311. 47, 45, 43, 41, 39, 37, 35, 33,
  33312. 31, 29, 27, 25, 23, 21, 19, 17,
  33313. 15, 13, 11, 9, 7, 5, 3, 1,
  33314. 0, 2, 4, 6, 8, 10, 12, 14,
  33315. 16, 18, 20, 22, 24, 26, 28, 30,
  33316. 32, 34, 36, 38, 40, 42, 44, 46,
  33317. 48,
  33318. };
  33319. static encode_aux_threshmatch _vq_auxt__44u9_p9_2 = {
  33320. _vq_quantthresh__44u9_p9_2,
  33321. _vq_quantmap__44u9_p9_2,
  33322. 49,
  33323. 49
  33324. };
  33325. static static_codebook _44u9_p9_2 = {
  33326. 1, 49,
  33327. _vq_lengthlist__44u9_p9_2,
  33328. 1, -526909440, 1611661312, 6, 0,
  33329. _vq_quantlist__44u9_p9_2,
  33330. NULL,
  33331. &_vq_auxt__44u9_p9_2,
  33332. NULL,
  33333. 0
  33334. };
  33335. static long _vq_quantlist__8u0__p1_0[] = {
  33336. 1,
  33337. 0,
  33338. 2,
  33339. };
  33340. static long _vq_lengthlist__8u0__p1_0[] = {
  33341. 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
  33342. 10,10, 5, 8, 8, 7,10,10, 8,10,10, 4, 9, 8, 8,11,
  33343. 11, 8,11,11, 7,11,11,10,11,13,10,13,13, 7,11,11,
  33344. 10,13,12,10,13,13, 5, 9, 8, 8,11,11, 8,11,11, 7,
  33345. 11,11, 9,13,13,10,12,13, 7,11,11,10,13,13,10,13,
  33346. 11,
  33347. };
  33348. static float _vq_quantthresh__8u0__p1_0[] = {
  33349. -0.5, 0.5,
  33350. };
  33351. static long _vq_quantmap__8u0__p1_0[] = {
  33352. 1, 0, 2,
  33353. };
  33354. static encode_aux_threshmatch _vq_auxt__8u0__p1_0 = {
  33355. _vq_quantthresh__8u0__p1_0,
  33356. _vq_quantmap__8u0__p1_0,
  33357. 3,
  33358. 3
  33359. };
  33360. static static_codebook _8u0__p1_0 = {
  33361. 4, 81,
  33362. _vq_lengthlist__8u0__p1_0,
  33363. 1, -535822336, 1611661312, 2, 0,
  33364. _vq_quantlist__8u0__p1_0,
  33365. NULL,
  33366. &_vq_auxt__8u0__p1_0,
  33367. NULL,
  33368. 0
  33369. };
  33370. static long _vq_quantlist__8u0__p2_0[] = {
  33371. 1,
  33372. 0,
  33373. 2,
  33374. };
  33375. static long _vq_lengthlist__8u0__p2_0[] = {
  33376. 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 6, 7, 8, 6,
  33377. 7, 8, 5, 7, 7, 6, 8, 8, 7, 9, 7, 5, 7, 7, 7, 9,
  33378. 9, 7, 8, 8, 6, 9, 8, 7, 7,10, 8,10,10, 6, 8, 8,
  33379. 8,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 9, 6,
  33380. 8, 8, 8,10,10, 8, 8,10, 6, 8, 9, 8,10,10, 7,10,
  33381. 8,
  33382. };
  33383. static float _vq_quantthresh__8u0__p2_0[] = {
  33384. -0.5, 0.5,
  33385. };
  33386. static long _vq_quantmap__8u0__p2_0[] = {
  33387. 1, 0, 2,
  33388. };
  33389. static encode_aux_threshmatch _vq_auxt__8u0__p2_0 = {
  33390. _vq_quantthresh__8u0__p2_0,
  33391. _vq_quantmap__8u0__p2_0,
  33392. 3,
  33393. 3
  33394. };
  33395. static static_codebook _8u0__p2_0 = {
  33396. 4, 81,
  33397. _vq_lengthlist__8u0__p2_0,
  33398. 1, -535822336, 1611661312, 2, 0,
  33399. _vq_quantlist__8u0__p2_0,
  33400. NULL,
  33401. &_vq_auxt__8u0__p2_0,
  33402. NULL,
  33403. 0
  33404. };
  33405. static long _vq_quantlist__8u0__p3_0[] = {
  33406. 2,
  33407. 1,
  33408. 3,
  33409. 0,
  33410. 4,
  33411. };
  33412. static long _vq_lengthlist__8u0__p3_0[] = {
  33413. 1, 5, 5, 7, 7, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
  33414. 10, 9,11,11, 8, 9, 9,11,11, 6, 8, 8,10,10, 8,10,
  33415. 10,11,11, 8,10,10,11,11,10,11,11,12,12,10,11,11,
  33416. 12,13, 6, 8, 8,10,10, 8,10,10,11,11, 8,10,10,11,
  33417. 11, 9,10,11,12,12,10,11,11,12,12, 8,11,11,14,13,
  33418. 10,12,11,15,13,10,12,11,14,14,12,13,12,16,14,12,
  33419. 14,12,16,15, 8,11,11,13,14,10,11,12,13,15,10,11,
  33420. 12,13,15,11,12,13,14,15,12,12,14,14,16, 5, 8, 8,
  33421. 11,11, 9,11,11,12,12, 8,10,11,12,12,11,12,12,15,
  33422. 14,11,12,12,14,14, 7,11,10,13,12,10,11,12,13,14,
  33423. 10,12,12,14,13,12,13,13,14,15,12,13,13,15,15, 7,
  33424. 10,11,12,13,10,12,11,14,13,10,12,13,13,15,12,13,
  33425. 12,14,14,11,13,13,15,16, 9,12,12,15,14,11,13,13,
  33426. 15,16,11,13,13,16,16,13,14,15,15,15,12,14,15,17,
  33427. 16, 9,12,12,14,15,11,13,13,15,16,11,13,13,16,18,
  33428. 13,14,14,17,16,13,15,15,17,18, 5, 8, 9,11,11, 8,
  33429. 11,11,12,12, 8,10,11,12,12,11,12,12,14,14,11,12,
  33430. 12,14,15, 7,11,10,12,13,10,12,12,14,13,10,11,12,
  33431. 13,14,11,13,13,15,14,12,13,13,14,15, 7,10,11,13,
  33432. 13,10,12,12,13,14,10,12,12,13,13,11,13,13,16,16,
  33433. 12,13,13,15,14, 9,12,12,16,15,10,13,13,15,15,11,
  33434. 13,13,17,15,12,15,15,18,17,13,14,14,15,16, 9,12,
  33435. 12,15,15,11,13,13,15,16,11,13,13,15,15,12,15,15,
  33436. 16,16,13,15,14,17,15, 7,11,11,15,15,10,13,13,16,
  33437. 15,10,13,13,15,16,14,15,15,17,19,13,15,14,15,18,
  33438. 9,12,12,16,16,11,13,14,17,16,11,13,13,17,16,15,
  33439. 15,16,17,19,13,15,16, 0,18, 9,12,12,16,15,11,14,
  33440. 13,17,17,11,13,14,16,16,15,16,16,19,18,13,15,15,
  33441. 17,19,11,14,14,19,16,12,14,15, 0,18,12,16,15,18,
  33442. 17,15,15,18,16,19,14,15,17,19,19,11,14,14,18,19,
  33443. 13,15,14,19,19,12,16,15,18,17,15,17,15, 0,16,14,
  33444. 17,16,19, 0, 7,11,11,14,14,10,12,12,15,15,10,13,
  33445. 13,16,15,13,15,15,17, 0,14,15,15,16,19, 9,12,12,
  33446. 16,16,11,14,14,16,16,11,13,13,16,16,14,17,16,19,
  33447. 0,14,18,17,17,19, 9,12,12,15,16,11,13,13,15,17,
  33448. 12,14,13,19,16,13,15,15,17,19,15,17,16,17,19,11,
  33449. 14,14,19,16,12,15,15,19,17,13,14,15,17,19,14,16,
  33450. 17,19,19,16,15,16,17,19,11,15,14,16,16,12,15,15,
  33451. 19, 0,12,14,15,19,19,14,16,16, 0,18,15,19,14,18,
  33452. 16,
  33453. };
  33454. static float _vq_quantthresh__8u0__p3_0[] = {
  33455. -1.5, -0.5, 0.5, 1.5,
  33456. };
  33457. static long _vq_quantmap__8u0__p3_0[] = {
  33458. 3, 1, 0, 2, 4,
  33459. };
  33460. static encode_aux_threshmatch _vq_auxt__8u0__p3_0 = {
  33461. _vq_quantthresh__8u0__p3_0,
  33462. _vq_quantmap__8u0__p3_0,
  33463. 5,
  33464. 5
  33465. };
  33466. static static_codebook _8u0__p3_0 = {
  33467. 4, 625,
  33468. _vq_lengthlist__8u0__p3_0,
  33469. 1, -533725184, 1611661312, 3, 0,
  33470. _vq_quantlist__8u0__p3_0,
  33471. NULL,
  33472. &_vq_auxt__8u0__p3_0,
  33473. NULL,
  33474. 0
  33475. };
  33476. static long _vq_quantlist__8u0__p4_0[] = {
  33477. 2,
  33478. 1,
  33479. 3,
  33480. 0,
  33481. 4,
  33482. };
  33483. static long _vq_lengthlist__8u0__p4_0[] = {
  33484. 3, 5, 5, 8, 8, 5, 6, 7, 9, 9, 6, 7, 6, 9, 9, 9,
  33485. 9, 9,10,11, 9, 9, 9,11,10, 6, 7, 7,10,10, 7, 7,
  33486. 8,10,10, 7, 8, 8,10,10,10,10,10,10,11, 9,10,10,
  33487. 11,12, 6, 7, 7,10,10, 7, 8, 8,10,10, 7, 8, 7,10,
  33488. 10, 9,10,10,12,11,10,10,10,11,10, 9,10,10,12,11,
  33489. 10,10,10,13,11, 9,10,10,12,12,11,11,12,12,13,11,
  33490. 11,11,12,13, 9,10,10,12,12,10,10,11,12,12,10,10,
  33491. 11,12,12,11,11,11,13,13,11,12,12,13,13, 5, 7, 7,
  33492. 10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,11,12,
  33493. 12,10,11,10,12,12, 7, 8, 8,11,11, 7, 8, 9,10,11,
  33494. 8, 9, 9,11,11,11,10,11,10,12,10,11,11,12,13, 7,
  33495. 8, 8,10,11, 8, 9, 8,12,10, 8, 9, 9,11,12,10,11,
  33496. 10,13,11,10,11,11,13,12, 9,11,10,13,12,10,10,11,
  33497. 12,12,10,11,11,13,13,12,10,13,11,14,11,12,12,15,
  33498. 13, 9,11,11,13,13,10,11,11,13,12,10,11,11,12,14,
  33499. 12,13,11,14,12,12,12,12,14,14, 5, 7, 7,10,10, 7,
  33500. 8, 8,10,10, 7, 8, 8,11,10,10,11,11,12,12,10,11,
  33501. 10,12,12, 7, 8, 8,10,11, 8, 9, 9,12,11, 8, 8, 9,
  33502. 10,11,10,11,11,12,13,11,10,11,11,13, 6, 8, 8,10,
  33503. 11, 8, 9, 9,11,11, 7, 9, 7,11,10,10,11,11,12,12,
  33504. 10,11,10,13,10, 9,11,10,13,12,10,12,11,13,13,10,
  33505. 10,11,12,13,11,12,13,15,14,11,11,13,12,13, 9,10,
  33506. 11,12,13,10,11,11,12,13,10,11,10,13,12,12,13,13,
  33507. 13,14,12,12,11,14,11, 8,10,10,12,13,10,11,11,13,
  33508. 13,10,11,10,13,13,12,13,14,15,14,12,12,12,14,13,
  33509. 9,10,10,13,12,10,10,12,13,13,10,11,11,15,12,12,
  33510. 12,13,15,14,12,13,13,15,13, 9,10,11,12,13,10,12,
  33511. 10,13,12,10,11,11,12,13,12,14,12,15,13,12,12,12,
  33512. 15,14,11,12,11,14,13,11,11,12,14,14,12,13,13,14,
  33513. 13,13,11,15,11,15,14,14,14,16,15,11,12,12,13,14,
  33514. 11,13,11,14,14,12,12,13,14,15,12,14,12,15,12,13,
  33515. 15,14,16,15, 8,10,10,12,12,10,10,10,12,13,10,11,
  33516. 11,13,13,12,12,12,13,14,13,13,13,15,15, 9,10,10,
  33517. 12,12,10,11,11,13,12,10,10,11,13,13,12,12,12,14,
  33518. 14,12,12,13,15,14, 9,10,10,13,12,10,10,12,12,13,
  33519. 10,11,10,13,13,12,13,13,14,14,12,13,12,14,13,11,
  33520. 12,12,14,13,12,13,12,14,14,10,12,12,14,14,14,14,
  33521. 14,16,14,13,12,14,12,15,10,12,12,14,15,12,13,13,
  33522. 14,16,11,12,11,15,14,13,14,14,14,15,13,14,11,14,
  33523. 12,
  33524. };
  33525. static float _vq_quantthresh__8u0__p4_0[] = {
  33526. -1.5, -0.5, 0.5, 1.5,
  33527. };
  33528. static long _vq_quantmap__8u0__p4_0[] = {
  33529. 3, 1, 0, 2, 4,
  33530. };
  33531. static encode_aux_threshmatch _vq_auxt__8u0__p4_0 = {
  33532. _vq_quantthresh__8u0__p4_0,
  33533. _vq_quantmap__8u0__p4_0,
  33534. 5,
  33535. 5
  33536. };
  33537. static static_codebook _8u0__p4_0 = {
  33538. 4, 625,
  33539. _vq_lengthlist__8u0__p4_0,
  33540. 1, -533725184, 1611661312, 3, 0,
  33541. _vq_quantlist__8u0__p4_0,
  33542. NULL,
  33543. &_vq_auxt__8u0__p4_0,
  33544. NULL,
  33545. 0
  33546. };
  33547. static long _vq_quantlist__8u0__p5_0[] = {
  33548. 4,
  33549. 3,
  33550. 5,
  33551. 2,
  33552. 6,
  33553. 1,
  33554. 7,
  33555. 0,
  33556. 8,
  33557. };
  33558. static long _vq_lengthlist__8u0__p5_0[] = {
  33559. 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 7, 8, 8,
  33560. 10,10, 4, 6, 6, 8, 8, 8, 8,10,10, 6, 8, 8, 9, 9,
  33561. 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8,
  33562. 9, 9,10,10,12,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
  33563. 10,10,11,11,11,12,12,12, 9,10,10,11,11,12,12,12,
  33564. 12,
  33565. };
  33566. static float _vq_quantthresh__8u0__p5_0[] = {
  33567. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  33568. };
  33569. static long _vq_quantmap__8u0__p5_0[] = {
  33570. 7, 5, 3, 1, 0, 2, 4, 6,
  33571. 8,
  33572. };
  33573. static encode_aux_threshmatch _vq_auxt__8u0__p5_0 = {
  33574. _vq_quantthresh__8u0__p5_0,
  33575. _vq_quantmap__8u0__p5_0,
  33576. 9,
  33577. 9
  33578. };
  33579. static static_codebook _8u0__p5_0 = {
  33580. 2, 81,
  33581. _vq_lengthlist__8u0__p5_0,
  33582. 1, -531628032, 1611661312, 4, 0,
  33583. _vq_quantlist__8u0__p5_0,
  33584. NULL,
  33585. &_vq_auxt__8u0__p5_0,
  33586. NULL,
  33587. 0
  33588. };
  33589. static long _vq_quantlist__8u0__p6_0[] = {
  33590. 6,
  33591. 5,
  33592. 7,
  33593. 4,
  33594. 8,
  33595. 3,
  33596. 9,
  33597. 2,
  33598. 10,
  33599. 1,
  33600. 11,
  33601. 0,
  33602. 12,
  33603. };
  33604. static long _vq_lengthlist__8u0__p6_0[] = {
  33605. 1, 4, 4, 7, 7, 9, 9,11,11,12,12,16,16, 3, 6, 6,
  33606. 9, 9,11,11,12,12,13,14,18,16, 3, 6, 7, 9, 9,11,
  33607. 11,13,12,14,14,17,16, 7, 9, 9,11,11,12,12,14,14,
  33608. 14,14,17,16, 7, 9, 9,11,11,13,12,13,13,14,14,17,
  33609. 0, 9,11,11,12,13,14,14,14,13,15,14,17,17, 9,11,
  33610. 11,12,12,14,14,13,14,14,15, 0, 0,11,12,12,15,14,
  33611. 15,14,15,14,15,16,17, 0,11,12,13,13,13,14,14,15,
  33612. 14,15,15, 0, 0,12,14,14,15,15,14,16,15,15,17,16,
  33613. 0,18,13,14,14,15,14,15,14,15,16,17,16, 0, 0,17,
  33614. 17,18, 0,16,18,16, 0, 0, 0,17, 0, 0,16, 0, 0,16,
  33615. 16, 0,15, 0,17, 0, 0, 0, 0,
  33616. };
  33617. static float _vq_quantthresh__8u0__p6_0[] = {
  33618. -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5,
  33619. 12.5, 17.5, 22.5, 27.5,
  33620. };
  33621. static long _vq_quantmap__8u0__p6_0[] = {
  33622. 11, 9, 7, 5, 3, 1, 0, 2,
  33623. 4, 6, 8, 10, 12,
  33624. };
  33625. static encode_aux_threshmatch _vq_auxt__8u0__p6_0 = {
  33626. _vq_quantthresh__8u0__p6_0,
  33627. _vq_quantmap__8u0__p6_0,
  33628. 13,
  33629. 13
  33630. };
  33631. static static_codebook _8u0__p6_0 = {
  33632. 2, 169,
  33633. _vq_lengthlist__8u0__p6_0,
  33634. 1, -526516224, 1616117760, 4, 0,
  33635. _vq_quantlist__8u0__p6_0,
  33636. NULL,
  33637. &_vq_auxt__8u0__p6_0,
  33638. NULL,
  33639. 0
  33640. };
  33641. static long _vq_quantlist__8u0__p6_1[] = {
  33642. 2,
  33643. 1,
  33644. 3,
  33645. 0,
  33646. 4,
  33647. };
  33648. static long _vq_lengthlist__8u0__p6_1[] = {
  33649. 1, 4, 4, 6, 6, 4, 6, 5, 7, 7, 4, 5, 6, 7, 7, 6,
  33650. 7, 7, 7, 7, 6, 7, 7, 7, 7,
  33651. };
  33652. static float _vq_quantthresh__8u0__p6_1[] = {
  33653. -1.5, -0.5, 0.5, 1.5,
  33654. };
  33655. static long _vq_quantmap__8u0__p6_1[] = {
  33656. 3, 1, 0, 2, 4,
  33657. };
  33658. static encode_aux_threshmatch _vq_auxt__8u0__p6_1 = {
  33659. _vq_quantthresh__8u0__p6_1,
  33660. _vq_quantmap__8u0__p6_1,
  33661. 5,
  33662. 5
  33663. };
  33664. static static_codebook _8u0__p6_1 = {
  33665. 2, 25,
  33666. _vq_lengthlist__8u0__p6_1,
  33667. 1, -533725184, 1611661312, 3, 0,
  33668. _vq_quantlist__8u0__p6_1,
  33669. NULL,
  33670. &_vq_auxt__8u0__p6_1,
  33671. NULL,
  33672. 0
  33673. };
  33674. static long _vq_quantlist__8u0__p7_0[] = {
  33675. 1,
  33676. 0,
  33677. 2,
  33678. };
  33679. static long _vq_lengthlist__8u0__p7_0[] = {
  33680. 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  33681. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  33682. 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  33683. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  33684. 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  33685. 7,
  33686. };
  33687. static float _vq_quantthresh__8u0__p7_0[] = {
  33688. -157.5, 157.5,
  33689. };
  33690. static long _vq_quantmap__8u0__p7_0[] = {
  33691. 1, 0, 2,
  33692. };
  33693. static encode_aux_threshmatch _vq_auxt__8u0__p7_0 = {
  33694. _vq_quantthresh__8u0__p7_0,
  33695. _vq_quantmap__8u0__p7_0,
  33696. 3,
  33697. 3
  33698. };
  33699. static static_codebook _8u0__p7_0 = {
  33700. 4, 81,
  33701. _vq_lengthlist__8u0__p7_0,
  33702. 1, -518803456, 1628680192, 2, 0,
  33703. _vq_quantlist__8u0__p7_0,
  33704. NULL,
  33705. &_vq_auxt__8u0__p7_0,
  33706. NULL,
  33707. 0
  33708. };
  33709. static long _vq_quantlist__8u0__p7_1[] = {
  33710. 7,
  33711. 6,
  33712. 8,
  33713. 5,
  33714. 9,
  33715. 4,
  33716. 10,
  33717. 3,
  33718. 11,
  33719. 2,
  33720. 12,
  33721. 1,
  33722. 13,
  33723. 0,
  33724. 14,
  33725. };
  33726. static long _vq_lengthlist__8u0__p7_1[] = {
  33727. 1, 5, 5, 5, 5,10,10,11,11,11,11,11,11,11,11, 5,
  33728. 7, 6, 8, 8, 9,10,11,11,11,11,11,11,11,11, 6, 6,
  33729. 7, 9, 7,11,10,11,11,11,11,11,11,11,11, 5, 6, 6,
  33730. 11, 8,11,11,11,11,11,11,11,11,11,11, 5, 6, 6, 9,
  33731. 10,11,10,11,11,11,11,11,11,11,11, 7,10,10,11,11,
  33732. 11,11,11,11,11,11,11,11,11,11, 7,11, 8,11,11,11,
  33733. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  33734. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  33735. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  33736. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  33737. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  33738. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  33739. 11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,
  33740. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  33741. 10,
  33742. };
  33743. static float _vq_quantthresh__8u0__p7_1[] = {
  33744. -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5,
  33745. 31.5, 52.5, 73.5, 94.5, 115.5, 136.5,
  33746. };
  33747. static long _vq_quantmap__8u0__p7_1[] = {
  33748. 13, 11, 9, 7, 5, 3, 1, 0,
  33749. 2, 4, 6, 8, 10, 12, 14,
  33750. };
  33751. static encode_aux_threshmatch _vq_auxt__8u0__p7_1 = {
  33752. _vq_quantthresh__8u0__p7_1,
  33753. _vq_quantmap__8u0__p7_1,
  33754. 15,
  33755. 15
  33756. };
  33757. static static_codebook _8u0__p7_1 = {
  33758. 2, 225,
  33759. _vq_lengthlist__8u0__p7_1,
  33760. 1, -520986624, 1620377600, 4, 0,
  33761. _vq_quantlist__8u0__p7_1,
  33762. NULL,
  33763. &_vq_auxt__8u0__p7_1,
  33764. NULL,
  33765. 0
  33766. };
  33767. static long _vq_quantlist__8u0__p7_2[] = {
  33768. 10,
  33769. 9,
  33770. 11,
  33771. 8,
  33772. 12,
  33773. 7,
  33774. 13,
  33775. 6,
  33776. 14,
  33777. 5,
  33778. 15,
  33779. 4,
  33780. 16,
  33781. 3,
  33782. 17,
  33783. 2,
  33784. 18,
  33785. 1,
  33786. 19,
  33787. 0,
  33788. 20,
  33789. };
  33790. static long _vq_lengthlist__8u0__p7_2[] = {
  33791. 1, 6, 5, 7, 7, 9, 9, 9, 9,10,12,12,10,11,11,10,
  33792. 11,11,11,10,11, 6, 8, 8, 9, 9,10,10, 9,10,11,11,
  33793. 10,11,11,11,11,10,11,11,11,11, 6, 7, 8, 9, 9, 9,
  33794. 10,11,10,11,12,11,10,11,11,11,11,11,11,12,10, 8,
  33795. 9, 9,10, 9,10,10, 9,10,10,10,10,10, 9,10,10,10,
  33796. 10, 9,10,10, 9, 9, 9, 9,10,10, 9, 9,10,10,11,10,
  33797. 9,12,10,11,10, 9,10,10,10, 8, 9, 9,10, 9,10, 9,
  33798. 9,10,10, 9,10, 9,11,10,10,10,10,10, 9,10, 8, 8,
  33799. 9, 9,10, 9,11, 9, 8, 9, 9,10,11,10,10,10,11,12,
  33800. 9, 9,11, 8, 9, 8,11,10,11,10,10, 9,11,10,10,10,
  33801. 10,10,10,10,11,11,11,11, 8, 9, 9, 9,10,10,10,11,
  33802. 11,12,11,12,11,10,10,10,12,11,11,11,10, 8,10, 9,
  33803. 11,10,10,11,12,10,11,12,11,11,12,11,12,12,10,11,
  33804. 11,10, 9, 9,10,11,12,10,10,10,11,10,11,11,10,12,
  33805. 12,10,11,10,11,12,10, 9,10,10,11,10,11,11,11,11,
  33806. 11,12,11,11,11, 9,11,10,11,10,11,10, 9, 9,10,11,
  33807. 11,11,10,10,11,12,12,11,12,11,11,11,12,12,12,12,
  33808. 11, 9,11,11,12,10,11,11,11,11,11,11,12,11,11,12,
  33809. 11,11,11,10,11,11, 9,11,10,11,11,11,10,10,10,11,
  33810. 11,11,12,10,11,10,11,11,11,11,12, 9,11,10,11,11,
  33811. 10,10,11,11, 9,11,11,12,10,10,10,10,10,11,11,10,
  33812. 9,10,11,11,12,11,10,10,12,11,11,12,11,12,11,11,
  33813. 10,10,11,11,10,12,11,10,11,10,11,10,10,10,11,11,
  33814. 10,10,11,11,11,11,10,10,10,12,11,11,11,11,10, 9,
  33815. 10,11,11,11,12,11,11,11,12,10,11,11,11, 9,10,11,
  33816. 11,11,11,11,11,10,10,11,11,12,11,10,11,12,11,10,
  33817. 10,11, 9,10,11,11,11,11,11,10,11,11,10,12,11,11,
  33818. 11,12,11,11,11,10,10,11,11,
  33819. };
  33820. static float _vq_quantthresh__8u0__p7_2[] = {
  33821. -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5,
  33822. -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
  33823. 6.5, 7.5, 8.5, 9.5,
  33824. };
  33825. static long _vq_quantmap__8u0__p7_2[] = {
  33826. 19, 17, 15, 13, 11, 9, 7, 5,
  33827. 3, 1, 0, 2, 4, 6, 8, 10,
  33828. 12, 14, 16, 18, 20,
  33829. };
  33830. static encode_aux_threshmatch _vq_auxt__8u0__p7_2 = {
  33831. _vq_quantthresh__8u0__p7_2,
  33832. _vq_quantmap__8u0__p7_2,
  33833. 21,
  33834. 21
  33835. };
  33836. static static_codebook _8u0__p7_2 = {
  33837. 2, 441,
  33838. _vq_lengthlist__8u0__p7_2,
  33839. 1, -529268736, 1611661312, 5, 0,
  33840. _vq_quantlist__8u0__p7_2,
  33841. NULL,
  33842. &_vq_auxt__8u0__p7_2,
  33843. NULL,
  33844. 0
  33845. };
  33846. static long _huff_lengthlist__8u0__single[] = {
  33847. 4, 7,11, 9,12, 8, 7,10, 6, 4, 5, 5, 7, 5, 6,16,
  33848. 9, 5, 5, 6, 7, 7, 9,16, 7, 4, 6, 5, 7, 5, 7,17,
  33849. 10, 7, 7, 8, 7, 7, 8,18, 7, 5, 6, 4, 5, 4, 5,15,
  33850. 7, 6, 7, 5, 6, 4, 5,15,12,13,18,12,17,11, 9,17,
  33851. };
  33852. static static_codebook _huff_book__8u0__single = {
  33853. 2, 64,
  33854. _huff_lengthlist__8u0__single,
  33855. 0, 0, 0, 0, 0,
  33856. NULL,
  33857. NULL,
  33858. NULL,
  33859. NULL,
  33860. 0
  33861. };
  33862. static long _vq_quantlist__8u1__p1_0[] = {
  33863. 1,
  33864. 0,
  33865. 2,
  33866. };
  33867. static long _vq_lengthlist__8u1__p1_0[] = {
  33868. 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 7, 9,10, 7,
  33869. 9, 9, 5, 8, 8, 7,10, 9, 7, 9, 9, 5, 8, 8, 8,10,
  33870. 10, 8,10,10, 7,10,10, 9,10,12,10,12,12, 7,10,10,
  33871. 9,12,11,10,12,12, 5, 8, 8, 8,10,10, 8,10,10, 7,
  33872. 10,10,10,12,12, 9,11,12, 7,10,10,10,12,12, 9,12,
  33873. 10,
  33874. };
  33875. static float _vq_quantthresh__8u1__p1_0[] = {
  33876. -0.5, 0.5,
  33877. };
  33878. static long _vq_quantmap__8u1__p1_0[] = {
  33879. 1, 0, 2,
  33880. };
  33881. static encode_aux_threshmatch _vq_auxt__8u1__p1_0 = {
  33882. _vq_quantthresh__8u1__p1_0,
  33883. _vq_quantmap__8u1__p1_0,
  33884. 3,
  33885. 3
  33886. };
  33887. static static_codebook _8u1__p1_0 = {
  33888. 4, 81,
  33889. _vq_lengthlist__8u1__p1_0,
  33890. 1, -535822336, 1611661312, 2, 0,
  33891. _vq_quantlist__8u1__p1_0,
  33892. NULL,
  33893. &_vq_auxt__8u1__p1_0,
  33894. NULL,
  33895. 0
  33896. };
  33897. static long _vq_quantlist__8u1__p2_0[] = {
  33898. 1,
  33899. 0,
  33900. 2,
  33901. };
  33902. static long _vq_lengthlist__8u1__p2_0[] = {
  33903. 3, 4, 5, 5, 6, 6, 5, 6, 6, 5, 7, 6, 6, 7, 8, 6,
  33904. 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 7, 8,
  33905. 8, 6, 7, 7, 6, 8, 7, 7, 7, 9, 8, 9, 9, 6, 7, 8,
  33906. 7, 9, 7, 8, 9, 9, 5, 6, 6, 6, 7, 7, 7, 8, 8, 6,
  33907. 8, 7, 8, 9, 9, 7, 7, 9, 6, 7, 8, 8, 9, 9, 7, 9,
  33908. 7,
  33909. };
  33910. static float _vq_quantthresh__8u1__p2_0[] = {
  33911. -0.5, 0.5,
  33912. };
  33913. static long _vq_quantmap__8u1__p2_0[] = {
  33914. 1, 0, 2,
  33915. };
  33916. static encode_aux_threshmatch _vq_auxt__8u1__p2_0 = {
  33917. _vq_quantthresh__8u1__p2_0,
  33918. _vq_quantmap__8u1__p2_0,
  33919. 3,
  33920. 3
  33921. };
  33922. static static_codebook _8u1__p2_0 = {
  33923. 4, 81,
  33924. _vq_lengthlist__8u1__p2_0,
  33925. 1, -535822336, 1611661312, 2, 0,
  33926. _vq_quantlist__8u1__p2_0,
  33927. NULL,
  33928. &_vq_auxt__8u1__p2_0,
  33929. NULL,
  33930. 0
  33931. };
  33932. static long _vq_quantlist__8u1__p3_0[] = {
  33933. 2,
  33934. 1,
  33935. 3,
  33936. 0,
  33937. 4,
  33938. };
  33939. static long _vq_lengthlist__8u1__p3_0[] = {
  33940. 1, 5, 5, 7, 7, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
  33941. 10, 9,11,11, 9, 9, 9,11,11, 6, 8, 8,10,10, 8,10,
  33942. 10,11,11, 8, 9,10,11,11,10,11,11,12,12,10,11,11,
  33943. 12,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10, 9,11,
  33944. 11,10,11,11,12,12,10,11,11,12,12, 9,11,11,14,13,
  33945. 10,12,11,14,14,10,12,11,14,13,12,13,13,15,14,12,
  33946. 13,13,15,14, 8,11,11,13,14,10,11,12,13,15,10,11,
  33947. 12,14,14,12,13,13,14,15,12,13,13,14,15, 5, 8, 8,
  33948. 11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
  33949. 13,11,12,12,13,14, 8,10,10,12,12, 9,11,12,13,14,
  33950. 10,12,12,13,13,12,12,13,14,14,11,13,13,15,15, 7,
  33951. 10,10,12,12, 9,12,11,14,12,10,11,12,13,14,12,13,
  33952. 12,14,14,12,13,13,15,16,10,12,12,15,14,11,12,13,
  33953. 15,15,11,13,13,15,16,14,14,15,15,16,13,14,15,17,
  33954. 15, 9,12,12,14,15,11,13,12,15,15,11,13,13,15,15,
  33955. 13,14,13,15,14,13,14,14,17, 0, 5, 8, 8,11,11, 8,
  33956. 10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
  33957. 12,14,14, 7,10,10,12,12,10,12,12,13,13, 9,11,12,
  33958. 12,13,11,12,13,15,15,11,12,13,14,15, 8,10,10,12,
  33959. 12,10,12,11,13,13,10,12,11,13,13,11,13,13,15,14,
  33960. 12,13,12,15,13, 9,12,12,14,14,11,13,13,16,15,11,
  33961. 12,13,16,15,13,14,15,16,16,13,13,15,15,16,10,12,
  33962. 12,15,14,11,13,13,14,16,11,13,13,15,16,13,15,15,
  33963. 16,17,13,15,14,16,15, 8,11,11,14,15,10,12,12,15,
  33964. 15,10,12,12,15,16,14,15,15,16,17,13,14,14,16,16,
  33965. 9,12,12,15,15,11,13,14,15,17,11,13,13,15,16,14,
  33966. 15,16,19,17,13,15,15, 0,17, 9,12,12,15,15,11,14,
  33967. 13,16,15,11,13,13,15,16,15,15,15,18,17,13,15,15,
  33968. 17,17,11,15,14,18,16,12,14,15,17,17,12,15,15,18,
  33969. 18,15,15,16,15,19,14,16,16, 0, 0,11,14,14,16,17,
  33970. 12,15,14,18,17,12,15,15,18,18,15,17,15,18,16,14,
  33971. 16,16,18,18, 7,11,11,14,14,10,12,12,15,15,10,12,
  33972. 13,15,15,13,14,15,16,16,14,15,15,18,18, 9,12,12,
  33973. 15,15,11,13,13,16,15,11,12,13,16,16,14,15,15,17,
  33974. 16,15,16,16,17,17, 9,12,12,15,15,11,13,13,15,17,
  33975. 11,14,13,16,15,13,15,15,17,17,15,15,15,18,17,11,
  33976. 14,14,17,15,12,14,15,17,18,13,13,15,17,17,14,16,
  33977. 16,19,18,16,15,17,17, 0,11,14,14,17,17,12,15,15,
  33978. 18, 0,12,15,14,18,16,14,17,17,19, 0,16,18,15, 0,
  33979. 16,
  33980. };
  33981. static float _vq_quantthresh__8u1__p3_0[] = {
  33982. -1.5, -0.5, 0.5, 1.5,
  33983. };
  33984. static long _vq_quantmap__8u1__p3_0[] = {
  33985. 3, 1, 0, 2, 4,
  33986. };
  33987. static encode_aux_threshmatch _vq_auxt__8u1__p3_0 = {
  33988. _vq_quantthresh__8u1__p3_0,
  33989. _vq_quantmap__8u1__p3_0,
  33990. 5,
  33991. 5
  33992. };
  33993. static static_codebook _8u1__p3_0 = {
  33994. 4, 625,
  33995. _vq_lengthlist__8u1__p3_0,
  33996. 1, -533725184, 1611661312, 3, 0,
  33997. _vq_quantlist__8u1__p3_0,
  33998. NULL,
  33999. &_vq_auxt__8u1__p3_0,
  34000. NULL,
  34001. 0
  34002. };
  34003. static long _vq_quantlist__8u1__p4_0[] = {
  34004. 2,
  34005. 1,
  34006. 3,
  34007. 0,
  34008. 4,
  34009. };
  34010. static long _vq_lengthlist__8u1__p4_0[] = {
  34011. 4, 5, 5, 9, 9, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 9,
  34012. 9, 9,11,11, 9, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 7,
  34013. 8, 9,10, 7, 7, 8, 9,10, 9, 9,10,10,11, 9, 9,10,
  34014. 10,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 7,10,
  34015. 9, 9,10, 9,12,11,10,10, 9,12,10, 9,10,10,12,11,
  34016. 9,10,10,12,11, 9,10,10,12,12,11,11,12,12,13,11,
  34017. 11,12,12,13, 9, 9,10,12,11, 9,10,10,12,12,10,10,
  34018. 10,12,12,11,12,11,13,12,11,12,11,13,12, 6, 7, 7,
  34019. 9, 9, 7, 8, 8,10,10, 7, 8, 7,10, 9,10,10,10,12,
  34020. 12,10,10,10,12,11, 7, 8, 7,10,10, 7, 7, 9,10,11,
  34021. 8, 9, 9,11,10,10,10,11,10,12,10,10,11,12,12, 7,
  34022. 8, 8,10,10, 7, 9, 8,11,10, 8, 8, 9,11,11,10,11,
  34023. 10,12,11,10,11,11,12,12, 9,10,10,12,12, 9,10,10,
  34024. 12,12,10,11,11,13,12,11,10,12,10,14,12,12,12,13,
  34025. 14, 9,10,10,12,12, 9,11,10,12,12,10,11,11,12,12,
  34026. 11,12,11,14,12,12,12,12,14,14, 5, 7, 7, 9, 9, 7,
  34027. 7, 7, 9,10, 7, 8, 8,10,10,10,10,10,11,11,10,10,
  34028. 10,12,12, 7, 8, 8,10,10, 8, 9, 8,11,10, 7, 8, 9,
  34029. 10,11,10,10,10,11,12,10,10,11,11,13, 6, 7, 8,10,
  34030. 10, 8, 9, 9,10,10, 7, 9, 7,11,10,10,11,10,12,12,
  34031. 10,11,10,12,10, 9,10,10,12,12,10,11,11,13,12, 9,
  34032. 10,10,12,12,12,12,12,14,13,11,11,12,11,14, 9,10,
  34033. 10,11,12,10,11,11,12,13, 9,10,10,12,12,12,12,12,
  34034. 14,13,11,12,10,14,11, 9, 9,10,11,12, 9,10,10,12,
  34035. 12, 9,10,10,12,12,12,12,12,14,14,11,12,12,13,12,
  34036. 9,10, 9,12,12, 9,10,11,12,13,10,11,10,13,11,12,
  34037. 12,13,13,14,12,12,12,13,13, 9,10,10,12,12,10,11,
  34038. 10,13,12,10,10,11,12,13,12,13,12,14,13,12,12,12,
  34039. 13,14,11,12,11,14,13,10,10,11,13,13,12,12,12,14,
  34040. 13,12,10,14,10,15,13,14,14,14,14,11,11,12,13,14,
  34041. 10,12,11,13,13,12,12,12,13,15,12,13,11,15,12,13,
  34042. 13,14,14,14, 9,10, 9,12,12, 9,10,10,12,12,10,10,
  34043. 10,12,12,11,11,12,12,13,12,12,12,14,14, 9,10,10,
  34044. 12,12,10,11,10,13,12,10,10,11,12,13,12,12,12,14,
  34045. 13,12,12,13,13,14, 9,10,10,12,13,10,10,11,11,12,
  34046. 9,11,10,13,12,12,12,12,13,14,12,13,12,14,13,11,
  34047. 12,11,13,13,12,13,12,14,13,10,11,12,13,13,13,13,
  34048. 13,14,15,12,11,14,12,14,11,11,12,12,13,12,12,12,
  34049. 13,14,10,12,10,14,13,13,13,13,14,15,12,14,11,15,
  34050. 10,
  34051. };
  34052. static float _vq_quantthresh__8u1__p4_0[] = {
  34053. -1.5, -0.5, 0.5, 1.5,
  34054. };
  34055. static long _vq_quantmap__8u1__p4_0[] = {
  34056. 3, 1, 0, 2, 4,
  34057. };
  34058. static encode_aux_threshmatch _vq_auxt__8u1__p4_0 = {
  34059. _vq_quantthresh__8u1__p4_0,
  34060. _vq_quantmap__8u1__p4_0,
  34061. 5,
  34062. 5
  34063. };
  34064. static static_codebook _8u1__p4_0 = {
  34065. 4, 625,
  34066. _vq_lengthlist__8u1__p4_0,
  34067. 1, -533725184, 1611661312, 3, 0,
  34068. _vq_quantlist__8u1__p4_0,
  34069. NULL,
  34070. &_vq_auxt__8u1__p4_0,
  34071. NULL,
  34072. 0
  34073. };
  34074. static long _vq_quantlist__8u1__p5_0[] = {
  34075. 4,
  34076. 3,
  34077. 5,
  34078. 2,
  34079. 6,
  34080. 1,
  34081. 7,
  34082. 0,
  34083. 8,
  34084. };
  34085. static long _vq_lengthlist__8u1__p5_0[] = {
  34086. 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 5, 8, 7, 8, 8,
  34087. 10,10, 4, 6, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
  34088. 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8,
  34089. 9, 9,10,10,12,11, 8, 8, 8, 9, 9,10,10,11,11, 9,
  34090. 10,10,11,11,11,11,13,12, 9,10,10,11,11,12,12,12,
  34091. 13,
  34092. };
  34093. static float _vq_quantthresh__8u1__p5_0[] = {
  34094. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  34095. };
  34096. static long _vq_quantmap__8u1__p5_0[] = {
  34097. 7, 5, 3, 1, 0, 2, 4, 6,
  34098. 8,
  34099. };
  34100. static encode_aux_threshmatch _vq_auxt__8u1__p5_0 = {
  34101. _vq_quantthresh__8u1__p5_0,
  34102. _vq_quantmap__8u1__p5_0,
  34103. 9,
  34104. 9
  34105. };
  34106. static static_codebook _8u1__p5_0 = {
  34107. 2, 81,
  34108. _vq_lengthlist__8u1__p5_0,
  34109. 1, -531628032, 1611661312, 4, 0,
  34110. _vq_quantlist__8u1__p5_0,
  34111. NULL,
  34112. &_vq_auxt__8u1__p5_0,
  34113. NULL,
  34114. 0
  34115. };
  34116. static long _vq_quantlist__8u1__p6_0[] = {
  34117. 4,
  34118. 3,
  34119. 5,
  34120. 2,
  34121. 6,
  34122. 1,
  34123. 7,
  34124. 0,
  34125. 8,
  34126. };
  34127. static long _vq_lengthlist__8u1__p6_0[] = {
  34128. 3, 4, 4, 6, 6, 7, 7, 9, 9, 4, 4, 5, 6, 6, 7, 7,
  34129. 9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7,
  34130. 8, 8, 9, 9, 6, 6, 6, 7, 7, 8, 8, 9, 9, 7, 7, 7,
  34131. 8, 8, 8, 9,10,10, 7, 7, 7, 8, 8, 9, 8,10,10, 9,
  34132. 9, 9, 9, 9,10,10,10,10, 9, 9, 9, 9, 9,10,10,10,
  34133. 10,
  34134. };
  34135. static float _vq_quantthresh__8u1__p6_0[] = {
  34136. -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
  34137. };
  34138. static long _vq_quantmap__8u1__p6_0[] = {
  34139. 7, 5, 3, 1, 0, 2, 4, 6,
  34140. 8,
  34141. };
  34142. static encode_aux_threshmatch _vq_auxt__8u1__p6_0 = {
  34143. _vq_quantthresh__8u1__p6_0,
  34144. _vq_quantmap__8u1__p6_0,
  34145. 9,
  34146. 9
  34147. };
  34148. static static_codebook _8u1__p6_0 = {
  34149. 2, 81,
  34150. _vq_lengthlist__8u1__p6_0,
  34151. 1, -531628032, 1611661312, 4, 0,
  34152. _vq_quantlist__8u1__p6_0,
  34153. NULL,
  34154. &_vq_auxt__8u1__p6_0,
  34155. NULL,
  34156. 0
  34157. };
  34158. static long _vq_quantlist__8u1__p7_0[] = {
  34159. 1,
  34160. 0,
  34161. 2,
  34162. };
  34163. static long _vq_lengthlist__8u1__p7_0[] = {
  34164. 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 9, 8,10,10, 8,
  34165. 10,10, 5, 9, 9, 7,10,10, 8,10,10, 4,10,10, 9,12,
  34166. 12, 9,11,11, 7,12,11,10,11,13,10,13,13, 7,12,12,
  34167. 10,13,12,10,13,13, 4,10,10, 9,12,12, 9,12,12, 7,
  34168. 12,12,10,13,13,10,12,13, 7,11,12,10,13,13,10,13,
  34169. 11,
  34170. };
  34171. static float _vq_quantthresh__8u1__p7_0[] = {
  34172. -5.5, 5.5,
  34173. };
  34174. static long _vq_quantmap__8u1__p7_0[] = {
  34175. 1, 0, 2,
  34176. };
  34177. static encode_aux_threshmatch _vq_auxt__8u1__p7_0 = {
  34178. _vq_quantthresh__8u1__p7_0,
  34179. _vq_quantmap__8u1__p7_0,
  34180. 3,
  34181. 3
  34182. };
  34183. static static_codebook _8u1__p7_0 = {
  34184. 4, 81,
  34185. _vq_lengthlist__8u1__p7_0,
  34186. 1, -529137664, 1618345984, 2, 0,
  34187. _vq_quantlist__8u1__p7_0,
  34188. NULL,
  34189. &_vq_auxt__8u1__p7_0,
  34190. NULL,
  34191. 0
  34192. };
  34193. static long _vq_quantlist__8u1__p7_1[] = {
  34194. 5,
  34195. 4,
  34196. 6,
  34197. 3,
  34198. 7,
  34199. 2,
  34200. 8,
  34201. 1,
  34202. 9,
  34203. 0,
  34204. 10,
  34205. };
  34206. static long _vq_lengthlist__8u1__p7_1[] = {
  34207. 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 7,
  34208. 8, 8, 9, 9, 9, 9, 4, 5, 5, 7, 7, 8, 8, 9, 9, 9,
  34209. 9, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8,
  34210. 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9,
  34211. 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 9, 9,
  34212. 9, 9, 9, 9,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
  34213. 10,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10, 8, 9,
  34214. 9, 9, 9, 9, 9,10,10,10,10,
  34215. };
  34216. static float _vq_quantthresh__8u1__p7_1[] = {
  34217. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  34218. 3.5, 4.5,
  34219. };
  34220. static long _vq_quantmap__8u1__p7_1[] = {
  34221. 9, 7, 5, 3, 1, 0, 2, 4,
  34222. 6, 8, 10,
  34223. };
  34224. static encode_aux_threshmatch _vq_auxt__8u1__p7_1 = {
  34225. _vq_quantthresh__8u1__p7_1,
  34226. _vq_quantmap__8u1__p7_1,
  34227. 11,
  34228. 11
  34229. };
  34230. static static_codebook _8u1__p7_1 = {
  34231. 2, 121,
  34232. _vq_lengthlist__8u1__p7_1,
  34233. 1, -531365888, 1611661312, 4, 0,
  34234. _vq_quantlist__8u1__p7_1,
  34235. NULL,
  34236. &_vq_auxt__8u1__p7_1,
  34237. NULL,
  34238. 0
  34239. };
  34240. static long _vq_quantlist__8u1__p8_0[] = {
  34241. 5,
  34242. 4,
  34243. 6,
  34244. 3,
  34245. 7,
  34246. 2,
  34247. 8,
  34248. 1,
  34249. 9,
  34250. 0,
  34251. 10,
  34252. };
  34253. static long _vq_lengthlist__8u1__p8_0[] = {
  34254. 1, 4, 4, 6, 6, 8, 8,10,10,11,11, 4, 6, 6, 7, 7,
  34255. 9, 9,11,11,13,12, 4, 6, 6, 7, 7, 9, 9,11,11,12,
  34256. 12, 6, 7, 7, 9, 9,11,11,12,12,13,13, 6, 7, 7, 9,
  34257. 9,11,11,12,12,13,13, 8, 9, 9,11,11,12,12,13,13,
  34258. 14,14, 8, 9, 9,11,11,12,12,13,13,14,14, 9,11,11,
  34259. 12,12,13,13,14,14,15,15, 9,11,11,12,12,13,13,14,
  34260. 14,15,14,11,12,12,13,13,14,14,15,15,16,16,11,12,
  34261. 12,13,13,14,14,15,15,15,15,
  34262. };
  34263. static float _vq_quantthresh__8u1__p8_0[] = {
  34264. -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5,
  34265. 38.5, 49.5,
  34266. };
  34267. static long _vq_quantmap__8u1__p8_0[] = {
  34268. 9, 7, 5, 3, 1, 0, 2, 4,
  34269. 6, 8, 10,
  34270. };
  34271. static encode_aux_threshmatch _vq_auxt__8u1__p8_0 = {
  34272. _vq_quantthresh__8u1__p8_0,
  34273. _vq_quantmap__8u1__p8_0,
  34274. 11,
  34275. 11
  34276. };
  34277. static static_codebook _8u1__p8_0 = {
  34278. 2, 121,
  34279. _vq_lengthlist__8u1__p8_0,
  34280. 1, -524582912, 1618345984, 4, 0,
  34281. _vq_quantlist__8u1__p8_0,
  34282. NULL,
  34283. &_vq_auxt__8u1__p8_0,
  34284. NULL,
  34285. 0
  34286. };
  34287. static long _vq_quantlist__8u1__p8_1[] = {
  34288. 5,
  34289. 4,
  34290. 6,
  34291. 3,
  34292. 7,
  34293. 2,
  34294. 8,
  34295. 1,
  34296. 9,
  34297. 0,
  34298. 10,
  34299. };
  34300. static long _vq_lengthlist__8u1__p8_1[] = {
  34301. 2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 7,
  34302. 7, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8,
  34303. 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7,
  34304. 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
  34305. 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  34306. 8, 8, 8, 8, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 9,
  34307. 8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8,
  34308. 8, 8, 8, 8, 8, 9, 9, 9, 9,
  34309. };
  34310. static float _vq_quantthresh__8u1__p8_1[] = {
  34311. -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
  34312. 3.5, 4.5,
  34313. };
  34314. static long _vq_quantmap__8u1__p8_1[] = {
  34315. 9, 7, 5, 3, 1, 0, 2, 4,
  34316. 6, 8, 10,
  34317. };
  34318. static encode_aux_threshmatch _vq_auxt__8u1__p8_1 = {
  34319. _vq_quantthresh__8u1__p8_1,
  34320. _vq_quantmap__8u1__p8_1,
  34321. 11,
  34322. 11
  34323. };
  34324. static static_codebook _8u1__p8_1 = {
  34325. 2, 121,
  34326. _vq_lengthlist__8u1__p8_1,
  34327. 1, -531365888, 1611661312, 4, 0,
  34328. _vq_quantlist__8u1__p8_1,
  34329. NULL,
  34330. &_vq_auxt__8u1__p8_1,
  34331. NULL,
  34332. 0
  34333. };
  34334. static long _vq_quantlist__8u1__p9_0[] = {
  34335. 7,
  34336. 6,
  34337. 8,
  34338. 5,
  34339. 9,
  34340. 4,
  34341. 10,
  34342. 3,
  34343. 11,
  34344. 2,
  34345. 12,
  34346. 1,
  34347. 13,
  34348. 0,
  34349. 14,
  34350. };
  34351. static long _vq_lengthlist__8u1__p9_0[] = {
  34352. 1, 4, 4,11,11,11,11,11,11,11,11,11,11,11,11, 3,
  34353. 11, 8,11,11,11,11,11,11,11,11,11,11,11,11, 3, 9,
  34354. 9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  34355. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  34356. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  34357. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  34358. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  34359. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  34360. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  34361. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  34362. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  34363. 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  34364. 11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,
  34365. 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  34366. 10,
  34367. };
  34368. static float _vq_quantthresh__8u1__p9_0[] = {
  34369. -1657.5, -1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5,
  34370. 382.5, 637.5, 892.5, 1147.5, 1402.5, 1657.5,
  34371. };
  34372. static long _vq_quantmap__8u1__p9_0[] = {
  34373. 13, 11, 9, 7, 5, 3, 1, 0,
  34374. 2, 4, 6, 8, 10, 12, 14,
  34375. };
  34376. static encode_aux_threshmatch _vq_auxt__8u1__p9_0 = {
  34377. _vq_quantthresh__8u1__p9_0,
  34378. _vq_quantmap__8u1__p9_0,
  34379. 15,
  34380. 15
  34381. };
  34382. static static_codebook _8u1__p9_0 = {
  34383. 2, 225,
  34384. _vq_lengthlist__8u1__p9_0,
  34385. 1, -514071552, 1627381760, 4, 0,
  34386. _vq_quantlist__8u1__p9_0,
  34387. NULL,
  34388. &_vq_auxt__8u1__p9_0,
  34389. NULL,
  34390. 0
  34391. };
  34392. static long _vq_quantlist__8u1__p9_1[] = {
  34393. 7,
  34394. 6,
  34395. 8,
  34396. 5,
  34397. 9,
  34398. 4,
  34399. 10,
  34400. 3,
  34401. 11,
  34402. 2,
  34403. 12,
  34404. 1,
  34405. 13,
  34406. 0,
  34407. 14,
  34408. };
  34409. static long _vq_lengthlist__8u1__p9_1[] = {
  34410. 1, 4, 4, 7, 7, 9, 9, 7, 7, 8, 8,10,10,11,11, 4,
  34411. 7, 7, 9, 9,10,10, 8, 8,10,10,10,11,10,11, 4, 7,
  34412. 7, 9, 9,10,10, 8, 8,10, 9,11,11,11,11, 7, 9, 9,
  34413. 12,12,11,12,10,10,11,10,12,11,11,11, 7, 9, 9,11,
  34414. 11,13,12, 9, 9,11,10,11,11,12,11, 9,10,10,12,12,
  34415. 14,14,10,10,11,12,12,11,11,11, 9,10,11,11,13,14,
  34416. 13,10,11,11,11,12,11,12,12, 7, 8, 8,10, 9,11,10,
  34417. 11,12,12,11,12,14,12,13, 7, 8, 8, 9,10,10,11,12,
  34418. 12,12,11,12,12,12,13, 9, 9, 9,11,11,13,12,12,12,
  34419. 12,11,12,12,13,12, 8,10,10,11,10,11,12,12,12,12,
  34420. 12,12,14,12,12, 9,11,11,11,12,12,12,12,13,13,12,
  34421. 12,13,13,12,10,11,11,12,11,12,12,12,11,12,13,12,
  34422. 12,12,13,11,11,12,12,12,13,12,12,11,12,13,13,12,
  34423. 12,13,12,11,12,12,13,13,12,13,12,13,13,13,13,14,
  34424. 13,
  34425. };
  34426. static float _vq_quantthresh__8u1__p9_1[] = {
  34427. -110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5,
  34428. 25.5, 42.5, 59.5, 76.5, 93.5, 110.5,
  34429. };
  34430. static long _vq_quantmap__8u1__p9_1[] = {
  34431. 13, 11, 9, 7, 5, 3, 1, 0,
  34432. 2, 4, 6, 8, 10, 12, 14,
  34433. };
  34434. static encode_aux_threshmatch _vq_auxt__8u1__p9_1 = {
  34435. _vq_quantthresh__8u1__p9_1,
  34436. _vq_quantmap__8u1__p9_1,
  34437. 15,
  34438. 15
  34439. };
  34440. static static_codebook _8u1__p9_1 = {
  34441. 2, 225,
  34442. _vq_lengthlist__8u1__p9_1,
  34443. 1, -522338304, 1620115456, 4, 0,
  34444. _vq_quantlist__8u1__p9_1,
  34445. NULL,
  34446. &_vq_auxt__8u1__p9_1,
  34447. NULL,
  34448. 0
  34449. };
  34450. static long _vq_quantlist__8u1__p9_2[] = {
  34451. 8,
  34452. 7,
  34453. 9,
  34454. 6,
  34455. 10,
  34456. 5,
  34457. 11,
  34458. 4,
  34459. 12,
  34460. 3,
  34461. 13,
  34462. 2,
  34463. 14,
  34464. 1,
  34465. 15,
  34466. 0,
  34467. 16,
  34468. };
  34469. static long _vq_lengthlist__8u1__p9_2[] = {
  34470. 2, 5, 4, 6, 6, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
  34471. 9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,
  34472. 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9,
  34473. 9, 9, 9, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
  34474. 9,10,10, 9, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,
  34475. 9, 9, 9,10,10, 8, 8, 8, 9, 9, 9, 9,10,10,10, 9,
  34476. 10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
  34477. 10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,
  34478. 10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,10,10,
  34479. 10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,
  34480. 10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
  34481. 10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,10,
  34482. 10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
  34483. 9,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
  34484. 10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,10,
  34485. 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9,
  34486. 10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  34487. 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
  34488. 10,
  34489. };
  34490. static float _vq_quantthresh__8u1__p9_2[] = {
  34491. -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
  34492. 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
  34493. };
  34494. static long _vq_quantmap__8u1__p9_2[] = {
  34495. 15, 13, 11, 9, 7, 5, 3, 1,
  34496. 0, 2, 4, 6, 8, 10, 12, 14,
  34497. 16,
  34498. };
  34499. static encode_aux_threshmatch _vq_auxt__8u1__p9_2 = {
  34500. _vq_quantthresh__8u1__p9_2,
  34501. _vq_quantmap__8u1__p9_2,
  34502. 17,
  34503. 17
  34504. };
  34505. static static_codebook _8u1__p9_2 = {
  34506. 2, 289,
  34507. _vq_lengthlist__8u1__p9_2,
  34508. 1, -529530880, 1611661312, 5, 0,
  34509. _vq_quantlist__8u1__p9_2,
  34510. NULL,
  34511. &_vq_auxt__8u1__p9_2,
  34512. NULL,
  34513. 0
  34514. };
  34515. static long _huff_lengthlist__8u1__single[] = {
  34516. 4, 7,13, 9,15, 9,16, 8,10,13, 7, 5, 8, 6, 9, 7,
  34517. 10, 7,10,11,11, 6, 7, 8, 8, 9, 9, 9,12,16, 8, 5,
  34518. 8, 6, 8, 6, 9, 7,10,12,11, 7, 7, 7, 6, 7, 7, 7,
  34519. 11,15, 7, 5, 8, 6, 7, 5, 7, 6, 9,13,13, 9, 9, 8,
  34520. 6, 6, 5, 5, 9,14, 8, 6, 8, 6, 6, 4, 5, 3, 5,13,
  34521. 9, 9,11, 8,10, 7, 8, 4, 5,12,11,16,17,15,17,12,
  34522. 13, 8, 8,15,
  34523. };
  34524. static static_codebook _huff_book__8u1__single = {
  34525. 2, 100,
  34526. _huff_lengthlist__8u1__single,
  34527. 0, 0, 0, 0, 0,
  34528. NULL,
  34529. NULL,
  34530. NULL,
  34531. NULL,
  34532. 0
  34533. };
  34534. /***** residue backends *********************************************/
  34535. static vorbis_info_residue0 _residue_44_low_un={
  34536. 0,-1, -1, 8,-1,
  34537. {0},
  34538. {-1},
  34539. { .5, 1.5, 1.5, 2.5, 2.5, 4.5, 28.5},
  34540. { -1, 25, -1, 45, -1, -1, -1}
  34541. };
  34542. static vorbis_info_residue0 _residue_44_mid_un={
  34543. 0,-1, -1, 10,-1,
  34544. /* 0 1 2 3 4 5 6 7 8 9 */
  34545. {0},
  34546. {-1},
  34547. { .5, 1.5, 1.5, 2.5, 2.5, 4.5, 4.5, 16.5, 60.5},
  34548. { -1, 30, -1, 50, -1, 80, -1, -1, -1}
  34549. };
  34550. static vorbis_info_residue0 _residue_44_hi_un={
  34551. 0,-1, -1, 10,-1,
  34552. /* 0 1 2 3 4 5 6 7 8 9 */
  34553. {0},
  34554. {-1},
  34555. { .5, 1.5, 2.5, 4.5, 8.5, 16.5, 32.5, 71.5,157.5},
  34556. { -1, -1, -1, -1, -1, -1, -1, -1, -1}
  34557. };
  34558. /* mapping conventions:
  34559. only one submap (this would change for efficient 5.1 support for example)*/
  34560. /* Four psychoacoustic profiles are used, one for each blocktype */
  34561. static vorbis_info_mapping0 _map_nominal_u[2]={
  34562. {1, {0,0}, {0}, {0}, 0,{0},{0}},
  34563. {1, {0,0}, {1}, {1}, 0,{0},{0}}
  34564. };
  34565. static static_bookblock _resbook_44u_0={
  34566. {
  34567. {0},
  34568. {0,0,&_44u0__p1_0},
  34569. {0,0,&_44u0__p2_0},
  34570. {0,0,&_44u0__p3_0},
  34571. {0,0,&_44u0__p4_0},
  34572. {0,0,&_44u0__p5_0},
  34573. {&_44u0__p6_0,&_44u0__p6_1},
  34574. {&_44u0__p7_0,&_44u0__p7_1,&_44u0__p7_2}
  34575. }
  34576. };
  34577. static static_bookblock _resbook_44u_1={
  34578. {
  34579. {0},
  34580. {0,0,&_44u1__p1_0},
  34581. {0,0,&_44u1__p2_0},
  34582. {0,0,&_44u1__p3_0},
  34583. {0,0,&_44u1__p4_0},
  34584. {0,0,&_44u1__p5_0},
  34585. {&_44u1__p6_0,&_44u1__p6_1},
  34586. {&_44u1__p7_0,&_44u1__p7_1,&_44u1__p7_2}
  34587. }
  34588. };
  34589. static static_bookblock _resbook_44u_2={
  34590. {
  34591. {0},
  34592. {0,0,&_44u2__p1_0},
  34593. {0,0,&_44u2__p2_0},
  34594. {0,0,&_44u2__p3_0},
  34595. {0,0,&_44u2__p4_0},
  34596. {0,0,&_44u2__p5_0},
  34597. {&_44u2__p6_0,&_44u2__p6_1},
  34598. {&_44u2__p7_0,&_44u2__p7_1,&_44u2__p7_2}
  34599. }
  34600. };
  34601. static static_bookblock _resbook_44u_3={
  34602. {
  34603. {0},
  34604. {0,0,&_44u3__p1_0},
  34605. {0,0,&_44u3__p2_0},
  34606. {0,0,&_44u3__p3_0},
  34607. {0,0,&_44u3__p4_0},
  34608. {0,0,&_44u3__p5_0},
  34609. {&_44u3__p6_0,&_44u3__p6_1},
  34610. {&_44u3__p7_0,&_44u3__p7_1,&_44u3__p7_2}
  34611. }
  34612. };
  34613. static static_bookblock _resbook_44u_4={
  34614. {
  34615. {0},
  34616. {0,0,&_44u4__p1_0},
  34617. {0,0,&_44u4__p2_0},
  34618. {0,0,&_44u4__p3_0},
  34619. {0,0,&_44u4__p4_0},
  34620. {0,0,&_44u4__p5_0},
  34621. {&_44u4__p6_0,&_44u4__p6_1},
  34622. {&_44u4__p7_0,&_44u4__p7_1,&_44u4__p7_2}
  34623. }
  34624. };
  34625. static static_bookblock _resbook_44u_5={
  34626. {
  34627. {0},
  34628. {0,0,&_44u5__p1_0},
  34629. {0,0,&_44u5__p2_0},
  34630. {0,0,&_44u5__p3_0},
  34631. {0,0,&_44u5__p4_0},
  34632. {0,0,&_44u5__p5_0},
  34633. {0,0,&_44u5__p6_0},
  34634. {&_44u5__p7_0,&_44u5__p7_1},
  34635. {&_44u5__p8_0,&_44u5__p8_1},
  34636. {&_44u5__p9_0,&_44u5__p9_1,&_44u5__p9_2}
  34637. }
  34638. };
  34639. static static_bookblock _resbook_44u_6={
  34640. {
  34641. {0},
  34642. {0,0,&_44u6__p1_0},
  34643. {0,0,&_44u6__p2_0},
  34644. {0,0,&_44u6__p3_0},
  34645. {0,0,&_44u6__p4_0},
  34646. {0,0,&_44u6__p5_0},
  34647. {0,0,&_44u6__p6_0},
  34648. {&_44u6__p7_0,&_44u6__p7_1},
  34649. {&_44u6__p8_0,&_44u6__p8_1},
  34650. {&_44u6__p9_0,&_44u6__p9_1,&_44u6__p9_2}
  34651. }
  34652. };
  34653. static static_bookblock _resbook_44u_7={
  34654. {
  34655. {0},
  34656. {0,0,&_44u7__p1_0},
  34657. {0,0,&_44u7__p2_0},
  34658. {0,0,&_44u7__p3_0},
  34659. {0,0,&_44u7__p4_0},
  34660. {0,0,&_44u7__p5_0},
  34661. {0,0,&_44u7__p6_0},
  34662. {&_44u7__p7_0,&_44u7__p7_1},
  34663. {&_44u7__p8_0,&_44u7__p8_1},
  34664. {&_44u7__p9_0,&_44u7__p9_1,&_44u7__p9_2}
  34665. }
  34666. };
  34667. static static_bookblock _resbook_44u_8={
  34668. {
  34669. {0},
  34670. {0,0,&_44u8_p1_0},
  34671. {0,0,&_44u8_p2_0},
  34672. {0,0,&_44u8_p3_0},
  34673. {0,0,&_44u8_p4_0},
  34674. {&_44u8_p5_0,&_44u8_p5_1},
  34675. {&_44u8_p6_0,&_44u8_p6_1},
  34676. {&_44u8_p7_0,&_44u8_p7_1},
  34677. {&_44u8_p8_0,&_44u8_p8_1},
  34678. {&_44u8_p9_0,&_44u8_p9_1,&_44u8_p9_2}
  34679. }
  34680. };
  34681. static static_bookblock _resbook_44u_9={
  34682. {
  34683. {0},
  34684. {0,0,&_44u9_p1_0},
  34685. {0,0,&_44u9_p2_0},
  34686. {0,0,&_44u9_p3_0},
  34687. {0,0,&_44u9_p4_0},
  34688. {&_44u9_p5_0,&_44u9_p5_1},
  34689. {&_44u9_p6_0,&_44u9_p6_1},
  34690. {&_44u9_p7_0,&_44u9_p7_1},
  34691. {&_44u9_p8_0,&_44u9_p8_1},
  34692. {&_44u9_p9_0,&_44u9_p9_1,&_44u9_p9_2}
  34693. }
  34694. };
  34695. static vorbis_residue_template _res_44u_0[]={
  34696. {1,0, &_residue_44_low_un,
  34697. &_huff_book__44u0__short,&_huff_book__44u0__short,
  34698. &_resbook_44u_0,&_resbook_44u_0},
  34699. {1,0, &_residue_44_low_un,
  34700. &_huff_book__44u0__long,&_huff_book__44u0__long,
  34701. &_resbook_44u_0,&_resbook_44u_0}
  34702. };
  34703. static vorbis_residue_template _res_44u_1[]={
  34704. {1,0, &_residue_44_low_un,
  34705. &_huff_book__44u1__short,&_huff_book__44u1__short,
  34706. &_resbook_44u_1,&_resbook_44u_1},
  34707. {1,0, &_residue_44_low_un,
  34708. &_huff_book__44u1__long,&_huff_book__44u1__long,
  34709. &_resbook_44u_1,&_resbook_44u_1}
  34710. };
  34711. static vorbis_residue_template _res_44u_2[]={
  34712. {1,0, &_residue_44_low_un,
  34713. &_huff_book__44u2__short,&_huff_book__44u2__short,
  34714. &_resbook_44u_2,&_resbook_44u_2},
  34715. {1,0, &_residue_44_low_un,
  34716. &_huff_book__44u2__long,&_huff_book__44u2__long,
  34717. &_resbook_44u_2,&_resbook_44u_2}
  34718. };
  34719. static vorbis_residue_template _res_44u_3[]={
  34720. {1,0, &_residue_44_low_un,
  34721. &_huff_book__44u3__short,&_huff_book__44u3__short,
  34722. &_resbook_44u_3,&_resbook_44u_3},
  34723. {1,0, &_residue_44_low_un,
  34724. &_huff_book__44u3__long,&_huff_book__44u3__long,
  34725. &_resbook_44u_3,&_resbook_44u_3}
  34726. };
  34727. static vorbis_residue_template _res_44u_4[]={
  34728. {1,0, &_residue_44_low_un,
  34729. &_huff_book__44u4__short,&_huff_book__44u4__short,
  34730. &_resbook_44u_4,&_resbook_44u_4},
  34731. {1,0, &_residue_44_low_un,
  34732. &_huff_book__44u4__long,&_huff_book__44u4__long,
  34733. &_resbook_44u_4,&_resbook_44u_4}
  34734. };
  34735. static vorbis_residue_template _res_44u_5[]={
  34736. {1,0, &_residue_44_mid_un,
  34737. &_huff_book__44u5__short,&_huff_book__44u5__short,
  34738. &_resbook_44u_5,&_resbook_44u_5},
  34739. {1,0, &_residue_44_mid_un,
  34740. &_huff_book__44u5__long,&_huff_book__44u5__long,
  34741. &_resbook_44u_5,&_resbook_44u_5}
  34742. };
  34743. static vorbis_residue_template _res_44u_6[]={
  34744. {1,0, &_residue_44_mid_un,
  34745. &_huff_book__44u6__short,&_huff_book__44u6__short,
  34746. &_resbook_44u_6,&_resbook_44u_6},
  34747. {1,0, &_residue_44_mid_un,
  34748. &_huff_book__44u6__long,&_huff_book__44u6__long,
  34749. &_resbook_44u_6,&_resbook_44u_6}
  34750. };
  34751. static vorbis_residue_template _res_44u_7[]={
  34752. {1,0, &_residue_44_mid_un,
  34753. &_huff_book__44u7__short,&_huff_book__44u7__short,
  34754. &_resbook_44u_7,&_resbook_44u_7},
  34755. {1,0, &_residue_44_mid_un,
  34756. &_huff_book__44u7__long,&_huff_book__44u7__long,
  34757. &_resbook_44u_7,&_resbook_44u_7}
  34758. };
  34759. static vorbis_residue_template _res_44u_8[]={
  34760. {1,0, &_residue_44_hi_un,
  34761. &_huff_book__44u8__short,&_huff_book__44u8__short,
  34762. &_resbook_44u_8,&_resbook_44u_8},
  34763. {1,0, &_residue_44_hi_un,
  34764. &_huff_book__44u8__long,&_huff_book__44u8__long,
  34765. &_resbook_44u_8,&_resbook_44u_8}
  34766. };
  34767. static vorbis_residue_template _res_44u_9[]={
  34768. {1,0, &_residue_44_hi_un,
  34769. &_huff_book__44u9__short,&_huff_book__44u9__short,
  34770. &_resbook_44u_9,&_resbook_44u_9},
  34771. {1,0, &_residue_44_hi_un,
  34772. &_huff_book__44u9__long,&_huff_book__44u9__long,
  34773. &_resbook_44u_9,&_resbook_44u_9}
  34774. };
  34775. static vorbis_mapping_template _mapres_template_44_uncoupled[]={
  34776. { _map_nominal_u, _res_44u_0 }, /* 0 */
  34777. { _map_nominal_u, _res_44u_1 }, /* 1 */
  34778. { _map_nominal_u, _res_44u_2 }, /* 2 */
  34779. { _map_nominal_u, _res_44u_3 }, /* 3 */
  34780. { _map_nominal_u, _res_44u_4 }, /* 4 */
  34781. { _map_nominal_u, _res_44u_5 }, /* 5 */
  34782. { _map_nominal_u, _res_44u_6 }, /* 6 */
  34783. { _map_nominal_u, _res_44u_7 }, /* 7 */
  34784. { _map_nominal_u, _res_44u_8 }, /* 8 */
  34785. { _map_nominal_u, _res_44u_9 }, /* 9 */
  34786. };
  34787. static double rate_mapping_44_un[11]={
  34788. 48000.,60000.,70000.,80000.,86000.,
  34789. 96000.,110000.,120000.,140000.,160000.,240001.
  34790. };
  34791. static double rate_mapping_44_un_low[2]={
  34792. 32000.,48000.
  34793. };
  34794. ve_setup_data_template ve_setup_44_uncoupled={
  34795. 10,
  34796. rate_mapping_44_un,
  34797. quality_mapping_44,
  34798. -1,
  34799. 40000,
  34800. 50000,
  34801. blocksize_short_44,
  34802. blocksize_long_44,
  34803. _psy_tone_masteratt_44,
  34804. _psy_tone_0dB,
  34805. _psy_tone_suppress,
  34806. _vp_tonemask_adj_otherblock,
  34807. _vp_tonemask_adj_longblock,
  34808. _vp_tonemask_adj_otherblock,
  34809. _psy_noiseguards_44,
  34810. _psy_noisebias_impulse,
  34811. _psy_noisebias_padding,
  34812. _psy_noisebias_trans,
  34813. _psy_noisebias_long,
  34814. _psy_noise_suppress,
  34815. _psy_compand_44,
  34816. _psy_compand_short_mapping,
  34817. _psy_compand_long_mapping,
  34818. {_noise_start_short_44,_noise_start_long_44},
  34819. {_noise_part_short_44,_noise_part_long_44},
  34820. _noise_thresh_44_2,
  34821. _psy_ath_floater,
  34822. _psy_ath_abs,
  34823. _psy_lowpass_44,
  34824. _psy_global_44,
  34825. _global_mapping_44,
  34826. NULL,
  34827. _floor_books,
  34828. _floor,
  34829. _floor_short_mapping_44,
  34830. _floor_long_mapping_44,
  34831. _mapres_template_44_uncoupled
  34832. };
  34833. ve_setup_data_template ve_setup_44_uncoupled_low={
  34834. 1,
  34835. rate_mapping_44_un_low,
  34836. quality_mapping_44_stereo_low,
  34837. -1,
  34838. 40000,
  34839. 50000,
  34840. blocksize_short_44_low,
  34841. blocksize_long_44_low,
  34842. _psy_tone_masteratt_44_low,
  34843. _psy_tone_0dB,
  34844. _psy_tone_suppress,
  34845. _vp_tonemask_adj_otherblock,
  34846. _vp_tonemask_adj_longblock,
  34847. _vp_tonemask_adj_otherblock,
  34848. _psy_noiseguards_44,
  34849. _psy_noisebias_trans_low,
  34850. _psy_noisebias_trans_low,
  34851. _psy_noisebias_trans_low,
  34852. _psy_noisebias_long_low,
  34853. _psy_noise_suppress,
  34854. _psy_compand_44,
  34855. _psy_compand_short_mapping,
  34856. _psy_compand_long_mapping,
  34857. {_noise_start_short_44_low,_noise_start_long_44_low},
  34858. {_noise_part_short_44,_noise_part_long_44},
  34859. _noise_thresh_44_2,
  34860. _psy_ath_floater,
  34861. _psy_ath_abs,
  34862. _psy_lowpass_44_low,
  34863. _psy_global_44,
  34864. _global_mapping_44_low,
  34865. NULL,
  34866. _floor_books,
  34867. _floor,
  34868. _floor_short_mapping_44_low,
  34869. _floor_long_mapping_44_low,
  34870. _mapres_template_44_uncoupled
  34871. };
  34872. /********************************************************************
  34873. * *
  34874. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  34875. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  34876. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  34877. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  34878. * *
  34879. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  34880. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  34881. * *
  34882. ********************************************************************
  34883. function: toplevel settings for 32kHz
  34884. last mod: $Id: setup_32.h,v 1.4 2002/07/13 06:12:49 xiphmont Exp $
  34885. ********************************************************************/
  34886. static double rate_mapping_32[11]={
  34887. 28000.,35000.,45000.,56000.,60000.,
  34888. 75000.,90000.,100000.,115000.,150000.,190000.,
  34889. };
  34890. static double rate_mapping_32_un[11]={
  34891. 42000.,52000.,64000.,72000.,78000.,
  34892. 86000.,92000.,110000.,120000.,140000.,190000.,
  34893. };
  34894. static double rate_mapping_32_low[2]={
  34895. 20000.,28000.
  34896. };
  34897. static double rate_mapping_32_un_low[2]={
  34898. 24000.,42000.,
  34899. };
  34900. static double _psy_lowpass_32_low[2]={
  34901. 13.,13.,
  34902. };
  34903. static double _psy_lowpass_32[11]={
  34904. 13.,13.,14.,15.,99.,99.,99.,99.,99.,99.,99.
  34905. };
  34906. ve_setup_data_template ve_setup_32_stereo={
  34907. 10,
  34908. rate_mapping_32,
  34909. quality_mapping_44,
  34910. 2,
  34911. 26000,
  34912. 40000,
  34913. blocksize_short_44,
  34914. blocksize_long_44,
  34915. _psy_tone_masteratt_44,
  34916. _psy_tone_0dB,
  34917. _psy_tone_suppress,
  34918. _vp_tonemask_adj_otherblock,
  34919. _vp_tonemask_adj_longblock,
  34920. _vp_tonemask_adj_otherblock,
  34921. _psy_noiseguards_44,
  34922. _psy_noisebias_impulse,
  34923. _psy_noisebias_padding,
  34924. _psy_noisebias_trans,
  34925. _psy_noisebias_long,
  34926. _psy_noise_suppress,
  34927. _psy_compand_44,
  34928. _psy_compand_short_mapping,
  34929. _psy_compand_long_mapping,
  34930. {_noise_start_short_44,_noise_start_long_44},
  34931. {_noise_part_short_44,_noise_part_long_44},
  34932. _noise_thresh_44,
  34933. _psy_ath_floater,
  34934. _psy_ath_abs,
  34935. _psy_lowpass_32,
  34936. _psy_global_44,
  34937. _global_mapping_44,
  34938. _psy_stereo_modes_44,
  34939. _floor_books,
  34940. _floor,
  34941. _floor_short_mapping_44,
  34942. _floor_long_mapping_44,
  34943. _mapres_template_44_stereo
  34944. };
  34945. ve_setup_data_template ve_setup_32_uncoupled={
  34946. 10,
  34947. rate_mapping_32_un,
  34948. quality_mapping_44,
  34949. -1,
  34950. 26000,
  34951. 40000,
  34952. blocksize_short_44,
  34953. blocksize_long_44,
  34954. _psy_tone_masteratt_44,
  34955. _psy_tone_0dB,
  34956. _psy_tone_suppress,
  34957. _vp_tonemask_adj_otherblock,
  34958. _vp_tonemask_adj_longblock,
  34959. _vp_tonemask_adj_otherblock,
  34960. _psy_noiseguards_44,
  34961. _psy_noisebias_impulse,
  34962. _psy_noisebias_padding,
  34963. _psy_noisebias_trans,
  34964. _psy_noisebias_long,
  34965. _psy_noise_suppress,
  34966. _psy_compand_44,
  34967. _psy_compand_short_mapping,
  34968. _psy_compand_long_mapping,
  34969. {_noise_start_short_44,_noise_start_long_44},
  34970. {_noise_part_short_44,_noise_part_long_44},
  34971. _noise_thresh_44_2,
  34972. _psy_ath_floater,
  34973. _psy_ath_abs,
  34974. _psy_lowpass_32,
  34975. _psy_global_44,
  34976. _global_mapping_44,
  34977. NULL,
  34978. _floor_books,
  34979. _floor,
  34980. _floor_short_mapping_44,
  34981. _floor_long_mapping_44,
  34982. _mapres_template_44_uncoupled
  34983. };
  34984. ve_setup_data_template ve_setup_32_stereo_low={
  34985. 1,
  34986. rate_mapping_32_low,
  34987. quality_mapping_44_stereo_low,
  34988. 2,
  34989. 26000,
  34990. 40000,
  34991. blocksize_short_44_low,
  34992. blocksize_long_44_low,
  34993. _psy_tone_masteratt_44_low,
  34994. _psy_tone_0dB,
  34995. _psy_tone_suppress,
  34996. _vp_tonemask_adj_otherblock,
  34997. _vp_tonemask_adj_longblock,
  34998. _vp_tonemask_adj_otherblock,
  34999. _psy_noiseguards_44,
  35000. _psy_noisebias_trans_low,
  35001. _psy_noisebias_trans_low,
  35002. _psy_noisebias_trans_low,
  35003. _psy_noisebias_long_low,
  35004. _psy_noise_suppress,
  35005. _psy_compand_44,
  35006. _psy_compand_short_mapping,
  35007. _psy_compand_long_mapping,
  35008. {_noise_start_short_44_low,_noise_start_long_44_low},
  35009. {_noise_part_short_44,_noise_part_long_44},
  35010. _noise_thresh_44,
  35011. _psy_ath_floater,
  35012. _psy_ath_abs,
  35013. _psy_lowpass_32_low,
  35014. _psy_global_44,
  35015. _global_mapping_44,
  35016. _psy_stereo_modes_44_low,
  35017. _floor_books,
  35018. _floor,
  35019. _floor_short_mapping_44_low,
  35020. _floor_long_mapping_44_low,
  35021. _mapres_template_44_stereo
  35022. };
  35023. ve_setup_data_template ve_setup_32_uncoupled_low={
  35024. 1,
  35025. rate_mapping_32_un_low,
  35026. quality_mapping_44_stereo_low,
  35027. -1,
  35028. 26000,
  35029. 40000,
  35030. blocksize_short_44_low,
  35031. blocksize_long_44_low,
  35032. _psy_tone_masteratt_44_low,
  35033. _psy_tone_0dB,
  35034. _psy_tone_suppress,
  35035. _vp_tonemask_adj_otherblock,
  35036. _vp_tonemask_adj_longblock,
  35037. _vp_tonemask_adj_otherblock,
  35038. _psy_noiseguards_44,
  35039. _psy_noisebias_trans_low,
  35040. _psy_noisebias_trans_low,
  35041. _psy_noisebias_trans_low,
  35042. _psy_noisebias_long_low,
  35043. _psy_noise_suppress,
  35044. _psy_compand_44,
  35045. _psy_compand_short_mapping,
  35046. _psy_compand_long_mapping,
  35047. {_noise_start_short_44_low,_noise_start_long_44_low},
  35048. {_noise_part_short_44,_noise_part_long_44},
  35049. _noise_thresh_44_2,
  35050. _psy_ath_floater,
  35051. _psy_ath_abs,
  35052. _psy_lowpass_32_low,
  35053. _psy_global_44,
  35054. _global_mapping_44,
  35055. NULL,
  35056. _floor_books,
  35057. _floor,
  35058. _floor_short_mapping_44_low,
  35059. _floor_long_mapping_44_low,
  35060. _mapres_template_44_uncoupled
  35061. };
  35062. /********************************************************************
  35063. * *
  35064. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  35065. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  35066. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  35067. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  35068. * *
  35069. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  35070. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  35071. * *
  35072. ********************************************************************
  35073. function: 8kHz settings
  35074. last mod: $Id: setup_8.h,v 1.2 2002/07/11 06:41:05 xiphmont Exp $
  35075. ********************************************************************/
  35076. /********************************************************************
  35077. * *
  35078. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  35079. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  35080. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  35081. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  35082. * *
  35083. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  35084. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  35085. * *
  35086. ********************************************************************
  35087. function: 8kHz psychoacoustic settings
  35088. last mod: $Id: psych_8.h,v 1.3 2003/09/02 06:05:47 xiphmont Exp $
  35089. ********************************************************************/
  35090. static att3 _psy_tone_masteratt_8[3]={
  35091. {{ 32, 25, 12}, 0, 0}, /* 0 */
  35092. {{ 30, 25, 12}, 0, 0}, /* 0 */
  35093. {{ 20, 0, -14}, 0, 0}, /* 0 */
  35094. };
  35095. static vp_adjblock _vp_tonemask_adj_8[3]={
  35096. /* adjust for mode zero */
  35097. /* 63 125 250 500 1 2 4 8 16 */
  35098. {{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0,10, 0, 0,99,99,99}}, /* 1 */
  35099. {{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0,10, 0, 0,99,99,99}}, /* 1 */
  35100. {{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0, 0, 0, 0,99,99,99}}, /* 1 */
  35101. };
  35102. static noise3 _psy_noisebias_8[3]={
  35103. /* 63 125 250 500 1k 2k 4k 8k 16k*/
  35104. {{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 8, 8, 8, 10, 10, 99, 99, 99},
  35105. {-10,-10,-10,-10, -5, -5, -5, 0, 0, 4, 4, 4, 4, 4, 99, 99, 99},
  35106. {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
  35107. {{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 8, 8, 8, 10, 10, 99, 99, 99},
  35108. {-10,-10,-10,-10,-10,-10, -5, -5, -5, 0, 0, 0, 0, 0, 99, 99, 99},
  35109. {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
  35110. {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 99, 99, 99},
  35111. {-30,-30,-30,-30,-26,-22,-20,-14,-12,-12,-10,-10,-10,-10, 99, 99, 99},
  35112. {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24, 99, 99, 99}}},
  35113. };
  35114. /* stereo mode by base quality level */
  35115. static adj_stereo _psy_stereo_modes_8[3]={
  35116. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
  35117. {{ 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
  35118. { 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
  35119. { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
  35120. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  35121. {{ 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
  35122. { 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
  35123. { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
  35124. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  35125. {{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
  35126. { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
  35127. { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
  35128. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  35129. };
  35130. static noiseguard _psy_noiseguards_8[2]={
  35131. {10,10,-1},
  35132. {10,10,-1},
  35133. };
  35134. static compandblock _psy_compand_8[2]={
  35135. {{
  35136. 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
  35137. 8, 8, 9, 9,10,10,11, 11, /* 15dB */
  35138. 12,12,13,13,14,14,15, 15, /* 23dB */
  35139. 16,16,17,17,17,18,18, 19, /* 31dB */
  35140. 19,19,20,21,22,23,24, 25, /* 39dB */
  35141. }},
  35142. {{
  35143. 0, 1, 2, 3, 4, 5, 6, 6, /* 7dB */
  35144. 7, 7, 6, 6, 5, 5, 4, 4, /* 15dB */
  35145. 3, 3, 3, 4, 5, 6, 7, 8, /* 23dB */
  35146. 9,10,11,12,13,14,15, 16, /* 31dB */
  35147. 17,18,19,20,21,22,23, 24, /* 39dB */
  35148. }},
  35149. };
  35150. static double _psy_lowpass_8[3]={3.,4.,4.};
  35151. static int _noise_start_8[2]={
  35152. 64,64,
  35153. };
  35154. static int _noise_part_8[2]={
  35155. 8,8,
  35156. };
  35157. static int _psy_ath_floater_8[3]={
  35158. -100,-100,-105,
  35159. };
  35160. static int _psy_ath_abs_8[3]={
  35161. -130,-130,-140,
  35162. };
  35163. /********************************************************************
  35164. * *
  35165. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  35166. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  35167. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  35168. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  35169. * *
  35170. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  35171. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  35172. * *
  35173. ********************************************************************
  35174. function: toplevel residue templates 8/11kHz
  35175. last mod: $Id: residue_8.h,v 1.2 2002/07/11 06:41:04 xiphmont Exp $
  35176. ********************************************************************/
  35177. /***** residue backends *********************************************/
  35178. static static_bookblock _resbook_8s_0={
  35179. {
  35180. {0},{0,0,&_8c0_s_p1_0},{0,0,&_8c0_s_p2_0},{0,0,&_8c0_s_p3_0},
  35181. {0,0,&_8c0_s_p4_0},{0,0,&_8c0_s_p5_0},{0,0,&_8c0_s_p6_0},
  35182. {&_8c0_s_p7_0,&_8c0_s_p7_1},{&_8c0_s_p8_0,&_8c0_s_p8_1},
  35183. {&_8c0_s_p9_0,&_8c0_s_p9_1,&_8c0_s_p9_2}
  35184. }
  35185. };
  35186. static static_bookblock _resbook_8s_1={
  35187. {
  35188. {0},{0,0,&_8c1_s_p1_0},{0,0,&_8c1_s_p2_0},{0,0,&_8c1_s_p3_0},
  35189. {0,0,&_8c1_s_p4_0},{0,0,&_8c1_s_p5_0},{0,0,&_8c1_s_p6_0},
  35190. {&_8c1_s_p7_0,&_8c1_s_p7_1},{&_8c1_s_p8_0,&_8c1_s_p8_1},
  35191. {&_8c1_s_p9_0,&_8c1_s_p9_1,&_8c1_s_p9_2}
  35192. }
  35193. };
  35194. static vorbis_residue_template _res_8s_0[]={
  35195. {2,0, &_residue_44_mid,
  35196. &_huff_book__8c0_s_single,&_huff_book__8c0_s_single,
  35197. &_resbook_8s_0,&_resbook_8s_0},
  35198. };
  35199. static vorbis_residue_template _res_8s_1[]={
  35200. {2,0, &_residue_44_mid,
  35201. &_huff_book__8c1_s_single,&_huff_book__8c1_s_single,
  35202. &_resbook_8s_1,&_resbook_8s_1},
  35203. };
  35204. static vorbis_mapping_template _mapres_template_8_stereo[2]={
  35205. { _map_nominal, _res_8s_0 }, /* 0 */
  35206. { _map_nominal, _res_8s_1 }, /* 1 */
  35207. };
  35208. static static_bookblock _resbook_8u_0={
  35209. {
  35210. {0},
  35211. {0,0,&_8u0__p1_0},
  35212. {0,0,&_8u0__p2_0},
  35213. {0,0,&_8u0__p3_0},
  35214. {0,0,&_8u0__p4_0},
  35215. {0,0,&_8u0__p5_0},
  35216. {&_8u0__p6_0,&_8u0__p6_1},
  35217. {&_8u0__p7_0,&_8u0__p7_1,&_8u0__p7_2}
  35218. }
  35219. };
  35220. static static_bookblock _resbook_8u_1={
  35221. {
  35222. {0},
  35223. {0,0,&_8u1__p1_0},
  35224. {0,0,&_8u1__p2_0},
  35225. {0,0,&_8u1__p3_0},
  35226. {0,0,&_8u1__p4_0},
  35227. {0,0,&_8u1__p5_0},
  35228. {0,0,&_8u1__p6_0},
  35229. {&_8u1__p7_0,&_8u1__p7_1},
  35230. {&_8u1__p8_0,&_8u1__p8_1},
  35231. {&_8u1__p9_0,&_8u1__p9_1,&_8u1__p9_2}
  35232. }
  35233. };
  35234. static vorbis_residue_template _res_8u_0[]={
  35235. {1,0, &_residue_44_low_un,
  35236. &_huff_book__8u0__single,&_huff_book__8u0__single,
  35237. &_resbook_8u_0,&_resbook_8u_0},
  35238. };
  35239. static vorbis_residue_template _res_8u_1[]={
  35240. {1,0, &_residue_44_mid_un,
  35241. &_huff_book__8u1__single,&_huff_book__8u1__single,
  35242. &_resbook_8u_1,&_resbook_8u_1},
  35243. };
  35244. static vorbis_mapping_template _mapres_template_8_uncoupled[2]={
  35245. { _map_nominal_u, _res_8u_0 }, /* 0 */
  35246. { _map_nominal_u, _res_8u_1 }, /* 1 */
  35247. };
  35248. static int blocksize_8[2]={
  35249. 512,512
  35250. };
  35251. static int _floor_mapping_8[2]={
  35252. 1,1,
  35253. };
  35254. static double rate_mapping_8[3]={
  35255. 6000.,9000.,32000.,
  35256. };
  35257. static double rate_mapping_8_uncoupled[3]={
  35258. 8000.,14000.,42000.,
  35259. };
  35260. static double quality_mapping_8[3]={
  35261. -.1,.0,1.
  35262. };
  35263. static double _psy_compand_8_mapping[3]={ 0., 1., 1.};
  35264. static double _global_mapping_8[3]={ 1., 2., 3. };
  35265. ve_setup_data_template ve_setup_8_stereo={
  35266. 2,
  35267. rate_mapping_8,
  35268. quality_mapping_8,
  35269. 2,
  35270. 8000,
  35271. 9000,
  35272. blocksize_8,
  35273. blocksize_8,
  35274. _psy_tone_masteratt_8,
  35275. _psy_tone_0dB,
  35276. _psy_tone_suppress,
  35277. _vp_tonemask_adj_8,
  35278. NULL,
  35279. _vp_tonemask_adj_8,
  35280. _psy_noiseguards_8,
  35281. _psy_noisebias_8,
  35282. _psy_noisebias_8,
  35283. NULL,
  35284. NULL,
  35285. _psy_noise_suppress,
  35286. _psy_compand_8,
  35287. _psy_compand_8_mapping,
  35288. NULL,
  35289. {_noise_start_8,_noise_start_8},
  35290. {_noise_part_8,_noise_part_8},
  35291. _noise_thresh_44_2,
  35292. _psy_ath_floater_8,
  35293. _psy_ath_abs_8,
  35294. _psy_lowpass_8,
  35295. _psy_global_44,
  35296. _global_mapping_8,
  35297. _psy_stereo_modes_8,
  35298. _floor_books,
  35299. _floor,
  35300. _floor_mapping_8,
  35301. NULL,
  35302. _mapres_template_8_stereo
  35303. };
  35304. ve_setup_data_template ve_setup_8_uncoupled={
  35305. 2,
  35306. rate_mapping_8_uncoupled,
  35307. quality_mapping_8,
  35308. -1,
  35309. 8000,
  35310. 9000,
  35311. blocksize_8,
  35312. blocksize_8,
  35313. _psy_tone_masteratt_8,
  35314. _psy_tone_0dB,
  35315. _psy_tone_suppress,
  35316. _vp_tonemask_adj_8,
  35317. NULL,
  35318. _vp_tonemask_adj_8,
  35319. _psy_noiseguards_8,
  35320. _psy_noisebias_8,
  35321. _psy_noisebias_8,
  35322. NULL,
  35323. NULL,
  35324. _psy_noise_suppress,
  35325. _psy_compand_8,
  35326. _psy_compand_8_mapping,
  35327. NULL,
  35328. {_noise_start_8,_noise_start_8},
  35329. {_noise_part_8,_noise_part_8},
  35330. _noise_thresh_44_2,
  35331. _psy_ath_floater_8,
  35332. _psy_ath_abs_8,
  35333. _psy_lowpass_8,
  35334. _psy_global_44,
  35335. _global_mapping_8,
  35336. _psy_stereo_modes_8,
  35337. _floor_books,
  35338. _floor,
  35339. _floor_mapping_8,
  35340. NULL,
  35341. _mapres_template_8_uncoupled
  35342. };
  35343. /********************************************************************
  35344. * *
  35345. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  35346. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  35347. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  35348. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  35349. * *
  35350. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  35351. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  35352. * *
  35353. ********************************************************************
  35354. function: 11kHz settings
  35355. last mod: $Id: setup_11.h,v 1.2 2002/07/11 06:41:04 xiphmont Exp $
  35356. ********************************************************************/
  35357. /********************************************************************
  35358. * *
  35359. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  35360. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  35361. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  35362. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  35363. * *
  35364. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  35365. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  35366. * *
  35367. ********************************************************************
  35368. function: 11kHz settings
  35369. last mod: $Id: psych_11.h,v 1.1 2002/07/10 03:04:22 xiphmont Exp $
  35370. ********************************************************************/
  35371. static double _psy_lowpass_11[3]={4.5,5.5,30.,};
  35372. static att3 _psy_tone_masteratt_11[3]={
  35373. {{ 30, 25, 12}, 0, 0}, /* 0 */
  35374. {{ 30, 25, 12}, 0, 0}, /* 0 */
  35375. {{ 20, 0, -14}, 0, 1.}, /* 0 */
  35376. };
  35377. static vp_adjblock _vp_tonemask_adj_11[3]={
  35378. /* adjust for mode zero */
  35379. /* 63 125 250 500 1 2 4 8 16 */
  35380. {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0,10, 2, 0,99,99,99}}, /* 0 */
  35381. {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0, 5, 0, 0,99,99,99}}, /* 1 */
  35382. {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0, 0, 0, 0,99,99,99}}, /* 2 */
  35383. };
  35384. static noise3 _psy_noisebias_11[3]={
  35385. /* 63 125 250 500 1k 2k 4k 8k 16k*/
  35386. {{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 10, 10, 12, 12, 12, 99, 99, 99},
  35387. {-15,-15,-15,-15,-10,-10, -5, 0, 0, 4, 4, 5, 5, 10, 99, 99, 99},
  35388. {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
  35389. {{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 10, 10, 12, 12, 12, 99, 99, 99},
  35390. {-15,-15,-15,-15,-10,-10, -5, -5, -5, 0, 0, 0, 0, 0, 99, 99, 99},
  35391. {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
  35392. {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 99, 99, 99},
  35393. {-30,-30,-30,-30,-26,-22,-20,-14,-12,-12,-10,-10,-10,-10, 99, 99, 99},
  35394. {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24, 99, 99, 99}}},
  35395. };
  35396. static double _noise_thresh_11[3]={ .3,.5,.5 };
  35397. static int blocksize_11[2]={
  35398. 512,512
  35399. };
  35400. static int _floor_mapping_11[2]={
  35401. 1,1,
  35402. };
  35403. static double rate_mapping_11[3]={
  35404. 8000.,13000.,44000.,
  35405. };
  35406. static double rate_mapping_11_uncoupled[3]={
  35407. 12000.,20000.,50000.,
  35408. };
  35409. static double quality_mapping_11[3]={
  35410. -.1,.0,1.
  35411. };
  35412. ve_setup_data_template ve_setup_11_stereo={
  35413. 2,
  35414. rate_mapping_11,
  35415. quality_mapping_11,
  35416. 2,
  35417. 9000,
  35418. 15000,
  35419. blocksize_11,
  35420. blocksize_11,
  35421. _psy_tone_masteratt_11,
  35422. _psy_tone_0dB,
  35423. _psy_tone_suppress,
  35424. _vp_tonemask_adj_11,
  35425. NULL,
  35426. _vp_tonemask_adj_11,
  35427. _psy_noiseguards_8,
  35428. _psy_noisebias_11,
  35429. _psy_noisebias_11,
  35430. NULL,
  35431. NULL,
  35432. _psy_noise_suppress,
  35433. _psy_compand_8,
  35434. _psy_compand_8_mapping,
  35435. NULL,
  35436. {_noise_start_8,_noise_start_8},
  35437. {_noise_part_8,_noise_part_8},
  35438. _noise_thresh_11,
  35439. _psy_ath_floater_8,
  35440. _psy_ath_abs_8,
  35441. _psy_lowpass_11,
  35442. _psy_global_44,
  35443. _global_mapping_8,
  35444. _psy_stereo_modes_8,
  35445. _floor_books,
  35446. _floor,
  35447. _floor_mapping_11,
  35448. NULL,
  35449. _mapres_template_8_stereo
  35450. };
  35451. ve_setup_data_template ve_setup_11_uncoupled={
  35452. 2,
  35453. rate_mapping_11_uncoupled,
  35454. quality_mapping_11,
  35455. -1,
  35456. 9000,
  35457. 15000,
  35458. blocksize_11,
  35459. blocksize_11,
  35460. _psy_tone_masteratt_11,
  35461. _psy_tone_0dB,
  35462. _psy_tone_suppress,
  35463. _vp_tonemask_adj_11,
  35464. NULL,
  35465. _vp_tonemask_adj_11,
  35466. _psy_noiseguards_8,
  35467. _psy_noisebias_11,
  35468. _psy_noisebias_11,
  35469. NULL,
  35470. NULL,
  35471. _psy_noise_suppress,
  35472. _psy_compand_8,
  35473. _psy_compand_8_mapping,
  35474. NULL,
  35475. {_noise_start_8,_noise_start_8},
  35476. {_noise_part_8,_noise_part_8},
  35477. _noise_thresh_11,
  35478. _psy_ath_floater_8,
  35479. _psy_ath_abs_8,
  35480. _psy_lowpass_11,
  35481. _psy_global_44,
  35482. _global_mapping_8,
  35483. _psy_stereo_modes_8,
  35484. _floor_books,
  35485. _floor,
  35486. _floor_mapping_11,
  35487. NULL,
  35488. _mapres_template_8_uncoupled
  35489. };
  35490. /********************************************************************
  35491. * *
  35492. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  35493. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  35494. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  35495. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  35496. * *
  35497. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  35498. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  35499. * *
  35500. ********************************************************************
  35501. function: 16kHz settings
  35502. last mod: $Id: setup_16.h,v 1.5 2002/10/11 11:14:42 xiphmont Exp $
  35503. ********************************************************************/
  35504. /********************************************************************
  35505. * *
  35506. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  35507. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  35508. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  35509. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  35510. * *
  35511. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  35512. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  35513. * *
  35514. ********************************************************************
  35515. function: 16kHz settings
  35516. last mod: $Id: psych_16.h,v 1.3 2003/09/02 06:05:47 xiphmont Exp $
  35517. ********************************************************************/
  35518. /* stereo mode by base quality level */
  35519. static adj_stereo _psy_stereo_modes_16[4]={
  35520. /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
  35521. {{ 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
  35522. { 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
  35523. { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, 4},
  35524. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  35525. {{ 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
  35526. { 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
  35527. { 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 4, 4, 4},
  35528. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  35529. {{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
  35530. { 5, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
  35531. { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
  35532. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  35533. {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  35534. { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  35535. { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
  35536. { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
  35537. };
  35538. static double _psy_lowpass_16[4]={6.5,8,30.,99.};
  35539. static att3 _psy_tone_masteratt_16[4]={
  35540. {{ 30, 25, 12}, 0, 0}, /* 0 */
  35541. {{ 25, 22, 12}, 0, 0}, /* 0 */
  35542. {{ 20, 12, 0}, 0, 0}, /* 0 */
  35543. {{ 15, 0, -14}, 0, 0}, /* 0 */
  35544. };
  35545. static vp_adjblock _vp_tonemask_adj_16[4]={
  35546. /* adjust for mode zero */
  35547. /* 63 125 250 500 1 2 4 8 16 */
  35548. {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0,10, 0, 0, 0, 0, 0}}, /* 0 */
  35549. {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0,10, 0, 0, 0, 0, 0}}, /* 1 */
  35550. {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
  35551. {{-30,-30,-30,-30,-30,-26,-20,-10, -5, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
  35552. };
  35553. static noise3 _psy_noisebias_16_short[4]={
  35554. /* 63 125 250 500 1k 2k 4k 8k 16k*/
  35555. {{{-15,-15,-15,-15,-15,-10,-10,-5, 4, 10, 10, 10, 10, 12, 12, 14, 20},
  35556. {-15,-15,-15,-15,-15,-10,-10, -5, 0, 0, 4, 5, 5, 6, 8, 8, 15},
  35557. {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
  35558. {{{-15,-15,-15,-15,-15,-10,-10,-5, 4, 6, 6, 6, 6, 8, 10, 12, 20},
  35559. {-15,-15,-15,-15,-15,-15,-15,-10, -5, -5, -5, 4, 5, 6, 8, 8, 15},
  35560. {-30,-30,-30,-30,-30,-24,-20,-14,-10,-10,-10,-10,-10,-10,-10,-10,-10}}},
  35561. {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 12},
  35562. {-20,-20,-20,-20,-16,-12,-20,-14,-10,-10, -8, 0, 0, 0, 0, 2, 5},
  35563. {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
  35564. {{{-15,-15,-15,-15,-15,-12,-10, -8, -5, -5, -5, -5, -5, 0, 0, 0, 6},
  35565. {-30,-30,-30,-30,-26,-22,-20,-14,-12,-12,-10,-10,-10,-10,-10,-10, -6},
  35566. {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
  35567. };
  35568. static noise3 _psy_noisebias_16_impulse[4]={
  35569. /* 63 125 250 500 1k 2k 4k 8k 16k*/
  35570. {{{-15,-15,-15,-15,-15,-10,-10,-5, 4, 10, 10, 10, 10, 12, 12, 14, 20},
  35571. {-15,-15,-15,-15,-15,-10,-10, -5, 0, 0, 4, 5, 5, 6, 8, 8, 15},
  35572. {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
  35573. {{{-15,-15,-15,-15,-15,-10,-10,-5, 4, 4, 4, 4, 5, 5, 6, 8, 15},
  35574. {-15,-15,-15,-15,-15,-15,-15,-10, -5, -5, -5, 0, 0, 0, 0, 4, 10},
  35575. {-30,-30,-30,-30,-30,-24,-20,-14,-10,-10,-10,-10,-10,-10,-10,-10,-10}}},
  35576. {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 4, 10},
  35577. {-20,-20,-20,-20,-16,-12,-20,-14,-10,-10,-10,-10,-10,-10,-10, -7, -5},
  35578. {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
  35579. {{{-15,-15,-15,-15,-15,-12,-10, -8, -5, -5, -5, -5, -5, 0, 0, 0, 6},
  35580. {-30,-30,-30,-30,-26,-22,-20,-18,-18,-18,-20,-20,-20,-20,-20,-20,-16},
  35581. {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
  35582. };
  35583. static noise3 _psy_noisebias_16[4]={
  35584. /* 63 125 250 500 1k 2k 4k 8k 16k*/
  35585. {{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 6, 8, 8, 10, 10, 10, 14, 20},
  35586. {-10,-10,-10,-10,-10, -5, -2, -2, 0, 0, 0, 4, 5, 6, 8, 8, 15},
  35587. {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
  35588. {{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 6, 6, 6, 6, 8, 10, 12, 20},
  35589. {-15,-15,-15,-15,-15,-10, -5, -5, 0, 0, 0, 4, 5, 6, 8, 8, 15},
  35590. {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
  35591. {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 12},
  35592. {-20,-20,-20,-20,-16,-12,-20,-10, -5, -5, 0, 0, 0, 0, 0, 2, 5},
  35593. {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
  35594. {{{-15,-15,-15,-15,-15,-12,-10, -8, -5, -5, -5, -5, -5, 0, 0, 0, 6},
  35595. {-30,-30,-30,-30,-26,-22,-20,-14,-12,-12,-10,-10,-10,-10,-10,-10, -6},
  35596. {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
  35597. };
  35598. static double _noise_thresh_16[4]={ .3,.5,.5,.5 };
  35599. static int _noise_start_16[3]={ 256,256,9999 };
  35600. static int _noise_part_16[4]={ 8,8,8,8 };
  35601. static int _psy_ath_floater_16[4]={
  35602. -100,-100,-100,-105,
  35603. };
  35604. static int _psy_ath_abs_16[4]={
  35605. -130,-130,-130,-140,
  35606. };
  35607. /********************************************************************
  35608. * *
  35609. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  35610. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  35611. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  35612. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  35613. * *
  35614. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  35615. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  35616. * *
  35617. ********************************************************************
  35618. function: toplevel residue templates 16/22kHz
  35619. last mod: $Id: residue_16.h,v 1.3 2002/07/11 10:27:55 xiphmont Exp $
  35620. ********************************************************************/
  35621. /***** residue backends *********************************************/
  35622. static static_bookblock _resbook_16s_0={
  35623. {
  35624. {0},
  35625. {0,0,&_16c0_s_p1_0},
  35626. {0,0,&_16c0_s_p2_0},
  35627. {0,0,&_16c0_s_p3_0},
  35628. {0,0,&_16c0_s_p4_0},
  35629. {0,0,&_16c0_s_p5_0},
  35630. {0,0,&_16c0_s_p6_0},
  35631. {&_16c0_s_p7_0,&_16c0_s_p7_1},
  35632. {&_16c0_s_p8_0,&_16c0_s_p8_1},
  35633. {&_16c0_s_p9_0,&_16c0_s_p9_1,&_16c0_s_p9_2}
  35634. }
  35635. };
  35636. static static_bookblock _resbook_16s_1={
  35637. {
  35638. {0},
  35639. {0,0,&_16c1_s_p1_0},
  35640. {0,0,&_16c1_s_p2_0},
  35641. {0,0,&_16c1_s_p3_0},
  35642. {0,0,&_16c1_s_p4_0},
  35643. {0,0,&_16c1_s_p5_0},
  35644. {0,0,&_16c1_s_p6_0},
  35645. {&_16c1_s_p7_0,&_16c1_s_p7_1},
  35646. {&_16c1_s_p8_0,&_16c1_s_p8_1},
  35647. {&_16c1_s_p9_0,&_16c1_s_p9_1,&_16c1_s_p9_2}
  35648. }
  35649. };
  35650. static static_bookblock _resbook_16s_2={
  35651. {
  35652. {0},
  35653. {0,0,&_16c2_s_p1_0},
  35654. {0,0,&_16c2_s_p2_0},
  35655. {0,0,&_16c2_s_p3_0},
  35656. {0,0,&_16c2_s_p4_0},
  35657. {&_16c2_s_p5_0,&_16c2_s_p5_1},
  35658. {&_16c2_s_p6_0,&_16c2_s_p6_1},
  35659. {&_16c2_s_p7_0,&_16c2_s_p7_1},
  35660. {&_16c2_s_p8_0,&_16c2_s_p8_1},
  35661. {&_16c2_s_p9_0,&_16c2_s_p9_1,&_16c2_s_p9_2}
  35662. }
  35663. };
  35664. static vorbis_residue_template _res_16s_0[]={
  35665. {2,0, &_residue_44_mid,
  35666. &_huff_book__16c0_s_single,&_huff_book__16c0_s_single,
  35667. &_resbook_16s_0,&_resbook_16s_0},
  35668. };
  35669. static vorbis_residue_template _res_16s_1[]={
  35670. {2,0, &_residue_44_mid,
  35671. &_huff_book__16c1_s_short,&_huff_book__16c1_s_short,
  35672. &_resbook_16s_1,&_resbook_16s_1},
  35673. {2,0, &_residue_44_mid,
  35674. &_huff_book__16c1_s_long,&_huff_book__16c1_s_long,
  35675. &_resbook_16s_1,&_resbook_16s_1}
  35676. };
  35677. static vorbis_residue_template _res_16s_2[]={
  35678. {2,0, &_residue_44_high,
  35679. &_huff_book__16c2_s_short,&_huff_book__16c2_s_short,
  35680. &_resbook_16s_2,&_resbook_16s_2},
  35681. {2,0, &_residue_44_high,
  35682. &_huff_book__16c2_s_long,&_huff_book__16c2_s_long,
  35683. &_resbook_16s_2,&_resbook_16s_2}
  35684. };
  35685. static vorbis_mapping_template _mapres_template_16_stereo[3]={
  35686. { _map_nominal, _res_16s_0 }, /* 0 */
  35687. { _map_nominal, _res_16s_1 }, /* 1 */
  35688. { _map_nominal, _res_16s_2 }, /* 2 */
  35689. };
  35690. static static_bookblock _resbook_16u_0={
  35691. {
  35692. {0},
  35693. {0,0,&_16u0__p1_0},
  35694. {0,0,&_16u0__p2_0},
  35695. {0,0,&_16u0__p3_0},
  35696. {0,0,&_16u0__p4_0},
  35697. {0,0,&_16u0__p5_0},
  35698. {&_16u0__p6_0,&_16u0__p6_1},
  35699. {&_16u0__p7_0,&_16u0__p7_1,&_16u0__p7_2}
  35700. }
  35701. };
  35702. static static_bookblock _resbook_16u_1={
  35703. {
  35704. {0},
  35705. {0,0,&_16u1__p1_0},
  35706. {0,0,&_16u1__p2_0},
  35707. {0,0,&_16u1__p3_0},
  35708. {0,0,&_16u1__p4_0},
  35709. {0,0,&_16u1__p5_0},
  35710. {0,0,&_16u1__p6_0},
  35711. {&_16u1__p7_0,&_16u1__p7_1},
  35712. {&_16u1__p8_0,&_16u1__p8_1},
  35713. {&_16u1__p9_0,&_16u1__p9_1,&_16u1__p9_2}
  35714. }
  35715. };
  35716. static static_bookblock _resbook_16u_2={
  35717. {
  35718. {0},
  35719. {0,0,&_16u2_p1_0},
  35720. {0,0,&_16u2_p2_0},
  35721. {0,0,&_16u2_p3_0},
  35722. {0,0,&_16u2_p4_0},
  35723. {&_16u2_p5_0,&_16u2_p5_1},
  35724. {&_16u2_p6_0,&_16u2_p6_1},
  35725. {&_16u2_p7_0,&_16u2_p7_1},
  35726. {&_16u2_p8_0,&_16u2_p8_1},
  35727. {&_16u2_p9_0,&_16u2_p9_1,&_16u2_p9_2}
  35728. }
  35729. };
  35730. static vorbis_residue_template _res_16u_0[]={
  35731. {1,0, &_residue_44_low_un,
  35732. &_huff_book__16u0__single,&_huff_book__16u0__single,
  35733. &_resbook_16u_0,&_resbook_16u_0},
  35734. };
  35735. static vorbis_residue_template _res_16u_1[]={
  35736. {1,0, &_residue_44_mid_un,
  35737. &_huff_book__16u1__short,&_huff_book__16u1__short,
  35738. &_resbook_16u_1,&_resbook_16u_1},
  35739. {1,0, &_residue_44_mid_un,
  35740. &_huff_book__16u1__long,&_huff_book__16u1__long,
  35741. &_resbook_16u_1,&_resbook_16u_1}
  35742. };
  35743. static vorbis_residue_template _res_16u_2[]={
  35744. {1,0, &_residue_44_hi_un,
  35745. &_huff_book__16u2__short,&_huff_book__16u2__short,
  35746. &_resbook_16u_2,&_resbook_16u_2},
  35747. {1,0, &_residue_44_hi_un,
  35748. &_huff_book__16u2__long,&_huff_book__16u2__long,
  35749. &_resbook_16u_2,&_resbook_16u_2}
  35750. };
  35751. static vorbis_mapping_template _mapres_template_16_uncoupled[3]={
  35752. { _map_nominal_u, _res_16u_0 }, /* 0 */
  35753. { _map_nominal_u, _res_16u_1 }, /* 1 */
  35754. { _map_nominal_u, _res_16u_2 }, /* 2 */
  35755. };
  35756. static int blocksize_16_short[3]={
  35757. 1024,512,512
  35758. };
  35759. static int blocksize_16_long[3]={
  35760. 1024,1024,1024
  35761. };
  35762. static int _floor_mapping_16_short[3]={
  35763. 9,3,3
  35764. };
  35765. static int _floor_mapping_16[3]={
  35766. 9,9,9
  35767. };
  35768. static double rate_mapping_16[4]={
  35769. 12000.,20000.,44000.,86000.
  35770. };
  35771. static double rate_mapping_16_uncoupled[4]={
  35772. 16000.,28000.,64000.,100000.
  35773. };
  35774. static double _global_mapping_16[4]={ 1., 2., 3., 4. };
  35775. static double quality_mapping_16[4]={ -.1,.05,.5,1. };
  35776. static double _psy_compand_16_mapping[4]={ 0., .8, 1., 1.};
  35777. ve_setup_data_template ve_setup_16_stereo={
  35778. 3,
  35779. rate_mapping_16,
  35780. quality_mapping_16,
  35781. 2,
  35782. 15000,
  35783. 19000,
  35784. blocksize_16_short,
  35785. blocksize_16_long,
  35786. _psy_tone_masteratt_16,
  35787. _psy_tone_0dB,
  35788. _psy_tone_suppress,
  35789. _vp_tonemask_adj_16,
  35790. _vp_tonemask_adj_16,
  35791. _vp_tonemask_adj_16,
  35792. _psy_noiseguards_8,
  35793. _psy_noisebias_16_impulse,
  35794. _psy_noisebias_16_short,
  35795. _psy_noisebias_16_short,
  35796. _psy_noisebias_16,
  35797. _psy_noise_suppress,
  35798. _psy_compand_8,
  35799. _psy_compand_16_mapping,
  35800. _psy_compand_16_mapping,
  35801. {_noise_start_16,_noise_start_16},
  35802. { _noise_part_16, _noise_part_16},
  35803. _noise_thresh_16,
  35804. _psy_ath_floater_16,
  35805. _psy_ath_abs_16,
  35806. _psy_lowpass_16,
  35807. _psy_global_44,
  35808. _global_mapping_16,
  35809. _psy_stereo_modes_16,
  35810. _floor_books,
  35811. _floor,
  35812. _floor_mapping_16_short,
  35813. _floor_mapping_16,
  35814. _mapres_template_16_stereo
  35815. };
  35816. ve_setup_data_template ve_setup_16_uncoupled={
  35817. 3,
  35818. rate_mapping_16_uncoupled,
  35819. quality_mapping_16,
  35820. -1,
  35821. 15000,
  35822. 19000,
  35823. blocksize_16_short,
  35824. blocksize_16_long,
  35825. _psy_tone_masteratt_16,
  35826. _psy_tone_0dB,
  35827. _psy_tone_suppress,
  35828. _vp_tonemask_adj_16,
  35829. _vp_tonemask_adj_16,
  35830. _vp_tonemask_adj_16,
  35831. _psy_noiseguards_8,
  35832. _psy_noisebias_16_impulse,
  35833. _psy_noisebias_16_short,
  35834. _psy_noisebias_16_short,
  35835. _psy_noisebias_16,
  35836. _psy_noise_suppress,
  35837. _psy_compand_8,
  35838. _psy_compand_16_mapping,
  35839. _psy_compand_16_mapping,
  35840. {_noise_start_16,_noise_start_16},
  35841. { _noise_part_16, _noise_part_16},
  35842. _noise_thresh_16,
  35843. _psy_ath_floater_16,
  35844. _psy_ath_abs_16,
  35845. _psy_lowpass_16,
  35846. _psy_global_44,
  35847. _global_mapping_16,
  35848. _psy_stereo_modes_16,
  35849. _floor_books,
  35850. _floor,
  35851. _floor_mapping_16_short,
  35852. _floor_mapping_16,
  35853. _mapres_template_16_uncoupled
  35854. };
  35855. /********************************************************************
  35856. * *
  35857. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  35858. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  35859. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  35860. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  35861. * *
  35862. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  35863. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  35864. * *
  35865. ********************************************************************
  35866. function: 22kHz settings
  35867. last mod: $Id: setup_22.h,v 1.3 2002/07/11 10:02:29 xiphmont Exp $
  35868. ********************************************************************/
  35869. static double rate_mapping_22[4]={
  35870. 15000.,20000.,44000.,86000.
  35871. };
  35872. static double rate_mapping_22_uncoupled[4]={
  35873. 16000.,28000.,50000.,90000.
  35874. };
  35875. static double _psy_lowpass_22[4]={9.5,11.,30.,99.};
  35876. ve_setup_data_template ve_setup_22_stereo={
  35877. 3,
  35878. rate_mapping_22,
  35879. quality_mapping_16,
  35880. 2,
  35881. 19000,
  35882. 26000,
  35883. blocksize_16_short,
  35884. blocksize_16_long,
  35885. _psy_tone_masteratt_16,
  35886. _psy_tone_0dB,
  35887. _psy_tone_suppress,
  35888. _vp_tonemask_adj_16,
  35889. _vp_tonemask_adj_16,
  35890. _vp_tonemask_adj_16,
  35891. _psy_noiseguards_8,
  35892. _psy_noisebias_16_impulse,
  35893. _psy_noisebias_16_short,
  35894. _psy_noisebias_16_short,
  35895. _psy_noisebias_16,
  35896. _psy_noise_suppress,
  35897. _psy_compand_8,
  35898. _psy_compand_8_mapping,
  35899. _psy_compand_8_mapping,
  35900. {_noise_start_16,_noise_start_16},
  35901. { _noise_part_16, _noise_part_16},
  35902. _noise_thresh_16,
  35903. _psy_ath_floater_16,
  35904. _psy_ath_abs_16,
  35905. _psy_lowpass_22,
  35906. _psy_global_44,
  35907. _global_mapping_16,
  35908. _psy_stereo_modes_16,
  35909. _floor_books,
  35910. _floor,
  35911. _floor_mapping_16_short,
  35912. _floor_mapping_16,
  35913. _mapres_template_16_stereo
  35914. };
  35915. ve_setup_data_template ve_setup_22_uncoupled={
  35916. 3,
  35917. rate_mapping_22_uncoupled,
  35918. quality_mapping_16,
  35919. -1,
  35920. 19000,
  35921. 26000,
  35922. blocksize_16_short,
  35923. blocksize_16_long,
  35924. _psy_tone_masteratt_16,
  35925. _psy_tone_0dB,
  35926. _psy_tone_suppress,
  35927. _vp_tonemask_adj_16,
  35928. _vp_tonemask_adj_16,
  35929. _vp_tonemask_adj_16,
  35930. _psy_noiseguards_8,
  35931. _psy_noisebias_16_impulse,
  35932. _psy_noisebias_16_short,
  35933. _psy_noisebias_16_short,
  35934. _psy_noisebias_16,
  35935. _psy_noise_suppress,
  35936. _psy_compand_8,
  35937. _psy_compand_8_mapping,
  35938. _psy_compand_8_mapping,
  35939. {_noise_start_16,_noise_start_16},
  35940. { _noise_part_16, _noise_part_16},
  35941. _noise_thresh_16,
  35942. _psy_ath_floater_16,
  35943. _psy_ath_abs_16,
  35944. _psy_lowpass_22,
  35945. _psy_global_44,
  35946. _global_mapping_16,
  35947. _psy_stereo_modes_16,
  35948. _floor_books,
  35949. _floor,
  35950. _floor_mapping_16_short,
  35951. _floor_mapping_16,
  35952. _mapres_template_16_uncoupled
  35953. };
  35954. /********************************************************************
  35955. * *
  35956. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  35957. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  35958. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  35959. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  35960. * *
  35961. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  35962. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  35963. * *
  35964. ********************************************************************
  35965. function: catch-all toplevel settings for q modes only
  35966. last mod: $Id: setup_X.h,v 1.3 2002/07/11 06:41:05 xiphmont Exp $
  35967. ********************************************************************/
  35968. static double rate_mapping_X[11]={
  35969. -1.,-1.,-1.,-1.,-1.,
  35970. -1.,-1.,-1.,-1.,-1.,-1.
  35971. };
  35972. ve_setup_data_template ve_setup_X_stereo={
  35973. 10,
  35974. rate_mapping_X,
  35975. quality_mapping_44,
  35976. 2,
  35977. 50000,
  35978. 200000,
  35979. blocksize_short_44,
  35980. blocksize_long_44,
  35981. _psy_tone_masteratt_44,
  35982. _psy_tone_0dB,
  35983. _psy_tone_suppress,
  35984. _vp_tonemask_adj_otherblock,
  35985. _vp_tonemask_adj_longblock,
  35986. _vp_tonemask_adj_otherblock,
  35987. _psy_noiseguards_44,
  35988. _psy_noisebias_impulse,
  35989. _psy_noisebias_padding,
  35990. _psy_noisebias_trans,
  35991. _psy_noisebias_long,
  35992. _psy_noise_suppress,
  35993. _psy_compand_44,
  35994. _psy_compand_short_mapping,
  35995. _psy_compand_long_mapping,
  35996. {_noise_start_short_44,_noise_start_long_44},
  35997. {_noise_part_short_44,_noise_part_long_44},
  35998. _noise_thresh_44,
  35999. _psy_ath_floater,
  36000. _psy_ath_abs,
  36001. _psy_lowpass_44,
  36002. _psy_global_44,
  36003. _global_mapping_44,
  36004. _psy_stereo_modes_44,
  36005. _floor_books,
  36006. _floor,
  36007. _floor_short_mapping_44,
  36008. _floor_long_mapping_44,
  36009. _mapres_template_44_stereo
  36010. };
  36011. ve_setup_data_template ve_setup_X_uncoupled={
  36012. 10,
  36013. rate_mapping_X,
  36014. quality_mapping_44,
  36015. -1,
  36016. 50000,
  36017. 200000,
  36018. blocksize_short_44,
  36019. blocksize_long_44,
  36020. _psy_tone_masteratt_44,
  36021. _psy_tone_0dB,
  36022. _psy_tone_suppress,
  36023. _vp_tonemask_adj_otherblock,
  36024. _vp_tonemask_adj_longblock,
  36025. _vp_tonemask_adj_otherblock,
  36026. _psy_noiseguards_44,
  36027. _psy_noisebias_impulse,
  36028. _psy_noisebias_padding,
  36029. _psy_noisebias_trans,
  36030. _psy_noisebias_long,
  36031. _psy_noise_suppress,
  36032. _psy_compand_44,
  36033. _psy_compand_short_mapping,
  36034. _psy_compand_long_mapping,
  36035. {_noise_start_short_44,_noise_start_long_44},
  36036. {_noise_part_short_44,_noise_part_long_44},
  36037. _noise_thresh_44_2,
  36038. _psy_ath_floater,
  36039. _psy_ath_abs,
  36040. _psy_lowpass_44,
  36041. _psy_global_44,
  36042. _global_mapping_44,
  36043. NULL,
  36044. _floor_books,
  36045. _floor,
  36046. _floor_short_mapping_44,
  36047. _floor_long_mapping_44,
  36048. _mapres_template_44_uncoupled
  36049. };
  36050. ve_setup_data_template ve_setup_X_stereo_low={
  36051. 1,
  36052. rate_mapping_X,
  36053. quality_mapping_44_stereo_low,
  36054. 2,
  36055. 50000,
  36056. 200000,
  36057. blocksize_short_44_low,
  36058. blocksize_long_44_low,
  36059. _psy_tone_masteratt_44_low,
  36060. _psy_tone_0dB,
  36061. _psy_tone_suppress,
  36062. _vp_tonemask_adj_otherblock,
  36063. _vp_tonemask_adj_longblock,
  36064. _vp_tonemask_adj_otherblock,
  36065. _psy_noiseguards_44,
  36066. _psy_noisebias_trans_low,
  36067. _psy_noisebias_trans_low,
  36068. _psy_noisebias_trans_low,
  36069. _psy_noisebias_long_low,
  36070. _psy_noise_suppress,
  36071. _psy_compand_44,
  36072. _psy_compand_short_mapping,
  36073. _psy_compand_long_mapping,
  36074. {_noise_start_short_44_low,_noise_start_long_44_low},
  36075. {_noise_part_short_44,_noise_part_long_44},
  36076. _noise_thresh_44,
  36077. _psy_ath_floater,
  36078. _psy_ath_abs,
  36079. _psy_lowpass_44_low,
  36080. _psy_global_44,
  36081. _global_mapping_44,
  36082. _psy_stereo_modes_44_low,
  36083. _floor_books,
  36084. _floor,
  36085. _floor_short_mapping_44_low,
  36086. _floor_long_mapping_44_low,
  36087. _mapres_template_44_stereo
  36088. };
  36089. ve_setup_data_template ve_setup_X_uncoupled_low={
  36090. 1,
  36091. rate_mapping_X,
  36092. quality_mapping_44_stereo_low,
  36093. -1,
  36094. 50000,
  36095. 200000,
  36096. blocksize_short_44_low,
  36097. blocksize_long_44_low,
  36098. _psy_tone_masteratt_44_low,
  36099. _psy_tone_0dB,
  36100. _psy_tone_suppress,
  36101. _vp_tonemask_adj_otherblock,
  36102. _vp_tonemask_adj_longblock,
  36103. _vp_tonemask_adj_otherblock,
  36104. _psy_noiseguards_44,
  36105. _psy_noisebias_trans_low,
  36106. _psy_noisebias_trans_low,
  36107. _psy_noisebias_trans_low,
  36108. _psy_noisebias_long_low,
  36109. _psy_noise_suppress,
  36110. _psy_compand_44,
  36111. _psy_compand_short_mapping,
  36112. _psy_compand_long_mapping,
  36113. {_noise_start_short_44_low,_noise_start_long_44_low},
  36114. {_noise_part_short_44,_noise_part_long_44},
  36115. _noise_thresh_44_2,
  36116. _psy_ath_floater,
  36117. _psy_ath_abs,
  36118. _psy_lowpass_44_low,
  36119. _psy_global_44,
  36120. _global_mapping_44,
  36121. NULL,
  36122. _floor_books,
  36123. _floor,
  36124. _floor_short_mapping_44_low,
  36125. _floor_long_mapping_44_low,
  36126. _mapres_template_44_uncoupled
  36127. };
  36128. ve_setup_data_template ve_setup_XX_stereo={
  36129. 2,
  36130. rate_mapping_X,
  36131. quality_mapping_8,
  36132. 2,
  36133. 0,
  36134. 8000,
  36135. blocksize_8,
  36136. blocksize_8,
  36137. _psy_tone_masteratt_8,
  36138. _psy_tone_0dB,
  36139. _psy_tone_suppress,
  36140. _vp_tonemask_adj_8,
  36141. NULL,
  36142. _vp_tonemask_adj_8,
  36143. _psy_noiseguards_8,
  36144. _psy_noisebias_8,
  36145. _psy_noisebias_8,
  36146. NULL,
  36147. NULL,
  36148. _psy_noise_suppress,
  36149. _psy_compand_8,
  36150. _psy_compand_8_mapping,
  36151. NULL,
  36152. {_noise_start_8,_noise_start_8},
  36153. {_noise_part_8,_noise_part_8},
  36154. _noise_thresh_44_2,
  36155. _psy_ath_floater_8,
  36156. _psy_ath_abs_8,
  36157. _psy_lowpass_8,
  36158. _psy_global_44,
  36159. _global_mapping_8,
  36160. _psy_stereo_modes_8,
  36161. _floor_books,
  36162. _floor,
  36163. _floor_mapping_8,
  36164. NULL,
  36165. _mapres_template_8_stereo
  36166. };
  36167. ve_setup_data_template ve_setup_XX_uncoupled={
  36168. 2,
  36169. rate_mapping_X,
  36170. quality_mapping_8,
  36171. -1,
  36172. 0,
  36173. 8000,
  36174. blocksize_8,
  36175. blocksize_8,
  36176. _psy_tone_masteratt_8,
  36177. _psy_tone_0dB,
  36178. _psy_tone_suppress,
  36179. _vp_tonemask_adj_8,
  36180. NULL,
  36181. _vp_tonemask_adj_8,
  36182. _psy_noiseguards_8,
  36183. _psy_noisebias_8,
  36184. _psy_noisebias_8,
  36185. NULL,
  36186. NULL,
  36187. _psy_noise_suppress,
  36188. _psy_compand_8,
  36189. _psy_compand_8_mapping,
  36190. NULL,
  36191. {_noise_start_8,_noise_start_8},
  36192. {_noise_part_8,_noise_part_8},
  36193. _noise_thresh_44_2,
  36194. _psy_ath_floater_8,
  36195. _psy_ath_abs_8,
  36196. _psy_lowpass_8,
  36197. _psy_global_44,
  36198. _global_mapping_8,
  36199. _psy_stereo_modes_8,
  36200. _floor_books,
  36201. _floor,
  36202. _floor_mapping_8,
  36203. NULL,
  36204. _mapres_template_8_uncoupled
  36205. };
  36206. static ve_setup_data_template *setup_list[]={
  36207. &ve_setup_44_stereo,
  36208. &ve_setup_44_stereo_low,
  36209. &ve_setup_44_uncoupled,
  36210. &ve_setup_44_uncoupled_low,
  36211. &ve_setup_32_stereo,
  36212. &ve_setup_32_stereo_low,
  36213. &ve_setup_32_uncoupled,
  36214. &ve_setup_32_uncoupled_low,
  36215. &ve_setup_22_stereo,
  36216. &ve_setup_22_uncoupled,
  36217. &ve_setup_16_stereo,
  36218. &ve_setup_16_uncoupled,
  36219. &ve_setup_11_stereo,
  36220. &ve_setup_11_uncoupled,
  36221. &ve_setup_8_stereo,
  36222. &ve_setup_8_uncoupled,
  36223. &ve_setup_X_stereo,
  36224. &ve_setup_X_uncoupled,
  36225. &ve_setup_X_stereo_low,
  36226. &ve_setup_X_uncoupled_low,
  36227. &ve_setup_XX_stereo,
  36228. &ve_setup_XX_uncoupled,
  36229. 0
  36230. };
  36231. static int vorbis_encode_toplevel_setup(vorbis_info *vi,int ch,long rate){
  36232. if(vi && vi->codec_setup){
  36233. vi->version=0;
  36234. vi->channels=ch;
  36235. vi->rate=rate;
  36236. return(0);
  36237. }
  36238. return(OV_EINVAL);
  36239. }
  36240. static void vorbis_encode_floor_setup(vorbis_info *vi,double s,int block,
  36241. static_codebook ***books,
  36242. vorbis_info_floor1 *in,
  36243. int *x){
  36244. int i,k,is=s;
  36245. vorbis_info_floor1 *f=_ogg_calloc(1,sizeof(*f));
  36246. codec_setup_info *ci=vi->codec_setup;
  36247. memcpy(f,in+x[is],sizeof(*f));
  36248. /* fill in the lowpass field, even if it's temporary */
  36249. f->n=ci->blocksizes[block]>>1;
  36250. /* books */
  36251. {
  36252. int partitions=f->partitions;
  36253. int maxclass=-1;
  36254. int maxbook=-1;
  36255. for(i=0;i<partitions;i++)
  36256. if(f->partitionclass[i]>maxclass)maxclass=f->partitionclass[i];
  36257. for(i=0;i<=maxclass;i++){
  36258. if(f->class_book[i]>maxbook)maxbook=f->class_book[i];
  36259. f->class_book[i]+=ci->books;
  36260. for(k=0;k<(1<<f->class_subs[i]);k++){
  36261. if(f->class_subbook[i][k]>maxbook)maxbook=f->class_subbook[i][k];
  36262. if(f->class_subbook[i][k]>=0)f->class_subbook[i][k]+=ci->books;
  36263. }
  36264. }
  36265. for(i=0;i<=maxbook;i++)
  36266. ci->book_param[ci->books++]=books[x[is]][i];
  36267. }
  36268. /* for now, we're only using floor 1 */
  36269. ci->floor_type[ci->floors]=1;
  36270. ci->floor_param[ci->floors]=f;
  36271. ci->floors++;
  36272. return;
  36273. }
  36274. static void vorbis_encode_global_psych_setup(vorbis_info *vi,double s,
  36275. vorbis_info_psy_global *in,
  36276. double *x){
  36277. int i,is=s;
  36278. double ds=s-is;
  36279. codec_setup_info *ci=vi->codec_setup;
  36280. vorbis_info_psy_global *g=&ci->psy_g_param;
  36281. memcpy(g,in+(int)x[is],sizeof(*g));
  36282. ds=x[is]*(1.-ds)+x[is+1]*ds;
  36283. is=(int)ds;
  36284. ds-=is;
  36285. if(ds==0 && is>0){
  36286. is--;
  36287. ds=1.;
  36288. }
  36289. /* interpolate the trigger threshholds */
  36290. for(i=0;i<4;i++){
  36291. g->preecho_thresh[i]=in[is].preecho_thresh[i]*(1.-ds)+in[is+1].preecho_thresh[i]*ds;
  36292. g->postecho_thresh[i]=in[is].postecho_thresh[i]*(1.-ds)+in[is+1].postecho_thresh[i]*ds;
  36293. }
  36294. g->ampmax_att_per_sec=ci->hi.amplitude_track_dBpersec;
  36295. return;
  36296. }
  36297. static void vorbis_encode_global_stereo(vorbis_info *vi,
  36298. highlevel_encode_setup *hi,
  36299. adj_stereo *p){
  36300. float s=hi->stereo_point_setting;
  36301. int i,is=s;
  36302. double ds=s-is;
  36303. codec_setup_info *ci=vi->codec_setup;
  36304. vorbis_info_psy_global *g=&ci->psy_g_param;
  36305. if(p){
  36306. memcpy(g->coupling_prepointamp,p[is].pre,sizeof(*p[is].pre)*PACKETBLOBS);
  36307. memcpy(g->coupling_postpointamp,p[is].post,sizeof(*p[is].post)*PACKETBLOBS);
  36308. if(hi->managed){
  36309. /* interpolate the kHz threshholds */
  36310. for(i=0;i<PACKETBLOBS;i++){
  36311. float kHz=p[is].kHz[i]*(1.-ds)+p[is+1].kHz[i]*ds;
  36312. g->coupling_pointlimit[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
  36313. g->coupling_pointlimit[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
  36314. g->coupling_pkHz[i]=kHz;
  36315. kHz=p[is].lowpasskHz[i]*(1.-ds)+p[is+1].lowpasskHz[i]*ds;
  36316. g->sliding_lowpass[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
  36317. g->sliding_lowpass[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
  36318. }
  36319. }else{
  36320. float kHz=p[is].kHz[PACKETBLOBS/2]*(1.-ds)+p[is+1].kHz[PACKETBLOBS/2]*ds;
  36321. for(i=0;i<PACKETBLOBS;i++){
  36322. g->coupling_pointlimit[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
  36323. g->coupling_pointlimit[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
  36324. g->coupling_pkHz[i]=kHz;
  36325. }
  36326. kHz=p[is].lowpasskHz[PACKETBLOBS/2]*(1.-ds)+p[is+1].lowpasskHz[PACKETBLOBS/2]*ds;
  36327. for(i=0;i<PACKETBLOBS;i++){
  36328. g->sliding_lowpass[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
  36329. g->sliding_lowpass[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
  36330. }
  36331. }
  36332. }else{
  36333. for(i=0;i<PACKETBLOBS;i++){
  36334. g->sliding_lowpass[0][i]=ci->blocksizes[0];
  36335. g->sliding_lowpass[1][i]=ci->blocksizes[1];
  36336. }
  36337. }
  36338. return;
  36339. }
  36340. static void vorbis_encode_psyset_setup(vorbis_info *vi,double s,
  36341. int *nn_start,
  36342. int *nn_partition,
  36343. double *nn_thresh,
  36344. int block){
  36345. codec_setup_info *ci=vi->codec_setup;
  36346. vorbis_info_psy *p=ci->psy_param[block];
  36347. highlevel_encode_setup *hi=&ci->hi;
  36348. int is=s;
  36349. if(block>=ci->psys)
  36350. ci->psys=block+1;
  36351. if(!p){
  36352. p=_ogg_calloc(1,sizeof(*p));
  36353. ci->psy_param[block]=p;
  36354. }
  36355. memcpy(p,&_psy_info_template,sizeof(*p));
  36356. p->blockflag=block>>1;
  36357. if(hi->noise_normalize_p){
  36358. p->normal_channel_p=1;
  36359. p->normal_point_p=1;
  36360. p->normal_start=nn_start[is];
  36361. p->normal_partition=nn_partition[is];
  36362. p->normal_thresh=nn_thresh[is];
  36363. }
  36364. return;
  36365. }
  36366. static void vorbis_encode_tonemask_setup(vorbis_info *vi,double s,int block,
  36367. att3 *att,
  36368. int *max,
  36369. vp_adjblock *in){
  36370. int i,is=s;
  36371. double ds=s-is;
  36372. codec_setup_info *ci=vi->codec_setup;
  36373. vorbis_info_psy *p=ci->psy_param[block];
  36374. /* 0 and 2 are only used by bitmanagement, but there's no harm to always
  36375. filling the values in here */
  36376. p->tone_masteratt[0]=att[is].att[0]*(1.-ds)+att[is+1].att[0]*ds;
  36377. p->tone_masteratt[1]=att[is].att[1]*(1.-ds)+att[is+1].att[1]*ds;
  36378. p->tone_masteratt[2]=att[is].att[2]*(1.-ds)+att[is+1].att[2]*ds;
  36379. p->tone_centerboost=att[is].boost*(1.-ds)+att[is+1].boost*ds;
  36380. p->tone_decay=att[is].decay*(1.-ds)+att[is+1].decay*ds;
  36381. p->max_curve_dB=max[is]*(1.-ds)+max[is+1]*ds;
  36382. for(i=0;i<P_BANDS;i++)
  36383. p->toneatt[i]=in[is].block[i]*(1.-ds)+in[is+1].block[i]*ds;
  36384. return;
  36385. }
  36386. static void vorbis_encode_compand_setup(vorbis_info *vi,double s,int block,
  36387. compandblock *in, double *x){
  36388. int i,is=s;
  36389. double ds=s-is;
  36390. codec_setup_info *ci=vi->codec_setup;
  36391. vorbis_info_psy *p=ci->psy_param[block];
  36392. ds=x[is]*(1.-ds)+x[is+1]*ds;
  36393. is=(int)ds;
  36394. ds-=is;
  36395. if(ds==0 && is>0){
  36396. is--;
  36397. ds=1.;
  36398. }
  36399. /* interpolate the compander settings */
  36400. for(i=0;i<NOISE_COMPAND_LEVELS;i++)
  36401. p->noisecompand[i]=in[is].data[i]*(1.-ds)+in[is+1].data[i]*ds;
  36402. return;
  36403. }
  36404. static void vorbis_encode_peak_setup(vorbis_info *vi,double s,int block,
  36405. int *suppress){
  36406. int is=s;
  36407. double ds=s-is;
  36408. codec_setup_info *ci=vi->codec_setup;
  36409. vorbis_info_psy *p=ci->psy_param[block];
  36410. p->tone_abs_limit=suppress[is]*(1.-ds)+suppress[is+1]*ds;
  36411. return;
  36412. }
  36413. static void vorbis_encode_noisebias_setup(vorbis_info *vi,double s,int block,
  36414. int *suppress,
  36415. noise3 *in,
  36416. noiseguard *guard,
  36417. double userbias){
  36418. int i,is=s,j;
  36419. double ds=s-is;
  36420. codec_setup_info *ci=vi->codec_setup;
  36421. vorbis_info_psy *p=ci->psy_param[block];
  36422. p->noisemaxsupp=suppress[is]*(1.-ds)+suppress[is+1]*ds;
  36423. p->noisewindowlomin=guard[block].lo;
  36424. p->noisewindowhimin=guard[block].hi;
  36425. p->noisewindowfixed=guard[block].fixed;
  36426. for(j=0;j<P_NOISECURVES;j++)
  36427. for(i=0;i<P_BANDS;i++)
  36428. p->noiseoff[j][i]=in[is].data[j][i]*(1.-ds)+in[is+1].data[j][i]*ds;
  36429. /* impulse blocks may take a user specified bias to boost the
  36430. nominal/high noise encoding depth */
  36431. for(j=0;j<P_NOISECURVES;j++){
  36432. float min=p->noiseoff[j][0]+6; /* the lowest it can go */
  36433. for(i=0;i<P_BANDS;i++){
  36434. p->noiseoff[j][i]+=userbias;
  36435. if(p->noiseoff[j][i]<min)p->noiseoff[j][i]=min;
  36436. }
  36437. }
  36438. return;
  36439. }
  36440. static void vorbis_encode_ath_setup(vorbis_info *vi,int block){
  36441. codec_setup_info *ci=vi->codec_setup;
  36442. vorbis_info_psy *p=ci->psy_param[block];
  36443. p->ath_adjatt=ci->hi.ath_floating_dB;
  36444. p->ath_maxatt=ci->hi.ath_absolute_dB;
  36445. return;
  36446. }
  36447. static int book_dup_or_new(codec_setup_info *ci,static_codebook *book){
  36448. int i;
  36449. for(i=0;i<ci->books;i++)
  36450. if(ci->book_param[i]==book)return(i);
  36451. return(ci->books++);
  36452. }
  36453. static void vorbis_encode_blocksize_setup(vorbis_info *vi,double s,
  36454. int *shortb,int *longb){
  36455. codec_setup_info *ci=vi->codec_setup;
  36456. int is=s;
  36457. int blockshort=shortb[is];
  36458. int blocklong=longb[is];
  36459. ci->blocksizes[0]=blockshort;
  36460. ci->blocksizes[1]=blocklong;
  36461. }
  36462. static void vorbis_encode_residue_setup(vorbis_info *vi,
  36463. int number, int block,
  36464. vorbis_residue_template *res){
  36465. codec_setup_info *ci=vi->codec_setup;
  36466. int i,n;
  36467. vorbis_info_residue0 *r=ci->residue_param[number]=
  36468. _ogg_malloc(sizeof(*r));
  36469. memcpy(r,res->res,sizeof(*r));
  36470. if(ci->residues<=number)ci->residues=number+1;
  36471. switch(ci->blocksizes[block]){
  36472. case 64:case 128:case 256:
  36473. r->grouping=16;
  36474. break;
  36475. default:
  36476. r->grouping=32;
  36477. break;
  36478. }
  36479. ci->residue_type[number]=res->res_type;
  36480. /* to be adjusted by lowpass/pointlimit later */
  36481. n=r->end=ci->blocksizes[block]>>1;
  36482. if(res->res_type==2)
  36483. n=r->end*=vi->channels;
  36484. /* fill in all the books */
  36485. {
  36486. int booklist=0,k;
  36487. if(ci->hi.managed){
  36488. for(i=0;i<r->partitions;i++)
  36489. for(k=0;k<3;k++)
  36490. if(res->books_base_managed->books[i][k])
  36491. r->secondstages[i]|=(1<<k);
  36492. r->groupbook=book_dup_or_new(ci,res->book_aux_managed);
  36493. ci->book_param[r->groupbook]=res->book_aux_managed;
  36494. for(i=0;i<r->partitions;i++){
  36495. for(k=0;k<3;k++){
  36496. if(res->books_base_managed->books[i][k]){
  36497. int bookid=book_dup_or_new(ci,res->books_base_managed->books[i][k]);
  36498. r->booklist[booklist++]=bookid;
  36499. ci->book_param[bookid]=res->books_base_managed->books[i][k];
  36500. }
  36501. }
  36502. }
  36503. }else{
  36504. for(i=0;i<r->partitions;i++)
  36505. for(k=0;k<3;k++)
  36506. if(res->books_base->books[i][k])
  36507. r->secondstages[i]|=(1<<k);
  36508. r->groupbook=book_dup_or_new(ci,res->book_aux);
  36509. ci->book_param[r->groupbook]=res->book_aux;
  36510. for(i=0;i<r->partitions;i++){
  36511. for(k=0;k<3;k++){
  36512. if(res->books_base->books[i][k]){
  36513. int bookid=book_dup_or_new(ci,res->books_base->books[i][k]);
  36514. r->booklist[booklist++]=bookid;
  36515. ci->book_param[bookid]=res->books_base->books[i][k];
  36516. }
  36517. }
  36518. }
  36519. }
  36520. }
  36521. /* lowpass setup/pointlimit */
  36522. {
  36523. double freq=ci->hi.lowpass_kHz*1000.;
  36524. vorbis_info_floor1 *f=ci->floor_param[block]; /* by convention */
  36525. double nyq=vi->rate/2.;
  36526. long blocksize=ci->blocksizes[block]>>1;
  36527. /* lowpass needs to be set in the floor and the residue. */
  36528. if(freq>nyq)freq=nyq;
  36529. /* in the floor, the granularity can be very fine; it doesn't alter
  36530. the encoding structure, only the samples used to fit the floor
  36531. approximation */
  36532. f->n=freq/nyq*blocksize;
  36533. /* this res may by limited by the maximum pointlimit of the mode,
  36534. not the lowpass. the floor is always lowpass limited. */
  36535. if(res->limit_type){
  36536. if(ci->hi.managed)
  36537. freq=ci->psy_g_param.coupling_pkHz[PACKETBLOBS-1]*1000.;
  36538. else
  36539. freq=ci->psy_g_param.coupling_pkHz[PACKETBLOBS/2]*1000.;
  36540. if(freq>nyq)freq=nyq;
  36541. }
  36542. /* in the residue, we're constrained, physically, by partition
  36543. boundaries. We still lowpass 'wherever', but we have to round up
  36544. here to next boundary, or the vorbis spec will round it *down* to
  36545. previous boundary in encode/decode */
  36546. if(ci->residue_type[block]==2)
  36547. r->end=(int)((freq/nyq*blocksize*2)/r->grouping+.9)* /* round up only if we're well past */
  36548. r->grouping;
  36549. else
  36550. r->end=(int)((freq/nyq*blocksize)/r->grouping+.9)* /* round up only if we're well past */
  36551. r->grouping;
  36552. }
  36553. }
  36554. /* we assume two maps in this encoder */
  36555. static void vorbis_encode_map_n_res_setup(vorbis_info *vi,double s,
  36556. vorbis_mapping_template *maps){
  36557. codec_setup_info *ci=vi->codec_setup;
  36558. int i,j,is=s,modes=2;
  36559. vorbis_info_mapping0 *map=maps[is].map;
  36560. vorbis_info_mode *mode=_mode_template;
  36561. vorbis_residue_template *res=maps[is].res;
  36562. if(ci->blocksizes[0]==ci->blocksizes[1])modes=1;
  36563. for(i=0;i<modes;i++){
  36564. ci->map_param[i]=_ogg_calloc(1,sizeof(*map));
  36565. ci->mode_param[i]=_ogg_calloc(1,sizeof(*mode));
  36566. memcpy(ci->mode_param[i],mode+i,sizeof(*_mode_template));
  36567. if(i>=ci->modes)ci->modes=i+1;
  36568. ci->map_type[i]=0;
  36569. memcpy(ci->map_param[i],map+i,sizeof(*map));
  36570. if(i>=ci->maps)ci->maps=i+1;
  36571. for(j=0;j<map[i].submaps;j++)
  36572. vorbis_encode_residue_setup(vi,map[i].residuesubmap[j],i
  36573. ,res+map[i].residuesubmap[j]);
  36574. }
  36575. }
  36576. static double setting_to_approx_bitrate(vorbis_info *vi){
  36577. codec_setup_info *ci=vi->codec_setup;
  36578. highlevel_encode_setup *hi=&ci->hi;
  36579. ve_setup_data_template *setup=(ve_setup_data_template *)hi->setup;
  36580. int is=hi->base_setting;
  36581. double ds=hi->base_setting-is;
  36582. int ch=vi->channels;
  36583. double *r=setup->rate_mapping;
  36584. if(r==NULL)
  36585. return(-1);
  36586. return((r[is]*(1.-ds)+r[is+1]*ds)*ch);
  36587. }
  36588. static void get_setup_template(vorbis_info *vi,
  36589. long ch,long srate,
  36590. double req,int q_or_bitrate){
  36591. int i=0,j;
  36592. codec_setup_info *ci=vi->codec_setup;
  36593. highlevel_encode_setup *hi=&ci->hi;
  36594. if(q_or_bitrate)req/=ch;
  36595. while(setup_list[i]){
  36596. if(setup_list[i]->coupling_restriction==-1 ||
  36597. setup_list[i]->coupling_restriction==ch){
  36598. if(srate>=setup_list[i]->samplerate_min_restriction &&
  36599. srate<=setup_list[i]->samplerate_max_restriction){
  36600. int mappings=setup_list[i]->mappings;
  36601. double *map=(q_or_bitrate?
  36602. setup_list[i]->rate_mapping:
  36603. setup_list[i]->quality_mapping);
  36604. /* the template matches. Does the requested quality mode
  36605. fall within this template's modes? */
  36606. if(req<map[0]){++i;continue;}
  36607. if(req>map[setup_list[i]->mappings]){++i;continue;}
  36608. for(j=0;j<mappings;j++)
  36609. if(req>=map[j] && req<map[j+1])break;
  36610. /* an all-points match */
  36611. hi->setup=setup_list[i];
  36612. if(j==mappings)
  36613. hi->base_setting=j-.001;
  36614. else{
  36615. float low=map[j];
  36616. float high=map[j+1];
  36617. float del=(req-low)/(high-low);
  36618. hi->base_setting=j+del;
  36619. }
  36620. return;
  36621. }
  36622. }
  36623. i++;
  36624. }
  36625. hi->setup=NULL;
  36626. }
  36627. /* encoders will need to use vorbis_info_init beforehand and call
  36628. vorbis_info clear when all done */
  36629. /* two interfaces; this, more detailed one, and later a convenience
  36630. layer on top */
  36631. /* the final setup call */
  36632. int vorbis_encode_setup_init(vorbis_info *vi){
  36633. int i0=0,singleblock=0;
  36634. codec_setup_info *ci=vi->codec_setup;
  36635. ve_setup_data_template *setup=NULL;
  36636. highlevel_encode_setup *hi=&ci->hi;
  36637. if(ci==NULL)return(OV_EINVAL);
  36638. if(!hi->impulse_block_p)i0=1;
  36639. /* too low/high an ATH floater is nonsensical, but doesn't break anything */
  36640. if(hi->ath_floating_dB>-80)hi->ath_floating_dB=-80;
  36641. if(hi->ath_floating_dB<-200)hi->ath_floating_dB=-200;
  36642. /* again, bound this to avoid the app shooting itself int he foot
  36643. too badly */
  36644. if(hi->amplitude_track_dBpersec>0.)hi->amplitude_track_dBpersec=0.;
  36645. if(hi->amplitude_track_dBpersec<-99999.)hi->amplitude_track_dBpersec=-99999.;
  36646. /* get the appropriate setup template; matches the fetch in previous
  36647. stages */
  36648. setup=(ve_setup_data_template *)hi->setup;
  36649. if(setup==NULL)return(OV_EINVAL);
  36650. hi->set_in_stone=1;
  36651. /* choose block sizes from configured sizes as well as paying
  36652. attention to long_block_p and short_block_p. If the configured
  36653. short and long blocks are the same length, we set long_block_p
  36654. and unset short_block_p */
  36655. vorbis_encode_blocksize_setup(vi,hi->base_setting,
  36656. setup->blocksize_short,
  36657. setup->blocksize_long);
  36658. if(ci->blocksizes[0]==ci->blocksizes[1])singleblock=1;
  36659. /* floor setup; choose proper floor params. Allocated on the floor
  36660. stack in order; if we alloc only long floor, it's 0 */
  36661. vorbis_encode_floor_setup(vi,hi->short_setting,0,
  36662. setup->floor_books,
  36663. setup->floor_params,
  36664. setup->floor_short_mapping);
  36665. if(!singleblock)
  36666. vorbis_encode_floor_setup(vi,hi->long_setting,1,
  36667. setup->floor_books,
  36668. setup->floor_params,
  36669. setup->floor_long_mapping);
  36670. /* setup of [mostly] short block detection and stereo*/
  36671. vorbis_encode_global_psych_setup(vi,hi->trigger_setting,
  36672. setup->global_params,
  36673. setup->global_mapping);
  36674. vorbis_encode_global_stereo(vi,hi,setup->stereo_modes);
  36675. /* basic psych setup and noise normalization */
  36676. vorbis_encode_psyset_setup(vi,hi->short_setting,
  36677. setup->psy_noise_normal_start[0],
  36678. setup->psy_noise_normal_partition[0],
  36679. setup->psy_noise_normal_thresh,
  36680. 0);
  36681. vorbis_encode_psyset_setup(vi,hi->short_setting,
  36682. setup->psy_noise_normal_start[0],
  36683. setup->psy_noise_normal_partition[0],
  36684. setup->psy_noise_normal_thresh,
  36685. 1);
  36686. if(!singleblock){
  36687. vorbis_encode_psyset_setup(vi,hi->long_setting,
  36688. setup->psy_noise_normal_start[1],
  36689. setup->psy_noise_normal_partition[1],
  36690. setup->psy_noise_normal_thresh,
  36691. 2);
  36692. vorbis_encode_psyset_setup(vi,hi->long_setting,
  36693. setup->psy_noise_normal_start[1],
  36694. setup->psy_noise_normal_partition[1],
  36695. setup->psy_noise_normal_thresh,
  36696. 3);
  36697. }
  36698. /* tone masking setup */
  36699. vorbis_encode_tonemask_setup(vi,hi->block[i0].tone_mask_setting,0,
  36700. setup->psy_tone_masteratt,
  36701. setup->psy_tone_0dB,
  36702. setup->psy_tone_adj_impulse);
  36703. vorbis_encode_tonemask_setup(vi,hi->block[1].tone_mask_setting,1,
  36704. setup->psy_tone_masteratt,
  36705. setup->psy_tone_0dB,
  36706. setup->psy_tone_adj_other);
  36707. if(!singleblock){
  36708. vorbis_encode_tonemask_setup(vi,hi->block[2].tone_mask_setting,2,
  36709. setup->psy_tone_masteratt,
  36710. setup->psy_tone_0dB,
  36711. setup->psy_tone_adj_other);
  36712. vorbis_encode_tonemask_setup(vi,hi->block[3].tone_mask_setting,3,
  36713. setup->psy_tone_masteratt,
  36714. setup->psy_tone_0dB,
  36715. setup->psy_tone_adj_long);
  36716. }
  36717. /* noise companding setup */
  36718. vorbis_encode_compand_setup(vi,hi->block[i0].noise_compand_setting,0,
  36719. setup->psy_noise_compand,
  36720. setup->psy_noise_compand_short_mapping);
  36721. vorbis_encode_compand_setup(vi,hi->block[1].noise_compand_setting,1,
  36722. setup->psy_noise_compand,
  36723. setup->psy_noise_compand_short_mapping);
  36724. if(!singleblock){
  36725. vorbis_encode_compand_setup(vi,hi->block[2].noise_compand_setting,2,
  36726. setup->psy_noise_compand,
  36727. setup->psy_noise_compand_long_mapping);
  36728. vorbis_encode_compand_setup(vi,hi->block[3].noise_compand_setting,3,
  36729. setup->psy_noise_compand,
  36730. setup->psy_noise_compand_long_mapping);
  36731. }
  36732. /* peak guarding setup */
  36733. vorbis_encode_peak_setup(vi,hi->block[i0].tone_peaklimit_setting,0,
  36734. setup->psy_tone_dBsuppress);
  36735. vorbis_encode_peak_setup(vi,hi->block[1].tone_peaklimit_setting,1,
  36736. setup->psy_tone_dBsuppress);
  36737. if(!singleblock){
  36738. vorbis_encode_peak_setup(vi,hi->block[2].tone_peaklimit_setting,2,
  36739. setup->psy_tone_dBsuppress);
  36740. vorbis_encode_peak_setup(vi,hi->block[3].tone_peaklimit_setting,3,
  36741. setup->psy_tone_dBsuppress);
  36742. }
  36743. /* noise bias setup */
  36744. vorbis_encode_noisebias_setup(vi,hi->block[i0].noise_bias_setting,0,
  36745. setup->psy_noise_dBsuppress,
  36746. setup->psy_noise_bias_impulse,
  36747. setup->psy_noiseguards,
  36748. (i0==0?hi->impulse_noisetune:0.));
  36749. vorbis_encode_noisebias_setup(vi,hi->block[1].noise_bias_setting,1,
  36750. setup->psy_noise_dBsuppress,
  36751. setup->psy_noise_bias_padding,
  36752. setup->psy_noiseguards,0.);
  36753. if(!singleblock){
  36754. vorbis_encode_noisebias_setup(vi,hi->block[2].noise_bias_setting,2,
  36755. setup->psy_noise_dBsuppress,
  36756. setup->psy_noise_bias_trans,
  36757. setup->psy_noiseguards,0.);
  36758. vorbis_encode_noisebias_setup(vi,hi->block[3].noise_bias_setting,3,
  36759. setup->psy_noise_dBsuppress,
  36760. setup->psy_noise_bias_long,
  36761. setup->psy_noiseguards,0.);
  36762. }
  36763. vorbis_encode_ath_setup(vi,0);
  36764. vorbis_encode_ath_setup(vi,1);
  36765. if(!singleblock){
  36766. vorbis_encode_ath_setup(vi,2);
  36767. vorbis_encode_ath_setup(vi,3);
  36768. }
  36769. vorbis_encode_map_n_res_setup(vi,hi->base_setting,setup->maps);
  36770. /* set bitrate readonlies and management */
  36771. vi->bitrate_nominal=setting_to_approx_bitrate(vi);
  36772. vi->bitrate_lower=hi->bitrate_min;
  36773. vi->bitrate_upper=hi->bitrate_max;
  36774. vi->bitrate_window=hi->bitrate_limit_window;
  36775. if(hi->managed){
  36776. ci->bi.queue_avg_time=hi->bitrate_av_window;
  36777. ci->bi.queue_avg_center=hi->bitrate_av_window_center;
  36778. ci->bi.queue_minmax_time=hi->bitrate_limit_window;
  36779. ci->bi.queue_hardmin=hi->bitrate_min;
  36780. ci->bi.queue_hardmax=hi->bitrate_max;
  36781. ci->bi.queue_avgmin=hi->bitrate_av_lo;
  36782. ci->bi.queue_avgmax=hi->bitrate_av_hi;
  36783. ci->bi.avgfloat_downslew_max=-999999.f;
  36784. ci->bi.avgfloat_upslew_max=999999.f;
  36785. }
  36786. return(0);
  36787. }
  36788. static int vorbis_encode_setup_setting(vorbis_info *vi,
  36789. long channels,
  36790. long rate){
  36791. int ret=0,i,is;
  36792. codec_setup_info *ci=vi->codec_setup;
  36793. highlevel_encode_setup *hi=&ci->hi;
  36794. ve_setup_data_template *setup=hi->setup;
  36795. double ds;
  36796. ret=vorbis_encode_toplevel_setup(vi,channels,rate);
  36797. if(ret)return(ret);
  36798. is=hi->base_setting;
  36799. ds=hi->base_setting-is;
  36800. hi->short_setting=hi->base_setting;
  36801. hi->long_setting=hi->base_setting;
  36802. hi->managed=0;
  36803. hi->impulse_block_p=1;
  36804. hi->noise_normalize_p=1;
  36805. hi->stereo_point_setting=hi->base_setting;
  36806. hi->lowpass_kHz=
  36807. setup->psy_lowpass[is]*(1.-ds)+setup->psy_lowpass[is+1]*ds;
  36808. hi->ath_floating_dB=setup->psy_ath_float[is]*(1.-ds)+
  36809. setup->psy_ath_float[is+1]*ds;
  36810. hi->ath_absolute_dB=setup->psy_ath_abs[is]*(1.-ds)+
  36811. setup->psy_ath_abs[is+1]*ds;
  36812. hi->amplitude_track_dBpersec=-6.;
  36813. hi->trigger_setting=hi->base_setting;
  36814. for(i=0;i<4;i++){
  36815. hi->block[i].tone_mask_setting=hi->base_setting;
  36816. hi->block[i].tone_peaklimit_setting=hi->base_setting;
  36817. hi->block[i].noise_bias_setting=hi->base_setting;
  36818. hi->block[i].noise_compand_setting=hi->base_setting;
  36819. }
  36820. return(ret);
  36821. }
  36822. int vorbis_encode_setup_vbr(vorbis_info *vi,
  36823. long channels,
  36824. long rate,
  36825. float quality){
  36826. codec_setup_info *ci=vi->codec_setup;
  36827. highlevel_encode_setup *hi=&ci->hi;
  36828. quality+=.00001;
  36829. if(quality>=1.)quality=.9999;
  36830. get_setup_template(vi,channels,rate,quality,0);
  36831. if(!hi->setup)return OV_EIMPL;
  36832. return vorbis_encode_setup_setting(vi,channels,rate);
  36833. }
  36834. int vorbis_encode_init_vbr(vorbis_info *vi,
  36835. long channels,
  36836. long rate,
  36837. float base_quality /* 0. to 1. */
  36838. ){
  36839. int ret=0;
  36840. ret=vorbis_encode_setup_vbr(vi,channels,rate,base_quality);
  36841. if(ret){
  36842. vorbis_info_clear(vi);
  36843. return ret;
  36844. }
  36845. ret=vorbis_encode_setup_init(vi);
  36846. if(ret)
  36847. vorbis_info_clear(vi);
  36848. return(ret);
  36849. }
  36850. int vorbis_encode_setup_managed(vorbis_info *vi,
  36851. long channels,
  36852. long rate,
  36853. long max_bitrate,
  36854. long nominal_bitrate,
  36855. long min_bitrate){
  36856. codec_setup_info *ci=vi->codec_setup;
  36857. highlevel_encode_setup *hi=&ci->hi;
  36858. double tnominal=nominal_bitrate;
  36859. int ret=0;
  36860. if(nominal_bitrate<=0.){
  36861. if(max_bitrate>0.){
  36862. nominal_bitrate=max_bitrate*.875;
  36863. }else{
  36864. if(min_bitrate>0.){
  36865. nominal_bitrate=min_bitrate;
  36866. }else{
  36867. return(OV_EINVAL);
  36868. }
  36869. }
  36870. }
  36871. get_setup_template(vi,channels,rate,nominal_bitrate,1);
  36872. if(!hi->setup)return OV_EIMPL;
  36873. ret=vorbis_encode_setup_setting(vi,channels,rate);
  36874. if(ret){
  36875. vorbis_info_clear(vi);
  36876. return ret;
  36877. }
  36878. /* initialize management with sane defaults */
  36879. /* initialize management with sane defaults */
  36880. hi->managed=1;
  36881. hi->bitrate_av_window=4.;
  36882. hi->bitrate_av_window_center=.5;
  36883. hi->bitrate_limit_window=2.;
  36884. hi->bitrate_min=min_bitrate;
  36885. hi->bitrate_max=max_bitrate;
  36886. hi->bitrate_av_lo=tnominal;
  36887. hi->bitrate_av_hi=tnominal;
  36888. return(ret);
  36889. }
  36890. int vorbis_encode_init(vorbis_info *vi,
  36891. long channels,
  36892. long rate,
  36893. long max_bitrate,
  36894. long nominal_bitrate,
  36895. long min_bitrate){
  36896. int ret=vorbis_encode_setup_managed(vi,channels,rate,
  36897. max_bitrate,
  36898. nominal_bitrate,
  36899. min_bitrate);
  36900. if(ret){
  36901. vorbis_info_clear(vi);
  36902. return(ret);
  36903. }
  36904. ret=vorbis_encode_setup_init(vi);
  36905. if(ret)
  36906. vorbis_info_clear(vi);
  36907. return(ret);
  36908. }
  36909. int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg){
  36910. if(vi){
  36911. codec_setup_info *ci=vi->codec_setup;
  36912. highlevel_encode_setup *hi=&ci->hi;
  36913. int setp=(number&0xf); /* a read request has a low nibble of 0 */
  36914. if(setp && hi->set_in_stone)return(OV_EINVAL);
  36915. switch(number){
  36916. case OV_ECTL_RATEMANAGE_GET:
  36917. {
  36918. struct ovectl_ratemanage_arg *ai=
  36919. (struct ovectl_ratemanage_arg *)arg;
  36920. ai->management_active=hi->managed;
  36921. ai->bitrate_av_window=hi->bitrate_av_window;
  36922. ai->bitrate_av_window_center=hi->bitrate_av_window_center;
  36923. ai->bitrate_hard_window=hi->bitrate_limit_window;
  36924. ai->bitrate_hard_min=hi->bitrate_min;
  36925. ai->bitrate_hard_max=hi->bitrate_max;
  36926. ai->bitrate_av_lo=hi->bitrate_av_lo;
  36927. ai->bitrate_av_hi=hi->bitrate_av_hi;
  36928. }
  36929. return(0);
  36930. case OV_ECTL_RATEMANAGE_SET:
  36931. {
  36932. struct ovectl_ratemanage_arg *ai=
  36933. (struct ovectl_ratemanage_arg *)arg;
  36934. if(ai==NULL){
  36935. hi->managed=0;
  36936. }else{
  36937. hi->managed=ai->management_active;
  36938. vorbis_encode_ctl(vi,OV_ECTL_RATEMANAGE_AVG,arg);
  36939. vorbis_encode_ctl(vi,OV_ECTL_RATEMANAGE_HARD,arg);
  36940. }
  36941. }
  36942. return 0;
  36943. case OV_ECTL_RATEMANAGE_AVG:
  36944. {
  36945. struct ovectl_ratemanage_arg *ai=
  36946. (struct ovectl_ratemanage_arg *)arg;
  36947. if(ai==NULL){
  36948. hi->bitrate_av_lo=0;
  36949. hi->bitrate_av_hi=0;
  36950. hi->bitrate_av_window=0;
  36951. }else{
  36952. hi->bitrate_av_window=ai->bitrate_av_window;
  36953. hi->bitrate_av_window_center=ai->bitrate_av_window_center;
  36954. hi->bitrate_av_lo=ai->bitrate_av_lo;
  36955. hi->bitrate_av_hi=ai->bitrate_av_hi;
  36956. }
  36957. if(hi->bitrate_av_window<.25)hi->bitrate_av_window=.25;
  36958. if(hi->bitrate_av_window>10.)hi->bitrate_av_window=10.;
  36959. if(hi->bitrate_av_window_center<0.)hi->bitrate_av_window=0.;
  36960. if(hi->bitrate_av_window_center>1.)hi->bitrate_av_window=1.;
  36961. if( ( (hi->bitrate_av_lo<=0 && hi->bitrate_av_hi<=0)||
  36962. (hi->bitrate_av_window<=0) ) &&
  36963. ( (hi->bitrate_min<=0 && hi->bitrate_max<=0)||
  36964. (hi->bitrate_limit_window<=0) ))
  36965. hi->managed=0;
  36966. }
  36967. return(0);
  36968. case OV_ECTL_RATEMANAGE_HARD:
  36969. {
  36970. struct ovectl_ratemanage_arg *ai=
  36971. (struct ovectl_ratemanage_arg *)arg;
  36972. if(ai==NULL){
  36973. hi->bitrate_min=0;
  36974. hi->bitrate_max=0;
  36975. hi->bitrate_limit_window=0;
  36976. }else{
  36977. hi->bitrate_limit_window=ai->bitrate_hard_window;
  36978. hi->bitrate_min=ai->bitrate_hard_min;
  36979. hi->bitrate_max=ai->bitrate_hard_max;
  36980. }
  36981. if(hi->bitrate_limit_window<0.)hi->bitrate_limit_window=0.;
  36982. if(hi->bitrate_limit_window>10.)hi->bitrate_limit_window=10.;
  36983. if( ( (hi->bitrate_av_lo<=0 && hi->bitrate_av_hi<=0)||
  36984. (hi->bitrate_av_window<=0) ) &&
  36985. ( (hi->bitrate_min<=0 && hi->bitrate_max<=0)||
  36986. (hi->bitrate_limit_window<=0) ))
  36987. hi->managed=0;
  36988. }
  36989. return(0);
  36990. case OV_ECTL_LOWPASS_GET:
  36991. {
  36992. double *farg=(double *)arg;
  36993. *farg=hi->lowpass_kHz;
  36994. }
  36995. return(0);
  36996. case OV_ECTL_LOWPASS_SET:
  36997. {
  36998. double *farg=(double *)arg;
  36999. hi->lowpass_kHz=*farg;
  37000. if(hi->lowpass_kHz<2.)hi->lowpass_kHz=2.;
  37001. if(hi->lowpass_kHz>99.)hi->lowpass_kHz=99.;
  37002. }
  37003. return(0);
  37004. case OV_ECTL_IBLOCK_GET:
  37005. {
  37006. double *farg=(double *)arg;
  37007. *farg=hi->impulse_noisetune;
  37008. }
  37009. return(0);
  37010. case OV_ECTL_IBLOCK_SET:
  37011. {
  37012. double *farg=(double *)arg;
  37013. hi->impulse_noisetune=*farg;
  37014. if(hi->impulse_noisetune>0.)hi->impulse_noisetune=0.;
  37015. if(hi->impulse_noisetune<-15.)hi->impulse_noisetune=-15.;
  37016. }
  37017. return(0);
  37018. }
  37019. return(OV_EIMPL);
  37020. }
  37021. return(OV_EINVAL);
  37022. }
  37023. /********************************************************************
  37024. * *
  37025. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  37026. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  37027. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  37028. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  37029. * *
  37030. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  37031. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  37032. * *
  37033. ********************************************************************
  37034. function: stdio-based convenience library for opening/seeking/decoding
  37035. last mod: $Id: vorbisfile.c,v 1.75 2003/09/16 20:28:14 xiphmont Exp $
  37036. ********************************************************************/
  37037. /********************************************************************
  37038. * *
  37039. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  37040. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  37041. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  37042. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  37043. * *
  37044. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
  37045. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  37046. * *
  37047. ********************************************************************
  37048. function: stdio-based convenience library for opening/seeking/decoding
  37049. last mod: $Id: vorbisfile.h,v 1.20 2003/08/18 05:34:01 xiphmont Exp $
  37050. ********************************************************************/
  37051. #define _OV_FILE_H_
  37052. /* The function prototypes for the callbacks are basically the same as for
  37053. * the stdio functions fread, fseek, fclose, ftell.
  37054. * The one difference is that the FILE * arguments have been replaced with
  37055. * a void * - this is to be used as a pointer to whatever internal data these
  37056. * functions might need. In the stdio case, it's just a FILE * cast to a void *
  37057. *
  37058. * If you use other functions, check the docs for these functions and return
  37059. * the right values. For seek_func(), you *MUST* return -1 if the stream is
  37060. * unseekable
  37061. */
  37062. typedef struct {
  37063. size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource);
  37064. int (*seek_func) (void *datasource, ogg_int64_t offset, int whence);
  37065. int (*close_func) (void *datasource);
  37066. long (*tell_func) (void *datasource);
  37067. } ov_callbacks;
  37068. #define NOTOPEN 0
  37069. #define PARTOPEN 1
  37070. #define OPENED 2
  37071. #define STREAMSET 3
  37072. #define INITSET 4
  37073. typedef struct OggVorbis_File {
  37074. void *datasource; /* Pointer to a FILE *, etc. */
  37075. int seekable;
  37076. ogg_int64_t offset;
  37077. ogg_int64_t end;
  37078. ogg_sync_state oy;
  37079. /* If the FILE handle isn't seekable (eg, a pipe), only the current
  37080. stream appears */
  37081. int links;
  37082. ogg_int64_t *offsets;
  37083. ogg_int64_t *dataoffsets;
  37084. long *serialnos;
  37085. ogg_int64_t *pcmlengths; /* overloaded to maintain binary
  37086. compatability; x2 size, stores both
  37087. beginning and end values */
  37088. vorbis_info *vi;
  37089. vorbis_comment *vc;
  37090. /* Decoding working state local storage */
  37091. ogg_int64_t pcm_offset;
  37092. int ready_state;
  37093. long current_serialno;
  37094. int current_link;
  37095. double bittrack;
  37096. double samptrack;
  37097. ogg_stream_state os; /* take physical pages, weld into a logical
  37098. stream of packets */
  37099. vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
  37100. vorbis_block vb; /* local working space for packet->PCM decode */
  37101. ov_callbacks callbacks;
  37102. } OggVorbis_File;
  37103. extern int ov_clear(OggVorbis_File *vf);
  37104. extern int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes);
  37105. extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf,
  37106. char *initial, long ibytes, ov_callbacks callbacks);
  37107. extern int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes);
  37108. extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf,
  37109. char *initial, long ibytes, ov_callbacks callbacks);
  37110. extern int ov_test_open(OggVorbis_File *vf);
  37111. extern long ov_bitrate(OggVorbis_File *vf,int i);
  37112. extern long ov_bitrate_instant(OggVorbis_File *vf);
  37113. extern long ov_streams(OggVorbis_File *vf);
  37114. extern long ov_seekable(OggVorbis_File *vf);
  37115. extern long ov_serialnumber(OggVorbis_File *vf,int i);
  37116. extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i);
  37117. extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i);
  37118. extern double ov_time_total(OggVorbis_File *vf,int i);
  37119. extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos);
  37120. extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos);
  37121. extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos);
  37122. extern int ov_time_seek(OggVorbis_File *vf,double pos);
  37123. extern int ov_time_seek_page(OggVorbis_File *vf,double pos);
  37124. extern int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
  37125. extern int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
  37126. extern int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos);
  37127. extern int ov_time_seek_lap(OggVorbis_File *vf,double pos);
  37128. extern int ov_time_seek_page_lap(OggVorbis_File *vf,double pos);
  37129. extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf);
  37130. extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf);
  37131. extern double ov_time_tell(OggVorbis_File *vf);
  37132. extern vorbis_info *ov_info(OggVorbis_File *vf,int link);
  37133. extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link);
  37134. extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples,
  37135. int *bitstream);
  37136. extern long ov_read(OggVorbis_File *vf,char *buffer,int length,
  37137. int bigendianp,int word,int sgned,int *bitstream);
  37138. extern int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2);
  37139. extern int ov_halfrate(OggVorbis_File *vf,int flag);
  37140. extern int ov_halfrate_p(OggVorbis_File *vf);
  37141. /* A 'chained bitstream' is a Vorbis bitstream that contains more than
  37142. one logical bitstream arranged end to end (the only form of Ogg
  37143. multiplexing allowed in a Vorbis bitstream; grouping [parallel
  37144. multiplexing] is not allowed in Vorbis) */
  37145. /* A Vorbis file can be played beginning to end (streamed) without
  37146. worrying ahead of time about chaining (see decoder_example.c). If
  37147. we have the whole file, however, and want random access
  37148. (seeking/scrubbing) or desire to know the total length/time of a
  37149. file, we need to account for the possibility of chaining. */
  37150. /* We can handle things a number of ways; we can determine the entire
  37151. bitstream structure right off the bat, or find pieces on demand.
  37152. This example determines and caches structure for the entire
  37153. bitstream, but builds a virtual decoder on the fly when moving
  37154. between links in the chain. */
  37155. /* There are also different ways to implement seeking. Enough
  37156. information exists in an Ogg bitstream to seek to
  37157. sample-granularity positions in the output. Or, one can seek by
  37158. picking some portion of the stream roughly in the desired area if
  37159. we only want coarse navigation through the stream. */
  37160. /*************************************************************************
  37161. * Many, many internal helpers. The intention is not to be confusing;
  37162. * rampant duplication and monolithic function implementation would be
  37163. * harder to understand anyway. The high level functions are last. Begin
  37164. * grokking near the end of the file */
  37165. /* read a little more data from the file/pipe into the ogg_sync framer
  37166. */
  37167. #define CHUNKSIZE 8500 /* a shade over 8k; anyone using pages well
  37168. over 8k gets what they deserve */
  37169. static long _get_data(OggVorbis_File *vf){
  37170. errno=0;
  37171. if(vf->datasource){
  37172. char *buffer=ogg_sync_buffer(&vf->oy,CHUNKSIZE);
  37173. long bytes=(vf->callbacks.read_func)(buffer,1,CHUNKSIZE,vf->datasource);
  37174. if(bytes>0)ogg_sync_wrote(&vf->oy,bytes);
  37175. if(bytes==0 && errno)return(-1);
  37176. return(bytes);
  37177. }else
  37178. return(0);
  37179. }
  37180. /* save a tiny smidge of verbosity to make the code more readable */
  37181. static void _seek_helper(OggVorbis_File *vf,ogg_int64_t offset){
  37182. if(vf->datasource){
  37183. (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET);
  37184. vf->offset=offset;
  37185. ogg_sync_reset(&vf->oy);
  37186. }else{
  37187. /* shouldn't happen unless someone writes a broken callback */
  37188. return;
  37189. }
  37190. }
  37191. /* The read/seek functions track absolute position within the stream */
  37192. /* from the head of the stream, get the next page. boundary specifies
  37193. if the function is allowed to fetch more data from the stream (and
  37194. how much) or only use internally buffered data.
  37195. boundary: -1) unbounded search
  37196. 0) read no additional data; use cached only
  37197. n) search for a new page beginning for n bytes
  37198. return: <0) did not find a page (OV_FALSE, OV_EOF, OV_EREAD)
  37199. n) found a page at absolute offset n */
  37200. static ogg_int64_t _get_next_page(OggVorbis_File *vf,ogg_page *og,
  37201. ogg_int64_t boundary){
  37202. if(boundary>0)boundary+=vf->offset;
  37203. while(1){
  37204. long more;
  37205. if(boundary>0 && vf->offset>=boundary)return(OV_FALSE);
  37206. more=ogg_sync_pageseek(&vf->oy,og);
  37207. if(more<0){
  37208. /* skipped n bytes */
  37209. vf->offset-=more;
  37210. }else{
  37211. if(more==0){
  37212. /* send more paramedics */
  37213. if(!boundary)return(OV_FALSE);
  37214. {
  37215. long ret=_get_data(vf);
  37216. if(ret==0)return(OV_EOF);
  37217. if(ret<0)return(OV_EREAD);
  37218. }
  37219. }else{
  37220. /* got a page. Return the offset at the page beginning,
  37221. advance the internal offset past the page end */
  37222. ogg_int64_t ret=vf->offset;
  37223. vf->offset+=more;
  37224. return(ret);
  37225. }
  37226. }
  37227. }
  37228. }
  37229. /* find the latest page beginning before the current stream cursor
  37230. position. Much dirtier than the above as Ogg doesn't have any
  37231. backward search linkage. no 'readp' as it will certainly have to
  37232. read. */
  37233. /* returns offset or OV_EREAD, OV_FAULT */
  37234. static ogg_int64_t _get_prev_page(OggVorbis_File *vf,ogg_page *og){
  37235. ogg_int64_t begin=vf->offset;
  37236. ogg_int64_t end=begin;
  37237. ogg_int64_t ret;
  37238. ogg_int64_t offset=-1;
  37239. while(offset==-1){
  37240. begin-=CHUNKSIZE;
  37241. if(begin<0)
  37242. begin=0;
  37243. _seek_helper(vf,begin);
  37244. while(vf->offset<end){
  37245. ret=_get_next_page(vf,og,end-vf->offset);
  37246. if(ret==OV_EREAD)return(OV_EREAD);
  37247. if(ret<0){
  37248. break;
  37249. }else{
  37250. offset=ret;
  37251. }
  37252. }
  37253. }
  37254. /* we have the offset. Actually snork and hold the page now */
  37255. _seek_helper(vf,offset);
  37256. ret=_get_next_page(vf,og,CHUNKSIZE);
  37257. if(ret<0)
  37258. /* this shouldn't be possible */
  37259. return(OV_EFAULT);
  37260. return(offset);
  37261. }
  37262. /* finds each bitstream link one at a time using a bisection search
  37263. (has to begin by knowing the offset of the lb's initial page).
  37264. Recurses for each link so it can alloc the link storage after
  37265. finding them all, then unroll and fill the cache at the same time */
  37266. static int _bisect_forward_serialno(OggVorbis_File *vf,
  37267. ogg_int64_t begin,
  37268. ogg_int64_t searched,
  37269. ogg_int64_t end,
  37270. long currentno,
  37271. long m){
  37272. ogg_int64_t endsearched=end;
  37273. ogg_int64_t next=end;
  37274. ogg_page og;
  37275. ogg_int64_t ret;
  37276. /* the below guards against garbage seperating the last and
  37277. first pages of two links. */
  37278. while(searched<endsearched){
  37279. ogg_int64_t bisect;
  37280. if(endsearched-searched<CHUNKSIZE){
  37281. bisect=searched;
  37282. }else{
  37283. bisect=(searched+endsearched)/2;
  37284. }
  37285. _seek_helper(vf,bisect);
  37286. ret=_get_next_page(vf,&og,-1);
  37287. if(ret==OV_EREAD)return(OV_EREAD);
  37288. if(ret<0 || ogg_page_serialno(&og)!=currentno){
  37289. endsearched=bisect;
  37290. if(ret>=0)next=ret;
  37291. }else{
  37292. searched=ret+og.header_len+og.body_len;
  37293. }
  37294. }
  37295. _seek_helper(vf,next);
  37296. ret=_get_next_page(vf,&og,-1);
  37297. if(ret==OV_EREAD)return(OV_EREAD);
  37298. if(searched>=end || ret<0){
  37299. vf->links=m+1;
  37300. vf->offsets=_ogg_malloc((vf->links+1)*sizeof(*vf->offsets));
  37301. vf->serialnos=_ogg_malloc(vf->links*sizeof(*vf->serialnos));
  37302. vf->offsets[m+1]=searched;
  37303. }else{
  37304. ret=_bisect_forward_serialno(vf,next,vf->offset,
  37305. end,ogg_page_serialno(&og),m+1);
  37306. if(ret==OV_EREAD)return(OV_EREAD);
  37307. }
  37308. vf->offsets[m]=begin;
  37309. vf->serialnos[m]=currentno;
  37310. return(0);
  37311. }
  37312. /* uses the local ogg_stream storage in vf; this is important for
  37313. non-streaming input sources */
  37314. static int _fetch_headers(OggVorbis_File *vf,vorbis_info *vi,vorbis_comment *vc,
  37315. long *serialno,ogg_page *og_ptr){
  37316. ogg_page og;
  37317. ogg_packet op;
  37318. int i,ret;
  37319. if(!og_ptr){
  37320. ogg_int64_t llret=_get_next_page(vf,&og,CHUNKSIZE);
  37321. if(llret==OV_EREAD)return(OV_EREAD);
  37322. if(llret<0)return OV_ENOTVORBIS;
  37323. og_ptr=&og;
  37324. }
  37325. ogg_stream_reset_serialno(&vf->os,ogg_page_serialno(og_ptr));
  37326. if(serialno)*serialno=vf->os.serialno;
  37327. vf->ready_state=STREAMSET;
  37328. /* extract the initial header from the first page and verify that the
  37329. Ogg bitstream is in fact Vorbis data */
  37330. vorbis_info_init(vi);
  37331. vorbis_comment_init(vc);
  37332. i=0;
  37333. while(i<3){
  37334. ogg_stream_pagein(&vf->os,og_ptr);
  37335. while(i<3){
  37336. int result=ogg_stream_packetout(&vf->os,&op);
  37337. if(result==0)break;
  37338. if(result==-1){
  37339. ret=OV_EBADHEADER;
  37340. goto bail_header;
  37341. }
  37342. if((ret=vorbis_synthesis_headerin(vi,vc,&op))){
  37343. goto bail_header;
  37344. }
  37345. i++;
  37346. }
  37347. if(i<3)
  37348. if(_get_next_page(vf,og_ptr,CHUNKSIZE)<0){
  37349. ret=OV_EBADHEADER;
  37350. goto bail_header;
  37351. }
  37352. }
  37353. return 0;
  37354. bail_header:
  37355. vorbis_info_clear(vi);
  37356. vorbis_comment_clear(vc);
  37357. vf->ready_state=OPENED;
  37358. return ret;
  37359. }
  37360. /* last step of the OggVorbis_File initialization; get all the
  37361. vorbis_info structs and PCM positions. Only called by the seekable
  37362. initialization (local stream storage is hacked slightly; pay
  37363. attention to how that's done) */
  37364. /* this is void and does not propogate errors up because we want to be
  37365. able to open and use damaged bitstreams as well as we can. Just
  37366. watch out for missing information for links in the OggVorbis_File
  37367. struct */
  37368. static void _prefetch_all_headers(OggVorbis_File *vf, ogg_int64_t dataoffset){
  37369. ogg_page og;
  37370. int i;
  37371. ogg_int64_t ret;
  37372. vf->vi=_ogg_realloc(vf->vi,vf->links*sizeof(*vf->vi));
  37373. vf->vc=_ogg_realloc(vf->vc,vf->links*sizeof(*vf->vc));
  37374. vf->dataoffsets=_ogg_malloc(vf->links*sizeof(*vf->dataoffsets));
  37375. vf->pcmlengths=_ogg_malloc(vf->links*2*sizeof(*vf->pcmlengths));
  37376. for(i=0;i<vf->links;i++){
  37377. if(i==0){
  37378. /* we already grabbed the initial header earlier. Just set the offset */
  37379. vf->dataoffsets[i]=dataoffset;
  37380. _seek_helper(vf,dataoffset);
  37381. }else{
  37382. /* seek to the location of the initial header */
  37383. _seek_helper(vf,vf->offsets[i]);
  37384. if(_fetch_headers(vf,vf->vi+i,vf->vc+i,NULL,NULL)<0){
  37385. vf->dataoffsets[i]=-1;
  37386. }else{
  37387. vf->dataoffsets[i]=vf->offset;
  37388. }
  37389. }
  37390. /* fetch beginning PCM offset */
  37391. if(vf->dataoffsets[i]!=-1){
  37392. ogg_int64_t accumulated=0;
  37393. long lastblock=-1;
  37394. int result;
  37395. ogg_stream_reset_serialno(&vf->os,vf->serialnos[i]);
  37396. while(1){
  37397. ogg_packet op;
  37398. ret=_get_next_page(vf,&og,-1);
  37399. if(ret<0)
  37400. /* this should not be possible unless the file is
  37401. truncated/mangled */
  37402. break;
  37403. if(ogg_page_serialno(&og)!=vf->serialnos[i])
  37404. break;
  37405. /* count blocksizes of all frames in the page */
  37406. ogg_stream_pagein(&vf->os,&og);
  37407. while((result=ogg_stream_packetout(&vf->os,&op))){
  37408. if(result>0){ /* ignore holes */
  37409. long thisblock=vorbis_packet_blocksize(vf->vi+i,&op);
  37410. if(lastblock!=-1)
  37411. accumulated+=(lastblock+thisblock)>>2;
  37412. lastblock=thisblock;
  37413. }
  37414. }
  37415. if(ogg_page_granulepos(&og)!=-1){
  37416. /* pcm offset of last packet on the first audio page */
  37417. accumulated= ogg_page_granulepos(&og)-accumulated;
  37418. break;
  37419. }
  37420. }
  37421. /* less than zero? This is a stream with samples trimmed off
  37422. the beginning, a normal occurrence; set the offset to zero */
  37423. if(accumulated<0)accumulated=0;
  37424. vf->pcmlengths[i*2]=accumulated;
  37425. }
  37426. /* get the PCM length of this link. To do this,
  37427. get the last page of the stream */
  37428. {
  37429. ogg_int64_t end=vf->offsets[i+1];
  37430. _seek_helper(vf,end);
  37431. while(1){
  37432. ret=_get_prev_page(vf,&og);
  37433. if(ret<0){
  37434. /* this should not be possible */
  37435. vorbis_info_clear(vf->vi+i);
  37436. vorbis_comment_clear(vf->vc+i);
  37437. break;
  37438. }
  37439. if(ogg_page_granulepos(&og)!=-1){
  37440. vf->pcmlengths[i*2+1]=ogg_page_granulepos(&og)-vf->pcmlengths[i*2];
  37441. break;
  37442. }
  37443. vf->offset=ret;
  37444. }
  37445. }
  37446. }
  37447. }
  37448. static int _make_decode_ready(OggVorbis_File *vf){
  37449. if(vf->ready_state>STREAMSET)return 0;
  37450. if(vf->ready_state<STREAMSET)return OV_EFAULT;
  37451. if(vf->seekable){
  37452. if(vorbis_synthesis_init(&vf->vd,vf->vi+vf->current_link))
  37453. return OV_EBADLINK;
  37454. }else{
  37455. if(vorbis_synthesis_init(&vf->vd,vf->vi))
  37456. return OV_EBADLINK;
  37457. }
  37458. vorbis_block_init(&vf->vd,&vf->vb);
  37459. vf->ready_state=INITSET;
  37460. vf->bittrack=0.f;
  37461. vf->samptrack=0.f;
  37462. return 0;
  37463. }
  37464. static int _open_seekable2(OggVorbis_File *vf){
  37465. long serialno=vf->current_serialno;
  37466. ogg_int64_t dataoffset=vf->offset, end;
  37467. ogg_page og;
  37468. /* we're partially open and have a first link header state in
  37469. storage in vf */
  37470. /* we can seek, so set out learning all about this file */
  37471. (vf->callbacks.seek_func)(vf->datasource,0,SEEK_END);
  37472. vf->offset=vf->end=(vf->callbacks.tell_func)(vf->datasource);
  37473. /* We get the offset for the last page of the physical bitstream.
  37474. Most OggVorbis files will contain a single logical bitstream */
  37475. end=_get_prev_page(vf,&og);
  37476. if(end<0)return(end);
  37477. /* more than one logical bitstream? */
  37478. if(ogg_page_serialno(&og)!=serialno){
  37479. /* Chained bitstream. Bisect-search each logical bitstream
  37480. section. Do so based on serial number only */
  37481. if(_bisect_forward_serialno(vf,0,0,end+1,serialno,0)<0)return(OV_EREAD);
  37482. }else{
  37483. /* Only one logical bitstream */
  37484. if(_bisect_forward_serialno(vf,0,end,end+1,serialno,0))return(OV_EREAD);
  37485. }
  37486. /* the initial header memory is referenced by vf after; don't free it */
  37487. _prefetch_all_headers(vf,dataoffset);
  37488. return(ov_raw_seek(vf,0));
  37489. }
  37490. /* clear out the current logical bitstream decoder */
  37491. static void _decode_clear(OggVorbis_File *vf){
  37492. vorbis_dsp_clear(&vf->vd);
  37493. vorbis_block_clear(&vf->vb);
  37494. vf->ready_state=OPENED;
  37495. }
  37496. /* fetch and process a packet. Handles the case where we're at a
  37497. bitstream boundary and dumps the decoding machine. If the decoding
  37498. machine is unloaded, it loads it. It also keeps pcm_offset up to
  37499. date (seek and read both use this. seek uses a special hack with
  37500. readp).
  37501. return: <0) error, OV_HOLE (lost packet) or OV_EOF
  37502. 0) need more data (only if readp==0)
  37503. 1) got a packet
  37504. */
  37505. static int _fetch_and_process_packet(OggVorbis_File *vf,
  37506. ogg_packet *op_in,
  37507. int readp,
  37508. int spanp){
  37509. ogg_page og;
  37510. /* handle one packet. Try to fetch it from current stream state */
  37511. /* extract packets from page */
  37512. while(1){
  37513. /* process a packet if we can. If the machine isn't loaded,
  37514. neither is a page */
  37515. if(vf->ready_state==INITSET){
  37516. while(1) {
  37517. ogg_packet op;
  37518. ogg_packet *op_ptr=(op_in?op_in:&op);
  37519. int result=ogg_stream_packetout(&vf->os,op_ptr);
  37520. ogg_int64_t granulepos;
  37521. op_in=NULL;
  37522. if(result==-1)return(OV_HOLE); /* hole in the data. */
  37523. if(result>0){
  37524. /* got a packet. process it */
  37525. granulepos=op_ptr->granulepos;
  37526. if(!vorbis_synthesis(&vf->vb,op_ptr)){ /* lazy check for lazy
  37527. header handling. The
  37528. header packets aren't
  37529. audio, so if/when we
  37530. submit them,
  37531. vorbis_synthesis will
  37532. reject them */
  37533. /* suck in the synthesis data and track bitrate */
  37534. {
  37535. int oldsamples=vorbis_synthesis_pcmout(&vf->vd,NULL);
  37536. /* for proper use of libvorbis within libvorbisfile,
  37537. oldsamples will always be zero. */
  37538. if(oldsamples)return(OV_EFAULT);
  37539. vorbis_synthesis_blockin(&vf->vd,&vf->vb);
  37540. vf->samptrack+=vorbis_synthesis_pcmout(&vf->vd,NULL)-oldsamples;
  37541. vf->bittrack+=op_ptr->bytes*8;
  37542. }
  37543. /* update the pcm offset. */
  37544. if(granulepos!=-1 && !op_ptr->e_o_s){
  37545. int link=(vf->seekable?vf->current_link:0);
  37546. int i,samples;
  37547. /* this packet has a pcm_offset on it (the last packet
  37548. completed on a page carries the offset) After processing
  37549. (above), we know the pcm position of the *last* sample
  37550. ready to be returned. Find the offset of the *first*
  37551. As an aside, this trick is inaccurate if we begin
  37552. reading anew right at the last page; the end-of-stream
  37553. granulepos declares the last frame in the stream, and the
  37554. last packet of the last page may be a partial frame.
  37555. So, we need a previous granulepos from an in-sequence page
  37556. to have a reference point. Thus the !op_ptr->e_o_s clause
  37557. above */
  37558. if(vf->seekable && link>0)
  37559. granulepos-=vf->pcmlengths[link*2];
  37560. if(granulepos<0)granulepos=0; /* actually, this
  37561. shouldn't be possible
  37562. here unless the stream
  37563. is very broken */
  37564. samples=vorbis_synthesis_pcmout(&vf->vd,NULL);
  37565. granulepos-=samples;
  37566. for(i=0;i<link;i++)
  37567. granulepos+=vf->pcmlengths[i*2+1];
  37568. vf->pcm_offset=granulepos;
  37569. }
  37570. return(1);
  37571. }
  37572. }
  37573. else
  37574. break;
  37575. }
  37576. }
  37577. if(vf->ready_state>=OPENED){
  37578. int ret;
  37579. if(!readp)return(0);
  37580. if((ret=_get_next_page(vf,&og,-1))<0){
  37581. return(OV_EOF); /* eof.
  37582. leave unitialized */
  37583. }
  37584. /* bitrate tracking; add the header's bytes here, the body bytes
  37585. are done by packet above */
  37586. vf->bittrack+=og.header_len*8;
  37587. /* has our decoding just traversed a bitstream boundary? */
  37588. if(vf->ready_state==INITSET){
  37589. if(vf->current_serialno!=ogg_page_serialno(&og)){
  37590. if(!spanp)
  37591. return(OV_EOF);
  37592. _decode_clear(vf);
  37593. if(!vf->seekable){
  37594. vorbis_info_clear(vf->vi);
  37595. vorbis_comment_clear(vf->vc);
  37596. }
  37597. }
  37598. }
  37599. }
  37600. /* Do we need to load a new machine before submitting the page? */
  37601. /* This is different in the seekable and non-seekable cases.
  37602. In the seekable case, we already have all the header
  37603. information loaded and cached; we just initialize the machine
  37604. with it and continue on our merry way.
  37605. In the non-seekable (streaming) case, we'll only be at a
  37606. boundary if we just left the previous logical bitstream and
  37607. we're now nominally at the header of the next bitstream
  37608. */
  37609. if(vf->ready_state!=INITSET){
  37610. int link;
  37611. if(vf->ready_state<STREAMSET){
  37612. if(vf->seekable){
  37613. vf->current_serialno=ogg_page_serialno(&og);
  37614. /* match the serialno to bitstream section. We use this rather than
  37615. offset positions to avoid problems near logical bitstream
  37616. boundaries */
  37617. for(link=0;link<vf->links;link++)
  37618. if(vf->serialnos[link]==vf->current_serialno)break;
  37619. if(link==vf->links)return(OV_EBADLINK); /* sign of a bogus
  37620. stream. error out,
  37621. leave machine
  37622. uninitialized */
  37623. vf->current_link=link;
  37624. ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
  37625. vf->ready_state=STREAMSET;
  37626. }else{
  37627. /* we're streaming */
  37628. /* fetch the three header packets, build the info struct */
  37629. int ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,&og);
  37630. if(ret)return(ret);
  37631. vf->current_link++;
  37632. link=0;
  37633. }
  37634. }
  37635. {
  37636. int ret=_make_decode_ready(vf);
  37637. if(ret<0)return ret;
  37638. }
  37639. }
  37640. ogg_stream_pagein(&vf->os,&og);
  37641. }
  37642. }
  37643. /* if, eg, 64 bit stdio is configured by default, this will build with
  37644. fseek64 */
  37645. static int _fseek64_wrap(FILE *f,ogg_int64_t off,int whence){
  37646. if(f==NULL)return(-1);
  37647. return fseek(f,off,whence);
  37648. }
  37649. static int _ov_open1(void *f,OggVorbis_File *vf,char *initial,
  37650. long ibytes, ov_callbacks callbacks){
  37651. int offsettest=(f?callbacks.seek_func(f,0,SEEK_CUR):-1);
  37652. int ret;
  37653. memset(vf,0,sizeof(*vf));
  37654. vf->datasource=f;
  37655. vf->callbacks = callbacks;
  37656. /* init the framing state */
  37657. ogg_sync_init(&vf->oy);
  37658. /* perhaps some data was previously read into a buffer for testing
  37659. against other stream types. Allow initialization from this
  37660. previously read data (as we may be reading from a non-seekable
  37661. stream) */
  37662. if(initial){
  37663. char *buffer=ogg_sync_buffer(&vf->oy,ibytes);
  37664. memcpy(buffer,initial,ibytes);
  37665. ogg_sync_wrote(&vf->oy,ibytes);
  37666. }
  37667. /* can we seek? Stevens suggests the seek test was portable */
  37668. if(offsettest!=-1)vf->seekable=1;
  37669. /* No seeking yet; Set up a 'single' (current) logical bitstream
  37670. entry for partial open */
  37671. vf->links=1;
  37672. vf->vi=_ogg_calloc(vf->links,sizeof(*vf->vi));
  37673. vf->vc=_ogg_calloc(vf->links,sizeof(*vf->vc));
  37674. ogg_stream_init(&vf->os,-1); /* fill in the serialno later */
  37675. /* Try to fetch the headers, maintaining all the storage */
  37676. if((ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,NULL))<0){
  37677. vf->datasource=NULL;
  37678. ov_clear(vf);
  37679. }else
  37680. vf->ready_state=PARTOPEN;
  37681. return(ret);
  37682. }
  37683. static int _ov_open2(OggVorbis_File *vf){
  37684. if(vf->ready_state != PARTOPEN) return OV_EINVAL;
  37685. vf->ready_state=OPENED;
  37686. if(vf->seekable){
  37687. int ret=_open_seekable2(vf);
  37688. if(ret){
  37689. vf->datasource=NULL;
  37690. ov_clear(vf);
  37691. }
  37692. return(ret);
  37693. }else
  37694. vf->ready_state=STREAMSET;
  37695. return 0;
  37696. }
  37697. /* clear out the OggVorbis_File struct */
  37698. int ov_clear(OggVorbis_File *vf){
  37699. if(vf){
  37700. vorbis_block_clear(&vf->vb);
  37701. vorbis_dsp_clear(&vf->vd);
  37702. ogg_stream_clear(&vf->os);
  37703. if(vf->vi && vf->links){
  37704. int i;
  37705. for(i=0;i<vf->links;i++){
  37706. vorbis_info_clear(vf->vi+i);
  37707. vorbis_comment_clear(vf->vc+i);
  37708. }
  37709. _ogg_free(vf->vi);
  37710. _ogg_free(vf->vc);
  37711. }
  37712. if(vf->dataoffsets)_ogg_free(vf->dataoffsets);
  37713. if(vf->pcmlengths)_ogg_free(vf->pcmlengths);
  37714. if(vf->serialnos)_ogg_free(vf->serialnos);
  37715. if(vf->offsets)_ogg_free(vf->offsets);
  37716. ogg_sync_clear(&vf->oy);
  37717. if(vf->datasource)(vf->callbacks.close_func)(vf->datasource);
  37718. memset(vf,0,sizeof(*vf));
  37719. }
  37720. #ifdef DEBUG_LEAKS
  37721. _VDBG_dump();
  37722. #endif
  37723. return(0);
  37724. }
  37725. /* inspects the OggVorbis file and finds/documents all the logical
  37726. bitstreams contained in it. Tries to be tolerant of logical
  37727. bitstream sections that are truncated/woogie.
  37728. return: -1) error
  37729. 0) OK
  37730. */
  37731. int ov_open_callbacks(void *f,OggVorbis_File *vf,char *initial,long ibytes,
  37732. ov_callbacks callbacks){
  37733. int ret=_ov_open1(f,vf,initial,ibytes,callbacks);
  37734. if(ret)return ret;
  37735. return _ov_open2(vf);
  37736. }
  37737. int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes){
  37738. ov_callbacks callbacks = {
  37739. (size_t (*)(void *, size_t, size_t, void *)) fread,
  37740. (int (*)(void *, ogg_int64_t, int)) _fseek64_wrap,
  37741. (int (*)(void *)) fclose,
  37742. (long (*)(void *)) ftell
  37743. };
  37744. return ov_open_callbacks((void *)f, vf, initial, ibytes, callbacks);
  37745. }
  37746. /* cheap hack for game usage where downsampling is desirable; there's
  37747. no need for SRC as we can just do it cheaply in libvorbis. */
  37748. int ov_halfrate(OggVorbis_File *vf,int flag){
  37749. int i;
  37750. if(vf->vi==NULL)return OV_EINVAL;
  37751. if(!vf->seekable)return OV_EINVAL;
  37752. if(vf->ready_state>=STREAMSET)
  37753. _decode_clear(vf); /* clear out stream state; later on libvorbis
  37754. will be able to swap this on the fly, but
  37755. for now dumping the decode machine is needed
  37756. to reinit the MDCT lookups. 1.1 libvorbis
  37757. is planned to be able to switch on the fly */
  37758. for(i=0;i<vf->links;i++){
  37759. if(vorbis_synthesis_halfrate(vf->vi+i,flag)){
  37760. ov_halfrate(vf,0);
  37761. return OV_EINVAL;
  37762. }
  37763. }
  37764. return 0;
  37765. }
  37766. int ov_halfrate_p(OggVorbis_File *vf){
  37767. if(vf->vi==NULL)return OV_EINVAL;
  37768. return vorbis_synthesis_halfrate_p(vf->vi);
  37769. }
  37770. /* Only partially open the vorbis file; test for Vorbisness, and load
  37771. the headers for the first chain. Do not seek (although test for
  37772. seekability). Use ov_test_open to finish opening the file, else
  37773. ov_clear to close/free it. Same return codes as open. */
  37774. int ov_test_callbacks(void *f,OggVorbis_File *vf,char *initial,long ibytes,
  37775. ov_callbacks callbacks)
  37776. {
  37777. return _ov_open1(f,vf,initial,ibytes,callbacks);
  37778. }
  37779. int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes){
  37780. ov_callbacks callbacks = {
  37781. (size_t (*)(void *, size_t, size_t, void *)) fread,
  37782. (int (*)(void *, ogg_int64_t, int)) _fseek64_wrap,
  37783. (int (*)(void *)) fclose,
  37784. (long (*)(void *)) ftell
  37785. };
  37786. return ov_test_callbacks((void *)f, vf, initial, ibytes, callbacks);
  37787. }
  37788. int ov_test_open(OggVorbis_File *vf){
  37789. if(vf->ready_state!=PARTOPEN)return(OV_EINVAL);
  37790. return _ov_open2(vf);
  37791. }
  37792. /* How many logical bitstreams in this physical bitstream? */
  37793. long ov_streams(OggVorbis_File *vf){
  37794. return vf->links;
  37795. }
  37796. /* Is the FILE * associated with vf seekable? */
  37797. long ov_seekable(OggVorbis_File *vf){
  37798. return vf->seekable;
  37799. }
  37800. /* returns the bitrate for a given logical bitstream or the entire
  37801. physical bitstream. If the file is open for random access, it will
  37802. find the *actual* average bitrate. If the file is streaming, it
  37803. returns the nominal bitrate (if set) else the average of the
  37804. upper/lower bounds (if set) else -1 (unset).
  37805. If you want the actual bitrate field settings, get them from the
  37806. vorbis_info structs */
  37807. long ov_bitrate(OggVorbis_File *vf,int i){
  37808. if(vf->ready_state<OPENED)return(OV_EINVAL);
  37809. if(i>=vf->links)return(OV_EINVAL);
  37810. if(!vf->seekable && i!=0)return(ov_bitrate(vf,0));
  37811. if(i<0){
  37812. ogg_int64_t bits=0;
  37813. int i;
  37814. float br;
  37815. for(i=0;i<vf->links;i++)
  37816. bits+=(vf->offsets[i+1]-vf->dataoffsets[i])*8;
  37817. /* This once read: return(rint(bits/ov_time_total(vf,-1)));
  37818. * gcc 3.x on x86 miscompiled this at optimisation level 2 and above,
  37819. * so this is slightly transformed to make it work.
  37820. */
  37821. br = bits/ov_time_total(vf,-1);
  37822. return(rint(br));
  37823. }else{
  37824. if(vf->seekable){
  37825. /* return the actual bitrate */
  37826. return(rint((vf->offsets[i+1]-vf->dataoffsets[i])*8/ov_time_total(vf,i)));
  37827. }else{
  37828. /* return nominal if set */
  37829. if(vf->vi[i].bitrate_nominal>0){
  37830. return vf->vi[i].bitrate_nominal;
  37831. }else{
  37832. if(vf->vi[i].bitrate_upper>0){
  37833. if(vf->vi[i].bitrate_lower>0){
  37834. return (vf->vi[i].bitrate_upper+vf->vi[i].bitrate_lower)/2;
  37835. }else{
  37836. return vf->vi[i].bitrate_upper;
  37837. }
  37838. }
  37839. return(OV_FALSE);
  37840. }
  37841. }
  37842. }
  37843. }
  37844. /* returns the actual bitrate since last call. returns -1 if no
  37845. additional data to offer since last call (or at beginning of stream),
  37846. EINVAL if stream is only partially open
  37847. */
  37848. long ov_bitrate_instant(OggVorbis_File *vf){
  37849. int link=(vf->seekable?vf->current_link:0);
  37850. long ret;
  37851. if(vf->ready_state<OPENED)return(OV_EINVAL);
  37852. if(vf->samptrack==0)return(OV_FALSE);
  37853. ret=vf->bittrack/vf->samptrack*vf->vi[link].rate+.5;
  37854. vf->bittrack=0.f;
  37855. vf->samptrack=0.f;
  37856. return(ret);
  37857. }
  37858. /* Guess */
  37859. long ov_serialnumber(OggVorbis_File *vf,int i){
  37860. if(i>=vf->links)return(ov_serialnumber(vf,vf->links-1));
  37861. if(!vf->seekable && i>=0)return(ov_serialnumber(vf,-1));
  37862. if(i<0){
  37863. return(vf->current_serialno);
  37864. }else{
  37865. return(vf->serialnos[i]);
  37866. }
  37867. }
  37868. /* returns: total raw (compressed) length of content if i==-1
  37869. raw (compressed) length of that logical bitstream for i==0 to n
  37870. OV_EINVAL if the stream is not seekable (we can't know the length)
  37871. or if stream is only partially open
  37872. */
  37873. ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i){
  37874. if(vf->ready_state<OPENED)return(OV_EINVAL);
  37875. if(!vf->seekable || i>=vf->links)return(OV_EINVAL);
  37876. if(i<0){
  37877. ogg_int64_t acc=0;
  37878. int i;
  37879. for(i=0;i<vf->links;i++)
  37880. acc+=ov_raw_total(vf,i);
  37881. return(acc);
  37882. }else{
  37883. return(vf->offsets[i+1]-vf->offsets[i]);
  37884. }
  37885. }
  37886. /* returns: total PCM length (samples) of content if i==-1 PCM length
  37887. (samples) of that logical bitstream for i==0 to n
  37888. OV_EINVAL if the stream is not seekable (we can't know the
  37889. length) or only partially open
  37890. */
  37891. ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i){
  37892. if(vf->ready_state<OPENED)return(OV_EINVAL);
  37893. if(!vf->seekable || i>=vf->links)return(OV_EINVAL);
  37894. if(i<0){
  37895. ogg_int64_t acc=0;
  37896. int i;
  37897. for(i=0;i<vf->links;i++)
  37898. acc+=ov_pcm_total(vf,i);
  37899. return(acc);
  37900. }else{
  37901. return(vf->pcmlengths[i*2+1]);
  37902. }
  37903. }
  37904. /* returns: total seconds of content if i==-1
  37905. seconds in that logical bitstream for i==0 to n
  37906. OV_EINVAL if the stream is not seekable (we can't know the
  37907. length) or only partially open
  37908. */
  37909. double ov_time_total(OggVorbis_File *vf,int i){
  37910. if(vf->ready_state<OPENED)return(OV_EINVAL);
  37911. if(!vf->seekable || i>=vf->links)return(OV_EINVAL);
  37912. if(i<0){
  37913. double acc=0;
  37914. int i;
  37915. for(i=0;i<vf->links;i++)
  37916. acc+=ov_time_total(vf,i);
  37917. return(acc);
  37918. }else{
  37919. return((double)(vf->pcmlengths[i*2+1])/vf->vi[i].rate);
  37920. }
  37921. }
  37922. /* seek to an offset relative to the *compressed* data. This also
  37923. scans packets to update the PCM cursor. It will cross a logical
  37924. bitstream boundary, but only if it can't get any packets out of the
  37925. tail of the bitstream we seek to (so no surprises).
  37926. returns zero on success, nonzero on failure */
  37927. int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){
  37928. ogg_stream_state work_os;
  37929. if(vf->ready_state<OPENED)return(OV_EINVAL);
  37930. if(!vf->seekable)
  37931. return(OV_ENOSEEK); /* don't dump machine if we can't seek */
  37932. if(pos<0 || pos>vf->end)return(OV_EINVAL);
  37933. /* don't yet clear out decoding machine (if it's initialized), in
  37934. the case we're in the same link. Restart the decode lapping, and
  37935. let _fetch_and_process_packet deal with a potential bitstream
  37936. boundary */
  37937. vf->pcm_offset=-1;
  37938. ogg_stream_reset_serialno(&vf->os,
  37939. vf->current_serialno); /* must set serialno */
  37940. vorbis_synthesis_restart(&vf->vd);
  37941. _seek_helper(vf,pos);
  37942. /* we need to make sure the pcm_offset is set, but we don't want to
  37943. advance the raw cursor past good packets just to get to the first
  37944. with a granulepos. That's not equivalent behavior to beginning
  37945. decoding as immediately after the seek position as possible.
  37946. So, a hack. We use two stream states; a local scratch state and
  37947. the shared vf->os stream state. We use the local state to
  37948. scan, and the shared state as a buffer for later decode.
  37949. Unfortuantely, on the last page we still advance to last packet
  37950. because the granulepos on the last page is not necessarily on a
  37951. packet boundary, and we need to make sure the granpos is
  37952. correct.
  37953. */
  37954. {
  37955. ogg_page og;
  37956. ogg_packet op;
  37957. int lastblock=0;
  37958. int accblock=0;
  37959. int thisblock;
  37960. int eosflag;
  37961. ogg_stream_init(&work_os,vf->current_serialno); /* get the memory ready */
  37962. ogg_stream_reset(&work_os); /* eliminate the spurious OV_HOLE
  37963. return from not necessarily
  37964. starting from the beginning */
  37965. while(1){
  37966. if(vf->ready_state>=STREAMSET){
  37967. /* snarf/scan a packet if we can */
  37968. int result=ogg_stream_packetout(&work_os,&op);
  37969. if(result>0){
  37970. if(vf->vi[vf->current_link].codec_setup){
  37971. thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op);
  37972. if(thisblock<0){
  37973. ogg_stream_packetout(&vf->os,NULL);
  37974. thisblock=0;
  37975. }else{
  37976. if(eosflag)
  37977. ogg_stream_packetout(&vf->os,NULL);
  37978. else
  37979. if(lastblock)accblock+=(lastblock+thisblock)>>2;
  37980. }
  37981. if(op.granulepos!=-1){
  37982. int i,link=vf->current_link;
  37983. ogg_int64_t granulepos=op.granulepos-vf->pcmlengths[link*2];
  37984. if(granulepos<0)granulepos=0;
  37985. for(i=0;i<link;i++)
  37986. granulepos+=vf->pcmlengths[i*2+1];
  37987. vf->pcm_offset=granulepos-accblock;
  37988. break;
  37989. }
  37990. lastblock=thisblock;
  37991. continue;
  37992. }else
  37993. ogg_stream_packetout(&vf->os,NULL);
  37994. }
  37995. }
  37996. if(!lastblock){
  37997. if(_get_next_page(vf,&og,-1)<0){
  37998. vf->pcm_offset=ov_pcm_total(vf,-1);
  37999. break;
  38000. }
  38001. }else{
  38002. /* huh? Bogus stream with packets but no granulepos */
  38003. vf->pcm_offset=-1;
  38004. break;
  38005. }
  38006. /* has our decoding just traversed a bitstream boundary? */
  38007. if(vf->ready_state>=STREAMSET)
  38008. if(vf->current_serialno!=ogg_page_serialno(&og)){
  38009. _decode_clear(vf); /* clear out stream state */
  38010. ogg_stream_clear(&work_os);
  38011. }
  38012. if(vf->ready_state<STREAMSET){
  38013. int link;
  38014. vf->current_serialno=ogg_page_serialno(&og);
  38015. for(link=0;link<vf->links;link++)
  38016. if(vf->serialnos[link]==vf->current_serialno)break;
  38017. if(link==vf->links)goto seek_error; /* sign of a bogus stream.
  38018. error out, leave
  38019. machine uninitialized */
  38020. vf->current_link=link;
  38021. ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
  38022. ogg_stream_reset_serialno(&work_os,vf->current_serialno);
  38023. vf->ready_state=STREAMSET;
  38024. }
  38025. ogg_stream_pagein(&vf->os,&og);
  38026. ogg_stream_pagein(&work_os,&og);
  38027. eosflag=ogg_page_eos(&og);
  38028. }
  38029. }
  38030. ogg_stream_clear(&work_os);
  38031. vf->bittrack=0.f;
  38032. vf->samptrack=0.f;
  38033. return(0);
  38034. seek_error:
  38035. /* dump the machine so we're in a known state */
  38036. vf->pcm_offset=-1;
  38037. ogg_stream_clear(&work_os);
  38038. _decode_clear(vf);
  38039. return OV_EBADLINK;
  38040. }
  38041. /* Page granularity seek (faster than sample granularity because we
  38042. don't do the last bit of decode to find a specific sample).
  38043. Seek to the last [granule marked] page preceeding the specified pos
  38044. location, such that decoding past the returned point will quickly
  38045. arrive at the requested position. */
  38046. int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
  38047. int link=-1;
  38048. ogg_int64_t result=0;
  38049. ogg_int64_t total=ov_pcm_total(vf,-1);
  38050. if(vf->ready_state<OPENED)return(OV_EINVAL);
  38051. if(!vf->seekable)return(OV_ENOSEEK);
  38052. if(pos<0 || pos>total)return(OV_EINVAL);
  38053. /* which bitstream section does this pcm offset occur in? */
  38054. for(link=vf->links-1;link>=0;link--){
  38055. total-=vf->pcmlengths[link*2+1];
  38056. if(pos>=total)break;
  38057. }
  38058. /* search within the logical bitstream for the page with the highest
  38059. pcm_pos preceeding (or equal to) pos. There is a danger here;
  38060. missing pages or incorrect frame number information in the
  38061. bitstream could make our task impossible. Account for that (it
  38062. would be an error condition) */
  38063. /* new search algorithm by HB (Nicholas Vinen) */
  38064. {
  38065. ogg_int64_t end=vf->offsets[link+1];
  38066. ogg_int64_t begin=vf->offsets[link];
  38067. ogg_int64_t begintime = vf->pcmlengths[link*2];
  38068. ogg_int64_t endtime = vf->pcmlengths[link*2+1]+begintime;
  38069. ogg_int64_t target=pos-total+begintime;
  38070. ogg_int64_t best=begin;
  38071. ogg_page og;
  38072. while(begin<end){
  38073. ogg_int64_t bisect;
  38074. if(end-begin<CHUNKSIZE){
  38075. bisect=begin;
  38076. }else{
  38077. /* take a (pretty decent) guess. */
  38078. bisect=begin +
  38079. (target-begintime)*(end-begin)/(endtime-begintime) - CHUNKSIZE;
  38080. if(bisect<=begin)
  38081. bisect=begin+1;
  38082. }
  38083. _seek_helper(vf,bisect);
  38084. while(begin<end){
  38085. result=_get_next_page(vf,&og,end-vf->offset);
  38086. if(result==OV_EREAD) goto seek_error;
  38087. if(result<0){
  38088. if(bisect<=begin+1)
  38089. end=begin; /* found it */
  38090. else{
  38091. if(bisect==0) goto seek_error;
  38092. bisect-=CHUNKSIZE;
  38093. if(bisect<=begin)bisect=begin+1;
  38094. _seek_helper(vf,bisect);
  38095. }
  38096. }else{
  38097. ogg_int64_t granulepos=ogg_page_granulepos(&og);
  38098. if(granulepos==-1)continue;
  38099. if(granulepos<target){
  38100. best=result; /* raw offset of packet with granulepos */
  38101. begin=vf->offset; /* raw offset of next page */
  38102. begintime=granulepos;
  38103. if(target-begintime>44100)break;
  38104. bisect=begin; /* *not* begin + 1 */
  38105. }else{
  38106. if(bisect<=begin+1)
  38107. end=begin; /* found it */
  38108. else{
  38109. if(end==vf->offset){ /* we're pretty close - we'd be stuck in */
  38110. end=result;
  38111. bisect-=CHUNKSIZE; /* an endless loop otherwise. */
  38112. if(bisect<=begin)bisect=begin+1;
  38113. _seek_helper(vf,bisect);
  38114. }else{
  38115. end=result;
  38116. endtime=granulepos;
  38117. break;
  38118. }
  38119. }
  38120. }
  38121. }
  38122. }
  38123. }
  38124. /* found our page. seek to it, update pcm offset. Easier case than
  38125. raw_seek, don't keep packets preceeding granulepos. */
  38126. {
  38127. ogg_page og;
  38128. ogg_packet op;
  38129. /* seek */
  38130. _seek_helper(vf,best);
  38131. vf->pcm_offset=-1;
  38132. if(_get_next_page(vf,&og,-1)<0)return(OV_EOF); /* shouldn't happen */
  38133. if(link!=vf->current_link){
  38134. /* Different link; dump entire decode machine */
  38135. _decode_clear(vf);
  38136. vf->current_link=link;
  38137. vf->current_serialno=ogg_page_serialno(&og);
  38138. vf->ready_state=STREAMSET;
  38139. }else{
  38140. vorbis_synthesis_restart(&vf->vd);
  38141. }
  38142. ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
  38143. ogg_stream_pagein(&vf->os,&og);
  38144. /* pull out all but last packet; the one with granulepos */
  38145. while(1){
  38146. result=ogg_stream_packetpeek(&vf->os,&op);
  38147. if(result==0){
  38148. /* !!! the packet finishing this page originated on a
  38149. preceeding page. Keep fetching previous pages until we
  38150. get one with a granulepos or without the 'continued' flag
  38151. set. Then just use raw_seek for simplicity. */
  38152. _seek_helper(vf,best);
  38153. while(1){
  38154. result=_get_prev_page(vf,&og);
  38155. if(result<0) goto seek_error;
  38156. if(ogg_page_granulepos(&og)>-1 ||
  38157. !ogg_page_continued(&og)){
  38158. return ov_raw_seek(vf,result);
  38159. }
  38160. vf->offset=result;
  38161. }
  38162. }
  38163. if(result<0){
  38164. result = OV_EBADPACKET;
  38165. goto seek_error;
  38166. }
  38167. if(op.granulepos!=-1){
  38168. vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2];
  38169. if(vf->pcm_offset<0)vf->pcm_offset=0;
  38170. vf->pcm_offset+=total;
  38171. break;
  38172. }else
  38173. result=ogg_stream_packetout(&vf->os,NULL);
  38174. }
  38175. }
  38176. }
  38177. /* verify result */
  38178. if(vf->pcm_offset>pos || pos>ov_pcm_total(vf,-1)){
  38179. result=OV_EFAULT;
  38180. goto seek_error;
  38181. }
  38182. vf->bittrack=0.f;
  38183. vf->samptrack=0.f;
  38184. return(0);
  38185. seek_error:
  38186. /* dump machine so we're in a known state */
  38187. vf->pcm_offset=-1;
  38188. _decode_clear(vf);
  38189. return (int)result;
  38190. }
  38191. /* seek to a sample offset relative to the decompressed pcm stream
  38192. returns zero on success, nonzero on failure */
  38193. int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos){
  38194. int thisblock,lastblock=0;
  38195. int ret=ov_pcm_seek_page(vf,pos);
  38196. if(ret<0)return(ret);
  38197. if((ret=_make_decode_ready(vf)))return ret;
  38198. /* discard leading packets we don't need for the lapping of the
  38199. position we want; don't decode them */
  38200. while(1){
  38201. ogg_packet op;
  38202. ogg_page og;
  38203. int ret=ogg_stream_packetpeek(&vf->os,&op);
  38204. if(ret>0){
  38205. thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op);
  38206. if(thisblock<0){
  38207. ogg_stream_packetout(&vf->os,NULL);
  38208. continue; /* non audio packet */
  38209. }
  38210. if(lastblock)vf->pcm_offset+=(lastblock+thisblock)>>2;
  38211. if(vf->pcm_offset+((thisblock+
  38212. vorbis_info_blocksize(vf->vi,1))>>2)>=pos)break;
  38213. /* remove the packet from packet queue and track its granulepos */
  38214. ogg_stream_packetout(&vf->os,NULL);
  38215. vorbis_synthesis_trackonly(&vf->vb,&op); /* set up a vb with
  38216. only tracking, no
  38217. pcm_decode */
  38218. vorbis_synthesis_blockin(&vf->vd,&vf->vb);
  38219. /* end of logical stream case is hard, especially with exact
  38220. length positioning. */
  38221. if(op.granulepos>-1){
  38222. int i;
  38223. /* always believe the stream markers */
  38224. vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2];
  38225. if(vf->pcm_offset<0)vf->pcm_offset=0;
  38226. for(i=0;i<vf->current_link;i++)
  38227. vf->pcm_offset+=vf->pcmlengths[i*2+1];
  38228. }
  38229. lastblock=thisblock;
  38230. }else{
  38231. if(ret<0 && ret!=OV_HOLE)break;
  38232. /* suck in a new page */
  38233. if(_get_next_page(vf,&og,-1)<0)break;
  38234. if(vf->current_serialno!=ogg_page_serialno(&og))_decode_clear(vf);
  38235. if(vf->ready_state<STREAMSET){
  38236. int link;
  38237. vf->current_serialno=ogg_page_serialno(&og);
  38238. for(link=0;link<vf->links;link++)
  38239. if(vf->serialnos[link]==vf->current_serialno)break;
  38240. if(link==vf->links)return(OV_EBADLINK);
  38241. vf->current_link=link;
  38242. ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
  38243. vf->ready_state=STREAMSET;
  38244. ret=_make_decode_ready(vf);
  38245. if(ret)return ret;
  38246. lastblock=0;
  38247. }
  38248. ogg_stream_pagein(&vf->os,&og);
  38249. }
  38250. }
  38251. vf->bittrack=0.f;
  38252. vf->samptrack=0.f;
  38253. /* discard samples until we reach the desired position. Crossing a
  38254. logical bitstream boundary with abandon is OK. */
  38255. while(vf->pcm_offset<pos){
  38256. ogg_int64_t target=pos-vf->pcm_offset;
  38257. long samples=vorbis_synthesis_pcmout(&vf->vd,NULL);
  38258. if(samples>target)samples=target;
  38259. vorbis_synthesis_read(&vf->vd,samples);
  38260. vf->pcm_offset+=samples;
  38261. if(samples<target)
  38262. if(_fetch_and_process_packet(vf,NULL,1,1)<=0)
  38263. vf->pcm_offset=ov_pcm_total(vf,-1); /* eof */
  38264. }
  38265. return 0;
  38266. }
  38267. /* seek to a playback time relative to the decompressed pcm stream
  38268. returns zero on success, nonzero on failure */
  38269. int ov_time_seek(OggVorbis_File *vf,double seconds){
  38270. /* translate time to PCM position and call ov_pcm_seek */
  38271. int link=-1;
  38272. ogg_int64_t pcm_total=ov_pcm_total(vf,-1);
  38273. double time_total=ov_time_total(vf,-1);
  38274. if(vf->ready_state<OPENED)return(OV_EINVAL);
  38275. if(!vf->seekable)return(OV_ENOSEEK);
  38276. if(seconds<0 || seconds>time_total)return(OV_EINVAL);
  38277. /* which bitstream section does this time offset occur in? */
  38278. for(link=vf->links-1;link>=0;link--){
  38279. pcm_total-=vf->pcmlengths[link*2+1];
  38280. time_total-=ov_time_total(vf,link);
  38281. if(seconds>=time_total)break;
  38282. }
  38283. /* enough information to convert time offset to pcm offset */
  38284. {
  38285. ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;
  38286. return(ov_pcm_seek(vf,target));
  38287. }
  38288. }
  38289. /* page-granularity version of ov_time_seek
  38290. returns zero on success, nonzero on failure */
  38291. int ov_time_seek_page(OggVorbis_File *vf,double seconds){
  38292. /* translate time to PCM position and call ov_pcm_seek */
  38293. int link=-1;
  38294. ogg_int64_t pcm_total=ov_pcm_total(vf,-1);
  38295. double time_total=ov_time_total(vf,-1);
  38296. if(vf->ready_state<OPENED)return(OV_EINVAL);
  38297. if(!vf->seekable)return(OV_ENOSEEK);
  38298. if(seconds<0 || seconds>time_total)return(OV_EINVAL);
  38299. /* which bitstream section does this time offset occur in? */
  38300. for(link=vf->links-1;link>=0;link--){
  38301. pcm_total-=vf->pcmlengths[link*2+1];
  38302. time_total-=ov_time_total(vf,link);
  38303. if(seconds>=time_total)break;
  38304. }
  38305. /* enough information to convert time offset to pcm offset */
  38306. {
  38307. ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;
  38308. return(ov_pcm_seek_page(vf,target));
  38309. }
  38310. }
  38311. /* tell the current stream offset cursor. Note that seek followed by
  38312. tell will likely not give the set offset due to caching */
  38313. ogg_int64_t ov_raw_tell(OggVorbis_File *vf){
  38314. if(vf->ready_state<OPENED)return(OV_EINVAL);
  38315. return(vf->offset);
  38316. }
  38317. /* return PCM offset (sample) of next PCM sample to be read */
  38318. ogg_int64_t ov_pcm_tell(OggVorbis_File *vf){
  38319. if(vf->ready_state<OPENED)return(OV_EINVAL);
  38320. return(vf->pcm_offset);
  38321. }
  38322. /* return time offset (seconds) of next PCM sample to be read */
  38323. double ov_time_tell(OggVorbis_File *vf){
  38324. int link=0;
  38325. ogg_int64_t pcm_total=0;
  38326. double time_total=0.f;
  38327. if(vf->ready_state<OPENED)return(OV_EINVAL);
  38328. if(vf->seekable){
  38329. pcm_total=ov_pcm_total(vf,-1);
  38330. time_total=ov_time_total(vf,-1);
  38331. /* which bitstream section does this time offset occur in? */
  38332. for(link=vf->links-1;link>=0;link--){
  38333. pcm_total-=vf->pcmlengths[link*2+1];
  38334. time_total-=ov_time_total(vf,link);
  38335. if(vf->pcm_offset>=pcm_total)break;
  38336. }
  38337. }
  38338. return((double)time_total+(double)(vf->pcm_offset-pcm_total)/vf->vi[link].rate);
  38339. }
  38340. /* link: -1) return the vorbis_info struct for the bitstream section
  38341. currently being decoded
  38342. 0-n) to request information for a specific bitstream section
  38343. In the case of a non-seekable bitstream, any call returns the
  38344. current bitstream. NULL in the case that the machine is not
  38345. initialized */
  38346. vorbis_info *ov_info(OggVorbis_File *vf,int link){
  38347. if(vf->seekable){
  38348. if(link<0)
  38349. if(vf->ready_state>=STREAMSET)
  38350. return vf->vi+vf->current_link;
  38351. else
  38352. return vf->vi;
  38353. else
  38354. if(link>=vf->links)
  38355. return NULL;
  38356. else
  38357. return vf->vi+link;
  38358. }else{
  38359. return vf->vi;
  38360. }
  38361. }
  38362. /* grr, strong typing, grr, no templates/inheritence, grr */
  38363. vorbis_comment *ov_comment(OggVorbis_File *vf,int link){
  38364. if(vf->seekable){
  38365. if(link<0)
  38366. if(vf->ready_state>=STREAMSET)
  38367. return vf->vc+vf->current_link;
  38368. else
  38369. return vf->vc;
  38370. else
  38371. if(link>=vf->links)
  38372. return NULL;
  38373. else
  38374. return vf->vc+link;
  38375. }else{
  38376. return vf->vc;
  38377. }
  38378. }
  38379. static int host_is_big_endian() {
  38380. ogg_int32_t pattern = 0xfeedface; /* deadbeef */
  38381. unsigned char *bytewise = (unsigned char *)&pattern;
  38382. if (bytewise[0] == 0xfe) return 1;
  38383. return 0;
  38384. }
  38385. /* up to this point, everything could more or less hide the multiple
  38386. logical bitstream nature of chaining from the toplevel application
  38387. if the toplevel application didn't particularly care. However, at
  38388. the point that we actually read audio back, the multiple-section
  38389. nature must surface: Multiple bitstream sections do not necessarily
  38390. have to have the same number of channels or sampling rate.
  38391. ov_read returns the sequential logical bitstream number currently
  38392. being decoded along with the PCM data in order that the toplevel
  38393. application can take action on channel/sample rate changes. This
  38394. number will be incremented even for streamed (non-seekable) streams
  38395. (for seekable streams, it represents the actual logical bitstream
  38396. index within the physical bitstream. Note that the accessor
  38397. functions above are aware of this dichotomy).
  38398. input values: buffer) a buffer to hold packed PCM data for return
  38399. length) the byte length requested to be placed into buffer
  38400. bigendianp) should the data be packed LSB first (0) or
  38401. MSB first (1)
  38402. word) word size for output. currently 1 (byte) or
  38403. 2 (16 bit short)
  38404. return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL)
  38405. 0) EOF
  38406. n) number of bytes of PCM actually returned. The
  38407. below works on a packet-by-packet basis, so the
  38408. return length is not related to the 'length' passed
  38409. in, just guaranteed to fit.
  38410. *section) set to the logical bitstream number */
  38411. long ov_read(OggVorbis_File *vf,char *buffer,int length,
  38412. int bigendianp,int word,int sgned,int *bitstream){
  38413. int i,j;
  38414. int host_endian = host_is_big_endian();
  38415. float **pcm;
  38416. long samples;
  38417. if(vf->ready_state<OPENED)return(OV_EINVAL);
  38418. while(1){
  38419. if(vf->ready_state==INITSET){
  38420. samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
  38421. if(samples)break;
  38422. }
  38423. /* suck in another packet */
  38424. {
  38425. int ret=_fetch_and_process_packet(vf,NULL,1,1);
  38426. if(ret==OV_EOF)
  38427. return(0);
  38428. if(ret<=0)
  38429. return(ret);
  38430. }
  38431. }
  38432. if(samples>0){
  38433. /* yay! proceed to pack data into the byte buffer */
  38434. long channels=ov_info(vf,-1)->channels;
  38435. long bytespersample=word * channels;
  38436. vorbis_fpu_control fpu;
  38437. if(samples>length/bytespersample)samples=length/bytespersample;
  38438. if(samples <= 0)
  38439. return OV_EINVAL;
  38440. /* a tight loop to pack each size */
  38441. {
  38442. int val;
  38443. if(word==1){
  38444. int off=(sgned?0:128);
  38445. vorbis_fpu_setround(&fpu);
  38446. for(j=0;j<samples;j++)
  38447. for(i=0;i<channels;i++){
  38448. val=vorbis_ftoi(pcm[i][j]*128.f);
  38449. if(val>127)val=127;
  38450. else if(val<-128)val=-128;
  38451. *buffer++=val+off;
  38452. }
  38453. vorbis_fpu_restore(fpu);
  38454. }else{
  38455. int off=(sgned?0:32768);
  38456. if(host_endian==bigendianp){
  38457. if(sgned){
  38458. vorbis_fpu_setround(&fpu);
  38459. for(i=0;i<channels;i++) { /* It's faster in this order */
  38460. float *src=pcm[i];
  38461. short *dest=((short *)buffer)+i;
  38462. for(j=0;j<samples;j++) {
  38463. val=vorbis_ftoi(src[j]*32768.f);
  38464. if(val>32767)val=32767;
  38465. else if(val<-32768)val=-32768;
  38466. *dest=val;
  38467. dest+=channels;
  38468. }
  38469. }
  38470. vorbis_fpu_restore(fpu);
  38471. }else{
  38472. vorbis_fpu_setround(&fpu);
  38473. for(i=0;i<channels;i++) {
  38474. float *src=pcm[i];
  38475. short *dest=((short *)buffer)+i;
  38476. for(j=0;j<samples;j++) {
  38477. val=vorbis_ftoi(src[j]*32768.f);
  38478. if(val>32767)val=32767;
  38479. else if(val<-32768)val=-32768;
  38480. *dest=val+off;
  38481. dest+=channels;
  38482. }
  38483. }
  38484. vorbis_fpu_restore(fpu);
  38485. }
  38486. }else if(bigendianp){
  38487. vorbis_fpu_setround(&fpu);
  38488. for(j=0;j<samples;j++)
  38489. for(i=0;i<channels;i++){
  38490. val=vorbis_ftoi(pcm[i][j]*32768.f);
  38491. if(val>32767)val=32767;
  38492. else if(val<-32768)val=-32768;
  38493. val+=off;
  38494. *buffer++=(val>>8);
  38495. *buffer++=(val&0xff);
  38496. }
  38497. vorbis_fpu_restore(fpu);
  38498. }else{
  38499. int val;
  38500. vorbis_fpu_setround(&fpu);
  38501. for(j=0;j<samples;j++)
  38502. for(i=0;i<channels;i++){
  38503. val=vorbis_ftoi(pcm[i][j]*32768.f);
  38504. if(val>32767)val=32767;
  38505. else if(val<-32768)val=-32768;
  38506. val+=off;
  38507. *buffer++=(val&0xff);
  38508. *buffer++=(val>>8);
  38509. }
  38510. vorbis_fpu_restore(fpu);
  38511. }
  38512. }
  38513. }
  38514. vorbis_synthesis_read(&vf->vd,samples);
  38515. vf->pcm_offset+=samples;
  38516. if(bitstream)*bitstream=vf->current_link;
  38517. return(samples*bytespersample);
  38518. }else{
  38519. return(samples);
  38520. }
  38521. }
  38522. /* input values: pcm_channels) a float vector per channel of output
  38523. length) the sample length being read by the app
  38524. return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL)
  38525. 0) EOF
  38526. n) number of samples of PCM actually returned. The
  38527. below works on a packet-by-packet basis, so the
  38528. return length is not related to the 'length' passed
  38529. in, just guaranteed to fit.
  38530. *section) set to the logical bitstream number */
  38531. long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int length,
  38532. int *bitstream){
  38533. if(vf->ready_state<OPENED)return(OV_EINVAL);
  38534. while(1){
  38535. if(vf->ready_state==INITSET){
  38536. float **pcm;
  38537. long samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
  38538. if(samples){
  38539. if(pcm_channels)*pcm_channels=pcm;
  38540. if(samples>length)samples=length;
  38541. vorbis_synthesis_read(&vf->vd,samples);
  38542. vf->pcm_offset+=samples;
  38543. if(bitstream)*bitstream=vf->current_link;
  38544. return samples;
  38545. }
  38546. }
  38547. /* suck in another packet */
  38548. {
  38549. int ret=_fetch_and_process_packet(vf,NULL,1,1);
  38550. if(ret==OV_EOF)return(0);
  38551. if(ret<=0)return(ret);
  38552. }
  38553. }
  38554. }
  38555. extern float *vorbis_window(vorbis_dsp_state *v,int W);
  38556. extern void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB,
  38557. ogg_int64_t off);
  38558. static void _ov_splice(float **pcm,float **lappcm,
  38559. int n1, int n2,
  38560. int ch1, int ch2,
  38561. float *w1, float *w2){
  38562. int i,j;
  38563. float *w=w1;
  38564. int n=n1;
  38565. if(n1>n2){
  38566. n=n2;
  38567. w=w2;
  38568. }
  38569. /* splice */
  38570. for(j=0;j<ch1 && j<ch2;j++){
  38571. float *s=lappcm[j];
  38572. float *d=pcm[j];
  38573. for(i=0;i<n;i++){
  38574. float wd=w[i]*w[i];
  38575. float ws=1.-wd;
  38576. d[i]=d[i]*wd + s[i]*ws;
  38577. }
  38578. }
  38579. /* window from zero */
  38580. for(;j<ch2;j++){
  38581. float *d=pcm[j];
  38582. for(i=0;i<n;i++){
  38583. float wd=w[i]*w[i];
  38584. d[i]=d[i]*wd;
  38585. }
  38586. }
  38587. }
  38588. /* make sure vf is INITSET */
  38589. static int _ov_initset(OggVorbis_File *vf){
  38590. while(1){
  38591. if(vf->ready_state==INITSET)break;
  38592. /* suck in another packet */
  38593. {
  38594. int ret=_fetch_and_process_packet(vf,NULL,1,0);
  38595. if(ret<0 && ret!=OV_HOLE)return(ret);
  38596. }
  38597. }
  38598. return 0;
  38599. }
  38600. /* make sure vf is INITSET and that we have a primed buffer; if
  38601. we're crosslapping at a stream section boundary, this also makes
  38602. sure we're sanity checking against the right stream information */
  38603. static int _ov_initprime(OggVorbis_File *vf){
  38604. vorbis_dsp_state *vd=&vf->vd;
  38605. while(1){
  38606. if(vf->ready_state==INITSET)
  38607. if(vorbis_synthesis_pcmout(vd,NULL))break;
  38608. /* suck in another packet */
  38609. {
  38610. int ret=_fetch_and_process_packet(vf,NULL,1,0);
  38611. if(ret<0 && ret!=OV_HOLE)return(ret);
  38612. }
  38613. }
  38614. return 0;
  38615. }
  38616. /* grab enough data for lapping from vf; this may be in the form of
  38617. unreturned, already-decoded pcm, remaining PCM we will need to
  38618. decode, or synthetic postextrapolation from last packets. */
  38619. static void _ov_getlap(OggVorbis_File *vf,vorbis_info *vi,vorbis_dsp_state *vd,
  38620. float **lappcm,int lapsize){
  38621. int lapcount=0,i;
  38622. float **pcm;
  38623. /* try first to decode the lapping data */
  38624. while(lapcount<lapsize){
  38625. int samples=vorbis_synthesis_pcmout(vd,&pcm);
  38626. if(samples){
  38627. if(samples>lapsize-lapcount)samples=lapsize-lapcount;
  38628. for(i=0;i<vi->channels;i++)
  38629. memcpy(lappcm[i]+lapcount,pcm[i],sizeof(**pcm)*samples);
  38630. lapcount+=samples;
  38631. vorbis_synthesis_read(vd,samples);
  38632. }else{
  38633. /* suck in another packet */
  38634. int ret=_fetch_and_process_packet(vf,NULL,1,0); /* do *not* span */
  38635. if(ret==OV_EOF)break;
  38636. }
  38637. }
  38638. if(lapcount<lapsize){
  38639. /* failed to get lapping data from normal decode; pry it from the
  38640. postextrapolation buffering, or the second half of the MDCT
  38641. from the last packet */
  38642. int samples=vorbis_synthesis_lapout(&vf->vd,&pcm);
  38643. if(samples==0){
  38644. for(i=0;i<vi->channels;i++)
  38645. memset(lappcm[i]+lapcount,0,sizeof(**pcm)*lapsize-lapcount);
  38646. lapcount=lapsize;
  38647. }else{
  38648. if(samples>lapsize-lapcount)samples=lapsize-lapcount;
  38649. for(i=0;i<vi->channels;i++)
  38650. memcpy(lappcm[i]+lapcount,pcm[i],sizeof(**pcm)*samples);
  38651. lapcount+=samples;
  38652. }
  38653. }
  38654. }
  38655. /* this sets up crosslapping of a sample by using trailing data from
  38656. sample 1 and lapping it into the windowing buffer of sample 2 */
  38657. int ov_crosslap(OggVorbis_File *vf1, OggVorbis_File *vf2){
  38658. vorbis_info *vi1,*vi2;
  38659. float **lappcm;
  38660. float **pcm;
  38661. float *w1,*w2;
  38662. int n1,n2,i,ret,hs1,hs2;
  38663. if(vf1==vf2)return(0); /* degenerate case */
  38664. if(vf1->ready_state<OPENED)return(OV_EINVAL);
  38665. if(vf2->ready_state<OPENED)return(OV_EINVAL);
  38666. /* the relevant overlap buffers must be pre-checked and pre-primed
  38667. before looking at settings in the event that priming would cross
  38668. a bitstream boundary. So, do it now */
  38669. ret=_ov_initset(vf1);
  38670. if(ret)return(ret);
  38671. ret=_ov_initprime(vf2);
  38672. if(ret)return(ret);
  38673. vi1=ov_info(vf1,-1);
  38674. vi2=ov_info(vf2,-1);
  38675. hs1=ov_halfrate_p(vf1);
  38676. hs2=ov_halfrate_p(vf2);
  38677. lappcm=alloca(sizeof(*lappcm)*vi1->channels);
  38678. n1=vorbis_info_blocksize(vi1,0)>>(1+hs1);
  38679. n2=vorbis_info_blocksize(vi2,0)>>(1+hs2);
  38680. w1=vorbis_window(&vf1->vd,0);
  38681. w2=vorbis_window(&vf2->vd,0);
  38682. for(i=0;i<vi1->channels;i++)
  38683. lappcm[i]=alloca(sizeof(**lappcm)*n1);
  38684. _ov_getlap(vf1,vi1,&vf1->vd,lappcm,n1);
  38685. /* have a lapping buffer from vf1; now to splice it into the lapping
  38686. buffer of vf2 */
  38687. /* consolidate and expose the buffer. */
  38688. vorbis_synthesis_lapout(&vf2->vd,&pcm);
  38689. _analysis_output_always("pcmL",0,pcm[0],n1*2,0,0,0);
  38690. _analysis_output_always("pcmR",0,pcm[1],n1*2,0,0,0);
  38691. /* splice */
  38692. _ov_splice(pcm,lappcm,n1,n2,vi1->channels,vi2->channels,w1,w2);
  38693. /* done */
  38694. return(0);
  38695. }
  38696. static int _ov_64_seek_lap(OggVorbis_File *vf,ogg_int64_t pos,
  38697. int (*localseek)(OggVorbis_File *,ogg_int64_t)){
  38698. vorbis_info *vi;
  38699. float **lappcm;
  38700. float **pcm;
  38701. float *w1,*w2;
  38702. int n1,n2,ch1,ch2,hs;
  38703. int i,ret;
  38704. if(vf->ready_state<OPENED)return(OV_EINVAL);
  38705. ret=_ov_initset(vf);
  38706. if(ret)return(ret);
  38707. vi=ov_info(vf,-1);
  38708. hs=ov_halfrate_p(vf);
  38709. ch1=vi->channels;
  38710. n1=vorbis_info_blocksize(vi,0)>>(1+hs);
  38711. w1=vorbis_window(&vf->vd,0); /* window arrays from libvorbis are
  38712. persistent; even if the decode state
  38713. from this link gets dumped, this
  38714. window array continues to exist */
  38715. lappcm=alloca(sizeof(*lappcm)*ch1);
  38716. for(i=0;i<ch1;i++)
  38717. lappcm[i]=alloca(sizeof(**lappcm)*n1);
  38718. _ov_getlap(vf,vi,&vf->vd,lappcm,n1);
  38719. /* have lapping data; seek and prime the buffer */
  38720. ret=localseek(vf,pos);
  38721. if(ret)return ret;
  38722. ret=_ov_initprime(vf);
  38723. if(ret)return(ret);
  38724. /* Guard against cross-link changes; they're perfectly legal */
  38725. vi=ov_info(vf,-1);
  38726. ch2=vi->channels;
  38727. n2=vorbis_info_blocksize(vi,0)>>(1+hs);
  38728. w2=vorbis_window(&vf->vd,0);
  38729. /* consolidate and expose the buffer. */
  38730. vorbis_synthesis_lapout(&vf->vd,&pcm);
  38731. /* splice */
  38732. _ov_splice(pcm,lappcm,n1,n2,ch1,ch2,w1,w2);
  38733. /* done */
  38734. return(0);
  38735. }
  38736. int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos){
  38737. return _ov_64_seek_lap(vf,pos,ov_raw_seek);
  38738. }
  38739. int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos){
  38740. return _ov_64_seek_lap(vf,pos,ov_pcm_seek);
  38741. }
  38742. int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos){
  38743. return _ov_64_seek_lap(vf,pos,ov_pcm_seek_page);
  38744. }
  38745. static int _ov_d_seek_lap(OggVorbis_File *vf,double pos,
  38746. int (*localseek)(OggVorbis_File *,double)){
  38747. vorbis_info *vi;
  38748. float **lappcm;
  38749. float **pcm;
  38750. float *w1,*w2;
  38751. int n1,n2,ch1,ch2,hs;
  38752. int i,ret;
  38753. if(vf->ready_state<OPENED)return(OV_EINVAL);
  38754. ret=_ov_initset(vf);
  38755. if(ret)return(ret);
  38756. vi=ov_info(vf,-1);
  38757. hs=ov_halfrate_p(vf);
  38758. ch1=vi->channels;
  38759. n1=vorbis_info_blocksize(vi,0)>>(1+hs);
  38760. w1=vorbis_window(&vf->vd,0); /* window arrays from libvorbis are
  38761. persistent; even if the decode state
  38762. from this link gets dumped, this
  38763. window array continues to exist */
  38764. lappcm=alloca(sizeof(*lappcm)*ch1);
  38765. for(i=0;i<ch1;i++)
  38766. lappcm[i]=alloca(sizeof(**lappcm)*n1);
  38767. _ov_getlap(vf,vi,&vf->vd,lappcm,n1);
  38768. /* have lapping data; seek and prime the buffer */
  38769. ret=localseek(vf,pos);
  38770. if(ret)return ret;
  38771. ret=_ov_initprime(vf);
  38772. if(ret)return(ret);
  38773. /* Guard against cross-link changes; they're perfectly legal */
  38774. vi=ov_info(vf,-1);
  38775. ch2=vi->channels;
  38776. n2=vorbis_info_blocksize(vi,0)>>(1+hs);
  38777. w2=vorbis_window(&vf->vd,0);
  38778. /* consolidate and expose the buffer. */
  38779. vorbis_synthesis_lapout(&vf->vd,&pcm);
  38780. /* splice */
  38781. _ov_splice(pcm,lappcm,n1,n2,ch1,ch2,w1,w2);
  38782. /* done */
  38783. return(0);
  38784. }
  38785. int ov_time_seek_lap(OggVorbis_File *vf,double pos){
  38786. return _ov_d_seek_lap(vf,pos,ov_time_seek);
  38787. }
  38788. int ov_time_seek_page_lap(OggVorbis_File *vf,double pos){
  38789. return _ov_d_seek_lap(vf,pos,ov_time_seek_page);
  38790. }
  38791. /********************************************************************
  38792. * *
  38793. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  38794. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  38795. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  38796. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  38797. * *
  38798. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2003 *
  38799. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  38800. * *
  38801. ********************************************************************
  38802. function: maintain the info structure, info <-> header packets
  38803. last mod: $Id: info.c,v 1.62 2003/09/10 01:10:18 xiphmont Exp $
  38804. ********************************************************************/
  38805. /* general handling of the header and the vorbis_info structure (and
  38806. substructures) */
  38807. /********************************************************************
  38808. * *
  38809. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  38810. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  38811. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  38812. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  38813. * *
  38814. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  38815. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  38816. * *
  38817. ********************************************************************
  38818. function: registry for time, floor, res backends and channel mappings
  38819. last mod: $Id: registry.h,v 1.13 2002/07/11 06:40:50 xiphmont Exp $
  38820. ********************************************************************/
  38821. #define _V_REG_H_
  38822. #define VI_TRANSFORMB 1
  38823. #define VI_WINDOWB 1
  38824. #define VI_TIMEB 1
  38825. #define VI_FLOORB 2
  38826. #define VI_RESB 3
  38827. #define VI_MAPB 1
  38828. extern vorbis_func_floor *_floor_P[];
  38829. extern vorbis_func_residue *_residue_P[];
  38830. extern vorbis_func_mapping *_mapping_P[];
  38831. /********************************************************************
  38832. * *
  38833. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  38834. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  38835. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  38836. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  38837. * *
  38838. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  38839. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  38840. * *
  38841. ********************************************************************
  38842. function: window functions
  38843. last mod: $Id: window.h,v 1.14 2003/09/05 22:17:41 giles Exp $
  38844. ********************************************************************/
  38845. #define _V_WINDOW_
  38846. extern float *_vorbis_window_get(int n);
  38847. extern void _vorbis_apply_window(float *d,int *winno,long *blocksizes,
  38848. int lW,int W,int nW);
  38849. /* helpers */
  38850. static int ilog2(unsigned int v){
  38851. int ret=0;
  38852. if(v)--v;
  38853. while(v){
  38854. ret++;
  38855. v>>=1;
  38856. }
  38857. return(ret);
  38858. }
  38859. static void _v_writestring(oggpack_buffer *o,char *s, int bytes){
  38860. while(bytes--){
  38861. oggpack_write(o,*s++,8);
  38862. }
  38863. }
  38864. static void _v_readstring(oggpack_buffer *o,char *buf,int bytes){
  38865. while(bytes--){
  38866. *buf++=oggpack_read(o,8);
  38867. }
  38868. }
  38869. void vorbis_comment_init(vorbis_comment *vc){
  38870. memset(vc,0,sizeof(*vc));
  38871. }
  38872. void vorbis_comment_add(vorbis_comment *vc,char *comment){
  38873. vc->user_comments=_ogg_realloc(vc->user_comments,
  38874. (vc->comments+2)*sizeof(*vc->user_comments));
  38875. vc->comment_lengths=_ogg_realloc(vc->comment_lengths,
  38876. (vc->comments+2)*sizeof(*vc->comment_lengths));
  38877. vc->comment_lengths[vc->comments]=strlen(comment);
  38878. vc->user_comments[vc->comments]=_ogg_malloc(vc->comment_lengths[vc->comments]+1);
  38879. strcpy(vc->user_comments[vc->comments], comment);
  38880. vc->comments++;
  38881. vc->user_comments[vc->comments]=NULL;
  38882. }
  38883. void vorbis_comment_add_tag(vorbis_comment *vc, char *tag, char *contents){
  38884. char *comment=alloca(strlen(tag)+strlen(contents)+2); /* +2 for = and \0 */
  38885. strcpy(comment, tag);
  38886. strcat(comment, "=");
  38887. strcat(comment, contents);
  38888. vorbis_comment_add(vc, comment);
  38889. }
  38890. /* This is more or less the same as strncasecmp - but that doesn't exist
  38891. * everywhere, and this is a fairly trivial function, so we include it */
  38892. static int tagcompare(const char *s1, const char *s2, int n){
  38893. int c=0;
  38894. while(c < n){
  38895. if(toupper(s1[c]) != toupper(s2[c]))
  38896. return !0;
  38897. c++;
  38898. }
  38899. return 0;
  38900. }
  38901. char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count){
  38902. long i;
  38903. int found = 0;
  38904. int taglen = strlen(tag)+1; /* +1 for the = we append */
  38905. char *fulltag = alloca(taglen+ 1);
  38906. strcpy(fulltag, tag);
  38907. strcat(fulltag, "=");
  38908. for(i=0;i<vc->comments;i++){
  38909. if(!tagcompare(vc->user_comments[i], fulltag, taglen)){
  38910. if(count == found)
  38911. /* We return a pointer to the data, not a copy */
  38912. return vc->user_comments[i] + taglen;
  38913. else
  38914. found++;
  38915. }
  38916. }
  38917. return NULL; /* didn't find anything */
  38918. }
  38919. int vorbis_comment_query_count(vorbis_comment *vc, char *tag){
  38920. int i,count=0;
  38921. int taglen = strlen(tag)+1; /* +1 for the = we append */
  38922. char *fulltag = alloca(taglen+1);
  38923. strcpy(fulltag,tag);
  38924. strcat(fulltag, "=");
  38925. for(i=0;i<vc->comments;i++){
  38926. if(!tagcompare(vc->user_comments[i], fulltag, taglen))
  38927. count++;
  38928. }
  38929. return count;
  38930. }
  38931. void vorbis_comment_clear(vorbis_comment *vc){
  38932. if(vc){
  38933. long i;
  38934. for(i=0;i<vc->comments;i++)
  38935. if(vc->user_comments[i])_ogg_free(vc->user_comments[i]);
  38936. if(vc->user_comments)_ogg_free(vc->user_comments);
  38937. if(vc->comment_lengths)_ogg_free(vc->comment_lengths);
  38938. if(vc->vendor)_ogg_free(vc->vendor);
  38939. }
  38940. memset(vc,0,sizeof(*vc));
  38941. }
  38942. /* blocksize 0 is guaranteed to be short, 1 is guarantted to be long.
  38943. They may be equal, but short will never ge greater than long */
  38944. int vorbis_info_blocksize(vorbis_info *vi,int zo){
  38945. codec_setup_info *ci = vi->codec_setup;
  38946. return ci ? ci->blocksizes[zo] : -1;
  38947. }
  38948. /* used by synthesis, which has a full, alloced vi */
  38949. void vorbis_info_init(vorbis_info *vi){
  38950. memset(vi,0,sizeof(*vi));
  38951. vi->codec_setup=_ogg_calloc(1,sizeof(codec_setup_info));
  38952. }
  38953. void vorbis_info_clear(vorbis_info *vi){
  38954. codec_setup_info *ci=vi->codec_setup;
  38955. int i;
  38956. if(ci){
  38957. for(i=0;i<ci->modes;i++)
  38958. if(ci->mode_param[i])_ogg_free(ci->mode_param[i]);
  38959. for(i=0;i<ci->maps;i++) /* unpack does the range checking */
  38960. _mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]);
  38961. for(i=0;i<ci->floors;i++) /* unpack does the range checking */
  38962. _floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]);
  38963. for(i=0;i<ci->residues;i++) /* unpack does the range checking */
  38964. _residue_P[ci->residue_type[i]]->free_info(ci->residue_param[i]);
  38965. for(i=0;i<ci->books;i++){
  38966. if(ci->book_param[i]){
  38967. /* knows if the book was not alloced */
  38968. vorbis_staticbook_destroy(ci->book_param[i]);
  38969. }
  38970. if(ci->fullbooks)
  38971. vorbis_book_clear(ci->fullbooks+i);
  38972. }
  38973. if(ci->fullbooks)
  38974. _ogg_free(ci->fullbooks);
  38975. for(i=0;i<ci->psys;i++)
  38976. _vi_psy_free(ci->psy_param[i]);
  38977. _ogg_free(ci);
  38978. }
  38979. memset(vi,0,sizeof(*vi));
  38980. }
  38981. /* Header packing/unpacking ********************************************/
  38982. static int _vorbis_unpack_info(vorbis_info *vi,oggpack_buffer *opb){
  38983. codec_setup_info *ci=vi->codec_setup;
  38984. if(!ci)return(OV_EFAULT);
  38985. vi->version=oggpack_read(opb,32);
  38986. if(vi->version!=0)return(OV_EVERSION);
  38987. vi->channels=oggpack_read(opb,8);
  38988. vi->rate=oggpack_read(opb,32);
  38989. vi->bitrate_upper=oggpack_read(opb,32);
  38990. vi->bitrate_nominal=oggpack_read(opb,32);
  38991. vi->bitrate_lower=oggpack_read(opb,32);
  38992. ci->blocksizes[0]=1<<oggpack_read(opb,4);
  38993. ci->blocksizes[1]=1<<oggpack_read(opb,4);
  38994. if(vi->rate<1)goto err_out;
  38995. if(vi->channels<1)goto err_out;
  38996. if(ci->blocksizes[0]<8)goto err_out;
  38997. if(ci->blocksizes[1]<ci->blocksizes[0])goto err_out;
  38998. if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */
  38999. return(0);
  39000. err_out:
  39001. vorbis_info_clear(vi);
  39002. return(OV_EBADHEADER);
  39003. }
  39004. static int _vorbis_unpack_comment(vorbis_comment *vc,oggpack_buffer *opb){
  39005. int i;
  39006. int vendorlen=oggpack_read(opb,32);
  39007. if(vendorlen<0)goto err_out;
  39008. vc->vendor=_ogg_calloc(vendorlen+1,1);
  39009. _v_readstring(opb,vc->vendor,vendorlen);
  39010. vc->comments=oggpack_read(opb,32);
  39011. if(vc->comments<0)goto err_out;
  39012. vc->user_comments=_ogg_calloc(vc->comments+1,sizeof(*vc->user_comments));
  39013. vc->comment_lengths=_ogg_calloc(vc->comments+1, sizeof(*vc->comment_lengths));
  39014. for(i=0;i<vc->comments;i++){
  39015. int len=oggpack_read(opb,32);
  39016. if(len<0)goto err_out;
  39017. vc->comment_lengths[i]=len;
  39018. vc->user_comments[i]=_ogg_calloc(len+1,1);
  39019. _v_readstring(opb,vc->user_comments[i],len);
  39020. }
  39021. if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */
  39022. return(0);
  39023. err_out:
  39024. vorbis_comment_clear(vc);
  39025. return(OV_EBADHEADER);
  39026. }
  39027. /* all of the real encoding details are here. The modes, books,
  39028. everything */
  39029. static int _vorbis_unpack_books(vorbis_info *vi,oggpack_buffer *opb){
  39030. codec_setup_info *ci=vi->codec_setup;
  39031. int i;
  39032. if(!ci)return(OV_EFAULT);
  39033. /* codebooks */
  39034. ci->books=oggpack_read(opb,8)+1;
  39035. /*ci->book_param=_ogg_calloc(ci->books,sizeof(*ci->book_param));*/
  39036. for(i=0;i<ci->books;i++){
  39037. ci->book_param[i]=_ogg_calloc(1,sizeof(*ci->book_param[i]));
  39038. if(vorbis_staticbook_unpack(opb,ci->book_param[i]))goto err_out;
  39039. }
  39040. /* time backend settings; hooks are unused */
  39041. {
  39042. int times=oggpack_read(opb,6)+1;
  39043. for(i=0;i<times;i++){
  39044. int test=oggpack_read(opb,16);
  39045. if(test<0 || test>=VI_TIMEB)goto err_out;
  39046. }
  39047. }
  39048. /* floor backend settings */
  39049. ci->floors=oggpack_read(opb,6)+1;
  39050. /*ci->floor_type=_ogg_malloc(ci->floors*sizeof(*ci->floor_type));*/
  39051. /*ci->floor_param=_ogg_calloc(ci->floors,sizeof(void *));*/
  39052. for(i=0;i<ci->floors;i++){
  39053. ci->floor_type[i]=oggpack_read(opb,16);
  39054. if(ci->floor_type[i]<0 || ci->floor_type[i]>=VI_FLOORB)goto err_out;
  39055. ci->floor_param[i]=_floor_P[ci->floor_type[i]]->unpack(vi,opb);
  39056. if(!ci->floor_param[i])goto err_out;
  39057. }
  39058. /* residue backend settings */
  39059. ci->residues=oggpack_read(opb,6)+1;
  39060. /*ci->residue_type=_ogg_malloc(ci->residues*sizeof(*ci->residue_type));*/
  39061. /*ci->residue_param=_ogg_calloc(ci->residues,sizeof(void *));*/
  39062. for(i=0;i<ci->residues;i++){
  39063. ci->residue_type[i]=oggpack_read(opb,16);
  39064. if(ci->residue_type[i]<0 || ci->residue_type[i]>=VI_RESB)goto err_out;
  39065. ci->residue_param[i]=_residue_P[ci->residue_type[i]]->unpack(vi,opb);
  39066. if(!ci->residue_param[i])goto err_out;
  39067. }
  39068. /* map backend settings */
  39069. ci->maps=oggpack_read(opb,6)+1;
  39070. /*ci->map_type=_ogg_malloc(ci->maps*sizeof(*ci->map_type));*/
  39071. /*ci->map_param=_ogg_calloc(ci->maps,sizeof(void *));*/
  39072. for(i=0;i<ci->maps;i++){
  39073. ci->map_type[i]=oggpack_read(opb,16);
  39074. if(ci->map_type[i]<0 || ci->map_type[i]>=VI_MAPB)goto err_out;
  39075. ci->map_param[i]=_mapping_P[ci->map_type[i]]->unpack(vi,opb);
  39076. if(!ci->map_param[i])goto err_out;
  39077. }
  39078. /* mode settings */
  39079. ci->modes=oggpack_read(opb,6)+1;
  39080. /*vi->mode_param=_ogg_calloc(vi->modes,sizeof(void *));*/
  39081. for(i=0;i<ci->modes;i++){
  39082. ci->mode_param[i]=_ogg_calloc(1,sizeof(*ci->mode_param[i]));
  39083. ci->mode_param[i]->blockflag=oggpack_read(opb,1);
  39084. ci->mode_param[i]->windowtype=oggpack_read(opb,16);
  39085. ci->mode_param[i]->transformtype=oggpack_read(opb,16);
  39086. ci->mode_param[i]->mapping=oggpack_read(opb,8);
  39087. if(ci->mode_param[i]->windowtype>=VI_WINDOWB)goto err_out;
  39088. if(ci->mode_param[i]->transformtype>=VI_WINDOWB)goto err_out;
  39089. if(ci->mode_param[i]->mapping>=ci->maps)goto err_out;
  39090. }
  39091. if(oggpack_read(opb,1)!=1)goto err_out; /* top level EOP check */
  39092. return(0);
  39093. err_out:
  39094. vorbis_info_clear(vi);
  39095. return(OV_EBADHEADER);
  39096. }
  39097. /* The Vorbis header is in three packets; the initial small packet in
  39098. the first page that identifies basic parameters, a second packet
  39099. with bitstream comments and a third packet that holds the
  39100. codebook. */
  39101. int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,ogg_packet *op){
  39102. oggpack_buffer opb;
  39103. if(op){
  39104. oggpack_readinit(&opb,op->packet,op->bytes);
  39105. /* Which of the three types of header is this? */
  39106. /* Also verify header-ness, vorbis */
  39107. {
  39108. char buffer[6];
  39109. int packtype=oggpack_read(&opb,8);
  39110. memset(buffer,0,6);
  39111. _v_readstring(&opb,buffer,6);
  39112. if(memcmp(buffer,"vorbis",6)){
  39113. /* not a vorbis header */
  39114. return(OV_ENOTVORBIS);
  39115. }
  39116. switch(packtype){
  39117. case 0x01: /* least significant *bit* is read first */
  39118. if(!op->b_o_s){
  39119. /* Not the initial packet */
  39120. return(OV_EBADHEADER);
  39121. }
  39122. if(vi->rate!=0){
  39123. /* previously initialized info header */
  39124. return(OV_EBADHEADER);
  39125. }
  39126. return(_vorbis_unpack_info(vi,&opb));
  39127. case 0x03: /* least significant *bit* is read first */
  39128. if(vi->rate==0){
  39129. /* um... we didn't get the initial header */
  39130. return(OV_EBADHEADER);
  39131. }
  39132. return(_vorbis_unpack_comment(vc,&opb));
  39133. case 0x05: /* least significant *bit* is read first */
  39134. if(vi->rate==0 || vc->vendor==NULL){
  39135. /* um... we didn;t get the initial header or comments yet */
  39136. return(OV_EBADHEADER);
  39137. }
  39138. return(_vorbis_unpack_books(vi,&opb));
  39139. default:
  39140. /* Not a valid vorbis header type */
  39141. return(OV_EBADHEADER);
  39142. break;
  39143. }
  39144. }
  39145. }
  39146. return(OV_EBADHEADER);
  39147. }
  39148. /* pack side **********************************************************/
  39149. static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){
  39150. codec_setup_info *ci=vi->codec_setup;
  39151. if(!ci)return(OV_EFAULT);
  39152. /* preamble */
  39153. oggpack_write(opb,0x01,8);
  39154. _v_writestring(opb,"vorbis", 6);
  39155. /* basic information about the stream */
  39156. oggpack_write(opb,0x00,32);
  39157. oggpack_write(opb,vi->channels,8);
  39158. oggpack_write(opb,vi->rate,32);
  39159. oggpack_write(opb,vi->bitrate_upper,32);
  39160. oggpack_write(opb,vi->bitrate_nominal,32);
  39161. oggpack_write(opb,vi->bitrate_lower,32);
  39162. oggpack_write(opb,ilog2(ci->blocksizes[0]),4);
  39163. oggpack_write(opb,ilog2(ci->blocksizes[1]),4);
  39164. oggpack_write(opb,1,1);
  39165. return(0);
  39166. }
  39167. static int _vorbis_pack_comment(oggpack_buffer *opb,vorbis_comment *vc){
  39168. char temp[]="Xiph.Org libVorbis I 20030909";
  39169. int bytes = strlen(temp);
  39170. /* preamble */
  39171. oggpack_write(opb,0x03,8);
  39172. _v_writestring(opb,"vorbis", 6);
  39173. /* vendor */
  39174. oggpack_write(opb,bytes,32);
  39175. _v_writestring(opb,temp, bytes);
  39176. /* comments */
  39177. oggpack_write(opb,vc->comments,32);
  39178. if(vc->comments){
  39179. int i;
  39180. for(i=0;i<vc->comments;i++){
  39181. if(vc->user_comments[i]){
  39182. oggpack_write(opb,vc->comment_lengths[i],32);
  39183. _v_writestring(opb,vc->user_comments[i], vc->comment_lengths[i]);
  39184. }else{
  39185. oggpack_write(opb,0,32);
  39186. }
  39187. }
  39188. }
  39189. oggpack_write(opb,1,1);
  39190. return(0);
  39191. }
  39192. static int _vorbis_pack_books(oggpack_buffer *opb,vorbis_info *vi){
  39193. codec_setup_info *ci=vi->codec_setup;
  39194. int i;
  39195. if(!ci)return(OV_EFAULT);
  39196. oggpack_write(opb,0x05,8);
  39197. _v_writestring(opb,"vorbis", 6);
  39198. /* books */
  39199. oggpack_write(opb,ci->books-1,8);
  39200. for(i=0;i<ci->books;i++)
  39201. if(vorbis_staticbook_pack(ci->book_param[i],opb))goto err_out;
  39202. /* times; hook placeholders */
  39203. oggpack_write(opb,0,6);
  39204. oggpack_write(opb,0,16);
  39205. /* floors */
  39206. oggpack_write(opb,ci->floors-1,6);
  39207. for(i=0;i<ci->floors;i++){
  39208. oggpack_write(opb,ci->floor_type[i],16);
  39209. if(_floor_P[ci->floor_type[i]]->pack)
  39210. _floor_P[ci->floor_type[i]]->pack(ci->floor_param[i],opb);
  39211. else
  39212. goto err_out;
  39213. }
  39214. /* residues */
  39215. oggpack_write(opb,ci->residues-1,6);
  39216. for(i=0;i<ci->residues;i++){
  39217. oggpack_write(opb,ci->residue_type[i],16);
  39218. _residue_P[ci->residue_type[i]]->pack(ci->residue_param[i],opb);
  39219. }
  39220. /* maps */
  39221. oggpack_write(opb,ci->maps-1,6);
  39222. for(i=0;i<ci->maps;i++){
  39223. oggpack_write(opb,ci->map_type[i],16);
  39224. _mapping_P[ci->map_type[i]]->pack(vi,ci->map_param[i],opb);
  39225. }
  39226. /* modes */
  39227. oggpack_write(opb,ci->modes-1,6);
  39228. for(i=0;i<ci->modes;i++){
  39229. oggpack_write(opb,ci->mode_param[i]->blockflag,1);
  39230. oggpack_write(opb,ci->mode_param[i]->windowtype,16);
  39231. oggpack_write(opb,ci->mode_param[i]->transformtype,16);
  39232. oggpack_write(opb,ci->mode_param[i]->mapping,8);
  39233. }
  39234. oggpack_write(opb,1,1);
  39235. return(0);
  39236. err_out:
  39237. return(-1);
  39238. }
  39239. int vorbis_commentheader_out(vorbis_comment *vc,
  39240. ogg_packet *op){
  39241. oggpack_buffer opb;
  39242. oggpack_writeinit(&opb);
  39243. if(_vorbis_pack_comment(&opb,vc)) return OV_EIMPL;
  39244. op->packet = _ogg_malloc(oggpack_bytes(&opb));
  39245. memcpy(op->packet, opb.buffer, oggpack_bytes(&opb));
  39246. op->bytes=oggpack_bytes(&opb);
  39247. op->b_o_s=0;
  39248. op->e_o_s=0;
  39249. op->granulepos=0;
  39250. return 0;
  39251. }
  39252. int vorbis_analysis_headerout(vorbis_dsp_state *v,
  39253. vorbis_comment *vc,
  39254. ogg_packet *op,
  39255. ogg_packet *op_comm,
  39256. ogg_packet *op_code){
  39257. int ret=OV_EIMPL;
  39258. vorbis_info *vi=v->vi;
  39259. oggpack_buffer opb;
  39260. private_state *b=v->backend_state;
  39261. if(!b){
  39262. ret=OV_EFAULT;
  39263. goto err_out;
  39264. }
  39265. /* first header packet **********************************************/
  39266. oggpack_writeinit(&opb);
  39267. if(_vorbis_pack_info(&opb,vi))goto err_out;
  39268. /* build the packet */
  39269. if(b->header)_ogg_free(b->header);
  39270. b->header=_ogg_malloc(oggpack_bytes(&opb));
  39271. memcpy(b->header,opb.buffer,oggpack_bytes(&opb));
  39272. op->packet=b->header;
  39273. op->bytes=oggpack_bytes(&opb);
  39274. op->b_o_s=1;
  39275. op->e_o_s=0;
  39276. op->granulepos=0;
  39277. /* second header packet (comments) **********************************/
  39278. oggpack_reset(&opb);
  39279. if(_vorbis_pack_comment(&opb,vc))goto err_out;
  39280. if(b->header1)_ogg_free(b->header1);
  39281. b->header1=_ogg_malloc(oggpack_bytes(&opb));
  39282. memcpy(b->header1,opb.buffer,oggpack_bytes(&opb));
  39283. op_comm->packet=b->header1;
  39284. op_comm->bytes=oggpack_bytes(&opb);
  39285. op_comm->b_o_s=0;
  39286. op_comm->e_o_s=0;
  39287. op_comm->granulepos=0;
  39288. /* third header packet (modes/codebooks) ****************************/
  39289. oggpack_reset(&opb);
  39290. if(_vorbis_pack_books(&opb,vi))goto err_out;
  39291. if(b->header2)_ogg_free(b->header2);
  39292. b->header2=_ogg_malloc(oggpack_bytes(&opb));
  39293. memcpy(b->header2,opb.buffer,oggpack_bytes(&opb));
  39294. op_code->packet=b->header2;
  39295. op_code->bytes=oggpack_bytes(&opb);
  39296. op_code->b_o_s=0;
  39297. op_code->e_o_s=0;
  39298. op_code->granulepos=0;
  39299. oggpack_writeclear(&opb);
  39300. return(0);
  39301. err_out:
  39302. oggpack_writeclear(&opb);
  39303. memset(op,0,sizeof(*op));
  39304. memset(op_comm,0,sizeof(*op_comm));
  39305. memset(op_code,0,sizeof(*op_code));
  39306. if(b->header)_ogg_free(b->header);
  39307. if(b->header1)_ogg_free(b->header1);
  39308. if(b->header2)_ogg_free(b->header2);
  39309. b->header=NULL;
  39310. b->header1=NULL;
  39311. b->header2=NULL;
  39312. return(ret);
  39313. }
  39314. double vorbis_granule_time(vorbis_dsp_state *v,ogg_int64_t granulepos){
  39315. if(granulepos>=0)
  39316. return((double)granulepos/v->vi->rate);
  39317. return(-1);
  39318. }
  39319. /********************************************************************
  39320. * *
  39321. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  39322. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  39323. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  39324. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  39325. * *
  39326. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2003 *
  39327. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  39328. * *
  39329. ********************************************************************
  39330. function: PCM data vector blocking, windowing and dis/reassembly
  39331. last mod: $Id: block.c,v 1.75 2003/09/02 04:39:26 xiphmont Exp $
  39332. Handle windowing, overlap-add, etc of the PCM vectors. This is made
  39333. more amusing by Vorbis' current two allowed block sizes.
  39334. ********************************************************************/
  39335. /********************************************************************
  39336. * *
  39337. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  39338. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  39339. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  39340. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  39341. * *
  39342. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  39343. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  39344. * *
  39345. ********************************************************************
  39346. function: LPC low level routines
  39347. last mod: $Id: lpc.h,v 1.20 2003/03/07 09:13:30 xiphmont Exp $
  39348. ********************************************************************/
  39349. #define _V_LPC_H_
  39350. /* simple linear scale LPC code */
  39351. extern float vorbis_lpc_from_data(float *data,float *lpc,int n,int m);
  39352. extern void vorbis_lpc_predict(float *coeff,float *prime,int m,
  39353. float *data,long n);
  39354. /* pcm accumulator examples (not exhaustive):
  39355. <-------------- lW ---------------->
  39356. <--------------- W ---------------->
  39357. : .....|..... _______________ |
  39358. : .''' | '''_--- | |\ |
  39359. :.....''' |_____--- '''......| | \_______|
  39360. :.................|__________________|_______|__|______|
  39361. |<------ Sl ------>| > Sr < |endW
  39362. |beginSl |endSl | |endSr
  39363. |beginW |endlW |beginSr
  39364. |< lW >|
  39365. <--------------- W ---------------->
  39366. | | .. ______________ |
  39367. | | ' `/ | ---_ |
  39368. |___.'___/`. | ---_____|
  39369. |_______|__|_______|_________________|
  39370. | >|Sl|< |<------ Sr ----->|endW
  39371. | | |endSl |beginSr |endSr
  39372. |beginW | |endlW
  39373. mult[0] |beginSl mult[n]
  39374. <-------------- lW ----------------->
  39375. |<--W-->|
  39376. : .............. ___ | |
  39377. : .''' |`/ \ | |
  39378. :.....''' |/`....\|...|
  39379. :.........................|___|___|___|
  39380. |Sl |Sr |endW
  39381. | | |endSr
  39382. | |beginSr
  39383. | |endSl
  39384. |beginSl
  39385. |beginW
  39386. */
  39387. /* block abstraction setup *********************************************/
  39388. #ifndef WORD_ALIGN
  39389. #define WORD_ALIGN 8
  39390. #endif
  39391. int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb){
  39392. memset(vb,0,sizeof(*vb));
  39393. vb->vd=v;
  39394. vb->localalloc=0;
  39395. vb->localstore=NULL;
  39396. if(v->analysisp){
  39397. vorbis_block_internal *vbi=
  39398. vb->internal=_ogg_calloc(1,sizeof(vorbis_block_internal));
  39399. oggpack_writeinit(&vb->opb);
  39400. vbi->ampmax=-9999;
  39401. }
  39402. return(0);
  39403. }
  39404. void *_vorbis_block_alloc(vorbis_block *vb,long bytes){
  39405. bytes=(bytes+(WORD_ALIGN-1)) & ~(WORD_ALIGN-1);
  39406. if(bytes+vb->localtop>vb->localalloc){
  39407. /* can't just _ogg_realloc... there are outstanding pointers */
  39408. if(vb->localstore){
  39409. struct alloc_chain *link=_ogg_malloc(sizeof(*link));
  39410. vb->totaluse+=vb->localtop;
  39411. link->next=vb->reap;
  39412. link->ptr=vb->localstore;
  39413. vb->reap=link;
  39414. }
  39415. /* highly conservative */
  39416. vb->localalloc=bytes;
  39417. vb->localstore=_ogg_malloc(vb->localalloc);
  39418. vb->localtop=0;
  39419. }
  39420. {
  39421. void *ret=(void *)(((char *)vb->localstore)+vb->localtop);
  39422. vb->localtop+=bytes;
  39423. return ret;
  39424. }
  39425. }
  39426. /* reap the chain, pull the ripcord */
  39427. void _vorbis_block_ripcord(vorbis_block *vb){
  39428. /* reap the chain */
  39429. struct alloc_chain *reap=vb->reap;
  39430. while(reap){
  39431. struct alloc_chain *next=reap->next;
  39432. _ogg_free(reap->ptr);
  39433. memset(reap,0,sizeof(*reap));
  39434. _ogg_free(reap);
  39435. reap=next;
  39436. }
  39437. /* consolidate storage */
  39438. if(vb->totaluse){
  39439. vb->localstore=_ogg_realloc(vb->localstore,vb->totaluse+vb->localalloc);
  39440. vb->localalloc+=vb->totaluse;
  39441. vb->totaluse=0;
  39442. }
  39443. /* pull the ripcord */
  39444. vb->localtop=0;
  39445. vb->reap=NULL;
  39446. }
  39447. int vorbis_block_clear(vorbis_block *vb){
  39448. if(vb->vd)
  39449. if(vb->vd->analysisp)
  39450. oggpack_writeclear(&vb->opb);
  39451. _vorbis_block_ripcord(vb);
  39452. if(vb->localstore)_ogg_free(vb->localstore);
  39453. if(vb->internal)
  39454. _ogg_free(vb->internal);
  39455. memset(vb,0,sizeof(*vb));
  39456. return(0);
  39457. }
  39458. /* Analysis side code, but directly related to blocking. Thus it's
  39459. here and not in analysis.c (which is for analysis transforms only).
  39460. The init is here because some of it is shared */
  39461. static int _vds_shared_init(vorbis_dsp_state *v,vorbis_info *vi,int encp){
  39462. int i;
  39463. codec_setup_info *ci=vi->codec_setup;
  39464. private_state *b=NULL;
  39465. int hs;
  39466. if(ci==NULL) return 1;
  39467. hs=ci->halfrate_flag;
  39468. memset(v,0,sizeof(*v));
  39469. b=v->backend_state=_ogg_calloc(1,sizeof(*b));
  39470. v->vi=vi;
  39471. b->modebits=ilog2(ci->modes);
  39472. b->transform[0]=_ogg_calloc(VI_TRANSFORMB,sizeof(*b->transform[0]));
  39473. b->transform[1]=_ogg_calloc(VI_TRANSFORMB,sizeof(*b->transform[1]));
  39474. /* MDCT is tranform 0 */
  39475. b->transform[0][0]=_ogg_calloc(1,sizeof(mdct_lookup));
  39476. b->transform[1][0]=_ogg_calloc(1,sizeof(mdct_lookup));
  39477. mdct_init(b->transform[0][0],ci->blocksizes[0]>>hs);
  39478. mdct_init(b->transform[1][0],ci->blocksizes[1]>>hs);
  39479. /* Vorbis I uses only window type 0 */
  39480. b->window[0]=ilog2(ci->blocksizes[0])-6;
  39481. b->window[1]=ilog2(ci->blocksizes[1])-6;
  39482. if(encp){ /* encode/decode differ here */
  39483. /* analysis always needs an fft */
  39484. drft_init(&b->fft_look[0],ci->blocksizes[0]);
  39485. drft_init(&b->fft_look[1],ci->blocksizes[1]);
  39486. /* finish the codebooks */
  39487. if(!ci->fullbooks){
  39488. ci->fullbooks=_ogg_calloc(ci->books,sizeof(*ci->fullbooks));
  39489. for(i=0;i<ci->books;i++)
  39490. vorbis_book_init_encode(ci->fullbooks+i,ci->book_param[i]);
  39491. }
  39492. b->psy=_ogg_calloc(ci->psys,sizeof(*b->psy));
  39493. for(i=0;i<ci->psys;i++){
  39494. _vp_psy_init(b->psy+i,
  39495. ci->psy_param[i],
  39496. &ci->psy_g_param,
  39497. ci->blocksizes[ci->psy_param[i]->blockflag]/2,
  39498. vi->rate);
  39499. }
  39500. v->analysisp=1;
  39501. }else{
  39502. /* finish the codebooks */
  39503. if(!ci->fullbooks){
  39504. ci->fullbooks=_ogg_calloc(ci->books,sizeof(*ci->fullbooks));
  39505. for(i=0;i<ci->books;i++){
  39506. vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i]);
  39507. /* decode codebooks are now standalone after init */
  39508. vorbis_staticbook_destroy(ci->book_param[i]);
  39509. ci->book_param[i]=NULL;
  39510. }
  39511. }
  39512. }
  39513. /* initialize the storage vectors. blocksize[1] is small for encode,
  39514. but the correct size for decode */
  39515. v->pcm_storage=ci->blocksizes[1];
  39516. v->pcm=_ogg_malloc(vi->channels*sizeof(*v->pcm));
  39517. v->pcmret=_ogg_malloc(vi->channels*sizeof(*v->pcmret));
  39518. {
  39519. int i;
  39520. for(i=0;i<vi->channels;i++)
  39521. v->pcm[i]=_ogg_calloc(v->pcm_storage,sizeof(*v->pcm[i]));
  39522. }
  39523. /* all 1 (large block) or 0 (small block) */
  39524. /* explicitly set for the sake of clarity */
  39525. v->lW=0; /* previous window size */
  39526. v->W=0; /* current window size */
  39527. /* all vector indexes */
  39528. v->centerW=ci->blocksizes[1]/2;
  39529. v->pcm_current=v->centerW;
  39530. /* initialize all the backend lookups */
  39531. b->flr=_ogg_calloc(ci->floors,sizeof(*b->flr));
  39532. b->residue=_ogg_calloc(ci->residues,sizeof(*b->residue));
  39533. for(i=0;i<ci->floors;i++)
  39534. b->flr[i]=_floor_P[ci->floor_type[i]]->
  39535. look(v,ci->floor_param[i]);
  39536. for(i=0;i<ci->residues;i++)
  39537. b->residue[i]=_residue_P[ci->residue_type[i]]->
  39538. look(v,ci->residue_param[i]);
  39539. return 0;
  39540. }
  39541. /* arbitrary settings and spec-mandated numbers get filled in here */
  39542. int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi){
  39543. private_state *b=NULL;
  39544. if(_vds_shared_init(v,vi,1))return 1;
  39545. b=v->backend_state;
  39546. b->psy_g_look=_vp_global_look(vi);
  39547. /* Initialize the envelope state storage */
  39548. b->ve=_ogg_calloc(1,sizeof(*b->ve));
  39549. _ve_envelope_init(b->ve,vi);
  39550. vorbis_bitrate_init(vi,&b->bms);
  39551. return(0);
  39552. }
  39553. void vorbis_dsp_clear(vorbis_dsp_state *v){
  39554. int i;
  39555. if(v){
  39556. vorbis_info *vi=v->vi;
  39557. codec_setup_info *ci=(vi?vi->codec_setup:NULL);
  39558. private_state *b=v->backend_state;
  39559. if(b){
  39560. if(b->ve){
  39561. _ve_envelope_clear(b->ve);
  39562. _ogg_free(b->ve);
  39563. }
  39564. if(b->transform[0]){
  39565. mdct_clear(b->transform[0][0]);
  39566. _ogg_free(b->transform[0][0]);
  39567. _ogg_free(b->transform[0]);
  39568. }
  39569. if(b->transform[1]){
  39570. mdct_clear(b->transform[1][0]);
  39571. _ogg_free(b->transform[1][0]);
  39572. _ogg_free(b->transform[1]);
  39573. }
  39574. if(b->flr){
  39575. for(i=0;i<ci->floors;i++)
  39576. _floor_P[ci->floor_type[i]]->
  39577. free_look(b->flr[i]);
  39578. _ogg_free(b->flr);
  39579. }
  39580. if(b->residue){
  39581. for(i=0;i<ci->residues;i++)
  39582. _residue_P[ci->residue_type[i]]->
  39583. free_look(b->residue[i]);
  39584. _ogg_free(b->residue);
  39585. }
  39586. if(b->psy){
  39587. for(i=0;i<ci->psys;i++)
  39588. _vp_psy_clear(b->psy+i);
  39589. _ogg_free(b->psy);
  39590. }
  39591. if(b->psy_g_look)_vp_global_free(b->psy_g_look);
  39592. vorbis_bitrate_clear(&b->bms);
  39593. drft_clear(&b->fft_look[0]);
  39594. drft_clear(&b->fft_look[1]);
  39595. }
  39596. if(v->pcm){
  39597. for(i=0;i<vi->channels;i++)
  39598. if(v->pcm[i])_ogg_free(v->pcm[i]);
  39599. _ogg_free(v->pcm);
  39600. if(v->pcmret)_ogg_free(v->pcmret);
  39601. }
  39602. if(b){
  39603. /* free header, header1, header2 */
  39604. if(b->header)_ogg_free(b->header);
  39605. if(b->header1)_ogg_free(b->header1);
  39606. if(b->header2)_ogg_free(b->header2);
  39607. _ogg_free(b);
  39608. }
  39609. memset(v,0,sizeof(*v));
  39610. }
  39611. }
  39612. float **vorbis_analysis_buffer(vorbis_dsp_state *v, int vals){
  39613. int i;
  39614. vorbis_info *vi=v->vi;
  39615. private_state *b=v->backend_state;
  39616. /* free header, header1, header2 */
  39617. if(b->header)_ogg_free(b->header);b->header=NULL;
  39618. if(b->header1)_ogg_free(b->header1);b->header1=NULL;
  39619. if(b->header2)_ogg_free(b->header2);b->header2=NULL;
  39620. /* Do we have enough storage space for the requested buffer? If not,
  39621. expand the PCM (and envelope) storage */
  39622. if(v->pcm_current+vals>=v->pcm_storage){
  39623. v->pcm_storage=v->pcm_current+vals*2;
  39624. for(i=0;i<vi->channels;i++){
  39625. v->pcm[i]=_ogg_realloc(v->pcm[i],v->pcm_storage*sizeof(*v->pcm[i]));
  39626. }
  39627. }
  39628. for(i=0;i<vi->channels;i++)
  39629. v->pcmret[i]=v->pcm[i]+v->pcm_current;
  39630. return(v->pcmret);
  39631. }
  39632. static void _preextrapolate_helper(vorbis_dsp_state *v){
  39633. int i;
  39634. int order=32;
  39635. float *lpc=alloca(order*sizeof(*lpc));
  39636. float *work=alloca(v->pcm_current*sizeof(*work));
  39637. long j;
  39638. v->preextrapolate=1;
  39639. if(v->pcm_current-v->centerW>order*2){ /* safety */
  39640. for(i=0;i<v->vi->channels;i++){
  39641. /* need to run the extrapolation in reverse! */
  39642. for(j=0;j<v->pcm_current;j++)
  39643. work[j]=v->pcm[i][v->pcm_current-j-1];
  39644. /* prime as above */
  39645. vorbis_lpc_from_data(work,lpc,v->pcm_current-v->centerW,order);
  39646. /* run the predictor filter */
  39647. vorbis_lpc_predict(lpc,work+v->pcm_current-v->centerW-order,
  39648. order,
  39649. work+v->pcm_current-v->centerW,
  39650. v->centerW);
  39651. for(j=0;j<v->pcm_current;j++)
  39652. v->pcm[i][v->pcm_current-j-1]=work[j];
  39653. }
  39654. }
  39655. }
  39656. /* call with val<=0 to set eof */
  39657. int vorbis_analysis_wrote(vorbis_dsp_state *v, int vals){
  39658. vorbis_info *vi=v->vi;
  39659. codec_setup_info *ci=vi->codec_setup;
  39660. if(vals<=0){
  39661. int order=32;
  39662. int i;
  39663. float *lpc=alloca(order*sizeof(*lpc));
  39664. /* if it wasn't done earlier (very short sample) */
  39665. if(!v->preextrapolate)
  39666. _preextrapolate_helper(v);
  39667. /* We're encoding the end of the stream. Just make sure we have
  39668. [at least] a few full blocks of zeroes at the end. */
  39669. /* actually, we don't want zeroes; that could drop a large
  39670. amplitude off a cliff, creating spread spectrum noise that will
  39671. suck to encode. Extrapolate for the sake of cleanliness. */
  39672. vorbis_analysis_buffer(v,ci->blocksizes[1]*3);
  39673. v->eofflag=v->pcm_current;
  39674. v->pcm_current+=ci->blocksizes[1]*3;
  39675. for(i=0;i<vi->channels;i++){
  39676. if(v->eofflag>order*2){
  39677. /* extrapolate with LPC to fill in */
  39678. long n;
  39679. /* make a predictor filter */
  39680. n=v->eofflag;
  39681. if(n>ci->blocksizes[1])n=ci->blocksizes[1];
  39682. vorbis_lpc_from_data(v->pcm[i]+v->eofflag-n,lpc,n,order);
  39683. /* run the predictor filter */
  39684. vorbis_lpc_predict(lpc,v->pcm[i]+v->eofflag-order,order,
  39685. v->pcm[i]+v->eofflag,v->pcm_current-v->eofflag);
  39686. }else{
  39687. /* not enough data to extrapolate (unlikely to happen due to
  39688. guarding the overlap, but bulletproof in case that
  39689. assumtion goes away). zeroes will do. */
  39690. memset(v->pcm[i]+v->eofflag,0,
  39691. (v->pcm_current-v->eofflag)*sizeof(*v->pcm[i]));
  39692. }
  39693. }
  39694. }else{
  39695. if(v->pcm_current+vals>v->pcm_storage)
  39696. return(OV_EINVAL);
  39697. v->pcm_current+=vals;
  39698. /* we may want to reverse extrapolate the beginning of a stream
  39699. too... in case we're beginning on a cliff! */
  39700. /* clumsy, but simple. It only runs once, so simple is good. */
  39701. if(!v->preextrapolate && v->pcm_current-v->centerW>ci->blocksizes[1])
  39702. _preextrapolate_helper(v);
  39703. }
  39704. return(0);
  39705. }
  39706. /* do the deltas, envelope shaping, pre-echo and determine the size of
  39707. the next block on which to continue analysis */
  39708. int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){
  39709. int i;
  39710. vorbis_info *vi=v->vi;
  39711. codec_setup_info *ci=vi->codec_setup;
  39712. private_state *b=v->backend_state;
  39713. vorbis_look_psy_global *g=b->psy_g_look;
  39714. long beginW=v->centerW-ci->blocksizes[v->W]/2,centerNext;
  39715. vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal;
  39716. /* check to see if we're started... */
  39717. if(!v->preextrapolate)return(0);
  39718. /* check to see if we're done... */
  39719. if(v->eofflag==-1)return(0);
  39720. /* By our invariant, we have lW, W and centerW set. Search for
  39721. the next boundary so we can determine nW (the next window size)
  39722. which lets us compute the shape of the current block's window */
  39723. /* we do an envelope search even on a single blocksize; we may still
  39724. be throwing more bits at impulses, and envelope search handles
  39725. marking impulses too. */
  39726. {
  39727. long bp=_ve_envelope_search(v);
  39728. if(bp==-1){
  39729. if(v->eofflag==0)return(0); /* not enough data currently to search for a
  39730. full long block */
  39731. v->nW=0;
  39732. }else{
  39733. if(ci->blocksizes[0]==ci->blocksizes[1])
  39734. v->nW=0;
  39735. else
  39736. v->nW=bp;
  39737. }
  39738. }
  39739. centerNext=v->centerW+ci->blocksizes[v->W]/4+ci->blocksizes[v->nW]/4;
  39740. {
  39741. /* center of next block + next block maximum right side. */
  39742. long blockbound=centerNext+ci->blocksizes[v->nW]/2;
  39743. if(v->pcm_current<blockbound)return(0); /* not enough data yet;
  39744. although this check is
  39745. less strict that the
  39746. _ve_envelope_search,
  39747. the search is not run
  39748. if we only use one
  39749. block size */
  39750. }
  39751. /* fill in the block. Note that for a short window, lW and nW are *short*
  39752. regardless of actual settings in the stream */
  39753. _vorbis_block_ripcord(vb);
  39754. vb->lW=v->lW;
  39755. vb->W=v->W;
  39756. vb->nW=v->nW;
  39757. if(v->W){
  39758. if(!v->lW || !v->nW){
  39759. vbi->blocktype=BLOCKTYPE_TRANSITION;
  39760. /*fprintf(stderr,"-");*/
  39761. }else{
  39762. vbi->blocktype=BLOCKTYPE_LONG;
  39763. /*fprintf(stderr,"_");*/
  39764. }
  39765. }else{
  39766. if(_ve_envelope_mark(v)){
  39767. vbi->blocktype=BLOCKTYPE_IMPULSE;
  39768. /*fprintf(stderr,"|");*/
  39769. }else{
  39770. vbi->blocktype=BLOCKTYPE_PADDING;
  39771. /*fprintf(stderr,".");*/
  39772. }
  39773. }
  39774. vb->vd=v;
  39775. vb->sequence=v->sequence++;
  39776. vb->granulepos=v->granulepos;
  39777. vb->pcmend=ci->blocksizes[v->W];
  39778. /* copy the vectors; this uses the local storage in vb */
  39779. /* this tracks 'strongest peak' for later psychoacoustics */
  39780. /* moved to the global psy state; clean this mess up */
  39781. if(vbi->ampmax>g->ampmax)g->ampmax=vbi->ampmax;
  39782. g->ampmax=_vp_ampmax_decay(g->ampmax,v);
  39783. vbi->ampmax=g->ampmax;
  39784. vb->pcm=_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels);
  39785. vbi->pcmdelay=_vorbis_block_alloc(vb,sizeof(*vbi->pcmdelay)*vi->channels);
  39786. for(i=0;i<vi->channels;i++){
  39787. vbi->pcmdelay[i]=
  39788. _vorbis_block_alloc(vb,(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i]));
  39789. memcpy(vbi->pcmdelay[i],v->pcm[i],(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i]));
  39790. vb->pcm[i]=vbi->pcmdelay[i]+beginW;
  39791. /* before we added the delay
  39792. vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i]));
  39793. memcpy(vb->pcm[i],v->pcm[i]+beginW,ci->blocksizes[v->W]*sizeof(*vb->pcm[i]));
  39794. */
  39795. }
  39796. /* handle eof detection: eof==0 means that we've not yet received EOF
  39797. eof>0 marks the last 'real' sample in pcm[]
  39798. eof<0 'no more to do'; doesn't get here */
  39799. if(v->eofflag){
  39800. if(v->centerW>=v->eofflag){
  39801. v->eofflag=-1;
  39802. vb->eofflag=1;
  39803. return(1);
  39804. }
  39805. }
  39806. /* advance storage vectors and clean up */
  39807. {
  39808. int new_centerNext=ci->blocksizes[1]/2;
  39809. int movementW=centerNext-new_centerNext;
  39810. if(movementW>0){
  39811. _ve_envelope_shift(b->ve,movementW);
  39812. v->pcm_current-=movementW;
  39813. for(i=0;i<vi->channels;i++)
  39814. memmove(v->pcm[i],v->pcm[i]+movementW,
  39815. v->pcm_current*sizeof(*v->pcm[i]));
  39816. v->lW=v->W;
  39817. v->W=v->nW;
  39818. v->centerW=new_centerNext;
  39819. if(v->eofflag){
  39820. v->eofflag-=movementW;
  39821. if(v->eofflag<=0)v->eofflag=-1;
  39822. /* do not add padding to end of stream! */
  39823. if(v->centerW>=v->eofflag){
  39824. v->granulepos+=movementW-(v->centerW-v->eofflag);
  39825. }else{
  39826. v->granulepos+=movementW;
  39827. }
  39828. }else{
  39829. v->granulepos+=movementW;
  39830. }
  39831. }
  39832. }
  39833. /* done */
  39834. return(1);
  39835. }
  39836. int vorbis_synthesis_restart(vorbis_dsp_state *v){
  39837. vorbis_info *vi=v->vi;
  39838. codec_setup_info *ci;
  39839. int hs;
  39840. if(!v->backend_state)return -1;
  39841. if(!vi)return -1;
  39842. ci=vi->codec_setup;
  39843. if(!ci)return -1;
  39844. hs=ci->halfrate_flag;
  39845. v->centerW=ci->blocksizes[1]>>(hs+1);
  39846. v->pcm_current=v->centerW>>hs;
  39847. v->pcm_returned=-1;
  39848. v->granulepos=-1;
  39849. v->sequence=-1;
  39850. v->eofflag=0;
  39851. ((private_state *)(v->backend_state))->sample_count=-1;
  39852. return(0);
  39853. }
  39854. int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi){
  39855. if(_vds_shared_init(v,vi,0)) return 1;
  39856. vorbis_synthesis_restart(v);
  39857. return 0;
  39858. }
  39859. /* Unlike in analysis, the window is only partially applied for each
  39860. block. The time domain envelope is not yet handled at the point of
  39861. calling (as it relies on the previous block). */
  39862. int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
  39863. vorbis_info *vi=v->vi;
  39864. codec_setup_info *ci=vi->codec_setup;
  39865. private_state *b=v->backend_state;
  39866. int hs=ci->halfrate_flag;
  39867. int i,j;
  39868. if(!vb)return(OV_EINVAL);
  39869. if(v->pcm_current>v->pcm_returned && v->pcm_returned!=-1)return(OV_EINVAL);
  39870. v->lW=v->W;
  39871. v->W=vb->W;
  39872. v->nW=-1;
  39873. if((v->sequence==-1)||
  39874. (v->sequence+1 != vb->sequence)){
  39875. v->granulepos=-1; /* out of sequence; lose count */
  39876. b->sample_count=-1;
  39877. }
  39878. v->sequence=vb->sequence;
  39879. if(vb->pcm){ /* no pcm to process if vorbis_synthesis_trackonly
  39880. was called on block */
  39881. int n=ci->blocksizes[v->W]>>(hs+1);
  39882. int n0=ci->blocksizes[0]>>(hs+1);
  39883. int n1=ci->blocksizes[1]>>(hs+1);
  39884. int thisCenter;
  39885. int prevCenter;
  39886. v->glue_bits+=vb->glue_bits;
  39887. v->time_bits+=vb->time_bits;
  39888. v->floor_bits+=vb->floor_bits;
  39889. v->res_bits+=vb->res_bits;
  39890. if(v->centerW){
  39891. thisCenter=n1;
  39892. prevCenter=0;
  39893. }else{
  39894. thisCenter=0;
  39895. prevCenter=n1;
  39896. }
  39897. /* v->pcm is now used like a two-stage double buffer. We don't want
  39898. to have to constantly shift *or* adjust memory usage. Don't
  39899. accept a new block until the old is shifted out */
  39900. for(j=0;j<vi->channels;j++){
  39901. /* the overlap/add section */
  39902. if(v->lW){
  39903. if(v->W){
  39904. /* large/large */
  39905. float *w=_vorbis_window_get(b->window[1]-hs);
  39906. float *pcm=v->pcm[j]+prevCenter;
  39907. float *p=vb->pcm[j];
  39908. for(i=0;i<n1;i++)
  39909. pcm[i]=pcm[i]*w[n1-i-1] + p[i]*w[i];
  39910. }else{
  39911. /* large/small */
  39912. float *w=_vorbis_window_get(b->window[0]-hs);
  39913. float *pcm=v->pcm[j]+prevCenter+n1/2-n0/2;
  39914. float *p=vb->pcm[j];
  39915. for(i=0;i<n0;i++)
  39916. pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
  39917. }
  39918. }else{
  39919. if(v->W){
  39920. /* small/large */
  39921. float *w=_vorbis_window_get(b->window[0]-hs);
  39922. float *pcm=v->pcm[j]+prevCenter;
  39923. float *p=vb->pcm[j]+n1/2-n0/2;
  39924. for(i=0;i<n0;i++)
  39925. pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
  39926. for(;i<n1/2+n0/2;i++)
  39927. pcm[i]=p[i];
  39928. }else{
  39929. /* small/small */
  39930. float *w=_vorbis_window_get(b->window[0]-hs);
  39931. float *pcm=v->pcm[j]+prevCenter;
  39932. float *p=vb->pcm[j];
  39933. for(i=0;i<n0;i++)
  39934. pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
  39935. }
  39936. }
  39937. /* the copy section */
  39938. {
  39939. float *pcm=v->pcm[j]+thisCenter;
  39940. float *p=vb->pcm[j]+n;
  39941. for(i=0;i<n;i++)
  39942. pcm[i]=p[i];
  39943. }
  39944. }
  39945. if(v->centerW)
  39946. v->centerW=0;
  39947. else
  39948. v->centerW=n1;
  39949. /* deal with initial packet state; we do this using the explicit
  39950. pcm_returned==-1 flag otherwise we're sensitive to first block
  39951. being short or long */
  39952. if(v->pcm_returned==-1){
  39953. v->pcm_returned=thisCenter;
  39954. v->pcm_current=thisCenter;
  39955. }else{
  39956. v->pcm_returned=prevCenter;
  39957. v->pcm_current=prevCenter+
  39958. ((ci->blocksizes[v->lW]/4+
  39959. ci->blocksizes[v->W]/4)>>hs);
  39960. }
  39961. }
  39962. /* track the frame number... This is for convenience, but also
  39963. making sure our last packet doesn't end with added padding. If
  39964. the last packet is partial, the number of samples we'll have to
  39965. return will be past the vb->granulepos.
  39966. This is not foolproof! It will be confused if we begin
  39967. decoding at the last page after a seek or hole. In that case,
  39968. we don't have a starting point to judge where the last frame
  39969. is. For this reason, vorbisfile will always try to make sure
  39970. it reads the last two marked pages in proper sequence */
  39971. if(b->sample_count==-1){
  39972. b->sample_count=0;
  39973. }else{
  39974. b->sample_count+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4;
  39975. }
  39976. if(v->granulepos==-1){
  39977. if(vb->granulepos!=-1){ /* only set if we have a position to set to */
  39978. v->granulepos=vb->granulepos;
  39979. /* is this a short page? */
  39980. if(b->sample_count>v->granulepos){
  39981. /* corner case; if this is both the first and last audio page,
  39982. then spec says the end is cut, not beginning */
  39983. if(vb->eofflag){
  39984. /* trim the end */
  39985. /* no preceeding granulepos; assume we started at zero (we'd
  39986. have to in a short single-page stream) */
  39987. /* granulepos could be -1 due to a seek, but that would result
  39988. in a long count, not short count */
  39989. v->pcm_current-=(b->sample_count-v->granulepos)>>hs;
  39990. }else{
  39991. /* trim the beginning */
  39992. v->pcm_returned+=(b->sample_count-v->granulepos)>>hs;
  39993. if(v->pcm_returned>v->pcm_current)
  39994. v->pcm_returned=v->pcm_current;
  39995. }
  39996. }
  39997. }
  39998. }else{
  39999. v->granulepos+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4;
  40000. if(vb->granulepos!=-1 && v->granulepos!=vb->granulepos){
  40001. if(v->granulepos>vb->granulepos){
  40002. long extra=v->granulepos-vb->granulepos;
  40003. if(extra)
  40004. if(vb->eofflag){
  40005. /* partial last frame. Strip the extra samples off */
  40006. v->pcm_current-=extra>>hs;
  40007. } /* else {Shouldn't happen *unless* the bitstream is out of
  40008. spec. Either way, believe the bitstream } */
  40009. } /* else {Shouldn't happen *unless* the bitstream is out of
  40010. spec. Either way, believe the bitstream } */
  40011. v->granulepos=vb->granulepos;
  40012. }
  40013. }
  40014. /* Update, cleanup */
  40015. if(vb->eofflag)v->eofflag=1;
  40016. return(0);
  40017. }
  40018. /* pcm==NULL indicates we just want the pending samples, no more */
  40019. int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm){
  40020. vorbis_info *vi=v->vi;
  40021. if(v->pcm_returned>-1 && v->pcm_returned<v->pcm_current){
  40022. if(pcm){
  40023. int i;
  40024. for(i=0;i<vi->channels;i++)
  40025. v->pcmret[i]=v->pcm[i]+v->pcm_returned;
  40026. *pcm=v->pcmret;
  40027. }
  40028. return(v->pcm_current-v->pcm_returned);
  40029. }
  40030. return(0);
  40031. }
  40032. int vorbis_synthesis_read(vorbis_dsp_state *v,int n){
  40033. if(n && v->pcm_returned+n>v->pcm_current)return(OV_EINVAL);
  40034. v->pcm_returned+=n;
  40035. return(0);
  40036. }
  40037. /* intended for use with a specific vorbisfile feature; we want access
  40038. to the [usually synthetic/postextrapolated] buffer and lapping at
  40039. the end of a decode cycle, specifically, a half-short-block worth.
  40040. This funtion works like pcmout above, except it will also expose
  40041. this implicit buffer data not normally decoded. */
  40042. int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm){
  40043. vorbis_info *vi=v->vi;
  40044. codec_setup_info *ci=vi->codec_setup;
  40045. int hs=ci->halfrate_flag;
  40046. int n=ci->blocksizes[v->W]>>(hs+1);
  40047. int n0=ci->blocksizes[0]>>(hs+1);
  40048. int n1=ci->blocksizes[1]>>(hs+1);
  40049. int i,j;
  40050. if(v->pcm_returned<0)return 0;
  40051. /* our returned data ends at pcm_returned; because the synthesis pcm
  40052. buffer is a two-fragment ring, that means our data block may be
  40053. fragmented by buffering, wrapping or a short block not filling
  40054. out a buffer. To simplify things, we unfragment if it's at all
  40055. possibly needed. Otherwise, we'd need to call lapout more than
  40056. once as well as hold additional dsp state. Opt for
  40057. simplicity. */
  40058. /* centerW was advanced by blockin; it would be the center of the
  40059. *next* block */
  40060. if(v->centerW==n1){
  40061. /* the data buffer wraps; swap the halves */
  40062. /* slow, sure, small */
  40063. for(j=0;j<vi->channels;j++){
  40064. float *p=v->pcm[j];
  40065. for(i=0;i<n1;i++){
  40066. float temp=p[i];
  40067. p[i]=p[i+n1];
  40068. p[i+n1]=temp;
  40069. }
  40070. }
  40071. v->pcm_current-=n1;
  40072. v->pcm_returned-=n1;
  40073. v->centerW=0;
  40074. }
  40075. /* solidify buffer into contiguous space */
  40076. if((v->lW^v->W)==1){
  40077. /* long/short or short/long */
  40078. for(j=0;j<vi->channels;j++){
  40079. float *s=v->pcm[j];
  40080. float *d=v->pcm[j]+(n1-n0)/2;
  40081. for(i=(n1+n0)/2-1;i>=0;--i)
  40082. d[i]=s[i];
  40083. }
  40084. v->pcm_returned+=(n1-n0)/2;
  40085. v->pcm_current+=(n1-n0)/2;
  40086. }else{
  40087. if(v->lW==0){
  40088. /* short/short */
  40089. for(j=0;j<vi->channels;j++){
  40090. float *s=v->pcm[j];
  40091. float *d=v->pcm[j]+n1-n0;
  40092. for(i=n0-1;i>=0;--i)
  40093. d[i]=s[i];
  40094. }
  40095. v->pcm_returned+=n1-n0;
  40096. v->pcm_current+=n1-n0;
  40097. }
  40098. }
  40099. if(pcm){
  40100. int i;
  40101. for(i=0;i<vi->channels;i++)
  40102. v->pcmret[i]=v->pcm[i]+v->pcm_returned;
  40103. *pcm=v->pcmret;
  40104. }
  40105. return(n1+n-v->pcm_returned);
  40106. }
  40107. float *vorbis_window(vorbis_dsp_state *v,int W){
  40108. vorbis_info *vi=v->vi;
  40109. codec_setup_info *ci=vi->codec_setup;
  40110. int hs=ci->halfrate_flag;
  40111. private_state *b=v->backend_state;
  40112. if(b->window[W]-1<0)return NULL;
  40113. return _vorbis_window_get(b->window[W]-hs);
  40114. }
  40115. /********************************************************************
  40116. * *
  40117. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  40118. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  40119. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  40120. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  40121. * *
  40122. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  40123. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  40124. * *
  40125. ********************************************************************
  40126. function: single-block PCM analysis mode dispatch
  40127. last mod: $Id: analysis.c,v 1.55 2002/07/11 06:40:48 xiphmont Exp $
  40128. ********************************************************************/
  40129. /********************************************************************
  40130. * *
  40131. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  40132. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  40133. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  40134. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  40135. * *
  40136. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  40137. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  40138. * *
  40139. ********************************************************************
  40140. function: linear scale -> dB, Bark and Mel scales
  40141. last mod: $Id: scales.h,v 1.26 2002/07/11 06:40:50 xiphmont Exp $
  40142. ********************************************************************/
  40143. #define _V_SCALES_H_
  40144. /* 20log10(x) */
  40145. #define VORBIS_IEEE_FLOAT32 1
  40146. #ifdef VORBIS_IEEE_FLOAT32
  40147. static float unitnorm(float x){
  40148. ogg_uint32_t *ix=(ogg_uint32_t *)&x;
  40149. *ix=(*ix&0x80000000UL)|(0x3f800000UL);
  40150. return(x);
  40151. }
  40152. float FABS(float *x){
  40153. ogg_uint32_t *ix=(ogg_uint32_t *)x;
  40154. *ix&=0x7fffffffUL;
  40155. return(*x);
  40156. }
  40157. static float todB(const float *x){
  40158. float calc;
  40159. ogg_int32_t *i=(ogg_int32_t *)x;
  40160. calc = ((*i) & 0x7fffffff);
  40161. calc *= 7.1771144e-7f;
  40162. calc += -764.27118f;
  40163. return calc;
  40164. }
  40165. #define todB_nn(x) todB(x)
  40166. #else
  40167. static float unitnorm(float x){
  40168. if(x<0)return(-1.f);
  40169. return(1.f);
  40170. }
  40171. #define FABS(x) fabs(*(x))
  40172. #define todB(x) (*(x)==0?-400.f:log(*(x)**(x))*4.34294480f)
  40173. #define todB_nn(x) (*(x)==0.f?-400.f:log(*(x))*8.6858896f)
  40174. #endif
  40175. #define fromdB(x) (exp((x)*.11512925f))
  40176. /* The bark scale equations are approximations, since the original
  40177. table was somewhat hand rolled. The below are chosen to have the
  40178. best possible fit to the rolled tables, thus their somewhat odd
  40179. appearance (these are more accurate and over a longer range than
  40180. the oft-quoted bark equations found in the texts I have). The
  40181. approximations are valid from 0 - 30kHz (nyquist) or so.
  40182. all f in Hz, z in Bark */
  40183. #define toBARK(n) (13.1f*atan(.00074f*(n))+2.24f*atan((n)*(n)*1.85e-8f)+1e-4f*(n))
  40184. #define fromBARK(z) (102.f*(z)-2.f*pow(z,2.f)+.4f*pow(z,3.f)+pow(1.46f,z)-1.f)
  40185. #define toMEL(n) (log(1.f+(n)*.001f)*1442.695f)
  40186. #define fromMEL(m) (1000.f*exp((m)/1442.695f)-1000.f)
  40187. /* Frequency to octave. We arbitrarily declare 63.5 Hz to be octave
  40188. 0.0 */
  40189. #define toOC(n) (log(n)*1.442695f-5.965784f)
  40190. #define fromOC(o) (exp(((o)+5.965784f)*.693147f))
  40191. int analysis_noisy=1;
  40192. /* decides between modes, dispatches to the appropriate mapping. */
  40193. int vorbis_analysis(vorbis_block *vb, ogg_packet *op){
  40194. int ret;
  40195. vb->glue_bits=0;
  40196. vb->time_bits=0;
  40197. vb->floor_bits=0;
  40198. vb->res_bits=0;
  40199. /* first things first. Make sure encode is ready */
  40200. oggpack_reset(&vb->opb);
  40201. /* we only have one mapping type (0), and we let the mapping code
  40202. itself figure out what soft mode to use. This allows easier
  40203. bitrate management */
  40204. if((ret=_mapping_P[0]->forward(vb)))
  40205. return(ret);
  40206. if(op){
  40207. if(vorbis_bitrate_managed(vb))
  40208. /* The app is using a bitmanaged mode... but not using the
  40209. bitrate management interface. */
  40210. return(OV_EINVAL);
  40211. op->packet=oggpack_get_buffer(&vb->opb);
  40212. op->bytes=oggpack_bytes(&vb->opb);
  40213. op->b_o_s=0;
  40214. op->e_o_s=vb->eofflag;
  40215. op->granulepos=vb->granulepos;
  40216. op->packetno=vb->sequence; /* for sake of completeness */
  40217. }
  40218. return(0);
  40219. }
  40220. /* there was no great place to put this.... */
  40221. void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB,ogg_int64_t off){
  40222. int j;
  40223. FILE *of;
  40224. char buffer[80];
  40225. /* if(i==5870){*/
  40226. sprintf(buffer,"%s_%d.m",base,i);
  40227. of=fopen(buffer,"w");
  40228. if(!of)perror("failed to open data dump file");
  40229. for(j=0;j<n;j++){
  40230. if(bark){
  40231. float b=toBARK((4000.f*j/n)+.25);
  40232. fprintf(of,"%f ",b);
  40233. }else
  40234. if(off!=0)
  40235. fprintf(of,"%f ",(double)(j+off)/8000.);
  40236. else
  40237. fprintf(of,"%f ",(double)j);
  40238. if(dB){
  40239. float val;
  40240. if(v[j]==0.)
  40241. val=-140.;
  40242. else
  40243. val=todB(v+j);
  40244. fprintf(of,"%f\n",val);
  40245. }else{
  40246. fprintf(of,"%f\n",v[j]);
  40247. }
  40248. }
  40249. fclose(of);
  40250. /* } */
  40251. }
  40252. void _analysis_output(char *base,int i,float *v,int n,int bark,int dB,
  40253. ogg_int64_t off){
  40254. if(analysis_noisy)_analysis_output_always(base,i,v,n,bark,dB,off);
  40255. }
  40256. /********************************************************************
  40257. * *
  40258. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  40259. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  40260. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  40261. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  40262. * *
  40263. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  40264. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  40265. * *
  40266. ********************************************************************
  40267. function: bitrate tracking and management
  40268. last mod: $Id: bitrate.c,v 1.21 2002/10/11 11:14:41 xiphmont Exp $
  40269. ********************************************************************/
  40270. static long BINBYTES(bitrate_manager_state *bm,long pos,long bin){
  40271. int bins=bm->queue_bins;
  40272. return(bm->queue_binned[pos*bins+bin]);
  40273. }
  40274. #define LIMITBYTES(pos,bin) (bm->minmax_binstack[(pos)*bins*2+((bin)+bins)])
  40275. static long LACING_ADJUST(long bytes){
  40276. int addto=bytes/255+1;
  40277. return(bytes+addto);
  40278. }
  40279. static int floater_interpolate(bitrate_manager_state *bm,vorbis_info *vi,
  40280. double desired_rate){
  40281. int bin=rint(bm->avgfloat);
  40282. double lobitrate,hibitrate;
  40283. lobitrate=(double)(bm->avg_binacc[bin]*8)/bm->avg_sampleacc*vi->rate;
  40284. while(lobitrate>desired_rate && bin>0){
  40285. bin--;
  40286. lobitrate=(double)(bm->avg_binacc[bin]*8)/bm->avg_sampleacc*vi->rate;
  40287. }
  40288. if(bin+1<bm->queue_bins){
  40289. hibitrate=(double)(bm->avg_binacc[bin+1]*8)/bm->avg_sampleacc*vi->rate;
  40290. if(fabs(hibitrate-desired_rate) < fabs(lobitrate-desired_rate))bin++;
  40291. }
  40292. return(bin);
  40293. }
  40294. /* try out a new limit */
  40295. static long limit_sum(bitrate_manager_state *bm,int limit){
  40296. int i=bm->minmax_stackptr;
  40297. long acc=bm->minmax_acctotal;
  40298. long bins=bm->queue_bins;
  40299. acc-=LIMITBYTES(i,0);
  40300. acc+=LIMITBYTES(i,limit);
  40301. while(i-->0){
  40302. if(bm->minmax_limitstack[i]<=limit)break;
  40303. acc-=LIMITBYTES(i,bm->minmax_limitstack[i]);
  40304. acc+=LIMITBYTES(i,limit);
  40305. }
  40306. return(acc);
  40307. }
  40308. /* compute bitrate tracking setup, allocate circular packet size queue */
  40309. void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bm){
  40310. int i;
  40311. codec_setup_info *ci=vi->codec_setup;
  40312. bitrate_manager_info *bi=&ci->bi;
  40313. long maxlatency;
  40314. memset(bm,0,sizeof(*bm));
  40315. if(bi){
  40316. bm->avg_sampledesired=bi->queue_avg_time*vi->rate;
  40317. bm->avg_centerdesired=bi->queue_avg_time*vi->rate*bi->queue_avg_center;
  40318. bm->minmax_sampledesired=bi->queue_minmax_time*vi->rate;
  40319. /* first find the max possible needed queue size */
  40320. maxlatency=max(bm->avg_sampledesired-bm->avg_centerdesired,
  40321. bm->minmax_sampledesired)+bm->avg_centerdesired;
  40322. if(maxlatency>0 &&
  40323. (bi->queue_avgmin>0 || bi->queue_avgmax>0 || bi->queue_hardmax>0 ||
  40324. bi->queue_hardmin>0)){
  40325. long maxpackets=maxlatency/(ci->blocksizes[0]>>1)+3;
  40326. long bins=PACKETBLOBS;
  40327. bm->queue_size=maxpackets;
  40328. bm->queue_bins=bins;
  40329. bm->queue_binned=_ogg_calloc(maxpackets,bins*sizeof(*bm->queue_binned));
  40330. bm->queue_actual=_ogg_calloc(maxpackets,sizeof(*bm->queue_actual));
  40331. if((bi->queue_avgmin>0 || bi->queue_avgmax>0) &&
  40332. bi->queue_avg_time>0){
  40333. bm->avg_binacc=_ogg_calloc(bins,sizeof(*bm->avg_binacc));
  40334. bm->avgfloat=PACKETBLOBS/2;
  40335. }else{
  40336. bm->avg_tail= -1;
  40337. }
  40338. if((bi->queue_hardmin>0 || bi->queue_hardmax>0) &&
  40339. bi->queue_minmax_time>0){
  40340. bm->minmax_binstack=_ogg_calloc((bins*2+1)*bins*2,
  40341. sizeof(*bm->minmax_binstack));
  40342. bm->minmax_posstack=_ogg_calloc((bins*2+1),
  40343. sizeof(*bm->minmax_posstack));
  40344. bm->minmax_limitstack=_ogg_calloc((bins*2+1),
  40345. sizeof(*bm->minmax_limitstack));
  40346. }else{
  40347. bm->minmax_tail= -1;
  40348. }
  40349. /* space for the packet queueing */
  40350. bm->packetbuffers=_ogg_calloc(maxpackets,sizeof(*bm->packetbuffers));
  40351. bm->packets=_ogg_calloc(maxpackets,sizeof(*bm->packets));
  40352. for(i=0;i<maxpackets;i++)
  40353. oggpack_writeinit(bm->packetbuffers+i);
  40354. }else{
  40355. bm->packetbuffers=_ogg_calloc(1,sizeof(*bm->packetbuffers));
  40356. bm->packets=_ogg_calloc(1,sizeof(*bm->packets));
  40357. oggpack_writeinit(bm->packetbuffers);
  40358. }
  40359. }
  40360. }
  40361. void vorbis_bitrate_clear(bitrate_manager_state *bm){
  40362. int i;
  40363. if(bm){
  40364. if(bm->queue_binned)_ogg_free(bm->queue_binned);
  40365. if(bm->queue_actual)_ogg_free(bm->queue_actual);
  40366. if(bm->avg_binacc)_ogg_free(bm->avg_binacc);
  40367. if(bm->minmax_binstack)_ogg_free(bm->minmax_binstack);
  40368. if(bm->minmax_posstack)_ogg_free(bm->minmax_posstack);
  40369. if(bm->minmax_limitstack)_ogg_free(bm->minmax_limitstack);
  40370. if(bm->packetbuffers){
  40371. if(bm->queue_size==0){
  40372. oggpack_writeclear(bm->packetbuffers);
  40373. }else{
  40374. for(i=0;i<bm->queue_size;i++)
  40375. oggpack_writeclear(bm->packetbuffers+i);
  40376. }
  40377. _ogg_free(bm->packetbuffers);
  40378. }
  40379. if(bm->packets)_ogg_free(bm->packets);
  40380. memset(bm,0,sizeof(*bm));
  40381. }
  40382. }
  40383. int vorbis_bitrate_managed(vorbis_block *vb){
  40384. vorbis_dsp_state *vd=vb->vd;
  40385. private_state *b=vd->backend_state;
  40386. bitrate_manager_state *bm=&b->bms;
  40387. if(bm->queue_binned)return(1);
  40388. return(0);
  40389. }
  40390. /* finish taking in the block we just processed */
  40391. int vorbis_bitrate_addblock(vorbis_block *vb){
  40392. int i;
  40393. vorbis_block_internal *vbi=vb->internal;
  40394. vorbis_dsp_state *vd=vb->vd;
  40395. private_state *b=vd->backend_state;
  40396. bitrate_manager_state *bm=&b->bms;
  40397. vorbis_info *vi=vd->vi;
  40398. codec_setup_info *ci=vi->codec_setup;
  40399. bitrate_manager_info *bi=&ci->bi;
  40400. int eofflag=vb->eofflag;
  40401. int head=bm->queue_head;
  40402. int next_head=head+1;
  40403. int bins=bm->queue_bins;
  40404. int minmax_head,new_minmax_head;
  40405. ogg_uint32_t *head_ptr;
  40406. oggpack_buffer temp;
  40407. if(!bm->queue_binned){
  40408. oggpack_buffer temp;
  40409. /* not a bitrate managed stream, but for API simplicity, we'll
  40410. buffer one packet to keep the code path clean */
  40411. if(bm->queue_head)return(-1); /* one has been submitted without
  40412. being claimed */
  40413. bm->queue_head++;
  40414. bm->packets[0].packet=oggpack_get_buffer(&vb->opb);
  40415. bm->packets[0].bytes=oggpack_bytes(&vb->opb);
  40416. bm->packets[0].b_o_s=0;
  40417. bm->packets[0].e_o_s=vb->eofflag;
  40418. bm->packets[0].granulepos=vb->granulepos;
  40419. bm->packets[0].packetno=vb->sequence; /* for sake of completeness */
  40420. memcpy(&temp,bm->packetbuffers,sizeof(vb->opb));
  40421. memcpy(bm->packetbuffers,&vb->opb,sizeof(vb->opb));
  40422. memcpy(&vb->opb,&temp,sizeof(vb->opb));
  40423. return(0);
  40424. }
  40425. /* add encoded packet to head */
  40426. if(next_head>=bm->queue_size)next_head=0;
  40427. head_ptr=bm->queue_binned+bins*head;
  40428. /* is there room to add a block? In proper use of the API, this will
  40429. never come up... but guard it anyway */
  40430. if(next_head==bm->avg_tail || next_head==bm->minmax_tail)return(-1);
  40431. /* add the block to the toplevel queue */
  40432. bm->queue_head=next_head;
  40433. bm->queue_actual[head]=(vb->W?0x80000000UL:0);
  40434. /* buffer packet fields */
  40435. bm->packets[head].packet=oggpack_get_buffer(&vb->opb);
  40436. bm->packets[head].bytes=oggpack_bytes(&vb->opb);
  40437. bm->packets[head].b_o_s=0;
  40438. bm->packets[head].e_o_s=vb->eofflag;
  40439. bm->packets[head].granulepos=vb->granulepos;
  40440. bm->packets[head].packetno=vb->sequence; /* for sake of completeness */
  40441. /* swap packet buffers */
  40442. memcpy(&temp,bm->packetbuffers+head,sizeof(vb->opb));
  40443. memcpy(bm->packetbuffers+head,&vb->opb,sizeof(vb->opb));
  40444. memcpy(&vb->opb,&temp,sizeof(vb->opb));
  40445. /* save markers */
  40446. head_ptr[0]=vbi->packetblob_markers[0];
  40447. for(i=1;i<PACKETBLOBS;i++){
  40448. head_ptr[i]=vbi->packetblob_markers[i]-vbi->packetblob_markers[i-1];
  40449. }
  40450. if(bm->avg_binacc)
  40451. new_minmax_head=minmax_head=bm->avg_center;
  40452. else
  40453. new_minmax_head=minmax_head=head;
  40454. /* the average tracking queue is updated first; its results (if it's
  40455. in use) are taken into account by the min/max limiter (if min/max
  40456. is in use) */
  40457. if(bm->avg_binacc){
  40458. unsigned long desired_center=bm->avg_centerdesired;
  40459. if(eofflag)desired_center=0;
  40460. /* update the avg head */
  40461. for(i=0;i<bins;i++)
  40462. bm->avg_binacc[i]+=LACING_ADJUST(head_ptr[i]);
  40463. bm->avg_sampleacc+=ci->blocksizes[vb->W]>>1;
  40464. bm->avg_centeracc+=ci->blocksizes[vb->W]>>1;
  40465. if(bm->avg_sampleacc>bm->avg_sampledesired || eofflag){
  40466. /* update the avg center */
  40467. if(bm->avg_centeracc>desired_center){
  40468. /* choose the new average floater */
  40469. int samples=ci->blocksizes[vb->W]>>1;
  40470. double upper=floater_interpolate(bm,vi,bi->queue_avgmax);
  40471. double lower=floater_interpolate(bm,vi,bi->queue_avgmin);
  40472. double new=PACKETBLOBS/2.,slew;
  40473. int bin;
  40474. if(upper<new)new=upper;
  40475. if(lower>new)new=lower;
  40476. slew=(new-bm->avgfloat)/samples*vi->rate;
  40477. if(slew<bi->avgfloat_downslew_max)
  40478. new=bm->avgfloat+bi->avgfloat_downslew_max/vi->rate*samples;
  40479. if(slew>bi->avgfloat_upslew_max)
  40480. new=bm->avgfloat+bi->avgfloat_upslew_max/vi->rate*samples;
  40481. bm->avgfloat=new;
  40482. /* apply the average floater to new blocks */
  40483. bin=rint(bm->avgfloat);
  40484. /*fprintf(stderr,"%d ",bin);*/
  40485. while(bm->avg_centeracc>desired_center){
  40486. samples=ci->blocksizes[bm->queue_actual[bm->avg_center]&
  40487. 0x80000000UL?1:0]>>1;
  40488. bm->queue_actual[bm->avg_center]|=bin;
  40489. bm->avg_centeracc-=samples;
  40490. bm->avg_center++;
  40491. if(bm->avg_center>=bm->queue_size)bm->avg_center=0;
  40492. }
  40493. new_minmax_head=bm->avg_center;
  40494. }
  40495. /* update the avg tail if needed */
  40496. while(bm->avg_sampleacc>bm->avg_sampledesired){
  40497. int samples=
  40498. ci->blocksizes[bm->queue_actual[bm->avg_tail]&0x80000000UL?1:0]>>1;
  40499. for(i=0;i<bm->queue_bins;i++)
  40500. bm->avg_binacc[i]-=LACING_ADJUST(bm->queue_binned[bins*bm->avg_tail+i]);
  40501. bm->avg_sampleacc-=samples;
  40502. bm->avg_tail++;
  40503. if(bm->avg_tail>=bm->queue_size)bm->avg_tail=0;
  40504. }
  40505. }
  40506. }else{
  40507. /* if we're not using an average tracker, the 'float' is nailed to
  40508. the avgfloat_initial value. It needs to be set for the min/max
  40509. to deal properly */
  40510. long bin=PACKETBLOBS/2;
  40511. bm->queue_actual[head]|=bin;
  40512. new_minmax_head=next_head;
  40513. }
  40514. /* update the min/max queues and enforce limits */
  40515. if(bm->minmax_binstack){
  40516. unsigned long sampledesired=eofflag?0:bm->minmax_sampledesired;
  40517. /* add to stack recent */
  40518. while(minmax_head!=new_minmax_head){
  40519. unsigned int i;
  40520. int samples=ci->blocksizes[bm->queue_actual[minmax_head]&
  40521. 0x80000000UL?1:0]>>1;
  40522. int actual=bm->queue_actual[minmax_head]&0x7fffffffUL;
  40523. for(i=0;i<(unsigned int)bins;i++){
  40524. bm->minmax_binstack[bm->minmax_stackptr*bins*2+bins+i]+=
  40525. LACING_ADJUST(BINBYTES(bm,minmax_head,
  40526. actual>i?actual:i));
  40527. bm->minmax_binstack[bm->minmax_stackptr*bins*2+i]+=
  40528. LACING_ADJUST(BINBYTES(bm,minmax_head,
  40529. actual<i?actual:i));
  40530. }
  40531. bm->minmax_posstack[bm->minmax_stackptr]=minmax_head; /* not one
  40532. past
  40533. like
  40534. typical */
  40535. bm->minmax_limitstack[bm->minmax_stackptr]=0;
  40536. bm->minmax_sampleacc+=samples;
  40537. bm->minmax_acctotal+=
  40538. LACING_ADJUST(BINBYTES(bm,minmax_head,actual));
  40539. minmax_head++;
  40540. if(minmax_head>=bm->queue_size)minmax_head=0;
  40541. }
  40542. /* check limits, enforce changes */
  40543. if(bm->minmax_sampleacc>sampledesired){
  40544. double bitrate=(double)(bm->minmax_acctotal*8)/
  40545. bm->minmax_sampleacc*vi->rate;
  40546. int limit=0;
  40547. if((bi->queue_hardmax>0 && bitrate>bi->queue_hardmax) ||
  40548. (bi->queue_hardmin>0 && bitrate<bi->queue_hardmin)){
  40549. int newstack;
  40550. int stackctr;
  40551. long bitsum=bm->minmax_acctotal*8;
  40552. bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate;
  40553. /* we're off rate. Iteratively try out new hard floater
  40554. limits until we find one that brings us inside. Here's
  40555. where we see the whole point of the limit stacks. */
  40556. if(bi->queue_hardmax>0 && bitrate>bi->queue_hardmax){
  40557. for(limit=-1;limit>-bins+1;limit--){
  40558. long bitsum=limit_sum(bm,limit)*8;
  40559. bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate;
  40560. if(bitrate<=bi->queue_hardmax)break;
  40561. }
  40562. }else if(bitrate<bi->queue_hardmin){
  40563. for(limit=1;limit<bins-1;limit++){
  40564. long bitsum=limit_sum(bm,limit)*8;
  40565. bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate;
  40566. if(bitrate>=bi->queue_hardmin)break;
  40567. }
  40568. if(bitrate>bi->queue_hardmax)limit--;
  40569. }
  40570. /* trace the limit backward, stop when we see a lower limit */
  40571. newstack=bm->minmax_stackptr-1;
  40572. while(newstack>=0){
  40573. if(bm->minmax_limitstack[newstack]<limit)break;
  40574. newstack--;
  40575. }
  40576. /* update bit counter with new limit and replace any stack
  40577. limits that have been replaced by our new lower limit */
  40578. stackctr=bm->minmax_stackptr;
  40579. while(stackctr>newstack){
  40580. bm->minmax_acctotal-=
  40581. LIMITBYTES(stackctr,bm->minmax_limitstack[stackctr]);
  40582. bm->minmax_acctotal+=LIMITBYTES(stackctr,limit);
  40583. if(stackctr<bm->minmax_stackptr)
  40584. for(i=0;i<bins*2;i++)
  40585. bm->minmax_binstack[stackctr*bins*2+i]+=
  40586. bm->minmax_binstack[(stackctr+1)*bins*2+i];
  40587. stackctr--;
  40588. }
  40589. stackctr++;
  40590. bm->minmax_posstack[stackctr]=bm->minmax_posstack[bm->minmax_stackptr];
  40591. bm->minmax_limitstack[stackctr]=limit;
  40592. /* set up new blank stack entry */
  40593. stackctr++;
  40594. bm->minmax_stackptr=stackctr;
  40595. memset(&bm->minmax_binstack[stackctr*bins*2],
  40596. 0,
  40597. sizeof(*bm->minmax_binstack)*bins*2);
  40598. bm->minmax_limitstack[stackctr]=0;
  40599. bm->minmax_posstack[stackctr]=-1;
  40600. }
  40601. }
  40602. /* remove from tail */
  40603. while(bm->minmax_sampleacc>sampledesired){
  40604. int samples=
  40605. ci->blocksizes[bm->queue_actual[bm->minmax_tail]&0x80000000UL?1:0]>>1;
  40606. int actual=bm->queue_actual[bm->minmax_tail]&0x7fffffffUL;
  40607. for(i=0;i<bins;i++){
  40608. bm->minmax_binstack[bins+i]-= /* always comes off the stack bottom */
  40609. LACING_ADJUST(BINBYTES(bm,bm->minmax_tail,
  40610. actual>i?
  40611. actual:i));
  40612. bm->minmax_binstack[i]-=
  40613. LACING_ADJUST(BINBYTES(bm,bm->minmax_tail,
  40614. actual<i?
  40615. actual:i));
  40616. }
  40617. if(bm->minmax_limitstack[0]>actual)
  40618. actual=bm->minmax_limitstack[0];
  40619. if(bins+bm->minmax_limitstack[0]<actual)
  40620. actual=bins+bm->minmax_limitstack[0];
  40621. bm->minmax_acctotal-=LACING_ADJUST(BINBYTES(bm,bm->minmax_tail,actual));
  40622. bm->minmax_sampleacc-=samples;
  40623. /* revise queue_actual to reflect the limit */
  40624. bm->queue_actual[bm->minmax_tail]&=0x80000000UL;
  40625. bm->queue_actual[bm->minmax_tail]|=actual;
  40626. if(bm->minmax_tail==bm->minmax_posstack[0]){
  40627. /* the stack becomes a FIFO; the first data has fallen off */
  40628. memmove(bm->minmax_binstack,bm->minmax_binstack+bins*2,
  40629. sizeof(*bm->minmax_binstack)*bins*2*bm->minmax_stackptr);
  40630. memmove(bm->minmax_posstack,bm->minmax_posstack+1,
  40631. sizeof(*bm->minmax_posstack)*bm->minmax_stackptr);
  40632. memmove(bm->minmax_limitstack,bm->minmax_limitstack+1,
  40633. sizeof(*bm->minmax_limitstack)*bm->minmax_stackptr);
  40634. bm->minmax_stackptr--;
  40635. }
  40636. bm->minmax_tail++;
  40637. if(bm->minmax_tail>=bm->queue_size)bm->minmax_tail=0;
  40638. }
  40639. bm->last_to_flush=bm->minmax_tail;
  40640. }else{
  40641. bm->last_to_flush=bm->avg_center;
  40642. }
  40643. if(eofflag)
  40644. bm->last_to_flush=bm->queue_head;
  40645. return(0);
  40646. }
  40647. int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,ogg_packet *op){
  40648. private_state *b=vd->backend_state;
  40649. bitrate_manager_state *bm=&b->bms;
  40650. if(bm->queue_size==0){
  40651. if(bm->queue_head==0)return(0);
  40652. memcpy(op,bm->packets,sizeof(*op));
  40653. bm->queue_head=0;
  40654. }else{
  40655. if(bm->next_to_flush==bm->last_to_flush)return(0);
  40656. {
  40657. long bin=bm->queue_actual[bm->next_to_flush]&0x7fffffff,i;
  40658. long bins=bm->queue_bins;
  40659. ogg_uint32_t *markers=bm->queue_binned+bins*bm->next_to_flush;
  40660. long bytes=markers[bin];
  40661. memcpy(op,bm->packets+bm->next_to_flush,sizeof(*op));
  40662. /* we have [PACKETBLOBS] possible packets all squished together in
  40663. the buffer, in sequence. count in to number [bin] */
  40664. for(i=0;i<bin;i++)
  40665. op->packet+=markers[i];
  40666. op->bytes=bytes;
  40667. }
  40668. bm->next_to_flush++;
  40669. if(bm->next_to_flush>=bm->queue_size)bm->next_to_flush=0;
  40670. }
  40671. return(1);
  40672. }
  40673. /********************************************************************
  40674. * *
  40675. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  40676. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  40677. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  40678. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  40679. * *
  40680. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  40681. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  40682. * *
  40683. ********************************************************************
  40684. function: single-block PCM synthesis
  40685. last mod: $Id: synthesis.c,v 1.30 2003/08/18 05:34:01 xiphmont Exp $
  40686. ********************************************************************/
  40687. int vorbis_synthesis(vorbis_block *vb,ogg_packet *op){
  40688. vorbis_dsp_state *vd=vb->vd;
  40689. private_state *b=vd->backend_state;
  40690. vorbis_info *vi=vd->vi;
  40691. codec_setup_info *ci=vi->codec_setup;
  40692. oggpack_buffer *opb=&vb->opb;
  40693. int type,mode,i;
  40694. /* first things first. Make sure decode is ready */
  40695. _vorbis_block_ripcord(vb);
  40696. oggpack_readinit(opb,op->packet,op->bytes);
  40697. /* Check the packet type */
  40698. if(oggpack_read(opb,1)!=0){
  40699. /* Oops. This is not an audio data packet */
  40700. return(OV_ENOTAUDIO);
  40701. }
  40702. /* read our mode and pre/post windowsize */
  40703. mode=oggpack_read(opb,b->modebits);
  40704. if(mode==-1)return(OV_EBADPACKET);
  40705. vb->mode=mode;
  40706. vb->W=ci->mode_param[mode]->blockflag;
  40707. if(vb->W){
  40708. /* this doesn;t get mapped through mode selection as it's used
  40709. only for window selection */
  40710. vb->lW=oggpack_read(opb,1);
  40711. vb->nW=oggpack_read(opb,1);
  40712. if(vb->nW==-1) return(OV_EBADPACKET);
  40713. }else{
  40714. vb->lW=0;
  40715. vb->nW=0;
  40716. }
  40717. /* more setup */
  40718. vb->granulepos=op->granulepos;
  40719. vb->sequence=op->packetno;
  40720. vb->eofflag=op->e_o_s;
  40721. /* alloc pcm passback storage */
  40722. vb->pcmend=ci->blocksizes[vb->W];
  40723. vb->pcm=_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels);
  40724. for(i=0;i<vi->channels;i++)
  40725. vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i]));
  40726. /* unpack_header enforces range checking */
  40727. type=ci->map_type[ci->mode_param[mode]->mapping];
  40728. return(_mapping_P[type]->inverse(vb,ci->map_param[ci->mode_param[mode]->
  40729. mapping]));
  40730. }
  40731. /* used to track pcm position without actually performing decode.
  40732. Useful for sequential 'fast forward' */
  40733. int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op){
  40734. vorbis_dsp_state *vd=vb->vd;
  40735. private_state *b=vd->backend_state;
  40736. vorbis_info *vi=vd->vi;
  40737. codec_setup_info *ci=vi->codec_setup;
  40738. oggpack_buffer *opb=&vb->opb;
  40739. int mode;
  40740. /* first things first. Make sure decode is ready */
  40741. _vorbis_block_ripcord(vb);
  40742. oggpack_readinit(opb,op->packet,op->bytes);
  40743. /* Check the packet type */
  40744. if(oggpack_read(opb,1)!=0){
  40745. /* Oops. This is not an audio data packet */
  40746. return(OV_ENOTAUDIO);
  40747. }
  40748. /* read our mode and pre/post windowsize */
  40749. mode=oggpack_read(opb,b->modebits);
  40750. if(mode==-1)return(OV_EBADPACKET);
  40751. vb->mode=mode;
  40752. vb->W=ci->mode_param[mode]->blockflag;
  40753. if(vb->W){
  40754. vb->lW=oggpack_read(opb,1);
  40755. vb->nW=oggpack_read(opb,1);
  40756. if(vb->nW==-1) return(OV_EBADPACKET);
  40757. }else{
  40758. vb->lW=0;
  40759. vb->nW=0;
  40760. }
  40761. /* more setup */
  40762. vb->granulepos=op->granulepos;
  40763. vb->sequence=op->packetno;
  40764. vb->eofflag=op->e_o_s;
  40765. /* no pcm */
  40766. vb->pcmend=0;
  40767. vb->pcm=NULL;
  40768. return(0);
  40769. }
  40770. long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op){
  40771. codec_setup_info *ci=vi->codec_setup;
  40772. oggpack_buffer opb;
  40773. int mode;
  40774. oggpack_readinit(&opb,op->packet,op->bytes);
  40775. /* Check the packet type */
  40776. if(oggpack_read(&opb,1)!=0){
  40777. /* Oops. This is not an audio data packet */
  40778. return(OV_ENOTAUDIO);
  40779. }
  40780. {
  40781. int modebits=0;
  40782. int v=ci->modes;
  40783. while(v>1){
  40784. modebits++;
  40785. v>>=1;
  40786. }
  40787. /* read our mode and pre/post windowsize */
  40788. mode=oggpack_read(&opb,modebits);
  40789. }
  40790. if(mode==-1)return(OV_EBADPACKET);
  40791. return(ci->blocksizes[ci->mode_param[mode]->blockflag]);
  40792. }
  40793. int vorbis_synthesis_halfrate(vorbis_info *vi,int flag){
  40794. /* set / clear half-sample-rate mode */
  40795. codec_setup_info *ci=vi->codec_setup;
  40796. /* right now, our MDCT can't handle < 64 sample windows. */
  40797. if(ci->blocksizes[0]<=64 && flag)return -1;
  40798. ci->halfrate_flag=(flag?1:0);
  40799. return 0;
  40800. }
  40801. int vorbis_synthesis_halfrate_p(vorbis_info *vi){
  40802. codec_setup_info *ci=vi->codec_setup;
  40803. return ci->halfrate_flag;
  40804. }
  40805. /********************************************************************
  40806. * *
  40807. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  40808. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  40809. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  40810. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  40811. * *
  40812. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  40813. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  40814. * *
  40815. ********************************************************************
  40816. function: basic shared codebook operations
  40817. last mod: $Id: sharedbook.c,v 1.29 2002/10/11 07:44:28 xiphmont Exp $
  40818. ********************************************************************/
  40819. /**** pack/unpack helpers ******************************************/
  40820. int _ilog(unsigned int v){
  40821. int ret=0;
  40822. while(v){
  40823. ret++;
  40824. v>>=1;
  40825. }
  40826. return(ret);
  40827. }
  40828. /* 32 bit float (not IEEE; nonnormalized mantissa +
  40829. biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm
  40830. Why not IEEE? It's just not that important here. */
  40831. #define VQ_FEXP 10
  40832. #define VQ_FMAN 21
  40833. #define VQ_FEXP_BIAS 768 /* bias toward values smaller than 1. */
  40834. /* doesn't currently guard under/overflow */
  40835. long _float32_pack(float val){
  40836. int sign=0;
  40837. long exp;
  40838. long mant;
  40839. if(val<0){
  40840. sign=0x80000000;
  40841. val= -val;
  40842. }
  40843. exp= floor(log(val)/log(2.f));
  40844. mant=rint(ldexp(val,(VQ_FMAN-1)-exp));
  40845. exp=(exp+VQ_FEXP_BIAS)<<VQ_FMAN;
  40846. return(sign|exp|mant);
  40847. }
  40848. float _float32_unpack(long val){
  40849. double mant=val&0x1fffff;
  40850. int sign=val&0x80000000;
  40851. long exp =(val&0x7fe00000L)>>VQ_FMAN;
  40852. if(sign)mant= -mant;
  40853. return(ldexp(mant,exp-(VQ_FMAN-1)-VQ_FEXP_BIAS));
  40854. }
  40855. /* given a list of word lengths, generate a list of codewords. Works
  40856. for length ordered or unordered, always assigns the lowest valued
  40857. codewords first. Extended to handle unused entries (length 0) */
  40858. ogg_uint32_t *_make_words(long *l,long n,long sparsecount){
  40859. long i,j,count=0;
  40860. ogg_uint32_t marker[33];
  40861. ogg_uint32_t *r=_ogg_malloc((sparsecount?sparsecount:n)*sizeof(*r));
  40862. memset(marker,0,sizeof(marker));
  40863. for(i=0;i<n;i++){
  40864. long length=l[i];
  40865. if(length>0){
  40866. ogg_uint32_t entry=marker[length];
  40867. /* when we claim a node for an entry, we also claim the nodes
  40868. below it (pruning off the imagined tree that may have dangled
  40869. from it) as well as blocking the use of any nodes directly
  40870. above for leaves */
  40871. /* update ourself */
  40872. if(length<32 && (entry>>length)){
  40873. /* error condition; the lengths must specify an overpopulated tree */
  40874. _ogg_free(r);
  40875. return(NULL);
  40876. }
  40877. r[count++]=entry;
  40878. /* Look to see if the next shorter marker points to the node
  40879. above. if so, update it and repeat. */
  40880. {
  40881. for(j=length;j>0;j--){
  40882. if(marker[j]&1){
  40883. /* have to jump branches */
  40884. if(j==1)
  40885. marker[1]++;
  40886. else
  40887. marker[j]=marker[j-1]<<1;
  40888. break; /* invariant says next upper marker would already
  40889. have been moved if it was on the same path */
  40890. }
  40891. marker[j]++;
  40892. }
  40893. }
  40894. /* prune the tree; the implicit invariant says all the longer
  40895. markers were dangling from our just-taken node. Dangle them
  40896. from our *new* node. */
  40897. for(j=length+1;j<33;j++)
  40898. if((marker[j]>>1) == entry){
  40899. entry=marker[j];
  40900. marker[j]=marker[j-1]<<1;
  40901. }else
  40902. break;
  40903. }else
  40904. if(sparsecount==0)count++;
  40905. }
  40906. /* bitreverse the words because our bitwise packer/unpacker is LSb
  40907. endian */
  40908. for(i=0,count=0;i<n;i++){
  40909. ogg_uint32_t temp=0;
  40910. for(j=0;j<l[i];j++){
  40911. temp<<=1;
  40912. temp|=(r[count]>>j)&1;
  40913. }
  40914. if(sparsecount){
  40915. if(l[i])
  40916. r[count++]=temp;
  40917. }else
  40918. r[count++]=temp;
  40919. }
  40920. return(r);
  40921. }
  40922. /* there might be a straightforward one-line way to do the below
  40923. that's portable and totally safe against roundoff, but I haven't
  40924. thought of it. Therefore, we opt on the side of caution */
  40925. long _book_maptype1_quantvals(const static_codebook *b){
  40926. long vals=floor(pow((float)b->entries,1.f/b->dim));
  40927. /* the above *should* be reliable, but we'll not assume that FP is
  40928. ever reliable when bitstream sync is at stake; verify via integer
  40929. means that vals really is the greatest value of dim for which
  40930. vals^b->bim <= b->entries */
  40931. /* treat the above as an initial guess */
  40932. while(1){
  40933. long acc=1;
  40934. long acc1=1;
  40935. int i;
  40936. for(i=0;i<b->dim;i++){
  40937. acc*=vals;
  40938. acc1*=vals+1;
  40939. }
  40940. if(acc<=b->entries && acc1>b->entries){
  40941. return(vals);
  40942. }else{
  40943. if(acc>b->entries){
  40944. vals--;
  40945. }else{
  40946. vals++;
  40947. }
  40948. }
  40949. }
  40950. }
  40951. /* unpack the quantized list of values for encode/decode ***********/
  40952. /* we need to deal with two map types: in map type 1, the values are
  40953. generated algorithmically (each column of the vector counts through
  40954. the values in the quant vector). in map type 2, all the values came
  40955. in in an explicit list. Both value lists must be unpacked */
  40956. float *_book_unquantize(const static_codebook *b,int n,int *sparsemap){
  40957. long j,k,count=0;
  40958. if(b->maptype==1 || b->maptype==2){
  40959. int quantvals;
  40960. float mindel=_float32_unpack(b->q_min);
  40961. float delta=_float32_unpack(b->q_delta);
  40962. float *r=_ogg_calloc(n*b->dim,sizeof(*r));
  40963. /* maptype 1 and 2 both use a quantized value vector, but
  40964. different sizes */
  40965. switch(b->maptype){
  40966. case 1:
  40967. /* most of the time, entries%dimensions == 0, but we need to be
  40968. well defined. We define that the possible vales at each
  40969. scalar is values == entries/dim. If entries%dim != 0, we'll
  40970. have 'too few' values (values*dim<entries), which means that
  40971. we'll have 'left over' entries; left over entries use zeroed
  40972. values (and are wasted). So don't generate codebooks like
  40973. that */
  40974. quantvals=_book_maptype1_quantvals(b);
  40975. for(j=0;j<b->entries;j++){
  40976. if((sparsemap && b->lengthlist[j]) || !sparsemap){
  40977. float last=0.f;
  40978. int indexdiv=1;
  40979. for(k=0;k<b->dim;k++){
  40980. int index= (j/indexdiv)%quantvals;
  40981. float val=b->quantlist[index];
  40982. val=fabs(val)*delta+mindel+last;
  40983. if(b->q_sequencep)last=val;
  40984. if(sparsemap)
  40985. r[sparsemap[count]*b->dim+k]=val;
  40986. else
  40987. r[count*b->dim+k]=val;
  40988. indexdiv*=quantvals;
  40989. }
  40990. count++;
  40991. }
  40992. }
  40993. break;
  40994. case 2:
  40995. for(j=0;j<b->entries;j++){
  40996. if((sparsemap && b->lengthlist[j]) || !sparsemap){
  40997. float last=0.f;
  40998. for(k=0;k<b->dim;k++){
  40999. float val=b->quantlist[j*b->dim+k];
  41000. val=fabs(val)*delta+mindel+last;
  41001. if(b->q_sequencep)last=val;
  41002. if(sparsemap)
  41003. r[sparsemap[count]*b->dim+k]=val;
  41004. else
  41005. r[count*b->dim+k]=val;
  41006. }
  41007. count++;
  41008. }
  41009. }
  41010. break;
  41011. }
  41012. return(r);
  41013. }
  41014. return(NULL);
  41015. }
  41016. void vorbis_staticbook_clear(static_codebook *b){
  41017. if(b->allocedp){
  41018. if(b->quantlist)_ogg_free(b->quantlist);
  41019. if(b->lengthlist)_ogg_free(b->lengthlist);
  41020. if(b->nearest_tree){
  41021. _ogg_free(b->nearest_tree->ptr0);
  41022. _ogg_free(b->nearest_tree->ptr1);
  41023. _ogg_free(b->nearest_tree->p);
  41024. _ogg_free(b->nearest_tree->q);
  41025. memset(b->nearest_tree,0,sizeof(*b->nearest_tree));
  41026. _ogg_free(b->nearest_tree);
  41027. }
  41028. if(b->thresh_tree){
  41029. _ogg_free(b->thresh_tree->quantthresh);
  41030. _ogg_free(b->thresh_tree->quantmap);
  41031. memset(b->thresh_tree,0,sizeof(*b->thresh_tree));
  41032. _ogg_free(b->thresh_tree);
  41033. }
  41034. memset(b,0,sizeof(*b));
  41035. }
  41036. }
  41037. void vorbis_staticbook_destroy(static_codebook *b){
  41038. if(b->allocedp){
  41039. vorbis_staticbook_clear(b);
  41040. _ogg_free(b);
  41041. }
  41042. }
  41043. void vorbis_book_clear(codebook *b){
  41044. /* static book is not cleared; we're likely called on the lookup and
  41045. the static codebook belongs to the info struct */
  41046. if(b->valuelist)_ogg_free(b->valuelist);
  41047. if(b->codelist)_ogg_free(b->codelist);
  41048. if(b->dec_index)_ogg_free(b->dec_index);
  41049. if(b->dec_codelengths)_ogg_free(b->dec_codelengths);
  41050. if(b->dec_firsttable)_ogg_free(b->dec_firsttable);
  41051. memset(b,0,sizeof(*b));
  41052. }
  41053. int vorbis_book_init_encode(codebook *c,const static_codebook *s){
  41054. memset(c,0,sizeof(*c));
  41055. c->c=s;
  41056. c->entries=s->entries;
  41057. c->used_entries=s->entries;
  41058. c->dim=s->dim;
  41059. c->codelist=_make_words(s->lengthlist,s->entries,0);
  41060. c->valuelist=_book_unquantize(s,s->entries,NULL);
  41061. return(0);
  41062. }
  41063. static ogg_uint32_t bitreverse(ogg_uint32_t x){
  41064. x= ((x>>16)&0x0000ffffUL) | ((x<<16)&0xffff0000UL);
  41065. x= ((x>> 8)&0x00ff00ffUL) | ((x<< 8)&0xff00ff00UL);
  41066. x= ((x>> 4)&0x0f0f0f0fUL) | ((x<< 4)&0xf0f0f0f0UL);
  41067. x= ((x>> 2)&0x33333333UL) | ((x<< 2)&0xccccccccUL);
  41068. return((x>> 1)&0x55555555UL) | ((x<< 1)&0xaaaaaaaaUL);
  41069. }
  41070. static int sort32a(const void *a,const void *b){
  41071. return ( **(ogg_uint32_t **)a>**(ogg_uint32_t **)b)-
  41072. ( **(ogg_uint32_t **)a<**(ogg_uint32_t **)b);
  41073. }
  41074. /* decode codebook arrangement is more heavily optimized than encode */
  41075. int vorbis_book_init_decode(codebook *c,const static_codebook *s){
  41076. int i,j,n=0,tabn;
  41077. int *sortindex;
  41078. memset(c,0,sizeof(*c));
  41079. /* count actually used entries */
  41080. for(i=0;i<s->entries;i++)
  41081. if(s->lengthlist[i]>0)
  41082. n++;
  41083. c->entries=s->entries;
  41084. c->used_entries=n;
  41085. c->dim=s->dim;
  41086. /* two different remappings go on here.
  41087. First, we collapse the likely sparse codebook down only to
  41088. actually represented values/words. This collapsing needs to be
  41089. indexed as map-valueless books are used to encode original entry
  41090. positions as integers.
  41091. Second, we reorder all vectors, including the entry index above,
  41092. by sorted bitreversed codeword to allow treeless decode. */
  41093. {
  41094. /* perform sort */
  41095. ogg_uint32_t *codes=_make_words(s->lengthlist,s->entries,c->used_entries);
  41096. ogg_uint32_t **codep=alloca(sizeof(*codep)*n);
  41097. if(codes==NULL)goto err_out;
  41098. for(i=0;i<n;i++){
  41099. codes[i]=bitreverse(codes[i]);
  41100. codep[i]=codes+i;
  41101. }
  41102. qsort(codep,n,sizeof(*codep),sort32a);
  41103. sortindex=alloca(n*sizeof(*sortindex));
  41104. c->codelist=_ogg_malloc(n*sizeof(*c->codelist));
  41105. /* the index is a reverse index */
  41106. for(i=0;i<n;i++){
  41107. int position=codep[i]-codes;
  41108. sortindex[position]=i;
  41109. }
  41110. for(i=0;i<n;i++)
  41111. c->codelist[sortindex[i]]=codes[i];
  41112. _ogg_free(codes);
  41113. }
  41114. c->valuelist=_book_unquantize(s,n,sortindex);
  41115. c->dec_index=_ogg_malloc(n*sizeof(*c->dec_index));
  41116. for(n=0,i=0;i<s->entries;i++)
  41117. if(s->lengthlist[i]>0)
  41118. c->dec_index[sortindex[n++]]=i;
  41119. c->dec_codelengths=_ogg_malloc(n*sizeof(*c->dec_codelengths));
  41120. for(n=0,i=0;i<s->entries;i++)
  41121. if(s->lengthlist[i]>0)
  41122. c->dec_codelengths[sortindex[n++]]=s->lengthlist[i];
  41123. c->dec_firsttablen=_ilog(c->used_entries)-4; /* this is magic */
  41124. if(c->dec_firsttablen<5)c->dec_firsttablen=5;
  41125. if(c->dec_firsttablen>8)c->dec_firsttablen=8;
  41126. tabn=1<<c->dec_firsttablen;
  41127. c->dec_firsttable=_ogg_calloc(tabn,sizeof(*c->dec_firsttable));
  41128. c->dec_maxlength=0;
  41129. for(i=0;i<n;i++){
  41130. if(c->dec_maxlength<c->dec_codelengths[i])
  41131. c->dec_maxlength=c->dec_codelengths[i];
  41132. if(c->dec_codelengths[i]<=c->dec_firsttablen){
  41133. ogg_uint32_t orig=bitreverse(c->codelist[i]);
  41134. for(j=0;j<(1<<(c->dec_firsttablen-c->dec_codelengths[i]));j++)
  41135. c->dec_firsttable[orig|(j<<c->dec_codelengths[i])]=i+1;
  41136. }
  41137. }
  41138. /* now fill in 'unused' entries in the firsttable with hi/lo search
  41139. hints for the non-direct-hits */
  41140. {
  41141. ogg_uint32_t mask=0xfffffffeUL<<(31-c->dec_firsttablen);
  41142. long lo=0,hi=0;
  41143. for(i=0;i<tabn;i++){
  41144. ogg_uint32_t word=i<<(32-c->dec_firsttablen);
  41145. if(c->dec_firsttable[bitreverse(word)]==0){
  41146. while((lo+1)<n && c->codelist[lo+1]<=word)lo++;
  41147. while( hi<n && word>=(c->codelist[hi]&mask))hi++;
  41148. /* we only actually have 15 bits per hint to play with here.
  41149. In order to overflow gracefully (nothing breaks, efficiency
  41150. just drops), encode as the difference from the extremes. */
  41151. {
  41152. unsigned long loval=lo;
  41153. unsigned long hival=n-hi;
  41154. if(loval>0x7fff)loval=0x7fff;
  41155. if(hival>0x7fff)hival=0x7fff;
  41156. c->dec_firsttable[bitreverse(word)]=
  41157. 0x80000000UL | (loval<<15) | hival;
  41158. }
  41159. }
  41160. }
  41161. }
  41162. return(0);
  41163. err_out:
  41164. vorbis_book_clear(c);
  41165. return(-1);
  41166. }
  41167. static float _dist(int el,float *ref, float *b,int step){
  41168. int i;
  41169. float acc=0.f;
  41170. for(i=0;i<el;i++){
  41171. float val=(ref[i]-b[i*step]);
  41172. acc+=val*val;
  41173. }
  41174. return(acc);
  41175. }
  41176. int _best(codebook *book, float *a, int step){
  41177. encode_aux_threshmatch *tt=book->c->thresh_tree;
  41178. #if 0
  41179. encode_aux_nearestmatch *nt=book->c->nearest_tree;
  41180. encode_aux_pigeonhole *pt=book->c->pigeon_tree;
  41181. #endif
  41182. int dim=book->dim;
  41183. int k,o;
  41184. /*int savebest=-1;
  41185. float saverr;*/
  41186. /* do we have a threshhold encode hint? */
  41187. if(tt){
  41188. int index=0,i;
  41189. /* find the quant val of each scalar */
  41190. for(k=0,o=step*(dim-1);k<dim;k++,o-=step){
  41191. i=tt->threshvals>>1;
  41192. if(a[o]<tt->quantthresh[i]){
  41193. for(;i>0;i--)
  41194. if(a[o]>=tt->quantthresh[i-1])
  41195. break;
  41196. }else{
  41197. for(i++;i<tt->threshvals-1;i++)
  41198. if(a[o]<tt->quantthresh[i])break;
  41199. }
  41200. index=(index*tt->quantvals)+tt->quantmap[i];
  41201. }
  41202. /* regular lattices are easy :-) */
  41203. if(book->c->lengthlist[index]>0) /* is this unused? If so, we'll
  41204. use a decision tree after all
  41205. and fall through*/
  41206. return(index);
  41207. }
  41208. #if 0
  41209. /* do we have a pigeonhole encode hint? */
  41210. if(pt){
  41211. const static_codebook *c=book->c;
  41212. int i,besti=-1;
  41213. float best=0.f;
  41214. int entry=0;
  41215. /* dealing with sequentialness is a pain in the ass */
  41216. if(c->q_sequencep){
  41217. int pv;
  41218. long mul=1;
  41219. float qlast=0;
  41220. for(k=0,o=0;k<dim;k++,o+=step){
  41221. pv=(int)((a[o]-qlast-pt->min)/pt->del);
  41222. if(pv<0 || pv>=pt->mapentries)break;
  41223. entry+=pt->pigeonmap[pv]*mul;
  41224. mul*=pt->quantvals;
  41225. qlast+=pv*pt->del+pt->min;
  41226. }
  41227. }else{
  41228. for(k=0,o=step*(dim-1);k<dim;k++,o-=step){
  41229. int pv=(int)((a[o]-pt->min)/pt->del);
  41230. if(pv<0 || pv>=pt->mapentries)break;
  41231. entry=entry*pt->quantvals+pt->pigeonmap[pv];
  41232. }
  41233. }
  41234. /* must be within the pigeonholable range; if we quant outside (or
  41235. in an entry that we define no list for), brute force it */
  41236. if(k==dim && pt->fitlength[entry]){
  41237. /* search the abbreviated list */
  41238. long *list=pt->fitlist+pt->fitmap[entry];
  41239. for(i=0;i<pt->fitlength[entry];i++){
  41240. float this=_dist(dim,book->valuelist+list[i]*dim,a,step);
  41241. if(besti==-1 || this<best){
  41242. best=this;
  41243. besti=list[i];
  41244. }
  41245. }
  41246. return(besti);
  41247. }
  41248. }
  41249. if(nt){
  41250. /* optimized using the decision tree */
  41251. while(1){
  41252. float c=0.f;
  41253. float *p=book->valuelist+nt->p[ptr];
  41254. float *q=book->valuelist+nt->q[ptr];
  41255. for(k=0,o=0;k<dim;k++,o+=step)
  41256. c+=(p[k]-q[k])*(a[o]-(p[k]+q[k])*.5);
  41257. if(c>0.f) /* in A */
  41258. ptr= -nt->ptr0[ptr];
  41259. else /* in B */
  41260. ptr= -nt->ptr1[ptr];
  41261. if(ptr<=0)break;
  41262. }
  41263. return(-ptr);
  41264. }
  41265. #endif
  41266. /* brute force it! */
  41267. {
  41268. const static_codebook *c=book->c;
  41269. int i,besti=-1;
  41270. float best=0.f;
  41271. float *e=book->valuelist;
  41272. for(i=0;i<book->entries;i++){
  41273. if(c->lengthlist[i]>0){
  41274. float this=_dist(dim,e,a,step);
  41275. if(besti==-1 || this<best){
  41276. best=this;
  41277. besti=i;
  41278. }
  41279. }
  41280. e+=dim;
  41281. }
  41282. /*if(savebest!=-1 && savebest!=besti){
  41283. fprintf(stderr,"brute force/pigeonhole disagreement:\n"
  41284. "original:");
  41285. for(i=0;i<dim*step;i+=step)fprintf(stderr,"%g,",a[i]);
  41286. fprintf(stderr,"\n"
  41287. "pigeonhole (entry %d, err %g):",savebest,saverr);
  41288. for(i=0;i<dim;i++)fprintf(stderr,"%g,",
  41289. (book->valuelist+savebest*dim)[i]);
  41290. fprintf(stderr,"\n"
  41291. "bruteforce (entry %d, err %g):",besti,best);
  41292. for(i=0;i<dim;i++)fprintf(stderr,"%g,",
  41293. (book->valuelist+besti*dim)[i]);
  41294. fprintf(stderr,"\n");
  41295. }*/
  41296. return(besti);
  41297. }
  41298. }
  41299. long vorbis_book_codeword(codebook *book,int entry){
  41300. if(book->c) /* only use with encode; decode optimizations are
  41301. allowed to break this */
  41302. return book->codelist[entry];
  41303. return -1;
  41304. }
  41305. long vorbis_book_codelen(codebook *book,int entry){
  41306. if(book->c) /* only use with encode; decode optimizations are
  41307. allowed to break this */
  41308. return book->c->lengthlist[entry];
  41309. return -1;
  41310. }
  41311. /********************************************************************
  41312. * *
  41313. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  41314. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  41315. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  41316. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  41317. * *
  41318. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  41319. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  41320. * *
  41321. ********************************************************************
  41322. function: basic codebook pack/unpack/code/decode operations
  41323. last mod: $Id: codebook.c,v 1.39 2002/06/28 22:19:35 xiphmont Exp $
  41324. ********************************************************************/
  41325. /* packs the given codebook into the bitstream **************************/
  41326. int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *opb){
  41327. long i,j;
  41328. int ordered=0;
  41329. /* first the basic parameters */
  41330. oggpack_write(opb,0x564342,24);
  41331. oggpack_write(opb,c->dim,16);
  41332. oggpack_write(opb,c->entries,24);
  41333. /* pack the codewords. There are two packings; length ordered and
  41334. length random. Decide between the two now. */
  41335. for(i=1;i<c->entries;i++)
  41336. if(c->lengthlist[i-1]==0 || c->lengthlist[i]<c->lengthlist[i-1])break;
  41337. if(i==c->entries)ordered=1;
  41338. if(ordered){
  41339. /* length ordered. We only need to say how many codewords of
  41340. each length. The actual codewords are generated
  41341. deterministically */
  41342. long count=0;
  41343. oggpack_write(opb,1,1); /* ordered */
  41344. oggpack_write(opb,c->lengthlist[0]-1,5); /* 1 to 32 */
  41345. for(i=1;i<c->entries;i++){
  41346. long this=c->lengthlist[i];
  41347. long last=c->lengthlist[i-1];
  41348. if(this>last){
  41349. for(j=last;j<this;j++){
  41350. oggpack_write(opb,i-count,_ilog(c->entries-count));
  41351. count=i;
  41352. }
  41353. }
  41354. }
  41355. oggpack_write(opb,i-count,_ilog(c->entries-count));
  41356. }else{
  41357. /* length random. Again, we don't code the codeword itself, just
  41358. the length. This time, though, we have to encode each length */
  41359. oggpack_write(opb,0,1); /* unordered */
  41360. /* algortihmic mapping has use for 'unused entries', which we tag
  41361. here. The algorithmic mapping happens as usual, but the unused
  41362. entry has no codeword. */
  41363. for(i=0;i<c->entries;i++)
  41364. if(c->lengthlist[i]==0)break;
  41365. if(i==c->entries){
  41366. oggpack_write(opb,0,1); /* no unused entries */
  41367. for(i=0;i<c->entries;i++)
  41368. oggpack_write(opb,c->lengthlist[i]-1,5);
  41369. }else{
  41370. oggpack_write(opb,1,1); /* we have unused entries; thus we tag */
  41371. for(i=0;i<c->entries;i++){
  41372. if(c->lengthlist[i]==0){
  41373. oggpack_write(opb,0,1);
  41374. }else{
  41375. oggpack_write(opb,1,1);
  41376. oggpack_write(opb,c->lengthlist[i]-1,5);
  41377. }
  41378. }
  41379. }
  41380. }
  41381. /* is the entry number the desired return value, or do we have a
  41382. mapping? If we have a mapping, what type? */
  41383. oggpack_write(opb,c->maptype,4);
  41384. switch(c->maptype){
  41385. case 0:
  41386. /* no mapping */
  41387. break;
  41388. case 1:case 2:
  41389. /* implicitly populated value mapping */
  41390. /* explicitly populated value mapping */
  41391. if(!c->quantlist){
  41392. /* no quantlist? error */
  41393. return(-1);
  41394. }
  41395. /* values that define the dequantization */
  41396. oggpack_write(opb,c->q_min,32);
  41397. oggpack_write(opb,c->q_delta,32);
  41398. oggpack_write(opb,c->q_quant-1,4);
  41399. oggpack_write(opb,c->q_sequencep,1);
  41400. {
  41401. int quantvals;
  41402. switch(c->maptype){
  41403. case 1:
  41404. /* a single column of (c->entries/c->dim) quantized values for
  41405. building a full value list algorithmically (square lattice) */
  41406. quantvals=_book_maptype1_quantvals(c);
  41407. break;
  41408. case 2:
  41409. /* every value (c->entries*c->dim total) specified explicitly */
  41410. quantvals=c->entries*c->dim;
  41411. break;
  41412. default: /* NOT_REACHABLE */
  41413. quantvals=-1;
  41414. }
  41415. /* quantized values */
  41416. for(i=0;i<quantvals;i++)
  41417. oggpack_write(opb,labs(c->quantlist[i]),c->q_quant);
  41418. }
  41419. break;
  41420. default:
  41421. /* error case; we don't have any other map types now */
  41422. return(-1);
  41423. }
  41424. return(0);
  41425. }
  41426. /* unpacks a codebook from the packet buffer into the codebook struct,
  41427. readies the codebook auxiliary structures for decode *************/
  41428. int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){
  41429. long i,j;
  41430. memset(s,0,sizeof(*s));
  41431. s->allocedp=1;
  41432. /* make sure alignment is correct */
  41433. if(oggpack_read(opb,24)!=0x564342)goto _eofout;
  41434. /* first the basic parameters */
  41435. s->dim=oggpack_read(opb,16);
  41436. s->entries=oggpack_read(opb,24);
  41437. if(s->entries==-1)goto _eofout;
  41438. /* codeword ordering.... length ordered or unordered? */
  41439. switch((int)oggpack_read(opb,1)){
  41440. case 0:
  41441. /* unordered */
  41442. s->lengthlist=_ogg_malloc(sizeof(*s->lengthlist)*s->entries);
  41443. /* allocated but unused entries? */
  41444. if(oggpack_read(opb,1)){
  41445. /* yes, unused entries */
  41446. for(i=0;i<s->entries;i++){
  41447. if(oggpack_read(opb,1)){
  41448. long num=oggpack_read(opb,5);
  41449. if(num==-1)goto _eofout;
  41450. s->lengthlist[i]=num+1;
  41451. }else
  41452. s->lengthlist[i]=0;
  41453. }
  41454. }else{
  41455. /* all entries used; no tagging */
  41456. for(i=0;i<s->entries;i++){
  41457. long num=oggpack_read(opb,5);
  41458. if(num==-1)goto _eofout;
  41459. s->lengthlist[i]=num+1;
  41460. }
  41461. }
  41462. break;
  41463. case 1:
  41464. /* ordered */
  41465. {
  41466. long length=oggpack_read(opb,5)+1;
  41467. s->lengthlist=_ogg_malloc(sizeof(*s->lengthlist)*s->entries);
  41468. for(i=0;i<s->entries;){
  41469. long num=oggpack_read(opb,_ilog(s->entries-i));
  41470. if(num==-1)goto _eofout;
  41471. for(j=0;j<num && i<s->entries;j++,i++)
  41472. s->lengthlist[i]=length;
  41473. length++;
  41474. }
  41475. }
  41476. break;
  41477. default:
  41478. /* EOF */
  41479. return(-1);
  41480. }
  41481. /* Do we have a mapping to unpack? */
  41482. switch((s->maptype=oggpack_read(opb,4))){
  41483. case 0:
  41484. /* no mapping */
  41485. break;
  41486. case 1: case 2:
  41487. /* implicitly populated value mapping */
  41488. /* explicitly populated value mapping */
  41489. s->q_min=oggpack_read(opb,32);
  41490. s->q_delta=oggpack_read(opb,32);
  41491. s->q_quant=oggpack_read(opb,4)+1;
  41492. s->q_sequencep=oggpack_read(opb,1);
  41493. {
  41494. int quantvals=0;
  41495. switch(s->maptype){
  41496. case 1:
  41497. quantvals=_book_maptype1_quantvals(s);
  41498. break;
  41499. case 2:
  41500. quantvals=s->entries*s->dim;
  41501. break;
  41502. }
  41503. /* quantized values */
  41504. s->quantlist=_ogg_malloc(sizeof(*s->quantlist)*quantvals);
  41505. for(i=0;i<quantvals;i++)
  41506. s->quantlist[i]=oggpack_read(opb,s->q_quant);
  41507. if(quantvals&&s->quantlist[quantvals-1]==-1)goto _eofout;
  41508. }
  41509. break;
  41510. default:
  41511. goto _errout;
  41512. }
  41513. /* all set */
  41514. return(0);
  41515. _errout:
  41516. _eofout:
  41517. vorbis_staticbook_clear(s);
  41518. return(-1);
  41519. }
  41520. /* returns the number of bits ************************************************/
  41521. int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b){
  41522. oggpack_write(b,book->codelist[a],book->c->lengthlist[a]);
  41523. return(book->c->lengthlist[a]);
  41524. }
  41525. /* One the encode side, our vector writers are each designed for a
  41526. specific purpose, and the encoder is not flexible without modification:
  41527. The LSP vector coder uses a single stage nearest-match with no
  41528. interleave, so no step and no error return. This is specced by floor0
  41529. and doesn't change.
  41530. Residue0 encoding interleaves, uses multiple stages, and each stage
  41531. peels of a specific amount of resolution from a lattice (thus we want
  41532. to match by threshold, not nearest match). Residue doesn't *have* to
  41533. be encoded that way, but to change it, one will need to add more
  41534. infrastructure on the encode side (decode side is specced and simpler) */
  41535. /* floor0 LSP (single stage, non interleaved, nearest match) */
  41536. /* returns entry number and *modifies a* to the quantization value *****/
  41537. int vorbis_book_errorv(codebook *book,float *a){
  41538. int dim=book->dim,k;
  41539. int best=_best(book,a,1);
  41540. for(k=0;k<dim;k++)
  41541. a[k]=(book->valuelist+best*dim)[k];
  41542. return(best);
  41543. }
  41544. /* returns the number of bits and *modifies a* to the quantization value *****/
  41545. int vorbis_book_encodev(codebook *book,int best,float *a,oggpack_buffer *b){
  41546. int k,dim=book->dim;
  41547. for(k=0;k<dim;k++)
  41548. a[k]=(book->valuelist+best*dim)[k];
  41549. return(vorbis_book_encode(book,best,b));
  41550. }
  41551. /* the 'eliminate the decode tree' optimization actually requires the
  41552. codewords to be MSb first, not LSb. This is an annoying inelegancy
  41553. (and one of the first places where carefully thought out design
  41554. turned out to be wrong; Vorbis II and future Ogg codecs should go
  41555. to an MSb bitpacker), but not actually the huge hit it appears to
  41556. be. The first-stage decode table catches most words so that
  41557. bitreverse is not in the main execution path. */
  41558. STIN long decode_packed_entry_number(codebook *book, oggpack_buffer *b){
  41559. int read=book->dec_maxlength;
  41560. long lo,hi;
  41561. long lok = oggpack_look(b,book->dec_firsttablen);
  41562. if (lok >= 0) {
  41563. long entry = book->dec_firsttable[lok];
  41564. if(entry&0x80000000UL){
  41565. lo=(entry>>15)&0x7fff;
  41566. hi=book->used_entries-(entry&0x7fff);
  41567. }else{
  41568. oggpack_adv(b, book->dec_codelengths[entry-1]);
  41569. return(entry-1);
  41570. }
  41571. }else{
  41572. lo=0;
  41573. hi=book->used_entries;
  41574. }
  41575. lok = oggpack_look(b, read);
  41576. while(lok<0 && read>1)
  41577. lok = oggpack_look(b, --read);
  41578. if(lok<0)return -1;
  41579. /* bisect search for the codeword in the ordered list */
  41580. {
  41581. ogg_uint32_t testword=bitreverse((ogg_uint32_t)lok);
  41582. while(hi-lo>1){
  41583. long p=(hi-lo)>>1;
  41584. long test=book->codelist[lo+p]>testword;
  41585. lo+=p&(test-1);
  41586. hi-=p&(-test);
  41587. }
  41588. if(book->dec_codelengths[lo]<=read){
  41589. oggpack_adv(b, book->dec_codelengths[lo]);
  41590. return(lo);
  41591. }
  41592. }
  41593. oggpack_adv(b, read);
  41594. return(-1);
  41595. }
  41596. /* Decode side is specced and easier, because we don't need to find
  41597. matches using different criteria; we simply read and map. There are
  41598. two things we need to do 'depending':
  41599. We may need to support interleave. We don't really, but it's
  41600. convenient to do it here rather than rebuild the vector later.
  41601. Cascades may be additive or multiplicitive; this is not inherent in
  41602. the codebook, but set in the code using the codebook. Like
  41603. interleaving, it's easiest to do it here.
  41604. addmul==0 -> declarative (set the value)
  41605. addmul==1 -> additive
  41606. addmul==2 -> multiplicitive */
  41607. /* returns the [original, not compacted] entry number or -1 on eof *********/
  41608. long vorbis_book_decode(codebook *book, oggpack_buffer *b){
  41609. long packed_entry=decode_packed_entry_number(book,b);
  41610. if(packed_entry>=0)
  41611. return(book->dec_index[packed_entry]);
  41612. /* if there's no dec_index, the codebook unpacking isn't collapsed */
  41613. return(packed_entry);
  41614. }
  41615. /* returns 0 on OK or -1 on eof *************************************/
  41616. long vorbis_book_decodevs_add(codebook *book,float *a,oggpack_buffer *b,int n){
  41617. int step=n/book->dim;
  41618. long *entry = alloca(sizeof(*entry)*step);
  41619. float **t = alloca(sizeof(*t)*step);
  41620. int i,j,o;
  41621. for (i = 0; i < step; i++) {
  41622. entry[i]=decode_packed_entry_number(book,b);
  41623. if(entry[i]==-1)return(-1);
  41624. t[i] = book->valuelist+entry[i]*book->dim;
  41625. }
  41626. for(i=0,o=0;i<book->dim;i++,o+=step)
  41627. for (j=0;j<step;j++)
  41628. a[o+j]+=t[j][i];
  41629. return(0);
  41630. }
  41631. long vorbis_book_decodev_add(codebook *book,float *a,oggpack_buffer *b,int n){
  41632. int i,j,entry;
  41633. float *t;
  41634. if(book->dim>8){
  41635. for(i=0;i<n;){
  41636. entry = decode_packed_entry_number(book,b);
  41637. if(entry==-1)return(-1);
  41638. t = book->valuelist+entry*book->dim;
  41639. for (j=0;j<book->dim;)
  41640. a[i++]+=t[j++];
  41641. }
  41642. }else{
  41643. for(i=0;i<n;){
  41644. entry = decode_packed_entry_number(book,b);
  41645. if(entry==-1)return(-1);
  41646. t = book->valuelist+entry*book->dim;
  41647. j=0;
  41648. switch((int)book->dim){
  41649. case 8:
  41650. a[i++]+=t[j++];
  41651. case 7:
  41652. a[i++]+=t[j++];
  41653. case 6:
  41654. a[i++]+=t[j++];
  41655. case 5:
  41656. a[i++]+=t[j++];
  41657. case 4:
  41658. a[i++]+=t[j++];
  41659. case 3:
  41660. a[i++]+=t[j++];
  41661. case 2:
  41662. a[i++]+=t[j++];
  41663. case 1:
  41664. a[i++]+=t[j++];
  41665. case 0:
  41666. break;
  41667. }
  41668. }
  41669. }
  41670. return(0);
  41671. }
  41672. long vorbis_book_decodev_set(codebook *book,float *a,oggpack_buffer *b,int n){
  41673. int i,j,entry;
  41674. float *t;
  41675. for(i=0;i<n;){
  41676. entry = decode_packed_entry_number(book,b);
  41677. if(entry==-1)return(-1);
  41678. t = book->valuelist+entry*book->dim;
  41679. for (j=0;j<book->dim;)
  41680. a[i++]=t[j++];
  41681. }
  41682. return(0);
  41683. }
  41684. long vorbis_book_decodevv_add(codebook *book,float **a,long offset,int ch,
  41685. oggpack_buffer *b,int n){
  41686. long i,j,entry;
  41687. int chptr=0;
  41688. for(i=offset/ch;i<(offset+n)/ch;){
  41689. entry = decode_packed_entry_number(book,b);
  41690. if(entry==-1)return(-1);
  41691. {
  41692. const float *t = book->valuelist+entry*book->dim;
  41693. for (j=0;j<book->dim;j++){
  41694. a[chptr++][i]+=t[j];
  41695. if(chptr==ch){
  41696. chptr=0;
  41697. i++;
  41698. }
  41699. }
  41700. }
  41701. }
  41702. return(0);
  41703. }
  41704. /********************************************************************
  41705. * *
  41706. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  41707. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  41708. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  41709. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  41710. * *
  41711. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  41712. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  41713. * *
  41714. ********************************************************************
  41715. function: registry for time, floor, res backends and channel mappings
  41716. last mod: $Id: registry.c,v 1.15 2002/07/11 06:40:50 xiphmont Exp $
  41717. ********************************************************************/
  41718. /* seems like major overkill now; the backend numbers will grow into
  41719. the infrastructure soon enough */
  41720. extern vorbis_func_floor floor0_exportbundle;
  41721. extern vorbis_func_floor floor1_exportbundle;
  41722. extern vorbis_func_residue residue0_exportbundle;
  41723. extern vorbis_func_residue residue1_exportbundle;
  41724. extern vorbis_func_residue residue2_exportbundle;
  41725. extern vorbis_func_mapping mapping0_exportbundle;
  41726. vorbis_func_floor *_floor_P[]={
  41727. &floor0_exportbundle,
  41728. &floor1_exportbundle,
  41729. };
  41730. vorbis_func_residue *_residue_P[]={
  41731. &residue0_exportbundle,
  41732. &residue1_exportbundle,
  41733. &residue2_exportbundle,
  41734. };
  41735. vorbis_func_mapping *_mapping_P[]={
  41736. &mapping0_exportbundle,
  41737. };
  41738. /********************************************************************
  41739. * *
  41740. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  41741. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  41742. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  41743. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  41744. * *
  41745. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  41746. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  41747. * *
  41748. ********************************************************************
  41749. function: normalized modified discrete cosine transform
  41750. power of two length transform only [64 <= n ]
  41751. last mod: $Id: mdct.c,v 1.32 2002/10/16 02:43:48 xiphmont Exp $
  41752. Original algorithm adapted long ago from _The use of multirate filter
  41753. banks for coding of high quality digital audio_, by T. Sporer,
  41754. K. Brandenburg and B. Edler, collection of the European Signal
  41755. Processing Conference (EUSIPCO), Amsterdam, June 1992, Vol.1, pp
  41756. 211-214
  41757. The below code implements an algorithm that no longer looks much like
  41758. that presented in the paper, but the basic structure remains if you
  41759. dig deep enough to see it.
  41760. This module DOES NOT INCLUDE code to generate/apply the window
  41761. function. Everybody has their own weird favorite including me... I
  41762. happen to like the properties of y=sin(.5PI*sin^2(x)), but others may
  41763. vehemently disagree.
  41764. ********************************************************************/
  41765. /* this can also be run as an integer transform by uncommenting a
  41766. define in mdct.h; the integerization is a first pass and although
  41767. it's likely stable for Vorbis, the dynamic range is constrained and
  41768. roundoff isn't done (so it's noisy). Consider it functional, but
  41769. only a starting point. There's no point on a machine with an FPU */
  41770. /* build lookups for trig functions; also pre-figure scaling and
  41771. some window function algebra. */
  41772. void mdct_init(mdct_lookup *lookup,int n){
  41773. int *bitrev=_ogg_malloc(sizeof(*bitrev)*(n/4));
  41774. DATA_TYPE *T=_ogg_malloc(sizeof(*T)*(n+n/4));
  41775. int i;
  41776. int n2=n>>1;
  41777. int log2n=lookup->log2n=rint(log((float)n)/log(2.f));
  41778. lookup->n=n;
  41779. lookup->trig=T;
  41780. lookup->bitrev=bitrev;
  41781. /* trig lookups... */
  41782. for(i=0;i<n/4;i++){
  41783. T[i*2]=FLOAT_CONV(cos((M_PI/n)*(4*i)));
  41784. T[i*2+1]=FLOAT_CONV(-sin((M_PI/n)*(4*i)));
  41785. T[n2+i*2]=FLOAT_CONV(cos((M_PI/(2*n))*(2*i+1)));
  41786. T[n2+i*2+1]=FLOAT_CONV(sin((M_PI/(2*n))*(2*i+1)));
  41787. }
  41788. for(i=0;i<n/8;i++){
  41789. T[n+i*2]=FLOAT_CONV(cos((M_PI/n)*(4*i+2))*.5);
  41790. T[n+i*2+1]=FLOAT_CONV(-sin((M_PI/n)*(4*i+2))*.5);
  41791. }
  41792. /* bitreverse lookup... */
  41793. {
  41794. int mask=(1<<(log2n-1))-1,i,j;
  41795. int msb=1<<(log2n-2);
  41796. for(i=0;i<n/8;i++){
  41797. int acc=0;
  41798. for(j=0;msb>>j;j++)
  41799. if((msb>>j)&i)acc|=1<<j;
  41800. bitrev[i*2]=((~acc)&mask)-1;
  41801. bitrev[i*2+1]=acc;
  41802. }
  41803. }
  41804. lookup->scale=FLOAT_CONV(4.f/n);
  41805. }
  41806. /* 8 point butterfly (in place, 4 register) */
  41807. STIN void mdct_butterfly_8(DATA_TYPE *x){
  41808. REG_TYPE r0 = x[6] + x[2];
  41809. REG_TYPE r1 = x[6] - x[2];
  41810. REG_TYPE r2 = x[4] + x[0];
  41811. REG_TYPE r3 = x[4] - x[0];
  41812. x[6] = r0 + r2;
  41813. x[4] = r0 - r2;
  41814. r0 = x[5] - x[1];
  41815. r2 = x[7] - x[3];
  41816. x[0] = r1 + r0;
  41817. x[2] = r1 - r0;
  41818. r0 = x[5] + x[1];
  41819. r1 = x[7] + x[3];
  41820. x[3] = r2 + r3;
  41821. x[1] = r2 - r3;
  41822. x[7] = r1 + r0;
  41823. x[5] = r1 - r0;
  41824. }
  41825. /* 16 point butterfly (in place, 4 register) */
  41826. STIN void mdct_butterfly_16(DATA_TYPE *x){
  41827. REG_TYPE r0 = x[1] - x[9];
  41828. REG_TYPE r1 = x[0] - x[8];
  41829. x[8] += x[0];
  41830. x[9] += x[1];
  41831. x[0] = MULT_NORM((r0 + r1) * cPI2_8);
  41832. x[1] = MULT_NORM((r0 - r1) * cPI2_8);
  41833. r0 = x[3] - x[11];
  41834. r1 = x[10] - x[2];
  41835. x[10] += x[2];
  41836. x[11] += x[3];
  41837. x[2] = r0;
  41838. x[3] = r1;
  41839. r0 = x[12] - x[4];
  41840. r1 = x[13] - x[5];
  41841. x[12] += x[4];
  41842. x[13] += x[5];
  41843. x[4] = MULT_NORM((r0 - r1) * cPI2_8);
  41844. x[5] = MULT_NORM((r0 + r1) * cPI2_8);
  41845. r0 = x[14] - x[6];
  41846. r1 = x[15] - x[7];
  41847. x[14] += x[6];
  41848. x[15] += x[7];
  41849. x[6] = r0;
  41850. x[7] = r1;
  41851. mdct_butterfly_8(x);
  41852. mdct_butterfly_8(x+8);
  41853. }
  41854. /* 32 point butterfly (in place, 4 register) */
  41855. STIN void mdct_butterfly_32(DATA_TYPE *x){
  41856. REG_TYPE r0 = x[30] - x[14];
  41857. REG_TYPE r1 = x[31] - x[15];
  41858. x[30] += x[14];
  41859. x[31] += x[15];
  41860. x[14] = r0;
  41861. x[15] = r1;
  41862. r0 = x[28] - x[12];
  41863. r1 = x[29] - x[13];
  41864. x[28] += x[12];
  41865. x[29] += x[13];
  41866. x[12] = MULT_NORM( r0 * cPI1_8 - r1 * cPI3_8 );
  41867. x[13] = MULT_NORM( r0 * cPI3_8 + r1 * cPI1_8 );
  41868. r0 = x[26] - x[10];
  41869. r1 = x[27] - x[11];
  41870. x[26] += x[10];
  41871. x[27] += x[11];
  41872. x[10] = MULT_NORM(( r0 - r1 ) * cPI2_8);
  41873. x[11] = MULT_NORM(( r0 + r1 ) * cPI2_8);
  41874. r0 = x[24] - x[8];
  41875. r1 = x[25] - x[9];
  41876. x[24] += x[8];
  41877. x[25] += x[9];
  41878. x[8] = MULT_NORM( r0 * cPI3_8 - r1 * cPI1_8 );
  41879. x[9] = MULT_NORM( r1 * cPI3_8 + r0 * cPI1_8 );
  41880. r0 = x[22] - x[6];
  41881. r1 = x[7] - x[23];
  41882. x[22] += x[6];
  41883. x[23] += x[7];
  41884. x[6] = r1;
  41885. x[7] = r0;
  41886. r0 = x[4] - x[20];
  41887. r1 = x[5] - x[21];
  41888. x[20] += x[4];
  41889. x[21] += x[5];
  41890. x[4] = MULT_NORM( r1 * cPI1_8 + r0 * cPI3_8 );
  41891. x[5] = MULT_NORM( r1 * cPI3_8 - r0 * cPI1_8 );
  41892. r0 = x[2] - x[18];
  41893. r1 = x[3] - x[19];
  41894. x[18] += x[2];
  41895. x[19] += x[3];
  41896. x[2] = MULT_NORM(( r1 + r0 ) * cPI2_8);
  41897. x[3] = MULT_NORM(( r1 - r0 ) * cPI2_8);
  41898. r0 = x[0] - x[16];
  41899. r1 = x[1] - x[17];
  41900. x[16] += x[0];
  41901. x[17] += x[1];
  41902. x[0] = MULT_NORM( r1 * cPI3_8 + r0 * cPI1_8 );
  41903. x[1] = MULT_NORM( r1 * cPI1_8 - r0 * cPI3_8 );
  41904. mdct_butterfly_16(x);
  41905. mdct_butterfly_16(x+16);
  41906. }
  41907. /* N point first stage butterfly (in place, 2 register) */
  41908. STIN void mdct_butterfly_first(DATA_TYPE *T,
  41909. DATA_TYPE *x,
  41910. int points){
  41911. DATA_TYPE *x1 = x + points - 8;
  41912. DATA_TYPE *x2 = x + (points>>1) - 8;
  41913. REG_TYPE r0;
  41914. REG_TYPE r1;
  41915. do{
  41916. r0 = x1[6] - x2[6];
  41917. r1 = x1[7] - x2[7];
  41918. x1[6] += x2[6];
  41919. x1[7] += x2[7];
  41920. x2[6] = MULT_NORM(r1 * T[1] + r0 * T[0]);
  41921. x2[7] = MULT_NORM(r1 * T[0] - r0 * T[1]);
  41922. r0 = x1[4] - x2[4];
  41923. r1 = x1[5] - x2[5];
  41924. x1[4] += x2[4];
  41925. x1[5] += x2[5];
  41926. x2[4] = MULT_NORM(r1 * T[5] + r0 * T[4]);
  41927. x2[5] = MULT_NORM(r1 * T[4] - r0 * T[5]);
  41928. r0 = x1[2] - x2[2];
  41929. r1 = x1[3] - x2[3];
  41930. x1[2] += x2[2];
  41931. x1[3] += x2[3];
  41932. x2[2] = MULT_NORM(r1 * T[9] + r0 * T[8]);
  41933. x2[3] = MULT_NORM(r1 * T[8] - r0 * T[9]);
  41934. r0 = x1[0] - x2[0];
  41935. r1 = x1[1] - x2[1];
  41936. x1[0] += x2[0];
  41937. x1[1] += x2[1];
  41938. x2[0] = MULT_NORM(r1 * T[13] + r0 * T[12]);
  41939. x2[1] = MULT_NORM(r1 * T[12] - r0 * T[13]);
  41940. x1-=8;
  41941. x2-=8;
  41942. T+=16;
  41943. }while(x2>=x);
  41944. }
  41945. /* N/stage point generic N stage butterfly (in place, 2 register) */
  41946. STIN void mdct_butterfly_generic(DATA_TYPE *T,
  41947. DATA_TYPE *x,
  41948. int points,
  41949. int trigint){
  41950. DATA_TYPE *x1 = x + points - 8;
  41951. DATA_TYPE *x2 = x + (points>>1) - 8;
  41952. REG_TYPE r0;
  41953. REG_TYPE r1;
  41954. do{
  41955. r0 = x1[6] - x2[6];
  41956. r1 = x1[7] - x2[7];
  41957. x1[6] += x2[6];
  41958. x1[7] += x2[7];
  41959. x2[6] = MULT_NORM(r1 * T[1] + r0 * T[0]);
  41960. x2[7] = MULT_NORM(r1 * T[0] - r0 * T[1]);
  41961. T+=trigint;
  41962. r0 = x1[4] - x2[4];
  41963. r1 = x1[5] - x2[5];
  41964. x1[4] += x2[4];
  41965. x1[5] += x2[5];
  41966. x2[4] = MULT_NORM(r1 * T[1] + r0 * T[0]);
  41967. x2[5] = MULT_NORM(r1 * T[0] - r0 * T[1]);
  41968. T+=trigint;
  41969. r0 = x1[2] - x2[2];
  41970. r1 = x1[3] - x2[3];
  41971. x1[2] += x2[2];
  41972. x1[3] += x2[3];
  41973. x2[2] = MULT_NORM(r1 * T[1] + r0 * T[0]);
  41974. x2[3] = MULT_NORM(r1 * T[0] - r0 * T[1]);
  41975. T+=trigint;
  41976. r0 = x1[0] - x2[0];
  41977. r1 = x1[1] - x2[1];
  41978. x1[0] += x2[0];
  41979. x1[1] += x2[1];
  41980. x2[0] = MULT_NORM(r1 * T[1] + r0 * T[0]);
  41981. x2[1] = MULT_NORM(r1 * T[0] - r0 * T[1]);
  41982. T+=trigint;
  41983. x1-=8;
  41984. x2-=8;
  41985. }while(x2>=x);
  41986. }
  41987. STIN void mdct_butterflies(mdct_lookup *init,
  41988. DATA_TYPE *x,
  41989. int points){
  41990. DATA_TYPE *T=init->trig;
  41991. int stages=init->log2n-5;
  41992. int i,j;
  41993. if(--stages>0){
  41994. mdct_butterfly_first(T,x,points);
  41995. }
  41996. for(i=1;--stages>0;i++){
  41997. for(j=0;j<(1<<i);j++)
  41998. mdct_butterfly_generic(T,x+(points>>i)*j,points>>i,4<<i);
  41999. }
  42000. for(j=0;j<points;j+=32)
  42001. mdct_butterfly_32(x+j);
  42002. }
  42003. void mdct_clear(mdct_lookup *l){
  42004. if(l){
  42005. if(l->trig)_ogg_free(l->trig);
  42006. if(l->bitrev)_ogg_free(l->bitrev);
  42007. memset(l,0,sizeof(*l));
  42008. }
  42009. }
  42010. STIN void mdct_bitreverse(mdct_lookup *init,
  42011. DATA_TYPE *x){
  42012. int n = init->n;
  42013. int *bit = init->bitrev;
  42014. DATA_TYPE *w0 = x;
  42015. DATA_TYPE *w1 = x = w0+(n>>1);
  42016. DATA_TYPE *T = init->trig+n;
  42017. do{
  42018. DATA_TYPE *x0 = x+bit[0];
  42019. DATA_TYPE *x1 = x+bit[1];
  42020. REG_TYPE r0 = x0[1] - x1[1];
  42021. REG_TYPE r1 = x0[0] + x1[0];
  42022. REG_TYPE r2 = MULT_NORM(r1 * T[0] + r0 * T[1]);
  42023. REG_TYPE r3 = MULT_NORM(r1 * T[1] - r0 * T[0]);
  42024. w1 -= 4;
  42025. r0 = HALVE(x0[1] + x1[1]);
  42026. r1 = HALVE(x0[0] - x1[0]);
  42027. w0[0] = r0 + r2;
  42028. w1[2] = r0 - r2;
  42029. w0[1] = r1 + r3;
  42030. w1[3] = r3 - r1;
  42031. x0 = x+bit[2];
  42032. x1 = x+bit[3];
  42033. r0 = x0[1] - x1[1];
  42034. r1 = x0[0] + x1[0];
  42035. r2 = MULT_NORM(r1 * T[2] + r0 * T[3]);
  42036. r3 = MULT_NORM(r1 * T[3] - r0 * T[2]);
  42037. r0 = HALVE(x0[1] + x1[1]);
  42038. r1 = HALVE(x0[0] - x1[0]);
  42039. w0[2] = r0 + r2;
  42040. w1[0] = r0 - r2;
  42041. w0[3] = r1 + r3;
  42042. w1[1] = r3 - r1;
  42043. T += 4;
  42044. bit += 4;
  42045. w0 += 4;
  42046. }while(w0<w1);
  42047. }
  42048. void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out){
  42049. int n=init->n;
  42050. int n2=n>>1;
  42051. int n4=n>>2;
  42052. /* rotate */
  42053. DATA_TYPE *iX = in+n2-7;
  42054. DATA_TYPE *oX = out+n2+n4;
  42055. DATA_TYPE *T = init->trig+n4;
  42056. do{
  42057. oX -= 4;
  42058. oX[0] = MULT_NORM(-iX[2] * T[3] - iX[0] * T[2]);
  42059. oX[1] = MULT_NORM (iX[0] * T[3] - iX[2] * T[2]);
  42060. oX[2] = MULT_NORM(-iX[6] * T[1] - iX[4] * T[0]);
  42061. oX[3] = MULT_NORM (iX[4] * T[1] - iX[6] * T[0]);
  42062. iX -= 8;
  42063. T += 4;
  42064. }while(iX>=in);
  42065. iX = in+n2-8;
  42066. oX = out+n2+n4;
  42067. T = init->trig+n4;
  42068. do{
  42069. T -= 4;
  42070. oX[0] = MULT_NORM (iX[4] * T[3] + iX[6] * T[2]);
  42071. oX[1] = MULT_NORM (iX[4] * T[2] - iX[6] * T[3]);
  42072. oX[2] = MULT_NORM (iX[0] * T[1] + iX[2] * T[0]);
  42073. oX[3] = MULT_NORM (iX[0] * T[0] - iX[2] * T[1]);
  42074. iX -= 8;
  42075. oX += 4;
  42076. }while(iX>=in);
  42077. mdct_butterflies(init,out+n2,n2);
  42078. mdct_bitreverse(init,out);
  42079. /* roatate + window */
  42080. {
  42081. DATA_TYPE *oX1=out+n2+n4;
  42082. DATA_TYPE *oX2=out+n2+n4;
  42083. DATA_TYPE *iX =out;
  42084. T =init->trig+n2;
  42085. do{
  42086. oX1-=4;
  42087. oX1[3] = MULT_NORM (iX[0] * T[1] - iX[1] * T[0]);
  42088. oX2[0] = -MULT_NORM (iX[0] * T[0] + iX[1] * T[1]);
  42089. oX1[2] = MULT_NORM (iX[2] * T[3] - iX[3] * T[2]);
  42090. oX2[1] = -MULT_NORM (iX[2] * T[2] + iX[3] * T[3]);
  42091. oX1[1] = MULT_NORM (iX[4] * T[5] - iX[5] * T[4]);
  42092. oX2[2] = -MULT_NORM (iX[4] * T[4] + iX[5] * T[5]);
  42093. oX1[0] = MULT_NORM (iX[6] * T[7] - iX[7] * T[6]);
  42094. oX2[3] = -MULT_NORM (iX[6] * T[6] + iX[7] * T[7]);
  42095. oX2+=4;
  42096. iX += 8;
  42097. T += 8;
  42098. }while(iX<oX1);
  42099. iX=out+n2+n4;
  42100. oX1=out+n4;
  42101. oX2=oX1;
  42102. do{
  42103. oX1-=4;
  42104. iX-=4;
  42105. oX2[0] = -(oX1[3] = iX[3]);
  42106. oX2[1] = -(oX1[2] = iX[2]);
  42107. oX2[2] = -(oX1[1] = iX[1]);
  42108. oX2[3] = -(oX1[0] = iX[0]);
  42109. oX2+=4;
  42110. }while(oX2<iX);
  42111. iX=out+n2+n4;
  42112. oX1=out+n2+n4;
  42113. oX2=out+n2;
  42114. do{
  42115. oX1-=4;
  42116. oX1[0]= iX[3];
  42117. oX1[1]= iX[2];
  42118. oX1[2]= iX[1];
  42119. oX1[3]= iX[0];
  42120. iX+=4;
  42121. }while(oX1>oX2);
  42122. }
  42123. }
  42124. void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out){
  42125. int n=init->n;
  42126. int n2=n>>1;
  42127. int n4=n>>2;
  42128. int n8=n>>3;
  42129. DATA_TYPE *w=alloca(n*sizeof(*w)); /* forward needs working space */
  42130. DATA_TYPE *w2=w+n2;
  42131. /* rotate */
  42132. /* window + rotate + step 1 */
  42133. REG_TYPE r0;
  42134. REG_TYPE r1;
  42135. DATA_TYPE *x0=in+n2+n4;
  42136. DATA_TYPE *x1=x0+1;
  42137. DATA_TYPE *T=init->trig+n2;
  42138. int i=0;
  42139. for(i=0;i<n8;i+=2){
  42140. x0 -=4;
  42141. T-=2;
  42142. r0= x0[2] + x1[0];
  42143. r1= x0[0] + x1[2];
  42144. w2[i]= MULT_NORM(r1*T[1] + r0*T[0]);
  42145. w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]);
  42146. x1 +=4;
  42147. }
  42148. x1=in+1;
  42149. for(;i<n2-n8;i+=2){
  42150. T-=2;
  42151. x0 -=4;
  42152. r0= x0[2] - x1[0];
  42153. r1= x0[0] - x1[2];
  42154. w2[i]= MULT_NORM(r1*T[1] + r0*T[0]);
  42155. w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]);
  42156. x1 +=4;
  42157. }
  42158. x0=in+n;
  42159. for(;i<n2;i+=2){
  42160. T-=2;
  42161. x0 -=4;
  42162. r0= -x0[2] - x1[0];
  42163. r1= -x0[0] - x1[2];
  42164. w2[i]= MULT_NORM(r1*T[1] + r0*T[0]);
  42165. w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]);
  42166. x1 +=4;
  42167. }
  42168. mdct_butterflies(init,w+n2,n2);
  42169. mdct_bitreverse(init,w);
  42170. /* roatate + window */
  42171. T=init->trig+n2;
  42172. x0=out+n2;
  42173. for(i=0;i<n4;i++){
  42174. x0--;
  42175. out[i] =MULT_NORM((w[0]*T[0]+w[1]*T[1])*init->scale);
  42176. x0[0] =MULT_NORM((w[0]*T[1]-w[1]*T[0])*init->scale);
  42177. w+=2;
  42178. T+=2;
  42179. }
  42180. }
  42181. /********************************************************************
  42182. * *
  42183. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  42184. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  42185. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  42186. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  42187. * *
  42188. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  42189. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  42190. * *
  42191. ********************************************************************
  42192. function: psychoacoustics not including preecho
  42193. last mod: $Id: psy.c,v 1.81 2002/10/21 07:00:11 xiphmont Exp $
  42194. ********************************************************************/
  42195. /********************************************************************
  42196. * *
  42197. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  42198. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  42199. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  42200. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  42201. * *
  42202. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  42203. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  42204. * *
  42205. ********************************************************************
  42206. function: masking curve data for psychoacoustics
  42207. last mod: $Id: masking.h,v 1.24 2002/07/01 11:20:11 xiphmont Exp $
  42208. ********************************************************************/
  42209. #define _V_MASKING_H_
  42210. /* more detailed ATH; the bass if flat to save stressing the floor
  42211. overly for only a bin or two of savings. */
  42212. #define MAX_ATH 88
  42213. static float ATH[]={
  42214. /*15*/ -51, -52, -53, -54, -55, -56, -57, -58,
  42215. /*31*/ -59, -60, -61, -62, -63, -64, -65, -66,
  42216. /*63*/ -67, -68, -69, -70, -71, -72, -73, -74,
  42217. /*125*/ -75, -76, -77, -78, -80, -81, -82, -83,
  42218. /*250*/ -84, -85, -86, -87, -88, -88, -89, -89,
  42219. /*500*/ -90, -91, -91, -92, -93, -94, -95, -96,
  42220. /*1k*/ -96, -97, -98, -98, -99, -99,-100,-100,
  42221. /*2k*/ -101,-102,-103,-104,-106,-107,-107,-107,
  42222. /*4k*/ -107,-105,-103,-102,-101, -99, -98, -96,
  42223. /*8k*/ -95, -95, -96, -97, -96, -95, -93, -90,
  42224. /*16k*/ -80, -70, -50, -40, -30, -30, -30, -30
  42225. };
  42226. /* The tone masking curves from Ehmer's and Fielder's papers have been
  42227. replaced by an empirically collected data set. The previously
  42228. published values were, far too often, simply on crack. */
  42229. #define EHMER_OFFSET 16
  42230. #define EHMER_MAX 56
  42231. /* masking tones from -50 to 0dB, 62.5 through 16kHz at half octaves
  42232. test tones from -2 octaves to +5 octaves sampled at eighth octaves */
  42233. /* (Vorbis 0dB, the loudest possible tone, is assumed to be ~100dB SPL
  42234. for collection of these curves) */
  42235. static float tonemasks[P_BANDS][6][EHMER_MAX]={
  42236. /* 62.5 Hz */
  42237. {{ -60, -60, -60, -60, -60, -60, -60, -60,
  42238. -60, -60, -60, -60, -62, -62, -65, -73,
  42239. -69, -68, -68, -67, -70, -70, -72, -74,
  42240. -75, -79, -79, -80, -83, -88, -93, -100,
  42241. -110, -999, -999, -999, -999, -999, -999, -999,
  42242. -999, -999, -999, -999, -999, -999, -999, -999,
  42243. -999, -999, -999, -999, -999, -999, -999, -999},
  42244. { -48, -48, -48, -48, -48, -48, -48, -48,
  42245. -48, -48, -48, -48, -48, -53, -61, -66,
  42246. -66, -68, -67, -70, -76, -76, -72, -73,
  42247. -75, -76, -78, -79, -83, -88, -93, -100,
  42248. -110, -999, -999, -999, -999, -999, -999, -999,
  42249. -999, -999, -999, -999, -999, -999, -999, -999,
  42250. -999, -999, -999, -999, -999, -999, -999, -999},
  42251. { -37, -37, -37, -37, -37, -37, -37, -37,
  42252. -38, -40, -42, -46, -48, -53, -55, -62,
  42253. -65, -58, -56, -56, -61, -60, -65, -67,
  42254. -69, -71, -77, -77, -78, -80, -82, -84,
  42255. -88, -93, -98, -106, -112, -999, -999, -999,
  42256. -999, -999, -999, -999, -999, -999, -999, -999,
  42257. -999, -999, -999, -999, -999, -999, -999, -999},
  42258. { -25, -25, -25, -25, -25, -25, -25, -25,
  42259. -25, -26, -27, -29, -32, -38, -48, -52,
  42260. -52, -50, -48, -48, -51, -52, -54, -60,
  42261. -67, -67, -66, -68, -69, -73, -73, -76,
  42262. -80, -81, -81, -85, -85, -86, -88, -93,
  42263. -100, -110, -999, -999, -999, -999, -999, -999,
  42264. -999, -999, -999, -999, -999, -999, -999, -999},
  42265. { -16, -16, -16, -16, -16, -16, -16, -16,
  42266. -17, -19, -20, -22, -26, -28, -31, -40,
  42267. -47, -39, -39, -40, -42, -43, -47, -51,
  42268. -57, -52, -55, -55, -60, -58, -62, -63,
  42269. -70, -67, -69, -72, -73, -77, -80, -82,
  42270. -83, -87, -90, -94, -98, -104, -115, -999,
  42271. -999, -999, -999, -999, -999, -999, -999, -999},
  42272. { -8, -8, -8, -8, -8, -8, -8, -8,
  42273. -8, -8, -10, -11, -15, -19, -25, -30,
  42274. -34, -31, -30, -31, -29, -32, -35, -42,
  42275. -48, -42, -44, -46, -50, -50, -51, -52,
  42276. -59, -54, -55, -55, -58, -62, -63, -66,
  42277. -72, -73, -76, -75, -78, -80, -80, -81,
  42278. -84, -88, -90, -94, -98, -101, -106, -110}},
  42279. /* 88Hz */
  42280. {{ -66, -66, -66, -66, -66, -66, -66, -66,
  42281. -66, -66, -66, -66, -66, -67, -67, -67,
  42282. -76, -72, -71, -74, -76, -76, -75, -78,
  42283. -79, -79, -81, -83, -86, -89, -93, -97,
  42284. -100, -105, -110, -999, -999, -999, -999, -999,
  42285. -999, -999, -999, -999, -999, -999, -999, -999,
  42286. -999, -999, -999, -999, -999, -999, -999, -999},
  42287. { -47, -47, -47, -47, -47, -47, -47, -47,
  42288. -47, -47, -47, -48, -51, -55, -59, -66,
  42289. -66, -66, -67, -66, -68, -69, -70, -74,
  42290. -79, -77, -77, -78, -80, -81, -82, -84,
  42291. -86, -88, -91, -95, -100, -108, -116, -999,
  42292. -999, -999, -999, -999, -999, -999, -999, -999,
  42293. -999, -999, -999, -999, -999, -999, -999, -999},
  42294. { -36, -36, -36, -36, -36, -36, -36, -36,
  42295. -36, -37, -37, -41, -44, -48, -51, -58,
  42296. -62, -60, -57, -59, -59, -60, -63, -65,
  42297. -72, -71, -70, -72, -74, -77, -76, -78,
  42298. -81, -81, -80, -83, -86, -91, -96, -100,
  42299. -105, -110, -999, -999, -999, -999, -999, -999,
  42300. -999, -999, -999, -999, -999, -999, -999, -999},
  42301. { -28, -28, -28, -28, -28, -28, -28, -28,
  42302. -28, -30, -32, -32, -33, -35, -41, -49,
  42303. -50, -49, -47, -48, -48, -52, -51, -57,
  42304. -65, -61, -59, -61, -64, -69, -70, -74,
  42305. -77, -77, -78, -81, -84, -85, -87, -90,
  42306. -92, -96, -100, -107, -112, -999, -999, -999,
  42307. -999, -999, -999, -999, -999, -999, -999, -999},
  42308. { -19, -19, -19, -19, -19, -19, -19, -19,
  42309. -20, -21, -23, -27, -30, -35, -36, -41,
  42310. -46, -44, -42, -40, -41, -41, -43, -48,
  42311. -55, -53, -52, -53, -56, -59, -58, -60,
  42312. -67, -66, -69, -71, -72, -75, -79, -81,
  42313. -84, -87, -90, -93, -97, -101, -107, -114,
  42314. -999, -999, -999, -999, -999, -999, -999, -999},
  42315. { -9, -9, -9, -9, -9, -9, -9, -9,
  42316. -11, -12, -12, -15, -16, -20, -23, -30,
  42317. -37, -34, -33, -34, -31, -32, -32, -38,
  42318. -47, -44, -41, -40, -47, -49, -46, -46,
  42319. -58, -50, -50, -54, -58, -62, -64, -67,
  42320. -67, -70, -72, -76, -79, -83, -87, -91,
  42321. -96, -100, -104, -110, -999, -999, -999, -999}},
  42322. /* 125 Hz */
  42323. {{ -62, -62, -62, -62, -62, -62, -62, -62,
  42324. -62, -62, -63, -64, -66, -67, -66, -68,
  42325. -75, -72, -76, -75, -76, -78, -79, -82,
  42326. -84, -85, -90, -94, -101, -110, -999, -999,
  42327. -999, -999, -999, -999, -999, -999, -999, -999,
  42328. -999, -999, -999, -999, -999, -999, -999, -999,
  42329. -999, -999, -999, -999, -999, -999, -999, -999},
  42330. { -59, -59, -59, -59, -59, -59, -59, -59,
  42331. -59, -59, -59, -60, -60, -61, -63, -66,
  42332. -71, -68, -70, -70, -71, -72, -72, -75,
  42333. -81, -78, -79, -82, -83, -86, -90, -97,
  42334. -103, -113, -999, -999, -999, -999, -999, -999,
  42335. -999, -999, -999, -999, -999, -999, -999, -999,
  42336. -999, -999, -999, -999, -999, -999, -999, -999},
  42337. { -53, -53, -53, -53, -53, -53, -53, -53,
  42338. -53, -54, -55, -57, -56, -57, -55, -61,
  42339. -65, -60, -60, -62, -63, -63, -66, -68,
  42340. -74, -73, -75, -75, -78, -80, -80, -82,
  42341. -85, -90, -96, -101, -108, -999, -999, -999,
  42342. -999, -999, -999, -999, -999, -999, -999, -999,
  42343. -999, -999, -999, -999, -999, -999, -999, -999},
  42344. { -46, -46, -46, -46, -46, -46, -46, -46,
  42345. -46, -46, -47, -47, -47, -47, -48, -51,
  42346. -57, -51, -49, -50, -51, -53, -54, -59,
  42347. -66, -60, -62, -67, -67, -70, -72, -75,
  42348. -76, -78, -81, -85, -88, -94, -97, -104,
  42349. -112, -999, -999, -999, -999, -999, -999, -999,
  42350. -999, -999, -999, -999, -999, -999, -999, -999},
  42351. { -36, -36, -36, -36, -36, -36, -36, -36,
  42352. -39, -41, -42, -42, -39, -38, -41, -43,
  42353. -52, -44, -40, -39, -37, -37, -40, -47,
  42354. -54, -50, -48, -50, -55, -61, -59, -62,
  42355. -66, -66, -66, -69, -69, -73, -74, -74,
  42356. -75, -77, -79, -82, -87, -91, -95, -100,
  42357. -108, -115, -999, -999, -999, -999, -999, -999},
  42358. { -28, -26, -24, -22, -20, -20, -23, -29,
  42359. -30, -31, -28, -27, -28, -28, -28, -35,
  42360. -40, -33, -32, -29, -30, -30, -30, -37,
  42361. -45, -41, -37, -38, -45, -47, -47, -48,
  42362. -53, -49, -48, -50, -49, -49, -51, -52,
  42363. -58, -56, -57, -56, -60, -61, -62, -70,
  42364. -72, -74, -78, -83, -88, -93, -100, -106}},
  42365. /* 177 Hz */
  42366. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42367. -999, -110, -105, -100, -95, -91, -87, -83,
  42368. -80, -78, -76, -78, -78, -81, -83, -85,
  42369. -86, -85, -86, -87, -90, -97, -107, -999,
  42370. -999, -999, -999, -999, -999, -999, -999, -999,
  42371. -999, -999, -999, -999, -999, -999, -999, -999,
  42372. -999, -999, -999, -999, -999, -999, -999, -999},
  42373. {-999, -999, -999, -110, -105, -100, -95, -90,
  42374. -85, -81, -77, -73, -70, -67, -67, -68,
  42375. -75, -73, -70, -69, -70, -72, -75, -79,
  42376. -84, -83, -84, -86, -88, -89, -89, -93,
  42377. -98, -105, -112, -999, -999, -999, -999, -999,
  42378. -999, -999, -999, -999, -999, -999, -999, -999,
  42379. -999, -999, -999, -999, -999, -999, -999, -999},
  42380. {-105, -100, -95, -90, -85, -80, -76, -71,
  42381. -68, -68, -65, -63, -63, -62, -62, -64,
  42382. -65, -64, -61, -62, -63, -64, -66, -68,
  42383. -73, -73, -74, -75, -76, -81, -83, -85,
  42384. -88, -89, -92, -95, -100, -108, -999, -999,
  42385. -999, -999, -999, -999, -999, -999, -999, -999,
  42386. -999, -999, -999, -999, -999, -999, -999, -999},
  42387. { -80, -75, -71, -68, -65, -63, -62, -61,
  42388. -61, -61, -61, -59, -56, -57, -53, -50,
  42389. -58, -52, -50, -50, -52, -53, -54, -58,
  42390. -67, -63, -67, -68, -72, -75, -78, -80,
  42391. -81, -81, -82, -85, -89, -90, -93, -97,
  42392. -101, -107, -114, -999, -999, -999, -999, -999,
  42393. -999, -999, -999, -999, -999, -999, -999, -999},
  42394. { -65, -61, -59, -57, -56, -55, -55, -56,
  42395. -56, -57, -55, -53, -52, -47, -44, -44,
  42396. -50, -44, -41, -39, -39, -42, -40, -46,
  42397. -51, -49, -50, -53, -54, -63, -60, -61,
  42398. -62, -66, -66, -66, -70, -73, -74, -75,
  42399. -76, -75, -79, -85, -89, -91, -96, -102,
  42400. -110, -999, -999, -999, -999, -999, -999, -999},
  42401. { -52, -50, -49, -49, -48, -48, -48, -49,
  42402. -50, -50, -49, -46, -43, -39, -35, -33,
  42403. -38, -36, -32, -29, -32, -32, -32, -35,
  42404. -44, -39, -38, -38, -46, -50, -45, -46,
  42405. -53, -50, -50, -50, -54, -54, -53, -53,
  42406. -56, -57, -59, -66, -70, -72, -74, -79,
  42407. -83, -85, -90, -97, -114, -999, -999, -999}},
  42408. /* 250 Hz */
  42409. {{-999, -999, -999, -999, -999, -999, -110, -105,
  42410. -100, -95, -90, -86, -80, -75, -75, -79,
  42411. -80, -79, -80, -81, -82, -88, -95, -103,
  42412. -110, -999, -999, -999, -999, -999, -999, -999,
  42413. -999, -999, -999, -999, -999, -999, -999, -999,
  42414. -999, -999, -999, -999, -999, -999, -999, -999,
  42415. -999, -999, -999, -999, -999, -999, -999, -999},
  42416. {-999, -999, -999, -999, -108, -103, -98, -93,
  42417. -88, -83, -79, -78, -75, -71, -67, -68,
  42418. -73, -73, -72, -73, -75, -77, -80, -82,
  42419. -88, -93, -100, -107, -114, -999, -999, -999,
  42420. -999, -999, -999, -999, -999, -999, -999, -999,
  42421. -999, -999, -999, -999, -999, -999, -999, -999,
  42422. -999, -999, -999, -999, -999, -999, -999, -999},
  42423. {-999, -999, -999, -110, -105, -101, -96, -90,
  42424. -86, -81, -77, -73, -69, -66, -61, -62,
  42425. -66, -64, -62, -65, -66, -70, -72, -76,
  42426. -81, -80, -84, -90, -95, -102, -110, -999,
  42427. -999, -999, -999, -999, -999, -999, -999, -999,
  42428. -999, -999, -999, -999, -999, -999, -999, -999,
  42429. -999, -999, -999, -999, -999, -999, -999, -999},
  42430. {-999, -999, -999, -107, -103, -97, -92, -88,
  42431. -83, -79, -74, -70, -66, -59, -53, -58,
  42432. -62, -55, -54, -54, -54, -58, -61, -62,
  42433. -72, -70, -72, -75, -78, -80, -81, -80,
  42434. -83, -83, -88, -93, -100, -107, -115, -999,
  42435. -999, -999, -999, -999, -999, -999, -999, -999,
  42436. -999, -999, -999, -999, -999, -999, -999, -999},
  42437. {-999, -999, -999, -105, -100, -95, -90, -85,
  42438. -80, -75, -70, -66, -62, -56, -48, -44,
  42439. -48, -46, -46, -43, -46, -48, -48, -51,
  42440. -58, -58, -59, -60, -62, -62, -61, -61,
  42441. -65, -64, -65, -68, -70, -74, -75, -78,
  42442. -81, -86, -95, -110, -999, -999, -999, -999,
  42443. -999, -999, -999, -999, -999, -999, -999, -999},
  42444. {-999, -999, -105, -100, -95, -90, -85, -80,
  42445. -75, -70, -65, -61, -55, -49, -39, -33,
  42446. -40, -35, -32, -38, -40, -33, -35, -37,
  42447. -46, -41, -45, -44, -46, -42, -45, -46,
  42448. -52, -50, -50, -50, -54, -54, -55, -57,
  42449. -62, -64, -66, -68, -70, -76, -81, -90,
  42450. -100, -110, -999, -999, -999, -999, -999, -999}},
  42451. /* 354 hz */
  42452. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42453. -105, -98, -90, -85, -82, -83, -80, -78,
  42454. -84, -79, -80, -83, -87, -89, -91, -93,
  42455. -99, -106, -117, -999, -999, -999, -999, -999,
  42456. -999, -999, -999, -999, -999, -999, -999, -999,
  42457. -999, -999, -999, -999, -999, -999, -999, -999,
  42458. -999, -999, -999, -999, -999, -999, -999, -999},
  42459. {-999, -999, -999, -999, -999, -999, -999, -999,
  42460. -105, -98, -90, -85, -80, -75, -70, -68,
  42461. -74, -72, -74, -77, -80, -82, -85, -87,
  42462. -92, -89, -91, -95, -100, -106, -112, -999,
  42463. -999, -999, -999, -999, -999, -999, -999, -999,
  42464. -999, -999, -999, -999, -999, -999, -999, -999,
  42465. -999, -999, -999, -999, -999, -999, -999, -999},
  42466. {-999, -999, -999, -999, -999, -999, -999, -999,
  42467. -105, -98, -90, -83, -75, -71, -63, -64,
  42468. -67, -62, -64, -67, -70, -73, -77, -81,
  42469. -84, -83, -85, -89, -90, -93, -98, -104,
  42470. -109, -114, -999, -999, -999, -999, -999, -999,
  42471. -999, -999, -999, -999, -999, -999, -999, -999,
  42472. -999, -999, -999, -999, -999, -999, -999, -999},
  42473. {-999, -999, -999, -999, -999, -999, -999, -999,
  42474. -103, -96, -88, -81, -75, -68, -58, -54,
  42475. -56, -54, -56, -56, -58, -60, -63, -66,
  42476. -74, -69, -72, -72, -75, -74, -77, -81,
  42477. -81, -82, -84, -87, -93, -96, -99, -104,
  42478. -110, -999, -999, -999, -999, -999, -999, -999,
  42479. -999, -999, -999, -999, -999, -999, -999, -999},
  42480. {-999, -999, -999, -999, -999, -108, -102, -96,
  42481. -91, -85, -80, -74, -68, -60, -51, -46,
  42482. -48, -46, -43, -45, -47, -47, -49, -48,
  42483. -56, -53, -55, -58, -57, -63, -58, -60,
  42484. -66, -64, -67, -70, -70, -74, -77, -84,
  42485. -86, -89, -91, -93, -94, -101, -109, -118,
  42486. -999, -999, -999, -999, -999, -999, -999, -999},
  42487. {-999, -999, -999, -108, -103, -98, -93, -88,
  42488. -83, -78, -73, -68, -60, -53, -44, -35,
  42489. -38, -38, -34, -34, -36, -40, -41, -44,
  42490. -51, -45, -46, -47, -46, -54, -50, -49,
  42491. -50, -50, -50, -51, -54, -57, -58, -60,
  42492. -66, -66, -66, -64, -65, -68, -77, -82,
  42493. -87, -95, -110, -999, -999, -999, -999, -999}},
  42494. /* 500 Hz */
  42495. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42496. -107, -102, -97, -92, -87, -83, -78, -75,
  42497. -82, -79, -83, -85, -89, -92, -95, -98,
  42498. -101, -105, -109, -113, -999, -999, -999, -999,
  42499. -999, -999, -999, -999, -999, -999, -999, -999,
  42500. -999, -999, -999, -999, -999, -999, -999, -999,
  42501. -999, -999, -999, -999, -999, -999, -999, -999},
  42502. {-999, -999, -999, -999, -999, -999, -999, -106,
  42503. -100, -95, -90, -86, -81, -78, -74, -69,
  42504. -74, -74, -76, -79, -83, -84, -86, -89,
  42505. -92, -97, -93, -100, -103, -107, -110, -999,
  42506. -999, -999, -999, -999, -999, -999, -999, -999,
  42507. -999, -999, -999, -999, -999, -999, -999, -999,
  42508. -999, -999, -999, -999, -999, -999, -999, -999},
  42509. {-999, -999, -999, -999, -999, -999, -106, -100,
  42510. -95, -90, -87, -83, -80, -75, -69, -60,
  42511. -66, -66, -68, -70, -74, -78, -79, -81,
  42512. -81, -83, -84, -87, -93, -96, -99, -103,
  42513. -107, -110, -999, -999, -999, -999, -999, -999,
  42514. -999, -999, -999, -999, -999, -999, -999, -999,
  42515. -999, -999, -999, -999, -999, -999, -999, -999},
  42516. {-999, -999, -999, -999, -999, -108, -103, -98,
  42517. -93, -89, -85, -82, -78, -71, -62, -55,
  42518. -58, -58, -54, -54, -55, -59, -61, -62,
  42519. -70, -66, -66, -67, -70, -72, -75, -78,
  42520. -84, -84, -84, -88, -91, -90, -95, -98,
  42521. -102, -103, -106, -110, -999, -999, -999, -999,
  42522. -999, -999, -999, -999, -999, -999, -999, -999},
  42523. {-999, -999, -999, -999, -108, -103, -98, -94,
  42524. -90, -87, -82, -79, -73, -67, -58, -47,
  42525. -50, -45, -41, -45, -48, -44, -44, -49,
  42526. -54, -51, -48, -47, -49, -50, -51, -57,
  42527. -58, -60, -63, -69, -70, -69, -71, -74,
  42528. -78, -82, -90, -95, -101, -105, -110, -999,
  42529. -999, -999, -999, -999, -999, -999, -999, -999},
  42530. {-999, -999, -999, -105, -101, -97, -93, -90,
  42531. -85, -80, -77, -72, -65, -56, -48, -37,
  42532. -40, -36, -34, -40, -50, -47, -38, -41,
  42533. -47, -38, -35, -39, -38, -43, -40, -45,
  42534. -50, -45, -44, -47, -50, -55, -48, -48,
  42535. -52, -66, -70, -76, -82, -90, -97, -105,
  42536. -110, -999, -999, -999, -999, -999, -999, -999}},
  42537. /* 707 Hz */
  42538. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42539. -999, -108, -103, -98, -93, -86, -79, -76,
  42540. -83, -81, -85, -87, -89, -93, -98, -102,
  42541. -107, -112, -999, -999, -999, -999, -999, -999,
  42542. -999, -999, -999, -999, -999, -999, -999, -999,
  42543. -999, -999, -999, -999, -999, -999, -999, -999,
  42544. -999, -999, -999, -999, -999, -999, -999, -999},
  42545. {-999, -999, -999, -999, -999, -999, -999, -999,
  42546. -999, -108, -103, -98, -93, -86, -79, -71,
  42547. -77, -74, -77, -79, -81, -84, -85, -90,
  42548. -92, -93, -92, -98, -101, -108, -112, -999,
  42549. -999, -999, -999, -999, -999, -999, -999, -999,
  42550. -999, -999, -999, -999, -999, -999, -999, -999,
  42551. -999, -999, -999, -999, -999, -999, -999, -999},
  42552. {-999, -999, -999, -999, -999, -999, -999, -999,
  42553. -108, -103, -98, -93, -87, -78, -68, -65,
  42554. -66, -62, -65, -67, -70, -73, -75, -78,
  42555. -82, -82, -83, -84, -91, -93, -98, -102,
  42556. -106, -110, -999, -999, -999, -999, -999, -999,
  42557. -999, -999, -999, -999, -999, -999, -999, -999,
  42558. -999, -999, -999, -999, -999, -999, -999, -999},
  42559. {-999, -999, -999, -999, -999, -999, -999, -999,
  42560. -105, -100, -95, -90, -82, -74, -62, -57,
  42561. -58, -56, -51, -52, -52, -54, -54, -58,
  42562. -66, -59, -60, -63, -66, -69, -73, -79,
  42563. -83, -84, -80, -81, -81, -82, -88, -92,
  42564. -98, -105, -113, -999, -999, -999, -999, -999,
  42565. -999, -999, -999, -999, -999, -999, -999, -999},
  42566. {-999, -999, -999, -999, -999, -999, -999, -107,
  42567. -102, -97, -92, -84, -79, -69, -57, -47,
  42568. -52, -47, -44, -45, -50, -52, -42, -42,
  42569. -53, -43, -43, -48, -51, -56, -55, -52,
  42570. -57, -59, -61, -62, -67, -71, -78, -83,
  42571. -86, -94, -98, -103, -110, -999, -999, -999,
  42572. -999, -999, -999, -999, -999, -999, -999, -999},
  42573. {-999, -999, -999, -999, -999, -999, -105, -100,
  42574. -95, -90, -84, -78, -70, -61, -51, -41,
  42575. -40, -38, -40, -46, -52, -51, -41, -40,
  42576. -46, -40, -38, -38, -41, -46, -41, -46,
  42577. -47, -43, -43, -45, -41, -45, -56, -67,
  42578. -68, -83, -87, -90, -95, -102, -107, -113,
  42579. -999, -999, -999, -999, -999, -999, -999, -999}},
  42580. /* 1000 Hz */
  42581. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42582. -999, -109, -105, -101, -96, -91, -84, -77,
  42583. -82, -82, -85, -89, -94, -100, -106, -110,
  42584. -999, -999, -999, -999, -999, -999, -999, -999,
  42585. -999, -999, -999, -999, -999, -999, -999, -999,
  42586. -999, -999, -999, -999, -999, -999, -999, -999,
  42587. -999, -999, -999, -999, -999, -999, -999, -999},
  42588. {-999, -999, -999, -999, -999, -999, -999, -999,
  42589. -999, -106, -103, -98, -92, -85, -80, -71,
  42590. -75, -72, -76, -80, -84, -86, -89, -93,
  42591. -100, -107, -113, -999, -999, -999, -999, -999,
  42592. -999, -999, -999, -999, -999, -999, -999, -999,
  42593. -999, -999, -999, -999, -999, -999, -999, -999,
  42594. -999, -999, -999, -999, -999, -999, -999, -999},
  42595. {-999, -999, -999, -999, -999, -999, -999, -107,
  42596. -104, -101, -97, -92, -88, -84, -80, -64,
  42597. -66, -63, -64, -66, -69, -73, -77, -83,
  42598. -83, -86, -91, -98, -104, -111, -999, -999,
  42599. -999, -999, -999, -999, -999, -999, -999, -999,
  42600. -999, -999, -999, -999, -999, -999, -999, -999,
  42601. -999, -999, -999, -999, -999, -999, -999, -999},
  42602. {-999, -999, -999, -999, -999, -999, -999, -107,
  42603. -104, -101, -97, -92, -90, -84, -74, -57,
  42604. -58, -52, -55, -54, -50, -52, -50, -52,
  42605. -63, -62, -69, -76, -77, -78, -78, -79,
  42606. -82, -88, -94, -100, -106, -111, -999, -999,
  42607. -999, -999, -999, -999, -999, -999, -999, -999,
  42608. -999, -999, -999, -999, -999, -999, -999, -999},
  42609. {-999, -999, -999, -999, -999, -999, -106, -102,
  42610. -98, -95, -90, -85, -83, -78, -70, -50,
  42611. -50, -41, -44, -49, -47, -50, -50, -44,
  42612. -55, -46, -47, -48, -48, -54, -49, -49,
  42613. -58, -62, -71, -81, -87, -92, -97, -102,
  42614. -108, -114, -999, -999, -999, -999, -999, -999,
  42615. -999, -999, -999, -999, -999, -999, -999, -999},
  42616. {-999, -999, -999, -999, -999, -999, -106, -102,
  42617. -98, -95, -90, -85, -83, -78, -70, -45,
  42618. -43, -41, -47, -50, -51, -50, -49, -45,
  42619. -47, -41, -44, -41, -39, -43, -38, -37,
  42620. -40, -41, -44, -50, -58, -65, -73, -79,
  42621. -85, -92, -97, -101, -105, -109, -113, -999,
  42622. -999, -999, -999, -999, -999, -999, -999, -999}},
  42623. /* 1414 Hz */
  42624. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42625. -999, -999, -999, -107, -100, -95, -87, -81,
  42626. -85, -83, -88, -93, -100, -107, -114, -999,
  42627. -999, -999, -999, -999, -999, -999, -999, -999,
  42628. -999, -999, -999, -999, -999, -999, -999, -999,
  42629. -999, -999, -999, -999, -999, -999, -999, -999,
  42630. -999, -999, -999, -999, -999, -999, -999, -999},
  42631. {-999, -999, -999, -999, -999, -999, -999, -999,
  42632. -999, -999, -107, -101, -95, -88, -83, -76,
  42633. -73, -72, -79, -84, -90, -95, -100, -105,
  42634. -110, -115, -999, -999, -999, -999, -999, -999,
  42635. -999, -999, -999, -999, -999, -999, -999, -999,
  42636. -999, -999, -999, -999, -999, -999, -999, -999,
  42637. -999, -999, -999, -999, -999, -999, -999, -999},
  42638. {-999, -999, -999, -999, -999, -999, -999, -999,
  42639. -999, -999, -104, -98, -92, -87, -81, -70,
  42640. -65, -62, -67, -71, -74, -80, -85, -91,
  42641. -95, -99, -103, -108, -111, -114, -999, -999,
  42642. -999, -999, -999, -999, -999, -999, -999, -999,
  42643. -999, -999, -999, -999, -999, -999, -999, -999,
  42644. -999, -999, -999, -999, -999, -999, -999, -999},
  42645. {-999, -999, -999, -999, -999, -999, -999, -999,
  42646. -999, -999, -103, -97, -90, -85, -76, -60,
  42647. -56, -54, -60, -62, -61, -56, -63, -65,
  42648. -73, -74, -77, -75, -78, -81, -86, -87,
  42649. -88, -91, -94, -98, -103, -110, -999, -999,
  42650. -999, -999, -999, -999, -999, -999, -999, -999,
  42651. -999, -999, -999, -999, -999, -999, -999, -999},
  42652. {-999, -999, -999, -999, -999, -999, -999, -105,
  42653. -100, -97, -92, -86, -81, -79, -70, -57,
  42654. -51, -47, -51, -58, -60, -56, -53, -50,
  42655. -58, -52, -50, -50, -53, -55, -64, -69,
  42656. -71, -85, -82, -78, -81, -85, -95, -102,
  42657. -112, -999, -999, -999, -999, -999, -999, -999,
  42658. -999, -999, -999, -999, -999, -999, -999, -999},
  42659. {-999, -999, -999, -999, -999, -999, -999, -105,
  42660. -100, -97, -92, -85, -83, -79, -72, -49,
  42661. -40, -43, -43, -54, -56, -51, -50, -40,
  42662. -43, -38, -36, -35, -37, -38, -37, -44,
  42663. -54, -60, -57, -60, -70, -75, -84, -92,
  42664. -103, -112, -999, -999, -999, -999, -999, -999,
  42665. -999, -999, -999, -999, -999, -999, -999, -999}},
  42666. /* 2000 Hz */
  42667. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42668. -999, -999, -999, -110, -102, -95, -89, -82,
  42669. -83, -84, -90, -92, -99, -107, -113, -999,
  42670. -999, -999, -999, -999, -999, -999, -999, -999,
  42671. -999, -999, -999, -999, -999, -999, -999, -999,
  42672. -999, -999, -999, -999, -999, -999, -999, -999,
  42673. -999, -999, -999, -999, -999, -999, -999, -999},
  42674. {-999, -999, -999, -999, -999, -999, -999, -999,
  42675. -999, -999, -107, -101, -95, -89, -83, -72,
  42676. -74, -78, -85, -88, -88, -90, -92, -98,
  42677. -105, -111, -999, -999, -999, -999, -999, -999,
  42678. -999, -999, -999, -999, -999, -999, -999, -999,
  42679. -999, -999, -999, -999, -999, -999, -999, -999,
  42680. -999, -999, -999, -999, -999, -999, -999, -999},
  42681. {-999, -999, -999, -999, -999, -999, -999, -999,
  42682. -999, -109, -103, -97, -93, -87, -81, -70,
  42683. -70, -67, -75, -73, -76, -79, -81, -83,
  42684. -88, -89, -97, -103, -110, -999, -999, -999,
  42685. -999, -999, -999, -999, -999, -999, -999, -999,
  42686. -999, -999, -999, -999, -999, -999, -999, -999,
  42687. -999, -999, -999, -999, -999, -999, -999, -999},
  42688. {-999, -999, -999, -999, -999, -999, -999, -999,
  42689. -999, -107, -100, -94, -88, -83, -75, -63,
  42690. -59, -59, -63, -66, -60, -62, -67, -67,
  42691. -77, -76, -81, -88, -86, -92, -96, -102,
  42692. -109, -116, -999, -999, -999, -999, -999, -999,
  42693. -999, -999, -999, -999, -999, -999, -999, -999,
  42694. -999, -999, -999, -999, -999, -999, -999, -999},
  42695. {-999, -999, -999, -999, -999, -999, -999, -999,
  42696. -999, -105, -98, -92, -86, -81, -73, -56,
  42697. -52, -47, -55, -60, -58, -52, -51, -45,
  42698. -49, -50, -53, -54, -61, -71, -70, -69,
  42699. -78, -79, -87, -90, -96, -104, -112, -999,
  42700. -999, -999, -999, -999, -999, -999, -999, -999,
  42701. -999, -999, -999, -999, -999, -999, -999, -999},
  42702. {-999, -999, -999, -999, -999, -999, -999, -999,
  42703. -999, -103, -96, -90, -86, -78, -70, -51,
  42704. -42, -47, -48, -55, -54, -54, -53, -42,
  42705. -35, -28, -33, -38, -37, -44, -47, -49,
  42706. -54, -63, -68, -78, -82, -89, -94, -99,
  42707. -104, -109, -114, -999, -999, -999, -999, -999,
  42708. -999, -999, -999, -999, -999, -999, -999, -999}},
  42709. /* 2828 Hz */
  42710. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42711. -999, -999, -999, -999, -110, -100, -90, -79,
  42712. -85, -81, -82, -82, -89, -94, -99, -103,
  42713. -109, -115, -999, -999, -999, -999, -999, -999,
  42714. -999, -999, -999, -999, -999, -999, -999, -999,
  42715. -999, -999, -999, -999, -999, -999, -999, -999,
  42716. -999, -999, -999, -999, -999, -999, -999, -999},
  42717. {-999, -999, -999, -999, -999, -999, -999, -999,
  42718. -999, -999, -999, -999, -105, -97, -85, -72,
  42719. -74, -70, -70, -70, -76, -85, -91, -93,
  42720. -97, -103, -109, -115, -999, -999, -999, -999,
  42721. -999, -999, -999, -999, -999, -999, -999, -999,
  42722. -999, -999, -999, -999, -999, -999, -999, -999,
  42723. -999, -999, -999, -999, -999, -999, -999, -999},
  42724. {-999, -999, -999, -999, -999, -999, -999, -999,
  42725. -999, -999, -999, -999, -112, -93, -81, -68,
  42726. -62, -60, -60, -57, -63, -70, -77, -82,
  42727. -90, -93, -98, -104, -109, -113, -999, -999,
  42728. -999, -999, -999, -999, -999, -999, -999, -999,
  42729. -999, -999, -999, -999, -999, -999, -999, -999,
  42730. -999, -999, -999, -999, -999, -999, -999, -999},
  42731. {-999, -999, -999, -999, -999, -999, -999, -999,
  42732. -999, -999, -999, -113, -100, -93, -84, -63,
  42733. -58, -48, -53, -54, -52, -52, -57, -64,
  42734. -66, -76, -83, -81, -85, -85, -90, -95,
  42735. -98, -101, -103, -106, -108, -111, -999, -999,
  42736. -999, -999, -999, -999, -999, -999, -999, -999,
  42737. -999, -999, -999, -999, -999, -999, -999, -999},
  42738. {-999, -999, -999, -999, -999, -999, -999, -999,
  42739. -999, -999, -999, -105, -95, -86, -74, -53,
  42740. -50, -38, -43, -49, -43, -42, -39, -39,
  42741. -46, -52, -57, -56, -72, -69, -74, -81,
  42742. -87, -92, -94, -97, -99, -102, -105, -108,
  42743. -999, -999, -999, -999, -999, -999, -999, -999,
  42744. -999, -999, -999, -999, -999, -999, -999, -999},
  42745. {-999, -999, -999, -999, -999, -999, -999, -999,
  42746. -999, -999, -108, -99, -90, -76, -66, -45,
  42747. -43, -41, -44, -47, -43, -47, -40, -30,
  42748. -31, -31, -39, -33, -40, -41, -43, -53,
  42749. -59, -70, -73, -77, -79, -82, -84, -87,
  42750. -999, -999, -999, -999, -999, -999, -999, -999,
  42751. -999, -999, -999, -999, -999, -999, -999, -999}},
  42752. /* 4000 Hz */
  42753. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42754. -999, -999, -999, -999, -999, -110, -91, -76,
  42755. -75, -85, -93, -98, -104, -110, -999, -999,
  42756. -999, -999, -999, -999, -999, -999, -999, -999,
  42757. -999, -999, -999, -999, -999, -999, -999, -999,
  42758. -999, -999, -999, -999, -999, -999, -999, -999,
  42759. -999, -999, -999, -999, -999, -999, -999, -999},
  42760. {-999, -999, -999, -999, -999, -999, -999, -999,
  42761. -999, -999, -999, -999, -999, -110, -91, -70,
  42762. -70, -75, -86, -89, -94, -98, -101, -106,
  42763. -110, -999, -999, -999, -999, -999, -999, -999,
  42764. -999, -999, -999, -999, -999, -999, -999, -999,
  42765. -999, -999, -999, -999, -999, -999, -999, -999,
  42766. -999, -999, -999, -999, -999, -999, -999, -999},
  42767. {-999, -999, -999, -999, -999, -999, -999, -999,
  42768. -999, -999, -999, -999, -110, -95, -80, -60,
  42769. -65, -64, -74, -83, -88, -91, -95, -99,
  42770. -103, -107, -110, -999, -999, -999, -999, -999,
  42771. -999, -999, -999, -999, -999, -999, -999, -999,
  42772. -999, -999, -999, -999, -999, -999, -999, -999,
  42773. -999, -999, -999, -999, -999, -999, -999, -999},
  42774. {-999, -999, -999, -999, -999, -999, -999, -999,
  42775. -999, -999, -999, -999, -110, -95, -80, -58,
  42776. -55, -49, -66, -68, -71, -78, -78, -80,
  42777. -88, -85, -89, -97, -100, -105, -110, -999,
  42778. -999, -999, -999, -999, -999, -999, -999, -999,
  42779. -999, -999, -999, -999, -999, -999, -999, -999,
  42780. -999, -999, -999, -999, -999, -999, -999, -999},
  42781. {-999, -999, -999, -999, -999, -999, -999, -999,
  42782. -999, -999, -999, -999, -110, -95, -80, -53,
  42783. -52, -41, -59, -59, -49, -58, -56, -63,
  42784. -86, -79, -90, -93, -98, -103, -107, -112,
  42785. -999, -999, -999, -999, -999, -999, -999, -999,
  42786. -999, -999, -999, -999, -999, -999, -999, -999,
  42787. -999, -999, -999, -999, -999, -999, -999, -999},
  42788. {-999, -999, -999, -999, -999, -999, -999, -999,
  42789. -999, -999, -999, -110, -97, -91, -73, -45,
  42790. -40, -33, -53, -61, -49, -54, -50, -50,
  42791. -60, -52, -67, -74, -81, -92, -96, -100,
  42792. -105, -110, -999, -999, -999, -999, -999, -999,
  42793. -999, -999, -999, -999, -999, -999, -999, -999,
  42794. -999, -999, -999, -999, -999, -999, -999, -999}},
  42795. /* 5657 Hz */
  42796. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42797. -999, -999, -999, -113, -106, -99, -92, -77,
  42798. -80, -88, -97, -106, -115, -999, -999, -999,
  42799. -999, -999, -999, -999, -999, -999, -999, -999,
  42800. -999, -999, -999, -999, -999, -999, -999, -999,
  42801. -999, -999, -999, -999, -999, -999, -999, -999,
  42802. -999, -999, -999, -999, -999, -999, -999, -999},
  42803. {-999, -999, -999, -999, -999, -999, -999, -999,
  42804. -999, -999, -116, -109, -102, -95, -89, -74,
  42805. -72, -88, -87, -95, -102, -109, -116, -999,
  42806. -999, -999, -999, -999, -999, -999, -999, -999,
  42807. -999, -999, -999, -999, -999, -999, -999, -999,
  42808. -999, -999, -999, -999, -999, -999, -999, -999,
  42809. -999, -999, -999, -999, -999, -999, -999, -999},
  42810. {-999, -999, -999, -999, -999, -999, -999, -999,
  42811. -999, -999, -116, -109, -102, -95, -89, -75,
  42812. -66, -74, -77, -78, -86, -87, -90, -96,
  42813. -105, -115, -999, -999, -999, -999, -999, -999,
  42814. -999, -999, -999, -999, -999, -999, -999, -999,
  42815. -999, -999, -999, -999, -999, -999, -999, -999,
  42816. -999, -999, -999, -999, -999, -999, -999, -999},
  42817. {-999, -999, -999, -999, -999, -999, -999, -999,
  42818. -999, -999, -115, -108, -101, -94, -88, -66,
  42819. -56, -61, -70, -65, -78, -72, -83, -84,
  42820. -93, -98, -105, -110, -999, -999, -999, -999,
  42821. -999, -999, -999, -999, -999, -999, -999, -999,
  42822. -999, -999, -999, -999, -999, -999, -999, -999,
  42823. -999, -999, -999, -999, -999, -999, -999, -999},
  42824. {-999, -999, -999, -999, -999, -999, -999, -999,
  42825. -999, -999, -110, -105, -95, -89, -82, -57,
  42826. -52, -52, -59, -56, -59, -58, -69, -67,
  42827. -88, -82, -82, -89, -94, -100, -108, -999,
  42828. -999, -999, -999, -999, -999, -999, -999, -999,
  42829. -999, -999, -999, -999, -999, -999, -999, -999,
  42830. -999, -999, -999, -999, -999, -999, -999, -999},
  42831. {-999, -999, -999, -999, -999, -999, -999, -999,
  42832. -999, -110, -101, -96, -90, -83, -77, -54,
  42833. -43, -38, -50, -48, -52, -48, -42, -42,
  42834. -51, -52, -53, -59, -65, -71, -78, -85,
  42835. -95, -999, -999, -999, -999, -999, -999, -999,
  42836. -999, -999, -999, -999, -999, -999, -999, -999,
  42837. -999, -999, -999, -999, -999, -999, -999, -999}},
  42838. /* 8000 Hz */
  42839. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42840. -999, -999, -999, -999, -120, -105, -86, -68,
  42841. -78, -79, -90, -100, -110, -999, -999, -999,
  42842. -999, -999, -999, -999, -999, -999, -999, -999,
  42843. -999, -999, -999, -999, -999, -999, -999, -999,
  42844. -999, -999, -999, -999, -999, -999, -999, -999,
  42845. -999, -999, -999, -999, -999, -999, -999, -999},
  42846. {-999, -999, -999, -999, -999, -999, -999, -999,
  42847. -999, -999, -999, -999, -120, -105, -86, -66,
  42848. -73, -77, -88, -96, -105, -115, -999, -999,
  42849. -999, -999, -999, -999, -999, -999, -999, -999,
  42850. -999, -999, -999, -999, -999, -999, -999, -999,
  42851. -999, -999, -999, -999, -999, -999, -999, -999,
  42852. -999, -999, -999, -999, -999, -999, -999, -999},
  42853. {-999, -999, -999, -999, -999, -999, -999, -999,
  42854. -999, -999, -999, -120, -105, -92, -80, -61,
  42855. -64, -68, -80, -87, -92, -100, -110, -999,
  42856. -999, -999, -999, -999, -999, -999, -999, -999,
  42857. -999, -999, -999, -999, -999, -999, -999, -999,
  42858. -999, -999, -999, -999, -999, -999, -999, -999,
  42859. -999, -999, -999, -999, -999, -999, -999, -999},
  42860. {-999, -999, -999, -999, -999, -999, -999, -999,
  42861. -999, -999, -999, -120, -104, -91, -79, -52,
  42862. -60, -54, -64, -69, -77, -80, -82, -84,
  42863. -85, -87, -88, -90, -999, -999, -999, -999,
  42864. -999, -999, -999, -999, -999, -999, -999, -999,
  42865. -999, -999, -999, -999, -999, -999, -999, -999,
  42866. -999, -999, -999, -999, -999, -999, -999, -999},
  42867. {-999, -999, -999, -999, -999, -999, -999, -999,
  42868. -999, -999, -999, -118, -100, -87, -77, -49,
  42869. -50, -44, -58, -61, -61, -67, -65, -62,
  42870. -62, -62, -65, -68, -999, -999, -999, -999,
  42871. -999, -999, -999, -999, -999, -999, -999, -999,
  42872. -999, -999, -999, -999, -999, -999, -999, -999,
  42873. -999, -999, -999, -999, -999, -999, -999, -999},
  42874. {-999, -999, -999, -999, -999, -999, -999, -999,
  42875. -999, -999, -999, -115, -98, -84, -62, -49,
  42876. -44, -38, -46, -49, -49, -46, -39, -37,
  42877. -39, -40, -42, -43, -999, -999, -999, -999,
  42878. -999, -999, -999, -999, -999, -999, -999, -999,
  42879. -999, -999, -999, -999, -999, -999, -999, -999,
  42880. -999, -999, -999, -999, -999, -999, -999, -999}},
  42881. /* 11314 Hz */
  42882. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42883. -999, -999, -999, -999, -999, -110, -88, -74,
  42884. -77, -82, -82, -85, -90, -94, -99, -104,
  42885. -999, -999, -999, -999, -999, -999, -999, -999,
  42886. -999, -999, -999, -999, -999, -999, -999, -999,
  42887. -999, -999, -999, -999, -999, -999, -999, -999,
  42888. -999, -999, -999, -999, -999, -999, -999, -999},
  42889. {-999, -999, -999, -999, -999, -999, -999, -999,
  42890. -999, -999, -999, -999, -999, -110, -88, -66,
  42891. -70, -81, -80, -81, -84, -88, -91, -93,
  42892. -999, -999, -999, -999, -999, -999, -999, -999,
  42893. -999, -999, -999, -999, -999, -999, -999, -999,
  42894. -999, -999, -999, -999, -999, -999, -999, -999,
  42895. -999, -999, -999, -999, -999, -999, -999, -999},
  42896. {-999, -999, -999, -999, -999, -999, -999, -999,
  42897. -999, -999, -999, -999, -999, -110, -88, -61,
  42898. -63, -70, -71, -74, -77, -80, -83, -85,
  42899. -999, -999, -999, -999, -999, -999, -999, -999,
  42900. -999, -999, -999, -999, -999, -999, -999, -999,
  42901. -999, -999, -999, -999, -999, -999, -999, -999,
  42902. -999, -999, -999, -999, -999, -999, -999, -999},
  42903. {-999, -999, -999, -999, -999, -999, -999, -999,
  42904. -999, -999, -999, -999, -999, -110, -86, -62,
  42905. -63, -62, -62, -58, -52, -50, -50, -52,
  42906. -54, -999, -999, -999, -999, -999, -999, -999,
  42907. -999, -999, -999, -999, -999, -999, -999, -999,
  42908. -999, -999, -999, -999, -999, -999, -999, -999,
  42909. -999, -999, -999, -999, -999, -999, -999, -999},
  42910. {-999, -999, -999, -999, -999, -999, -999, -999,
  42911. -999, -999, -999, -999, -118, -108, -84, -53,
  42912. -50, -50, -50, -55, -47, -45, -40, -40,
  42913. -40, -999, -999, -999, -999, -999, -999, -999,
  42914. -999, -999, -999, -999, -999, -999, -999, -999,
  42915. -999, -999, -999, -999, -999, -999, -999, -999,
  42916. -999, -999, -999, -999, -999, -999, -999, -999},
  42917. {-999, -999, -999, -999, -999, -999, -999, -999,
  42918. -999, -999, -999, -999, -118, -100, -73, -43,
  42919. -37, -42, -43, -53, -38, -37, -35, -35,
  42920. -38, -999, -999, -999, -999, -999, -999, -999,
  42921. -999, -999, -999, -999, -999, -999, -999, -999,
  42922. -999, -999, -999, -999, -999, -999, -999, -999,
  42923. -999, -999, -999, -999, -999, -999, -999, -999}},
  42924. /* 16000 Hz */
  42925. {{-999, -999, -999, -999, -999, -999, -999, -999,
  42926. -999, -999, -999, -110, -100, -91, -84, -74,
  42927. -80, -80, -80, -80, -80, -999, -999, -999,
  42928. -999, -999, -999, -999, -999, -999, -999, -999,
  42929. -999, -999, -999, -999, -999, -999, -999, -999,
  42930. -999, -999, -999, -999, -999, -999, -999, -999,
  42931. -999, -999, -999, -999, -999, -999, -999, -999},
  42932. {-999, -999, -999, -999, -999, -999, -999, -999,
  42933. -999, -999, -999, -110, -100, -91, -84, -74,
  42934. -68, -68, -68, -68, -68, -999, -999, -999,
  42935. -999, -999, -999, -999, -999, -999, -999, -999,
  42936. -999, -999, -999, -999, -999, -999, -999, -999,
  42937. -999, -999, -999, -999, -999, -999, -999, -999,
  42938. -999, -999, -999, -999, -999, -999, -999, -999},
  42939. {-999, -999, -999, -999, -999, -999, -999, -999,
  42940. -999, -999, -999, -110, -100, -86, -78, -70,
  42941. -60, -45, -30, -21, -999, -999, -999, -999,
  42942. -999, -999, -999, -999, -999, -999, -999, -999,
  42943. -999, -999, -999, -999, -999, -999, -999, -999,
  42944. -999, -999, -999, -999, -999, -999, -999, -999,
  42945. -999, -999, -999, -999, -999, -999, -999, -999},
  42946. {-999, -999, -999, -999, -999, -999, -999, -999,
  42947. -999, -999, -999, -110, -100, -87, -78, -67,
  42948. -48, -38, -29, -21, -999, -999, -999, -999,
  42949. -999, -999, -999, -999, -999, -999, -999, -999,
  42950. -999, -999, -999, -999, -999, -999, -999, -999,
  42951. -999, -999, -999, -999, -999, -999, -999, -999,
  42952. -999, -999, -999, -999, -999, -999, -999, -999},
  42953. {-999, -999, -999, -999, -999, -999, -999, -999,
  42954. -999, -999, -999, -110, -100, -86, -69, -56,
  42955. -45, -35, -33, -29, -999, -999, -999, -999,
  42956. -999, -999, -999, -999, -999, -999, -999, -999,
  42957. -999, -999, -999, -999, -999, -999, -999, -999,
  42958. -999, -999, -999, -999, -999, -999, -999, -999,
  42959. -999, -999, -999, -999, -999, -999, -999, -999},
  42960. {-999, -999, -999, -999, -999, -999, -999, -999,
  42961. -999, -999, -999, -110, -100, -83, -71, -48,
  42962. -27, -38, -37, -34, -999, -999, -999, -999,
  42963. -999, -999, -999, -999, -999, -999, -999, -999,
  42964. -999, -999, -999, -999, -999, -999, -999, -999,
  42965. -999, -999, -999, -999, -999, -999, -999, -999,
  42966. -999, -999, -999, -999, -999, -999, -999, -999}}
  42967. };
  42968. #define NEGINF -9999.f
  42969. static double stereo_threshholds[]={0.0, .5, 1.0, 1.5, 2.5, 4.5, 8.5, 16.5, 9e10};
  42970. vorbis_look_psy_global *_vp_global_look(vorbis_info *vi){
  42971. codec_setup_info *ci=vi->codec_setup;
  42972. vorbis_info_psy_global *gi=&ci->psy_g_param;
  42973. vorbis_look_psy_global *look=_ogg_calloc(1,sizeof(*look));
  42974. look->channels=vi->channels;
  42975. look->ampmax=-9999.;
  42976. look->gi=gi;
  42977. return(look);
  42978. }
  42979. void _vp_global_free(vorbis_look_psy_global *look){
  42980. if(look){
  42981. memset(look,0,sizeof(*look));
  42982. _ogg_free(look);
  42983. }
  42984. }
  42985. void _vi_gpsy_free(vorbis_info_psy_global *i){
  42986. if(i){
  42987. memset(i,0,sizeof(*i));
  42988. _ogg_free(i);
  42989. }
  42990. }
  42991. void _vi_psy_free(vorbis_info_psy *i){
  42992. if(i){
  42993. memset(i,0,sizeof(*i));
  42994. _ogg_free(i);
  42995. }
  42996. }
  42997. static void min_curve(float *c,
  42998. float *c2){
  42999. int i;
  43000. for(i=0;i<EHMER_MAX;i++)if(c2[i]<c[i])c[i]=c2[i];
  43001. }
  43002. static void max_curve(float *c,
  43003. float *c2){
  43004. int i;
  43005. for(i=0;i<EHMER_MAX;i++)if(c2[i]>c[i])c[i]=c2[i];
  43006. }
  43007. static void attenuate_curve(float *c,float att){
  43008. int i;
  43009. for(i=0;i<EHMER_MAX;i++)
  43010. c[i]+=att;
  43011. }
  43012. static float ***setup_tone_curves(float curveatt_dB[P_BANDS],float binHz,int n,
  43013. float center_boost, float center_decay_rate){
  43014. int i,j,k,m;
  43015. float ath[EHMER_MAX];
  43016. float workc[P_BANDS][P_LEVELS][EHMER_MAX];
  43017. float athc[P_LEVELS][EHMER_MAX];
  43018. float *brute_buffer=alloca(n*sizeof(*brute_buffer));
  43019. float ***ret=_ogg_malloc(sizeof(*ret)*P_BANDS);
  43020. memset(workc,0,sizeof(workc));
  43021. for(i=0;i<P_BANDS;i++){
  43022. /* we add back in the ATH to avoid low level curves falling off to
  43023. -infinity and unnecessarily cutting off high level curves in the
  43024. curve limiting (last step). */
  43025. /* A half-band's settings must be valid over the whole band, and
  43026. it's better to mask too little than too much */
  43027. int ath_offset=i*4;
  43028. for(j=0;j<EHMER_MAX;j++){
  43029. float min=999.;
  43030. for(k=0;k<4;k++)
  43031. if(j+k+ath_offset<MAX_ATH){
  43032. if(min>ATH[j+k+ath_offset])min=ATH[j+k+ath_offset];
  43033. }else{
  43034. if(min>ATH[MAX_ATH-1])min=ATH[MAX_ATH-1];
  43035. }
  43036. ath[j]=min;
  43037. }
  43038. /* copy curves into working space, replicate the 50dB curve to 30
  43039. and 40, replicate the 100dB curve to 110 */
  43040. for(j=0;j<6;j++)
  43041. memcpy(workc[i][j+2],tonemasks[i][j],EHMER_MAX*sizeof(*tonemasks[i][j]));
  43042. memcpy(workc[i][0],tonemasks[i][0],EHMER_MAX*sizeof(*tonemasks[i][0]));
  43043. memcpy(workc[i][1],tonemasks[i][0],EHMER_MAX*sizeof(*tonemasks[i][0]));
  43044. /* apply centered curve boost/decay */
  43045. for(j=0;j<P_LEVELS;j++){
  43046. for(k=0;k<EHMER_MAX;k++){
  43047. float adj=center_boost+abs(EHMER_OFFSET-k)*center_decay_rate;
  43048. if(adj<0. && center_boost>0)adj=0.;
  43049. if(adj>0. && center_boost<0)adj=0.;
  43050. workc[i][j][k]+=adj;
  43051. }
  43052. }
  43053. /* normalize curves so the driving amplitude is 0dB */
  43054. /* make temp curves with the ATH overlayed */
  43055. for(j=0;j<P_LEVELS;j++){
  43056. attenuate_curve(workc[i][j],curveatt_dB[i]+100.-(j<2?2:j)*10.-P_LEVEL_0);
  43057. memcpy(athc[j],ath,EHMER_MAX*sizeof(**athc));
  43058. attenuate_curve(athc[j],+100.-j*10.f-P_LEVEL_0);
  43059. max_curve(athc[j],workc[i][j]);
  43060. }
  43061. /* Now limit the louder curves.
  43062. the idea is this: We don't know what the playback attenuation
  43063. will be; 0dB SL moves every time the user twiddles the volume
  43064. knob. So that means we have to use a single 'most pessimal' curve
  43065. for all masking amplitudes, right? Wrong. The *loudest* sound
  43066. can be in (we assume) a range of ...+100dB] SL. However, sounds
  43067. 20dB down will be in a range ...+80], 40dB down is from ...+60],
  43068. etc... */
  43069. for(j=1;j<P_LEVELS;j++){
  43070. min_curve(athc[j],athc[j-1]);
  43071. min_curve(workc[i][j],athc[j]);
  43072. }
  43073. }
  43074. for(i=0;i<P_BANDS;i++){
  43075. int hi_curve,lo_curve,bin;
  43076. ret[i]=_ogg_malloc(sizeof(**ret)*P_LEVELS);
  43077. /* low frequency curves are measured with greater resolution than
  43078. the MDCT/FFT will actually give us; we want the curve applied
  43079. to the tone data to be pessimistic and thus apply the minimum
  43080. masking possible for a given bin. That means that a single bin
  43081. could span more than one octave and that the curve will be a
  43082. composite of multiple octaves. It also may mean that a single
  43083. bin may span > an eighth of an octave and that the eighth
  43084. octave values may also be composited. */
  43085. /* which octave curves will we be compositing? */
  43086. bin=floor(fromOC(i*.5)/binHz);
  43087. lo_curve= ceil(toOC(bin*binHz+1)*2);
  43088. hi_curve= floor(toOC((bin+1)*binHz)*2);
  43089. if(lo_curve>i)lo_curve=i;
  43090. if(lo_curve<0)lo_curve=0;
  43091. if(hi_curve>=P_BANDS)hi_curve=P_BANDS-1;
  43092. for(m=0;m<P_LEVELS;m++){
  43093. ret[i][m]=_ogg_malloc(sizeof(***ret)*(EHMER_MAX+2));
  43094. for(j=0;j<n;j++)brute_buffer[j]=999.;
  43095. /* render the curve into bins, then pull values back into curve.
  43096. The point is that any inherent subsampling aliasing results in
  43097. a safe minimum */
  43098. for(k=lo_curve;k<=hi_curve;k++){
  43099. int l=0;
  43100. for(j=0;j<EHMER_MAX;j++){
  43101. int lo_bin= fromOC(j*.125+k*.5-2.0625)/binHz;
  43102. int hi_bin= fromOC(j*.125+k*.5-1.9375)/binHz+1;
  43103. if(lo_bin<0)lo_bin=0;
  43104. if(lo_bin>n)lo_bin=n;
  43105. if(lo_bin<l)l=lo_bin;
  43106. if(hi_bin<0)hi_bin=0;
  43107. if(hi_bin>n)hi_bin=n;
  43108. for(;l<hi_bin && l<n;l++)
  43109. if(brute_buffer[l]>workc[k][m][j])
  43110. brute_buffer[l]=workc[k][m][j];
  43111. }
  43112. for(;l<n;l++)
  43113. if(brute_buffer[l]>workc[k][m][EHMER_MAX-1])
  43114. brute_buffer[l]=workc[k][m][EHMER_MAX-1];
  43115. }
  43116. /* be equally paranoid about being valid up to next half ocatve */
  43117. if(i+1<P_BANDS){
  43118. int l=0;
  43119. k=i+1;
  43120. for(j=0;j<EHMER_MAX;j++){
  43121. int lo_bin= fromOC(j*.125+i*.5-2.0625)/binHz;
  43122. int hi_bin= fromOC(j*.125+i*.5-1.9375)/binHz+1;
  43123. if(lo_bin<0)lo_bin=0;
  43124. if(lo_bin>n)lo_bin=n;
  43125. if(lo_bin<l)l=lo_bin;
  43126. if(hi_bin<0)hi_bin=0;
  43127. if(hi_bin>n)hi_bin=n;
  43128. for(;l<hi_bin && l<n;l++)
  43129. if(brute_buffer[l]>workc[k][m][j])
  43130. brute_buffer[l]=workc[k][m][j];
  43131. }
  43132. for(;l<n;l++)
  43133. if(brute_buffer[l]>workc[k][m][EHMER_MAX-1])
  43134. brute_buffer[l]=workc[k][m][EHMER_MAX-1];
  43135. }
  43136. for(j=0;j<EHMER_MAX;j++){
  43137. int bin=fromOC(j*.125+i*.5-2.)/binHz;
  43138. if(bin<0){
  43139. ret[i][m][j+2]=-999.;
  43140. }else{
  43141. if(bin>=n){
  43142. ret[i][m][j+2]=-999.;
  43143. }else{
  43144. ret[i][m][j+2]=brute_buffer[bin];
  43145. }
  43146. }
  43147. }
  43148. /* add fenceposts */
  43149. for(j=0;j<EHMER_OFFSET;j++)
  43150. if(ret[i][m][j+2]>-200.f)break;
  43151. ret[i][m][0]=j;
  43152. for(j=EHMER_MAX-1;j>EHMER_OFFSET+1;j--)
  43153. if(ret[i][m][j+2]>-200.f)
  43154. break;
  43155. ret[i][m][1]=j;
  43156. }
  43157. }
  43158. return(ret);
  43159. }
  43160. void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,
  43161. vorbis_info_psy_global *gi,int n,long rate){
  43162. long i,j,lo=-99,hi=1;
  43163. long maxoc;
  43164. memset(p,0,sizeof(*p));
  43165. p->eighth_octave_lines=gi->eighth_octave_lines;
  43166. p->shiftoc=rint(log(gi->eighth_octave_lines*8.f)/log(2.f))-1;
  43167. p->firstoc=toOC(.25f*rate*.5/n)*(1<<(p->shiftoc+1))-gi->eighth_octave_lines;
  43168. maxoc=toOC((n+.25f)*rate*.5/n)*(1<<(p->shiftoc+1))+.5f;
  43169. p->total_octave_lines=maxoc-p->firstoc+1;
  43170. p->ath=_ogg_malloc(n*sizeof(*p->ath));
  43171. p->octave=_ogg_malloc(n*sizeof(*p->octave));
  43172. p->bark=_ogg_malloc(n*sizeof(*p->bark));
  43173. p->vi=vi;
  43174. p->n=n;
  43175. p->rate=rate;
  43176. /* set up the lookups for a given blocksize and sample rate */
  43177. for(i=0,j=0;i<MAX_ATH-1;i++){
  43178. int endpos=rint(fromOC((i+1)*.125-2.)*2*n/rate);
  43179. float base=ATH[i];
  43180. if(j<endpos){
  43181. float delta=(ATH[i+1]-base)/(endpos-j);
  43182. for(;j<endpos && j<n;j++){
  43183. p->ath[j]=base+100.;
  43184. base+=delta;
  43185. }
  43186. }
  43187. }
  43188. for(i=0;i<n;i++){
  43189. float bark=toBARK(rate/(2*n)*i);
  43190. for(;lo+vi->noisewindowlomin<i &&
  43191. toBARK(rate/(2*n)*lo)<(bark-vi->noisewindowlo);lo++);
  43192. for(;hi<=n && (hi<i+vi->noisewindowhimin ||
  43193. toBARK(rate/(2*n)*hi)<(bark+vi->noisewindowhi));hi++);
  43194. p->bark[i]=((lo-1)<<16)+(hi-1);
  43195. }
  43196. for(i=0;i<n;i++)
  43197. p->octave[i]=toOC((i+.25f)*.5*rate/n)*(1<<(p->shiftoc+1))+.5f;
  43198. p->tonecurves=setup_tone_curves(vi->toneatt,rate*.5/n,n,
  43199. vi->tone_centerboost,vi->tone_decay);
  43200. /* set up rolling noise median */
  43201. p->noiseoffset=_ogg_malloc(P_NOISECURVES*sizeof(*p->noiseoffset));
  43202. for(i=0;i<P_NOISECURVES;i++)
  43203. p->noiseoffset[i]=_ogg_malloc(n*sizeof(**p->noiseoffset));
  43204. for(i=0;i<n;i++){
  43205. float halfoc=toOC((i+.5)*rate/(2.*n))*2.;
  43206. int inthalfoc;
  43207. float del;
  43208. if(halfoc<0)halfoc=0;
  43209. if(halfoc>=P_BANDS-1)halfoc=P_BANDS-1;
  43210. inthalfoc=(int)halfoc;
  43211. del=halfoc-inthalfoc;
  43212. for(j=0;j<P_NOISECURVES;j++)
  43213. p->noiseoffset[j][i]=
  43214. p->vi->noiseoff[j][inthalfoc]*(1.-del) +
  43215. p->vi->noiseoff[j][inthalfoc+1]*del;
  43216. }
  43217. #if 0
  43218. {
  43219. static int ls=0;
  43220. _analysis_output_always("noiseoff0",ls,p->noiseoffset[0],n,1,0,0);
  43221. _analysis_output_always("noiseoff1",ls,p->noiseoffset[1],n,1,0,0);
  43222. _analysis_output_always("noiseoff2",ls++,p->noiseoffset[2],n,1,0,0);
  43223. }
  43224. #endif
  43225. }
  43226. void _vp_psy_clear(vorbis_look_psy *p){
  43227. int i,j;
  43228. if(p){
  43229. if(p->ath)_ogg_free(p->ath);
  43230. if(p->octave)_ogg_free(p->octave);
  43231. if(p->bark)_ogg_free(p->bark);
  43232. if(p->tonecurves){
  43233. for(i=0;i<P_BANDS;i++){
  43234. for(j=0;j<P_LEVELS;j++){
  43235. _ogg_free(p->tonecurves[i][j]);
  43236. }
  43237. _ogg_free(p->tonecurves[i]);
  43238. }
  43239. _ogg_free(p->tonecurves);
  43240. }
  43241. if(p->noiseoffset){
  43242. for(i=0;i<P_NOISECURVES;i++){
  43243. _ogg_free(p->noiseoffset[i]);
  43244. }
  43245. _ogg_free(p->noiseoffset);
  43246. }
  43247. memset(p,0,sizeof(*p));
  43248. }
  43249. }
  43250. /* octave/(8*eighth_octave_lines) x scale and dB y scale */
  43251. static void seed_curve(float *seed,
  43252. const float **curves,
  43253. float amp,
  43254. int oc, int n,
  43255. int linesper,float dBoffset){
  43256. int i,post1;
  43257. int seedptr;
  43258. const float *posts,*curve;
  43259. int choice=(int)((amp+dBoffset-P_LEVEL_0)*.1f);
  43260. choice=max(choice,0);
  43261. choice=min(choice,P_LEVELS-1);
  43262. posts=curves[choice];
  43263. curve=posts+2;
  43264. post1=(int)posts[1];
  43265. seedptr=oc+(posts[0]-EHMER_OFFSET)*linesper-(linesper>>1);
  43266. for(i=posts[0];i<post1;i++){
  43267. if(seedptr>0){
  43268. float lin=amp+curve[i];
  43269. if(seed[seedptr]<lin)seed[seedptr]=lin;
  43270. }
  43271. seedptr+=linesper;
  43272. if(seedptr>=n)break;
  43273. }
  43274. }
  43275. static void seed_loop(vorbis_look_psy *p,
  43276. const float ***curves,
  43277. const float *f,
  43278. const float *flr,
  43279. float *seed,
  43280. float specmax){
  43281. vorbis_info_psy *vi=p->vi;
  43282. long n=p->n,i;
  43283. float dBoffset=vi->max_curve_dB-specmax;
  43284. /* prime the working vector with peak values */
  43285. for(i=0;i<n;i++){
  43286. float max=f[i];
  43287. long oc=p->octave[i];
  43288. while(i+1<n && p->octave[i+1]==oc){
  43289. i++;
  43290. if(f[i]>max)max=f[i];
  43291. }
  43292. if(max+6.f>flr[i]){
  43293. oc=oc>>p->shiftoc;
  43294. if(oc>=P_BANDS)oc=P_BANDS-1;
  43295. if(oc<0)oc=0;
  43296. seed_curve(seed,
  43297. curves[oc],
  43298. max,
  43299. p->octave[i]-p->firstoc,
  43300. p->total_octave_lines,
  43301. p->eighth_octave_lines,
  43302. dBoffset);
  43303. }
  43304. }
  43305. }
  43306. static void seed_chase(float *seeds, int linesper, long n){
  43307. long *posstack=alloca(n*sizeof(*posstack));
  43308. float *ampstack=alloca(n*sizeof(*ampstack));
  43309. long stack=0;
  43310. long pos=0;
  43311. long i;
  43312. for(i=0;i<n;i++){
  43313. if(stack<2){
  43314. posstack[stack]=i;
  43315. ampstack[stack++]=seeds[i];
  43316. }else{
  43317. while(1){
  43318. if(seeds[i]<ampstack[stack-1]){
  43319. posstack[stack]=i;
  43320. ampstack[stack++]=seeds[i];
  43321. break;
  43322. }else{
  43323. if(i<posstack[stack-1]+linesper){
  43324. if(stack>1 && ampstack[stack-1]<=ampstack[stack-2] &&
  43325. i<posstack[stack-2]+linesper){
  43326. /* we completely overlap, making stack-1 irrelevant. pop it */
  43327. stack--;
  43328. continue;
  43329. }
  43330. }
  43331. posstack[stack]=i;
  43332. ampstack[stack++]=seeds[i];
  43333. break;
  43334. }
  43335. }
  43336. }
  43337. }
  43338. /* the stack now contains only the positions that are relevant. Scan
  43339. 'em straight through */
  43340. for(i=0;i<stack;i++){
  43341. long endpos;
  43342. if(i<stack-1 && ampstack[i+1]>ampstack[i]){
  43343. endpos=posstack[i+1];
  43344. }else{
  43345. endpos=posstack[i]+linesper+1; /* +1 is important, else bin 0 is
  43346. discarded in short frames */
  43347. }
  43348. if(endpos>n)endpos=n;
  43349. for(;pos<endpos;pos++)
  43350. seeds[pos]=ampstack[i];
  43351. }
  43352. /* there. Linear time. I now remember this was on a problem set I
  43353. had in Grad Skool... I didn't solve it at the time ;-) */
  43354. }
  43355. /* bleaugh, this is more complicated than it needs to be */
  43356. static void max_seeds(vorbis_look_psy *p,
  43357. float *seed,
  43358. float *flr){
  43359. long n=p->total_octave_lines;
  43360. int linesper=p->eighth_octave_lines;
  43361. long linpos=0;
  43362. long pos;
  43363. seed_chase(seed,linesper,n); /* for masking */
  43364. pos=p->octave[0]-p->firstoc-(linesper>>1);
  43365. while(linpos+1<p->n){
  43366. float minV=seed[pos];
  43367. long end=((p->octave[linpos]+p->octave[linpos+1])>>1)-p->firstoc;
  43368. if(minV>p->vi->tone_abs_limit)minV=p->vi->tone_abs_limit;
  43369. while(pos+1<=end){
  43370. pos++;
  43371. if((seed[pos]>NEGINF && seed[pos]<minV) || minV==NEGINF)
  43372. minV=seed[pos];
  43373. }
  43374. end=pos+p->firstoc;
  43375. for(;linpos<p->n && p->octave[linpos]<=end;linpos++)
  43376. if(flr[linpos]<minV)flr[linpos]=minV;
  43377. }
  43378. {
  43379. float minV=seed[p->total_octave_lines-1];
  43380. for(;linpos<p->n;linpos++)
  43381. if(flr[linpos]<minV)flr[linpos]=minV;
  43382. }
  43383. }
  43384. static void bark_noise_hybridmp(int n,const long *b,
  43385. const float *f,
  43386. float *noise,
  43387. const float offset,
  43388. const int fixed){
  43389. float *N=alloca(n*sizeof(*N));
  43390. float *X=alloca(n*sizeof(*N));
  43391. float *XX=alloca(n*sizeof(*N));
  43392. float *Y=alloca(n*sizeof(*N));
  43393. float *XY=alloca(n*sizeof(*N));
  43394. float tN, tX, tXX, tY, tXY;
  43395. int i;
  43396. int lo, hi;
  43397. float R, A, B, D;
  43398. float w, x, y;
  43399. tN = tX = tXX = tY = tXY = 0.f;
  43400. y = f[0] + offset;
  43401. if (y < 1.f) y = 1.f;
  43402. w = y * y * .5;
  43403. tN += w;
  43404. tX += w;
  43405. tY += w * y;
  43406. N[0] = tN;
  43407. X[0] = tX;
  43408. XX[0] = tXX;
  43409. Y[0] = tY;
  43410. XY[0] = tXY;
  43411. for (i = 1, x = 1.f; i < n; i++, x += 1.f) {
  43412. y = f[i] + offset;
  43413. if (y < 1.f) y = 1.f;
  43414. w = y * y;
  43415. tN += w;
  43416. tX += w * x;
  43417. tXX += w * x * x;
  43418. tY += w * y;
  43419. tXY += w * x * y;
  43420. N[i] = tN;
  43421. X[i] = tX;
  43422. XX[i] = tXX;
  43423. Y[i] = tY;
  43424. XY[i] = tXY;
  43425. }
  43426. for (i = 0, x = 0.f;; i++, x += 1.f) {
  43427. lo = b[i] >> 16;
  43428. if( lo>=0 ) break;
  43429. hi = b[i] & 0xffff;
  43430. tN = N[hi] + N[-lo];
  43431. tX = X[hi] - X[-lo];
  43432. tXX = XX[hi] + XX[-lo];
  43433. tY = Y[hi] + Y[-lo];
  43434. tXY = XY[hi] - XY[-lo];
  43435. A = tY * tXX - tX * tXY;
  43436. B = tN * tXY - tX * tY;
  43437. D = tN * tXX - tX * tX;
  43438. R = (A + x * B) / D;
  43439. if (R < 0.f)
  43440. R = 0.f;
  43441. noise[i] = R - offset;
  43442. }
  43443. for ( ;; i++, x += 1.f) {
  43444. lo = b[i] >> 16;
  43445. hi = b[i] & 0xffff;
  43446. if(hi>=n)break;
  43447. tN = N[hi] - N[lo];
  43448. tX = X[hi] - X[lo];
  43449. tXX = XX[hi] - XX[lo];
  43450. tY = Y[hi] - Y[lo];
  43451. tXY = XY[hi] - XY[lo];
  43452. A = tY * tXX - tX * tXY;
  43453. B = tN * tXY - tX * tY;
  43454. D = tN * tXX - tX * tX;
  43455. R = (A + x * B) / D;
  43456. if (R < 0.f) R = 0.f;
  43457. noise[i] = R - offset;
  43458. }
  43459. for ( ; i < n; i++, x += 1.f) {
  43460. R = (A + x * B) / D;
  43461. if (R < 0.f) R = 0.f;
  43462. noise[i] = R - offset;
  43463. }
  43464. if (fixed <= 0) return;
  43465. for (i = 0, x = 0.f;; i++, x += 1.f) {
  43466. hi = i + fixed / 2;
  43467. lo = hi - fixed;
  43468. if(lo>=0)break;
  43469. tN = N[hi] + N[-lo];
  43470. tX = X[hi] - X[-lo];
  43471. tXX = XX[hi] + XX[-lo];
  43472. tY = Y[hi] + Y[-lo];
  43473. tXY = XY[hi] - XY[-lo];
  43474. A = tY * tXX - tX * tXY;
  43475. B = tN * tXY - tX * tY;
  43476. D = tN * tXX - tX * tX;
  43477. R = (A + x * B) / D;
  43478. if (R - offset < noise[i]) noise[i] = R - offset;
  43479. }
  43480. for ( ;; i++, x += 1.f) {
  43481. hi = i + fixed / 2;
  43482. lo = hi - fixed;
  43483. if(hi>=n)break;
  43484. tN = N[hi] - N[lo];
  43485. tX = X[hi] - X[lo];
  43486. tXX = XX[hi] - XX[lo];
  43487. tY = Y[hi] - Y[lo];
  43488. tXY = XY[hi] - XY[lo];
  43489. A = tY * tXX - tX * tXY;
  43490. B = tN * tXY - tX * tY;
  43491. D = tN * tXX - tX * tX;
  43492. R = (A + x * B) / D;
  43493. if (R - offset < noise[i]) noise[i] = R - offset;
  43494. }
  43495. for ( ; i < n; i++, x += 1.f) {
  43496. R = (A + x * B) / D;
  43497. if (R - offset < noise[i]) noise[i] = R - offset;
  43498. }
  43499. }
  43500. static float FLOOR1_fromdB_INV_LOOKUP[256]={
  43501. 0.F, 8.81683e+06F, 8.27882e+06F, 7.77365e+06F,
  43502. 7.29930e+06F, 6.85389e+06F, 6.43567e+06F, 6.04296e+06F,
  43503. 5.67422e+06F, 5.32798e+06F, 5.00286e+06F, 4.69759e+06F,
  43504. 4.41094e+06F, 4.14178e+06F, 3.88905e+06F, 3.65174e+06F,
  43505. 3.42891e+06F, 3.21968e+06F, 3.02321e+06F, 2.83873e+06F,
  43506. 2.66551e+06F, 2.50286e+06F, 2.35014e+06F, 2.20673e+06F,
  43507. 2.07208e+06F, 1.94564e+06F, 1.82692e+06F, 1.71544e+06F,
  43508. 1.61076e+06F, 1.51247e+06F, 1.42018e+06F, 1.33352e+06F,
  43509. 1.25215e+06F, 1.17574e+06F, 1.10400e+06F, 1.03663e+06F,
  43510. 973377.F, 913981.F, 858210.F, 805842.F,
  43511. 756669.F, 710497.F, 667142.F, 626433.F,
  43512. 588208.F, 552316.F, 518613.F, 486967.F,
  43513. 457252.F, 429351.F, 403152.F, 378551.F,
  43514. 355452.F, 333762.F, 313396.F, 294273.F,
  43515. 276316.F, 259455.F, 243623.F, 228757.F,
  43516. 214798.F, 201691.F, 189384.F, 177828.F,
  43517. 166977.F, 156788.F, 147221.F, 138237.F,
  43518. 129802.F, 121881.F, 114444.F, 107461.F,
  43519. 100903.F, 94746.3F, 88964.9F, 83536.2F,
  43520. 78438.8F, 73652.5F, 69158.2F, 64938.1F,
  43521. 60975.6F, 57254.9F, 53761.2F, 50480.6F,
  43522. 47400.3F, 44507.9F, 41792.0F, 39241.9F,
  43523. 36847.3F, 34598.9F, 32487.7F, 30505.3F,
  43524. 28643.8F, 26896.0F, 25254.8F, 23713.7F,
  43525. 22266.7F, 20908.0F, 19632.2F, 18434.2F,
  43526. 17309.4F, 16253.1F, 15261.4F, 14330.1F,
  43527. 13455.7F, 12634.6F, 11863.7F, 11139.7F,
  43528. 10460.0F, 9821.72F, 9222.39F, 8659.64F,
  43529. 8131.23F, 7635.06F, 7169.17F, 6731.70F,
  43530. 6320.93F, 5935.23F, 5573.06F, 5232.99F,
  43531. 4913.67F, 4613.84F, 4332.30F, 4067.94F,
  43532. 3819.72F, 3586.64F, 3367.78F, 3162.28F,
  43533. 2969.31F, 2788.13F, 2617.99F, 2458.24F,
  43534. 2308.24F, 2167.39F, 2035.14F, 1910.95F,
  43535. 1794.35F, 1684.85F, 1582.04F, 1485.51F,
  43536. 1394.86F, 1309.75F, 1229.83F, 1154.78F,
  43537. 1084.32F, 1018.15F, 956.024F, 897.687F,
  43538. 842.910F, 791.475F, 743.179F, 697.830F,
  43539. 655.249F, 615.265F, 577.722F, 542.469F,
  43540. 509.367F, 478.286F, 449.101F, 421.696F,
  43541. 395.964F, 371.803F, 349.115F, 327.812F,
  43542. 307.809F, 289.026F, 271.390F, 254.830F,
  43543. 239.280F, 224.679F, 210.969F, 198.096F,
  43544. 186.008F, 174.658F, 164.000F, 153.993F,
  43545. 144.596F, 135.773F, 127.488F, 119.708F,
  43546. 112.404F, 105.545F, 99.1046F, 93.0572F,
  43547. 87.3788F, 82.0469F, 77.0404F, 72.3394F,
  43548. 67.9252F, 63.7804F, 59.8885F, 56.2341F,
  43549. 52.8027F, 49.5807F, 46.5553F, 43.7144F,
  43550. 41.0470F, 38.5423F, 36.1904F, 33.9821F,
  43551. 31.9085F, 29.9614F, 28.1332F, 26.4165F,
  43552. 24.8045F, 23.2910F, 21.8697F, 20.5352F,
  43553. 19.2822F, 18.1056F, 17.0008F, 15.9634F,
  43554. 14.9893F, 14.0746F, 13.2158F, 12.4094F,
  43555. 11.6522F, 10.9411F, 10.2735F, 9.64662F,
  43556. 9.05798F, 8.50526F, 7.98626F, 7.49894F,
  43557. 7.04135F, 6.61169F, 6.20824F, 5.82941F,
  43558. 5.47370F, 5.13970F, 4.82607F, 4.53158F,
  43559. 4.25507F, 3.99542F, 3.75162F, 3.52269F,
  43560. 3.30774F, 3.10590F, 2.91638F, 2.73842F,
  43561. 2.57132F, 2.41442F, 2.26709F, 2.12875F,
  43562. 1.99885F, 1.87688F, 1.76236F, 1.65482F,
  43563. 1.55384F, 1.45902F, 1.36999F, 1.28640F,
  43564. 1.20790F, 1.13419F, 1.06499F, 1.F
  43565. };
  43566. void _vp_remove_floor(vorbis_look_psy *p,
  43567. float *mdct,
  43568. int *codedflr,
  43569. float *residue,
  43570. int sliding_lowpass){
  43571. int i,n=p->n;
  43572. if(sliding_lowpass>n)sliding_lowpass=n;
  43573. for(i=0;i<sliding_lowpass;i++){
  43574. residue[i]=
  43575. mdct[i]*FLOOR1_fromdB_INV_LOOKUP[codedflr[i]];
  43576. }
  43577. for(;i<n;i++)
  43578. residue[i]=0.;
  43579. }
  43580. void _vp_noisemask(vorbis_look_psy *p,
  43581. float *logmdct,
  43582. float *logmask){
  43583. int i,n=p->n;
  43584. float *work=alloca(n*sizeof(*work));
  43585. bark_noise_hybridmp(n,p->bark,logmdct,logmask,
  43586. 140.,-1);
  43587. for(i=0;i<n;i++)work[i]=logmdct[i]-logmask[i];
  43588. bark_noise_hybridmp(n,p->bark,work,logmask,0.,
  43589. p->vi->noisewindowfixed);
  43590. for(i=0;i<n;i++)work[i]=logmdct[i]-work[i];
  43591. #if 0
  43592. {
  43593. static int seq=0;
  43594. float work2[n];
  43595. for(i=0;i<n;i++){
  43596. work2[i]=logmask[i]+work[i];
  43597. }
  43598. if(seq&1)
  43599. _analysis_output("median2R",seq/2,work,n,1,0,0);
  43600. else
  43601. _analysis_output("median2L",seq/2,work,n,1,0,0);
  43602. if(seq&1)
  43603. _analysis_output("envelope2R",seq/2,work2,n,1,0,0);
  43604. else
  43605. _analysis_output("envelope2L",seq/2,work2,n,1,0,0);
  43606. seq++;
  43607. }
  43608. #endif
  43609. for(i=0;i<n;i++){
  43610. int dB=logmask[i]+.5;
  43611. if(dB>=NOISE_COMPAND_LEVELS)dB=NOISE_COMPAND_LEVELS-1;
  43612. if(dB<0)dB=0;
  43613. logmask[i]= work[i]+p->vi->noisecompand[dB];
  43614. }
  43615. }
  43616. void _vp_tonemask(vorbis_look_psy *p,
  43617. float *logfft,
  43618. float *logmask,
  43619. float global_specmax,
  43620. float local_specmax){
  43621. int i,n=p->n;
  43622. float *seed=alloca(sizeof(*seed)*p->total_octave_lines);
  43623. float att=local_specmax+p->vi->ath_adjatt;
  43624. for(i=0;i<p->total_octave_lines;i++)seed[i]=NEGINF;
  43625. /* set the ATH (floating below localmax, not global max by a
  43626. specified att) */
  43627. if(att<p->vi->ath_maxatt)att=p->vi->ath_maxatt;
  43628. for(i=0;i<n;i++)
  43629. logmask[i]=p->ath[i]+att;
  43630. /* tone masking */
  43631. seed_loop(p,(const float ***)p->tonecurves,logfft,logmask,seed,global_specmax);
  43632. max_seeds(p,seed,logmask);
  43633. }
  43634. void _vp_offset_and_mix(vorbis_look_psy *p,
  43635. float *noise,
  43636. float *tone,
  43637. int offset_select,
  43638. float *logmask){
  43639. int i,n=p->n;
  43640. float toneatt=p->vi->tone_masteratt[offset_select];
  43641. for(i=0;i<n;i++){
  43642. float val= noise[i]+p->noiseoffset[offset_select][i];
  43643. if(val>p->vi->noisemaxsupp)val=p->vi->noisemaxsupp;
  43644. logmask[i]=max(val,tone[i]+toneatt);
  43645. }
  43646. }
  43647. float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd){
  43648. vorbis_info *vi=vd->vi;
  43649. codec_setup_info *ci=vi->codec_setup;
  43650. vorbis_info_psy_global *gi=&ci->psy_g_param;
  43651. int n=ci->blocksizes[vd->W]/2;
  43652. float secs=(float)n/vi->rate;
  43653. amp+=secs*gi->ampmax_att_per_sec;
  43654. if(amp<-9999)amp=-9999;
  43655. return(amp);
  43656. }
  43657. static void couple_lossless(float A, float B,
  43658. float *qA, float *qB){
  43659. int test1=fabs(*qA)>fabs(*qB);
  43660. test1-= fabs(*qA)<fabs(*qB);
  43661. if(!test1)test1=((fabs(A)>fabs(B))<<1)-1;
  43662. if(test1==1){
  43663. *qB=(*qA>0.f?*qA-*qB:*qB-*qA);
  43664. }else{
  43665. float temp=*qB;
  43666. *qB=(*qB>0.f?*qA-*qB:*qB-*qA);
  43667. *qA=temp;
  43668. }
  43669. if(*qB>fabs(*qA)*1.9999f){
  43670. *qB= -fabs(*qA)*2.f;
  43671. *qA= -*qA;
  43672. }
  43673. }
  43674. static float hypot_lookup[32]={
  43675. -0.009935, -0.011245, -0.012726, -0.014397,
  43676. -0.016282, -0.018407, -0.020800, -0.023494,
  43677. -0.026522, -0.029923, -0.033737, -0.038010,
  43678. -0.042787, -0.048121, -0.054064, -0.060671,
  43679. -0.068000, -0.076109, -0.085054, -0.094892,
  43680. -0.105675, -0.117451, -0.130260, -0.144134,
  43681. -0.159093, -0.175146, -0.192286, -0.210490,
  43682. -0.229718, -0.249913, -0.271001, -0.292893};
  43683. static void precomputed_couple_point(float premag,
  43684. int floorA,int floorB,
  43685. float *mag, float *ang){
  43686. int test=(floorA>floorB)-1;
  43687. int offset=31-abs(floorA-floorB);
  43688. float floormag=hypot_lookup[((offset<0)-1)&offset]+1.f;
  43689. floormag*=FLOOR1_fromdB_INV_LOOKUP[(floorB&test)|(floorA&(~test))];
  43690. *mag=premag*floormag;
  43691. *ang=0.f;
  43692. }
  43693. /* just like below, this is currently set up to only do
  43694. single-step-depth coupling. Otherwise, we'd have to do more
  43695. copying (which will be inevitable later) */
  43696. /* doing the real circular magnitude calculation is audibly superior
  43697. to (A+B)/sqrt(2) */
  43698. static float dipole_hypot(float a, float b){
  43699. if(a>0.){
  43700. if(b>0.)return sqrt(a*a+b*b);
  43701. if(a>-b)return sqrt(a*a-b*b);
  43702. return -sqrt(b*b-a*a);
  43703. }
  43704. if(b<0.)return -sqrt(a*a+b*b);
  43705. if(-a>b)return -sqrt(a*a-b*b);
  43706. return sqrt(b*b-a*a);
  43707. }
  43708. static float round_hypot(float a, float b){
  43709. if(a>0.){
  43710. if(b>0.)return sqrt(a*a+b*b);
  43711. if(a>-b)return sqrt(a*a+b*b);
  43712. return -sqrt(b*b+a*a);
  43713. }
  43714. if(b<0.)return -sqrt(a*a+b*b);
  43715. if(-a>b)return -sqrt(a*a+b*b);
  43716. return sqrt(b*b+a*a);
  43717. }
  43718. /* revert to round hypot for now */
  43719. float **_vp_quantize_couple_memo(vorbis_block *vb,
  43720. vorbis_info_psy_global *g,
  43721. vorbis_look_psy *p,
  43722. vorbis_info_mapping0 *vi,
  43723. float **mdct){
  43724. int i,j,n=p->n;
  43725. float **ret=_vorbis_block_alloc(vb,vi->coupling_steps*sizeof(*ret));
  43726. int limit=g->coupling_pointlimit[p->vi->blockflag][PACKETBLOBS/2];
  43727. for(i=0;i<vi->coupling_steps;i++){
  43728. float *mdctM=mdct[vi->coupling_mag[i]];
  43729. float *mdctA=mdct[vi->coupling_ang[i]];
  43730. ret[i]=_vorbis_block_alloc(vb,n*sizeof(**ret));
  43731. for(j=0;j<limit;j++)
  43732. ret[i][j]=dipole_hypot(mdctM[j],mdctA[j]);
  43733. for(;j<n;j++)
  43734. ret[i][j]=round_hypot(mdctM[j],mdctA[j]);
  43735. }
  43736. return(ret);
  43737. }
  43738. /* this is for per-channel noise normalization */
  43739. static int apsort(const void *a, const void *b){
  43740. float f1=fabs(**(float**)a);
  43741. float f2=fabs(**(float**)b);
  43742. return (f1<f2)-(f1>f2);
  43743. }
  43744. int **_vp_quantize_couple_sort(vorbis_block *vb,
  43745. vorbis_look_psy *p,
  43746. vorbis_info_mapping0 *vi,
  43747. float **mags){
  43748. if(p->vi->normal_point_p){
  43749. int i,j,k,n=p->n;
  43750. int **ret=_vorbis_block_alloc(vb,vi->coupling_steps*sizeof(*ret));
  43751. int partition=p->vi->normal_partition;
  43752. float **work=alloca(sizeof(*work)*partition);
  43753. for(i=0;i<vi->coupling_steps;i++){
  43754. ret[i]=_vorbis_block_alloc(vb,n*sizeof(**ret));
  43755. for(j=0;j<n;j+=partition){
  43756. for(k=0;k<partition;k++)work[k]=mags[i]+k+j;
  43757. qsort(work,partition,sizeof(*work),apsort);
  43758. for(k=0;k<partition;k++)ret[i][k+j]=work[k]-mags[i];
  43759. }
  43760. }
  43761. return(ret);
  43762. }
  43763. return(NULL);
  43764. }
  43765. void _vp_noise_normalize_sort(vorbis_look_psy *p,
  43766. float *magnitudes,int *sortedindex){
  43767. int i,j,n=p->n;
  43768. vorbis_info_psy *vi=p->vi;
  43769. int partition=vi->normal_partition;
  43770. float **work=alloca(sizeof(*work)*partition);
  43771. int start=vi->normal_start;
  43772. for(j=start;j<n;j+=partition){
  43773. if(j+partition>n)partition=n-j;
  43774. for(i=0;i<partition;i++)work[i]=magnitudes+i+j;
  43775. qsort(work,partition,sizeof(*work),apsort);
  43776. for(i=0;i<partition;i++){
  43777. sortedindex[i+j-start]=work[i]-magnitudes;
  43778. }
  43779. }
  43780. }
  43781. void _vp_noise_normalize(vorbis_look_psy *p,
  43782. float *in,float *out,int *sortedindex){
  43783. int flag=0,i,j=0,n=p->n;
  43784. vorbis_info_psy *vi=p->vi;
  43785. int partition=vi->normal_partition;
  43786. int start=vi->normal_start;
  43787. if(start>n)start=n;
  43788. if(vi->normal_channel_p){
  43789. for(;j<start;j++)
  43790. out[j]=rint(in[j]);
  43791. for(;j+partition<=n;j+=partition){
  43792. float acc=0.;
  43793. int k;
  43794. for(i=j;i<j+partition;i++)
  43795. acc+=in[i]*in[i];
  43796. for(i=0;i<partition;i++){
  43797. k=sortedindex[i+j-start];
  43798. if(in[k]*in[k]>=.25f){
  43799. out[k]=rint(in[k]);
  43800. acc-=in[k]*in[k];
  43801. flag=1;
  43802. }else{
  43803. if(acc<vi->normal_thresh)break;
  43804. out[k]=unitnorm(in[k]);
  43805. acc-=1.;
  43806. }
  43807. }
  43808. for(;i<partition;i++){
  43809. k=sortedindex[i+j-start];
  43810. out[k]=0.;
  43811. }
  43812. }
  43813. }
  43814. for(;j<n;j++)
  43815. out[j]=rint(in[j]);
  43816. }
  43817. void _vp_couple(int blobno,
  43818. vorbis_info_psy_global *g,
  43819. vorbis_look_psy *p,
  43820. vorbis_info_mapping0 *vi,
  43821. float **res,
  43822. float **mag_memo,
  43823. int **mag_sort,
  43824. int **ifloor,
  43825. int *nonzero,
  43826. int sliding_lowpass){
  43827. int i,j,k,n=p->n;
  43828. /* perform any requested channel coupling */
  43829. /* point stereo can only be used in a first stage (in this encoder)
  43830. because of the dependency on floor lookups */
  43831. for(i=0;i<vi->coupling_steps;i++){
  43832. /* once we're doing multistage coupling in which a channel goes
  43833. through more than one coupling step, the floor vector
  43834. magnitudes will also have to be recalculated an propogated
  43835. along with PCM. Right now, we're not (that will wait until 5.1
  43836. most likely), so the code isn't here yet. The memory management
  43837. here is all assuming single depth couplings anyway. */
  43838. /* make sure coupling a zero and a nonzero channel results in two
  43839. nonzero channels. */
  43840. if(nonzero[vi->coupling_mag[i]] ||
  43841. nonzero[vi->coupling_ang[i]]){
  43842. float *rM=res[vi->coupling_mag[i]];
  43843. float *rA=res[vi->coupling_ang[i]];
  43844. float *qM=rM+n;
  43845. float *qA=rA+n;
  43846. int *floorM=ifloor[vi->coupling_mag[i]];
  43847. int *floorA=ifloor[vi->coupling_ang[i]];
  43848. float prepoint=stereo_threshholds[g->coupling_prepointamp[blobno]];
  43849. float postpoint=stereo_threshholds[g->coupling_postpointamp[blobno]];
  43850. int partition=(p->vi->normal_point_p?p->vi->normal_partition:p->n);
  43851. int limit=g->coupling_pointlimit[p->vi->blockflag][blobno];
  43852. int pointlimit=limit;
  43853. nonzero[vi->coupling_mag[i]]=1;
  43854. nonzero[vi->coupling_ang[i]]=1;
  43855. for(j=0;j<p->n;j+=partition){
  43856. float acc=0.f;
  43857. for(k=0;k<partition;k++){
  43858. int l=k+j;
  43859. if(l<sliding_lowpass){
  43860. if((l>=limit && fabs(rM[l])<postpoint && fabs(rA[l])<postpoint) ||
  43861. (fabs(rM[l])<prepoint && fabs(rA[l])<prepoint)){
  43862. precomputed_couple_point(mag_memo[i][l],
  43863. floorM[l],floorA[l],
  43864. qM+l,qA+l);
  43865. if(rint(qM[l])==0.f)acc+=qM[l]*qM[l];
  43866. }else{
  43867. couple_lossless(rM[l],rA[l],qM+l,qA+l);
  43868. }
  43869. }else{
  43870. qM[l]=0.;
  43871. qA[l]=0.;
  43872. }
  43873. }
  43874. if(p->vi->normal_point_p){
  43875. for(k=0;k<partition && acc>=p->vi->normal_thresh;k++){
  43876. int l=mag_sort[i][j+k];
  43877. if(l<sliding_lowpass && l>=pointlimit && rint(qM[l])==0.f){
  43878. qM[l]=unitnorm(qM[l]);
  43879. acc-=1.f;
  43880. }
  43881. }
  43882. }
  43883. }
  43884. }
  43885. }
  43886. }
  43887. /********************************************************************
  43888. * *
  43889. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  43890. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  43891. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  43892. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  43893. * *
  43894. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  43895. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  43896. * *
  43897. ********************************************************************
  43898. function: *unnormalized* fft transform
  43899. last mod: $Id: smallft.c,v 1.17 2002/07/11 06:40:50 xiphmont Exp $
  43900. ********************************************************************/
  43901. /* FFT implementation from OggSquish, minus cosine transforms,
  43902. * minus all but radix 2/4 case. In Vorbis we only need this
  43903. * cut-down version.
  43904. *
  43905. * To do more than just power-of-two sized vectors, see the full
  43906. * version I wrote for NetLib.
  43907. *
  43908. * Note that the packing is a little strange; rather than the FFT r/i
  43909. * packing following R_0, I_n, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1,
  43910. * it follows R_0, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1, I_n like the
  43911. * FORTRAN version
  43912. */
  43913. static void drfti1(int n, float *wa, int *ifac){
  43914. static int ntryh[4] = { 4,2,3,5 };
  43915. static float tpi = 6.28318530717958648f;
  43916. float arg,argh,argld,fi;
  43917. int ntry=0,i,j=-1;
  43918. int k1, l1, l2, ib;
  43919. int ld, ii, ip, is, nq, nr;
  43920. int ido, ipm, nfm1;
  43921. int nl=n;
  43922. int nf=0;
  43923. L101:
  43924. j++;
  43925. if (j < 4)
  43926. ntry=ntryh[j];
  43927. else
  43928. ntry+=2;
  43929. L104:
  43930. nq=nl/ntry;
  43931. nr=nl-ntry*nq;
  43932. if (nr!=0) goto L101;
  43933. nf++;
  43934. ifac[nf+1]=ntry;
  43935. nl=nq;
  43936. if(ntry!=2)goto L107;
  43937. if(nf==1)goto L107;
  43938. for (i=1;i<nf;i++){
  43939. ib=nf-i+1;
  43940. ifac[ib+1]=ifac[ib];
  43941. }
  43942. ifac[2] = 2;
  43943. L107:
  43944. if(nl!=1)goto L104;
  43945. ifac[0]=n;
  43946. ifac[1]=nf;
  43947. argh=tpi/n;
  43948. is=0;
  43949. nfm1=nf-1;
  43950. l1=1;
  43951. if(nfm1==0)return;
  43952. for (k1=0;k1<nfm1;k1++){
  43953. ip=ifac[k1+2];
  43954. ld=0;
  43955. l2=l1*ip;
  43956. ido=n/l2;
  43957. ipm=ip-1;
  43958. for (j=0;j<ipm;j++){
  43959. ld+=l1;
  43960. i=is;
  43961. argld=(float)ld*argh;
  43962. fi=0.f;
  43963. for (ii=2;ii<ido;ii+=2){
  43964. fi+=1.f;
  43965. arg=fi*argld;
  43966. wa[i++]=cos(arg);
  43967. wa[i++]=sin(arg);
  43968. }
  43969. is+=ido;
  43970. }
  43971. l1=l2;
  43972. }
  43973. }
  43974. static void fdrffti(int n, float *wsave, int *ifac){
  43975. if (n == 1) return;
  43976. drfti1(n, wsave+n, ifac);
  43977. }
  43978. static void dradf2(int ido,int l1,float *cc,float *ch,float *wa1){
  43979. int i,k;
  43980. float ti2,tr2;
  43981. int t0,t1,t2,t3,t4,t5,t6;
  43982. t1=0;
  43983. t0=(t2=l1*ido);
  43984. t3=ido<<1;
  43985. for(k=0;k<l1;k++){
  43986. ch[t1<<1]=cc[t1]+cc[t2];
  43987. ch[(t1<<1)+t3-1]=cc[t1]-cc[t2];
  43988. t1+=ido;
  43989. t2+=ido;
  43990. }
  43991. if(ido<2)return;
  43992. if(ido==2)goto L105;
  43993. t1=0;
  43994. t2=t0;
  43995. for(k=0;k<l1;k++){
  43996. t3=t2;
  43997. t4=(t1<<1)+(ido<<1);
  43998. t5=t1;
  43999. t6=t1+t1;
  44000. for(i=2;i<ido;i+=2){
  44001. t3+=2;
  44002. t4-=2;
  44003. t5+=2;
  44004. t6+=2;
  44005. tr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3];
  44006. ti2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1];
  44007. ch[t6]=cc[t5]+ti2;
  44008. ch[t4]=ti2-cc[t5];
  44009. ch[t6-1]=cc[t5-1]+tr2;
  44010. ch[t4-1]=cc[t5-1]-tr2;
  44011. }
  44012. t1+=ido;
  44013. t2+=ido;
  44014. }
  44015. if(ido%2==1)return;
  44016. L105:
  44017. t3=(t2=(t1=ido)-1);
  44018. t2+=t0;
  44019. for(k=0;k<l1;k++){
  44020. ch[t1]=-cc[t2];
  44021. ch[t1-1]=cc[t3];
  44022. t1+=ido<<1;
  44023. t2+=ido;
  44024. t3+=ido;
  44025. }
  44026. }
  44027. static void dradf4(int ido,int l1,float *cc,float *ch,float *wa1,
  44028. float *wa2,float *wa3){
  44029. static float hsqt2 = .70710678118654752f;
  44030. int i,k,t0,t1,t2,t3,t4,t5,t6;
  44031. float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
  44032. t0=l1*ido;
  44033. t1=t0;
  44034. t4=t1<<1;
  44035. t2=t1+(t1<<1);
  44036. t3=0;
  44037. for(k=0;k<l1;k++){
  44038. tr1=cc[t1]+cc[t2];
  44039. tr2=cc[t3]+cc[t4];
  44040. ch[t5=t3<<2]=tr1+tr2;
  44041. ch[(ido<<2)+t5-1]=tr2-tr1;
  44042. ch[(t5+=(ido<<1))-1]=cc[t3]-cc[t4];
  44043. ch[t5]=cc[t2]-cc[t1];
  44044. t1+=ido;
  44045. t2+=ido;
  44046. t3+=ido;
  44047. t4+=ido;
  44048. }
  44049. if(ido<2)return;
  44050. if(ido==2)goto L105;
  44051. t1=0;
  44052. for(k=0;k<l1;k++){
  44053. t2=t1;
  44054. t4=t1<<2;
  44055. t5=(t6=ido<<1)+t4;
  44056. for(i=2;i<ido;i+=2){
  44057. t3=(t2+=2);
  44058. t4+=2;
  44059. t5-=2;
  44060. t3+=t0;
  44061. cr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3];
  44062. ci2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1];
  44063. t3+=t0;
  44064. cr3=wa2[i-2]*cc[t3-1]+wa2[i-1]*cc[t3];
  44065. ci3=wa2[i-2]*cc[t3]-wa2[i-1]*cc[t3-1];
  44066. t3+=t0;
  44067. cr4=wa3[i-2]*cc[t3-1]+wa3[i-1]*cc[t3];
  44068. ci4=wa3[i-2]*cc[t3]-wa3[i-1]*cc[t3-1];
  44069. tr1=cr2+cr4;
  44070. tr4=cr4-cr2;
  44071. ti1=ci2+ci4;
  44072. ti4=ci2-ci4;
  44073. ti2=cc[t2]+ci3;
  44074. ti3=cc[t2]-ci3;
  44075. tr2=cc[t2-1]+cr3;
  44076. tr3=cc[t2-1]-cr3;
  44077. ch[t4-1]=tr1+tr2;
  44078. ch[t4]=ti1+ti2;
  44079. ch[t5-1]=tr3-ti4;
  44080. ch[t5]=tr4-ti3;
  44081. ch[t4+t6-1]=ti4+tr3;
  44082. ch[t4+t6]=tr4+ti3;
  44083. ch[t5+t6-1]=tr2-tr1;
  44084. ch[t5+t6]=ti1-ti2;
  44085. }
  44086. t1+=ido;
  44087. }
  44088. if(ido&1)return;
  44089. L105:
  44090. t2=(t1=t0+ido-1)+(t0<<1);
  44091. t3=ido<<2;
  44092. t4=ido;
  44093. t5=ido<<1;
  44094. t6=ido;
  44095. for(k=0;k<l1;k++){
  44096. ti1=-hsqt2*(cc[t1]+cc[t2]);
  44097. tr1=hsqt2*(cc[t1]-cc[t2]);
  44098. ch[t4-1]=tr1+cc[t6-1];
  44099. ch[t4+t5-1]=cc[t6-1]-tr1;
  44100. ch[t4]=ti1-cc[t1+t0];
  44101. ch[t4+t5]=ti1+cc[t1+t0];
  44102. t1+=ido;
  44103. t2+=ido;
  44104. t4+=t3;
  44105. t6+=ido;
  44106. }
  44107. }
  44108. static void dradfg(int ido,int ip,int l1,int idl1,float *cc,float *c1,
  44109. float *c2,float *ch,float *ch2,float *wa){
  44110. static float tpi=6.283185307179586f;
  44111. int idij,ipph,i,j,k,l,ic,ik,is;
  44112. int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
  44113. float dc2,ai1,ai2,ar1,ar2,ds2;
  44114. int nbd;
  44115. float dcp,arg,dsp,ar1h,ar2h;
  44116. int idp2,ipp2;
  44117. arg=tpi/(float)ip;
  44118. dcp=cos(arg);
  44119. dsp=sin(arg);
  44120. ipph=(ip+1)>>1;
  44121. ipp2=ip;
  44122. idp2=ido;
  44123. nbd=(ido-1)>>1;
  44124. t0=l1*ido;
  44125. t10=ip*ido;
  44126. if(ido==1)goto L119;
  44127. for(ik=0;ik<idl1;ik++)ch2[ik]=c2[ik];
  44128. t1=0;
  44129. for(j=1;j<ip;j++){
  44130. t1+=t0;
  44131. t2=t1;
  44132. for(k=0;k<l1;k++){
  44133. ch[t2]=c1[t2];
  44134. t2+=ido;
  44135. }
  44136. }
  44137. is=-ido;
  44138. t1=0;
  44139. if(nbd>l1){
  44140. for(j=1;j<ip;j++){
  44141. t1+=t0;
  44142. is+=ido;
  44143. t2= -ido+t1;
  44144. for(k=0;k<l1;k++){
  44145. idij=is-1;
  44146. t2+=ido;
  44147. t3=t2;
  44148. for(i=2;i<ido;i+=2){
  44149. idij+=2;
  44150. t3+=2;
  44151. ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3];
  44152. ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1];
  44153. }
  44154. }
  44155. }
  44156. }else{
  44157. for(j=1;j<ip;j++){
  44158. is+=ido;
  44159. idij=is-1;
  44160. t1+=t0;
  44161. t2=t1;
  44162. for(i=2;i<ido;i+=2){
  44163. idij+=2;
  44164. t2+=2;
  44165. t3=t2;
  44166. for(k=0;k<l1;k++){
  44167. ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3];
  44168. ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1];
  44169. t3+=ido;
  44170. }
  44171. }
  44172. }
  44173. }
  44174. t1=0;
  44175. t2=ipp2*t0;
  44176. if(nbd<l1){
  44177. for(j=1;j<ipph;j++){
  44178. t1+=t0;
  44179. t2-=t0;
  44180. t3=t1;
  44181. t4=t2;
  44182. for(i=2;i<ido;i+=2){
  44183. t3+=2;
  44184. t4+=2;
  44185. t5=t3-ido;
  44186. t6=t4-ido;
  44187. for(k=0;k<l1;k++){
  44188. t5+=ido;
  44189. t6+=ido;
  44190. c1[t5-1]=ch[t5-1]+ch[t6-1];
  44191. c1[t6-1]=ch[t5]-ch[t6];
  44192. c1[t5]=ch[t5]+ch[t6];
  44193. c1[t6]=ch[t6-1]-ch[t5-1];
  44194. }
  44195. }
  44196. }
  44197. }else{
  44198. for(j=1;j<ipph;j++){
  44199. t1+=t0;
  44200. t2-=t0;
  44201. t3=t1;
  44202. t4=t2;
  44203. for(k=0;k<l1;k++){
  44204. t5=t3;
  44205. t6=t4;
  44206. for(i=2;i<ido;i+=2){
  44207. t5+=2;
  44208. t6+=2;
  44209. c1[t5-1]=ch[t5-1]+ch[t6-1];
  44210. c1[t6-1]=ch[t5]-ch[t6];
  44211. c1[t5]=ch[t5]+ch[t6];
  44212. c1[t6]=ch[t6-1]-ch[t5-1];
  44213. }
  44214. t3+=ido;
  44215. t4+=ido;
  44216. }
  44217. }
  44218. }
  44219. L119:
  44220. for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik];
  44221. t1=0;
  44222. t2=ipp2*idl1;
  44223. for(j=1;j<ipph;j++){
  44224. t1+=t0;
  44225. t2-=t0;
  44226. t3=t1-ido;
  44227. t4=t2-ido;
  44228. for(k=0;k<l1;k++){
  44229. t3+=ido;
  44230. t4+=ido;
  44231. c1[t3]=ch[t3]+ch[t4];
  44232. c1[t4]=ch[t4]-ch[t3];
  44233. }
  44234. }
  44235. ar1=1.f;
  44236. ai1=0.f;
  44237. t1=0;
  44238. t2=ipp2*idl1;
  44239. t3=(ip-1)*idl1;
  44240. for(l=1;l<ipph;l++){
  44241. t1+=idl1;
  44242. t2-=idl1;
  44243. ar1h=dcp*ar1-dsp*ai1;
  44244. ai1=dcp*ai1+dsp*ar1;
  44245. ar1=ar1h;
  44246. t4=t1;
  44247. t5=t2;
  44248. t6=t3;
  44249. t7=idl1;
  44250. for(ik=0;ik<idl1;ik++){
  44251. ch2[t4++]=c2[ik]+ar1*c2[t7++];
  44252. ch2[t5++]=ai1*c2[t6++];
  44253. }
  44254. dc2=ar1;
  44255. ds2=ai1;
  44256. ar2=ar1;
  44257. ai2=ai1;
  44258. t4=idl1;
  44259. t5=(ipp2-1)*idl1;
  44260. for(j=2;j<ipph;j++){
  44261. t4+=idl1;
  44262. t5-=idl1;
  44263. ar2h=dc2*ar2-ds2*ai2;
  44264. ai2=dc2*ai2+ds2*ar2;
  44265. ar2=ar2h;
  44266. t6=t1;
  44267. t7=t2;
  44268. t8=t4;
  44269. t9=t5;
  44270. for(ik=0;ik<idl1;ik++){
  44271. ch2[t6++]+=ar2*c2[t8++];
  44272. ch2[t7++]+=ai2*c2[t9++];
  44273. }
  44274. }
  44275. }
  44276. t1=0;
  44277. for(j=1;j<ipph;j++){
  44278. t1+=idl1;
  44279. t2=t1;
  44280. for(ik=0;ik<idl1;ik++)ch2[ik]+=c2[t2++];
  44281. }
  44282. if(ido<l1)goto L132;
  44283. t1=0;
  44284. t2=0;
  44285. for(k=0;k<l1;k++){
  44286. t3=t1;
  44287. t4=t2;
  44288. for(i=0;i<ido;i++)cc[t4++]=ch[t3++];
  44289. t1+=ido;
  44290. t2+=t10;
  44291. }
  44292. goto L135;
  44293. L132:
  44294. for(i=0;i<ido;i++){
  44295. t1=i;
  44296. t2=i;
  44297. for(k=0;k<l1;k++){
  44298. cc[t2]=ch[t1];
  44299. t1+=ido;
  44300. t2+=t10;
  44301. }
  44302. }
  44303. L135:
  44304. t1=0;
  44305. t2=ido<<1;
  44306. t3=0;
  44307. t4=ipp2*t0;
  44308. for(j=1;j<ipph;j++){
  44309. t1+=t2;
  44310. t3+=t0;
  44311. t4-=t0;
  44312. t5=t1;
  44313. t6=t3;
  44314. t7=t4;
  44315. for(k=0;k<l1;k++){
  44316. cc[t5-1]=ch[t6];
  44317. cc[t5]=ch[t7];
  44318. t5+=t10;
  44319. t6+=ido;
  44320. t7+=ido;
  44321. }
  44322. }
  44323. if(ido==1)return;
  44324. if(nbd<l1)goto L141;
  44325. t1=-ido;
  44326. t3=0;
  44327. t4=0;
  44328. t5=ipp2*t0;
  44329. for(j=1;j<ipph;j++){
  44330. t1+=t2;
  44331. t3+=t2;
  44332. t4+=t0;
  44333. t5-=t0;
  44334. t6=t1;
  44335. t7=t3;
  44336. t8=t4;
  44337. t9=t5;
  44338. for(k=0;k<l1;k++){
  44339. for(i=2;i<ido;i+=2){
  44340. ic=idp2-i;
  44341. cc[i+t7-1]=ch[i+t8-1]+ch[i+t9-1];
  44342. cc[ic+t6-1]=ch[i+t8-1]-ch[i+t9-1];
  44343. cc[i+t7]=ch[i+t8]+ch[i+t9];
  44344. cc[ic+t6]=ch[i+t9]-ch[i+t8];
  44345. }
  44346. t6+=t10;
  44347. t7+=t10;
  44348. t8+=ido;
  44349. t9+=ido;
  44350. }
  44351. }
  44352. return;
  44353. L141:
  44354. t1=-ido;
  44355. t3=0;
  44356. t4=0;
  44357. t5=ipp2*t0;
  44358. for(j=1;j<ipph;j++){
  44359. t1+=t2;
  44360. t3+=t2;
  44361. t4+=t0;
  44362. t5-=t0;
  44363. for(i=2;i<ido;i+=2){
  44364. t6=idp2+t1-i;
  44365. t7=i+t3;
  44366. t8=i+t4;
  44367. t9=i+t5;
  44368. for(k=0;k<l1;k++){
  44369. cc[t7-1]=ch[t8-1]+ch[t9-1];
  44370. cc[t6-1]=ch[t8-1]-ch[t9-1];
  44371. cc[t7]=ch[t8]+ch[t9];
  44372. cc[t6]=ch[t9]-ch[t8];
  44373. t6+=t10;
  44374. t7+=t10;
  44375. t8+=ido;
  44376. t9+=ido;
  44377. }
  44378. }
  44379. }
  44380. }
  44381. static void drftf1(int n,float *c,float *ch,float *wa,int *ifac){
  44382. int i,k1,l1,l2;
  44383. int na,kh,nf;
  44384. int ip,iw,ido,idl1,ix2,ix3;
  44385. nf=ifac[1];
  44386. na=1;
  44387. l2=n;
  44388. iw=n;
  44389. for(k1=0;k1<nf;k1++){
  44390. kh=nf-k1;
  44391. ip=ifac[kh+1];
  44392. l1=l2/ip;
  44393. ido=n/l2;
  44394. idl1=ido*l1;
  44395. iw-=(ip-1)*ido;
  44396. na=1-na;
  44397. if(ip!=4)goto L102;
  44398. ix2=iw+ido;
  44399. ix3=ix2+ido;
  44400. if(na!=0)
  44401. dradf4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1);
  44402. else
  44403. dradf4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1);
  44404. goto L110;
  44405. L102:
  44406. if(ip!=2)goto L104;
  44407. if(na!=0)goto L103;
  44408. dradf2(ido,l1,c,ch,wa+iw-1);
  44409. goto L110;
  44410. L103:
  44411. dradf2(ido,l1,ch,c,wa+iw-1);
  44412. goto L110;
  44413. L104:
  44414. if(ido==1)na=1-na;
  44415. if(na!=0)goto L109;
  44416. dradfg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1);
  44417. na=1;
  44418. goto L110;
  44419. L109:
  44420. dradfg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1);
  44421. na=0;
  44422. L110:
  44423. l2=l1;
  44424. }
  44425. if(na==1)return;
  44426. for(i=0;i<n;i++)c[i]=ch[i];
  44427. }
  44428. static void dradb2(int ido,int l1,float *cc,float *ch,float *wa1){
  44429. int i,k,t0,t1,t2,t3,t4,t5,t6;
  44430. float ti2,tr2;
  44431. t0=l1*ido;
  44432. t1=0;
  44433. t2=0;
  44434. t3=(ido<<1)-1;
  44435. for(k=0;k<l1;k++){
  44436. ch[t1]=cc[t2]+cc[t3+t2];
  44437. ch[t1+t0]=cc[t2]-cc[t3+t2];
  44438. t2=(t1+=ido)<<1;
  44439. }
  44440. if(ido<2)return;
  44441. if(ido==2)goto L105;
  44442. t1=0;
  44443. t2=0;
  44444. for(k=0;k<l1;k++){
  44445. t3=t1;
  44446. t5=(t4=t2)+(ido<<1);
  44447. t6=t0+t1;
  44448. for(i=2;i<ido;i+=2){
  44449. t3+=2;
  44450. t4+=2;
  44451. t5-=2;
  44452. t6+=2;
  44453. ch[t3-1]=cc[t4-1]+cc[t5-1];
  44454. tr2=cc[t4-1]-cc[t5-1];
  44455. ch[t3]=cc[t4]-cc[t5];
  44456. ti2=cc[t4]+cc[t5];
  44457. ch[t6-1]=wa1[i-2]*tr2-wa1[i-1]*ti2;
  44458. ch[t6]=wa1[i-2]*ti2+wa1[i-1]*tr2;
  44459. }
  44460. t2=(t1+=ido)<<1;
  44461. }
  44462. if(ido%2==1)return;
  44463. L105:
  44464. t1=ido-1;
  44465. t2=ido-1;
  44466. for(k=0;k<l1;k++){
  44467. ch[t1]=cc[t2]+cc[t2];
  44468. ch[t1+t0]=-(cc[t2+1]+cc[t2+1]);
  44469. t1+=ido;
  44470. t2+=ido<<1;
  44471. }
  44472. }
  44473. static void dradb3(int ido,int l1,float *cc,float *ch,float *wa1,
  44474. float *wa2){
  44475. static float taur = -.5f;
  44476. static float taui = .8660254037844386f;
  44477. int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
  44478. float ci2,ci3,di2,di3,cr2,cr3,dr2,dr3,ti2,tr2;
  44479. t0=l1*ido;
  44480. t1=0;
  44481. t2=t0<<1;
  44482. t3=ido<<1;
  44483. t4=ido+(ido<<1);
  44484. t5=0;
  44485. for(k=0;k<l1;k++){
  44486. tr2=cc[t3-1]+cc[t3-1];
  44487. cr2=cc[t5]+(taur*tr2);
  44488. ch[t1]=cc[t5]+tr2;
  44489. ci3=taui*(cc[t3]+cc[t3]);
  44490. ch[t1+t0]=cr2-ci3;
  44491. ch[t1+t2]=cr2+ci3;
  44492. t1+=ido;
  44493. t3+=t4;
  44494. t5+=t4;
  44495. }
  44496. if(ido==1)return;
  44497. t1=0;
  44498. t3=ido<<1;
  44499. for(k=0;k<l1;k++){
  44500. t7=t1+(t1<<1);
  44501. t6=(t5=t7+t3);
  44502. t8=t1;
  44503. t10=(t9=t1+t0)+t0;
  44504. for(i=2;i<ido;i+=2){
  44505. t5+=2;
  44506. t6-=2;
  44507. t7+=2;
  44508. t8+=2;
  44509. t9+=2;
  44510. t10+=2;
  44511. tr2=cc[t5-1]+cc[t6-1];
  44512. cr2=cc[t7-1]+(taur*tr2);
  44513. ch[t8-1]=cc[t7-1]+tr2;
  44514. ti2=cc[t5]-cc[t6];
  44515. ci2=cc[t7]+(taur*ti2);
  44516. ch[t8]=cc[t7]+ti2;
  44517. cr3=taui*(cc[t5-1]-cc[t6-1]);
  44518. ci3=taui*(cc[t5]+cc[t6]);
  44519. dr2=cr2-ci3;
  44520. dr3=cr2+ci3;
  44521. di2=ci2+cr3;
  44522. di3=ci2-cr3;
  44523. ch[t9-1]=wa1[i-2]*dr2-wa1[i-1]*di2;
  44524. ch[t9]=wa1[i-2]*di2+wa1[i-1]*dr2;
  44525. ch[t10-1]=wa2[i-2]*dr3-wa2[i-1]*di3;
  44526. ch[t10]=wa2[i-2]*di3+wa2[i-1]*dr3;
  44527. }
  44528. t1+=ido;
  44529. }
  44530. }
  44531. static void dradb4(int ido,int l1,float *cc,float *ch,float *wa1,
  44532. float *wa2,float *wa3){
  44533. static float sqrt2=1.414213562373095f;
  44534. int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8;
  44535. float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
  44536. t0=l1*ido;
  44537. t1=0;
  44538. t2=ido<<2;
  44539. t3=0;
  44540. t6=ido<<1;
  44541. for(k=0;k<l1;k++){
  44542. t4=t3+t6;
  44543. t5=t1;
  44544. tr3=cc[t4-1]+cc[t4-1];
  44545. tr4=cc[t4]+cc[t4];
  44546. tr1=cc[t3]-cc[(t4+=t6)-1];
  44547. tr2=cc[t3]+cc[t4-1];
  44548. ch[t5]=tr2+tr3;
  44549. ch[t5+=t0]=tr1-tr4;
  44550. ch[t5+=t0]=tr2-tr3;
  44551. ch[t5+=t0]=tr1+tr4;
  44552. t1+=ido;
  44553. t3+=t2;
  44554. }
  44555. if(ido<2)return;
  44556. if(ido==2)goto L105;
  44557. t1=0;
  44558. for(k=0;k<l1;k++){
  44559. t5=(t4=(t3=(t2=t1<<2)+t6))+t6;
  44560. t7=t1;
  44561. for(i=2;i<ido;i+=2){
  44562. t2+=2;
  44563. t3+=2;
  44564. t4-=2;
  44565. t5-=2;
  44566. t7+=2;
  44567. ti1=cc[t2]+cc[t5];
  44568. ti2=cc[t2]-cc[t5];
  44569. ti3=cc[t3]-cc[t4];
  44570. tr4=cc[t3]+cc[t4];
  44571. tr1=cc[t2-1]-cc[t5-1];
  44572. tr2=cc[t2-1]+cc[t5-1];
  44573. ti4=cc[t3-1]-cc[t4-1];
  44574. tr3=cc[t3-1]+cc[t4-1];
  44575. ch[t7-1]=tr2+tr3;
  44576. cr3=tr2-tr3;
  44577. ch[t7]=ti2+ti3;
  44578. ci3=ti2-ti3;
  44579. cr2=tr1-tr4;
  44580. cr4=tr1+tr4;
  44581. ci2=ti1+ti4;
  44582. ci4=ti1-ti4;
  44583. ch[(t8=t7+t0)-1]=wa1[i-2]*cr2-wa1[i-1]*ci2;
  44584. ch[t8]=wa1[i-2]*ci2+wa1[i-1]*cr2;
  44585. ch[(t8+=t0)-1]=wa2[i-2]*cr3-wa2[i-1]*ci3;
  44586. ch[t8]=wa2[i-2]*ci3+wa2[i-1]*cr3;
  44587. ch[(t8+=t0)-1]=wa3[i-2]*cr4-wa3[i-1]*ci4;
  44588. ch[t8]=wa3[i-2]*ci4+wa3[i-1]*cr4;
  44589. }
  44590. t1+=ido;
  44591. }
  44592. if(ido%2 == 1)return;
  44593. L105:
  44594. t1=ido;
  44595. t2=ido<<2;
  44596. t3=ido-1;
  44597. t4=ido+(ido<<1);
  44598. for(k=0;k<l1;k++){
  44599. t5=t3;
  44600. ti1=cc[t1]+cc[t4];
  44601. ti2=cc[t4]-cc[t1];
  44602. tr1=cc[t1-1]-cc[t4-1];
  44603. tr2=cc[t1-1]+cc[t4-1];
  44604. ch[t5]=tr2+tr2;
  44605. ch[t5+=t0]=sqrt2*(tr1-ti1);
  44606. ch[t5+=t0]=ti2+ti2;
  44607. ch[t5+=t0]=-sqrt2*(tr1+ti1);
  44608. t3+=ido;
  44609. t1+=t2;
  44610. t4+=t2;
  44611. }
  44612. }
  44613. static void dradbg(int ido,int ip,int l1,int idl1,float *cc,float *c1,
  44614. float *c2,float *ch,float *ch2,float *wa){
  44615. static float tpi=6.283185307179586f;
  44616. int idij,ipph,i,j,k,l,ik,is,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,
  44617. t11,t12;
  44618. float dc2,ai1,ai2,ar1,ar2,ds2;
  44619. int nbd;
  44620. float dcp,arg,dsp,ar1h,ar2h;
  44621. int ipp2;
  44622. t10=ip*ido;
  44623. t0=l1*ido;
  44624. arg=tpi/(float)ip;
  44625. dcp=cos(arg);
  44626. dsp=sin(arg);
  44627. nbd=(ido-1)>>1;
  44628. ipp2=ip;
  44629. ipph=(ip+1)>>1;
  44630. if(ido<l1)goto L103;
  44631. t1=0;
  44632. t2=0;
  44633. for(k=0;k<l1;k++){
  44634. t3=t1;
  44635. t4=t2;
  44636. for(i=0;i<ido;i++){
  44637. ch[t3]=cc[t4];
  44638. t3++;
  44639. t4++;
  44640. }
  44641. t1+=ido;
  44642. t2+=t10;
  44643. }
  44644. goto L106;
  44645. L103:
  44646. t1=0;
  44647. for(i=0;i<ido;i++){
  44648. t2=t1;
  44649. t3=t1;
  44650. for(k=0;k<l1;k++){
  44651. ch[t2]=cc[t3];
  44652. t2+=ido;
  44653. t3+=t10;
  44654. }
  44655. t1++;
  44656. }
  44657. L106:
  44658. t1=0;
  44659. t2=ipp2*t0;
  44660. t7=(t5=ido<<1);
  44661. for(j=1;j<ipph;j++){
  44662. t1+=t0;
  44663. t2-=t0;
  44664. t3=t1;
  44665. t4=t2;
  44666. t6=t5;
  44667. for(k=0;k<l1;k++){
  44668. ch[t3]=cc[t6-1]+cc[t6-1];
  44669. ch[t4]=cc[t6]+cc[t6];
  44670. t3+=ido;
  44671. t4+=ido;
  44672. t6+=t10;
  44673. }
  44674. t5+=t7;
  44675. }
  44676. if (ido == 1)goto L116;
  44677. if(nbd<l1)goto L112;
  44678. t1=0;
  44679. t2=ipp2*t0;
  44680. t7=0;
  44681. for(j=1;j<ipph;j++){
  44682. t1+=t0;
  44683. t2-=t0;
  44684. t3=t1;
  44685. t4=t2;
  44686. t7+=(ido<<1);
  44687. t8=t7;
  44688. for(k=0;k<l1;k++){
  44689. t5=t3;
  44690. t6=t4;
  44691. t9=t8;
  44692. t11=t8;
  44693. for(i=2;i<ido;i+=2){
  44694. t5+=2;
  44695. t6+=2;
  44696. t9+=2;
  44697. t11-=2;
  44698. ch[t5-1]=cc[t9-1]+cc[t11-1];
  44699. ch[t6-1]=cc[t9-1]-cc[t11-1];
  44700. ch[t5]=cc[t9]-cc[t11];
  44701. ch[t6]=cc[t9]+cc[t11];
  44702. }
  44703. t3+=ido;
  44704. t4+=ido;
  44705. t8+=t10;
  44706. }
  44707. }
  44708. goto L116;
  44709. L112:
  44710. t1=0;
  44711. t2=ipp2*t0;
  44712. t7=0;
  44713. for(j=1;j<ipph;j++){
  44714. t1+=t0;
  44715. t2-=t0;
  44716. t3=t1;
  44717. t4=t2;
  44718. t7+=(ido<<1);
  44719. t8=t7;
  44720. t9=t7;
  44721. for(i=2;i<ido;i+=2){
  44722. t3+=2;
  44723. t4+=2;
  44724. t8+=2;
  44725. t9-=2;
  44726. t5=t3;
  44727. t6=t4;
  44728. t11=t8;
  44729. t12=t9;
  44730. for(k=0;k<l1;k++){
  44731. ch[t5-1]=cc[t11-1]+cc[t12-1];
  44732. ch[t6-1]=cc[t11-1]-cc[t12-1];
  44733. ch[t5]=cc[t11]-cc[t12];
  44734. ch[t6]=cc[t11]+cc[t12];
  44735. t5+=ido;
  44736. t6+=ido;
  44737. t11+=t10;
  44738. t12+=t10;
  44739. }
  44740. }
  44741. }
  44742. L116:
  44743. ar1=1.f;
  44744. ai1=0.f;
  44745. t1=0;
  44746. t9=(t2=ipp2*idl1);
  44747. t3=(ip-1)*idl1;
  44748. for(l=1;l<ipph;l++){
  44749. t1+=idl1;
  44750. t2-=idl1;
  44751. ar1h=dcp*ar1-dsp*ai1;
  44752. ai1=dcp*ai1+dsp*ar1;
  44753. ar1=ar1h;
  44754. t4=t1;
  44755. t5=t2;
  44756. t6=0;
  44757. t7=idl1;
  44758. t8=t3;
  44759. for(ik=0;ik<idl1;ik++){
  44760. c2[t4++]=ch2[t6++]+ar1*ch2[t7++];
  44761. c2[t5++]=ai1*ch2[t8++];
  44762. }
  44763. dc2=ar1;
  44764. ds2=ai1;
  44765. ar2=ar1;
  44766. ai2=ai1;
  44767. t6=idl1;
  44768. t7=t9-idl1;
  44769. for(j=2;j<ipph;j++){
  44770. t6+=idl1;
  44771. t7-=idl1;
  44772. ar2h=dc2*ar2-ds2*ai2;
  44773. ai2=dc2*ai2+ds2*ar2;
  44774. ar2=ar2h;
  44775. t4=t1;
  44776. t5=t2;
  44777. t11=t6;
  44778. t12=t7;
  44779. for(ik=0;ik<idl1;ik++){
  44780. c2[t4++]+=ar2*ch2[t11++];
  44781. c2[t5++]+=ai2*ch2[t12++];
  44782. }
  44783. }
  44784. }
  44785. t1=0;
  44786. for(j=1;j<ipph;j++){
  44787. t1+=idl1;
  44788. t2=t1;
  44789. for(ik=0;ik<idl1;ik++)ch2[ik]+=ch2[t2++];
  44790. }
  44791. t1=0;
  44792. t2=ipp2*t0;
  44793. for(j=1;j<ipph;j++){
  44794. t1+=t0;
  44795. t2-=t0;
  44796. t3=t1;
  44797. t4=t2;
  44798. for(k=0;k<l1;k++){
  44799. ch[t3]=c1[t3]-c1[t4];
  44800. ch[t4]=c1[t3]+c1[t4];
  44801. t3+=ido;
  44802. t4+=ido;
  44803. }
  44804. }
  44805. if(ido==1)goto L132;
  44806. if(nbd<l1)goto L128;
  44807. t1=0;
  44808. t2=ipp2*t0;
  44809. for(j=1;j<ipph;j++){
  44810. t1+=t0;
  44811. t2-=t0;
  44812. t3=t1;
  44813. t4=t2;
  44814. for(k=0;k<l1;k++){
  44815. t5=t3;
  44816. t6=t4;
  44817. for(i=2;i<ido;i+=2){
  44818. t5+=2;
  44819. t6+=2;
  44820. ch[t5-1]=c1[t5-1]-c1[t6];
  44821. ch[t6-1]=c1[t5-1]+c1[t6];
  44822. ch[t5]=c1[t5]+c1[t6-1];
  44823. ch[t6]=c1[t5]-c1[t6-1];
  44824. }
  44825. t3+=ido;
  44826. t4+=ido;
  44827. }
  44828. }
  44829. goto L132;
  44830. L128:
  44831. t1=0;
  44832. t2=ipp2*t0;
  44833. for(j=1;j<ipph;j++){
  44834. t1+=t0;
  44835. t2-=t0;
  44836. t3=t1;
  44837. t4=t2;
  44838. for(i=2;i<ido;i+=2){
  44839. t3+=2;
  44840. t4+=2;
  44841. t5=t3;
  44842. t6=t4;
  44843. for(k=0;k<l1;k++){
  44844. ch[t5-1]=c1[t5-1]-c1[t6];
  44845. ch[t6-1]=c1[t5-1]+c1[t6];
  44846. ch[t5]=c1[t5]+c1[t6-1];
  44847. ch[t6]=c1[t5]-c1[t6-1];
  44848. t5+=ido;
  44849. t6+=ido;
  44850. }
  44851. }
  44852. }
  44853. L132:
  44854. if(ido==1)return;
  44855. for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik];
  44856. t1=0;
  44857. for(j=1;j<ip;j++){
  44858. t2=(t1+=t0);
  44859. for(k=0;k<l1;k++){
  44860. c1[t2]=ch[t2];
  44861. t2+=ido;
  44862. }
  44863. }
  44864. if(nbd>l1)goto L139;
  44865. is= -ido-1;
  44866. t1=0;
  44867. for(j=1;j<ip;j++){
  44868. is+=ido;
  44869. t1+=t0;
  44870. idij=is;
  44871. t2=t1;
  44872. for(i=2;i<ido;i+=2){
  44873. t2+=2;
  44874. idij+=2;
  44875. t3=t2;
  44876. for(k=0;k<l1;k++){
  44877. c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3];
  44878. c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1];
  44879. t3+=ido;
  44880. }
  44881. }
  44882. }
  44883. return;
  44884. L139:
  44885. is= -ido-1;
  44886. t1=0;
  44887. for(j=1;j<ip;j++){
  44888. is+=ido;
  44889. t1+=t0;
  44890. t2=t1;
  44891. for(k=0;k<l1;k++){
  44892. idij=is;
  44893. t3=t2;
  44894. for(i=2;i<ido;i+=2){
  44895. idij+=2;
  44896. t3+=2;
  44897. c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3];
  44898. c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1];
  44899. }
  44900. t2+=ido;
  44901. }
  44902. }
  44903. }
  44904. static void drftb1(int n, float *c, float *ch, float *wa, int *ifac){
  44905. int i,k1,l1,l2;
  44906. int na;
  44907. int nf,ip,iw,ix2,ix3,ido,idl1;
  44908. nf=ifac[1];
  44909. na=0;
  44910. l1=1;
  44911. iw=1;
  44912. for(k1=0;k1<nf;k1++){
  44913. ip=ifac[k1 + 2];
  44914. l2=ip*l1;
  44915. ido=n/l2;
  44916. idl1=ido*l1;
  44917. if(ip!=4)goto L103;
  44918. ix2=iw+ido;
  44919. ix3=ix2+ido;
  44920. if(na!=0)
  44921. dradb4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1);
  44922. else
  44923. dradb4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1);
  44924. na=1-na;
  44925. goto L115;
  44926. L103:
  44927. if(ip!=2)goto L106;
  44928. if(na!=0)
  44929. dradb2(ido,l1,ch,c,wa+iw-1);
  44930. else
  44931. dradb2(ido,l1,c,ch,wa+iw-1);
  44932. na=1-na;
  44933. goto L115;
  44934. L106:
  44935. if(ip!=3)goto L109;
  44936. ix2=iw+ido;
  44937. if(na!=0)
  44938. dradb3(ido,l1,ch,c,wa+iw-1,wa+ix2-1);
  44939. else
  44940. dradb3(ido,l1,c,ch,wa+iw-1,wa+ix2-1);
  44941. na=1-na;
  44942. goto L115;
  44943. L109:
  44944. /* The radix five case can be translated later..... */
  44945. /* if(ip!=5)goto L112;
  44946. ix2=iw+ido;
  44947. ix3=ix2+ido;
  44948. ix4=ix3+ido;
  44949. if(na!=0)
  44950. dradb5(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1);
  44951. else
  44952. dradb5(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1);
  44953. na=1-na;
  44954. goto L115;
  44955. L112:*/
  44956. if(na!=0)
  44957. dradbg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1);
  44958. else
  44959. dradbg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1);
  44960. if(ido==1)na=1-na;
  44961. L115:
  44962. l1=l2;
  44963. iw+=(ip-1)*ido;
  44964. }
  44965. if(na==0)return;
  44966. for(i=0;i<n;i++)c[i]=ch[i];
  44967. }
  44968. void drft_forward(drft_lookup *l,float *data){
  44969. if(l->n==1)return;
  44970. drftf1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache);
  44971. }
  44972. void drft_backward(drft_lookup *l,float *data){
  44973. if (l->n==1)return;
  44974. drftb1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache);
  44975. }
  44976. void drft_init(drft_lookup *l,int n){
  44977. l->n=n;
  44978. l->trigcache=_ogg_calloc(3*n,sizeof(*l->trigcache));
  44979. l->splitcache=_ogg_calloc(32,sizeof(*l->splitcache));
  44980. fdrffti(n, l->trigcache, l->splitcache);
  44981. }
  44982. void drft_clear(drft_lookup *l){
  44983. if(l){
  44984. if(l->trigcache)_ogg_free(l->trigcache);
  44985. if(l->splitcache)_ogg_free(l->splitcache);
  44986. memset(l,0,sizeof(*l));
  44987. }
  44988. }
  44989. /********************************************************************
  44990. * *
  44991. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  44992. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  44993. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  44994. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  44995. * *
  44996. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  44997. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  44998. * *
  44999. ********************************************************************
  45000. function: PCM data envelope analysis
  45001. last mod: $Id: envelope.c,v 1.54 2003/09/05 23:17:49 giles Exp $
  45002. ********************************************************************/
  45003. void _ve_envelope_init(envelope_lookup *e,vorbis_info *vi){
  45004. codec_setup_info *ci=vi->codec_setup;
  45005. vorbis_info_psy_global *gi=&ci->psy_g_param;
  45006. int ch=vi->channels;
  45007. int i,j;
  45008. int n=e->winlength=128;
  45009. e->searchstep=64; /* not random */
  45010. e->minenergy=gi->preecho_minenergy;
  45011. e->ch=ch;
  45012. e->storage=128;
  45013. e->cursor=ci->blocksizes[1]/2;
  45014. e->mdct_win=_ogg_calloc(n,sizeof(*e->mdct_win));
  45015. mdct_init(&e->mdct,n);
  45016. for(i=0;i<n;i++){
  45017. e->mdct_win[i]=sin(i/(n-1.)*M_PI);
  45018. e->mdct_win[i]*=e->mdct_win[i];
  45019. }
  45020. /* magic follows */
  45021. e->band[0].begin=2; e->band[0].end=4;
  45022. e->band[1].begin=4; e->band[1].end=5;
  45023. e->band[2].begin=6; e->band[2].end=6;
  45024. e->band[3].begin=9; e->band[3].end=8;
  45025. e->band[4].begin=13; e->band[4].end=8;
  45026. e->band[5].begin=17; e->band[5].end=8;
  45027. e->band[6].begin=22; e->band[6].end=8;
  45028. for(j=0;j<VE_BANDS;j++){
  45029. n=e->band[j].end;
  45030. e->band[j].window=_ogg_malloc(n*sizeof(*e->band[0].window));
  45031. for(i=0;i<n;i++){
  45032. e->band[j].window[i]=sin((i+.5)/n*M_PI);
  45033. e->band[j].total+=e->band[j].window[i];
  45034. }
  45035. e->band[j].total=1./e->band[j].total;
  45036. }
  45037. e->filter=_ogg_calloc(VE_BANDS*ch,sizeof(*e->filter));
  45038. e->mark=_ogg_calloc(e->storage,sizeof(*e->mark));
  45039. }
  45040. void _ve_envelope_clear(envelope_lookup *e){
  45041. int i;
  45042. mdct_clear(&e->mdct);
  45043. for(i=0;i<VE_BANDS;i++)
  45044. _ogg_free(e->band[i].window);
  45045. _ogg_free(e->mdct_win);
  45046. _ogg_free(e->filter);
  45047. _ogg_free(e->mark);
  45048. memset(e,0,sizeof(*e));
  45049. }
  45050. /* fairly straight threshhold-by-band based until we find something
  45051. that works better and isn't patented. */
  45052. static int _ve_amp(envelope_lookup *ve,
  45053. vorbis_info_psy_global *gi,
  45054. float *data,
  45055. envelope_band *bands,
  45056. envelope_filter_state *filters,
  45057. long pos){
  45058. long n=ve->winlength;
  45059. int ret=0;
  45060. long i,j;
  45061. float decay;
  45062. /* we want to have a 'minimum bar' for energy, else we're just
  45063. basing blocks on quantization noise that outweighs the signal
  45064. itself (for low power signals) */
  45065. float minV=ve->minenergy;
  45066. float *vec=alloca(n*sizeof(*vec));
  45067. /* stretch is used to gradually lengthen the number of windows
  45068. considered prevoius-to-potential-trigger */
  45069. int stretch=max(VE_MINSTRETCH,ve->stretch/2);
  45070. float penalty=gi->stretch_penalty-(ve->stretch/2-VE_MINSTRETCH);
  45071. if(penalty<0.f)penalty=0.f;
  45072. if(penalty>gi->stretch_penalty)penalty=gi->stretch_penalty;
  45073. /*_analysis_output_always("lpcm",seq2,data,n,0,0,
  45074. totalshift+pos*ve->searchstep);*/
  45075. /* window and transform */
  45076. for(i=0;i<n;i++)
  45077. vec[i]=data[i]*ve->mdct_win[i];
  45078. mdct_forward(&ve->mdct,vec,vec);
  45079. /*_analysis_output_always("mdct",seq2,vec,n/2,0,1,0); */
  45080. /* near-DC spreading function; this has nothing to do with
  45081. psychoacoustics, just sidelobe leakage and window size */
  45082. {
  45083. float temp=vec[0]*vec[0]+.7*vec[1]*vec[1]+.2*vec[2]*vec[2];
  45084. int ptr=filters->nearptr;
  45085. /* the accumulation is regularly refreshed from scratch to avoid
  45086. floating point creep */
  45087. if(ptr==0){
  45088. decay=filters->nearDC_acc=filters->nearDC_partialacc+temp;
  45089. filters->nearDC_partialacc=temp;
  45090. }else{
  45091. decay=filters->nearDC_acc+=temp;
  45092. filters->nearDC_partialacc+=temp;
  45093. }
  45094. filters->nearDC_acc-=filters->nearDC[ptr];
  45095. filters->nearDC[ptr]=temp;
  45096. decay*=(1./(VE_NEARDC+1));
  45097. filters->nearptr++;
  45098. if(filters->nearptr>=VE_NEARDC)filters->nearptr=0;
  45099. decay=todB(&decay)*.5-15.f;
  45100. }
  45101. /* perform spreading and limiting, also smooth the spectrum. yes,
  45102. the MDCT results in all real coefficients, but it still *behaves*
  45103. like real/imaginary pairs */
  45104. for(i=0;i<n/2;i+=2){
  45105. float val=vec[i]*vec[i]+vec[i+1]*vec[i+1];
  45106. val=todB(&val)*.5f;
  45107. if(val<decay)val=decay;
  45108. if(val<minV)val=minV;
  45109. vec[i>>1]=val;
  45110. decay-=8.;
  45111. }
  45112. /*_analysis_output_always("spread",seq2++,vec,n/4,0,0,0);*/
  45113. /* perform preecho/postecho triggering by band */
  45114. for(j=0;j<VE_BANDS;j++){
  45115. float acc=0.;
  45116. float valmax,valmin;
  45117. /* accumulate amplitude */
  45118. for(i=0;i<bands[j].end;i++)
  45119. acc+=vec[i+bands[j].begin]*bands[j].window[i];
  45120. acc*=bands[j].total;
  45121. /* convert amplitude to delta */
  45122. {
  45123. int p,this=filters[j].ampptr;
  45124. float postmax,postmin,premax=-99999.f,premin=99999.f;
  45125. p=this;
  45126. p--;
  45127. if(p<0)p+=VE_AMP;
  45128. postmax=max(acc,filters[j].ampbuf[p]);
  45129. postmin=min(acc,filters[j].ampbuf[p]);
  45130. for(i=0;i<stretch;i++){
  45131. p--;
  45132. if(p<0)p+=VE_AMP;
  45133. premax=max(premax,filters[j].ampbuf[p]);
  45134. premin=min(premin,filters[j].ampbuf[p]);
  45135. }
  45136. valmin=postmin-premin;
  45137. valmax=postmax-premax;
  45138. /*filters[j].markers[pos]=valmax;*/
  45139. filters[j].ampbuf[this]=acc;
  45140. filters[j].ampptr++;
  45141. if(filters[j].ampptr>=VE_AMP)filters[j].ampptr=0;
  45142. }
  45143. /* look at min/max, decide trigger */
  45144. if(valmax>gi->preecho_thresh[j]+penalty){
  45145. ret|=1;
  45146. ret|=4;
  45147. }
  45148. if(valmin<gi->postecho_thresh[j]-penalty)ret|=2;
  45149. }
  45150. return(ret);
  45151. }
  45152. #if 0
  45153. static int seq=0;
  45154. static ogg_int64_t totalshift=-1024;
  45155. #endif
  45156. long _ve_envelope_search(vorbis_dsp_state *v){
  45157. vorbis_info *vi=v->vi;
  45158. codec_setup_info *ci=vi->codec_setup;
  45159. vorbis_info_psy_global *gi=&ci->psy_g_param;
  45160. envelope_lookup *ve=((private_state *)(v->backend_state))->ve;
  45161. long i,j;
  45162. int first=ve->current/ve->searchstep;
  45163. int last=v->pcm_current/ve->searchstep-VE_WIN;
  45164. if(first<0)first=0;
  45165. /* make sure we have enough storage to match the PCM */
  45166. if(last+VE_WIN+VE_POST>ve->storage){
  45167. ve->storage=last+VE_WIN+VE_POST; /* be sure */
  45168. ve->mark=_ogg_realloc(ve->mark,ve->storage*sizeof(*ve->mark));
  45169. }
  45170. for(j=first;j<last;j++){
  45171. int ret=0;
  45172. ve->stretch++;
  45173. if(ve->stretch>VE_MAXSTRETCH*2)
  45174. ve->stretch=VE_MAXSTRETCH*2;
  45175. for(i=0;i<ve->ch;i++){
  45176. float *pcm=v->pcm[i]+ve->searchstep*(j);
  45177. ret|=_ve_amp(ve,gi,pcm,ve->band,ve->filter+i*VE_BANDS,j);
  45178. }
  45179. ve->mark[j+VE_POST]=0;
  45180. if(ret&1){
  45181. ve->mark[j]=1;
  45182. ve->mark[j+1]=1;
  45183. }
  45184. if(ret&2){
  45185. ve->mark[j]=1;
  45186. if(j>0)ve->mark[j-1]=1;
  45187. }
  45188. if(ret&4)ve->stretch=-1;
  45189. }
  45190. ve->current=last*ve->searchstep;
  45191. {
  45192. long centerW=v->centerW;
  45193. long testW=
  45194. centerW+
  45195. ci->blocksizes[v->W]/4+
  45196. ci->blocksizes[1]/2+
  45197. ci->blocksizes[0]/4;
  45198. j=ve->cursor;
  45199. while(j<ve->current-(ve->searchstep)){/* account for postecho
  45200. working back one window */
  45201. if(j>=testW)return(1);
  45202. ve->cursor=j;
  45203. if(ve->mark[j/ve->searchstep]){
  45204. if(j>centerW){
  45205. #if 0
  45206. if(j>ve->curmark){
  45207. float *marker=alloca(v->pcm_current*sizeof(*marker));
  45208. int l,m;
  45209. memset(marker,0,sizeof(*marker)*v->pcm_current);
  45210. fprintf(stderr,"mark! seq=%d, cursor:%fs time:%fs\n",
  45211. seq,
  45212. (totalshift+ve->cursor)/44100.,
  45213. (totalshift+j)/44100.);
  45214. _analysis_output_always("pcmL",seq,v->pcm[0],v->pcm_current,0,0,totalshift);
  45215. _analysis_output_always("pcmR",seq,v->pcm[1],v->pcm_current,0,0,totalshift);
  45216. _analysis_output_always("markL",seq,v->pcm[0],j,0,0,totalshift);
  45217. _analysis_output_always("markR",seq,v->pcm[1],j,0,0,totalshift);
  45218. for(m=0;m<VE_BANDS;m++){
  45219. char buf[80];
  45220. sprintf(buf,"delL%d",m);
  45221. for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->filter[m].markers[l]*.1;
  45222. _analysis_output_always(buf,seq,marker,v->pcm_current,0,0,totalshift);
  45223. }
  45224. for(m=0;m<VE_BANDS;m++){
  45225. char buf[80];
  45226. sprintf(buf,"delR%d",m);
  45227. for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->filter[m+VE_BANDS].markers[l]*.1;
  45228. _analysis_output_always(buf,seq,marker,v->pcm_current,0,0,totalshift);
  45229. }
  45230. for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->mark[l]*.4;
  45231. _analysis_output_always("mark",seq,marker,v->pcm_current,0,0,totalshift);
  45232. seq++;
  45233. }
  45234. #endif
  45235. ve->curmark=j;
  45236. if(j>=testW)return(1);
  45237. return(0);
  45238. }
  45239. }
  45240. j+=ve->searchstep;
  45241. }
  45242. }
  45243. return(-1);
  45244. }
  45245. int _ve_envelope_mark(vorbis_dsp_state *v){
  45246. envelope_lookup *ve=((private_state *)(v->backend_state))->ve;
  45247. vorbis_info *vi=v->vi;
  45248. codec_setup_info *ci=vi->codec_setup;
  45249. long centerW=v->centerW;
  45250. long beginW=centerW-ci->blocksizes[v->W]/4;
  45251. long endW=centerW+ci->blocksizes[v->W]/4;
  45252. if(v->W){
  45253. beginW-=ci->blocksizes[v->lW]/4;
  45254. endW+=ci->blocksizes[v->nW]/4;
  45255. }else{
  45256. beginW-=ci->blocksizes[0]/4;
  45257. endW+=ci->blocksizes[0]/4;
  45258. }
  45259. if(ve->curmark>=beginW && ve->curmark<endW)return(1);
  45260. {
  45261. long first=beginW/ve->searchstep;
  45262. long last=endW/ve->searchstep;
  45263. long i;
  45264. for(i=first;i<last;i++)
  45265. if(ve->mark[i])return(1);
  45266. }
  45267. return(0);
  45268. }
  45269. void _ve_envelope_shift(envelope_lookup *e,long shift){
  45270. int smallsize=e->current/e->searchstep+VE_POST; /* adjust for placing marks
  45271. ahead of ve->current */
  45272. int smallshift=shift/e->searchstep;
  45273. memmove(e->mark,e->mark+smallshift,(smallsize-smallshift)*sizeof(*e->mark));
  45274. #if 0
  45275. for(i=0;i<VE_BANDS*e->ch;i++)
  45276. memmove(e->filter[i].markers,
  45277. e->filter[i].markers+smallshift,
  45278. (1024-smallshift)*sizeof(*(*e->filter).markers));
  45279. totalshift+=shift;
  45280. #endif
  45281. e->current-=shift;
  45282. if(e->curmark>=0)
  45283. e->curmark-=shift;
  45284. e->cursor-=shift;
  45285. }
  45286. /********************************************************************
  45287. * *
  45288. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  45289. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  45290. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  45291. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  45292. * *
  45293. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  45294. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  45295. * *
  45296. ********************************************************************
  45297. function: LPC low level routines
  45298. last mod: $Id: lpc.c,v 1.37 2003/03/08 07:15:32 xiphmont Exp $
  45299. ********************************************************************/
  45300. /* Some of these routines (autocorrelator, LPC coefficient estimator)
  45301. are derived from code written by Jutta Degener and Carsten Bormann;
  45302. thus we include their copyright below. The entirety of this file
  45303. is freely redistributable on the condition that both of these
  45304. copyright notices are preserved without modification. */
  45305. /* Preserved Copyright: *********************************************/
  45306. /* Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,
  45307. Technische Universita"t Berlin
  45308. Any use of this software is permitted provided that this notice is not
  45309. removed and that neither the authors nor the Technische Universita"t
  45310. Berlin are deemed to have made any representations as to the
  45311. suitability of this software for any purpose nor are held responsible
  45312. for any defects of this software. THERE IS ABSOLUTELY NO WARRANTY FOR
  45313. THIS SOFTWARE.
  45314. As a matter of courtesy, the authors request to be informed about uses
  45315. this software has found, about bugs in this software, and about any
  45316. improvements that may be of general interest.
  45317. Berlin, 28.11.1994
  45318. Jutta Degener
  45319. Carsten Bormann
  45320. *********************************************************************/
  45321. /* Autocorrelation LPC coeff generation algorithm invented by
  45322. N. Levinson in 1947, modified by J. Durbin in 1959. */
  45323. /* Input : n elements of time doamin data
  45324. Output: m lpc coefficients, excitation energy */
  45325. float vorbis_lpc_from_data(float *data,float *lpci,int n,int m){
  45326. double *aut=alloca(sizeof(*aut)*(m+1));
  45327. double *lpc=alloca(sizeof(*lpc)*(m));
  45328. double error;
  45329. int i,j;
  45330. /* autocorrelation, p+1 lag coefficients */
  45331. j=m+1;
  45332. while(j--){
  45333. double d=0; /* double needed for accumulator depth */
  45334. for(i=j;i<n;i++)d+=(double)data[i]*data[i-j];
  45335. aut[j]=d;
  45336. }
  45337. /* Generate lpc coefficients from autocorr values */
  45338. error=aut[0];
  45339. for(i=0;i<m;i++){
  45340. double r= -aut[i+1];
  45341. if(error==0){
  45342. memset(lpci,0,m*sizeof(*lpci));
  45343. return 0;
  45344. }
  45345. /* Sum up this iteration's reflection coefficient; note that in
  45346. Vorbis we don't save it. If anyone wants to recycle this code
  45347. and needs reflection coefficients, save the results of 'r' from
  45348. each iteration. */
  45349. for(j=0;j<i;j++)r-=lpc[j]*aut[i-j];
  45350. r/=error;
  45351. /* Update LPC coefficients and total error */
  45352. lpc[i]=r;
  45353. for(j=0;j<i/2;j++){
  45354. double tmp=lpc[j];
  45355. lpc[j]+=r*lpc[i-1-j];
  45356. lpc[i-1-j]+=r*tmp;
  45357. }
  45358. if(i%2)lpc[j]+=lpc[j]*r;
  45359. error*=1.f-r*r;
  45360. }
  45361. for(j=0;j<m;j++)lpci[j]=(float)lpc[j];
  45362. /* we need the error value to know how big an impulse to hit the
  45363. filter with later */
  45364. return error;
  45365. }
  45366. void vorbis_lpc_predict(float *coeff,float *prime,int m,
  45367. float *data,long n){
  45368. /* in: coeff[0...m-1] LPC coefficients
  45369. prime[0...m-1] initial values (allocated size of n+m-1)
  45370. out: data[0...n-1] data samples */
  45371. long i,j,o,p;
  45372. float y;
  45373. float *work=alloca(sizeof(*work)*(m+n));
  45374. if(!prime)
  45375. for(i=0;i<m;i++)
  45376. work[i]=0.f;
  45377. else
  45378. for(i=0;i<m;i++)
  45379. work[i]=prime[i];
  45380. for(i=0;i<n;i++){
  45381. y=0;
  45382. o=i;
  45383. p=m;
  45384. for(j=0;j<m;j++)
  45385. y-=work[o++]*coeff[--p];
  45386. data[i]=work[o]=y;
  45387. }
  45388. }
  45389. /********************************************************************
  45390. * *
  45391. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  45392. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  45393. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  45394. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  45395. * *
  45396. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  45397. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  45398. * *
  45399. ********************************************************************
  45400. function: window functions
  45401. last mod: $Id: window.c,v 1.23 2003/09/01 22:59:54 xiphmont Exp $
  45402. ********************************************************************/
  45403. static float vwin64[32] = {
  45404. 0.0009460463F, 0.0085006468F, 0.0235352254F, 0.0458950567F,
  45405. 0.0753351908F, 0.1115073077F, 0.1539457973F, 0.2020557475F,
  45406. 0.2551056759F, 0.3122276645F, 0.3724270287F, 0.4346027792F,
  45407. 0.4975789974F, 0.5601459521F, 0.6211085051F, 0.6793382689F,
  45408. 0.7338252629F, 0.7837245849F, 0.8283939355F, 0.8674186656F,
  45409. 0.9006222429F, 0.9280614787F, 0.9500073081F, 0.9669131782F,
  45410. 0.9793740220F, 0.9880792941F, 0.9937636139F, 0.9971582668F,
  45411. 0.9989462667F, 0.9997230082F, 0.9999638688F, 0.9999995525F,
  45412. };
  45413. static float vwin128[64] = {
  45414. 0.0002365472F, 0.0021280687F, 0.0059065254F, 0.0115626550F,
  45415. 0.0190823442F, 0.0284463735F, 0.0396300935F, 0.0526030430F,
  45416. 0.0673285281F, 0.0837631763F, 0.1018564887F, 0.1215504095F,
  45417. 0.1427789367F, 0.1654677960F, 0.1895342001F, 0.2148867160F,
  45418. 0.2414252576F, 0.2690412240F, 0.2976177952F, 0.3270303960F,
  45419. 0.3571473350F, 0.3878306189F, 0.4189369387F, 0.4503188188F,
  45420. 0.4818259135F, 0.5133064334F, 0.5446086751F, 0.5755826278F,
  45421. 0.6060816248F, 0.6359640047F, 0.6650947483F, 0.6933470543F,
  45422. 0.7206038179F, 0.7467589810F, 0.7717187213F, 0.7954024542F,
  45423. 0.8177436264F, 0.8386902831F, 0.8582053981F, 0.8762669622F,
  45424. 0.8928678298F, 0.9080153310F, 0.9217306608F, 0.9340480615F,
  45425. 0.9450138200F, 0.9546851041F, 0.9631286621F, 0.9704194171F,
  45426. 0.9766389810F, 0.9818741197F, 0.9862151938F, 0.9897546035F,
  45427. 0.9925852598F, 0.9947991032F, 0.9964856900F, 0.9977308602F,
  45428. 0.9986155015F, 0.9992144193F, 0.9995953200F, 0.9998179155F,
  45429. 0.9999331503F, 0.9999825563F, 0.9999977357F, 0.9999999720F,
  45430. };
  45431. static float vwin256[128] = {
  45432. 0.0000591390F, 0.0005321979F, 0.0014780301F, 0.0028960636F,
  45433. 0.0047854363F, 0.0071449926F, 0.0099732775F, 0.0132685298F,
  45434. 0.0170286741F, 0.0212513119F, 0.0259337111F, 0.0310727950F,
  45435. 0.0366651302F, 0.0427069140F, 0.0491939614F, 0.0561216907F,
  45436. 0.0634851102F, 0.0712788035F, 0.0794969160F, 0.0881331402F,
  45437. 0.0971807028F, 0.1066323515F, 0.1164803426F, 0.1267164297F,
  45438. 0.1373318534F, 0.1483173323F, 0.1596630553F, 0.1713586755F,
  45439. 0.1833933062F, 0.1957555184F, 0.2084333404F, 0.2214142599F,
  45440. 0.2346852280F, 0.2482326664F, 0.2620424757F, 0.2761000481F,
  45441. 0.2903902813F, 0.3048975959F, 0.3196059553F, 0.3344988887F,
  45442. 0.3495595160F, 0.3647705766F, 0.3801144597F, 0.3955732382F,
  45443. 0.4111287047F, 0.4267624093F, 0.4424557009F, 0.4581897696F,
  45444. 0.4739456913F, 0.4897044744F, 0.5054471075F, 0.5211546088F,
  45445. 0.5368080763F, 0.5523887395F, 0.5678780103F, 0.5832575361F,
  45446. 0.5985092508F, 0.6136154277F, 0.6285587300F, 0.6433222619F,
  45447. 0.6578896175F, 0.6722449294F, 0.6863729144F, 0.7002589187F,
  45448. 0.7138889597F, 0.7272497662F, 0.7403288154F, 0.7531143679F,
  45449. 0.7655954985F, 0.7777621249F, 0.7896050322F, 0.8011158947F,
  45450. 0.8122872932F, 0.8231127294F, 0.8335866365F, 0.8437043850F,
  45451. 0.8534622861F, 0.8628575905F, 0.8718884835F, 0.8805540765F,
  45452. 0.8888543947F, 0.8967903616F, 0.9043637797F, 0.9115773078F,
  45453. 0.9184344360F, 0.9249394562F, 0.9310974312F, 0.9369141608F,
  45454. 0.9423961446F, 0.9475505439F, 0.9523851406F, 0.9569082947F,
  45455. 0.9611289005F, 0.9650563408F, 0.9687004405F, 0.9720714191F,
  45456. 0.9751798427F, 0.9780365753F, 0.9806527301F, 0.9830396204F,
  45457. 0.9852087111F, 0.9871715701F, 0.9889398207F, 0.9905250941F,
  45458. 0.9919389832F, 0.9931929973F, 0.9942985174F, 0.9952667537F,
  45459. 0.9961087037F, 0.9968351119F, 0.9974564312F, 0.9979827858F,
  45460. 0.9984239359F, 0.9987892441F, 0.9990876435F, 0.9993276081F,
  45461. 0.9995171241F, 0.9996636648F, 0.9997741654F, 0.9998550016F,
  45462. 0.9999119692F, 0.9999502656F, 0.9999744742F, 0.9999885497F,
  45463. 0.9999958064F, 0.9999989077F, 0.9999998584F, 0.9999999983F,
  45464. };
  45465. static float vwin512[256] = {
  45466. 0.0000147849F, 0.0001330607F, 0.0003695946F, 0.0007243509F,
  45467. 0.0011972759F, 0.0017882983F, 0.0024973285F, 0.0033242588F,
  45468. 0.0042689632F, 0.0053312973F, 0.0065110982F, 0.0078081841F,
  45469. 0.0092223540F, 0.0107533880F, 0.0124010466F, 0.0141650703F,
  45470. 0.0160451800F, 0.0180410758F, 0.0201524373F, 0.0223789233F,
  45471. 0.0247201710F, 0.0271757958F, 0.0297453914F, 0.0324285286F,
  45472. 0.0352247556F, 0.0381335972F, 0.0411545545F, 0.0442871045F,
  45473. 0.0475306997F, 0.0508847676F, 0.0543487103F, 0.0579219038F,
  45474. 0.0616036982F, 0.0653934164F, 0.0692903546F, 0.0732937809F,
  45475. 0.0774029356F, 0.0816170305F, 0.0859352485F, 0.0903567428F,
  45476. 0.0948806375F, 0.0995060259F, 0.1042319712F, 0.1090575056F,
  45477. 0.1139816300F, 0.1190033137F, 0.1241214941F, 0.1293350764F,
  45478. 0.1346429333F, 0.1400439046F, 0.1455367974F, 0.1511203852F,
  45479. 0.1567934083F, 0.1625545735F, 0.1684025537F, 0.1743359881F,
  45480. 0.1803534820F, 0.1864536069F, 0.1926349000F, 0.1988958650F,
  45481. 0.2052349715F, 0.2116506555F, 0.2181413191F, 0.2247053313F,
  45482. 0.2313410275F, 0.2380467105F, 0.2448206500F, 0.2516610835F,
  45483. 0.2585662164F, 0.2655342226F, 0.2725632448F, 0.2796513950F,
  45484. 0.2867967551F, 0.2939973773F, 0.3012512852F, 0.3085564739F,
  45485. 0.3159109111F, 0.3233125375F, 0.3307592680F, 0.3382489922F,
  45486. 0.3457795756F, 0.3533488602F, 0.3609546657F, 0.3685947904F,
  45487. 0.3762670121F, 0.3839690896F, 0.3916987634F, 0.3994537572F,
  45488. 0.4072317788F, 0.4150305215F, 0.4228476653F, 0.4306808783F,
  45489. 0.4385278181F, 0.4463861329F, 0.4542534630F, 0.4621274424F,
  45490. 0.4700057001F, 0.4778858615F, 0.4857655502F, 0.4936423891F,
  45491. 0.5015140023F, 0.5093780165F, 0.5172320626F, 0.5250737772F,
  45492. 0.5329008043F, 0.5407107971F, 0.5485014192F, 0.5562703465F,
  45493. 0.5640152688F, 0.5717338914F, 0.5794239366F, 0.5870831457F,
  45494. 0.5947092801F, 0.6023001235F, 0.6098534829F, 0.6173671907F,
  45495. 0.6248391059F, 0.6322671161F, 0.6396491384F, 0.6469831217F,
  45496. 0.6542670475F, 0.6614989319F, 0.6686768267F, 0.6757988210F,
  45497. 0.6828630426F, 0.6898676592F, 0.6968108799F, 0.7036909564F,
  45498. 0.7105061843F, 0.7172549043F, 0.7239355032F, 0.7305464154F,
  45499. 0.7370861235F, 0.7435531598F, 0.7499461068F, 0.7562635986F,
  45500. 0.7625043214F, 0.7686670148F, 0.7747504721F, 0.7807535410F,
  45501. 0.7866751247F, 0.7925141825F, 0.7982697296F, 0.8039408387F,
  45502. 0.8095266395F, 0.8150263196F, 0.8204391248F, 0.8257643590F,
  45503. 0.8310013848F, 0.8361496236F, 0.8412085555F, 0.8461777194F,
  45504. 0.8510567129F, 0.8558451924F, 0.8605428730F, 0.8651495278F,
  45505. 0.8696649882F, 0.8740891432F, 0.8784219392F, 0.8826633797F,
  45506. 0.8868135244F, 0.8908724888F, 0.8948404441F, 0.8987176157F,
  45507. 0.9025042831F, 0.9062007791F, 0.9098074886F, 0.9133248482F,
  45508. 0.9167533451F, 0.9200935163F, 0.9233459472F, 0.9265112712F,
  45509. 0.9295901680F, 0.9325833632F, 0.9354916263F, 0.9383157705F,
  45510. 0.9410566504F, 0.9437151618F, 0.9462922398F, 0.9487888576F,
  45511. 0.9512060252F, 0.9535447882F, 0.9558062262F, 0.9579914516F,
  45512. 0.9601016078F, 0.9621378683F, 0.9641014348F, 0.9659935361F,
  45513. 0.9678154261F, 0.9695683830F, 0.9712537071F, 0.9728727198F,
  45514. 0.9744267618F, 0.9759171916F, 0.9773453842F, 0.9787127293F,
  45515. 0.9800206298F, 0.9812705006F, 0.9824637665F, 0.9836018613F,
  45516. 0.9846862258F, 0.9857183066F, 0.9866995544F, 0.9876314227F,
  45517. 0.9885153662F, 0.9893528393F, 0.9901452948F, 0.9908941823F,
  45518. 0.9916009470F, 0.9922670279F, 0.9928938570F, 0.9934828574F,
  45519. 0.9940354423F, 0.9945530133F, 0.9950369595F, 0.9954886562F,
  45520. 0.9959094633F, 0.9963007242F, 0.9966637649F, 0.9969998925F,
  45521. 0.9973103939F, 0.9975965351F, 0.9978595598F, 0.9981006885F,
  45522. 0.9983211172F, 0.9985220166F, 0.9987045311F, 0.9988697776F,
  45523. 0.9990188449F, 0.9991527924F, 0.9992726499F, 0.9993794157F,
  45524. 0.9994740570F, 0.9995575079F, 0.9996306699F, 0.9996944099F,
  45525. 0.9997495605F, 0.9997969190F, 0.9998372465F, 0.9998712678F,
  45526. 0.9998996704F, 0.9999231041F, 0.9999421807F, 0.9999574732F,
  45527. 0.9999695157F, 0.9999788026F, 0.9999857885F, 0.9999908879F,
  45528. 0.9999944746F, 0.9999968817F, 0.9999984010F, 0.9999992833F,
  45529. 0.9999997377F, 0.9999999317F, 0.9999999911F, 0.9999999999F,
  45530. };
  45531. static float vwin1024[512] = {
  45532. 0.0000036962F, 0.0000332659F, 0.0000924041F, 0.0001811086F,
  45533. 0.0002993761F, 0.0004472021F, 0.0006245811F, 0.0008315063F,
  45534. 0.0010679699F, 0.0013339631F, 0.0016294757F, 0.0019544965F,
  45535. 0.0023090133F, 0.0026930125F, 0.0031064797F, 0.0035493989F,
  45536. 0.0040217533F, 0.0045235250F, 0.0050546946F, 0.0056152418F,
  45537. 0.0062051451F, 0.0068243817F, 0.0074729278F, 0.0081507582F,
  45538. 0.0088578466F, 0.0095941655F, 0.0103596863F, 0.0111543789F,
  45539. 0.0119782122F, 0.0128311538F, 0.0137131701F, 0.0146242260F,
  45540. 0.0155642855F, 0.0165333111F, 0.0175312640F, 0.0185581042F,
  45541. 0.0196137903F, 0.0206982797F, 0.0218115284F, 0.0229534910F,
  45542. 0.0241241208F, 0.0253233698F, 0.0265511886F, 0.0278075263F,
  45543. 0.0290923308F, 0.0304055484F, 0.0317471241F, 0.0331170013F,
  45544. 0.0345151222F, 0.0359414274F, 0.0373958560F, 0.0388783456F,
  45545. 0.0403888325F, 0.0419272511F, 0.0434935347F, 0.0450876148F,
  45546. 0.0467094213F, 0.0483588828F, 0.0500359261F, 0.0517404765F,
  45547. 0.0534724575F, 0.0552317913F, 0.0570183983F, 0.0588321971F,
  45548. 0.0606731048F, 0.0625410369F, 0.0644359070F, 0.0663576272F,
  45549. 0.0683061077F, 0.0702812571F, 0.0722829821F, 0.0743111878F,
  45550. 0.0763657775F, 0.0784466526F, 0.0805537129F, 0.0826868561F,
  45551. 0.0848459782F, 0.0870309736F, 0.0892417345F, 0.0914781514F,
  45552. 0.0937401128F, 0.0960275056F, 0.0983402145F, 0.1006781223F,
  45553. 0.1030411101F, 0.1054290568F, 0.1078418397F, 0.1102793336F,
  45554. 0.1127414119F, 0.1152279457F, 0.1177388042F, 0.1202738544F,
  45555. 0.1228329618F, 0.1254159892F, 0.1280227980F, 0.1306532471F,
  45556. 0.1333071937F, 0.1359844927F, 0.1386849970F, 0.1414085575F,
  45557. 0.1441550230F, 0.1469242403F, 0.1497160539F, 0.1525303063F,
  45558. 0.1553668381F, 0.1582254875F, 0.1611060909F, 0.1640084822F,
  45559. 0.1669324936F, 0.1698779549F, 0.1728446939F, 0.1758325362F,
  45560. 0.1788413055F, 0.1818708232F, 0.1849209084F, 0.1879913785F,
  45561. 0.1910820485F, 0.1941927312F, 0.1973232376F, 0.2004733764F,
  45562. 0.2036429541F, 0.2068317752F, 0.2100396421F, 0.2132663552F,
  45563. 0.2165117125F, 0.2197755102F, 0.2230575422F, 0.2263576007F,
  45564. 0.2296754753F, 0.2330109540F, 0.2363638225F, 0.2397338646F,
  45565. 0.2431208619F, 0.2465245941F, 0.2499448389F, 0.2533813719F,
  45566. 0.2568339669F, 0.2603023956F, 0.2637864277F, 0.2672858312F,
  45567. 0.2708003718F, 0.2743298135F, 0.2778739186F, 0.2814324472F,
  45568. 0.2850051576F, 0.2885918065F, 0.2921921485F, 0.2958059366F,
  45569. 0.2994329219F, 0.3030728538F, 0.3067254799F, 0.3103905462F,
  45570. 0.3140677969F, 0.3177569747F, 0.3214578205F, 0.3251700736F,
  45571. 0.3288934718F, 0.3326277513F, 0.3363726468F, 0.3401278914F,
  45572. 0.3438932168F, 0.3476683533F, 0.3514530297F, 0.3552469734F,
  45573. 0.3590499106F, 0.3628615659F, 0.3666816630F, 0.3705099239F,
  45574. 0.3743460698F, 0.3781898204F, 0.3820408945F, 0.3858990095F,
  45575. 0.3897638820F, 0.3936352274F, 0.3975127601F, 0.4013961936F,
  45576. 0.4052852405F, 0.4091796123F, 0.4130790198F, 0.4169831732F,
  45577. 0.4208917815F, 0.4248045534F, 0.4287211965F, 0.4326414181F,
  45578. 0.4365649248F, 0.4404914225F, 0.4444206167F, 0.4483522125F,
  45579. 0.4522859146F, 0.4562214270F, 0.4601584538F, 0.4640966984F,
  45580. 0.4680358644F, 0.4719756548F, 0.4759157726F, 0.4798559209F,
  45581. 0.4837958024F, 0.4877351199F, 0.4916735765F, 0.4956108751F,
  45582. 0.4995467188F, 0.5034808109F, 0.5074128550F, 0.5113425550F,
  45583. 0.5152696149F, 0.5191937395F, 0.5231146336F, 0.5270320028F,
  45584. 0.5309455530F, 0.5348549910F, 0.5387600239F, 0.5426603597F,
  45585. 0.5465557070F, 0.5504457754F, 0.5543302752F, 0.5582089175F,
  45586. 0.5620814145F, 0.5659474793F, 0.5698068262F, 0.5736591704F,
  45587. 0.5775042283F, 0.5813417176F, 0.5851713571F, 0.5889928670F,
  45588. 0.5928059689F, 0.5966103856F, 0.6004058415F, 0.6041920626F,
  45589. 0.6079687761F, 0.6117357113F, 0.6154925986F, 0.6192391705F,
  45590. 0.6229751612F, 0.6267003064F, 0.6304143441F, 0.6341170137F,
  45591. 0.6378080569F, 0.6414872173F, 0.6451542405F, 0.6488088741F,
  45592. 0.6524508681F, 0.6560799742F, 0.6596959469F, 0.6632985424F,
  45593. 0.6668875197F, 0.6704626398F, 0.6740236662F, 0.6775703649F,
  45594. 0.6811025043F, 0.6846198554F, 0.6881221916F, 0.6916092892F,
  45595. 0.6950809269F, 0.6985368861F, 0.7019769510F, 0.7054009085F,
  45596. 0.7088085484F, 0.7121996632F, 0.7155740484F, 0.7189315023F,
  45597. 0.7222718263F, 0.7255948245F, 0.7289003043F, 0.7321880760F,
  45598. 0.7354579530F, 0.7387097518F, 0.7419432921F, 0.7451583966F,
  45599. 0.7483548915F, 0.7515326059F, 0.7546913723F, 0.7578310265F,
  45600. 0.7609514077F, 0.7640523581F, 0.7671337237F, 0.7701953535F,
  45601. 0.7732371001F, 0.7762588195F, 0.7792603711F, 0.7822416178F,
  45602. 0.7852024259F, 0.7881426654F, 0.7910622097F, 0.7939609356F,
  45603. 0.7968387237F, 0.7996954579F, 0.8025310261F, 0.8053453193F,
  45604. 0.8081382324F, 0.8109096638F, 0.8136595156F, 0.8163876936F,
  45605. 0.8190941071F, 0.8217786690F, 0.8244412960F, 0.8270819086F,
  45606. 0.8297004305F, 0.8322967896F, 0.8348709171F, 0.8374227481F,
  45607. 0.8399522213F, 0.8424592789F, 0.8449438672F, 0.8474059356F,
  45608. 0.8498454378F, 0.8522623306F, 0.8546565748F, 0.8570281348F,
  45609. 0.8593769787F, 0.8617030779F, 0.8640064080F, 0.8662869477F,
  45610. 0.8685446796F, 0.8707795899F, 0.8729916682F, 0.8751809079F,
  45611. 0.8773473059F, 0.8794908626F, 0.8816115819F, 0.8837094713F,
  45612. 0.8857845418F, 0.8878368079F, 0.8898662874F, 0.8918730019F,
  45613. 0.8938569760F, 0.8958182380F, 0.8977568194F, 0.8996727552F,
  45614. 0.9015660837F, 0.9034368465F, 0.9052850885F, 0.9071108577F,
  45615. 0.9089142057F, 0.9106951869F, 0.9124538591F, 0.9141902832F,
  45616. 0.9159045233F, 0.9175966464F, 0.9192667228F, 0.9209148257F,
  45617. 0.9225410313F, 0.9241454187F, 0.9257280701F, 0.9272890704F,
  45618. 0.9288285075F, 0.9303464720F, 0.9318430576F, 0.9333183603F,
  45619. 0.9347724792F, 0.9362055158F, 0.9376175745F, 0.9390087622F,
  45620. 0.9403791881F, 0.9417289644F, 0.9430582055F, 0.9443670283F,
  45621. 0.9456555521F, 0.9469238986F, 0.9481721917F, 0.9494005577F,
  45622. 0.9506091252F, 0.9517980248F, 0.9529673894F, 0.9541173540F,
  45623. 0.9552480557F, 0.9563596334F, 0.9574522282F, 0.9585259830F,
  45624. 0.9595810428F, 0.9606175542F, 0.9616356656F, 0.9626355274F,
  45625. 0.9636172915F, 0.9645811114F, 0.9655271425F, 0.9664555414F,
  45626. 0.9673664664F, 0.9682600774F, 0.9691365355F, 0.9699960034F,
  45627. 0.9708386448F, 0.9716646250F, 0.9724741103F, 0.9732672685F,
  45628. 0.9740442683F, 0.9748052795F, 0.9755504729F, 0.9762800205F,
  45629. 0.9769940950F, 0.9776928703F, 0.9783765210F, 0.9790452223F,
  45630. 0.9796991504F, 0.9803384823F, 0.9809633954F, 0.9815740679F,
  45631. 0.9821706784F, 0.9827534063F, 0.9833224312F, 0.9838779332F,
  45632. 0.9844200928F, 0.9849490910F, 0.9854651087F, 0.9859683274F,
  45633. 0.9864589286F, 0.9869370940F, 0.9874030054F, 0.9878568447F,
  45634. 0.9882987937F, 0.9887290343F, 0.9891477481F, 0.9895551169F,
  45635. 0.9899513220F, 0.9903365446F, 0.9907109658F, 0.9910747662F,
  45636. 0.9914281260F, 0.9917712252F, 0.9921042433F, 0.9924273593F,
  45637. 0.9927407516F, 0.9930445982F, 0.9933390763F, 0.9936243626F,
  45638. 0.9939006331F, 0.9941680631F, 0.9944268269F, 0.9946770982F,
  45639. 0.9949190498F, 0.9951528537F, 0.9953786808F, 0.9955967011F,
  45640. 0.9958070836F, 0.9960099963F, 0.9962056061F, 0.9963940787F,
  45641. 0.9965755786F, 0.9967502693F, 0.9969183129F, 0.9970798704F,
  45642. 0.9972351013F, 0.9973841640F, 0.9975272151F, 0.9976644103F,
  45643. 0.9977959036F, 0.9979218476F, 0.9980423932F, 0.9981576901F,
  45644. 0.9982678862F, 0.9983731278F, 0.9984735596F, 0.9985693247F,
  45645. 0.9986605645F, 0.9987474186F, 0.9988300248F, 0.9989085193F,
  45646. 0.9989830364F, 0.9990537085F, 0.9991206662F, 0.9991840382F,
  45647. 0.9992439513F, 0.9993005303F, 0.9993538982F, 0.9994041757F,
  45648. 0.9994514817F, 0.9994959330F, 0.9995376444F, 0.9995767286F,
  45649. 0.9996132960F, 0.9996474550F, 0.9996793121F, 0.9997089710F,
  45650. 0.9997365339F, 0.9997621003F, 0.9997857677F, 0.9998076311F,
  45651. 0.9998277836F, 0.9998463156F, 0.9998633155F, 0.9998788692F,
  45652. 0.9998930603F, 0.9999059701F, 0.9999176774F, 0.9999282586F,
  45653. 0.9999377880F, 0.9999463370F, 0.9999539749F, 0.9999607685F,
  45654. 0.9999667820F, 0.9999720773F, 0.9999767136F, 0.9999807479F,
  45655. 0.9999842344F, 0.9999872249F, 0.9999897688F, 0.9999919127F,
  45656. 0.9999937009F, 0.9999951749F, 0.9999963738F, 0.9999973342F,
  45657. 0.9999980900F, 0.9999986724F, 0.9999991103F, 0.9999994297F,
  45658. 0.9999996543F, 0.9999998049F, 0.9999999000F, 0.9999999552F,
  45659. 0.9999999836F, 0.9999999957F, 0.9999999994F, 1.0000000000F,
  45660. };
  45661. static float vwin2048[1024] = {
  45662. 0.0000009241F, 0.0000083165F, 0.0000231014F, 0.0000452785F,
  45663. 0.0000748476F, 0.0001118085F, 0.0001561608F, 0.0002079041F,
  45664. 0.0002670379F, 0.0003335617F, 0.0004074748F, 0.0004887765F,
  45665. 0.0005774661F, 0.0006735427F, 0.0007770054F, 0.0008878533F,
  45666. 0.0010060853F, 0.0011317002F, 0.0012646969F, 0.0014050742F,
  45667. 0.0015528307F, 0.0017079650F, 0.0018704756F, 0.0020403610F,
  45668. 0.0022176196F, 0.0024022497F, 0.0025942495F, 0.0027936173F,
  45669. 0.0030003511F, 0.0032144490F, 0.0034359088F, 0.0036647286F,
  45670. 0.0039009061F, 0.0041444391F, 0.0043953253F, 0.0046535621F,
  45671. 0.0049191472F, 0.0051920781F, 0.0054723520F, 0.0057599664F,
  45672. 0.0060549184F, 0.0063572052F, 0.0066668239F, 0.0069837715F,
  45673. 0.0073080449F, 0.0076396410F, 0.0079785566F, 0.0083247884F,
  45674. 0.0086783330F, 0.0090391871F, 0.0094073470F, 0.0097828092F,
  45675. 0.0101655700F, 0.0105556258F, 0.0109529726F, 0.0113576065F,
  45676. 0.0117695237F, 0.0121887200F, 0.0126151913F, 0.0130489335F,
  45677. 0.0134899422F, 0.0139382130F, 0.0143937415F, 0.0148565233F,
  45678. 0.0153265536F, 0.0158038279F, 0.0162883413F, 0.0167800889F,
  45679. 0.0172790660F, 0.0177852675F, 0.0182986882F, 0.0188193231F,
  45680. 0.0193471668F, 0.0198822141F, 0.0204244594F, 0.0209738974F,
  45681. 0.0215305225F, 0.0220943289F, 0.0226653109F, 0.0232434627F,
  45682. 0.0238287784F, 0.0244212519F, 0.0250208772F, 0.0256276481F,
  45683. 0.0262415582F, 0.0268626014F, 0.0274907711F, 0.0281260608F,
  45684. 0.0287684638F, 0.0294179736F, 0.0300745833F, 0.0307382859F,
  45685. 0.0314090747F, 0.0320869424F, 0.0327718819F, 0.0334638860F,
  45686. 0.0341629474F, 0.0348690586F, 0.0355822122F, 0.0363024004F,
  45687. 0.0370296157F, 0.0377638502F, 0.0385050960F, 0.0392533451F,
  45688. 0.0400085896F, 0.0407708211F, 0.0415400315F, 0.0423162123F,
  45689. 0.0430993552F, 0.0438894515F, 0.0446864926F, 0.0454904698F,
  45690. 0.0463013742F, 0.0471191969F, 0.0479439288F, 0.0487755607F,
  45691. 0.0496140836F, 0.0504594879F, 0.0513117642F, 0.0521709031F,
  45692. 0.0530368949F, 0.0539097297F, 0.0547893979F, 0.0556758894F,
  45693. 0.0565691941F, 0.0574693019F, 0.0583762026F, 0.0592898858F,
  45694. 0.0602103410F, 0.0611375576F, 0.0620715250F, 0.0630122324F,
  45695. 0.0639596688F, 0.0649138234F, 0.0658746848F, 0.0668422421F,
  45696. 0.0678164838F, 0.0687973985F, 0.0697849746F, 0.0707792005F,
  45697. 0.0717800645F, 0.0727875547F, 0.0738016591F, 0.0748223656F,
  45698. 0.0758496620F, 0.0768835359F, 0.0779239751F, 0.0789709668F,
  45699. 0.0800244985F, 0.0810845574F, 0.0821511306F, 0.0832242052F,
  45700. 0.0843037679F, 0.0853898056F, 0.0864823050F, 0.0875812525F,
  45701. 0.0886866347F, 0.0897984378F, 0.0909166480F, 0.0920412513F,
  45702. 0.0931722338F, 0.0943095813F, 0.0954532795F, 0.0966033140F,
  45703. 0.0977596702F, 0.0989223336F, 0.1000912894F, 0.1012665227F,
  45704. 0.1024480185F, 0.1036357616F, 0.1048297369F, 0.1060299290F,
  45705. 0.1072363224F, 0.1084489014F, 0.1096676504F, 0.1108925534F,
  45706. 0.1121235946F, 0.1133607577F, 0.1146040267F, 0.1158533850F,
  45707. 0.1171088163F, 0.1183703040F, 0.1196378312F, 0.1209113812F,
  45708. 0.1221909370F, 0.1234764815F, 0.1247679974F, 0.1260654674F,
  45709. 0.1273688740F, 0.1286781995F, 0.1299934263F, 0.1313145365F,
  45710. 0.1326415121F, 0.1339743349F, 0.1353129866F, 0.1366574490F,
  45711. 0.1380077035F, 0.1393637315F, 0.1407255141F, 0.1420930325F,
  45712. 0.1434662677F, 0.1448452004F, 0.1462298115F, 0.1476200814F,
  45713. 0.1490159906F, 0.1504175195F, 0.1518246482F, 0.1532373569F,
  45714. 0.1546556253F, 0.1560794333F, 0.1575087606F, 0.1589435866F,
  45715. 0.1603838909F, 0.1618296526F, 0.1632808509F, 0.1647374648F,
  45716. 0.1661994731F, 0.1676668546F, 0.1691395880F, 0.1706176516F,
  45717. 0.1721010238F, 0.1735896829F, 0.1750836068F, 0.1765827736F,
  45718. 0.1780871610F, 0.1795967468F, 0.1811115084F, 0.1826314234F,
  45719. 0.1841564689F, 0.1856866221F, 0.1872218600F, 0.1887621595F,
  45720. 0.1903074974F, 0.1918578503F, 0.1934131947F, 0.1949735068F,
  45721. 0.1965387630F, 0.1981089393F, 0.1996840117F, 0.2012639560F,
  45722. 0.2028487479F, 0.2044383630F, 0.2060327766F, 0.2076319642F,
  45723. 0.2092359007F, 0.2108445614F, 0.2124579211F, 0.2140759545F,
  45724. 0.2156986364F, 0.2173259411F, 0.2189578432F, 0.2205943168F,
  45725. 0.2222353361F, 0.2238808751F, 0.2255309076F, 0.2271854073F,
  45726. 0.2288443480F, 0.2305077030F, 0.2321754457F, 0.2338475493F,
  45727. 0.2355239869F, 0.2372047315F, 0.2388897560F, 0.2405790329F,
  45728. 0.2422725350F, 0.2439702347F, 0.2456721043F, 0.2473781159F,
  45729. 0.2490882418F, 0.2508024539F, 0.2525207240F, 0.2542430237F,
  45730. 0.2559693248F, 0.2576995986F, 0.2594338166F, 0.2611719498F,
  45731. 0.2629139695F, 0.2646598466F, 0.2664095520F, 0.2681630564F,
  45732. 0.2699203304F, 0.2716813445F, 0.2734460691F, 0.2752144744F,
  45733. 0.2769865307F, 0.2787622079F, 0.2805414760F, 0.2823243047F,
  45734. 0.2841106637F, 0.2859005227F, 0.2876938509F, 0.2894906179F,
  45735. 0.2912907928F, 0.2930943447F, 0.2949012426F, 0.2967114554F,
  45736. 0.2985249520F, 0.3003417009F, 0.3021616708F, 0.3039848301F,
  45737. 0.3058111471F, 0.3076405901F, 0.3094731273F, 0.3113087266F,
  45738. 0.3131473560F, 0.3149889833F, 0.3168335762F, 0.3186811024F,
  45739. 0.3205315294F, 0.3223848245F, 0.3242409552F, 0.3260998886F,
  45740. 0.3279615918F, 0.3298260319F, 0.3316931758F, 0.3335629903F,
  45741. 0.3354354423F, 0.3373104982F, 0.3391881247F, 0.3410682882F,
  45742. 0.3429509551F, 0.3448360917F, 0.3467236642F, 0.3486136387F,
  45743. 0.3505059811F, 0.3524006575F, 0.3542976336F, 0.3561968753F,
  45744. 0.3580983482F, 0.3600020179F, 0.3619078499F, 0.3638158096F,
  45745. 0.3657258625F, 0.3676379737F, 0.3695521086F, 0.3714682321F,
  45746. 0.3733863094F, 0.3753063055F, 0.3772281852F, 0.3791519134F,
  45747. 0.3810774548F, 0.3830047742F, 0.3849338362F, 0.3868646053F,
  45748. 0.3887970459F, 0.3907311227F, 0.3926667998F, 0.3946040417F,
  45749. 0.3965428125F, 0.3984830765F, 0.4004247978F, 0.4023679403F,
  45750. 0.4043124683F, 0.4062583455F, 0.4082055359F, 0.4101540034F,
  45751. 0.4121037117F, 0.4140546246F, 0.4160067058F, 0.4179599190F,
  45752. 0.4199142277F, 0.4218695956F, 0.4238259861F, 0.4257833627F,
  45753. 0.4277416888F, 0.4297009279F, 0.4316610433F, 0.4336219983F,
  45754. 0.4355837562F, 0.4375462803F, 0.4395095337F, 0.4414734797F,
  45755. 0.4434380815F, 0.4454033021F, 0.4473691046F, 0.4493354521F,
  45756. 0.4513023078F, 0.4532696345F, 0.4552373954F, 0.4572055533F,
  45757. 0.4591740713F, 0.4611429123F, 0.4631120393F, 0.4650814151F,
  45758. 0.4670510028F, 0.4690207650F, 0.4709906649F, 0.4729606651F,
  45759. 0.4749307287F, 0.4769008185F, 0.4788708972F, 0.4808409279F,
  45760. 0.4828108732F, 0.4847806962F, 0.4867503597F, 0.4887198264F,
  45761. 0.4906890593F, 0.4926580213F, 0.4946266753F, 0.4965949840F,
  45762. 0.4985629105F, 0.5005304176F, 0.5024974683F, 0.5044640255F,
  45763. 0.5064300522F, 0.5083955114F, 0.5103603659F, 0.5123245790F,
  45764. 0.5142881136F, 0.5162509328F, 0.5182129997F, 0.5201742774F,
  45765. 0.5221347290F, 0.5240943178F, 0.5260530070F, 0.5280107598F,
  45766. 0.5299675395F, 0.5319233095F, 0.5338780330F, 0.5358316736F,
  45767. 0.5377841946F, 0.5397355596F, 0.5416857320F, 0.5436346755F,
  45768. 0.5455823538F, 0.5475287304F, 0.5494737691F, 0.5514174337F,
  45769. 0.5533596881F, 0.5553004962F, 0.5572398218F, 0.5591776291F,
  45770. 0.5611138821F, 0.5630485449F, 0.5649815818F, 0.5669129570F,
  45771. 0.5688426349F, 0.5707705799F, 0.5726967564F, 0.5746211290F,
  45772. 0.5765436624F, 0.5784643212F, 0.5803830702F, 0.5822998743F,
  45773. 0.5842146984F, 0.5861275076F, 0.5880382669F, 0.5899469416F,
  45774. 0.5918534968F, 0.5937578981F, 0.5956601107F, 0.5975601004F,
  45775. 0.5994578326F, 0.6013532732F, 0.6032463880F, 0.6051371429F,
  45776. 0.6070255039F, 0.6089114372F, 0.6107949090F, 0.6126758856F,
  45777. 0.6145543334F, 0.6164302191F, 0.6183035092F, 0.6201741706F,
  45778. 0.6220421700F, 0.6239074745F, 0.6257700513F, 0.6276298674F,
  45779. 0.6294868903F, 0.6313410873F, 0.6331924262F, 0.6350408745F,
  45780. 0.6368864001F, 0.6387289710F, 0.6405685552F, 0.6424051209F,
  45781. 0.6442386364F, 0.6460690702F, 0.6478963910F, 0.6497205673F,
  45782. 0.6515415682F, 0.6533593625F, 0.6551739194F, 0.6569852082F,
  45783. 0.6587931984F, 0.6605978593F, 0.6623991609F, 0.6641970728F,
  45784. 0.6659915652F, 0.6677826081F, 0.6695701718F, 0.6713542268F,
  45785. 0.6731347437F, 0.6749116932F, 0.6766850461F, 0.6784547736F,
  45786. 0.6802208469F, 0.6819832374F, 0.6837419164F, 0.6854968559F,
  45787. 0.6872480275F, 0.6889954034F, 0.6907389556F, 0.6924786566F,
  45788. 0.6942144788F, 0.6959463950F, 0.6976743780F, 0.6993984008F,
  45789. 0.7011184365F, 0.7028344587F, 0.7045464407F, 0.7062543564F,
  45790. 0.7079581796F, 0.7096578844F, 0.7113534450F, 0.7130448359F,
  45791. 0.7147320316F, 0.7164150070F, 0.7180937371F, 0.7197681970F,
  45792. 0.7214383620F, 0.7231042077F, 0.7247657098F, 0.7264228443F,
  45793. 0.7280755871F, 0.7297239147F, 0.7313678035F, 0.7330072301F,
  45794. 0.7346421715F, 0.7362726046F, 0.7378985069F, 0.7395198556F,
  45795. 0.7411366285F, 0.7427488034F, 0.7443563584F, 0.7459592717F,
  45796. 0.7475575218F, 0.7491510873F, 0.7507399471F, 0.7523240803F,
  45797. 0.7539034661F, 0.7554780839F, 0.7570479136F, 0.7586129349F,
  45798. 0.7601731279F, 0.7617284730F, 0.7632789506F, 0.7648245416F,
  45799. 0.7663652267F, 0.7679009872F, 0.7694318044F, 0.7709576599F,
  45800. 0.7724785354F, 0.7739944130F, 0.7755052749F, 0.7770111035F,
  45801. 0.7785118815F, 0.7800075916F, 0.7814982170F, 0.7829837410F,
  45802. 0.7844641472F, 0.7859394191F, 0.7874095408F, 0.7888744965F,
  45803. 0.7903342706F, 0.7917888476F, 0.7932382124F, 0.7946823501F,
  45804. 0.7961212460F, 0.7975548855F, 0.7989832544F, 0.8004063386F,
  45805. 0.8018241244F, 0.8032365981F, 0.8046437463F, 0.8060455560F,
  45806. 0.8074420141F, 0.8088331080F, 0.8102188253F, 0.8115991536F,
  45807. 0.8129740810F, 0.8143435957F, 0.8157076861F, 0.8170663409F,
  45808. 0.8184195489F, 0.8197672994F, 0.8211095817F, 0.8224463853F,
  45809. 0.8237777001F, 0.8251035161F, 0.8264238235F, 0.8277386129F,
  45810. 0.8290478750F, 0.8303516008F, 0.8316497814F, 0.8329424083F,
  45811. 0.8342294731F, 0.8355109677F, 0.8367868841F, 0.8380572148F,
  45812. 0.8393219523F, 0.8405810893F, 0.8418346190F, 0.8430825345F,
  45813. 0.8443248294F, 0.8455614974F, 0.8467925323F, 0.8480179285F,
  45814. 0.8492376802F, 0.8504517822F, 0.8516602292F, 0.8528630164F,
  45815. 0.8540601391F, 0.8552515928F, 0.8564373733F, 0.8576174766F,
  45816. 0.8587918990F, 0.8599606368F, 0.8611236868F, 0.8622810460F,
  45817. 0.8634327113F, 0.8645786802F, 0.8657189504F, 0.8668535195F,
  45818. 0.8679823857F, 0.8691055472F, 0.8702230025F, 0.8713347503F,
  45819. 0.8724407896F, 0.8735411194F, 0.8746357394F, 0.8757246489F,
  45820. 0.8768078479F, 0.8778853364F, 0.8789571146F, 0.8800231832F,
  45821. 0.8810835427F, 0.8821381942F, 0.8831871387F, 0.8842303777F,
  45822. 0.8852679127F, 0.8862997456F, 0.8873258784F, 0.8883463132F,
  45823. 0.8893610527F, 0.8903700994F, 0.8913734562F, 0.8923711263F,
  45824. 0.8933631129F, 0.8943494196F, 0.8953300500F, 0.8963050083F,
  45825. 0.8972742985F, 0.8982379249F, 0.8991958922F, 0.9001482052F,
  45826. 0.9010948688F, 0.9020358883F, 0.9029712690F, 0.9039010165F,
  45827. 0.9048251367F, 0.9057436357F, 0.9066565195F, 0.9075637946F,
  45828. 0.9084654678F, 0.9093615456F, 0.9102520353F, 0.9111369440F,
  45829. 0.9120162792F, 0.9128900484F, 0.9137582595F, 0.9146209204F,
  45830. 0.9154780394F, 0.9163296248F, 0.9171756853F, 0.9180162296F,
  45831. 0.9188512667F, 0.9196808057F, 0.9205048559F, 0.9213234270F,
  45832. 0.9221365285F, 0.9229441704F, 0.9237463629F, 0.9245431160F,
  45833. 0.9253344404F, 0.9261203465F, 0.9269008453F, 0.9276759477F,
  45834. 0.9284456648F, 0.9292100080F, 0.9299689889F, 0.9307226190F,
  45835. 0.9314709103F, 0.9322138747F, 0.9329515245F, 0.9336838721F,
  45836. 0.9344109300F, 0.9351327108F, 0.9358492275F, 0.9365604931F,
  45837. 0.9372665208F, 0.9379673239F, 0.9386629160F, 0.9393533107F,
  45838. 0.9400385220F, 0.9407185637F, 0.9413934501F, 0.9420631954F,
  45839. 0.9427278141F, 0.9433873208F, 0.9440417304F, 0.9446910576F,
  45840. 0.9453353176F, 0.9459745255F, 0.9466086968F, 0.9472378469F,
  45841. 0.9478619915F, 0.9484811463F, 0.9490953274F, 0.9497045506F,
  45842. 0.9503088323F, 0.9509081888F, 0.9515026365F, 0.9520921921F,
  45843. 0.9526768723F, 0.9532566940F, 0.9538316742F, 0.9544018300F,
  45844. 0.9549671786F, 0.9555277375F, 0.9560835241F, 0.9566345562F,
  45845. 0.9571808513F, 0.9577224275F, 0.9582593027F, 0.9587914949F,
  45846. 0.9593190225F, 0.9598419038F, 0.9603601571F, 0.9608738012F,
  45847. 0.9613828546F, 0.9618873361F, 0.9623872646F, 0.9628826591F,
  45848. 0.9633735388F, 0.9638599227F, 0.9643418303F, 0.9648192808F,
  45849. 0.9652922939F, 0.9657608890F, 0.9662250860F, 0.9666849046F,
  45850. 0.9671403646F, 0.9675914861F, 0.9680382891F, 0.9684807937F,
  45851. 0.9689190202F, 0.9693529890F, 0.9697827203F, 0.9702082347F,
  45852. 0.9706295529F, 0.9710466953F, 0.9714596828F, 0.9718685362F,
  45853. 0.9722732762F, 0.9726739240F, 0.9730705005F, 0.9734630267F,
  45854. 0.9738515239F, 0.9742360134F, 0.9746165163F, 0.9749930540F,
  45855. 0.9753656481F, 0.9757343198F, 0.9760990909F, 0.9764599829F,
  45856. 0.9768170175F, 0.9771702164F, 0.9775196013F, 0.9778651941F,
  45857. 0.9782070167F, 0.9785450909F, 0.9788794388F, 0.9792100824F,
  45858. 0.9795370437F, 0.9798603449F, 0.9801800080F, 0.9804960554F,
  45859. 0.9808085092F, 0.9811173916F, 0.9814227251F, 0.9817245318F,
  45860. 0.9820228343F, 0.9823176549F, 0.9826090160F, 0.9828969402F,
  45861. 0.9831814498F, 0.9834625674F, 0.9837403156F, 0.9840147169F,
  45862. 0.9842857939F, 0.9845535692F, 0.9848180654F, 0.9850793052F,
  45863. 0.9853373113F, 0.9855921062F, 0.9858437127F, 0.9860921535F,
  45864. 0.9863374512F, 0.9865796287F, 0.9868187085F, 0.9870547136F,
  45865. 0.9872876664F, 0.9875175899F, 0.9877445067F, 0.9879684396F,
  45866. 0.9881894112F, 0.9884074444F, 0.9886225619F, 0.9888347863F,
  45867. 0.9890441404F, 0.9892506468F, 0.9894543284F, 0.9896552077F,
  45868. 0.9898533074F, 0.9900486502F, 0.9902412587F, 0.9904311555F,
  45869. 0.9906183633F, 0.9908029045F, 0.9909848019F, 0.9911640779F,
  45870. 0.9913407550F, 0.9915148557F, 0.9916864025F, 0.9918554179F,
  45871. 0.9920219241F, 0.9921859437F, 0.9923474989F, 0.9925066120F,
  45872. 0.9926633054F, 0.9928176012F, 0.9929695218F, 0.9931190891F,
  45873. 0.9932663254F, 0.9934112527F, 0.9935538932F, 0.9936942686F,
  45874. 0.9938324012F, 0.9939683126F, 0.9941020248F, 0.9942335597F,
  45875. 0.9943629388F, 0.9944901841F, 0.9946153170F, 0.9947383593F,
  45876. 0.9948593325F, 0.9949782579F, 0.9950951572F, 0.9952100516F,
  45877. 0.9953229625F, 0.9954339111F, 0.9955429186F, 0.9956500062F,
  45878. 0.9957551948F, 0.9958585056F, 0.9959599593F, 0.9960595769F,
  45879. 0.9961573792F, 0.9962533869F, 0.9963476206F, 0.9964401009F,
  45880. 0.9965308483F, 0.9966198833F, 0.9967072261F, 0.9967928971F,
  45881. 0.9968769164F, 0.9969593041F, 0.9970400804F, 0.9971192651F,
  45882. 0.9971968781F, 0.9972729391F, 0.9973474680F, 0.9974204842F,
  45883. 0.9974920074F, 0.9975620569F, 0.9976306521F, 0.9976978122F,
  45884. 0.9977635565F, 0.9978279039F, 0.9978908736F, 0.9979524842F,
  45885. 0.9980127547F, 0.9980717037F, 0.9981293499F, 0.9981857116F,
  45886. 0.9982408073F, 0.9982946554F, 0.9983472739F, 0.9983986810F,
  45887. 0.9984488947F, 0.9984979328F, 0.9985458132F, 0.9985925534F,
  45888. 0.9986381711F, 0.9986826838F, 0.9987261086F, 0.9987684630F,
  45889. 0.9988097640F, 0.9988500286F, 0.9988892738F, 0.9989275163F,
  45890. 0.9989647727F, 0.9990010597F, 0.9990363938F, 0.9990707911F,
  45891. 0.9991042679F, 0.9991368404F, 0.9991685244F, 0.9991993358F,
  45892. 0.9992292905F, 0.9992584038F, 0.9992866914F, 0.9993141686F,
  45893. 0.9993408506F, 0.9993667526F, 0.9993918895F, 0.9994162761F,
  45894. 0.9994399273F, 0.9994628576F, 0.9994850815F, 0.9995066133F,
  45895. 0.9995274672F, 0.9995476574F, 0.9995671978F, 0.9995861021F,
  45896. 0.9996043841F, 0.9996220573F, 0.9996391352F, 0.9996556310F,
  45897. 0.9996715579F, 0.9996869288F, 0.9997017568F, 0.9997160543F,
  45898. 0.9997298342F, 0.9997431088F, 0.9997558905F, 0.9997681914F,
  45899. 0.9997800236F, 0.9997913990F, 0.9998023292F, 0.9998128261F,
  45900. 0.9998229009F, 0.9998325650F, 0.9998418296F, 0.9998507058F,
  45901. 0.9998592044F, 0.9998673362F, 0.9998751117F, 0.9998825415F,
  45902. 0.9998896358F, 0.9998964047F, 0.9999028584F, 0.9999090066F,
  45903. 0.9999148590F, 0.9999204253F, 0.9999257148F, 0.9999307368F,
  45904. 0.9999355003F, 0.9999400144F, 0.9999442878F, 0.9999483293F,
  45905. 0.9999521472F, 0.9999557499F, 0.9999591457F, 0.9999623426F,
  45906. 0.9999653483F, 0.9999681708F, 0.9999708175F, 0.9999732959F,
  45907. 0.9999756132F, 0.9999777765F, 0.9999797928F, 0.9999816688F,
  45908. 0.9999834113F, 0.9999850266F, 0.9999865211F, 0.9999879009F,
  45909. 0.9999891721F, 0.9999903405F, 0.9999914118F, 0.9999923914F,
  45910. 0.9999932849F, 0.9999940972F, 0.9999948336F, 0.9999954989F,
  45911. 0.9999960978F, 0.9999966349F, 0.9999971146F, 0.9999975411F,
  45912. 0.9999979185F, 0.9999982507F, 0.9999985414F, 0.9999987944F,
  45913. 0.9999990129F, 0.9999992003F, 0.9999993596F, 0.9999994939F,
  45914. 0.9999996059F, 0.9999996981F, 0.9999997732F, 0.9999998333F,
  45915. 0.9999998805F, 0.9999999170F, 0.9999999444F, 0.9999999643F,
  45916. 0.9999999784F, 0.9999999878F, 0.9999999937F, 0.9999999972F,
  45917. 0.9999999990F, 0.9999999997F, 1.0000000000F, 1.0000000000F,
  45918. };
  45919. static float vwin4096[2048] = {
  45920. 0.0000002310F, 0.0000020791F, 0.0000057754F, 0.0000113197F,
  45921. 0.0000187121F, 0.0000279526F, 0.0000390412F, 0.0000519777F,
  45922. 0.0000667623F, 0.0000833949F, 0.0001018753F, 0.0001222036F,
  45923. 0.0001443798F, 0.0001684037F, 0.0001942754F, 0.0002219947F,
  45924. 0.0002515616F, 0.0002829761F, 0.0003162380F, 0.0003513472F,
  45925. 0.0003883038F, 0.0004271076F, 0.0004677584F, 0.0005102563F,
  45926. 0.0005546011F, 0.0006007928F, 0.0006488311F, 0.0006987160F,
  45927. 0.0007504474F, 0.0008040251F, 0.0008594490F, 0.0009167191F,
  45928. 0.0009758351F, 0.0010367969F, 0.0010996044F, 0.0011642574F,
  45929. 0.0012307558F, 0.0012990994F, 0.0013692880F, 0.0014413216F,
  45930. 0.0015151998F, 0.0015909226F, 0.0016684898F, 0.0017479011F,
  45931. 0.0018291565F, 0.0019122556F, 0.0019971983F, 0.0020839845F,
  45932. 0.0021726138F, 0.0022630861F, 0.0023554012F, 0.0024495588F,
  45933. 0.0025455588F, 0.0026434008F, 0.0027430847F, 0.0028446103F,
  45934. 0.0029479772F, 0.0030531853F, 0.0031602342F, 0.0032691238F,
  45935. 0.0033798538F, 0.0034924239F, 0.0036068338F, 0.0037230833F,
  45936. 0.0038411721F, 0.0039610999F, 0.0040828664F, 0.0042064714F,
  45937. 0.0043319145F, 0.0044591954F, 0.0045883139F, 0.0047192696F,
  45938. 0.0048520622F, 0.0049866914F, 0.0051231569F, 0.0052614583F,
  45939. 0.0054015953F, 0.0055435676F, 0.0056873748F, 0.0058330166F,
  45940. 0.0059804926F, 0.0061298026F, 0.0062809460F, 0.0064339226F,
  45941. 0.0065887320F, 0.0067453738F, 0.0069038476F, 0.0070641531F,
  45942. 0.0072262899F, 0.0073902575F, 0.0075560556F, 0.0077236838F,
  45943. 0.0078931417F, 0.0080644288F, 0.0082375447F, 0.0084124891F,
  45944. 0.0085892615F, 0.0087678614F, 0.0089482885F, 0.0091305422F,
  45945. 0.0093146223F, 0.0095005281F, 0.0096882592F, 0.0098778153F,
  45946. 0.0100691958F, 0.0102624002F, 0.0104574281F, 0.0106542791F,
  45947. 0.0108529525F, 0.0110534480F, 0.0112557651F, 0.0114599032F,
  45948. 0.0116658618F, 0.0118736405F, 0.0120832387F, 0.0122946560F,
  45949. 0.0125078917F, 0.0127229454F, 0.0129398166F, 0.0131585046F,
  45950. 0.0133790090F, 0.0136013292F, 0.0138254647F, 0.0140514149F,
  45951. 0.0142791792F, 0.0145087572F, 0.0147401481F, 0.0149733515F,
  45952. 0.0152083667F, 0.0154451932F, 0.0156838304F, 0.0159242777F,
  45953. 0.0161665345F, 0.0164106001F, 0.0166564741F, 0.0169041557F,
  45954. 0.0171536443F, 0.0174049393F, 0.0176580401F, 0.0179129461F,
  45955. 0.0181696565F, 0.0184281708F, 0.0186884883F, 0.0189506084F,
  45956. 0.0192145303F, 0.0194802535F, 0.0197477772F, 0.0200171008F,
  45957. 0.0202882236F, 0.0205611449F, 0.0208358639F, 0.0211123801F,
  45958. 0.0213906927F, 0.0216708011F, 0.0219527043F, 0.0222364019F,
  45959. 0.0225218930F, 0.0228091769F, 0.0230982529F, 0.0233891203F,
  45960. 0.0236817782F, 0.0239762259F, 0.0242724628F, 0.0245704880F,
  45961. 0.0248703007F, 0.0251719002F, 0.0254752858F, 0.0257804565F,
  45962. 0.0260874117F, 0.0263961506F, 0.0267066722F, 0.0270189760F,
  45963. 0.0273330609F, 0.0276489263F, 0.0279665712F, 0.0282859949F,
  45964. 0.0286071966F, 0.0289301753F, 0.0292549303F, 0.0295814607F,
  45965. 0.0299097656F, 0.0302398442F, 0.0305716957F, 0.0309053191F,
  45966. 0.0312407135F, 0.0315778782F, 0.0319168122F, 0.0322575145F,
  45967. 0.0325999844F, 0.0329442209F, 0.0332902231F, 0.0336379900F,
  45968. 0.0339875208F, 0.0343388146F, 0.0346918703F, 0.0350466871F,
  45969. 0.0354032640F, 0.0357616000F, 0.0361216943F, 0.0364835458F,
  45970. 0.0368471535F, 0.0372125166F, 0.0375796339F, 0.0379485046F,
  45971. 0.0383191276F, 0.0386915020F, 0.0390656267F, 0.0394415008F,
  45972. 0.0398191231F, 0.0401984927F, 0.0405796086F, 0.0409624698F,
  45973. 0.0413470751F, 0.0417334235F, 0.0421215141F, 0.0425113457F,
  45974. 0.0429029172F, 0.0432962277F, 0.0436912760F, 0.0440880610F,
  45975. 0.0444865817F, 0.0448868370F, 0.0452888257F, 0.0456925468F,
  45976. 0.0460979992F, 0.0465051816F, 0.0469140931F, 0.0473247325F,
  45977. 0.0477370986F, 0.0481511902F, 0.0485670064F, 0.0489845458F,
  45978. 0.0494038074F, 0.0498247899F, 0.0502474922F, 0.0506719131F,
  45979. 0.0510980514F, 0.0515259060F, 0.0519554756F, 0.0523867590F,
  45980. 0.0528197550F, 0.0532544624F, 0.0536908800F, 0.0541290066F,
  45981. 0.0545688408F, 0.0550103815F, 0.0554536274F, 0.0558985772F,
  45982. 0.0563452297F, 0.0567935837F, 0.0572436377F, 0.0576953907F,
  45983. 0.0581488412F, 0.0586039880F, 0.0590608297F, 0.0595193651F,
  45984. 0.0599795929F, 0.0604415117F, 0.0609051202F, 0.0613704170F,
  45985. 0.0618374009F, 0.0623060704F, 0.0627764243F, 0.0632484611F,
  45986. 0.0637221795F, 0.0641975781F, 0.0646746555F, 0.0651534104F,
  45987. 0.0656338413F, 0.0661159469F, 0.0665997257F, 0.0670851763F,
  45988. 0.0675722973F, 0.0680610873F, 0.0685515448F, 0.0690436684F,
  45989. 0.0695374567F, 0.0700329081F, 0.0705300213F, 0.0710287947F,
  45990. 0.0715292269F, 0.0720313163F, 0.0725350616F, 0.0730404612F,
  45991. 0.0735475136F, 0.0740562172F, 0.0745665707F, 0.0750785723F,
  45992. 0.0755922207F, 0.0761075143F, 0.0766244515F, 0.0771430307F,
  45993. 0.0776632505F, 0.0781851092F, 0.0787086052F, 0.0792337371F,
  45994. 0.0797605032F, 0.0802889018F, 0.0808189315F, 0.0813505905F,
  45995. 0.0818838773F, 0.0824187903F, 0.0829553277F, 0.0834934881F,
  45996. 0.0840332697F, 0.0845746708F, 0.0851176899F, 0.0856623252F,
  45997. 0.0862085751F, 0.0867564379F, 0.0873059119F, 0.0878569954F,
  45998. 0.0884096867F, 0.0889639840F, 0.0895198858F, 0.0900773902F,
  45999. 0.0906364955F, 0.0911972000F, 0.0917595019F, 0.0923233995F,
  46000. 0.0928888909F, 0.0934559745F, 0.0940246485F, 0.0945949110F,
  46001. 0.0951667604F, 0.0957401946F, 0.0963152121F, 0.0968918109F,
  46002. 0.0974699893F, 0.0980497454F, 0.0986310773F, 0.0992139832F,
  46003. 0.0997984614F, 0.1003845098F, 0.1009721267F, 0.1015613101F,
  46004. 0.1021520582F, 0.1027443692F, 0.1033382410F, 0.1039336718F,
  46005. 0.1045306597F, 0.1051292027F, 0.1057292990F, 0.1063309466F,
  46006. 0.1069341435F, 0.1075388878F, 0.1081451776F, 0.1087530108F,
  46007. 0.1093623856F, 0.1099732998F, 0.1105857516F, 0.1111997389F,
  46008. 0.1118152597F, 0.1124323121F, 0.1130508939F, 0.1136710032F,
  46009. 0.1142926379F, 0.1149157960F, 0.1155404755F, 0.1161666742F,
  46010. 0.1167943901F, 0.1174236211F, 0.1180543652F, 0.1186866202F,
  46011. 0.1193203841F, 0.1199556548F, 0.1205924300F, 0.1212307078F,
  46012. 0.1218704860F, 0.1225117624F, 0.1231545349F, 0.1237988013F,
  46013. 0.1244445596F, 0.1250918074F, 0.1257405427F, 0.1263907632F,
  46014. 0.1270424667F, 0.1276956512F, 0.1283503142F, 0.1290064537F,
  46015. 0.1296640674F, 0.1303231530F, 0.1309837084F, 0.1316457312F,
  46016. 0.1323092193F, 0.1329741703F, 0.1336405820F, 0.1343084520F,
  46017. 0.1349777782F, 0.1356485582F, 0.1363207897F, 0.1369944704F,
  46018. 0.1376695979F, 0.1383461700F, 0.1390241842F, 0.1397036384F,
  46019. 0.1403845300F, 0.1410668567F, 0.1417506162F, 0.1424358061F,
  46020. 0.1431224240F, 0.1438104674F, 0.1444999341F, 0.1451908216F,
  46021. 0.1458831274F, 0.1465768492F, 0.1472719844F, 0.1479685308F,
  46022. 0.1486664857F, 0.1493658468F, 0.1500666115F, 0.1507687775F,
  46023. 0.1514723422F, 0.1521773031F, 0.1528836577F, 0.1535914035F,
  46024. 0.1543005380F, 0.1550110587F, 0.1557229631F, 0.1564362485F,
  46025. 0.1571509124F, 0.1578669524F, 0.1585843657F, 0.1593031499F,
  46026. 0.1600233024F, 0.1607448205F, 0.1614677017F, 0.1621919433F,
  46027. 0.1629175428F, 0.1636444975F, 0.1643728047F, 0.1651024619F,
  46028. 0.1658334665F, 0.1665658156F, 0.1672995067F, 0.1680345371F,
  46029. 0.1687709041F, 0.1695086050F, 0.1702476372F, 0.1709879978F,
  46030. 0.1717296843F, 0.1724726938F, 0.1732170237F, 0.1739626711F,
  46031. 0.1747096335F, 0.1754579079F, 0.1762074916F, 0.1769583819F,
  46032. 0.1777105760F, 0.1784640710F, 0.1792188642F, 0.1799749529F,
  46033. 0.1807323340F, 0.1814910049F, 0.1822509628F, 0.1830122046F,
  46034. 0.1837747277F, 0.1845385292F, 0.1853036062F, 0.1860699558F,
  46035. 0.1868375751F, 0.1876064613F, 0.1883766114F, 0.1891480226F,
  46036. 0.1899206919F, 0.1906946164F, 0.1914697932F, 0.1922462194F,
  46037. 0.1930238919F, 0.1938028079F, 0.1945829643F, 0.1953643583F,
  46038. 0.1961469868F, 0.1969308468F, 0.1977159353F, 0.1985022494F,
  46039. 0.1992897859F, 0.2000785420F, 0.2008685145F, 0.2016597005F,
  46040. 0.2024520968F, 0.2032457005F, 0.2040405084F, 0.2048365175F,
  46041. 0.2056337247F, 0.2064321269F, 0.2072317211F, 0.2080325041F,
  46042. 0.2088344727F, 0.2096376240F, 0.2104419547F, 0.2112474618F,
  46043. 0.2120541420F, 0.2128619923F, 0.2136710094F, 0.2144811902F,
  46044. 0.2152925315F, 0.2161050301F, 0.2169186829F, 0.2177334866F,
  46045. 0.2185494381F, 0.2193665340F, 0.2201847712F, 0.2210041465F,
  46046. 0.2218246565F, 0.2226462981F, 0.2234690680F, 0.2242929629F,
  46047. 0.2251179796F, 0.2259441147F, 0.2267713650F, 0.2275997272F,
  46048. 0.2284291979F, 0.2292597739F, 0.2300914518F, 0.2309242283F,
  46049. 0.2317581001F, 0.2325930638F, 0.2334291160F, 0.2342662534F,
  46050. 0.2351044727F, 0.2359437703F, 0.2367841431F, 0.2376255875F,
  46051. 0.2384681001F, 0.2393116776F, 0.2401563165F, 0.2410020134F,
  46052. 0.2418487649F, 0.2426965675F, 0.2435454178F, 0.2443953122F,
  46053. 0.2452462474F, 0.2460982199F, 0.2469512262F, 0.2478052628F,
  46054. 0.2486603262F, 0.2495164129F, 0.2503735194F, 0.2512316421F,
  46055. 0.2520907776F, 0.2529509222F, 0.2538120726F, 0.2546742250F,
  46056. 0.2555373760F, 0.2564015219F, 0.2572666593F, 0.2581327845F,
  46057. 0.2589998939F, 0.2598679840F, 0.2607370510F, 0.2616070916F,
  46058. 0.2624781019F, 0.2633500783F, 0.2642230173F, 0.2650969152F,
  46059. 0.2659717684F, 0.2668475731F, 0.2677243257F, 0.2686020226F,
  46060. 0.2694806601F, 0.2703602344F, 0.2712407419F, 0.2721221789F,
  46061. 0.2730045417F, 0.2738878265F, 0.2747720297F, 0.2756571474F,
  46062. 0.2765431760F, 0.2774301117F, 0.2783179508F, 0.2792066895F,
  46063. 0.2800963240F, 0.2809868505F, 0.2818782654F, 0.2827705647F,
  46064. 0.2836637447F, 0.2845578016F, 0.2854527315F, 0.2863485307F,
  46065. 0.2872451953F, 0.2881427215F, 0.2890411055F, 0.2899403433F,
  46066. 0.2908404312F, 0.2917413654F, 0.2926431418F, 0.2935457567F,
  46067. 0.2944492061F, 0.2953534863F, 0.2962585932F, 0.2971645230F,
  46068. 0.2980712717F, 0.2989788356F, 0.2998872105F, 0.3007963927F,
  46069. 0.3017063781F, 0.3026171629F, 0.3035287430F, 0.3044411145F,
  46070. 0.3053542736F, 0.3062682161F, 0.3071829381F, 0.3080984356F,
  46071. 0.3090147047F, 0.3099317413F, 0.3108495414F, 0.3117681011F,
  46072. 0.3126874163F, 0.3136074830F, 0.3145282972F, 0.3154498548F,
  46073. 0.3163721517F, 0.3172951841F, 0.3182189477F, 0.3191434385F,
  46074. 0.3200686525F, 0.3209945856F, 0.3219212336F, 0.3228485927F,
  46075. 0.3237766585F, 0.3247054271F, 0.3256348943F, 0.3265650560F,
  46076. 0.3274959081F, 0.3284274465F, 0.3293596671F, 0.3302925657F,
  46077. 0.3312261382F, 0.3321603804F, 0.3330952882F, 0.3340308574F,
  46078. 0.3349670838F, 0.3359039634F, 0.3368414919F, 0.3377796651F,
  46079. 0.3387184789F, 0.3396579290F, 0.3405980113F, 0.3415387216F,
  46080. 0.3424800556F, 0.3434220091F, 0.3443645779F, 0.3453077578F,
  46081. 0.3462515446F, 0.3471959340F, 0.3481409217F, 0.3490865036F,
  46082. 0.3500326754F, 0.3509794328F, 0.3519267715F, 0.3528746873F,
  46083. 0.3538231759F, 0.3547722330F, 0.3557218544F, 0.3566720357F,
  46084. 0.3576227727F, 0.3585740610F, 0.3595258964F, 0.3604782745F,
  46085. 0.3614311910F, 0.3623846417F, 0.3633386221F, 0.3642931280F,
  46086. 0.3652481549F, 0.3662036987F, 0.3671597548F, 0.3681163191F,
  46087. 0.3690733870F, 0.3700309544F, 0.3709890167F, 0.3719475696F,
  46088. 0.3729066089F, 0.3738661299F, 0.3748261285F, 0.3757866002F,
  46089. 0.3767475406F, 0.3777089453F, 0.3786708100F, 0.3796331302F,
  46090. 0.3805959014F, 0.3815591194F, 0.3825227796F, 0.3834868777F,
  46091. 0.3844514093F, 0.3854163698F, 0.3863817549F, 0.3873475601F,
  46092. 0.3883137810F, 0.3892804131F, 0.3902474521F, 0.3912148933F,
  46093. 0.3921827325F, 0.3931509650F, 0.3941195865F, 0.3950885925F,
  46094. 0.3960579785F, 0.3970277400F, 0.3979978725F, 0.3989683716F,
  46095. 0.3999392328F, 0.4009104516F, 0.4018820234F, 0.4028539438F,
  46096. 0.4038262084F, 0.4047988125F, 0.4057717516F, 0.4067450214F,
  46097. 0.4077186172F, 0.4086925345F, 0.4096667688F, 0.4106413155F,
  46098. 0.4116161703F, 0.4125913284F, 0.4135667854F, 0.4145425368F,
  46099. 0.4155185780F, 0.4164949044F, 0.4174715116F, 0.4184483949F,
  46100. 0.4194255498F, 0.4204029718F, 0.4213806563F, 0.4223585987F,
  46101. 0.4233367946F, 0.4243152392F, 0.4252939281F, 0.4262728566F,
  46102. 0.4272520202F, 0.4282314144F, 0.4292110345F, 0.4301908760F,
  46103. 0.4311709343F, 0.4321512047F, 0.4331316828F, 0.4341123639F,
  46104. 0.4350932435F, 0.4360743168F, 0.4370555794F, 0.4380370267F,
  46105. 0.4390186540F, 0.4400004567F, 0.4409824303F, 0.4419645701F,
  46106. 0.4429468716F, 0.4439293300F, 0.4449119409F, 0.4458946996F,
  46107. 0.4468776014F, 0.4478606418F, 0.4488438162F, 0.4498271199F,
  46108. 0.4508105483F, 0.4517940967F, 0.4527777607F, 0.4537615355F,
  46109. 0.4547454165F, 0.4557293991F, 0.4567134786F, 0.4576976505F,
  46110. 0.4586819101F, 0.4596662527F, 0.4606506738F, 0.4616351687F,
  46111. 0.4626197328F, 0.4636043614F, 0.4645890499F, 0.4655737936F,
  46112. 0.4665585880F, 0.4675434284F, 0.4685283101F, 0.4695132286F,
  46113. 0.4704981791F, 0.4714831570F, 0.4724681577F, 0.4734531766F,
  46114. 0.4744382089F, 0.4754232501F, 0.4764082956F, 0.4773933406F,
  46115. 0.4783783806F, 0.4793634108F, 0.4803484267F, 0.4813334237F,
  46116. 0.4823183969F, 0.4833033419F, 0.4842882540F, 0.4852731285F,
  46117. 0.4862579608F, 0.4872427462F, 0.4882274802F, 0.4892121580F,
  46118. 0.4901967751F, 0.4911813267F, 0.4921658083F, 0.4931502151F,
  46119. 0.4941345427F, 0.4951187863F, 0.4961029412F, 0.4970870029F,
  46120. 0.4980709667F, 0.4990548280F, 0.5000385822F, 0.5010222245F,
  46121. 0.5020057505F, 0.5029891553F, 0.5039724345F, 0.5049555834F,
  46122. 0.5059385973F, 0.5069214716F, 0.5079042018F, 0.5088867831F,
  46123. 0.5098692110F, 0.5108514808F, 0.5118335879F, 0.5128155277F,
  46124. 0.5137972956F, 0.5147788869F, 0.5157602971F, 0.5167415215F,
  46125. 0.5177225555F, 0.5187033945F, 0.5196840339F, 0.5206644692F,
  46126. 0.5216446956F, 0.5226247086F, 0.5236045035F, 0.5245840759F,
  46127. 0.5255634211F, 0.5265425344F, 0.5275214114F, 0.5285000474F,
  46128. 0.5294784378F, 0.5304565781F, 0.5314344637F, 0.5324120899F,
  46129. 0.5333894522F, 0.5343665461F, 0.5353433670F, 0.5363199102F,
  46130. 0.5372961713F, 0.5382721457F, 0.5392478287F, 0.5402232159F,
  46131. 0.5411983027F, 0.5421730845F, 0.5431475569F, 0.5441217151F,
  46132. 0.5450955548F, 0.5460690714F, 0.5470422602F, 0.5480151169F,
  46133. 0.5489876368F, 0.5499598155F, 0.5509316484F, 0.5519031310F,
  46134. 0.5528742587F, 0.5538450271F, 0.5548154317F, 0.5557854680F,
  46135. 0.5567551314F, 0.5577244174F, 0.5586933216F, 0.5596618395F,
  46136. 0.5606299665F, 0.5615976983F, 0.5625650302F, 0.5635319580F,
  46137. 0.5644984770F, 0.5654645828F, 0.5664302709F, 0.5673955370F,
  46138. 0.5683603765F, 0.5693247850F, 0.5702887580F, 0.5712522912F,
  46139. 0.5722153800F, 0.5731780200F, 0.5741402069F, 0.5751019362F,
  46140. 0.5760632034F, 0.5770240042F, 0.5779843341F, 0.5789441889F,
  46141. 0.5799035639F, 0.5808624549F, 0.5818208575F, 0.5827787673F,
  46142. 0.5837361800F, 0.5846930910F, 0.5856494961F, 0.5866053910F,
  46143. 0.5875607712F, 0.5885156324F, 0.5894699703F, 0.5904237804F,
  46144. 0.5913770586F, 0.5923298004F, 0.5932820016F, 0.5942336578F,
  46145. 0.5951847646F, 0.5961353179F, 0.5970853132F, 0.5980347464F,
  46146. 0.5989836131F, 0.5999319090F, 0.6008796298F, 0.6018267713F,
  46147. 0.6027733292F, 0.6037192993F, 0.6046646773F, 0.6056094589F,
  46148. 0.6065536400F, 0.6074972162F, 0.6084401833F, 0.6093825372F,
  46149. 0.6103242736F, 0.6112653884F, 0.6122058772F, 0.6131457359F,
  46150. 0.6140849604F, 0.6150235464F, 0.6159614897F, 0.6168987862F,
  46151. 0.6178354318F, 0.6187714223F, 0.6197067535F, 0.6206414213F,
  46152. 0.6215754215F, 0.6225087501F, 0.6234414028F, 0.6243733757F,
  46153. 0.6253046646F, 0.6262352654F, 0.6271651739F, 0.6280943862F,
  46154. 0.6290228982F, 0.6299507057F, 0.6308778048F, 0.6318041913F,
  46155. 0.6327298612F, 0.6336548105F, 0.6345790352F, 0.6355025312F,
  46156. 0.6364252945F, 0.6373473211F, 0.6382686070F, 0.6391891483F,
  46157. 0.6401089409F, 0.6410279808F, 0.6419462642F, 0.6428637869F,
  46158. 0.6437805452F, 0.6446965350F, 0.6456117524F, 0.6465261935F,
  46159. 0.6474398544F, 0.6483527311F, 0.6492648197F, 0.6501761165F,
  46160. 0.6510866174F, 0.6519963186F, 0.6529052162F, 0.6538133064F,
  46161. 0.6547205854F, 0.6556270492F, 0.6565326941F, 0.6574375162F,
  46162. 0.6583415117F, 0.6592446769F, 0.6601470079F, 0.6610485009F,
  46163. 0.6619491521F, 0.6628489578F, 0.6637479143F, 0.6646460177F,
  46164. 0.6655432643F, 0.6664396505F, 0.6673351724F, 0.6682298264F,
  46165. 0.6691236087F, 0.6700165157F, 0.6709085436F, 0.6717996889F,
  46166. 0.6726899478F, 0.6735793167F, 0.6744677918F, 0.6753553697F,
  46167. 0.6762420466F, 0.6771278190F, 0.6780126832F, 0.6788966357F,
  46168. 0.6797796728F, 0.6806617909F, 0.6815429866F, 0.6824232562F,
  46169. 0.6833025961F, 0.6841810030F, 0.6850584731F, 0.6859350031F,
  46170. 0.6868105894F, 0.6876852284F, 0.6885589168F, 0.6894316510F,
  46171. 0.6903034275F, 0.6911742430F, 0.6920440939F, 0.6929129769F,
  46172. 0.6937808884F, 0.6946478251F, 0.6955137837F, 0.6963787606F,
  46173. 0.6972427525F, 0.6981057560F, 0.6989677678F, 0.6998287845F,
  46174. 0.7006888028F, 0.7015478194F, 0.7024058309F, 0.7032628340F,
  46175. 0.7041188254F, 0.7049738019F, 0.7058277601F, 0.7066806969F,
  46176. 0.7075326089F, 0.7083834929F, 0.7092333457F, 0.7100821640F,
  46177. 0.7109299447F, 0.7117766846F, 0.7126223804F, 0.7134670291F,
  46178. 0.7143106273F, 0.7151531721F, 0.7159946602F, 0.7168350885F,
  46179. 0.7176744539F, 0.7185127534F, 0.7193499837F, 0.7201861418F,
  46180. 0.7210212247F, 0.7218552293F, 0.7226881526F, 0.7235199914F,
  46181. 0.7243507428F, 0.7251804039F, 0.7260089715F, 0.7268364426F,
  46182. 0.7276628144F, 0.7284880839F, 0.7293122481F, 0.7301353040F,
  46183. 0.7309572487F, 0.7317780794F, 0.7325977930F, 0.7334163868F,
  46184. 0.7342338579F, 0.7350502033F, 0.7358654202F, 0.7366795059F,
  46185. 0.7374924573F, 0.7383042718F, 0.7391149465F, 0.7399244787F,
  46186. 0.7407328655F, 0.7415401041F, 0.7423461920F, 0.7431511261F,
  46187. 0.7439549040F, 0.7447575227F, 0.7455589797F, 0.7463592723F,
  46188. 0.7471583976F, 0.7479563532F, 0.7487531363F, 0.7495487443F,
  46189. 0.7503431745F, 0.7511364244F, 0.7519284913F, 0.7527193726F,
  46190. 0.7535090658F, 0.7542975683F, 0.7550848776F, 0.7558709910F,
  46191. 0.7566559062F, 0.7574396205F, 0.7582221314F, 0.7590034366F,
  46192. 0.7597835334F, 0.7605624194F, 0.7613400923F, 0.7621165495F,
  46193. 0.7628917886F, 0.7636658072F, 0.7644386030F, 0.7652101735F,
  46194. 0.7659805164F, 0.7667496292F, 0.7675175098F, 0.7682841556F,
  46195. 0.7690495645F, 0.7698137341F, 0.7705766622F, 0.7713383463F,
  46196. 0.7720987844F, 0.7728579741F, 0.7736159132F, 0.7743725994F,
  46197. 0.7751280306F, 0.7758822046F, 0.7766351192F, 0.7773867722F,
  46198. 0.7781371614F, 0.7788862848F, 0.7796341401F, 0.7803807253F,
  46199. 0.7811260383F, 0.7818700769F, 0.7826128392F, 0.7833543230F,
  46200. 0.7840945263F, 0.7848334471F, 0.7855710833F, 0.7863074330F,
  46201. 0.7870424941F, 0.7877762647F, 0.7885087428F, 0.7892399264F,
  46202. 0.7899698137F, 0.7906984026F, 0.7914256914F, 0.7921516780F,
  46203. 0.7928763607F, 0.7935997375F, 0.7943218065F, 0.7950425661F,
  46204. 0.7957620142F, 0.7964801492F, 0.7971969692F, 0.7979124724F,
  46205. 0.7986266570F, 0.7993395214F, 0.8000510638F, 0.8007612823F,
  46206. 0.8014701754F, 0.8021777413F, 0.8028839784F, 0.8035888849F,
  46207. 0.8042924592F, 0.8049946997F, 0.8056956048F, 0.8063951727F,
  46208. 0.8070934020F, 0.8077902910F, 0.8084858381F, 0.8091800419F,
  46209. 0.8098729007F, 0.8105644130F, 0.8112545774F, 0.8119433922F,
  46210. 0.8126308561F, 0.8133169676F, 0.8140017251F, 0.8146851272F,
  46211. 0.8153671726F, 0.8160478598F, 0.8167271874F, 0.8174051539F,
  46212. 0.8180817582F, 0.8187569986F, 0.8194308741F, 0.8201033831F,
  46213. 0.8207745244F, 0.8214442966F, 0.8221126986F, 0.8227797290F,
  46214. 0.8234453865F, 0.8241096700F, 0.8247725781F, 0.8254341097F,
  46215. 0.8260942636F, 0.8267530385F, 0.8274104334F, 0.8280664470F,
  46216. 0.8287210782F, 0.8293743259F, 0.8300261889F, 0.8306766662F,
  46217. 0.8313257566F, 0.8319734591F, 0.8326197727F, 0.8332646963F,
  46218. 0.8339082288F, 0.8345503692F, 0.8351911167F, 0.8358304700F,
  46219. 0.8364684284F, 0.8371049907F, 0.8377401562F, 0.8383739238F,
  46220. 0.8390062927F, 0.8396372618F, 0.8402668305F, 0.8408949977F,
  46221. 0.8415217626F, 0.8421471245F, 0.8427710823F, 0.8433936354F,
  46222. 0.8440147830F, 0.8446345242F, 0.8452528582F, 0.8458697844F,
  46223. 0.8464853020F, 0.8470994102F, 0.8477121084F, 0.8483233958F,
  46224. 0.8489332718F, 0.8495417356F, 0.8501487866F, 0.8507544243F,
  46225. 0.8513586479F, 0.8519614568F, 0.8525628505F, 0.8531628283F,
  46226. 0.8537613897F, 0.8543585341F, 0.8549542611F, 0.8555485699F,
  46227. 0.8561414603F, 0.8567329315F, 0.8573229832F, 0.8579116149F,
  46228. 0.8584988262F, 0.8590846165F, 0.8596689855F, 0.8602519327F,
  46229. 0.8608334577F, 0.8614135603F, 0.8619922399F, 0.8625694962F,
  46230. 0.8631453289F, 0.8637197377F, 0.8642927222F, 0.8648642821F,
  46231. 0.8654344172F, 0.8660031272F, 0.8665704118F, 0.8671362708F,
  46232. 0.8677007039F, 0.8682637109F, 0.8688252917F, 0.8693854460F,
  46233. 0.8699441737F, 0.8705014745F, 0.8710573485F, 0.8716117953F,
  46234. 0.8721648150F, 0.8727164073F, 0.8732665723F, 0.8738153098F,
  46235. 0.8743626197F, 0.8749085021F, 0.8754529569F, 0.8759959840F,
  46236. 0.8765375835F, 0.8770777553F, 0.8776164996F, 0.8781538162F,
  46237. 0.8786897054F, 0.8792241670F, 0.8797572013F, 0.8802888082F,
  46238. 0.8808189880F, 0.8813477407F, 0.8818750664F, 0.8824009653F,
  46239. 0.8829254375F, 0.8834484833F, 0.8839701028F, 0.8844902961F,
  46240. 0.8850090636F, 0.8855264054F, 0.8860423218F, 0.8865568131F,
  46241. 0.8870698794F, 0.8875815212F, 0.8880917386F, 0.8886005319F,
  46242. 0.8891079016F, 0.8896138479F, 0.8901183712F, 0.8906214719F,
  46243. 0.8911231503F, 0.8916234067F, 0.8921222417F, 0.8926196556F,
  46244. 0.8931156489F, 0.8936102219F, 0.8941033752F, 0.8945951092F,
  46245. 0.8950854244F, 0.8955743212F, 0.8960618003F, 0.8965478621F,
  46246. 0.8970325071F, 0.8975157359F, 0.8979975490F, 0.8984779471F,
  46247. 0.8989569307F, 0.8994345004F, 0.8999106568F, 0.9003854005F,
  46248. 0.9008587323F, 0.9013306526F, 0.9018011623F, 0.9022702619F,
  46249. 0.9027379521F, 0.9032042337F, 0.9036691074F, 0.9041325739F,
  46250. 0.9045946339F, 0.9050552882F, 0.9055145376F, 0.9059723828F,
  46251. 0.9064288246F, 0.9068838638F, 0.9073375013F, 0.9077897379F,
  46252. 0.9082405743F, 0.9086900115F, 0.9091380503F, 0.9095846917F,
  46253. 0.9100299364F, 0.9104737854F, 0.9109162397F, 0.9113573001F,
  46254. 0.9117969675F, 0.9122352430F, 0.9126721275F, 0.9131076219F,
  46255. 0.9135417273F, 0.9139744447F, 0.9144057750F, 0.9148357194F,
  46256. 0.9152642787F, 0.9156914542F, 0.9161172468F, 0.9165416576F,
  46257. 0.9169646877F, 0.9173863382F, 0.9178066102F, 0.9182255048F,
  46258. 0.9186430232F, 0.9190591665F, 0.9194739359F, 0.9198873324F,
  46259. 0.9202993574F, 0.9207100120F, 0.9211192973F, 0.9215272147F,
  46260. 0.9219337653F, 0.9223389504F, 0.9227427713F, 0.9231452290F,
  46261. 0.9235463251F, 0.9239460607F, 0.9243444371F, 0.9247414557F,
  46262. 0.9251371177F, 0.9255314245F, 0.9259243774F, 0.9263159778F,
  46263. 0.9267062270F, 0.9270951264F, 0.9274826774F, 0.9278688814F,
  46264. 0.9282537398F, 0.9286372540F, 0.9290194254F, 0.9294002555F,
  46265. 0.9297797458F, 0.9301578976F, 0.9305347125F, 0.9309101919F,
  46266. 0.9312843373F, 0.9316571503F, 0.9320286323F, 0.9323987849F,
  46267. 0.9327676097F, 0.9331351080F, 0.9335012816F, 0.9338661320F,
  46268. 0.9342296607F, 0.9345918694F, 0.9349527596F, 0.9353123330F,
  46269. 0.9356705911F, 0.9360275357F, 0.9363831683F, 0.9367374905F,
  46270. 0.9370905042F, 0.9374422108F, 0.9377926122F, 0.9381417099F,
  46271. 0.9384895057F, 0.9388360014F, 0.9391811985F, 0.9395250989F,
  46272. 0.9398677043F, 0.9402090165F, 0.9405490371F, 0.9408877680F,
  46273. 0.9412252110F, 0.9415613678F, 0.9418962402F, 0.9422298301F,
  46274. 0.9425621392F, 0.9428931695F, 0.9432229226F, 0.9435514005F,
  46275. 0.9438786050F, 0.9442045381F, 0.9445292014F, 0.9448525971F,
  46276. 0.9451747268F, 0.9454955926F, 0.9458151963F, 0.9461335399F,
  46277. 0.9464506253F, 0.9467664545F, 0.9470810293F, 0.9473943517F,
  46278. 0.9477064238F, 0.9480172474F, 0.9483268246F, 0.9486351573F,
  46279. 0.9489422475F, 0.9492480973F, 0.9495527087F, 0.9498560837F,
  46280. 0.9501582243F, 0.9504591325F, 0.9507588105F, 0.9510572603F,
  46281. 0.9513544839F, 0.9516504834F, 0.9519452609F, 0.9522388186F,
  46282. 0.9525311584F, 0.9528222826F, 0.9531121932F, 0.9534008923F,
  46283. 0.9536883821F, 0.9539746647F, 0.9542597424F, 0.9545436171F,
  46284. 0.9548262912F, 0.9551077667F, 0.9553880459F, 0.9556671309F,
  46285. 0.9559450239F, 0.9562217272F, 0.9564972429F, 0.9567715733F,
  46286. 0.9570447206F, 0.9573166871F, 0.9575874749F, 0.9578570863F,
  46287. 0.9581255236F, 0.9583927890F, 0.9586588849F, 0.9589238134F,
  46288. 0.9591875769F, 0.9594501777F, 0.9597116180F, 0.9599719003F,
  46289. 0.9602310267F, 0.9604889995F, 0.9607458213F, 0.9610014942F,
  46290. 0.9612560206F, 0.9615094028F, 0.9617616433F, 0.9620127443F,
  46291. 0.9622627083F, 0.9625115376F, 0.9627592345F, 0.9630058016F,
  46292. 0.9632512411F, 0.9634955555F, 0.9637387471F, 0.9639808185F,
  46293. 0.9642217720F, 0.9644616100F, 0.9647003349F, 0.9649379493F,
  46294. 0.9651744556F, 0.9654098561F, 0.9656441534F, 0.9658773499F,
  46295. 0.9661094480F, 0.9663404504F, 0.9665703593F, 0.9667991774F,
  46296. 0.9670269071F, 0.9672535509F, 0.9674791114F, 0.9677035909F,
  46297. 0.9679269921F, 0.9681493174F, 0.9683705694F, 0.9685907506F,
  46298. 0.9688098636F, 0.9690279108F, 0.9692448948F, 0.9694608182F,
  46299. 0.9696756836F, 0.9698894934F, 0.9701022503F, 0.9703139569F,
  46300. 0.9705246156F, 0.9707342291F, 0.9709428000F, 0.9711503309F,
  46301. 0.9713568243F, 0.9715622829F, 0.9717667093F, 0.9719701060F,
  46302. 0.9721724757F, 0.9723738210F, 0.9725741446F, 0.9727734490F,
  46303. 0.9729717369F, 0.9731690109F, 0.9733652737F, 0.9735605279F,
  46304. 0.9737547762F, 0.9739480212F, 0.9741402656F, 0.9743315120F,
  46305. 0.9745217631F, 0.9747110216F, 0.9748992901F, 0.9750865714F,
  46306. 0.9752728681F, 0.9754581829F, 0.9756425184F, 0.9758258775F,
  46307. 0.9760082627F, 0.9761896768F, 0.9763701224F, 0.9765496024F,
  46308. 0.9767281193F, 0.9769056760F, 0.9770822751F, 0.9772579193F,
  46309. 0.9774326114F, 0.9776063542F, 0.9777791502F, 0.9779510023F,
  46310. 0.9781219133F, 0.9782918858F, 0.9784609226F, 0.9786290264F,
  46311. 0.9787962000F, 0.9789624461F, 0.9791277676F, 0.9792921671F,
  46312. 0.9794556474F, 0.9796182113F, 0.9797798615F, 0.9799406009F,
  46313. 0.9801004321F, 0.9802593580F, 0.9804173813F, 0.9805745049F,
  46314. 0.9807307314F, 0.9808860637F, 0.9810405046F, 0.9811940568F,
  46315. 0.9813467232F, 0.9814985065F, 0.9816494095F, 0.9817994351F,
  46316. 0.9819485860F, 0.9820968650F, 0.9822442750F, 0.9823908186F,
  46317. 0.9825364988F, 0.9826813184F, 0.9828252801F, 0.9829683868F,
  46318. 0.9831106413F, 0.9832520463F, 0.9833926048F, 0.9835323195F,
  46319. 0.9836711932F, 0.9838092288F, 0.9839464291F, 0.9840827969F,
  46320. 0.9842183351F, 0.9843530464F, 0.9844869337F, 0.9846199998F,
  46321. 0.9847522475F, 0.9848836798F, 0.9850142993F, 0.9851441090F,
  46322. 0.9852731117F, 0.9854013101F, 0.9855287073F, 0.9856553058F,
  46323. 0.9857811087F, 0.9859061188F, 0.9860303388F, 0.9861537717F,
  46324. 0.9862764202F, 0.9863982872F, 0.9865193756F, 0.9866396882F,
  46325. 0.9867592277F, 0.9868779972F, 0.9869959993F, 0.9871132370F,
  46326. 0.9872297131F, 0.9873454304F, 0.9874603918F, 0.9875746001F,
  46327. 0.9876880581F, 0.9878007688F, 0.9879127348F, 0.9880239592F,
  46328. 0.9881344447F, 0.9882441941F, 0.9883532104F, 0.9884614962F,
  46329. 0.9885690546F, 0.9886758883F, 0.9887820001F, 0.9888873930F,
  46330. 0.9889920697F, 0.9890960331F, 0.9891992859F, 0.9893018312F,
  46331. 0.9894036716F, 0.9895048100F, 0.9896052493F, 0.9897049923F,
  46332. 0.9898040418F, 0.9899024006F, 0.9900000717F, 0.9900970577F,
  46333. 0.9901933616F, 0.9902889862F, 0.9903839343F, 0.9904782087F,
  46334. 0.9905718122F, 0.9906647477F, 0.9907570180F, 0.9908486259F,
  46335. 0.9909395742F, 0.9910298658F, 0.9911195034F, 0.9912084899F,
  46336. 0.9912968281F, 0.9913845208F, 0.9914715708F, 0.9915579810F,
  46337. 0.9916437540F, 0.9917288928F, 0.9918134001F, 0.9918972788F,
  46338. 0.9919805316F, 0.9920631613F, 0.9921451707F, 0.9922265626F,
  46339. 0.9923073399F, 0.9923875052F, 0.9924670615F, 0.9925460114F,
  46340. 0.9926243577F, 0.9927021033F, 0.9927792508F, 0.9928558032F,
  46341. 0.9929317631F, 0.9930071333F, 0.9930819167F, 0.9931561158F,
  46342. 0.9932297337F, 0.9933027728F, 0.9933752362F, 0.9934471264F,
  46343. 0.9935184462F, 0.9935891985F, 0.9936593859F, 0.9937290112F,
  46344. 0.9937980771F, 0.9938665864F, 0.9939345418F, 0.9940019460F,
  46345. 0.9940688018F, 0.9941351118F, 0.9942008789F, 0.9942661057F,
  46346. 0.9943307950F, 0.9943949494F, 0.9944585717F, 0.9945216645F,
  46347. 0.9945842307F, 0.9946462728F, 0.9947077936F, 0.9947687957F,
  46348. 0.9948292820F, 0.9948892550F, 0.9949487174F, 0.9950076719F,
  46349. 0.9950661212F, 0.9951240679F, 0.9951815148F, 0.9952384645F,
  46350. 0.9952949196F, 0.9953508828F, 0.9954063568F, 0.9954613442F,
  46351. 0.9955158476F, 0.9955698697F, 0.9956234132F, 0.9956764806F,
  46352. 0.9957290746F, 0.9957811978F, 0.9958328528F, 0.9958840423F,
  46353. 0.9959347688F, 0.9959850351F, 0.9960348435F, 0.9960841969F,
  46354. 0.9961330977F, 0.9961815486F, 0.9962295521F, 0.9962771108F,
  46355. 0.9963242274F, 0.9963709043F, 0.9964171441F, 0.9964629494F,
  46356. 0.9965083228F, 0.9965532668F, 0.9965977840F, 0.9966418768F,
  46357. 0.9966855479F, 0.9967287998F, 0.9967716350F, 0.9968140559F,
  46358. 0.9968560653F, 0.9968976655F, 0.9969388591F, 0.9969796485F,
  46359. 0.9970200363F, 0.9970600250F, 0.9970996170F, 0.9971388149F,
  46360. 0.9971776211F, 0.9972160380F, 0.9972540683F, 0.9972917142F,
  46361. 0.9973289783F, 0.9973658631F, 0.9974023709F, 0.9974385042F,
  46362. 0.9974742655F, 0.9975096571F, 0.9975446816F, 0.9975793413F,
  46363. 0.9976136386F, 0.9976475759F, 0.9976811557F, 0.9977143803F,
  46364. 0.9977472521F, 0.9977797736F, 0.9978119470F, 0.9978437748F,
  46365. 0.9978752593F, 0.9979064029F, 0.9979372079F, 0.9979676768F,
  46366. 0.9979978117F, 0.9980276151F, 0.9980570893F, 0.9980862367F,
  46367. 0.9981150595F, 0.9981435600F, 0.9981717406F, 0.9981996035F,
  46368. 0.9982271511F, 0.9982543856F, 0.9982813093F, 0.9983079246F,
  46369. 0.9983342336F, 0.9983602386F, 0.9983859418F, 0.9984113456F,
  46370. 0.9984364522F, 0.9984612638F, 0.9984857825F, 0.9985100108F,
  46371. 0.9985339507F, 0.9985576044F, 0.9985809743F, 0.9986040624F,
  46372. 0.9986268710F, 0.9986494022F, 0.9986716583F, 0.9986936413F,
  46373. 0.9987153535F, 0.9987367969F, 0.9987579738F, 0.9987788864F,
  46374. 0.9987995366F, 0.9988199267F, 0.9988400587F, 0.9988599348F,
  46375. 0.9988795572F, 0.9988989278F, 0.9989180487F, 0.9989369222F,
  46376. 0.9989555501F, 0.9989739347F, 0.9989920780F, 0.9990099820F,
  46377. 0.9990276487F, 0.9990450803F, 0.9990622787F, 0.9990792460F,
  46378. 0.9990959841F, 0.9991124952F, 0.9991287812F, 0.9991448440F,
  46379. 0.9991606858F, 0.9991763084F, 0.9991917139F, 0.9992069042F,
  46380. 0.9992218813F, 0.9992366471F, 0.9992512035F, 0.9992655525F,
  46381. 0.9992796961F, 0.9992936361F, 0.9993073744F, 0.9993209131F,
  46382. 0.9993342538F, 0.9993473987F, 0.9993603494F, 0.9993731080F,
  46383. 0.9993856762F, 0.9993980559F, 0.9994102490F, 0.9994222573F,
  46384. 0.9994340827F, 0.9994457269F, 0.9994571918F, 0.9994684793F,
  46385. 0.9994795910F, 0.9994905288F, 0.9995012945F, 0.9995118898F,
  46386. 0.9995223165F, 0.9995325765F, 0.9995426713F, 0.9995526029F,
  46387. 0.9995623728F, 0.9995719829F, 0.9995814349F, 0.9995907304F,
  46388. 0.9995998712F, 0.9996088590F, 0.9996176954F, 0.9996263821F,
  46389. 0.9996349208F, 0.9996433132F, 0.9996515609F, 0.9996596656F,
  46390. 0.9996676288F, 0.9996754522F, 0.9996831375F, 0.9996906862F,
  46391. 0.9996981000F, 0.9997053804F, 0.9997125290F, 0.9997195474F,
  46392. 0.9997264371F, 0.9997331998F, 0.9997398369F, 0.9997463500F,
  46393. 0.9997527406F, 0.9997590103F, 0.9997651606F, 0.9997711930F,
  46394. 0.9997771089F, 0.9997829098F, 0.9997885973F, 0.9997941728F,
  46395. 0.9997996378F, 0.9998049936F, 0.9998102419F, 0.9998153839F,
  46396. 0.9998204211F, 0.9998253550F, 0.9998301868F, 0.9998349182F,
  46397. 0.9998395503F, 0.9998440847F, 0.9998485226F, 0.9998528654F,
  46398. 0.9998571146F, 0.9998612713F, 0.9998653370F, 0.9998693130F,
  46399. 0.9998732007F, 0.9998770012F, 0.9998807159F, 0.9998843461F,
  46400. 0.9998878931F, 0.9998913581F, 0.9998947424F, 0.9998980473F,
  46401. 0.9999012740F, 0.9999044237F, 0.9999074976F, 0.9999104971F,
  46402. 0.9999134231F, 0.9999162771F, 0.9999190601F, 0.9999217733F,
  46403. 0.9999244179F, 0.9999269950F, 0.9999295058F, 0.9999319515F,
  46404. 0.9999343332F, 0.9999366519F, 0.9999389088F, 0.9999411050F,
  46405. 0.9999432416F, 0.9999453196F, 0.9999473402F, 0.9999493044F,
  46406. 0.9999512132F, 0.9999530677F, 0.9999548690F, 0.9999566180F,
  46407. 0.9999583157F, 0.9999599633F, 0.9999615616F, 0.9999631116F,
  46408. 0.9999646144F, 0.9999660709F, 0.9999674820F, 0.9999688487F,
  46409. 0.9999701719F, 0.9999714526F, 0.9999726917F, 0.9999738900F,
  46410. 0.9999750486F, 0.9999761682F, 0.9999772497F, 0.9999782941F,
  46411. 0.9999793021F, 0.9999802747F, 0.9999812126F, 0.9999821167F,
  46412. 0.9999829878F, 0.9999838268F, 0.9999846343F, 0.9999854113F,
  46413. 0.9999861584F, 0.9999868765F, 0.9999875664F, 0.9999882287F,
  46414. 0.9999888642F, 0.9999894736F, 0.9999900577F, 0.9999906172F,
  46415. 0.9999911528F, 0.9999916651F, 0.9999921548F, 0.9999926227F,
  46416. 0.9999930693F, 0.9999934954F, 0.9999939015F, 0.9999942883F,
  46417. 0.9999946564F, 0.9999950064F, 0.9999953390F, 0.9999956547F,
  46418. 0.9999959541F, 0.9999962377F, 0.9999965062F, 0.9999967601F,
  46419. 0.9999969998F, 0.9999972260F, 0.9999974392F, 0.9999976399F,
  46420. 0.9999978285F, 0.9999980056F, 0.9999981716F, 0.9999983271F,
  46421. 0.9999984724F, 0.9999986081F, 0.9999987345F, 0.9999988521F,
  46422. 0.9999989613F, 0.9999990625F, 0.9999991562F, 0.9999992426F,
  46423. 0.9999993223F, 0.9999993954F, 0.9999994625F, 0.9999995239F,
  46424. 0.9999995798F, 0.9999996307F, 0.9999996768F, 0.9999997184F,
  46425. 0.9999997559F, 0.9999997895F, 0.9999998195F, 0.9999998462F,
  46426. 0.9999998698F, 0.9999998906F, 0.9999999088F, 0.9999999246F,
  46427. 0.9999999383F, 0.9999999500F, 0.9999999600F, 0.9999999684F,
  46428. 0.9999999754F, 0.9999999811F, 0.9999999858F, 0.9999999896F,
  46429. 0.9999999925F, 0.9999999948F, 0.9999999965F, 0.9999999978F,
  46430. 0.9999999986F, 0.9999999992F, 0.9999999996F, 0.9999999998F,
  46431. 0.9999999999F, 1.0000000000F, 1.0000000000F, 1.0000000000F,
  46432. };
  46433. static float vwin8192[4096] = {
  46434. 0.0000000578F, 0.0000005198F, 0.0000014438F, 0.0000028299F,
  46435. 0.0000046780F, 0.0000069882F, 0.0000097604F, 0.0000129945F,
  46436. 0.0000166908F, 0.0000208490F, 0.0000254692F, 0.0000305515F,
  46437. 0.0000360958F, 0.0000421021F, 0.0000485704F, 0.0000555006F,
  46438. 0.0000628929F, 0.0000707472F, 0.0000790635F, 0.0000878417F,
  46439. 0.0000970820F, 0.0001067842F, 0.0001169483F, 0.0001275744F,
  46440. 0.0001386625F, 0.0001502126F, 0.0001622245F, 0.0001746984F,
  46441. 0.0001876343F, 0.0002010320F, 0.0002148917F, 0.0002292132F,
  46442. 0.0002439967F, 0.0002592421F, 0.0002749493F, 0.0002911184F,
  46443. 0.0003077493F, 0.0003248421F, 0.0003423967F, 0.0003604132F,
  46444. 0.0003788915F, 0.0003978316F, 0.0004172335F, 0.0004370971F,
  46445. 0.0004574226F, 0.0004782098F, 0.0004994587F, 0.0005211694F,
  46446. 0.0005433418F, 0.0005659759F, 0.0005890717F, 0.0006126292F,
  46447. 0.0006366484F, 0.0006611292F, 0.0006860716F, 0.0007114757F,
  46448. 0.0007373414F, 0.0007636687F, 0.0007904576F, 0.0008177080F,
  46449. 0.0008454200F, 0.0008735935F, 0.0009022285F, 0.0009313250F,
  46450. 0.0009608830F, 0.0009909025F, 0.0010213834F, 0.0010523257F,
  46451. 0.0010837295F, 0.0011155946F, 0.0011479211F, 0.0011807090F,
  46452. 0.0012139582F, 0.0012476687F, 0.0012818405F, 0.0013164736F,
  46453. 0.0013515679F, 0.0013871235F, 0.0014231402F, 0.0014596182F,
  46454. 0.0014965573F, 0.0015339576F, 0.0015718190F, 0.0016101415F,
  46455. 0.0016489251F, 0.0016881698F, 0.0017278754F, 0.0017680421F,
  46456. 0.0018086698F, 0.0018497584F, 0.0018913080F, 0.0019333185F,
  46457. 0.0019757898F, 0.0020187221F, 0.0020621151F, 0.0021059690F,
  46458. 0.0021502837F, 0.0021950591F, 0.0022402953F, 0.0022859921F,
  46459. 0.0023321497F, 0.0023787679F, 0.0024258467F, 0.0024733861F,
  46460. 0.0025213861F, 0.0025698466F, 0.0026187676F, 0.0026681491F,
  46461. 0.0027179911F, 0.0027682935F, 0.0028190562F, 0.0028702794F,
  46462. 0.0029219628F, 0.0029741066F, 0.0030267107F, 0.0030797749F,
  46463. 0.0031332994F, 0.0031872841F, 0.0032417289F, 0.0032966338F,
  46464. 0.0033519988F, 0.0034078238F, 0.0034641089F, 0.0035208539F,
  46465. 0.0035780589F, 0.0036357237F, 0.0036938485F, 0.0037524331F,
  46466. 0.0038114775F, 0.0038709817F, 0.0039309456F, 0.0039913692F,
  46467. 0.0040522524F, 0.0041135953F, 0.0041753978F, 0.0042376599F,
  46468. 0.0043003814F, 0.0043635624F, 0.0044272029F, 0.0044913028F,
  46469. 0.0045558620F, 0.0046208806F, 0.0046863585F, 0.0047522955F,
  46470. 0.0048186919F, 0.0048855473F, 0.0049528619F, 0.0050206356F,
  46471. 0.0050888684F, 0.0051575601F, 0.0052267108F, 0.0052963204F,
  46472. 0.0053663890F, 0.0054369163F, 0.0055079025F, 0.0055793474F,
  46473. 0.0056512510F, 0.0057236133F, 0.0057964342F, 0.0058697137F,
  46474. 0.0059434517F, 0.0060176482F, 0.0060923032F, 0.0061674166F,
  46475. 0.0062429883F, 0.0063190183F, 0.0063955066F, 0.0064724532F,
  46476. 0.0065498579F, 0.0066277207F, 0.0067060416F, 0.0067848205F,
  46477. 0.0068640575F, 0.0069437523F, 0.0070239051F, 0.0071045157F,
  46478. 0.0071855840F, 0.0072671102F, 0.0073490940F, 0.0074315355F,
  46479. 0.0075144345F, 0.0075977911F, 0.0076816052F, 0.0077658768F,
  46480. 0.0078506057F, 0.0079357920F, 0.0080214355F, 0.0081075363F,
  46481. 0.0081940943F, 0.0082811094F, 0.0083685816F, 0.0084565108F,
  46482. 0.0085448970F, 0.0086337401F, 0.0087230401F, 0.0088127969F,
  46483. 0.0089030104F, 0.0089936807F, 0.0090848076F, 0.0091763911F,
  46484. 0.0092684311F, 0.0093609276F, 0.0094538805F, 0.0095472898F,
  46485. 0.0096411554F, 0.0097354772F, 0.0098302552F, 0.0099254894F,
  46486. 0.0100211796F, 0.0101173259F, 0.0102139281F, 0.0103109863F,
  46487. 0.0104085002F, 0.0105064700F, 0.0106048955F, 0.0107037766F,
  46488. 0.0108031133F, 0.0109029056F, 0.0110031534F, 0.0111038565F,
  46489. 0.0112050151F, 0.0113066289F, 0.0114086980F, 0.0115112222F,
  46490. 0.0116142015F, 0.0117176359F, 0.0118215252F, 0.0119258695F,
  46491. 0.0120306686F, 0.0121359225F, 0.0122416312F, 0.0123477944F,
  46492. 0.0124544123F, 0.0125614847F, 0.0126690116F, 0.0127769928F,
  46493. 0.0128854284F, 0.0129943182F, 0.0131036623F, 0.0132134604F,
  46494. 0.0133237126F, 0.0134344188F, 0.0135455790F, 0.0136571929F,
  46495. 0.0137692607F, 0.0138817821F, 0.0139947572F, 0.0141081859F,
  46496. 0.0142220681F, 0.0143364037F, 0.0144511927F, 0.0145664350F,
  46497. 0.0146821304F, 0.0147982791F, 0.0149148808F, 0.0150319355F,
  46498. 0.0151494431F, 0.0152674036F, 0.0153858168F, 0.0155046828F,
  46499. 0.0156240014F, 0.0157437726F, 0.0158639962F, 0.0159846723F,
  46500. 0.0161058007F, 0.0162273814F, 0.0163494142F, 0.0164718991F,
  46501. 0.0165948361F, 0.0167182250F, 0.0168420658F, 0.0169663584F,
  46502. 0.0170911027F, 0.0172162987F, 0.0173419462F, 0.0174680452F,
  46503. 0.0175945956F, 0.0177215974F, 0.0178490504F, 0.0179769545F,
  46504. 0.0181053098F, 0.0182341160F, 0.0183633732F, 0.0184930812F,
  46505. 0.0186232399F, 0.0187538494F, 0.0188849094F, 0.0190164200F,
  46506. 0.0191483809F, 0.0192807923F, 0.0194136539F, 0.0195469656F,
  46507. 0.0196807275F, 0.0198149394F, 0.0199496012F, 0.0200847128F,
  46508. 0.0202202742F, 0.0203562853F, 0.0204927460F, 0.0206296561F,
  46509. 0.0207670157F, 0.0209048245F, 0.0210430826F, 0.0211817899F,
  46510. 0.0213209462F, 0.0214605515F, 0.0216006057F, 0.0217411086F,
  46511. 0.0218820603F, 0.0220234605F, 0.0221653093F, 0.0223076066F,
  46512. 0.0224503521F, 0.0225935459F, 0.0227371879F, 0.0228812779F,
  46513. 0.0230258160F, 0.0231708018F, 0.0233162355F, 0.0234621169F,
  46514. 0.0236084459F, 0.0237552224F, 0.0239024462F, 0.0240501175F,
  46515. 0.0241982359F, 0.0243468015F, 0.0244958141F, 0.0246452736F,
  46516. 0.0247951800F, 0.0249455331F, 0.0250963329F, 0.0252475792F,
  46517. 0.0253992720F, 0.0255514111F, 0.0257039965F, 0.0258570281F,
  46518. 0.0260105057F, 0.0261644293F, 0.0263187987F, 0.0264736139F,
  46519. 0.0266288747F, 0.0267845811F, 0.0269407330F, 0.0270973302F,
  46520. 0.0272543727F, 0.0274118604F, 0.0275697930F, 0.0277281707F,
  46521. 0.0278869932F, 0.0280462604F, 0.0282059723F, 0.0283661287F,
  46522. 0.0285267295F, 0.0286877747F, 0.0288492641F, 0.0290111976F,
  46523. 0.0291735751F, 0.0293363965F, 0.0294996617F, 0.0296633706F,
  46524. 0.0298275231F, 0.0299921190F, 0.0301571583F, 0.0303226409F,
  46525. 0.0304885667F, 0.0306549354F, 0.0308217472F, 0.0309890017F,
  46526. 0.0311566989F, 0.0313248388F, 0.0314934211F, 0.0316624459F,
  46527. 0.0318319128F, 0.0320018220F, 0.0321721732F, 0.0323429663F,
  46528. 0.0325142013F, 0.0326858779F, 0.0328579962F, 0.0330305559F,
  46529. 0.0332035570F, 0.0333769994F, 0.0335508829F, 0.0337252074F,
  46530. 0.0338999728F, 0.0340751790F, 0.0342508259F, 0.0344269134F,
  46531. 0.0346034412F, 0.0347804094F, 0.0349578178F, 0.0351356663F,
  46532. 0.0353139548F, 0.0354926831F, 0.0356718511F, 0.0358514588F,
  46533. 0.0360315059F, 0.0362119924F, 0.0363929182F, 0.0365742831F,
  46534. 0.0367560870F, 0.0369383297F, 0.0371210113F, 0.0373041315F,
  46535. 0.0374876902F, 0.0376716873F, 0.0378561226F, 0.0380409961F,
  46536. 0.0382263077F, 0.0384120571F, 0.0385982443F, 0.0387848691F,
  46537. 0.0389719315F, 0.0391594313F, 0.0393473683F, 0.0395357425F,
  46538. 0.0397245537F, 0.0399138017F, 0.0401034866F, 0.0402936080F,
  46539. 0.0404841660F, 0.0406751603F, 0.0408665909F, 0.0410584576F,
  46540. 0.0412507603F, 0.0414434988F, 0.0416366731F, 0.0418302829F,
  46541. 0.0420243282F, 0.0422188088F, 0.0424137246F, 0.0426090755F,
  46542. 0.0428048613F, 0.0430010819F, 0.0431977371F, 0.0433948269F,
  46543. 0.0435923511F, 0.0437903095F, 0.0439887020F, 0.0441875285F,
  46544. 0.0443867889F, 0.0445864830F, 0.0447866106F, 0.0449871717F,
  46545. 0.0451881661F, 0.0453895936F, 0.0455914542F, 0.0457937477F,
  46546. 0.0459964738F, 0.0461996326F, 0.0464032239F, 0.0466072475F,
  46547. 0.0468117032F, 0.0470165910F, 0.0472219107F, 0.0474276622F,
  46548. 0.0476338452F, 0.0478404597F, 0.0480475056F, 0.0482549827F,
  46549. 0.0484628907F, 0.0486712297F, 0.0488799994F, 0.0490891998F,
  46550. 0.0492988306F, 0.0495088917F, 0.0497193830F, 0.0499303043F,
  46551. 0.0501416554F, 0.0503534363F, 0.0505656468F, 0.0507782867F,
  46552. 0.0509913559F, 0.0512048542F, 0.0514187815F, 0.0516331376F,
  46553. 0.0518479225F, 0.0520631358F, 0.0522787775F, 0.0524948475F,
  46554. 0.0527113455F, 0.0529282715F, 0.0531456252F, 0.0533634066F,
  46555. 0.0535816154F, 0.0538002515F, 0.0540193148F, 0.0542388051F,
  46556. 0.0544587222F, 0.0546790660F, 0.0548998364F, 0.0551210331F,
  46557. 0.0553426561F, 0.0555647051F, 0.0557871801F, 0.0560100807F,
  46558. 0.0562334070F, 0.0564571587F, 0.0566813357F, 0.0569059378F,
  46559. 0.0571309649F, 0.0573564168F, 0.0575822933F, 0.0578085942F,
  46560. 0.0580353195F, 0.0582624689F, 0.0584900423F, 0.0587180396F,
  46561. 0.0589464605F, 0.0591753049F, 0.0594045726F, 0.0596342635F,
  46562. 0.0598643774F, 0.0600949141F, 0.0603258735F, 0.0605572555F,
  46563. 0.0607890597F, 0.0610212862F, 0.0612539346F, 0.0614870049F,
  46564. 0.0617204968F, 0.0619544103F, 0.0621887451F, 0.0624235010F,
  46565. 0.0626586780F, 0.0628942758F, 0.0631302942F, 0.0633667331F,
  46566. 0.0636035923F, 0.0638408717F, 0.0640785710F, 0.0643166901F,
  46567. 0.0645552288F, 0.0647941870F, 0.0650335645F, 0.0652733610F,
  46568. 0.0655135765F, 0.0657542108F, 0.0659952636F, 0.0662367348F,
  46569. 0.0664786242F, 0.0667209316F, 0.0669636570F, 0.0672068000F,
  46570. 0.0674503605F, 0.0676943384F, 0.0679387334F, 0.0681835454F,
  46571. 0.0684287742F, 0.0686744196F, 0.0689204814F, 0.0691669595F,
  46572. 0.0694138536F, 0.0696611637F, 0.0699088894F, 0.0701570307F,
  46573. 0.0704055873F, 0.0706545590F, 0.0709039458F, 0.0711537473F,
  46574. 0.0714039634F, 0.0716545939F, 0.0719056387F, 0.0721570975F,
  46575. 0.0724089702F, 0.0726612565F, 0.0729139563F, 0.0731670694F,
  46576. 0.0734205956F, 0.0736745347F, 0.0739288866F, 0.0741836510F,
  46577. 0.0744388277F, 0.0746944166F, 0.0749504175F, 0.0752068301F,
  46578. 0.0754636543F, 0.0757208899F, 0.0759785367F, 0.0762365946F,
  46579. 0.0764950632F, 0.0767539424F, 0.0770132320F, 0.0772729319F,
  46580. 0.0775330418F, 0.0777935616F, 0.0780544909F, 0.0783158298F,
  46581. 0.0785775778F, 0.0788397349F, 0.0791023009F, 0.0793652755F,
  46582. 0.0796286585F, 0.0798924498F, 0.0801566492F, 0.0804212564F,
  46583. 0.0806862712F, 0.0809516935F, 0.0812175231F, 0.0814837597F,
  46584. 0.0817504031F, 0.0820174532F, 0.0822849097F, 0.0825527724F,
  46585. 0.0828210412F, 0.0830897158F, 0.0833587960F, 0.0836282816F,
  46586. 0.0838981724F, 0.0841684682F, 0.0844391688F, 0.0847102740F,
  46587. 0.0849817835F, 0.0852536973F, 0.0855260150F, 0.0857987364F,
  46588. 0.0860718614F, 0.0863453897F, 0.0866193211F, 0.0868936554F,
  46589. 0.0871683924F, 0.0874435319F, 0.0877190737F, 0.0879950175F,
  46590. 0.0882713632F, 0.0885481105F, 0.0888252592F, 0.0891028091F,
  46591. 0.0893807600F, 0.0896591117F, 0.0899378639F, 0.0902170165F,
  46592. 0.0904965692F, 0.0907765218F, 0.0910568740F, 0.0913376258F,
  46593. 0.0916187767F, 0.0919003268F, 0.0921822756F, 0.0924646230F,
  46594. 0.0927473687F, 0.0930305126F, 0.0933140545F, 0.0935979940F,
  46595. 0.0938823310F, 0.0941670653F, 0.0944521966F, 0.0947377247F,
  46596. 0.0950236494F, 0.0953099704F, 0.0955966876F, 0.0958838007F,
  46597. 0.0961713094F, 0.0964592136F, 0.0967475131F, 0.0970362075F,
  46598. 0.0973252967F, 0.0976147805F, 0.0979046585F, 0.0981949307F,
  46599. 0.0984855967F, 0.0987766563F, 0.0990681093F, 0.0993599555F,
  46600. 0.0996521945F, 0.0999448263F, 0.1002378506F, 0.1005312671F,
  46601. 0.1008250755F, 0.1011192757F, 0.1014138675F, 0.1017088505F,
  46602. 0.1020042246F, 0.1022999895F, 0.1025961450F, 0.1028926909F,
  46603. 0.1031896268F, 0.1034869526F, 0.1037846680F, 0.1040827729F,
  46604. 0.1043812668F, 0.1046801497F, 0.1049794213F, 0.1052790813F,
  46605. 0.1055791294F, 0.1058795656F, 0.1061803894F, 0.1064816006F,
  46606. 0.1067831991F, 0.1070851846F, 0.1073875568F, 0.1076903155F,
  46607. 0.1079934604F, 0.1082969913F, 0.1086009079F, 0.1089052101F,
  46608. 0.1092098975F, 0.1095149699F, 0.1098204270F, 0.1101262687F,
  46609. 0.1104324946F, 0.1107391045F, 0.1110460982F, 0.1113534754F,
  46610. 0.1116612359F, 0.1119693793F, 0.1122779055F, 0.1125868142F,
  46611. 0.1128961052F, 0.1132057781F, 0.1135158328F, 0.1138262690F,
  46612. 0.1141370863F, 0.1144482847F, 0.1147598638F, 0.1150718233F,
  46613. 0.1153841631F, 0.1156968828F, 0.1160099822F, 0.1163234610F,
  46614. 0.1166373190F, 0.1169515559F, 0.1172661714F, 0.1175811654F,
  46615. 0.1178965374F, 0.1182122874F, 0.1185284149F, 0.1188449198F,
  46616. 0.1191618018F, 0.1194790606F, 0.1197966960F, 0.1201147076F,
  46617. 0.1204330953F, 0.1207518587F, 0.1210709976F, 0.1213905118F,
  46618. 0.1217104009F, 0.1220306647F, 0.1223513029F, 0.1226723153F,
  46619. 0.1229937016F, 0.1233154615F, 0.1236375948F, 0.1239601011F,
  46620. 0.1242829803F, 0.1246062319F, 0.1249298559F, 0.1252538518F,
  46621. 0.1255782195F, 0.1259029586F, 0.1262280689F, 0.1265535501F,
  46622. 0.1268794019F, 0.1272056241F, 0.1275322163F, 0.1278591784F,
  46623. 0.1281865099F, 0.1285142108F, 0.1288422805F, 0.1291707190F,
  46624. 0.1294995259F, 0.1298287009F, 0.1301582437F, 0.1304881542F,
  46625. 0.1308184319F, 0.1311490766F, 0.1314800881F, 0.1318114660F,
  46626. 0.1321432100F, 0.1324753200F, 0.1328077955F, 0.1331406364F,
  46627. 0.1334738422F, 0.1338074129F, 0.1341413479F, 0.1344756472F,
  46628. 0.1348103103F, 0.1351453370F, 0.1354807270F, 0.1358164801F,
  46629. 0.1361525959F, 0.1364890741F, 0.1368259145F, 0.1371631167F,
  46630. 0.1375006805F, 0.1378386056F, 0.1381768917F, 0.1385155384F,
  46631. 0.1388545456F, 0.1391939129F, 0.1395336400F, 0.1398737266F,
  46632. 0.1402141724F, 0.1405549772F, 0.1408961406F, 0.1412376623F,
  46633. 0.1415795421F, 0.1419217797F, 0.1422643746F, 0.1426073268F,
  46634. 0.1429506358F, 0.1432943013F, 0.1436383231F, 0.1439827008F,
  46635. 0.1443274342F, 0.1446725229F, 0.1450179667F, 0.1453637652F,
  46636. 0.1457099181F, 0.1460564252F, 0.1464032861F, 0.1467505006F,
  46637. 0.1470980682F, 0.1474459888F, 0.1477942620F, 0.1481428875F,
  46638. 0.1484918651F, 0.1488411942F, 0.1491908748F, 0.1495409065F,
  46639. 0.1498912889F, 0.1502420218F, 0.1505931048F, 0.1509445376F,
  46640. 0.1512963200F, 0.1516484516F, 0.1520009321F, 0.1523537612F,
  46641. 0.1527069385F, 0.1530604638F, 0.1534143368F, 0.1537685571F,
  46642. 0.1541231244F, 0.1544780384F, 0.1548332987F, 0.1551889052F,
  46643. 0.1555448574F, 0.1559011550F, 0.1562577978F, 0.1566147853F,
  46644. 0.1569721173F, 0.1573297935F, 0.1576878135F, 0.1580461771F,
  46645. 0.1584048838F, 0.1587639334F, 0.1591233255F, 0.1594830599F,
  46646. 0.1598431361F, 0.1602035540F, 0.1605643131F, 0.1609254131F,
  46647. 0.1612868537F, 0.1616486346F, 0.1620107555F, 0.1623732160F,
  46648. 0.1627360158F, 0.1630991545F, 0.1634626319F, 0.1638264476F,
  46649. 0.1641906013F, 0.1645550926F, 0.1649199212F, 0.1652850869F,
  46650. 0.1656505892F, 0.1660164278F, 0.1663826024F, 0.1667491127F,
  46651. 0.1671159583F, 0.1674831388F, 0.1678506541F, 0.1682185036F,
  46652. 0.1685866872F, 0.1689552044F, 0.1693240549F, 0.1696932384F,
  46653. 0.1700627545F, 0.1704326029F, 0.1708027833F, 0.1711732952F,
  46654. 0.1715441385F, 0.1719153127F, 0.1722868175F, 0.1726586526F,
  46655. 0.1730308176F, 0.1734033121F, 0.1737761359F, 0.1741492886F,
  46656. 0.1745227698F, 0.1748965792F, 0.1752707164F, 0.1756451812F,
  46657. 0.1760199731F, 0.1763950918F, 0.1767705370F, 0.1771463083F,
  46658. 0.1775224054F, 0.1778988279F, 0.1782755754F, 0.1786526477F,
  46659. 0.1790300444F, 0.1794077651F, 0.1797858094F, 0.1801641771F,
  46660. 0.1805428677F, 0.1809218810F, 0.1813012165F, 0.1816808739F,
  46661. 0.1820608528F, 0.1824411530F, 0.1828217739F, 0.1832027154F,
  46662. 0.1835839770F, 0.1839655584F, 0.1843474592F, 0.1847296790F,
  46663. 0.1851122175F, 0.1854950744F, 0.1858782492F, 0.1862617417F,
  46664. 0.1866455514F, 0.1870296780F, 0.1874141211F, 0.1877988804F,
  46665. 0.1881839555F, 0.1885693461F, 0.1889550517F, 0.1893410721F,
  46666. 0.1897274068F, 0.1901140555F, 0.1905010178F, 0.1908882933F,
  46667. 0.1912758818F, 0.1916637828F, 0.1920519959F, 0.1924405208F,
  46668. 0.1928293571F, 0.1932185044F, 0.1936079625F, 0.1939977308F,
  46669. 0.1943878091F, 0.1947781969F, 0.1951688939F, 0.1955598998F,
  46670. 0.1959512141F, 0.1963428364F, 0.1967347665F, 0.1971270038F,
  46671. 0.1975195482F, 0.1979123990F, 0.1983055561F, 0.1986990190F,
  46672. 0.1990927873F, 0.1994868607F, 0.1998812388F, 0.2002759212F,
  46673. 0.2006709075F, 0.2010661974F, 0.2014617904F, 0.2018576862F,
  46674. 0.2022538844F, 0.2026503847F, 0.2030471865F, 0.2034442897F,
  46675. 0.2038416937F, 0.2042393982F, 0.2046374028F, 0.2050357071F,
  46676. 0.2054343107F, 0.2058332133F, 0.2062324145F, 0.2066319138F,
  46677. 0.2070317110F, 0.2074318055F, 0.2078321970F, 0.2082328852F,
  46678. 0.2086338696F, 0.2090351498F, 0.2094367255F, 0.2098385962F,
  46679. 0.2102407617F, 0.2106432213F, 0.2110459749F, 0.2114490220F,
  46680. 0.2118523621F, 0.2122559950F, 0.2126599202F, 0.2130641373F,
  46681. 0.2134686459F, 0.2138734456F, 0.2142785361F, 0.2146839168F,
  46682. 0.2150895875F, 0.2154955478F, 0.2159017972F, 0.2163083353F,
  46683. 0.2167151617F, 0.2171222761F, 0.2175296780F, 0.2179373670F,
  46684. 0.2183453428F, 0.2187536049F, 0.2191621529F, 0.2195709864F,
  46685. 0.2199801051F, 0.2203895085F, 0.2207991961F, 0.2212091677F,
  46686. 0.2216194228F, 0.2220299610F, 0.2224407818F, 0.2228518850F,
  46687. 0.2232632699F, 0.2236749364F, 0.2240868839F, 0.2244991121F,
  46688. 0.2249116204F, 0.2253244086F, 0.2257374763F, 0.2261508229F,
  46689. 0.2265644481F, 0.2269783514F, 0.2273925326F, 0.2278069911F,
  46690. 0.2282217265F, 0.2286367384F, 0.2290520265F, 0.2294675902F,
  46691. 0.2298834292F, 0.2302995431F, 0.2307159314F, 0.2311325937F,
  46692. 0.2315495297F, 0.2319667388F, 0.2323842207F, 0.2328019749F,
  46693. 0.2332200011F, 0.2336382988F, 0.2340568675F, 0.2344757070F,
  46694. 0.2348948166F, 0.2353141961F, 0.2357338450F, 0.2361537629F,
  46695. 0.2365739493F, 0.2369944038F, 0.2374151261F, 0.2378361156F,
  46696. 0.2382573720F, 0.2386788948F, 0.2391006836F, 0.2395227380F,
  46697. 0.2399450575F, 0.2403676417F, 0.2407904902F, 0.2412136026F,
  46698. 0.2416369783F, 0.2420606171F, 0.2424845185F, 0.2429086820F,
  46699. 0.2433331072F, 0.2437577936F, 0.2441827409F, 0.2446079486F,
  46700. 0.2450334163F, 0.2454591435F, 0.2458851298F, 0.2463113747F,
  46701. 0.2467378779F, 0.2471646389F, 0.2475916573F, 0.2480189325F,
  46702. 0.2484464643F, 0.2488742521F, 0.2493022955F, 0.2497305940F,
  46703. 0.2501591473F, 0.2505879549F, 0.2510170163F, 0.2514463311F,
  46704. 0.2518758989F, 0.2523057193F, 0.2527357916F, 0.2531661157F,
  46705. 0.2535966909F, 0.2540275169F, 0.2544585931F, 0.2548899193F,
  46706. 0.2553214948F, 0.2557533193F, 0.2561853924F, 0.2566177135F,
  46707. 0.2570502822F, 0.2574830981F, 0.2579161608F, 0.2583494697F,
  46708. 0.2587830245F, 0.2592168246F, 0.2596508697F, 0.2600851593F,
  46709. 0.2605196929F, 0.2609544701F, 0.2613894904F, 0.2618247534F,
  46710. 0.2622602586F, 0.2626960055F, 0.2631319938F, 0.2635682230F,
  46711. 0.2640046925F, 0.2644414021F, 0.2648783511F, 0.2653155391F,
  46712. 0.2657529657F, 0.2661906305F, 0.2666285329F, 0.2670666725F,
  46713. 0.2675050489F, 0.2679436616F, 0.2683825101F, 0.2688215940F,
  46714. 0.2692609127F, 0.2697004660F, 0.2701402532F, 0.2705802739F,
  46715. 0.2710205278F, 0.2714610142F, 0.2719017327F, 0.2723426830F,
  46716. 0.2727838644F, 0.2732252766F, 0.2736669191F, 0.2741087914F,
  46717. 0.2745508930F, 0.2749932235F, 0.2754357824F, 0.2758785693F,
  46718. 0.2763215837F, 0.2767648251F, 0.2772082930F, 0.2776519870F,
  46719. 0.2780959066F, 0.2785400513F, 0.2789844207F, 0.2794290143F,
  46720. 0.2798738316F, 0.2803188722F, 0.2807641355F, 0.2812096211F,
  46721. 0.2816553286F, 0.2821012574F, 0.2825474071F, 0.2829937773F,
  46722. 0.2834403673F, 0.2838871768F, 0.2843342053F, 0.2847814523F,
  46723. 0.2852289174F, 0.2856765999F, 0.2861244996F, 0.2865726159F,
  46724. 0.2870209482F, 0.2874694962F, 0.2879182594F, 0.2883672372F,
  46725. 0.2888164293F, 0.2892658350F, 0.2897154540F, 0.2901652858F,
  46726. 0.2906153298F, 0.2910655856F, 0.2915160527F, 0.2919667306F,
  46727. 0.2924176189F, 0.2928687171F, 0.2933200246F, 0.2937715409F,
  46728. 0.2942232657F, 0.2946751984F, 0.2951273386F, 0.2955796856F,
  46729. 0.2960322391F, 0.2964849986F, 0.2969379636F, 0.2973911335F,
  46730. 0.2978445080F, 0.2982980864F, 0.2987518684F, 0.2992058534F,
  46731. 0.2996600409F, 0.3001144305F, 0.3005690217F, 0.3010238139F,
  46732. 0.3014788067F, 0.3019339995F, 0.3023893920F, 0.3028449835F,
  46733. 0.3033007736F, 0.3037567618F, 0.3042129477F, 0.3046693306F,
  46734. 0.3051259102F, 0.3055826859F, 0.3060396572F, 0.3064968236F,
  46735. 0.3069541847F, 0.3074117399F, 0.3078694887F, 0.3083274307F,
  46736. 0.3087855653F, 0.3092438920F, 0.3097024104F, 0.3101611199F,
  46737. 0.3106200200F, 0.3110791103F, 0.3115383902F, 0.3119978592F,
  46738. 0.3124575169F, 0.3129173627F, 0.3133773961F, 0.3138376166F,
  46739. 0.3142980238F, 0.3147586170F, 0.3152193959F, 0.3156803598F,
  46740. 0.3161415084F, 0.3166028410F, 0.3170643573F, 0.3175260566F,
  46741. 0.3179879384F, 0.3184500023F, 0.3189122478F, 0.3193746743F,
  46742. 0.3198372814F, 0.3203000685F, 0.3207630351F, 0.3212261807F,
  46743. 0.3216895048F, 0.3221530069F, 0.3226166865F, 0.3230805430F,
  46744. 0.3235445760F, 0.3240087849F, 0.3244731693F, 0.3249377285F,
  46745. 0.3254024622F, 0.3258673698F, 0.3263324507F, 0.3267977045F,
  46746. 0.3272631306F, 0.3277287286F, 0.3281944978F, 0.3286604379F,
  46747. 0.3291265482F, 0.3295928284F, 0.3300592777F, 0.3305258958F,
  46748. 0.3309926821F, 0.3314596361F, 0.3319267573F, 0.3323940451F,
  46749. 0.3328614990F, 0.3333291186F, 0.3337969033F, 0.3342648525F,
  46750. 0.3347329658F, 0.3352012427F, 0.3356696825F, 0.3361382849F,
  46751. 0.3366070492F, 0.3370759749F, 0.3375450616F, 0.3380143087F,
  46752. 0.3384837156F, 0.3389532819F, 0.3394230071F, 0.3398928905F,
  46753. 0.3403629317F, 0.3408331302F, 0.3413034854F, 0.3417739967F,
  46754. 0.3422446638F, 0.3427154860F, 0.3431864628F, 0.3436575938F,
  46755. 0.3441288782F, 0.3446003158F, 0.3450719058F, 0.3455436478F,
  46756. 0.3460155412F, 0.3464875856F, 0.3469597804F, 0.3474321250F,
  46757. 0.3479046189F, 0.3483772617F, 0.3488500527F, 0.3493229914F,
  46758. 0.3497960774F, 0.3502693100F, 0.3507426887F, 0.3512162131F,
  46759. 0.3516898825F, 0.3521636965F, 0.3526376545F, 0.3531117559F,
  46760. 0.3535860003F, 0.3540603870F, 0.3545349157F, 0.3550095856F,
  46761. 0.3554843964F, 0.3559593474F, 0.3564344381F, 0.3569096680F,
  46762. 0.3573850366F, 0.3578605432F, 0.3583361875F, 0.3588119687F,
  46763. 0.3592878865F, 0.3597639402F, 0.3602401293F, 0.3607164533F,
  46764. 0.3611929117F, 0.3616695038F, 0.3621462292F, 0.3626230873F,
  46765. 0.3631000776F, 0.3635771995F, 0.3640544525F, 0.3645318360F,
  46766. 0.3650093496F, 0.3654869926F, 0.3659647645F, 0.3664426648F,
  46767. 0.3669206930F, 0.3673988484F, 0.3678771306F, 0.3683555390F,
  46768. 0.3688340731F, 0.3693127322F, 0.3697915160F, 0.3702704237F,
  46769. 0.3707494549F, 0.3712286091F, 0.3717078857F, 0.3721872840F,
  46770. 0.3726668037F, 0.3731464441F, 0.3736262047F, 0.3741060850F,
  46771. 0.3745860843F, 0.3750662023F, 0.3755464382F, 0.3760267915F,
  46772. 0.3765072618F, 0.3769878484F, 0.3774685509F, 0.3779493686F,
  46773. 0.3784303010F, 0.3789113475F, 0.3793925076F, 0.3798737809F,
  46774. 0.3803551666F, 0.3808366642F, 0.3813182733F, 0.3817999932F,
  46775. 0.3822818234F, 0.3827637633F, 0.3832458124F, 0.3837279702F,
  46776. 0.3842102360F, 0.3846926093F, 0.3851750897F, 0.3856576764F,
  46777. 0.3861403690F, 0.3866231670F, 0.3871060696F, 0.3875890765F,
  46778. 0.3880721870F, 0.3885554007F, 0.3890387168F, 0.3895221349F,
  46779. 0.3900056544F, 0.3904892748F, 0.3909729955F, 0.3914568160F,
  46780. 0.3919407356F, 0.3924247539F, 0.3929088702F, 0.3933930841F,
  46781. 0.3938773949F, 0.3943618021F, 0.3948463052F, 0.3953309035F,
  46782. 0.3958155966F, 0.3963003838F, 0.3967852646F, 0.3972702385F,
  46783. 0.3977553048F, 0.3982404631F, 0.3987257127F, 0.3992110531F,
  46784. 0.3996964838F, 0.4001820041F, 0.4006676136F, 0.4011533116F,
  46785. 0.4016390976F, 0.4021249710F, 0.4026109313F, 0.4030969779F,
  46786. 0.4035831102F, 0.4040693277F, 0.4045556299F, 0.4050420160F,
  46787. 0.4055284857F, 0.4060150383F, 0.4065016732F, 0.4069883899F,
  46788. 0.4074751879F, 0.4079620665F, 0.4084490252F, 0.4089360635F,
  46789. 0.4094231807F, 0.4099103763F, 0.4103976498F, 0.4108850005F,
  46790. 0.4113724280F, 0.4118599315F, 0.4123475107F, 0.4128351648F,
  46791. 0.4133228934F, 0.4138106959F, 0.4142985716F, 0.4147865201F,
  46792. 0.4152745408F, 0.4157626330F, 0.4162507963F, 0.4167390301F,
  46793. 0.4172273337F, 0.4177157067F, 0.4182041484F, 0.4186926583F,
  46794. 0.4191812359F, 0.4196698805F, 0.4201585915F, 0.4206473685F,
  46795. 0.4211362108F, 0.4216251179F, 0.4221140892F, 0.4226031241F,
  46796. 0.4230922221F, 0.4235813826F, 0.4240706050F, 0.4245598887F,
  46797. 0.4250492332F, 0.4255386379F, 0.4260281022F, 0.4265176256F,
  46798. 0.4270072075F, 0.4274968473F, 0.4279865445F, 0.4284762984F,
  46799. 0.4289661086F, 0.4294559743F, 0.4299458951F, 0.4304358704F,
  46800. 0.4309258996F, 0.4314159822F, 0.4319061175F, 0.4323963050F,
  46801. 0.4328865441F, 0.4333768342F, 0.4338671749F, 0.4343575654F,
  46802. 0.4348480052F, 0.4353384938F, 0.4358290306F, 0.4363196149F,
  46803. 0.4368102463F, 0.4373009241F, 0.4377916478F, 0.4382824168F,
  46804. 0.4387732305F, 0.4392640884F, 0.4397549899F, 0.4402459343F,
  46805. 0.4407369212F, 0.4412279499F, 0.4417190198F, 0.4422101305F,
  46806. 0.4427012813F, 0.4431924717F, 0.4436837010F, 0.4441749686F,
  46807. 0.4446662742F, 0.4451576169F, 0.4456489963F, 0.4461404118F,
  46808. 0.4466318628F, 0.4471233487F, 0.4476148690F, 0.4481064230F,
  46809. 0.4485980103F, 0.4490896302F, 0.4495812821F, 0.4500729654F,
  46810. 0.4505646797F, 0.4510564243F, 0.4515481986F, 0.4520400021F,
  46811. 0.4525318341F, 0.4530236942F, 0.4535155816F, 0.4540074959F,
  46812. 0.4544994365F, 0.4549914028F, 0.4554833941F, 0.4559754100F,
  46813. 0.4564674499F, 0.4569595131F, 0.4574515991F, 0.4579437074F,
  46814. 0.4584358372F, 0.4589279881F, 0.4594201595F, 0.4599123508F,
  46815. 0.4604045615F, 0.4608967908F, 0.4613890383F, 0.4618813034F,
  46816. 0.4623735855F, 0.4628658841F, 0.4633581984F, 0.4638505281F,
  46817. 0.4643428724F, 0.4648352308F, 0.4653276028F, 0.4658199877F,
  46818. 0.4663123849F, 0.4668047940F, 0.4672972143F, 0.4677896451F,
  46819. 0.4682820861F, 0.4687745365F, 0.4692669958F, 0.4697594634F,
  46820. 0.4702519387F, 0.4707444211F, 0.4712369102F, 0.4717294052F,
  46821. 0.4722219056F, 0.4727144109F, 0.4732069204F, 0.4736994336F,
  46822. 0.4741919498F, 0.4746844686F, 0.4751769893F, 0.4756695113F,
  46823. 0.4761620341F, 0.4766545571F, 0.4771470797F, 0.4776396013F,
  46824. 0.4781321213F, 0.4786246392F, 0.4791171544F, 0.4796096663F,
  46825. 0.4801021744F, 0.4805946779F, 0.4810871765F, 0.4815796694F,
  46826. 0.4820721561F, 0.4825646360F, 0.4830571086F, 0.4835495732F,
  46827. 0.4840420293F, 0.4845344763F, 0.4850269136F, 0.4855193407F,
  46828. 0.4860117569F, 0.4865041617F, 0.4869965545F, 0.4874889347F,
  46829. 0.4879813018F, 0.4884736551F, 0.4889659941F, 0.4894583182F,
  46830. 0.4899506268F, 0.4904429193F, 0.4909351952F, 0.4914274538F,
  46831. 0.4919196947F, 0.4924119172F, 0.4929041207F, 0.4933963046F,
  46832. 0.4938884685F, 0.4943806116F, 0.4948727335F, 0.4953648335F,
  46833. 0.4958569110F, 0.4963489656F, 0.4968409965F, 0.4973330032F,
  46834. 0.4978249852F, 0.4983169419F, 0.4988088726F, 0.4993007768F,
  46835. 0.4997926539F, 0.5002845034F, 0.5007763247F, 0.5012681171F,
  46836. 0.5017598801F, 0.5022516132F, 0.5027433157F, 0.5032349871F,
  46837. 0.5037266268F, 0.5042182341F, 0.5047098086F, 0.5052013497F,
  46838. 0.5056928567F, 0.5061843292F, 0.5066757664F, 0.5071671679F,
  46839. 0.5076585330F, 0.5081498613F, 0.5086411520F, 0.5091324047F,
  46840. 0.5096236187F, 0.5101147934F, 0.5106059284F, 0.5110970230F,
  46841. 0.5115880766F, 0.5120790887F, 0.5125700587F, 0.5130609860F,
  46842. 0.5135518700F, 0.5140427102F, 0.5145335059F, 0.5150242566F,
  46843. 0.5155149618F, 0.5160056208F, 0.5164962331F, 0.5169867980F,
  46844. 0.5174773151F, 0.5179677837F, 0.5184582033F, 0.5189485733F,
  46845. 0.5194388931F, 0.5199291621F, 0.5204193798F, 0.5209095455F,
  46846. 0.5213996588F, 0.5218897190F, 0.5223797256F, 0.5228696779F,
  46847. 0.5233595755F, 0.5238494177F, 0.5243392039F, 0.5248289337F,
  46848. 0.5253186063F, 0.5258082213F, 0.5262977781F, 0.5267872760F,
  46849. 0.5272767146F, 0.5277660932F, 0.5282554112F, 0.5287446682F,
  46850. 0.5292338635F, 0.5297229965F, 0.5302120667F, 0.5307010736F,
  46851. 0.5311900164F, 0.5316788947F, 0.5321677079F, 0.5326564554F,
  46852. 0.5331451366F, 0.5336337511F, 0.5341222981F, 0.5346107771F,
  46853. 0.5350991876F, 0.5355875290F, 0.5360758007F, 0.5365640021F,
  46854. 0.5370521327F, 0.5375401920F, 0.5380281792F, 0.5385160939F,
  46855. 0.5390039355F, 0.5394917034F, 0.5399793971F, 0.5404670159F,
  46856. 0.5409545594F, 0.5414420269F, 0.5419294179F, 0.5424167318F,
  46857. 0.5429039680F, 0.5433911261F, 0.5438782053F, 0.5443652051F,
  46858. 0.5448521250F, 0.5453389644F, 0.5458257228F, 0.5463123995F,
  46859. 0.5467989940F, 0.5472855057F, 0.5477719341F, 0.5482582786F,
  46860. 0.5487445387F, 0.5492307137F, 0.5497168031F, 0.5502028063F,
  46861. 0.5506887228F, 0.5511745520F, 0.5516602934F, 0.5521459463F,
  46862. 0.5526315103F, 0.5531169847F, 0.5536023690F, 0.5540876626F,
  46863. 0.5545728649F, 0.5550579755F, 0.5555429937F, 0.5560279189F,
  46864. 0.5565127507F, 0.5569974884F, 0.5574821315F, 0.5579666794F,
  46865. 0.5584511316F, 0.5589354875F, 0.5594197465F, 0.5599039080F,
  46866. 0.5603879716F, 0.5608719367F, 0.5613558026F, 0.5618395689F,
  46867. 0.5623232350F, 0.5628068002F, 0.5632902642F, 0.5637736262F,
  46868. 0.5642568858F, 0.5647400423F, 0.5652230953F, 0.5657060442F,
  46869. 0.5661888883F, 0.5666716272F, 0.5671542603F, 0.5676367870F,
  46870. 0.5681192069F, 0.5686015192F, 0.5690837235F, 0.5695658192F,
  46871. 0.5700478058F, 0.5705296827F, 0.5710114494F, 0.5714931052F,
  46872. 0.5719746497F, 0.5724560822F, 0.5729374023F, 0.5734186094F,
  46873. 0.5738997029F, 0.5743806823F, 0.5748615470F, 0.5753422965F,
  46874. 0.5758229301F, 0.5763034475F, 0.5767838480F, 0.5772641310F,
  46875. 0.5777442960F, 0.5782243426F, 0.5787042700F, 0.5791840778F,
  46876. 0.5796637654F, 0.5801433322F, 0.5806227778F, 0.5811021016F,
  46877. 0.5815813029F, 0.5820603814F, 0.5825393363F, 0.5830181673F,
  46878. 0.5834968737F, 0.5839754549F, 0.5844539105F, 0.5849322399F,
  46879. 0.5854104425F, 0.5858885179F, 0.5863664653F, 0.5868442844F,
  46880. 0.5873219746F, 0.5877995353F, 0.5882769660F, 0.5887542661F,
  46881. 0.5892314351F, 0.5897084724F, 0.5901853776F, 0.5906621500F,
  46882. 0.5911387892F, 0.5916152945F, 0.5920916655F, 0.5925679016F,
  46883. 0.5930440022F, 0.5935199669F, 0.5939957950F, 0.5944714861F,
  46884. 0.5949470396F, 0.5954224550F, 0.5958977317F, 0.5963728692F,
  46885. 0.5968478669F, 0.5973227244F, 0.5977974411F, 0.5982720163F,
  46886. 0.5987464497F, 0.5992207407F, 0.5996948887F, 0.6001688932F,
  46887. 0.6006427537F, 0.6011164696F, 0.6015900405F, 0.6020634657F,
  46888. 0.6025367447F, 0.6030098770F, 0.6034828621F, 0.6039556995F,
  46889. 0.6044283885F, 0.6049009288F, 0.6053733196F, 0.6058455606F,
  46890. 0.6063176512F, 0.6067895909F, 0.6072613790F, 0.6077330152F,
  46891. 0.6082044989F, 0.6086758295F, 0.6091470065F, 0.6096180294F,
  46892. 0.6100888977F, 0.6105596108F, 0.6110301682F, 0.6115005694F,
  46893. 0.6119708139F, 0.6124409011F, 0.6129108305F, 0.6133806017F,
  46894. 0.6138502139F, 0.6143196669F, 0.6147889599F, 0.6152580926F,
  46895. 0.6157270643F, 0.6161958746F, 0.6166645230F, 0.6171330088F,
  46896. 0.6176013317F, 0.6180694910F, 0.6185374863F, 0.6190053171F,
  46897. 0.6194729827F, 0.6199404828F, 0.6204078167F, 0.6208749841F,
  46898. 0.6213419842F, 0.6218088168F, 0.6222754811F, 0.6227419768F,
  46899. 0.6232083032F, 0.6236744600F, 0.6241404465F, 0.6246062622F,
  46900. 0.6250719067F, 0.6255373795F, 0.6260026799F, 0.6264678076F,
  46901. 0.6269327619F, 0.6273975425F, 0.6278621487F, 0.6283265800F,
  46902. 0.6287908361F, 0.6292549163F, 0.6297188201F, 0.6301825471F,
  46903. 0.6306460966F, 0.6311094683F, 0.6315726617F, 0.6320356761F,
  46904. 0.6324985111F, 0.6329611662F, 0.6334236410F, 0.6338859348F,
  46905. 0.6343480472F, 0.6348099777F, 0.6352717257F, 0.6357332909F,
  46906. 0.6361946726F, 0.6366558704F, 0.6371168837F, 0.6375777122F,
  46907. 0.6380383552F, 0.6384988123F, 0.6389590830F, 0.6394191668F,
  46908. 0.6398790631F, 0.6403387716F, 0.6407982916F, 0.6412576228F,
  46909. 0.6417167645F, 0.6421757163F, 0.6426344778F, 0.6430930483F,
  46910. 0.6435514275F, 0.6440096149F, 0.6444676098F, 0.6449254119F,
  46911. 0.6453830207F, 0.6458404356F, 0.6462976562F, 0.6467546820F,
  46912. 0.6472115125F, 0.6476681472F, 0.6481245856F, 0.6485808273F,
  46913. 0.6490368717F, 0.6494927183F, 0.6499483667F, 0.6504038164F,
  46914. 0.6508590670F, 0.6513141178F, 0.6517689684F, 0.6522236185F,
  46915. 0.6526780673F, 0.6531323146F, 0.6535863598F, 0.6540402024F,
  46916. 0.6544938419F, 0.6549472779F, 0.6554005099F, 0.6558535373F,
  46917. 0.6563063598F, 0.6567589769F, 0.6572113880F, 0.6576635927F,
  46918. 0.6581155906F, 0.6585673810F, 0.6590189637F, 0.6594703380F,
  46919. 0.6599215035F, 0.6603724598F, 0.6608232064F, 0.6612737427F,
  46920. 0.6617240684F, 0.6621741829F, 0.6626240859F, 0.6630737767F,
  46921. 0.6635232550F, 0.6639725202F, 0.6644215720F, 0.6648704098F,
  46922. 0.6653190332F, 0.6657674417F, 0.6662156348F, 0.6666636121F,
  46923. 0.6671113731F, 0.6675589174F, 0.6680062445F, 0.6684533538F,
  46924. 0.6689002450F, 0.6693469177F, 0.6697933712F, 0.6702396052F,
  46925. 0.6706856193F, 0.6711314129F, 0.6715769855F, 0.6720223369F,
  46926. 0.6724674664F, 0.6729123736F, 0.6733570581F, 0.6738015194F,
  46927. 0.6742457570F, 0.6746897706F, 0.6751335596F, 0.6755771236F,
  46928. 0.6760204621F, 0.6764635747F, 0.6769064609F, 0.6773491204F,
  46929. 0.6777915525F, 0.6782337570F, 0.6786757332F, 0.6791174809F,
  46930. 0.6795589995F, 0.6800002886F, 0.6804413477F, 0.6808821765F,
  46931. 0.6813227743F, 0.6817631409F, 0.6822032758F, 0.6826431785F,
  46932. 0.6830828485F, 0.6835222855F, 0.6839614890F, 0.6844004585F,
  46933. 0.6848391936F, 0.6852776939F, 0.6857159589F, 0.6861539883F,
  46934. 0.6865917815F, 0.6870293381F, 0.6874666576F, 0.6879037398F,
  46935. 0.6883405840F, 0.6887771899F, 0.6892135571F, 0.6896496850F,
  46936. 0.6900855733F, 0.6905212216F, 0.6909566294F, 0.6913917963F,
  46937. 0.6918267218F, 0.6922614055F, 0.6926958471F, 0.6931300459F,
  46938. 0.6935640018F, 0.6939977141F, 0.6944311825F, 0.6948644066F,
  46939. 0.6952973859F, 0.6957301200F, 0.6961626085F, 0.6965948510F,
  46940. 0.6970268470F, 0.6974585961F, 0.6978900980F, 0.6983213521F,
  46941. 0.6987523580F, 0.6991831154F, 0.6996136238F, 0.7000438828F,
  46942. 0.7004738921F, 0.7009036510F, 0.7013331594F, 0.7017624166F,
  46943. 0.7021914224F, 0.7026201763F, 0.7030486779F, 0.7034769268F,
  46944. 0.7039049226F, 0.7043326648F, 0.7047601531F, 0.7051873870F,
  46945. 0.7056143662F, 0.7060410902F, 0.7064675586F, 0.7068937711F,
  46946. 0.7073197271F, 0.7077454264F, 0.7081708684F, 0.7085960529F,
  46947. 0.7090209793F, 0.7094456474F, 0.7098700566F, 0.7102942066F,
  46948. 0.7107180970F, 0.7111417274F, 0.7115650974F, 0.7119882066F,
  46949. 0.7124110545F, 0.7128336409F, 0.7132559653F, 0.7136780272F,
  46950. 0.7140998264F, 0.7145213624F, 0.7149426348F, 0.7153636433F,
  46951. 0.7157843874F, 0.7162048668F, 0.7166250810F, 0.7170450296F,
  46952. 0.7174647124F, 0.7178841289F, 0.7183032786F, 0.7187221613F,
  46953. 0.7191407765F, 0.7195591239F, 0.7199772030F, 0.7203950135F,
  46954. 0.7208125550F, 0.7212298271F, 0.7216468294F, 0.7220635616F,
  46955. 0.7224800233F, 0.7228962140F, 0.7233121335F, 0.7237277813F,
  46956. 0.7241431571F, 0.7245582604F, 0.7249730910F, 0.7253876484F,
  46957. 0.7258019322F, 0.7262159422F, 0.7266296778F, 0.7270431388F,
  46958. 0.7274563247F, 0.7278692353F, 0.7282818700F, 0.7286942287F,
  46959. 0.7291063108F, 0.7295181160F, 0.7299296440F, 0.7303408944F,
  46960. 0.7307518669F, 0.7311625609F, 0.7315729763F, 0.7319831126F,
  46961. 0.7323929695F, 0.7328025466F, 0.7332118435F, 0.7336208600F,
  46962. 0.7340295955F, 0.7344380499F, 0.7348462226F, 0.7352541134F,
  46963. 0.7356617220F, 0.7360690478F, 0.7364760907F, 0.7368828502F,
  46964. 0.7372893259F, 0.7376955176F, 0.7381014249F, 0.7385070475F,
  46965. 0.7389123849F, 0.7393174368F, 0.7397222029F, 0.7401266829F,
  46966. 0.7405308763F, 0.7409347829F, 0.7413384023F, 0.7417417341F,
  46967. 0.7421447780F, 0.7425475338F, 0.7429500009F, 0.7433521791F,
  46968. 0.7437540681F, 0.7441556674F, 0.7445569769F, 0.7449579960F,
  46969. 0.7453587245F, 0.7457591621F, 0.7461593084F, 0.7465591631F,
  46970. 0.7469587259F, 0.7473579963F, 0.7477569741F, 0.7481556590F,
  46971. 0.7485540506F, 0.7489521486F, 0.7493499526F, 0.7497474623F,
  46972. 0.7501446775F, 0.7505415977F, 0.7509382227F, 0.7513345521F,
  46973. 0.7517305856F, 0.7521263229F, 0.7525217636F, 0.7529169074F,
  46974. 0.7533117541F, 0.7537063032F, 0.7541005545F, 0.7544945076F,
  46975. 0.7548881623F, 0.7552815182F, 0.7556745749F, 0.7560673323F,
  46976. 0.7564597899F, 0.7568519474F, 0.7572438046F, 0.7576353611F,
  46977. 0.7580266166F, 0.7584175708F, 0.7588082235F, 0.7591985741F,
  46978. 0.7595886226F, 0.7599783685F, 0.7603678116F, 0.7607569515F,
  46979. 0.7611457879F, 0.7615343206F, 0.7619225493F, 0.7623104735F,
  46980. 0.7626980931F, 0.7630854078F, 0.7634724171F, 0.7638591209F,
  46981. 0.7642455188F, 0.7646316106F, 0.7650173959F, 0.7654028744F,
  46982. 0.7657880459F, 0.7661729100F, 0.7665574664F, 0.7669417150F,
  46983. 0.7673256553F, 0.7677092871F, 0.7680926100F, 0.7684756239F,
  46984. 0.7688583284F, 0.7692407232F, 0.7696228080F, 0.7700045826F,
  46985. 0.7703860467F, 0.7707671999F, 0.7711480420F, 0.7715285728F,
  46986. 0.7719087918F, 0.7722886989F, 0.7726682938F, 0.7730475762F,
  46987. 0.7734265458F, 0.7738052023F, 0.7741835454F, 0.7745615750F,
  46988. 0.7749392906F, 0.7753166921F, 0.7756937791F, 0.7760705514F,
  46989. 0.7764470087F, 0.7768231508F, 0.7771989773F, 0.7775744880F,
  46990. 0.7779496827F, 0.7783245610F, 0.7786991227F, 0.7790733676F,
  46991. 0.7794472953F, 0.7798209056F, 0.7801941982F, 0.7805671729F,
  46992. 0.7809398294F, 0.7813121675F, 0.7816841869F, 0.7820558873F,
  46993. 0.7824272684F, 0.7827983301F, 0.7831690720F, 0.7835394940F,
  46994. 0.7839095957F, 0.7842793768F, 0.7846488373F, 0.7850179767F,
  46995. 0.7853867948F, 0.7857552914F, 0.7861234663F, 0.7864913191F,
  46996. 0.7868588497F, 0.7872260578F, 0.7875929431F, 0.7879595055F,
  46997. 0.7883257445F, 0.7886916601F, 0.7890572520F, 0.7894225198F,
  46998. 0.7897874635F, 0.7901520827F, 0.7905163772F, 0.7908803468F,
  46999. 0.7912439912F, 0.7916073102F, 0.7919703035F, 0.7923329710F,
  47000. 0.7926953124F, 0.7930573274F, 0.7934190158F, 0.7937803774F,
  47001. 0.7941414120F, 0.7945021193F, 0.7948624991F, 0.7952225511F,
  47002. 0.7955822752F, 0.7959416711F, 0.7963007387F, 0.7966594775F,
  47003. 0.7970178875F, 0.7973759685F, 0.7977337201F, 0.7980911422F,
  47004. 0.7984482346F, 0.7988049970F, 0.7991614292F, 0.7995175310F,
  47005. 0.7998733022F, 0.8002287426F, 0.8005838519F, 0.8009386299F,
  47006. 0.8012930765F, 0.8016471914F, 0.8020009744F, 0.8023544253F,
  47007. 0.8027075438F, 0.8030603298F, 0.8034127831F, 0.8037649035F,
  47008. 0.8041166906F, 0.8044681445F, 0.8048192647F, 0.8051700512F,
  47009. 0.8055205038F, 0.8058706222F, 0.8062204062F, 0.8065698556F,
  47010. 0.8069189702F, 0.8072677499F, 0.8076161944F, 0.8079643036F,
  47011. 0.8083120772F, 0.8086595151F, 0.8090066170F, 0.8093533827F,
  47012. 0.8096998122F, 0.8100459051F, 0.8103916613F, 0.8107370806F,
  47013. 0.8110821628F, 0.8114269077F, 0.8117713151F, 0.8121153849F,
  47014. 0.8124591169F, 0.8128025108F, 0.8131455666F, 0.8134882839F,
  47015. 0.8138306627F, 0.8141727027F, 0.8145144038F, 0.8148557658F,
  47016. 0.8151967886F, 0.8155374718F, 0.8158778154F, 0.8162178192F,
  47017. 0.8165574830F, 0.8168968067F, 0.8172357900F, 0.8175744328F,
  47018. 0.8179127349F, 0.8182506962F, 0.8185883164F, 0.8189255955F,
  47019. 0.8192625332F, 0.8195991295F, 0.8199353840F, 0.8202712967F,
  47020. 0.8206068673F, 0.8209420958F, 0.8212769820F, 0.8216115256F,
  47021. 0.8219457266F, 0.8222795848F, 0.8226131000F, 0.8229462721F,
  47022. 0.8232791009F, 0.8236115863F, 0.8239437280F, 0.8242755260F,
  47023. 0.8246069801F, 0.8249380901F, 0.8252688559F, 0.8255992774F,
  47024. 0.8259293544F, 0.8262590867F, 0.8265884741F, 0.8269175167F,
  47025. 0.8272462141F, 0.8275745663F, 0.8279025732F, 0.8282302344F,
  47026. 0.8285575501F, 0.8288845199F, 0.8292111437F, 0.8295374215F,
  47027. 0.8298633530F, 0.8301889382F, 0.8305141768F, 0.8308390688F,
  47028. 0.8311636141F, 0.8314878124F, 0.8318116637F, 0.8321351678F,
  47029. 0.8324583246F, 0.8327811340F, 0.8331035957F, 0.8334257098F,
  47030. 0.8337474761F, 0.8340688944F, 0.8343899647F, 0.8347106867F,
  47031. 0.8350310605F, 0.8353510857F, 0.8356707624F, 0.8359900904F,
  47032. 0.8363090696F, 0.8366276999F, 0.8369459811F, 0.8372639131F,
  47033. 0.8375814958F, 0.8378987292F, 0.8382156130F, 0.8385321472F,
  47034. 0.8388483316F, 0.8391641662F, 0.8394796508F, 0.8397947853F,
  47035. 0.8401095697F, 0.8404240037F, 0.8407380873F, 0.8410518204F,
  47036. 0.8413652029F, 0.8416782347F, 0.8419909156F, 0.8423032456F,
  47037. 0.8426152245F, 0.8429268523F, 0.8432381289F, 0.8435490541F,
  47038. 0.8438596279F, 0.8441698502F, 0.8444797208F, 0.8447892396F,
  47039. 0.8450984067F, 0.8454072218F, 0.8457156849F, 0.8460237959F,
  47040. 0.8463315547F, 0.8466389612F, 0.8469460154F, 0.8472527170F,
  47041. 0.8475590661F, 0.8478650625F, 0.8481707063F, 0.8484759971F,
  47042. 0.8487809351F, 0.8490855201F, 0.8493897521F, 0.8496936308F,
  47043. 0.8499971564F, 0.8503003286F, 0.8506031474F, 0.8509056128F,
  47044. 0.8512077246F, 0.8515094828F, 0.8518108872F, 0.8521119379F,
  47045. 0.8524126348F, 0.8527129777F, 0.8530129666F, 0.8533126015F,
  47046. 0.8536118822F, 0.8539108087F, 0.8542093809F, 0.8545075988F,
  47047. 0.8548054623F, 0.8551029712F, 0.8554001257F, 0.8556969255F,
  47048. 0.8559933707F, 0.8562894611F, 0.8565851968F, 0.8568805775F,
  47049. 0.8571756034F, 0.8574702743F, 0.8577645902F, 0.8580585509F,
  47050. 0.8583521566F, 0.8586454070F, 0.8589383021F, 0.8592308420F,
  47051. 0.8595230265F, 0.8598148556F, 0.8601063292F, 0.8603974473F,
  47052. 0.8606882098F, 0.8609786167F, 0.8612686680F, 0.8615583636F,
  47053. 0.8618477034F, 0.8621366874F, 0.8624253156F, 0.8627135878F,
  47054. 0.8630015042F, 0.8632890646F, 0.8635762690F, 0.8638631173F,
  47055. 0.8641496096F, 0.8644357457F, 0.8647215257F, 0.8650069495F,
  47056. 0.8652920171F, 0.8655767283F, 0.8658610833F, 0.8661450820F,
  47057. 0.8664287243F, 0.8667120102F, 0.8669949397F, 0.8672775127F,
  47058. 0.8675597293F, 0.8678415894F, 0.8681230929F, 0.8684042398F,
  47059. 0.8686850302F, 0.8689654640F, 0.8692455412F, 0.8695252617F,
  47060. 0.8698046255F, 0.8700836327F, 0.8703622831F, 0.8706405768F,
  47061. 0.8709185138F, 0.8711960940F, 0.8714733174F, 0.8717501840F,
  47062. 0.8720266939F, 0.8723028469F, 0.8725786430F, 0.8728540824F,
  47063. 0.8731291648F, 0.8734038905F, 0.8736782592F, 0.8739522711F,
  47064. 0.8742259261F, 0.8744992242F, 0.8747721653F, 0.8750447496F,
  47065. 0.8753169770F, 0.8755888475F, 0.8758603611F, 0.8761315177F,
  47066. 0.8764023175F, 0.8766727603F, 0.8769428462F, 0.8772125752F,
  47067. 0.8774819474F, 0.8777509626F, 0.8780196209F, 0.8782879224F,
  47068. 0.8785558669F, 0.8788234546F, 0.8790906854F, 0.8793575594F,
  47069. 0.8796240765F, 0.8798902368F, 0.8801560403F, 0.8804214870F,
  47070. 0.8806865768F, 0.8809513099F, 0.8812156863F, 0.8814797059F,
  47071. 0.8817433687F, 0.8820066749F, 0.8822696243F, 0.8825322171F,
  47072. 0.8827944532F, 0.8830563327F, 0.8833178556F, 0.8835790219F,
  47073. 0.8838398316F, 0.8841002848F, 0.8843603815F, 0.8846201217F,
  47074. 0.8848795054F, 0.8851385327F, 0.8853972036F, 0.8856555182F,
  47075. 0.8859134764F, 0.8861710783F, 0.8864283239F, 0.8866852133F,
  47076. 0.8869417464F, 0.8871979234F, 0.8874537443F, 0.8877092090F,
  47077. 0.8879643177F, 0.8882190704F, 0.8884734671F, 0.8887275078F,
  47078. 0.8889811927F, 0.8892345216F, 0.8894874948F, 0.8897401122F,
  47079. 0.8899923738F, 0.8902442798F, 0.8904958301F, 0.8907470248F,
  47080. 0.8909978640F, 0.8912483477F, 0.8914984759F, 0.8917482487F,
  47081. 0.8919976662F, 0.8922467284F, 0.8924954353F, 0.8927437871F,
  47082. 0.8929917837F, 0.8932394252F, 0.8934867118F, 0.8937336433F,
  47083. 0.8939802199F, 0.8942264417F, 0.8944723087F, 0.8947178210F,
  47084. 0.8949629785F, 0.8952077815F, 0.8954522299F, 0.8956963239F,
  47085. 0.8959400634F, 0.8961834486F, 0.8964264795F, 0.8966691561F,
  47086. 0.8969114786F, 0.8971534470F, 0.8973950614F, 0.8976363219F,
  47087. 0.8978772284F, 0.8981177812F, 0.8983579802F, 0.8985978256F,
  47088. 0.8988373174F, 0.8990764556F, 0.8993152405F, 0.8995536720F,
  47089. 0.8997917502F, 0.9000294751F, 0.9002668470F, 0.9005038658F,
  47090. 0.9007405317F, 0.9009768446F, 0.9012128048F, 0.9014484123F,
  47091. 0.9016836671F, 0.9019185693F, 0.9021531191F, 0.9023873165F,
  47092. 0.9026211616F, 0.9028546546F, 0.9030877954F, 0.9033205841F,
  47093. 0.9035530210F, 0.9037851059F, 0.9040168392F, 0.9042482207F,
  47094. 0.9044792507F, 0.9047099293F, 0.9049402564F, 0.9051702323F,
  47095. 0.9053998569F, 0.9056291305F, 0.9058580531F, 0.9060866248F,
  47096. 0.9063148457F, 0.9065427159F, 0.9067702355F, 0.9069974046F,
  47097. 0.9072242233F, 0.9074506917F, 0.9076768100F, 0.9079025782F,
  47098. 0.9081279964F, 0.9083530647F, 0.9085777833F, 0.9088021523F,
  47099. 0.9090261717F, 0.9092498417F, 0.9094731623F, 0.9096961338F,
  47100. 0.9099187561F, 0.9101410295F, 0.9103629540F, 0.9105845297F,
  47101. 0.9108057568F, 0.9110266354F, 0.9112471656F, 0.9114673475F,
  47102. 0.9116871812F, 0.9119066668F, 0.9121258046F, 0.9123445945F,
  47103. 0.9125630367F, 0.9127811314F, 0.9129988786F, 0.9132162785F,
  47104. 0.9134333312F, 0.9136500368F, 0.9138663954F, 0.9140824073F,
  47105. 0.9142980724F, 0.9145133910F, 0.9147283632F, 0.9149429890F,
  47106. 0.9151572687F, 0.9153712023F, 0.9155847900F, 0.9157980319F,
  47107. 0.9160109282F, 0.9162234790F, 0.9164356844F, 0.9166475445F,
  47108. 0.9168590595F, 0.9170702296F, 0.9172810548F, 0.9174915354F,
  47109. 0.9177016714F, 0.9179114629F, 0.9181209102F, 0.9183300134F,
  47110. 0.9185387726F, 0.9187471879F, 0.9189552595F, 0.9191629876F,
  47111. 0.9193703723F, 0.9195774136F, 0.9197841119F, 0.9199904672F,
  47112. 0.9201964797F, 0.9204021495F, 0.9206074767F, 0.9208124616F,
  47113. 0.9210171043F, 0.9212214049F, 0.9214253636F, 0.9216289805F,
  47114. 0.9218322558F, 0.9220351896F, 0.9222377821F, 0.9224400335F,
  47115. 0.9226419439F, 0.9228435134F, 0.9230447423F, 0.9232456307F,
  47116. 0.9234461787F, 0.9236463865F, 0.9238462543F, 0.9240457822F,
  47117. 0.9242449704F, 0.9244438190F, 0.9246423282F, 0.9248404983F,
  47118. 0.9250383293F, 0.9252358214F, 0.9254329747F, 0.9256297896F,
  47119. 0.9258262660F, 0.9260224042F, 0.9262182044F, 0.9264136667F,
  47120. 0.9266087913F, 0.9268035783F, 0.9269980280F, 0.9271921405F,
  47121. 0.9273859160F, 0.9275793546F, 0.9277724566F, 0.9279652221F,
  47122. 0.9281576513F, 0.9283497443F, 0.9285415014F, 0.9287329227F,
  47123. 0.9289240084F, 0.9291147586F, 0.9293051737F, 0.9294952536F,
  47124. 0.9296849987F, 0.9298744091F, 0.9300634850F, 0.9302522266F,
  47125. 0.9304406340F, 0.9306287074F, 0.9308164471F, 0.9310038532F,
  47126. 0.9311909259F, 0.9313776654F, 0.9315640719F, 0.9317501455F,
  47127. 0.9319358865F, 0.9321212951F, 0.9323063713F, 0.9324911155F,
  47128. 0.9326755279F, 0.9328596085F, 0.9330433577F, 0.9332267756F,
  47129. 0.9334098623F, 0.9335926182F, 0.9337750434F, 0.9339571380F,
  47130. 0.9341389023F, 0.9343203366F, 0.9345014409F, 0.9346822155F,
  47131. 0.9348626606F, 0.9350427763F, 0.9352225630F, 0.9354020207F,
  47132. 0.9355811498F, 0.9357599503F, 0.9359384226F, 0.9361165667F,
  47133. 0.9362943830F, 0.9364718716F, 0.9366490327F, 0.9368258666F,
  47134. 0.9370023733F, 0.9371785533F, 0.9373544066F, 0.9375299335F,
  47135. 0.9377051341F, 0.9378800087F, 0.9380545576F, 0.9382287809F,
  47136. 0.9384026787F, 0.9385762515F, 0.9387494993F, 0.9389224223F,
  47137. 0.9390950209F, 0.9392672951F, 0.9394392453F, 0.9396108716F,
  47138. 0.9397821743F, 0.9399531536F, 0.9401238096F, 0.9402941427F,
  47139. 0.9404641530F, 0.9406338407F, 0.9408032061F, 0.9409722495F,
  47140. 0.9411409709F, 0.9413093707F, 0.9414774491F, 0.9416452062F,
  47141. 0.9418126424F, 0.9419797579F, 0.9421465528F, 0.9423130274F,
  47142. 0.9424791819F, 0.9426450166F, 0.9428105317F, 0.9429757274F,
  47143. 0.9431406039F, 0.9433051616F, 0.9434694005F, 0.9436333209F,
  47144. 0.9437969232F, 0.9439602074F, 0.9441231739F, 0.9442858229F,
  47145. 0.9444481545F, 0.9446101691F, 0.9447718669F, 0.9449332481F,
  47146. 0.9450943129F, 0.9452550617F, 0.9454154945F, 0.9455756118F,
  47147. 0.9457354136F, 0.9458949003F, 0.9460540721F, 0.9462129292F,
  47148. 0.9463714719F, 0.9465297003F, 0.9466876149F, 0.9468452157F,
  47149. 0.9470025031F, 0.9471594772F, 0.9473161384F, 0.9474724869F,
  47150. 0.9476285229F, 0.9477842466F, 0.9479396584F, 0.9480947585F,
  47151. 0.9482495470F, 0.9484040243F, 0.9485581906F, 0.9487120462F,
  47152. 0.9488655913F, 0.9490188262F, 0.9491717511F, 0.9493243662F,
  47153. 0.9494766718F, 0.9496286683F, 0.9497803557F, 0.9499317345F,
  47154. 0.9500828047F, 0.9502335668F, 0.9503840209F, 0.9505341673F,
  47155. 0.9506840062F, 0.9508335380F, 0.9509827629F, 0.9511316810F,
  47156. 0.9512802928F, 0.9514285984F, 0.9515765982F, 0.9517242923F,
  47157. 0.9518716810F, 0.9520187646F, 0.9521655434F, 0.9523120176F,
  47158. 0.9524581875F, 0.9526040534F, 0.9527496154F, 0.9528948739F,
  47159. 0.9530398292F, 0.9531844814F, 0.9533288310F, 0.9534728780F,
  47160. 0.9536166229F, 0.9537600659F, 0.9539032071F, 0.9540460470F,
  47161. 0.9541885858F, 0.9543308237F, 0.9544727611F, 0.9546143981F,
  47162. 0.9547557351F, 0.9548967723F, 0.9550375100F, 0.9551779485F,
  47163. 0.9553180881F, 0.9554579290F, 0.9555974714F, 0.9557367158F,
  47164. 0.9558756623F, 0.9560143112F, 0.9561526628F, 0.9562907174F,
  47165. 0.9564284752F, 0.9565659366F, 0.9567031017F, 0.9568399710F,
  47166. 0.9569765446F, 0.9571128229F, 0.9572488061F, 0.9573844944F,
  47167. 0.9575198883F, 0.9576549879F, 0.9577897936F, 0.9579243056F,
  47168. 0.9580585242F, 0.9581924497F, 0.9583260824F, 0.9584594226F,
  47169. 0.9585924705F, 0.9587252264F, 0.9588576906F, 0.9589898634F,
  47170. 0.9591217452F, 0.9592533360F, 0.9593846364F, 0.9595156465F,
  47171. 0.9596463666F, 0.9597767971F, 0.9599069382F, 0.9600367901F,
  47172. 0.9601663533F, 0.9602956279F, 0.9604246143F, 0.9605533128F,
  47173. 0.9606817236F, 0.9608098471F, 0.9609376835F, 0.9610652332F,
  47174. 0.9611924963F, 0.9613194733F, 0.9614461644F, 0.9615725699F,
  47175. 0.9616986901F, 0.9618245253F, 0.9619500757F, 0.9620753418F,
  47176. 0.9622003238F, 0.9623250219F, 0.9624494365F, 0.9625735679F,
  47177. 0.9626974163F, 0.9628209821F, 0.9629442656F, 0.9630672671F,
  47178. 0.9631899868F, 0.9633124251F, 0.9634345822F, 0.9635564585F,
  47179. 0.9636780543F, 0.9637993699F, 0.9639204056F, 0.9640411616F,
  47180. 0.9641616383F, 0.9642818359F, 0.9644017549F, 0.9645213955F,
  47181. 0.9646407579F, 0.9647598426F, 0.9648786497F, 0.9649971797F,
  47182. 0.9651154328F, 0.9652334092F, 0.9653511095F, 0.9654685337F,
  47183. 0.9655856823F, 0.9657025556F, 0.9658191538F, 0.9659354773F,
  47184. 0.9660515263F, 0.9661673013F, 0.9662828024F, 0.9663980300F,
  47185. 0.9665129845F, 0.9666276660F, 0.9667420750F, 0.9668562118F,
  47186. 0.9669700766F, 0.9670836698F, 0.9671969917F, 0.9673100425F,
  47187. 0.9674228227F, 0.9675353325F, 0.9676475722F, 0.9677595422F,
  47188. 0.9678712428F, 0.9679826742F, 0.9680938368F, 0.9682047309F,
  47189. 0.9683153569F, 0.9684257150F, 0.9685358056F, 0.9686456289F,
  47190. 0.9687551853F, 0.9688644752F, 0.9689734987F, 0.9690822564F,
  47191. 0.9691907483F, 0.9692989750F, 0.9694069367F, 0.9695146337F,
  47192. 0.9696220663F, 0.9697292349F, 0.9698361398F, 0.9699427813F,
  47193. 0.9700491597F, 0.9701552754F, 0.9702611286F, 0.9703667197F,
  47194. 0.9704720490F, 0.9705771169F, 0.9706819236F, 0.9707864695F,
  47195. 0.9708907549F, 0.9709947802F, 0.9710985456F, 0.9712020514F,
  47196. 0.9713052981F, 0.9714082859F, 0.9715110151F, 0.9716134862F,
  47197. 0.9717156993F, 0.9718176549F, 0.9719193532F, 0.9720207946F,
  47198. 0.9721219794F, 0.9722229080F, 0.9723235806F, 0.9724239976F,
  47199. 0.9725241593F, 0.9726240661F, 0.9727237183F, 0.9728231161F,
  47200. 0.9729222601F, 0.9730211503F, 0.9731197873F, 0.9732181713F,
  47201. 0.9733163027F, 0.9734141817F, 0.9735118088F, 0.9736091842F,
  47202. 0.9737063083F, 0.9738031814F, 0.9738998039F, 0.9739961760F,
  47203. 0.9740922981F, 0.9741881706F, 0.9742837938F, 0.9743791680F,
  47204. 0.9744742935F, 0.9745691707F, 0.9746637999F, 0.9747581814F,
  47205. 0.9748523157F, 0.9749462029F, 0.9750398435F, 0.9751332378F,
  47206. 0.9752263861F, 0.9753192887F, 0.9754119461F, 0.9755043585F,
  47207. 0.9755965262F, 0.9756884496F, 0.9757801291F, 0.9758715650F,
  47208. 0.9759627575F, 0.9760537071F, 0.9761444141F, 0.9762348789F,
  47209. 0.9763251016F, 0.9764150828F, 0.9765048228F, 0.9765943218F,
  47210. 0.9766835802F, 0.9767725984F, 0.9768613767F, 0.9769499154F,
  47211. 0.9770382149F, 0.9771262755F, 0.9772140976F, 0.9773016815F,
  47212. 0.9773890275F, 0.9774761360F, 0.9775630073F, 0.9776496418F,
  47213. 0.9777360398F, 0.9778222016F, 0.9779081277F, 0.9779938182F,
  47214. 0.9780792736F, 0.9781644943F, 0.9782494805F, 0.9783342326F,
  47215. 0.9784187509F, 0.9785030359F, 0.9785870877F, 0.9786709069F,
  47216. 0.9787544936F, 0.9788378484F, 0.9789209714F, 0.9790038631F,
  47217. 0.9790865238F, 0.9791689538F, 0.9792511535F, 0.9793331232F,
  47218. 0.9794148633F, 0.9794963742F, 0.9795776561F, 0.9796587094F,
  47219. 0.9797395345F, 0.9798201316F, 0.9799005013F, 0.9799806437F,
  47220. 0.9800605593F, 0.9801402483F, 0.9802197112F, 0.9802989483F,
  47221. 0.9803779600F, 0.9804567465F, 0.9805353082F, 0.9806136455F,
  47222. 0.9806917587F, 0.9807696482F, 0.9808473143F, 0.9809247574F,
  47223. 0.9810019778F, 0.9810789759F, 0.9811557519F, 0.9812323064F,
  47224. 0.9813086395F, 0.9813847517F, 0.9814606433F, 0.9815363147F,
  47225. 0.9816117662F, 0.9816869981F, 0.9817620108F, 0.9818368047F,
  47226. 0.9819113801F, 0.9819857374F, 0.9820598769F, 0.9821337989F,
  47227. 0.9822075038F, 0.9822809920F, 0.9823542638F, 0.9824273195F,
  47228. 0.9825001596F, 0.9825727843F, 0.9826451940F, 0.9827173891F,
  47229. 0.9827893700F, 0.9828611368F, 0.9829326901F, 0.9830040302F,
  47230. 0.9830751574F, 0.9831460720F, 0.9832167745F, 0.9832872652F,
  47231. 0.9833575444F, 0.9834276124F, 0.9834974697F, 0.9835671166F,
  47232. 0.9836365535F, 0.9837057806F, 0.9837747983F, 0.9838436071F,
  47233. 0.9839122072F, 0.9839805990F, 0.9840487829F, 0.9841167591F,
  47234. 0.9841845282F, 0.9842520903F, 0.9843194459F, 0.9843865953F,
  47235. 0.9844535389F, 0.9845202771F, 0.9845868101F, 0.9846531383F,
  47236. 0.9847192622F, 0.9847851820F, 0.9848508980F, 0.9849164108F,
  47237. 0.9849817205F, 0.9850468276F, 0.9851117324F, 0.9851764352F,
  47238. 0.9852409365F, 0.9853052366F, 0.9853693358F, 0.9854332344F,
  47239. 0.9854969330F, 0.9855604317F, 0.9856237309F, 0.9856868310F,
  47240. 0.9857497325F, 0.9858124355F, 0.9858749404F, 0.9859372477F,
  47241. 0.9859993577F, 0.9860612707F, 0.9861229871F, 0.9861845072F,
  47242. 0.9862458315F, 0.9863069601F, 0.9863678936F, 0.9864286322F,
  47243. 0.9864891764F, 0.9865495264F, 0.9866096826F, 0.9866696454F,
  47244. 0.9867294152F, 0.9867889922F, 0.9868483769F, 0.9869075695F,
  47245. 0.9869665706F, 0.9870253803F, 0.9870839991F, 0.9871424273F,
  47246. 0.9872006653F, 0.9872587135F, 0.9873165721F, 0.9873742415F,
  47247. 0.9874317222F, 0.9874890144F, 0.9875461185F, 0.9876030348F,
  47248. 0.9876597638F, 0.9877163057F, 0.9877726610F, 0.9878288300F,
  47249. 0.9878848130F, 0.9879406104F, 0.9879962225F, 0.9880516497F,
  47250. 0.9881068924F, 0.9881619509F, 0.9882168256F, 0.9882715168F,
  47251. 0.9883260249F, 0.9883803502F, 0.9884344931F, 0.9884884539F,
  47252. 0.9885422331F, 0.9885958309F, 0.9886492477F, 0.9887024838F,
  47253. 0.9887555397F, 0.9888084157F, 0.9888611120F, 0.9889136292F,
  47254. 0.9889659675F, 0.9890181273F, 0.9890701089F, 0.9891219128F,
  47255. 0.9891735392F, 0.9892249885F, 0.9892762610F, 0.9893273572F,
  47256. 0.9893782774F, 0.9894290219F, 0.9894795911F, 0.9895299853F,
  47257. 0.9895802049F, 0.9896302502F, 0.9896801217F, 0.9897298196F,
  47258. 0.9897793443F, 0.9898286961F, 0.9898778755F, 0.9899268828F,
  47259. 0.9899757183F, 0.9900243823F, 0.9900728753F, 0.9901211976F,
  47260. 0.9901693495F, 0.9902173314F, 0.9902651436F, 0.9903127865F,
  47261. 0.9903602605F, 0.9904075659F, 0.9904547031F, 0.9905016723F,
  47262. 0.9905484740F, 0.9905951086F, 0.9906415763F, 0.9906878775F,
  47263. 0.9907340126F, 0.9907799819F, 0.9908257858F, 0.9908714247F,
  47264. 0.9909168988F, 0.9909622086F, 0.9910073543F, 0.9910523364F,
  47265. 0.9910971552F, 0.9911418110F, 0.9911863042F, 0.9912306351F,
  47266. 0.9912748042F, 0.9913188117F, 0.9913626580F, 0.9914063435F,
  47267. 0.9914498684F, 0.9914932333F, 0.9915364383F, 0.9915794839F,
  47268. 0.9916223703F, 0.9916650981F, 0.9917076674F, 0.9917500787F,
  47269. 0.9917923323F, 0.9918344286F, 0.9918763679F, 0.9919181505F,
  47270. 0.9919597769F, 0.9920012473F, 0.9920425621F, 0.9920837217F,
  47271. 0.9921247263F, 0.9921655765F, 0.9922062724F, 0.9922468145F,
  47272. 0.9922872030F, 0.9923274385F, 0.9923675211F, 0.9924074513F,
  47273. 0.9924472294F, 0.9924868557F, 0.9925263306F, 0.9925656544F,
  47274. 0.9926048275F, 0.9926438503F, 0.9926827230F, 0.9927214461F,
  47275. 0.9927600199F, 0.9927984446F, 0.9928367208F, 0.9928748486F,
  47276. 0.9929128285F, 0.9929506608F, 0.9929883459F, 0.9930258841F,
  47277. 0.9930632757F, 0.9931005211F, 0.9931376207F, 0.9931745747F,
  47278. 0.9932113836F, 0.9932480476F, 0.9932845671F, 0.9933209425F,
  47279. 0.9933571742F, 0.9933932623F, 0.9934292074F, 0.9934650097F,
  47280. 0.9935006696F, 0.9935361874F, 0.9935715635F, 0.9936067982F,
  47281. 0.9936418919F, 0.9936768448F, 0.9937116574F, 0.9937463300F,
  47282. 0.9937808629F, 0.9938152565F, 0.9938495111F, 0.9938836271F,
  47283. 0.9939176047F, 0.9939514444F, 0.9939851465F, 0.9940187112F,
  47284. 0.9940521391F, 0.9940854303F, 0.9941185853F, 0.9941516044F,
  47285. 0.9941844879F, 0.9942172361F, 0.9942498495F, 0.9942823283F,
  47286. 0.9943146729F, 0.9943468836F, 0.9943789608F, 0.9944109047F,
  47287. 0.9944427158F, 0.9944743944F, 0.9945059408F, 0.9945373553F,
  47288. 0.9945686384F, 0.9945997902F, 0.9946308112F, 0.9946617017F,
  47289. 0.9946924621F, 0.9947230926F, 0.9947535937F, 0.9947839656F,
  47290. 0.9948142086F, 0.9948443232F, 0.9948743097F, 0.9949041683F,
  47291. 0.9949338995F, 0.9949635035F, 0.9949929807F, 0.9950223315F,
  47292. 0.9950515561F, 0.9950806549F, 0.9951096282F, 0.9951384764F,
  47293. 0.9951671998F, 0.9951957987F, 0.9952242735F, 0.9952526245F,
  47294. 0.9952808520F, 0.9953089564F, 0.9953369380F, 0.9953647971F,
  47295. 0.9953925340F, 0.9954201491F, 0.9954476428F, 0.9954750153F,
  47296. 0.9955022670F, 0.9955293981F, 0.9955564092F, 0.9955833003F,
  47297. 0.9956100720F, 0.9956367245F, 0.9956632582F, 0.9956896733F,
  47298. 0.9957159703F, 0.9957421494F, 0.9957682110F, 0.9957941553F,
  47299. 0.9958199828F, 0.9958456937F, 0.9958712884F, 0.9958967672F,
  47300. 0.9959221305F, 0.9959473784F, 0.9959725115F, 0.9959975300F,
  47301. 0.9960224342F, 0.9960472244F, 0.9960719011F, 0.9960964644F,
  47302. 0.9961209148F, 0.9961452525F, 0.9961694779F, 0.9961935913F,
  47303. 0.9962175930F, 0.9962414834F, 0.9962652627F, 0.9962889313F,
  47304. 0.9963124895F, 0.9963359377F, 0.9963592761F, 0.9963825051F,
  47305. 0.9964056250F, 0.9964286361F, 0.9964515387F, 0.9964743332F,
  47306. 0.9964970198F, 0.9965195990F, 0.9965420709F, 0.9965644360F,
  47307. 0.9965866946F, 0.9966088469F, 0.9966308932F, 0.9966528340F,
  47308. 0.9966746695F, 0.9966964001F, 0.9967180260F, 0.9967395475F,
  47309. 0.9967609651F, 0.9967822789F, 0.9968034894F, 0.9968245968F,
  47310. 0.9968456014F, 0.9968665036F, 0.9968873037F, 0.9969080019F,
  47311. 0.9969285987F, 0.9969490942F, 0.9969694889F, 0.9969897830F,
  47312. 0.9970099769F, 0.9970300708F, 0.9970500651F, 0.9970699601F,
  47313. 0.9970897561F, 0.9971094533F, 0.9971290522F, 0.9971485531F,
  47314. 0.9971679561F, 0.9971872617F, 0.9972064702F, 0.9972255818F,
  47315. 0.9972445968F, 0.9972635157F, 0.9972823386F, 0.9973010659F,
  47316. 0.9973196980F, 0.9973382350F, 0.9973566773F, 0.9973750253F,
  47317. 0.9973932791F, 0.9974114392F, 0.9974295059F, 0.9974474793F,
  47318. 0.9974653599F, 0.9974831480F, 0.9975008438F, 0.9975184476F,
  47319. 0.9975359598F, 0.9975533806F, 0.9975707104F, 0.9975879495F,
  47320. 0.9976050981F, 0.9976221566F, 0.9976391252F, 0.9976560043F,
  47321. 0.9976727941F, 0.9976894950F, 0.9977061073F, 0.9977226312F,
  47322. 0.9977390671F, 0.9977554152F, 0.9977716759F, 0.9977878495F,
  47323. 0.9978039361F, 0.9978199363F, 0.9978358501F, 0.9978516780F,
  47324. 0.9978674202F, 0.9978830771F, 0.9978986488F, 0.9979141358F,
  47325. 0.9979295383F, 0.9979448566F, 0.9979600909F, 0.9979752417F,
  47326. 0.9979903091F, 0.9980052936F, 0.9980201952F, 0.9980350145F,
  47327. 0.9980497515F, 0.9980644067F, 0.9980789804F, 0.9980934727F,
  47328. 0.9981078841F, 0.9981222147F, 0.9981364649F, 0.9981506350F,
  47329. 0.9981647253F, 0.9981787360F, 0.9981926674F, 0.9982065199F,
  47330. 0.9982202936F, 0.9982339890F, 0.9982476062F, 0.9982611456F,
  47331. 0.9982746074F, 0.9982879920F, 0.9983012996F, 0.9983145304F,
  47332. 0.9983276849F, 0.9983407632F, 0.9983537657F, 0.9983666926F,
  47333. 0.9983795442F, 0.9983923208F, 0.9984050226F, 0.9984176501F,
  47334. 0.9984302033F, 0.9984426827F, 0.9984550884F, 0.9984674208F,
  47335. 0.9984796802F, 0.9984918667F, 0.9985039808F, 0.9985160227F,
  47336. 0.9985279926F, 0.9985398909F, 0.9985517177F, 0.9985634734F,
  47337. 0.9985751583F, 0.9985867727F, 0.9985983167F, 0.9986097907F,
  47338. 0.9986211949F, 0.9986325297F, 0.9986437953F, 0.9986549919F,
  47339. 0.9986661199F, 0.9986771795F, 0.9986881710F, 0.9986990946F,
  47340. 0.9987099507F, 0.9987207394F, 0.9987314611F, 0.9987421161F,
  47341. 0.9987527045F, 0.9987632267F, 0.9987736829F, 0.9987840734F,
  47342. 0.9987943985F, 0.9988046584F, 0.9988148534F, 0.9988249838F,
  47343. 0.9988350498F, 0.9988450516F, 0.9988549897F, 0.9988648641F,
  47344. 0.9988746753F, 0.9988844233F, 0.9988941086F, 0.9989037313F,
  47345. 0.9989132918F, 0.9989227902F, 0.9989322269F, 0.9989416021F,
  47346. 0.9989509160F, 0.9989601690F, 0.9989693613F, 0.9989784931F,
  47347. 0.9989875647F, 0.9989965763F, 0.9990055283F, 0.9990144208F,
  47348. 0.9990232541F, 0.9990320286F, 0.9990407443F, 0.9990494016F,
  47349. 0.9990580008F, 0.9990665421F, 0.9990750257F, 0.9990834519F,
  47350. 0.9990918209F, 0.9991001331F, 0.9991083886F, 0.9991165877F,
  47351. 0.9991247307F, 0.9991328177F, 0.9991408491F, 0.9991488251F,
  47352. 0.9991567460F, 0.9991646119F, 0.9991724232F, 0.9991801801F,
  47353. 0.9991878828F, 0.9991955316F, 0.9992031267F, 0.9992106684F,
  47354. 0.9992181569F, 0.9992255925F, 0.9992329753F, 0.9992403057F,
  47355. 0.9992475839F, 0.9992548101F, 0.9992619846F, 0.9992691076F,
  47356. 0.9992761793F, 0.9992832001F, 0.9992901701F, 0.9992970895F,
  47357. 0.9993039587F, 0.9993107777F, 0.9993175470F, 0.9993242667F,
  47358. 0.9993309371F, 0.9993375583F, 0.9993441307F, 0.9993506545F,
  47359. 0.9993571298F, 0.9993635570F, 0.9993699362F, 0.9993762678F,
  47360. 0.9993825519F, 0.9993887887F, 0.9993949785F, 0.9994011216F,
  47361. 0.9994072181F, 0.9994132683F, 0.9994192725F, 0.9994252307F,
  47362. 0.9994311434F, 0.9994370107F, 0.9994428327F, 0.9994486099F,
  47363. 0.9994543423F, 0.9994600303F, 0.9994656739F, 0.9994712736F,
  47364. 0.9994768294F, 0.9994823417F, 0.9994878105F, 0.9994932363F,
  47365. 0.9994986191F, 0.9995039592F, 0.9995092568F, 0.9995145122F,
  47366. 0.9995197256F, 0.9995248971F, 0.9995300270F, 0.9995351156F,
  47367. 0.9995401630F, 0.9995451695F, 0.9995501352F, 0.9995550604F,
  47368. 0.9995599454F, 0.9995647903F, 0.9995695953F, 0.9995743607F,
  47369. 0.9995790866F, 0.9995837734F, 0.9995884211F, 0.9995930300F,
  47370. 0.9995976004F, 0.9996021324F, 0.9996066263F, 0.9996110822F,
  47371. 0.9996155004F, 0.9996198810F, 0.9996242244F, 0.9996285306F,
  47372. 0.9996327999F, 0.9996370326F, 0.9996412287F, 0.9996453886F,
  47373. 0.9996495125F, 0.9996536004F, 0.9996576527F, 0.9996616696F,
  47374. 0.9996656512F, 0.9996695977F, 0.9996735094F, 0.9996773865F,
  47375. 0.9996812291F, 0.9996850374F, 0.9996888118F, 0.9996925523F,
  47376. 0.9996962591F, 0.9996999325F, 0.9997035727F, 0.9997071798F,
  47377. 0.9997107541F, 0.9997142957F, 0.9997178049F, 0.9997212818F,
  47378. 0.9997247266F, 0.9997281396F, 0.9997315209F, 0.9997348708F,
  47379. 0.9997381893F, 0.9997414767F, 0.9997447333F, 0.9997479591F,
  47380. 0.9997511544F, 0.9997543194F, 0.9997574542F, 0.9997605591F,
  47381. 0.9997636342F, 0.9997666797F, 0.9997696958F, 0.9997726828F,
  47382. 0.9997756407F, 0.9997785698F, 0.9997814703F, 0.9997843423F,
  47383. 0.9997871860F, 0.9997900016F, 0.9997927894F, 0.9997955494F,
  47384. 0.9997982818F, 0.9998009869F, 0.9998036648F, 0.9998063157F,
  47385. 0.9998089398F, 0.9998115373F, 0.9998141082F, 0.9998166529F,
  47386. 0.9998191715F, 0.9998216642F, 0.9998241311F, 0.9998265724F,
  47387. 0.9998289884F, 0.9998313790F, 0.9998337447F, 0.9998360854F,
  47388. 0.9998384015F, 0.9998406930F, 0.9998429602F, 0.9998452031F,
  47389. 0.9998474221F, 0.9998496171F, 0.9998517885F, 0.9998539364F,
  47390. 0.9998560610F, 0.9998581624F, 0.9998602407F, 0.9998622962F,
  47391. 0.9998643291F, 0.9998663394F, 0.9998683274F, 0.9998702932F,
  47392. 0.9998722370F, 0.9998741589F, 0.9998760591F, 0.9998779378F,
  47393. 0.9998797952F, 0.9998816313F, 0.9998834464F, 0.9998852406F,
  47394. 0.9998870141F, 0.9998887670F, 0.9998904995F, 0.9998922117F,
  47395. 0.9998939039F, 0.9998955761F, 0.9998972285F, 0.9998988613F,
  47396. 0.9999004746F, 0.9999020686F, 0.9999036434F, 0.9999051992F,
  47397. 0.9999067362F, 0.9999082544F, 0.9999097541F, 0.9999112354F,
  47398. 0.9999126984F, 0.9999141433F, 0.9999155703F, 0.9999169794F,
  47399. 0.9999183709F, 0.9999197449F, 0.9999211014F, 0.9999224408F,
  47400. 0.9999237631F, 0.9999250684F, 0.9999263570F, 0.9999276289F,
  47401. 0.9999288843F, 0.9999301233F, 0.9999313461F, 0.9999325529F,
  47402. 0.9999337437F, 0.9999349187F, 0.9999360780F, 0.9999372218F,
  47403. 0.9999383503F, 0.9999394635F, 0.9999405616F, 0.9999416447F,
  47404. 0.9999427129F, 0.9999437665F, 0.9999448055F, 0.9999458301F,
  47405. 0.9999468404F, 0.9999478365F, 0.9999488185F, 0.9999497867F,
  47406. 0.9999507411F, 0.9999516819F, 0.9999526091F, 0.9999535230F,
  47407. 0.9999544236F, 0.9999553111F, 0.9999561856F, 0.9999570472F,
  47408. 0.9999578960F, 0.9999587323F, 0.9999595560F, 0.9999603674F,
  47409. 0.9999611666F, 0.9999619536F, 0.9999627286F, 0.9999634917F,
  47410. 0.9999642431F, 0.9999649828F, 0.9999657110F, 0.9999664278F,
  47411. 0.9999671334F, 0.9999678278F, 0.9999685111F, 0.9999691835F,
  47412. 0.9999698451F, 0.9999704960F, 0.9999711364F, 0.9999717662F,
  47413. 0.9999723858F, 0.9999729950F, 0.9999735942F, 0.9999741834F,
  47414. 0.9999747626F, 0.9999753321F, 0.9999758919F, 0.9999764421F,
  47415. 0.9999769828F, 0.9999775143F, 0.9999780364F, 0.9999785495F,
  47416. 0.9999790535F, 0.9999795485F, 0.9999800348F, 0.9999805124F,
  47417. 0.9999809813F, 0.9999814417F, 0.9999818938F, 0.9999823375F,
  47418. 0.9999827731F, 0.9999832005F, 0.9999836200F, 0.9999840316F,
  47419. 0.9999844353F, 0.9999848314F, 0.9999852199F, 0.9999856008F,
  47420. 0.9999859744F, 0.9999863407F, 0.9999866997F, 0.9999870516F,
  47421. 0.9999873965F, 0.9999877345F, 0.9999880656F, 0.9999883900F,
  47422. 0.9999887078F, 0.9999890190F, 0.9999893237F, 0.9999896220F,
  47423. 0.9999899140F, 0.9999901999F, 0.9999904796F, 0.9999907533F,
  47424. 0.9999910211F, 0.9999912830F, 0.9999915391F, 0.9999917896F,
  47425. 0.9999920345F, 0.9999922738F, 0.9999925077F, 0.9999927363F,
  47426. 0.9999929596F, 0.9999931777F, 0.9999933907F, 0.9999935987F,
  47427. 0.9999938018F, 0.9999940000F, 0.9999941934F, 0.9999943820F,
  47428. 0.9999945661F, 0.9999947456F, 0.9999949206F, 0.9999950912F,
  47429. 0.9999952575F, 0.9999954195F, 0.9999955773F, 0.9999957311F,
  47430. 0.9999958807F, 0.9999960265F, 0.9999961683F, 0.9999963063F,
  47431. 0.9999964405F, 0.9999965710F, 0.9999966979F, 0.9999968213F,
  47432. 0.9999969412F, 0.9999970576F, 0.9999971707F, 0.9999972805F,
  47433. 0.9999973871F, 0.9999974905F, 0.9999975909F, 0.9999976881F,
  47434. 0.9999977824F, 0.9999978738F, 0.9999979624F, 0.9999980481F,
  47435. 0.9999981311F, 0.9999982115F, 0.9999982892F, 0.9999983644F,
  47436. 0.9999984370F, 0.9999985072F, 0.9999985750F, 0.9999986405F,
  47437. 0.9999987037F, 0.9999987647F, 0.9999988235F, 0.9999988802F,
  47438. 0.9999989348F, 0.9999989873F, 0.9999990379F, 0.9999990866F,
  47439. 0.9999991334F, 0.9999991784F, 0.9999992217F, 0.9999992632F,
  47440. 0.9999993030F, 0.9999993411F, 0.9999993777F, 0.9999994128F,
  47441. 0.9999994463F, 0.9999994784F, 0.9999995091F, 0.9999995384F,
  47442. 0.9999995663F, 0.9999995930F, 0.9999996184F, 0.9999996426F,
  47443. 0.9999996657F, 0.9999996876F, 0.9999997084F, 0.9999997282F,
  47444. 0.9999997469F, 0.9999997647F, 0.9999997815F, 0.9999997973F,
  47445. 0.9999998123F, 0.9999998265F, 0.9999998398F, 0.9999998524F,
  47446. 0.9999998642F, 0.9999998753F, 0.9999998857F, 0.9999998954F,
  47447. 0.9999999045F, 0.9999999130F, 0.9999999209F, 0.9999999282F,
  47448. 0.9999999351F, 0.9999999414F, 0.9999999472F, 0.9999999526F,
  47449. 0.9999999576F, 0.9999999622F, 0.9999999664F, 0.9999999702F,
  47450. 0.9999999737F, 0.9999999769F, 0.9999999798F, 0.9999999824F,
  47451. 0.9999999847F, 0.9999999868F, 0.9999999887F, 0.9999999904F,
  47452. 0.9999999919F, 0.9999999932F, 0.9999999943F, 0.9999999953F,
  47453. 0.9999999961F, 0.9999999969F, 0.9999999975F, 0.9999999980F,
  47454. 0.9999999985F, 0.9999999988F, 0.9999999991F, 0.9999999993F,
  47455. 0.9999999995F, 0.9999999997F, 0.9999999998F, 0.9999999999F,
  47456. 0.9999999999F, 1.0000000000F, 1.0000000000F, 1.0000000000F,
  47457. 1.0000000000F, 1.0000000000F, 1.0000000000F, 1.0000000000F,
  47458. };
  47459. static float *vwin[8] = {
  47460. vwin64,
  47461. vwin128,
  47462. vwin256,
  47463. vwin512,
  47464. vwin1024,
  47465. vwin2048,
  47466. vwin4096,
  47467. vwin8192,
  47468. };
  47469. float *_vorbis_window_get(int n){
  47470. return vwin[n];
  47471. }
  47472. void _vorbis_apply_window(float *d,int *winno,long *blocksizes,
  47473. int lW,int W,int nW){
  47474. lW=(W?lW:0);
  47475. nW=(W?nW:0);
  47476. {
  47477. float *windowLW=vwin[winno[lW]];
  47478. float *windowNW=vwin[winno[nW]];
  47479. long n=blocksizes[W];
  47480. long ln=blocksizes[lW];
  47481. long rn=blocksizes[nW];
  47482. long leftbegin=n/4-ln/4;
  47483. long leftend=leftbegin+ln/2;
  47484. long rightbegin=n/2+n/4-rn/4;
  47485. long rightend=rightbegin+rn/2;
  47486. int i,p;
  47487. for(i=0;i<leftbegin;i++)
  47488. d[i]=0.f;
  47489. for(p=0;i<leftend;i++,p++)
  47490. d[i]*=windowLW[p];
  47491. for(i=rightbegin,p=rn/2-1;i<rightend;i++,p--)
  47492. d[i]*=windowNW[p];
  47493. for(;i<n;i++)
  47494. d[i]=0.f;
  47495. }
  47496. }
  47497. /********************************************************************
  47498. * *
  47499. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  47500. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  47501. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  47502. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  47503. * *
  47504. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  47505. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  47506. * *
  47507. ********************************************************************
  47508. function: floor backend 0 implementation
  47509. last mod: $Id: floor0.c,v 1.55 2003/09/05 23:17:49 giles Exp $
  47510. ********************************************************************/
  47511. /********************************************************************
  47512. * *
  47513. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  47514. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  47515. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  47516. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  47517. * *
  47518. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  47519. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  47520. * *
  47521. ********************************************************************
  47522. function: LSP (also called LSF) conversion routines
  47523. last mod: $Id: lsp.h,v 1.11 2002/07/11 06:40:49 xiphmont Exp $
  47524. ********************************************************************/
  47525. #define _V_LSP_H_
  47526. extern int vorbis_lpc_to_lsp(float *lpc,float *lsp,int m);
  47527. extern void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,
  47528. float *lsp,int m,
  47529. float amp,float ampoffset);
  47530. typedef struct {
  47531. int ln;
  47532. int m;
  47533. int **linearmap;
  47534. int n[2];
  47535. vorbis_info_floor0 *vi;
  47536. long bits;
  47537. long frames;
  47538. } vorbis_look_floor0;
  47539. /***********************************************/
  47540. static void floor0_free_info(vorbis_info_floor *i){
  47541. vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
  47542. if(info){
  47543. memset(info,0,sizeof(*info));
  47544. _ogg_free(info);
  47545. }
  47546. }
  47547. static void floor0_free_look(vorbis_look_floor *i){
  47548. vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
  47549. if(look){
  47550. if(look->linearmap){
  47551. if(look->linearmap[0])_ogg_free(look->linearmap[0]);
  47552. if(look->linearmap[1])_ogg_free(look->linearmap[1]);
  47553. _ogg_free(look->linearmap);
  47554. }
  47555. memset(look,0,sizeof(*look));
  47556. _ogg_free(look);
  47557. }
  47558. }
  47559. static vorbis_info_floor *floor0_unpack (vorbis_info *vi,oggpack_buffer *opb){
  47560. codec_setup_info *ci=vi->codec_setup;
  47561. int j;
  47562. vorbis_info_floor0 *info=_ogg_malloc(sizeof(*info));
  47563. info->order=oggpack_read(opb,8);
  47564. info->rate=oggpack_read(opb,16);
  47565. info->barkmap=oggpack_read(opb,16);
  47566. info->ampbits=oggpack_read(opb,6);
  47567. info->ampdB=oggpack_read(opb,8);
  47568. info->numbooks=oggpack_read(opb,4)+1;
  47569. if(info->order<1)goto err_out;
  47570. if(info->rate<1)goto err_out;
  47571. if(info->barkmap<1)goto err_out;
  47572. if(info->numbooks<1)goto err_out;
  47573. for(j=0;j<info->numbooks;j++){
  47574. info->books[j]=oggpack_read(opb,8);
  47575. if(info->books[j]<0 || info->books[j]>=ci->books)goto err_out;
  47576. }
  47577. return(info);
  47578. err_out:
  47579. floor0_free_info(info);
  47580. return(NULL);
  47581. }
  47582. /* initialize Bark scale and normalization lookups. We could do this
  47583. with static tables, but Vorbis allows a number of possible
  47584. combinations, so it's best to do it computationally.
  47585. The below is authoritative in terms of defining scale mapping.
  47586. Note that the scale depends on the sampling rate as well as the
  47587. linear block and mapping sizes */
  47588. static void floor0_map_lazy_init(vorbis_block *vb,
  47589. vorbis_info_floor *infoX,
  47590. vorbis_look_floor0 *look){
  47591. if(!look->linearmap[vb->W]){
  47592. vorbis_dsp_state *vd=vb->vd;
  47593. vorbis_info *vi=vd->vi;
  47594. codec_setup_info *ci=vi->codec_setup;
  47595. vorbis_info_floor0 *info=(vorbis_info_floor0 *)infoX;
  47596. int W=vb->W;
  47597. int n=ci->blocksizes[W]/2,j;
  47598. /* we choose a scaling constant so that:
  47599. floor(bark(rate/2-1)*C)=mapped-1
  47600. floor(bark(rate/2)*C)=mapped */
  47601. float scale=look->ln/toBARK(info->rate/2.f);
  47602. /* the mapping from a linear scale to a smaller bark scale is
  47603. straightforward. We do *not* make sure that the linear mapping
  47604. does not skip bark-scale bins; the decoder simply skips them and
  47605. the encoder may do what it wishes in filling them. They're
  47606. necessary in some mapping combinations to keep the scale spacing
  47607. accurate */
  47608. look->linearmap[W]=_ogg_malloc((n+1)*sizeof(**look->linearmap));
  47609. for(j=0;j<n;j++){
  47610. int val=floor( toBARK((info->rate/2.f)/n*j)
  47611. *scale); /* bark numbers represent band edges */
  47612. if(val>=look->ln)val=look->ln-1; /* guard against the approximation */
  47613. look->linearmap[W][j]=val;
  47614. }
  47615. look->linearmap[W][j]=-1;
  47616. look->n[W]=n;
  47617. }
  47618. }
  47619. static vorbis_look_floor *floor0_look(vorbis_dsp_state *vd,
  47620. vorbis_info_floor *i){
  47621. vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
  47622. vorbis_look_floor0 *look=_ogg_calloc(1,sizeof(*look));
  47623. look->m=info->order;
  47624. look->ln=info->barkmap;
  47625. look->vi=info;
  47626. look->linearmap=_ogg_calloc(2,sizeof(*look->linearmap));
  47627. return look;
  47628. }
  47629. static void *floor0_inverse1(vorbis_block *vb,vorbis_look_floor *i){
  47630. vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
  47631. vorbis_info_floor0 *info=look->vi;
  47632. int j,k;
  47633. int ampraw=oggpack_read(&vb->opb,info->ampbits);
  47634. if(ampraw>0){ /* also handles the -1 out of data case */
  47635. long maxval=(1<<info->ampbits)-1;
  47636. float amp=(float)ampraw/maxval*info->ampdB;
  47637. int booknum=oggpack_read(&vb->opb,_ilog(info->numbooks));
  47638. if(booknum!=-1 && booknum<info->numbooks){ /* be paranoid */
  47639. codec_setup_info *ci=vb->vd->vi->codec_setup;
  47640. codebook *b=ci->fullbooks+info->books[booknum];
  47641. float last=0.f;
  47642. /* the additional b->dim is a guard against any possible stack
  47643. smash; b->dim is provably more than we can overflow the
  47644. vector */
  47645. float *lsp=_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+b->dim+1));
  47646. for(j=0;j<look->m;j+=b->dim)
  47647. if(vorbis_book_decodev_set(b,lsp+j,&vb->opb,b->dim)==-1)goto eop;
  47648. for(j=0;j<look->m;){
  47649. for(k=0;k<b->dim;k++,j++)lsp[j]+=last;
  47650. last=lsp[j-1];
  47651. }
  47652. lsp[look->m]=amp;
  47653. return(lsp);
  47654. }
  47655. }
  47656. eop:
  47657. return(NULL);
  47658. }
  47659. static int floor0_inverse2(vorbis_block *vb,vorbis_look_floor *i,
  47660. void *memo,float *out){
  47661. vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
  47662. vorbis_info_floor0 *info=look->vi;
  47663. floor0_map_lazy_init(vb,info,look);
  47664. if(memo){
  47665. float *lsp=(float *)memo;
  47666. float amp=lsp[look->m];
  47667. /* take the coefficients back to a spectral envelope curve */
  47668. vorbis_lsp_to_curve(out,
  47669. look->linearmap[vb->W],
  47670. look->n[vb->W],
  47671. look->ln,
  47672. lsp,look->m,amp,(float)info->ampdB);
  47673. return(1);
  47674. }
  47675. memset(out,0,sizeof(*out)*look->n[vb->W]);
  47676. return(0);
  47677. }
  47678. /* export hooks */
  47679. vorbis_func_floor floor0_exportbundle={
  47680. NULL,&floor0_unpack,&floor0_look,&floor0_free_info,
  47681. &floor0_free_look,&floor0_inverse1,&floor0_inverse2
  47682. };
  47683. /********************************************************************
  47684. * *
  47685. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  47686. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  47687. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  47688. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  47689. * *
  47690. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  47691. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  47692. * *
  47693. ********************************************************************
  47694. function: LSP (also called LSF) conversion routines
  47695. last mod: $Id: lsp.c,v 1.24 2002/10/16 07:44:21 xiphmont Exp $
  47696. The LSP generation code is taken (with minimal modification and a
  47697. few bugfixes) from "On the Computation of the LSP Frequencies" by
  47698. Joseph Rothweiler (see http://www.rothweiler.us for contact info).
  47699. The paper is available at:
  47700. http://www.myown1.com/joe/lsf
  47701. ********************************************************************/
  47702. /* Note that the lpc-lsp conversion finds the roots of polynomial with
  47703. an iterative root polisher (CACM algorithm 283). It *is* possible
  47704. to confuse this algorithm into not converging; that should only
  47705. happen with absurdly closely spaced roots (very sharp peaks in the
  47706. LPC f response) which in turn should be impossible in our use of
  47707. the code. If this *does* happen anyway, it's a bug in the floor
  47708. finder; find the cause of the confusion (probably a single bin
  47709. spike or accidental near-float-limit resolution problems) and
  47710. correct it. */
  47711. /********************************************************************
  47712. * *
  47713. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  47714. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  47715. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  47716. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  47717. * *
  47718. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  47719. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  47720. * *
  47721. ********************************************************************
  47722. function: lookup based functions
  47723. last mod: $Id: lookup.h,v 1.7 2002/07/11 06:40:49 xiphmont Exp $
  47724. ********************************************************************/
  47725. #ifdef FLOAT_LOOKUP
  47726. extern float vorbis_coslook(float a);
  47727. extern float vorbis_invsqlook(float a);
  47728. extern float vorbis_invsq2explook(int a);
  47729. extern float vorbis_fromdBlook(float a);
  47730. #endif
  47731. #ifdef INT_LOOKUP
  47732. extern long vorbis_invsqlook_i(long a,long e);
  47733. extern long vorbis_coslook_i(long a);
  47734. extern float vorbis_fromdBlook_i(long a);
  47735. #endif
  47736. /* three possible LSP to f curve functions; the exact computation
  47737. (float), a lookup based float implementation, and an integer
  47738. implementation. The float lookup is likely the optimal choice on
  47739. any machine with an FPU. The integer implementation is *not* fixed
  47740. point (due to the need for a large dynamic range and thus a
  47741. seperately tracked exponent) and thus much more complex than the
  47742. relatively simple float implementations. It's mostly for future
  47743. work on a fully fixed point implementation for processors like the
  47744. ARM family. */
  47745. /* undefine both for the 'old' but more precise implementation */
  47746. #define FLOAT_LOOKUP
  47747. #undef INT_LOOKUP
  47748. #ifdef FLOAT_LOOKUP
  47749. /********************************************************************
  47750. * *
  47751. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  47752. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  47753. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  47754. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  47755. * *
  47756. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  47757. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  47758. * *
  47759. ********************************************************************
  47760. function: lookup based functions
  47761. last mod: $Id: lookup.c,v 1.9 2002/01/22 08:06:07 xiphmont Exp $
  47762. ********************************************************************/
  47763. /********************************************************************
  47764. * *
  47765. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  47766. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  47767. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  47768. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  47769. * *
  47770. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  47771. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  47772. * *
  47773. ********************************************************************
  47774. function: lookup data; generated by lookups.pl; edit there
  47775. last mod: $Id: lookup_data.h,v 1.10 2003/01/18 08:09:28 msmith Exp $
  47776. ********************************************************************/
  47777. #ifdef FLOAT_LOOKUP
  47778. #define COS_LOOKUP_SZ 128
  47779. static float COS_LOOKUP[COS_LOOKUP_SZ+1]={
  47780. +1.0000000000000f,+0.9996988186962f,+0.9987954562052f,+0.9972904566787f,
  47781. +0.9951847266722f,+0.9924795345987f,+0.9891765099648f,+0.9852776423889f,
  47782. +0.9807852804032f,+0.9757021300385f,+0.9700312531945f,+0.9637760657954f,
  47783. +0.9569403357322f,+0.9495281805930f,+0.9415440651830f,+0.9329927988347f,
  47784. +0.9238795325113f,+0.9142097557035f,+0.9039892931234f,+0.8932243011955f,
  47785. +0.8819212643484f,+0.8700869911087f,+0.8577286100003f,+0.8448535652497f,
  47786. +0.8314696123025f,+0.8175848131516f,+0.8032075314806f,+0.7883464276266f,
  47787. +0.7730104533627f,+0.7572088465065f,+0.7409511253550f,+0.7242470829515f,
  47788. +0.7071067811865f,+0.6895405447371f,+0.6715589548470f,+0.6531728429538f,
  47789. +0.6343932841636f,+0.6152315905806f,+0.5956993044924f,+0.5758081914178f,
  47790. +0.5555702330196f,+0.5349976198871f,+0.5141027441932f,+0.4928981922298f,
  47791. +0.4713967368260f,+0.4496113296546f,+0.4275550934303f,+0.4052413140050f,
  47792. +0.3826834323651f,+0.3598950365350f,+0.3368898533922f,+0.3136817403989f,
  47793. +0.2902846772545f,+0.2667127574749f,+0.2429801799033f,+0.2191012401569f,
  47794. +0.1950903220161f,+0.1709618887603f,+0.1467304744554f,+0.1224106751992f,
  47795. +0.0980171403296f,+0.0735645635997f,+0.0490676743274f,+0.0245412285229f,
  47796. +0.0000000000000f,-0.0245412285229f,-0.0490676743274f,-0.0735645635997f,
  47797. -0.0980171403296f,-0.1224106751992f,-0.1467304744554f,-0.1709618887603f,
  47798. -0.1950903220161f,-0.2191012401569f,-0.2429801799033f,-0.2667127574749f,
  47799. -0.2902846772545f,-0.3136817403989f,-0.3368898533922f,-0.3598950365350f,
  47800. -0.3826834323651f,-0.4052413140050f,-0.4275550934303f,-0.4496113296546f,
  47801. -0.4713967368260f,-0.4928981922298f,-0.5141027441932f,-0.5349976198871f,
  47802. -0.5555702330196f,-0.5758081914178f,-0.5956993044924f,-0.6152315905806f,
  47803. -0.6343932841636f,-0.6531728429538f,-0.6715589548470f,-0.6895405447371f,
  47804. -0.7071067811865f,-0.7242470829515f,-0.7409511253550f,-0.7572088465065f,
  47805. -0.7730104533627f,-0.7883464276266f,-0.8032075314806f,-0.8175848131516f,
  47806. -0.8314696123025f,-0.8448535652497f,-0.8577286100003f,-0.8700869911087f,
  47807. -0.8819212643484f,-0.8932243011955f,-0.9039892931234f,-0.9142097557035f,
  47808. -0.9238795325113f,-0.9329927988347f,-0.9415440651830f,-0.9495281805930f,
  47809. -0.9569403357322f,-0.9637760657954f,-0.9700312531945f,-0.9757021300385f,
  47810. -0.9807852804032f,-0.9852776423889f,-0.9891765099648f,-0.9924795345987f,
  47811. -0.9951847266722f,-0.9972904566787f,-0.9987954562052f,-0.9996988186962f,
  47812. -1.0000000000000f,
  47813. };
  47814. #define INVSQ_LOOKUP_SZ 32
  47815. static float INVSQ_LOOKUP[INVSQ_LOOKUP_SZ+1]={
  47816. 1.414213562373f,1.392621247646f,1.371988681140f,1.352246807566f,
  47817. 1.333333333333f,1.315191898443f,1.297771369046f,1.281025230441f,
  47818. 1.264911064067f,1.249390095109f,1.234426799697f,1.219988562661f,
  47819. 1.206045378311f,1.192569588000f,1.179535649239f,1.166919931983f,
  47820. 1.154700538379f,1.142857142857f,1.131370849898f,1.120224067222f,
  47821. 1.109400392450f,1.098884511590f,1.088662107904f,1.078719779941f,
  47822. 1.069044967650f,1.059625885652f,1.050451462878f,1.041511287847f,
  47823. 1.032795558989f,1.024295039463f,1.016001016002f,1.007905261358f,
  47824. 1.000000000000f,
  47825. };
  47826. #define INVSQ2EXP_LOOKUP_MIN (-32)
  47827. #define INVSQ2EXP_LOOKUP_MAX 32
  47828. static float INVSQ2EXP_LOOKUP[INVSQ2EXP_LOOKUP_MAX-\
  47829. INVSQ2EXP_LOOKUP_MIN+1]={
  47830. 65536.f, 46340.95001f, 32768.f, 23170.47501f,
  47831. 16384.f, 11585.2375f, 8192.f, 5792.618751f,
  47832. 4096.f, 2896.309376f, 2048.f, 1448.154688f,
  47833. 1024.f, 724.0773439f, 512.f, 362.038672f,
  47834. 256.f, 181.019336f, 128.f, 90.50966799f,
  47835. 64.f, 45.254834f, 32.f, 22.627417f,
  47836. 16.f, 11.3137085f, 8.f, 5.656854249f,
  47837. 4.f, 2.828427125f, 2.f, 1.414213562f,
  47838. 1.f, 0.7071067812f, 0.5f, 0.3535533906f,
  47839. 0.25f, 0.1767766953f, 0.125f, 0.08838834765f,
  47840. 0.0625f, 0.04419417382f, 0.03125f, 0.02209708691f,
  47841. 0.015625f, 0.01104854346f, 0.0078125f, 0.005524271728f,
  47842. 0.00390625f, 0.002762135864f, 0.001953125f, 0.001381067932f,
  47843. 0.0009765625f, 0.000690533966f, 0.00048828125f, 0.000345266983f,
  47844. 0.000244140625f,0.0001726334915f,0.0001220703125f,8.631674575e-05f,
  47845. 6.103515625e-05f,4.315837288e-05f,3.051757812e-05f,2.157918644e-05f,
  47846. 1.525878906e-05f,
  47847. };
  47848. #endif
  47849. #define FROMdB_LOOKUP_SZ 35
  47850. #define FROMdB2_LOOKUP_SZ 32
  47851. #define FROMdB_SHIFT 5
  47852. #define FROMdB2_SHIFT 3
  47853. #define FROMdB2_MASK 31
  47854. static float FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={
  47855. 1.f, 0.6309573445f, 0.3981071706f, 0.2511886432f,
  47856. 0.1584893192f, 0.1f, 0.06309573445f, 0.03981071706f,
  47857. 0.02511886432f, 0.01584893192f, 0.01f, 0.006309573445f,
  47858. 0.003981071706f, 0.002511886432f, 0.001584893192f, 0.001f,
  47859. 0.0006309573445f,0.0003981071706f,0.0002511886432f,0.0001584893192f,
  47860. 0.0001f,6.309573445e-05f,3.981071706e-05f,2.511886432e-05f,
  47861. 1.584893192e-05f, 1e-05f,6.309573445e-06f,3.981071706e-06f,
  47862. 2.511886432e-06f,1.584893192e-06f, 1e-06f,6.309573445e-07f,
  47863. 3.981071706e-07f,2.511886432e-07f,1.584893192e-07f,
  47864. };
  47865. static float FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={
  47866. 0.9928302478f, 0.9786445908f, 0.9646616199f, 0.9508784391f,
  47867. 0.9372921937f, 0.92390007f, 0.9106992942f, 0.8976871324f,
  47868. 0.8848608897f, 0.8722179097f, 0.8597555737f, 0.8474713009f,
  47869. 0.835362547f, 0.8234268041f, 0.8116616003f, 0.8000644989f,
  47870. 0.7886330981f, 0.7773650302f, 0.7662579617f, 0.755309592f,
  47871. 0.7445176537f, 0.7338799116f, 0.7233941627f, 0.7130582353f,
  47872. 0.7028699885f, 0.6928273125f, 0.6829281272f, 0.6731703824f,
  47873. 0.6635520573f, 0.6540711597f, 0.6447257262f, 0.6355138211f,
  47874. };
  47875. #ifdef INT_LOOKUP
  47876. #define INVSQ_LOOKUP_I_SHIFT 10
  47877. #define INVSQ_LOOKUP_I_MASK 1023
  47878. static long INVSQ_LOOKUP_I[64+1]={
  47879. 92682l, 91966l, 91267l, 90583l,
  47880. 89915l, 89261l, 88621l, 87995l,
  47881. 87381l, 86781l, 86192l, 85616l,
  47882. 85051l, 84497l, 83953l, 83420l,
  47883. 82897l, 82384l, 81880l, 81385l,
  47884. 80899l, 80422l, 79953l, 79492l,
  47885. 79039l, 78594l, 78156l, 77726l,
  47886. 77302l, 76885l, 76475l, 76072l,
  47887. 75674l, 75283l, 74898l, 74519l,
  47888. 74146l, 73778l, 73415l, 73058l,
  47889. 72706l, 72359l, 72016l, 71679l,
  47890. 71347l, 71019l, 70695l, 70376l,
  47891. 70061l, 69750l, 69444l, 69141l,
  47892. 68842l, 68548l, 68256l, 67969l,
  47893. 67685l, 67405l, 67128l, 66855l,
  47894. 66585l, 66318l, 66054l, 65794l,
  47895. 65536l,
  47896. };
  47897. #define COS_LOOKUP_I_SHIFT 9
  47898. #define COS_LOOKUP_I_MASK 511
  47899. #define COS_LOOKUP_I_SZ 128
  47900. static long COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={
  47901. 16384l, 16379l, 16364l, 16340l,
  47902. 16305l, 16261l, 16207l, 16143l,
  47903. 16069l, 15986l, 15893l, 15791l,
  47904. 15679l, 15557l, 15426l, 15286l,
  47905. 15137l, 14978l, 14811l, 14635l,
  47906. 14449l, 14256l, 14053l, 13842l,
  47907. 13623l, 13395l, 13160l, 12916l,
  47908. 12665l, 12406l, 12140l, 11866l,
  47909. 11585l, 11297l, 11003l, 10702l,
  47910. 10394l, 10080l, 9760l, 9434l,
  47911. 9102l, 8765l, 8423l, 8076l,
  47912. 7723l, 7366l, 7005l, 6639l,
  47913. 6270l, 5897l, 5520l, 5139l,
  47914. 4756l, 4370l, 3981l, 3590l,
  47915. 3196l, 2801l, 2404l, 2006l,
  47916. 1606l, 1205l, 804l, 402l,
  47917. 0l, -401l, -803l, -1204l,
  47918. -1605l, -2005l, -2403l, -2800l,
  47919. -3195l, -3589l, -3980l, -4369l,
  47920. -4755l, -5138l, -5519l, -5896l,
  47921. -6269l, -6638l, -7004l, -7365l,
  47922. -7722l, -8075l, -8422l, -8764l,
  47923. -9101l, -9433l, -9759l, -10079l,
  47924. -10393l, -10701l, -11002l, -11296l,
  47925. -11584l, -11865l, -12139l, -12405l,
  47926. -12664l, -12915l, -13159l, -13394l,
  47927. -13622l, -13841l, -14052l, -14255l,
  47928. -14448l, -14634l, -14810l, -14977l,
  47929. -15136l, -15285l, -15425l, -15556l,
  47930. -15678l, -15790l, -15892l, -15985l,
  47931. -16068l, -16142l, -16206l, -16260l,
  47932. -16304l, -16339l, -16363l, -16378l,
  47933. -16383l,
  47934. };
  47935. #endif
  47936. #ifdef FLOAT_LOOKUP
  47937. /* interpolated lookup based cos function, domain 0 to PI only */
  47938. float vorbis_coslook(float a){
  47939. double d=a*(.31830989*(float)COS_LOOKUP_SZ);
  47940. int i=vorbis_ftoi(d-.5);
  47941. return COS_LOOKUP[i]+ (d-i)*(COS_LOOKUP[i+1]-COS_LOOKUP[i]);
  47942. }
  47943. /* interpolated 1./sqrt(p) where .5 <= p < 1. */
  47944. float vorbis_invsqlook(float a){
  47945. double d=a*(2.f*(float)INVSQ_LOOKUP_SZ)-(float)INVSQ_LOOKUP_SZ;
  47946. int i=vorbis_ftoi(d-.5f);
  47947. return INVSQ_LOOKUP[i]+ (d-i)*(INVSQ_LOOKUP[i+1]-INVSQ_LOOKUP[i]);
  47948. }
  47949. /* interpolated 1./sqrt(p) where .5 <= p < 1. */
  47950. float vorbis_invsq2explook(int a){
  47951. return INVSQ2EXP_LOOKUP[a-INVSQ2EXP_LOOKUP_MIN];
  47952. }
  47953. /* interpolated lookup based fromdB function, domain -140dB to 0dB only */
  47954. float vorbis_fromdBlook(float a){
  47955. int i=vorbis_ftoi(a*((float)(-(1<<FROMdB2_SHIFT)))-.5f);
  47956. return (i<0)?1.f:
  47957. ((i>=(FROMdB_LOOKUP_SZ<<FROMdB_SHIFT))?0.f:
  47958. FROMdB_LOOKUP[i>>FROMdB_SHIFT]*FROMdB2_LOOKUP[i&FROMdB2_MASK]);
  47959. }
  47960. #endif
  47961. #ifdef INT_LOOKUP
  47962. /* interpolated 1./sqrt(p) where .5 <= a < 1. (.100000... to .111111...) in
  47963. 16.16 format
  47964. returns in m.8 format */
  47965. long vorbis_invsqlook_i(long a,long e){
  47966. long i=(a&0x7fff)>>(INVSQ_LOOKUP_I_SHIFT-1);
  47967. long d=(a&INVSQ_LOOKUP_I_MASK)<<(16-INVSQ_LOOKUP_I_SHIFT); /* 0.16 */
  47968. long val=INVSQ_LOOKUP_I[i]- /* 1.16 */
  47969. (((INVSQ_LOOKUP_I[i]-INVSQ_LOOKUP_I[i+1])* /* 0.16 */
  47970. d)>>16); /* result 1.16 */
  47971. e+=32;
  47972. if(e&1)val=(val*5792)>>13; /* multiply val by 1/sqrt(2) */
  47973. e=(e>>1)-8;
  47974. return(val>>e);
  47975. }
  47976. /* interpolated lookup based fromdB function, domain -140dB to 0dB only */
  47977. /* a is in n.12 format */
  47978. float vorbis_fromdBlook_i(long a){
  47979. int i=(-a)>>(12-FROMdB2_SHIFT);
  47980. return (i<0)?1.f:
  47981. ((i>=(FROMdB_LOOKUP_SZ<<FROMdB_SHIFT))?0.f:
  47982. FROMdB_LOOKUP[i>>FROMdB_SHIFT]*FROMdB2_LOOKUP[i&FROMdB2_MASK]);
  47983. }
  47984. /* interpolated lookup based cos function, domain 0 to PI only */
  47985. /* a is in 0.16 format, where 0==0, 2^^16-1==PI, return 0.14 */
  47986. long vorbis_coslook_i(long a){
  47987. int i=a>>COS_LOOKUP_I_SHIFT;
  47988. int d=a&COS_LOOKUP_I_MASK;
  47989. return COS_LOOKUP_I[i]- ((d*(COS_LOOKUP_I[i]-COS_LOOKUP_I[i+1]))>>
  47990. COS_LOOKUP_I_SHIFT);
  47991. }
  47992. #endif
  47993. /* side effect: changes *lsp to cosines of lsp */
  47994. void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
  47995. float amp,float ampoffset){
  47996. int i;
  47997. float wdel=M_PI/ln;
  47998. vorbis_fpu_control fpu;
  47999. vorbis_fpu_setround(&fpu);
  48000. for(i=0;i<m;i++)lsp[i]=vorbis_coslook(lsp[i]);
  48001. i=0;
  48002. while(i<n){
  48003. int k=map[i];
  48004. int qexp;
  48005. float p=.7071067812f;
  48006. float q=.7071067812f;
  48007. float w=vorbis_coslook(wdel*k);
  48008. float *ftmp=lsp;
  48009. int c=m>>1;
  48010. do{
  48011. q*=ftmp[0]-w;
  48012. p*=ftmp[1]-w;
  48013. ftmp+=2;
  48014. }while(--c);
  48015. if(m&1){
  48016. /* odd order filter; slightly assymetric */
  48017. /* the last coefficient */
  48018. q*=ftmp[0]-w;
  48019. q*=q;
  48020. p*=p*(1.f-w*w);
  48021. }else{
  48022. /* even order filter; still symmetric */
  48023. q*=q*(1.f+w);
  48024. p*=p*(1.f-w);
  48025. }
  48026. q=frexp(p+q,&qexp);
  48027. q=vorbis_fromdBlook(amp*
  48028. vorbis_invsqlook(q)*
  48029. vorbis_invsq2explook(qexp+m)-
  48030. ampoffset);
  48031. do{
  48032. curve[i++]*=q;
  48033. }while(map[i]==k);
  48034. }
  48035. vorbis_fpu_restore(fpu);
  48036. }
  48037. #else
  48038. #ifdef INT_LOOKUP
  48039. static int MLOOP_1[64]={
  48040. 0,10,11,11, 12,12,12,12, 13,13,13,13, 13,13,13,13,
  48041. 14,14,14,14, 14,14,14,14, 14,14,14,14, 14,14,14,14,
  48042. 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
  48043. 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
  48044. };
  48045. static int MLOOP_2[64]={
  48046. 0,4,5,5, 6,6,6,6, 7,7,7,7, 7,7,7,7,
  48047. 8,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8,
  48048. 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9,
  48049. 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9,
  48050. };
  48051. static int MLOOP_3[8]={0,1,2,2,3,3,3,3};
  48052. /* side effect: changes *lsp to cosines of lsp */
  48053. void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
  48054. float amp,float ampoffset){
  48055. /* 0 <= m < 256 */
  48056. /* set up for using all int later */
  48057. int i;
  48058. int ampoffseti=rint(ampoffset*4096.f);
  48059. int ampi=rint(amp*16.f);
  48060. long *ilsp=alloca(m*sizeof(*ilsp));
  48061. for(i=0;i<m;i++)ilsp[i]=vorbis_coslook_i(lsp[i]/M_PI*65536.f+.5f);
  48062. i=0;
  48063. while(i<n){
  48064. int j,k=map[i];
  48065. unsigned long pi=46341; /* 2**-.5 in 0.16 */
  48066. unsigned long qi=46341;
  48067. int qexp=0,shift;
  48068. long wi=vorbis_coslook_i(k*65536/ln);
  48069. qi*=labs(ilsp[0]-wi);
  48070. pi*=labs(ilsp[1]-wi);
  48071. for(j=3;j<m;j+=2){
  48072. if(!(shift=MLOOP_1[(pi|qi)>>25]))
  48073. if(!(shift=MLOOP_2[(pi|qi)>>19]))
  48074. shift=MLOOP_3[(pi|qi)>>16];
  48075. qi=(qi>>shift)*labs(ilsp[j-1]-wi);
  48076. pi=(pi>>shift)*labs(ilsp[j]-wi);
  48077. qexp+=shift;
  48078. }
  48079. if(!(shift=MLOOP_1[(pi|qi)>>25]))
  48080. if(!(shift=MLOOP_2[(pi|qi)>>19]))
  48081. shift=MLOOP_3[(pi|qi)>>16];
  48082. /* pi,qi normalized collectively, both tracked using qexp */
  48083. if(m&1){
  48084. /* odd order filter; slightly assymetric */
  48085. /* the last coefficient */
  48086. qi=(qi>>shift)*labs(ilsp[j-1]-wi);
  48087. pi=(pi>>shift)<<14;
  48088. qexp+=shift;
  48089. if(!(shift=MLOOP_1[(pi|qi)>>25]))
  48090. if(!(shift=MLOOP_2[(pi|qi)>>19]))
  48091. shift=MLOOP_3[(pi|qi)>>16];
  48092. pi>>=shift;
  48093. qi>>=shift;
  48094. qexp+=shift-14*((m+1)>>1);
  48095. pi=((pi*pi)>>16);
  48096. qi=((qi*qi)>>16);
  48097. qexp=qexp*2+m;
  48098. pi*=(1<<14)-((wi*wi)>>14);
  48099. qi+=pi>>14;
  48100. }else{
  48101. /* even order filter; still symmetric */
  48102. /* p*=p(1-w), q*=q(1+w), let normalization drift because it isn't
  48103. worth tracking step by step */
  48104. pi>>=shift;
  48105. qi>>=shift;
  48106. qexp+=shift-7*m;
  48107. pi=((pi*pi)>>16);
  48108. qi=((qi*qi)>>16);
  48109. qexp=qexp*2+m;
  48110. pi*=(1<<14)-wi;
  48111. qi*=(1<<14)+wi;
  48112. qi=(qi+pi)>>14;
  48113. }
  48114. /* we've let the normalization drift because it wasn't important;
  48115. however, for the lookup, things must be normalized again. We
  48116. need at most one right shift or a number of left shifts */
  48117. if(qi&0xffff0000){ /* checks for 1.xxxxxxxxxxxxxxxx */
  48118. qi>>=1; qexp++;
  48119. }else
  48120. while(qi && !(qi&0x8000)){ /* checks for 0.0xxxxxxxxxxxxxxx or less*/
  48121. qi<<=1; qexp--;
  48122. }
  48123. amp=vorbis_fromdBlook_i(ampi* /* n.4 */
  48124. vorbis_invsqlook_i(qi,qexp)-
  48125. /* m.8, m+n<=8 */
  48126. ampoffseti); /* 8.12[0] */
  48127. curve[i]*=amp;
  48128. while(map[++i]==k)curve[i]*=amp;
  48129. }
  48130. }
  48131. #else
  48132. /* old, nonoptimized but simple version for any poor sap who needs to
  48133. figure out what the hell this code does, or wants the other
  48134. fraction of a dB precision */
  48135. /* side effect: changes *lsp to cosines of lsp */
  48136. void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
  48137. float amp,float ampoffset){
  48138. int i;
  48139. float wdel=M_PI/ln;
  48140. for(i=0;i<m;i++)lsp[i]=2.f*cos(lsp[i]);
  48141. i=0;
  48142. while(i<n){
  48143. int j,k=map[i];
  48144. float p=.5f;
  48145. float q=.5f;
  48146. float w=2.f*cos(wdel*k);
  48147. for(j=1;j<m;j+=2){
  48148. q *= w-lsp[j-1];
  48149. p *= w-lsp[j];
  48150. }
  48151. if(j==m){
  48152. /* odd order filter; slightly assymetric */
  48153. /* the last coefficient */
  48154. q*=w-lsp[j-1];
  48155. p*=p*(4.f-w*w);
  48156. q*=q;
  48157. }else{
  48158. /* even order filter; still symmetric */
  48159. p*=p*(2.f-w);
  48160. q*=q*(2.f+w);
  48161. }
  48162. q=fromdB(amp/sqrt(p+q)-ampoffset);
  48163. curve[i]*=q;
  48164. while(map[++i]==k)curve[i]*=q;
  48165. }
  48166. }
  48167. #endif
  48168. #endif
  48169. static void cheby(float *g, int ord) {
  48170. int i, j;
  48171. g[0] *= .5f;
  48172. for(i=2; i<= ord; i++) {
  48173. for(j=ord; j >= i; j--) {
  48174. g[j-2] -= g[j];
  48175. g[j] += g[j];
  48176. }
  48177. }
  48178. }
  48179. static int comp(const void *a,const void *b){
  48180. return (*(float *)a<*(float *)b)-(*(float *)a>*(float *)b);
  48181. }
  48182. /* Newton-Raphson-Maehly actually functioned as a decent root finder,
  48183. but there are root sets for which it gets into limit cycles
  48184. (exacerbated by zero suppression) and fails. We can't afford to
  48185. fail, even if the failure is 1 in 100,000,000, so we now use
  48186. Laguerre and later polish with Newton-Raphson (which can then
  48187. afford to fail) */
  48188. #define EPSILON 10e-7
  48189. static int Laguerre_With_Deflation(float *a,int ord,float *r){
  48190. int i,m;
  48191. double lastdelta=0.f;
  48192. double *defl=alloca(sizeof(*defl)*(ord+1));
  48193. for(i=0;i<=ord;i++)defl[i]=a[i];
  48194. for(m=ord;m>0;m--){
  48195. double new=0.f,delta;
  48196. /* iterate a root */
  48197. while(1){
  48198. double p=defl[m],pp=0.f,ppp=0.f,denom;
  48199. /* eval the polynomial and its first two derivatives */
  48200. for(i=m;i>0;i--){
  48201. ppp = new*ppp + pp;
  48202. pp = new*pp + p;
  48203. p = new*p + defl[i-1];
  48204. }
  48205. /* Laguerre's method */
  48206. denom=(m-1) * ((m-1)*pp*pp - m*p*ppp);
  48207. if(denom<0)
  48208. return(-1); /* complex root! The LPC generator handed us a bad filter */
  48209. if(pp>0){
  48210. denom = pp + sqrt(denom);
  48211. if(denom<EPSILON)denom=EPSILON;
  48212. }else{
  48213. denom = pp - sqrt(denom);
  48214. if(denom>-(EPSILON))denom=-(EPSILON);
  48215. }
  48216. delta = m*p/denom;
  48217. new -= delta;
  48218. if(delta<0.f)delta*=-1;
  48219. if(fabs(delta/new)<10e-12)break;
  48220. lastdelta=delta;
  48221. }
  48222. r[m-1]=new;
  48223. /* forward deflation */
  48224. for(i=m;i>0;i--)
  48225. defl[i-1]+=new*defl[i];
  48226. defl++;
  48227. }
  48228. return(0);
  48229. }
  48230. /* for spit-and-polish only */
  48231. static int Newton_Raphson(float *a,int ord,float *r){
  48232. int i, k, count=0;
  48233. double error=1.f;
  48234. double *root=alloca(ord*sizeof(*root));
  48235. for(i=0; i<ord;i++) root[i] = r[i];
  48236. while(error>1e-20){
  48237. error=0;
  48238. for(i=0; i<ord; i++) { /* Update each point. */
  48239. double pp=0.,delta;
  48240. double rooti=root[i];
  48241. double p=a[ord];
  48242. for(k=ord-1; k>= 0; k--) {
  48243. pp= pp* rooti + p;
  48244. p = p * rooti + a[k];
  48245. }
  48246. delta = p/pp;
  48247. root[i] -= delta;
  48248. error+= delta*delta;
  48249. }
  48250. if(count>40)return(-1);
  48251. count++;
  48252. }
  48253. /* Replaced the original bubble sort with a real sort. With your
  48254. help, we can eliminate the bubble sort in our lifetime. --Monty */
  48255. for(i=0; i<ord;i++) r[i] = root[i];
  48256. return(0);
  48257. }
  48258. /* Convert lpc coefficients to lsp coefficients */
  48259. int vorbis_lpc_to_lsp(float *lpc,float *lsp,int m){
  48260. int order2=(m+1)>>1;
  48261. int g1_order,g2_order;
  48262. float *g1=alloca(sizeof(*g1)*(order2+1));
  48263. float *g2=alloca(sizeof(*g2)*(order2+1));
  48264. float *g1r=alloca(sizeof(*g1r)*(order2+1));
  48265. float *g2r=alloca(sizeof(*g2r)*(order2+1));
  48266. int i;
  48267. /* even and odd are slightly different base cases */
  48268. g1_order=(m+1)>>1;
  48269. g2_order=(m) >>1;
  48270. /* Compute the lengths of the x polynomials. */
  48271. /* Compute the first half of K & R F1 & F2 polynomials. */
  48272. /* Compute half of the symmetric and antisymmetric polynomials. */
  48273. /* Remove the roots at +1 and -1. */
  48274. g1[g1_order] = 1.f;
  48275. for(i=1;i<=g1_order;i++) g1[g1_order-i] = lpc[i-1]+lpc[m-i];
  48276. g2[g2_order] = 1.f;
  48277. for(i=1;i<=g2_order;i++) g2[g2_order-i] = lpc[i-1]-lpc[m-i];
  48278. if(g1_order>g2_order){
  48279. for(i=2; i<=g2_order;i++) g2[g2_order-i] += g2[g2_order-i+2];
  48280. }else{
  48281. for(i=1; i<=g1_order;i++) g1[g1_order-i] -= g1[g1_order-i+1];
  48282. for(i=1; i<=g2_order;i++) g2[g2_order-i] += g2[g2_order-i+1];
  48283. }
  48284. /* Convert into polynomials in cos(alpha) */
  48285. cheby(g1,g1_order);
  48286. cheby(g2,g2_order);
  48287. /* Find the roots of the 2 even polynomials.*/
  48288. if(Laguerre_With_Deflation(g1,g1_order,g1r) ||
  48289. Laguerre_With_Deflation(g2,g2_order,g2r))
  48290. return(-1);
  48291. Newton_Raphson(g1,g1_order,g1r); /* if it fails, it leaves g1r alone */
  48292. Newton_Raphson(g2,g2_order,g2r); /* if it fails, it leaves g2r alone */
  48293. qsort(g1r,g1_order,sizeof(*g1r),comp);
  48294. qsort(g2r,g2_order,sizeof(*g2r),comp);
  48295. for(i=0;i<g1_order;i++)
  48296. lsp[i*2] = acos(g1r[i]);
  48297. for(i=0;i<g2_order;i++)
  48298. lsp[i*2+1] = acos(g2r[i]);
  48299. return(0);
  48300. }
  48301. /********************************************************************
  48302. * *
  48303. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  48304. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  48305. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  48306. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  48307. * *
  48308. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  48309. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  48310. * *
  48311. ********************************************************************
  48312. function: floor backend 1 implementation
  48313. last mod: $Id: floor1.c,v 1.26 2003/02/15 07:10:07 xiphmont Exp $
  48314. ********************************************************************/
  48315. #define floor1_rangedB 140 /* floor 1 fixed at -140dB to 0dB range */
  48316. typedef struct {
  48317. int sorted_index[VIF_POSIT+2];
  48318. int forward_index[VIF_POSIT+2];
  48319. int reverse_index[VIF_POSIT+2];
  48320. int hineighbor[VIF_POSIT];
  48321. int loneighbor[VIF_POSIT];
  48322. int posts;
  48323. int n;
  48324. int quant_q;
  48325. vorbis_info_floor1 *vi;
  48326. long phrasebits;
  48327. long postbits;
  48328. long frames;
  48329. } vorbis_look_floor1;
  48330. typedef struct lsfit_acc{
  48331. long x0;
  48332. long x1;
  48333. long xa;
  48334. long ya;
  48335. long x2a;
  48336. long y2a;
  48337. long xya;
  48338. long an;
  48339. } lsfit_acc;
  48340. /***********************************************/
  48341. static void floor1_free_info(vorbis_info_floor *i){
  48342. vorbis_info_floor1 *info=(vorbis_info_floor1 *)i;
  48343. if(info){
  48344. memset(info,0,sizeof(*info));
  48345. _ogg_free(info);
  48346. }
  48347. }
  48348. static void floor1_free_look(vorbis_look_floor *i){
  48349. vorbis_look_floor1 *look=(vorbis_look_floor1 *)i;
  48350. if(look){
  48351. /*fprintf(stderr,"floor 1 bit usage %f:%f (%f total)\n",
  48352. (float)look->phrasebits/look->frames,
  48353. (float)look->postbits/look->frames,
  48354. (float)(look->postbits+look->phrasebits)/look->frames);*/
  48355. memset(look,0,sizeof(*look));
  48356. _ogg_free(look);
  48357. }
  48358. }
  48359. static int ilog(unsigned int v){
  48360. int ret=0;
  48361. while(v){
  48362. ret++;
  48363. v>>=1;
  48364. }
  48365. return(ret);
  48366. }
  48367. static void floor1_pack (vorbis_info_floor *i,oggpack_buffer *opb){
  48368. vorbis_info_floor1 *info=(vorbis_info_floor1 *)i;
  48369. int j,k;
  48370. int count=0;
  48371. int rangebits;
  48372. int maxposit=info->postlist[1];
  48373. int maxclass=-1;
  48374. /* save out partitions */
  48375. oggpack_write(opb,info->partitions,5); /* only 0 to 31 legal */
  48376. for(j=0;j<info->partitions;j++){
  48377. oggpack_write(opb,info->partitionclass[j],4); /* only 0 to 15 legal */
  48378. if(maxclass<info->partitionclass[j])maxclass=info->partitionclass[j];
  48379. }
  48380. /* save out partition classes */
  48381. for(j=0;j<maxclass+1;j++){
  48382. oggpack_write(opb,info->class_dim[j]-1,3); /* 1 to 8 */
  48383. oggpack_write(opb,info->class_subs[j],2); /* 0 to 3 */
  48384. if(info->class_subs[j])oggpack_write(opb,info->class_book[j],8);
  48385. for(k=0;k<(1<<info->class_subs[j]);k++)
  48386. oggpack_write(opb,info->class_subbook[j][k]+1,8);
  48387. }
  48388. /* save out the post list */
  48389. oggpack_write(opb,info->mult-1,2); /* only 1,2,3,4 legal now */
  48390. oggpack_write(opb,ilog2(maxposit),4);
  48391. rangebits=ilog2(maxposit);
  48392. for(j=0,k=0;j<info->partitions;j++){
  48393. count+=info->class_dim[info->partitionclass[j]];
  48394. for(;k<count;k++)
  48395. oggpack_write(opb,info->postlist[k+2],rangebits);
  48396. }
  48397. }
  48398. static vorbis_info_floor *floor1_unpack (vorbis_info *vi,oggpack_buffer *opb){
  48399. codec_setup_info *ci=vi->codec_setup;
  48400. int j,k,count=0,maxclass=-1,rangebits;
  48401. vorbis_info_floor1 *info=_ogg_calloc(1,sizeof(*info));
  48402. /* read partitions */
  48403. info->partitions=oggpack_read(opb,5); /* only 0 to 31 legal */
  48404. for(j=0;j<info->partitions;j++){
  48405. info->partitionclass[j]=oggpack_read(opb,4); /* only 0 to 15 legal */
  48406. if(maxclass<info->partitionclass[j])maxclass=info->partitionclass[j];
  48407. }
  48408. /* read partition classes */
  48409. for(j=0;j<maxclass+1;j++){
  48410. info->class_dim[j]=oggpack_read(opb,3)+1; /* 1 to 8 */
  48411. info->class_subs[j]=oggpack_read(opb,2); /* 0,1,2,3 bits */
  48412. if(info->class_subs[j]<0)
  48413. goto err_out;
  48414. if(info->class_subs[j])info->class_book[j]=oggpack_read(opb,8);
  48415. if(info->class_book[j]<0 || info->class_book[j]>=ci->books)
  48416. goto err_out;
  48417. for(k=0;k<(1<<info->class_subs[j]);k++){
  48418. info->class_subbook[j][k]=oggpack_read(opb,8)-1;
  48419. if(info->class_subbook[j][k]<-1 || info->class_subbook[j][k]>=ci->books)
  48420. goto err_out;
  48421. }
  48422. }
  48423. /* read the post list */
  48424. info->mult=oggpack_read(opb,2)+1; /* only 1,2,3,4 legal now */
  48425. rangebits=oggpack_read(opb,4);
  48426. for(j=0,k=0;j<info->partitions;j++){
  48427. count+=info->class_dim[info->partitionclass[j]];
  48428. for(;k<count;k++){
  48429. int t=info->postlist[k+2]=oggpack_read(opb,rangebits);
  48430. if(t<0 || t>=(1<<rangebits))
  48431. goto err_out;
  48432. }
  48433. }
  48434. info->postlist[0]=0;
  48435. info->postlist[1]=1<<rangebits;
  48436. return(info);
  48437. err_out:
  48438. floor1_free_info(info);
  48439. return(NULL);
  48440. }
  48441. static int icomp(const void *a,const void *b){
  48442. return(**(int **)a-**(int **)b);
  48443. }
  48444. static vorbis_look_floor *floor1_look(vorbis_dsp_state *vd,
  48445. vorbis_info_floor *in){
  48446. int *sortpointer[VIF_POSIT+2];
  48447. vorbis_info_floor1 *info=(vorbis_info_floor1 *)in;
  48448. vorbis_look_floor1 *look=_ogg_calloc(1,sizeof(*look));
  48449. int i,j,n=0;
  48450. look->vi=info;
  48451. look->n=info->postlist[1];
  48452. /* we drop each position value in-between already decoded values,
  48453. and use linear interpolation to predict each new value past the
  48454. edges. The positions are read in the order of the position
  48455. list... we precompute the bounding positions in the lookup. Of
  48456. course, the neighbors can change (if a position is declined), but
  48457. this is an initial mapping */
  48458. for(i=0;i<info->partitions;i++)n+=info->class_dim[info->partitionclass[i]];
  48459. n+=2;
  48460. look->posts=n;
  48461. /* also store a sorted position index */
  48462. for(i=0;i<n;i++)sortpointer[i]=info->postlist+i;
  48463. qsort(sortpointer,n,sizeof(*sortpointer),icomp);
  48464. /* points from sort order back to range number */
  48465. for(i=0;i<n;i++)look->forward_index[i]=sortpointer[i]-info->postlist;
  48466. /* points from range order to sorted position */
  48467. for(i=0;i<n;i++)look->reverse_index[look->forward_index[i]]=i;
  48468. /* we actually need the post values too */
  48469. for(i=0;i<n;i++)look->sorted_index[i]=info->postlist[look->forward_index[i]];
  48470. /* quantize values to multiplier spec */
  48471. switch(info->mult){
  48472. case 1: /* 1024 -> 256 */
  48473. look->quant_q=256;
  48474. break;
  48475. case 2: /* 1024 -> 128 */
  48476. look->quant_q=128;
  48477. break;
  48478. case 3: /* 1024 -> 86 */
  48479. look->quant_q=86;
  48480. break;
  48481. case 4: /* 1024 -> 64 */
  48482. look->quant_q=64;
  48483. break;
  48484. }
  48485. /* discover our neighbors for decode where we don't use fit flags
  48486. (that would push the neighbors outward) */
  48487. for(i=0;i<n-2;i++){
  48488. int lo=0;
  48489. int hi=1;
  48490. int lx=0;
  48491. int hx=look->n;
  48492. int currentx=info->postlist[i+2];
  48493. for(j=0;j<i+2;j++){
  48494. int x=info->postlist[j];
  48495. if(x>lx && x<currentx){
  48496. lo=j;
  48497. lx=x;
  48498. }
  48499. if(x<hx && x>currentx){
  48500. hi=j;
  48501. hx=x;
  48502. }
  48503. }
  48504. look->loneighbor[i]=lo;
  48505. look->hineighbor[i]=hi;
  48506. }
  48507. return(look);
  48508. }
  48509. static int render_point(int x0,int x1,int y0,int y1,int x){
  48510. y0&=0x7fff; /* mask off flag */
  48511. y1&=0x7fff;
  48512. {
  48513. int dy=y1-y0;
  48514. int adx=x1-x0;
  48515. int ady=abs(dy);
  48516. int err=ady*(x-x0);
  48517. int off=err/adx;
  48518. if(dy<0)return(y0-off);
  48519. return(y0+off);
  48520. }
  48521. }
  48522. static int vorbis_dBquant(const float *x){
  48523. int i= *x*7.3142857f+1023.5f;
  48524. if(i>1023)return(1023);
  48525. if(i<0)return(0);
  48526. return i;
  48527. }
  48528. static float FLOOR1_fromdB_LOOKUP[256]={
  48529. 1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F,
  48530. 1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F,
  48531. 1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F,
  48532. 2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F,
  48533. 2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F,
  48534. 3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F,
  48535. 4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F,
  48536. 6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F,
  48537. 7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F,
  48538. 1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F,
  48539. 1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F,
  48540. 1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F,
  48541. 2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F,
  48542. 2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F,
  48543. 3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F,
  48544. 4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F,
  48545. 5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F,
  48546. 7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F,
  48547. 9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F,
  48548. 1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F,
  48549. 1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F,
  48550. 2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F,
  48551. 2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F,
  48552. 3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F,
  48553. 4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F,
  48554. 5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F,
  48555. 7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F,
  48556. 9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F,
  48557. 0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F,
  48558. 0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F,
  48559. 0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F,
  48560. 0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F,
  48561. 0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F,
  48562. 0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F,
  48563. 0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F,
  48564. 0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F,
  48565. 0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F,
  48566. 0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F,
  48567. 0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F,
  48568. 0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F,
  48569. 0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F,
  48570. 0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F,
  48571. 0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F,
  48572. 0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F,
  48573. 0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F,
  48574. 0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F,
  48575. 0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F,
  48576. 0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F,
  48577. 0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F,
  48578. 0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F,
  48579. 0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F,
  48580. 0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F,
  48581. 0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F,
  48582. 0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F,
  48583. 0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F,
  48584. 0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F,
  48585. 0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F,
  48586. 0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F,
  48587. 0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F,
  48588. 0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F,
  48589. 0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F,
  48590. 0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F,
  48591. 0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F,
  48592. 0.82788260F, 0.88168307F, 0.9389798F, 1.F,
  48593. };
  48594. static void render_line(int x0,int x1,int y0,int y1,float *d){
  48595. int dy=y1-y0;
  48596. int adx=x1-x0;
  48597. int ady=abs(dy);
  48598. int base=dy/adx;
  48599. int sy=(dy<0?base-1:base+1);
  48600. int x=x0;
  48601. int y=y0;
  48602. int err=0;
  48603. ady-=abs(base*adx);
  48604. d[x]*=FLOOR1_fromdB_LOOKUP[y];
  48605. while(++x<x1){
  48606. err=err+ady;
  48607. if(err>=adx){
  48608. err-=adx;
  48609. y+=sy;
  48610. }else{
  48611. y+=base;
  48612. }
  48613. d[x]*=FLOOR1_fromdB_LOOKUP[y];
  48614. }
  48615. }
  48616. static void render_line0(int x0,int x1,int y0,int y1,int *d){
  48617. int dy=y1-y0;
  48618. int adx=x1-x0;
  48619. int ady=abs(dy);
  48620. int base=dy/adx;
  48621. int sy=(dy<0?base-1:base+1);
  48622. int x=x0;
  48623. int y=y0;
  48624. int err=0;
  48625. ady-=abs(base*adx);
  48626. d[x]=y;
  48627. while(++x<x1){
  48628. err=err+ady;
  48629. if(err>=adx){
  48630. err-=adx;
  48631. y+=sy;
  48632. }else{
  48633. y+=base;
  48634. }
  48635. d[x]=y;
  48636. }
  48637. }
  48638. /* the floor has already been filtered to only include relevant sections */
  48639. static int accumulate_fit(const float *flr,const float *mdct,
  48640. int x0, int x1,lsfit_acc *a,
  48641. int n,vorbis_info_floor1 *info){
  48642. long i;
  48643. long xa=0,ya=0,x2a=0,y2a=0,xya=0,na=0, xb=0,yb=0,x2b=0,y2b=0,xyb=0,nb=0;
  48644. memset(a,0,sizeof(*a));
  48645. a->x0=x0;
  48646. a->x1=x1;
  48647. if(x1>=n)x1=n-1;
  48648. for(i=x0;i<=x1;i++){
  48649. int quantized=vorbis_dBquant(flr+i);
  48650. if(quantized){
  48651. if(mdct[i]+info->twofitatten>=flr[i]){
  48652. xa += i;
  48653. ya += quantized;
  48654. x2a += i*i;
  48655. y2a += quantized*quantized;
  48656. xya += i*quantized;
  48657. na++;
  48658. }else{
  48659. xb += i;
  48660. yb += quantized;
  48661. x2b += i*i;
  48662. y2b += quantized*quantized;
  48663. xyb += i*quantized;
  48664. nb++;
  48665. }
  48666. }
  48667. }
  48668. xb+=xa;
  48669. yb+=ya;
  48670. x2b+=x2a;
  48671. y2b+=y2a;
  48672. xyb+=xya;
  48673. nb+=na;
  48674. /* weight toward the actually used frequencies if we meet the threshhold */
  48675. {
  48676. int weight=nb*info->twofitweight/(na+1);
  48677. a->xa=xa*weight+xb;
  48678. a->ya=ya*weight+yb;
  48679. a->x2a=x2a*weight+x2b;
  48680. a->y2a=y2a*weight+y2b;
  48681. a->xya=xya*weight+xyb;
  48682. a->an=na*weight+nb;
  48683. }
  48684. return(na);
  48685. }
  48686. static void fit_line(lsfit_acc *a,int fits,int *y0,int *y1){
  48687. long x=0,y=0,x2=0,y2=0,xy=0,an=0,i;
  48688. long x0=a[0].x0;
  48689. long x1=a[fits-1].x1;
  48690. for(i=0;i<fits;i++){
  48691. x+=a[i].xa;
  48692. y+=a[i].ya;
  48693. x2+=a[i].x2a;
  48694. y2+=a[i].y2a;
  48695. xy+=a[i].xya;
  48696. an+=a[i].an;
  48697. }
  48698. if(*y0>=0){
  48699. x+= x0;
  48700. y+= *y0;
  48701. x2+= x0 * x0;
  48702. y2+= *y0 * *y0;
  48703. xy+= *y0 * x0;
  48704. an++;
  48705. }
  48706. if(*y1>=0){
  48707. x+= x1;
  48708. y+= *y1;
  48709. x2+= x1 * x1;
  48710. y2+= *y1 * *y1;
  48711. xy+= *y1 * x1;
  48712. an++;
  48713. }
  48714. if(an){
  48715. /* need 64 bit multiplies, which C doesn't give portably as int */
  48716. double fx=x;
  48717. double fy=y;
  48718. double fx2=x2;
  48719. double fxy=xy;
  48720. double denom=1./(an*fx2-fx*fx);
  48721. double a=(fy*fx2-fxy*fx)*denom;
  48722. double b=(an*fxy-fx*fy)*denom;
  48723. *y0=rint(a+b*x0);
  48724. *y1=rint(a+b*x1);
  48725. /* limit to our range! */
  48726. if(*y0>1023)*y0=1023;
  48727. if(*y1>1023)*y1=1023;
  48728. if(*y0<0)*y0=0;
  48729. if(*y1<0)*y1=0;
  48730. }else{
  48731. *y0=0;
  48732. *y1=0;
  48733. }
  48734. }
  48735. /*static void fit_line_point(lsfit_acc *a,int fits,int *y0,int *y1){
  48736. long y=0;
  48737. int i;
  48738. for(i=0;i<fits && y==0;i++)
  48739. y+=a[i].ya;
  48740. *y0=*y1=y;
  48741. }*/
  48742. static int inspect_error(int x0,int x1,int y0,int y1,const float *mask,
  48743. const float *mdct,
  48744. vorbis_info_floor1 *info){
  48745. int dy=y1-y0;
  48746. int adx=x1-x0;
  48747. int ady=abs(dy);
  48748. int base=dy/adx;
  48749. int sy=(dy<0?base-1:base+1);
  48750. int x=x0;
  48751. int y=y0;
  48752. int err=0;
  48753. int val=vorbis_dBquant(mask+x);
  48754. int mse=0;
  48755. int n=0;
  48756. ady-=abs(base*adx);
  48757. mse=(y-val);
  48758. mse*=mse;
  48759. n++;
  48760. if(mdct[x]+info->twofitatten>=mask[x]){
  48761. if(y+info->maxover<val)return(1);
  48762. if(y-info->maxunder>val)return(1);
  48763. }
  48764. while(++x<x1){
  48765. err=err+ady;
  48766. if(err>=adx){
  48767. err-=adx;
  48768. y+=sy;
  48769. }else{
  48770. y+=base;
  48771. }
  48772. val=vorbis_dBquant(mask+x);
  48773. mse+=((y-val)*(y-val));
  48774. n++;
  48775. if(mdct[x]+info->twofitatten>=mask[x]){
  48776. if(val){
  48777. if(y+info->maxover<val)return(1);
  48778. if(y-info->maxunder>val)return(1);
  48779. }
  48780. }
  48781. }
  48782. if(info->maxover*info->maxover/n>info->maxerr)return(0);
  48783. if(info->maxunder*info->maxunder/n>info->maxerr)return(0);
  48784. if(mse/n>info->maxerr)return(1);
  48785. return(0);
  48786. }
  48787. static int post_Y(int *A,int *B,int pos){
  48788. if(A[pos]<0)
  48789. return B[pos];
  48790. if(B[pos]<0)
  48791. return A[pos];
  48792. return (A[pos]+B[pos])>>1;
  48793. }
  48794. int *floor1_fit(vorbis_block *vb,vorbis_look_floor1 *look,
  48795. const float *logmdct, /* in */
  48796. const float *logmask){
  48797. long i,j;
  48798. vorbis_info_floor1 *info=look->vi;
  48799. long n=look->n;
  48800. long posts=look->posts;
  48801. long nonzero=0;
  48802. lsfit_acc fits[VIF_POSIT+1];
  48803. int fit_valueA[VIF_POSIT+2]; /* index by range list position */
  48804. int fit_valueB[VIF_POSIT+2]; /* index by range list position */
  48805. int loneighbor[VIF_POSIT+2]; /* sorted index of range list position (+2) */
  48806. int hineighbor[VIF_POSIT+2];
  48807. int *output=NULL;
  48808. int memo[VIF_POSIT+2];
  48809. for(i=0;i<posts;i++)fit_valueA[i]=-200; /* mark all unused */
  48810. for(i=0;i<posts;i++)fit_valueB[i]=-200; /* mark all unused */
  48811. for(i=0;i<posts;i++)loneighbor[i]=0; /* 0 for the implicit 0 post */
  48812. for(i=0;i<posts;i++)hineighbor[i]=1; /* 1 for the implicit post at n */
  48813. for(i=0;i<posts;i++)memo[i]=-1; /* no neighbor yet */
  48814. /* quantize the relevant floor points and collect them into line fit
  48815. structures (one per minimal division) at the same time */
  48816. if(posts==0){
  48817. nonzero+=accumulate_fit(logmask,logmdct,0,n,fits,n,info);
  48818. }else{
  48819. for(i=0;i<posts-1;i++)
  48820. nonzero+=accumulate_fit(logmask,logmdct,look->sorted_index[i],
  48821. look->sorted_index[i+1],fits+i,
  48822. n,info);
  48823. }
  48824. if(nonzero){
  48825. /* start by fitting the implicit base case.... */
  48826. int y0=-200;
  48827. int y1=-200;
  48828. fit_line(fits,posts-1,&y0,&y1);
  48829. fit_valueA[0]=y0;
  48830. fit_valueB[0]=y0;
  48831. fit_valueB[1]=y1;
  48832. fit_valueA[1]=y1;
  48833. /* Non degenerate case */
  48834. /* start progressive splitting. This is a greedy, non-optimal
  48835. algorithm, but simple and close enough to the best
  48836. answer. */
  48837. for(i=2;i<posts;i++){
  48838. int sortpos=look->reverse_index[i];
  48839. int ln=loneighbor[sortpos];
  48840. int hn=hineighbor[sortpos];
  48841. /* eliminate repeat searches of a particular range with a memo */
  48842. if(memo[ln]!=hn){
  48843. /* haven't performed this error search yet */
  48844. int lsortpos=look->reverse_index[ln];
  48845. int hsortpos=look->reverse_index[hn];
  48846. memo[ln]=hn;
  48847. {
  48848. /* A note: we want to bound/minimize *local*, not global, error */
  48849. int lx=info->postlist[ln];
  48850. int hx=info->postlist[hn];
  48851. int ly=post_Y(fit_valueA,fit_valueB,ln);
  48852. int hy=post_Y(fit_valueA,fit_valueB,hn);
  48853. if(ly==-1 || hy==-1){
  48854. exit(1);
  48855. }
  48856. if(inspect_error(lx,hx,ly,hy,logmask,logmdct,info)){
  48857. /* outside error bounds/begin search area. Split it. */
  48858. int ly0=-200;
  48859. int ly1=-200;
  48860. int hy0=-200;
  48861. int hy1=-200;
  48862. fit_line(fits+lsortpos,sortpos-lsortpos,&ly0,&ly1);
  48863. fit_line(fits+sortpos,hsortpos-sortpos,&hy0,&hy1);
  48864. /* store new edge values */
  48865. fit_valueB[ln]=ly0;
  48866. if(ln==0)fit_valueA[ln]=ly0;
  48867. fit_valueA[i]=ly1;
  48868. fit_valueB[i]=hy0;
  48869. fit_valueA[hn]=hy1;
  48870. if(hn==1)fit_valueB[hn]=hy1;
  48871. if(ly1>=0 || hy0>=0){
  48872. /* store new neighbor values */
  48873. for(j=sortpos-1;j>=0;j--)
  48874. if(hineighbor[j]==hn)
  48875. hineighbor[j]=i;
  48876. else
  48877. break;
  48878. for(j=sortpos+1;j<posts;j++)
  48879. if(loneighbor[j]==ln)
  48880. loneighbor[j]=i;
  48881. else
  48882. break;
  48883. }
  48884. }else{
  48885. fit_valueA[i]=-200;
  48886. fit_valueB[i]=-200;
  48887. }
  48888. }
  48889. }
  48890. }
  48891. output=_vorbis_block_alloc(vb,sizeof(*output)*posts);
  48892. output[0]=post_Y(fit_valueA,fit_valueB,0);
  48893. output[1]=post_Y(fit_valueA,fit_valueB,1);
  48894. /* fill in posts marked as not using a fit; we will zero
  48895. back out to 'unused' when encoding them so long as curve
  48896. interpolation doesn't force them into use */
  48897. for(i=2;i<posts;i++){
  48898. int ln=look->loneighbor[i-2];
  48899. int hn=look->hineighbor[i-2];
  48900. int x0=info->postlist[ln];
  48901. int x1=info->postlist[hn];
  48902. int y0=output[ln];
  48903. int y1=output[hn];
  48904. int predicted=render_point(x0,x1,y0,y1,info->postlist[i]);
  48905. int vx=post_Y(fit_valueA,fit_valueB,i);
  48906. if(vx>=0 && predicted!=vx){
  48907. output[i]=vx;
  48908. }else{
  48909. output[i]= predicted|0x8000;
  48910. }
  48911. }
  48912. }
  48913. return(output);
  48914. }
  48915. int *floor1_interpolate_fit(vorbis_block *vb,vorbis_look_floor1 *look,
  48916. int *A,int *B,
  48917. int del){
  48918. long i;
  48919. long posts=look->posts;
  48920. int *output=NULL;
  48921. if(A && B){
  48922. output=_vorbis_block_alloc(vb,sizeof(*output)*posts);
  48923. for(i=0;i<posts;i++){
  48924. output[i]=((65536-del)*(A[i]&0x7fff)+del*(B[i]&0x7fff)+32768)>>16;
  48925. if(A[i]&0x8000 && B[i]&0x8000)output[i]|=0x8000;
  48926. }
  48927. }
  48928. return(output);
  48929. }
  48930. int floor1_encode(vorbis_block *vb,vorbis_look_floor1 *look,
  48931. int *post,int *ilogmask){
  48932. long i,j;
  48933. vorbis_info_floor1 *info=look->vi;
  48934. long posts=look->posts;
  48935. codec_setup_info *ci=vb->vd->vi->codec_setup;
  48936. int out[VIF_POSIT+2];
  48937. static_codebook **sbooks=ci->book_param;
  48938. codebook *books=ci->fullbooks;
  48939. static long seq=0;
  48940. /* quantize values to multiplier spec */
  48941. if(post){
  48942. for(i=0;i<posts;i++){
  48943. int val=post[i]&0x7fff;
  48944. switch(info->mult){
  48945. case 1: /* 1024 -> 256 */
  48946. val>>=2;
  48947. break;
  48948. case 2: /* 1024 -> 128 */
  48949. val>>=3;
  48950. break;
  48951. case 3: /* 1024 -> 86 */
  48952. val/=12;
  48953. break;
  48954. case 4: /* 1024 -> 64 */
  48955. val>>=4;
  48956. break;
  48957. }
  48958. post[i]=val | (post[i]&0x8000);
  48959. }
  48960. out[0]=post[0];
  48961. out[1]=post[1];
  48962. /* find prediction values for each post and subtract them */
  48963. for(i=2;i<posts;i++){
  48964. int ln=look->loneighbor[i-2];
  48965. int hn=look->hineighbor[i-2];
  48966. int x0=info->postlist[ln];
  48967. int x1=info->postlist[hn];
  48968. int y0=post[ln];
  48969. int y1=post[hn];
  48970. int predicted=render_point(x0,x1,y0,y1,info->postlist[i]);
  48971. if((post[i]&0x8000) || (predicted==post[i])){
  48972. post[i]=predicted|0x8000; /* in case there was roundoff jitter
  48973. in interpolation */
  48974. out[i]=0;
  48975. }else{
  48976. int headroom=(look->quant_q-predicted<predicted?
  48977. look->quant_q-predicted:predicted);
  48978. int val=post[i]-predicted;
  48979. /* at this point the 'deviation' value is in the range +/- max
  48980. range, but the real, unique range can always be mapped to
  48981. only [0-maxrange). So we want to wrap the deviation into
  48982. this limited range, but do it in the way that least screws
  48983. an essentially gaussian probability distribution. */
  48984. if(val<0)
  48985. if(val<-headroom)
  48986. val=headroom-val-1;
  48987. else
  48988. val=-1-(val<<1);
  48989. else
  48990. if(val>=headroom)
  48991. val= val+headroom;
  48992. else
  48993. val<<=1;
  48994. out[i]=val;
  48995. post[ln]&=0x7fff;
  48996. post[hn]&=0x7fff;
  48997. }
  48998. }
  48999. /* we have everything we need. pack it out */
  49000. /* mark nontrivial floor */
  49001. oggpack_write(&vb->opb,1,1);
  49002. /* beginning/end post */
  49003. look->frames++;
  49004. look->postbits+=ilog(look->quant_q-1)*2;
  49005. oggpack_write(&vb->opb,out[0],ilog(look->quant_q-1));
  49006. oggpack_write(&vb->opb,out[1],ilog(look->quant_q-1));
  49007. /* partition by partition */
  49008. for(i=0,j=2;i<info->partitions;i++){
  49009. int class=info->partitionclass[i];
  49010. int cdim=info->class_dim[class];
  49011. int csubbits=info->class_subs[class];
  49012. int csub=1<<csubbits;
  49013. int bookas[8]={0,0,0,0,0,0,0,0};
  49014. int cval=0;
  49015. int cshift=0;
  49016. int k,l;
  49017. /* generate the partition's first stage cascade value */
  49018. if(csubbits){
  49019. int maxval[8];
  49020. for(k=0;k<csub;k++){
  49021. int booknum=info->class_subbook[class][k];
  49022. if(booknum<0){
  49023. maxval[k]=1;
  49024. }else{
  49025. maxval[k]=sbooks[info->class_subbook[class][k]]->entries;
  49026. }
  49027. }
  49028. for(k=0;k<cdim;k++){
  49029. for(l=0;l<csub;l++){
  49030. int val=out[j+k];
  49031. if(val<maxval[l]){
  49032. bookas[k]=l;
  49033. break;
  49034. }
  49035. }
  49036. cval|= bookas[k]<<cshift;
  49037. cshift+=csubbits;
  49038. }
  49039. /* write it */
  49040. look->phrasebits+=
  49041. vorbis_book_encode(books+info->class_book[class],cval,&vb->opb);
  49042. #ifdef TRAIN_FLOOR1
  49043. {
  49044. FILE *of;
  49045. char buffer[80];
  49046. sprintf(buffer,"line_%dx%ld_class%d.vqd",
  49047. vb->pcmend/2,posts-2,class);
  49048. of=fopen(buffer,"a");
  49049. fprintf(of,"%d\n",cval);
  49050. fclose(of);
  49051. }
  49052. #endif
  49053. }
  49054. /* write post values */
  49055. for(k=0;k<cdim;k++){
  49056. int book=info->class_subbook[class][bookas[k]];
  49057. if(book>=0){
  49058. /* hack to allow training with 'bad' books */
  49059. if(out[j+k]<(books+book)->entries)
  49060. look->postbits+=vorbis_book_encode(books+book,
  49061. out[j+k],&vb->opb);
  49062. /*else
  49063. fprintf(stderr,"+!");*/
  49064. #ifdef TRAIN_FLOOR1
  49065. {
  49066. FILE *of;
  49067. char buffer[80];
  49068. sprintf(buffer,"line_%dx%ld_%dsub%d.vqd",
  49069. vb->pcmend/2,posts-2,class,bookas[k]);
  49070. of=fopen(buffer,"a");
  49071. fprintf(of,"%d\n",out[j+k]);
  49072. fclose(of);
  49073. }
  49074. #endif
  49075. }
  49076. }
  49077. j+=cdim;
  49078. }
  49079. {
  49080. /* generate quantized floor equivalent to what we'd unpack in decode */
  49081. /* render the lines */
  49082. int hx=0;
  49083. int lx=0;
  49084. int ly=post[0]*info->mult;
  49085. for(j=1;j<look->posts;j++){
  49086. int current=look->forward_index[j];
  49087. int hy=post[current]&0x7fff;
  49088. if(hy==post[current]){
  49089. hy*=info->mult;
  49090. hx=info->postlist[current];
  49091. render_line0(lx,hx,ly,hy,ilogmask);
  49092. lx=hx;
  49093. ly=hy;
  49094. }
  49095. }
  49096. for(j=hx;j<vb->pcmend/2;j++)ilogmask[j]=ly; /* be certain */
  49097. seq++;
  49098. return(1);
  49099. }
  49100. }else{
  49101. oggpack_write(&vb->opb,0,1);
  49102. memset(ilogmask,0,vb->pcmend/2*sizeof(*ilogmask));
  49103. seq++;
  49104. return(0);
  49105. }
  49106. }
  49107. static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){
  49108. vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
  49109. vorbis_info_floor1 *info=look->vi;
  49110. codec_setup_info *ci=vb->vd->vi->codec_setup;
  49111. int i,j,k;
  49112. codebook *books=ci->fullbooks;
  49113. /* unpack wrapped/predicted values from stream */
  49114. if(oggpack_read(&vb->opb,1)==1){
  49115. int *fit_value=_vorbis_block_alloc(vb,(look->posts)*sizeof(*fit_value));
  49116. fit_value[0]=oggpack_read(&vb->opb,ilog(look->quant_q-1));
  49117. fit_value[1]=oggpack_read(&vb->opb,ilog(look->quant_q-1));
  49118. /* partition by partition */
  49119. for(i=0,j=2;i<info->partitions;i++){
  49120. int class=info->partitionclass[i];
  49121. int cdim=info->class_dim[class];
  49122. int csubbits=info->class_subs[class];
  49123. int csub=1<<csubbits;
  49124. int cval=0;
  49125. /* decode the partition's first stage cascade value */
  49126. if(csubbits){
  49127. cval=vorbis_book_decode(books+info->class_book[class],&vb->opb);
  49128. if(cval==-1)goto eop;
  49129. }
  49130. for(k=0;k<cdim;k++){
  49131. int book=info->class_subbook[class][cval&(csub-1)];
  49132. cval>>=csubbits;
  49133. if(book>=0){
  49134. if((fit_value[j+k]=vorbis_book_decode(books+book,&vb->opb))==-1)
  49135. goto eop;
  49136. }else{
  49137. fit_value[j+k]=0;
  49138. }
  49139. }
  49140. j+=cdim;
  49141. }
  49142. /* unwrap positive values and reconsitute via linear interpolation */
  49143. for(i=2;i<look->posts;i++){
  49144. int predicted=render_point(info->postlist[look->loneighbor[i-2]],
  49145. info->postlist[look->hineighbor[i-2]],
  49146. fit_value[look->loneighbor[i-2]],
  49147. fit_value[look->hineighbor[i-2]],
  49148. info->postlist[i]);
  49149. int hiroom=look->quant_q-predicted;
  49150. int loroom=predicted;
  49151. int room=(hiroom<loroom?hiroom:loroom)<<1;
  49152. int val=fit_value[i];
  49153. if(val){
  49154. if(val>=room){
  49155. if(hiroom>loroom){
  49156. val = val-loroom;
  49157. }else{
  49158. val = -1-(val-hiroom);
  49159. }
  49160. }else{
  49161. if(val&1){
  49162. val= -((val+1)>>1);
  49163. }else{
  49164. val>>=1;
  49165. }
  49166. }
  49167. fit_value[i]=val+predicted;
  49168. fit_value[look->loneighbor[i-2]]&=0x7fff;
  49169. fit_value[look->hineighbor[i-2]]&=0x7fff;
  49170. }else{
  49171. fit_value[i]=predicted|0x8000;
  49172. }
  49173. }
  49174. return(fit_value);
  49175. }
  49176. eop:
  49177. return(NULL);
  49178. }
  49179. static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo,
  49180. float *out){
  49181. vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
  49182. vorbis_info_floor1 *info=look->vi;
  49183. codec_setup_info *ci=vb->vd->vi->codec_setup;
  49184. int n=ci->blocksizes[vb->W]/2;
  49185. int j;
  49186. if(memo){
  49187. /* render the lines */
  49188. int *fit_value=(int *)memo;
  49189. int hx=0;
  49190. int lx=0;
  49191. int ly=fit_value[0]*info->mult;
  49192. for(j=1;j<look->posts;j++){
  49193. int current=look->forward_index[j];
  49194. int hy=fit_value[current]&0x7fff;
  49195. if(hy==fit_value[current]){
  49196. hy*=info->mult;
  49197. hx=info->postlist[current];
  49198. render_line(lx,hx,ly,hy,out);
  49199. lx=hx;
  49200. ly=hy;
  49201. }
  49202. }
  49203. for(j=hx;j<n;j++)out[j]*=FLOOR1_fromdB_LOOKUP[ly]; /* be certain */
  49204. return(1);
  49205. }
  49206. memset(out,0,sizeof(*out)*n);
  49207. return(0);
  49208. }
  49209. /* export hooks */
  49210. vorbis_func_floor floor1_exportbundle={
  49211. &floor1_pack,&floor1_unpack,&floor1_look,&floor1_free_info,
  49212. &floor1_free_look,&floor1_inverse1,&floor1_inverse2
  49213. };
  49214. /********************************************************************
  49215. * *
  49216. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  49217. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  49218. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  49219. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  49220. * *
  49221. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  49222. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  49223. * *
  49224. ********************************************************************
  49225. function: residue backend 0, 1 and 2 implementation
  49226. last mod: $Id: res0.c,v 1.49 2003/01/18 08:28:37 xiphmont Exp $
  49227. ********************************************************************/
  49228. /* Slow, slow, slow, simpleminded and did I mention it was slow? The
  49229. encode/decode loops are coded for clarity and performance is not
  49230. yet even a nagging little idea lurking in the shadows. Oh and BTW,
  49231. it's slow. */
  49232. #ifdef TRAIN_RES
  49233. #endif
  49234. typedef struct {
  49235. vorbis_info_residue0 *info;
  49236. int parts;
  49237. int stages;
  49238. codebook *fullbooks;
  49239. codebook *phrasebook;
  49240. codebook ***partbooks;
  49241. int partvals;
  49242. int **decodemap;
  49243. long postbits;
  49244. long phrasebits;
  49245. long frames;
  49246. #ifdef TRAIN_RES
  49247. int train_seq;
  49248. long *training_data[8][64];
  49249. float training_max[8][64];
  49250. float training_min[8][64];
  49251. float tmin;
  49252. float tmax;
  49253. #endif
  49254. } vorbis_look_residue0;
  49255. void res0_free_info(vorbis_info_residue *i){
  49256. vorbis_info_residue0 *info=(vorbis_info_residue0 *)i;
  49257. if(info){
  49258. memset(info,0,sizeof(*info));
  49259. _ogg_free(info);
  49260. }
  49261. }
  49262. void res0_free_look(vorbis_look_residue *i){
  49263. int j;
  49264. if(i){
  49265. vorbis_look_residue0 *look=(vorbis_look_residue0 *)i;
  49266. #ifdef TRAIN_RES
  49267. {
  49268. int j,k,l;
  49269. for(j=0;j<look->parts;j++){
  49270. /*fprintf(stderr,"partition %d: ",j);*/
  49271. for(k=0;k<8;k++)
  49272. if(look->training_data[k][j]){
  49273. char buffer[80];
  49274. FILE *of;
  49275. codebook *statebook=look->partbooks[j][k];
  49276. /* long and short into the same bucket by current convention */
  49277. sprintf(buffer,"res_part%d_pass%d.vqd",j,k);
  49278. of=fopen(buffer,"a");
  49279. for(l=0;l<statebook->entries;l++)
  49280. fprintf(of,"%d:%ld\n",l,look->training_data[k][j][l]);
  49281. fclose(of);
  49282. /*fprintf(stderr,"%d(%.2f|%.2f) ",k,
  49283. look->training_min[k][j],look->training_max[k][j]);*/
  49284. _ogg_free(look->training_data[k][j]);
  49285. }
  49286. /*fprintf(stderr,"\n");*/
  49287. }
  49288. }
  49289. fprintf(stderr,"min/max residue: %g::%g\n",look->tmin,look->tmax);
  49290. /*fprintf(stderr,"residue bit usage %f:%f (%f total)\n",
  49291. (float)look->phrasebits/look->frames,
  49292. (float)look->postbits/look->frames,
  49293. (float)(look->postbits+look->phrasebits)/look->frames);*/
  49294. #endif
  49295. /*vorbis_info_residue0 *info=look->info;
  49296. fprintf(stderr,
  49297. "%ld frames encoded in %ld phrasebits and %ld residue bits "
  49298. "(%g/frame) \n",look->frames,look->phrasebits,
  49299. look->resbitsflat,
  49300. (look->phrasebits+look->resbitsflat)/(float)look->frames);
  49301. for(j=0;j<look->parts;j++){
  49302. long acc=0;
  49303. fprintf(stderr,"\t[%d] == ",j);
  49304. for(k=0;k<look->stages;k++)
  49305. if((info->secondstages[j]>>k)&1){
  49306. fprintf(stderr,"%ld,",look->resbits[j][k]);
  49307. acc+=look->resbits[j][k];
  49308. }
  49309. fprintf(stderr,":: (%ld vals) %1.2fbits/sample\n",look->resvals[j],
  49310. acc?(float)acc/(look->resvals[j]*info->grouping):0);
  49311. }
  49312. fprintf(stderr,"\n");*/
  49313. for(j=0;j<look->parts;j++)
  49314. if(look->partbooks[j])_ogg_free(look->partbooks[j]);
  49315. _ogg_free(look->partbooks);
  49316. for(j=0;j<look->partvals;j++)
  49317. _ogg_free(look->decodemap[j]);
  49318. _ogg_free(look->decodemap);
  49319. memset(look,0,sizeof(*look));
  49320. _ogg_free(look);
  49321. }
  49322. }
  49323. static int icount(unsigned int v){
  49324. int ret=0;
  49325. while(v){
  49326. ret+=v&1;
  49327. v>>=1;
  49328. }
  49329. return(ret);
  49330. }
  49331. void res0_pack(vorbis_info_residue *vr,oggpack_buffer *opb){
  49332. vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr;
  49333. int j,acc=0;
  49334. oggpack_write(opb,info->begin,24);
  49335. oggpack_write(opb,info->end,24);
  49336. oggpack_write(opb,info->grouping-1,24); /* residue vectors to group and
  49337. code with a partitioned book */
  49338. oggpack_write(opb,info->partitions-1,6); /* possible partition choices */
  49339. oggpack_write(opb,info->groupbook,8); /* group huffman book */
  49340. /* secondstages is a bitmask; as encoding progresses pass by pass, a
  49341. bitmask of one indicates this partition class has bits to write
  49342. this pass */
  49343. for(j=0;j<info->partitions;j++){
  49344. if(ilog(info->secondstages[j])>3){
  49345. /* yes, this is a minor hack due to not thinking ahead */
  49346. oggpack_write(opb,info->secondstages[j],3);
  49347. oggpack_write(opb,1,1);
  49348. oggpack_write(opb,info->secondstages[j]>>3,5);
  49349. }else
  49350. oggpack_write(opb,info->secondstages[j],4); /* trailing zero */
  49351. acc+=icount(info->secondstages[j]);
  49352. }
  49353. for(j=0;j<acc;j++)
  49354. oggpack_write(opb,info->booklist[j],8);
  49355. }
  49356. /* vorbis_info is for range checking */
  49357. vorbis_info_residue *res0_unpack(vorbis_info *vi,oggpack_buffer *opb){
  49358. int j,acc=0;
  49359. vorbis_info_residue0 *info=_ogg_calloc(1,sizeof(*info));
  49360. codec_setup_info *ci=vi->codec_setup;
  49361. info->begin=oggpack_read(opb,24);
  49362. info->end=oggpack_read(opb,24);
  49363. info->grouping=oggpack_read(opb,24)+1;
  49364. info->partitions=oggpack_read(opb,6)+1;
  49365. info->groupbook=oggpack_read(opb,8);
  49366. for(j=0;j<info->partitions;j++){
  49367. int cascade=oggpack_read(opb,3);
  49368. if(oggpack_read(opb,1))
  49369. cascade|=(oggpack_read(opb,5)<<3);
  49370. info->secondstages[j]=cascade;
  49371. acc+=icount(cascade);
  49372. }
  49373. for(j=0;j<acc;j++)
  49374. info->booklist[j]=oggpack_read(opb,8);
  49375. if(info->groupbook>=ci->books)goto errout;
  49376. for(j=0;j<acc;j++)
  49377. if(info->booklist[j]>=ci->books)goto errout;
  49378. return(info);
  49379. errout:
  49380. res0_free_info(info);
  49381. return(NULL);
  49382. }
  49383. vorbis_look_residue *res0_look(vorbis_dsp_state *vd,
  49384. vorbis_info_residue *vr){
  49385. vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr;
  49386. vorbis_look_residue0 *look=_ogg_calloc(1,sizeof(*look));
  49387. codec_setup_info *ci=vd->vi->codec_setup;
  49388. int j,k,acc=0;
  49389. int dim;
  49390. int maxstage=0;
  49391. look->info=info;
  49392. look->parts=info->partitions;
  49393. look->fullbooks=ci->fullbooks;
  49394. look->phrasebook=ci->fullbooks+info->groupbook;
  49395. dim=look->phrasebook->dim;
  49396. look->partbooks=_ogg_calloc(look->parts,sizeof(*look->partbooks));
  49397. for(j=0;j<look->parts;j++){
  49398. int stages=ilog(info->secondstages[j]);
  49399. if(stages){
  49400. if(stages>maxstage)maxstage=stages;
  49401. look->partbooks[j]=_ogg_calloc(stages,sizeof(*look->partbooks[j]));
  49402. for(k=0;k<stages;k++)
  49403. if(info->secondstages[j]&(1<<k)){
  49404. look->partbooks[j][k]=ci->fullbooks+info->booklist[acc++];
  49405. #ifdef TRAIN_RES
  49406. look->training_data[k][j]=calloc(look->partbooks[j][k]->entries,
  49407. sizeof(***look->training_data));
  49408. #endif
  49409. }
  49410. }
  49411. }
  49412. look->partvals=rint(pow((float)look->parts,(float)dim));
  49413. look->stages=maxstage;
  49414. look->decodemap=_ogg_malloc(look->partvals*sizeof(*look->decodemap));
  49415. for(j=0;j<look->partvals;j++){
  49416. long val=j;
  49417. long mult=look->partvals/look->parts;
  49418. look->decodemap[j]=_ogg_malloc(dim*sizeof(*look->decodemap[j]));
  49419. for(k=0;k<dim;k++){
  49420. long deco=val/mult;
  49421. val-=deco*mult;
  49422. mult/=look->parts;
  49423. look->decodemap[j][k]=deco;
  49424. }
  49425. }
  49426. #ifdef TRAIN_RES
  49427. {
  49428. static int train_seq=0;
  49429. look->train_seq=train_seq++;
  49430. }
  49431. #endif
  49432. return(look);
  49433. }
  49434. /* break an abstraction and copy some code for performance purposes */
  49435. static int local_book_besterror(codebook *book,float *a){
  49436. int dim=book->dim,i,k,o;
  49437. int best=0;
  49438. encode_aux_threshmatch *tt=book->c->thresh_tree;
  49439. /* find the quant val of each scalar */
  49440. for(k=0,o=dim;k<dim;++k){
  49441. float val=a[--o];
  49442. i=tt->threshvals>>1;
  49443. if(val<tt->quantthresh[i]){
  49444. if(val<tt->quantthresh[i-1]){
  49445. for(--i;i>0;--i)
  49446. if(val>=tt->quantthresh[i-1])
  49447. break;
  49448. }
  49449. }else{
  49450. for(++i;i<tt->threshvals-1;++i)
  49451. if(val<tt->quantthresh[i])break;
  49452. }
  49453. best=(best*tt->quantvals)+tt->quantmap[i];
  49454. }
  49455. /* regular lattices are easy :-) */
  49456. if(book->c->lengthlist[best]<=0){
  49457. const static_codebook *c=book->c;
  49458. int i,j;
  49459. float bestf=0.f;
  49460. float *e=book->valuelist;
  49461. best=-1;
  49462. for(i=0;i<book->entries;i++){
  49463. if(c->lengthlist[i]>0){
  49464. float this=0.f;
  49465. for(j=0;j<dim;j++){
  49466. float val=(e[j]-a[j]);
  49467. this+=val*val;
  49468. }
  49469. if(best==-1 || this<bestf){
  49470. bestf=this;
  49471. best=i;
  49472. }
  49473. }
  49474. e+=dim;
  49475. }
  49476. }
  49477. {
  49478. float *ptr=book->valuelist+best*dim;
  49479. for(i=0;i<dim;i++)
  49480. *a++ -= *ptr++;
  49481. }
  49482. return(best);
  49483. }
  49484. static int _encodepart(oggpack_buffer *opb,float *vec, int n,
  49485. codebook *book,long *acc){
  49486. int i,bits=0;
  49487. int dim=book->dim;
  49488. int step=n/dim;
  49489. for(i=0;i<step;i++){
  49490. int entry=local_book_besterror(book,vec+i*dim);
  49491. #ifdef TRAIN_RES
  49492. acc[entry]++;
  49493. #endif
  49494. bits+=vorbis_book_encode(book,entry,opb);
  49495. }
  49496. return(bits);
  49497. }
  49498. static long **_01class(vorbis_block *vb,vorbis_look_residue *vl,
  49499. float **in,int ch){
  49500. long i,j,k;
  49501. vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
  49502. vorbis_info_residue0 *info=look->info;
  49503. /* move all this setup out later */
  49504. int samples_per_partition=info->grouping;
  49505. int possible_partitions=info->partitions;
  49506. int n=info->end-info->begin;
  49507. int partvals=n/samples_per_partition;
  49508. long **partword=_vorbis_block_alloc(vb,ch*sizeof(*partword));
  49509. float scale=100./samples_per_partition;
  49510. /* we find the partition type for each partition of each
  49511. channel. We'll go back and do the interleaved encoding in a
  49512. bit. For now, clarity */
  49513. for(i=0;i<ch;i++){
  49514. partword[i]=_vorbis_block_alloc(vb,n/samples_per_partition*sizeof(*partword[i]));
  49515. memset(partword[i],0,n/samples_per_partition*sizeof(*partword[i]));
  49516. }
  49517. for(i=0;i<partvals;i++){
  49518. int offset=i*samples_per_partition+info->begin;
  49519. for(j=0;j<ch;j++){
  49520. float max=0.;
  49521. float ent=0.;
  49522. for(k=0;k<samples_per_partition;k++){
  49523. if(fabs(in[j][offset+k])>max)max=fabs(in[j][offset+k]);
  49524. ent+=fabs(rint(in[j][offset+k]));
  49525. }
  49526. ent*=scale;
  49527. for(k=0;k<possible_partitions-1;k++)
  49528. if(max<=info->classmetric1[k] &&
  49529. (info->classmetric2[k]<0 || (int)ent<info->classmetric2[k]))
  49530. break;
  49531. partword[j][i]=k;
  49532. }
  49533. }
  49534. #ifdef TRAIN_RESAUX
  49535. {
  49536. FILE *of;
  49537. char buffer[80];
  49538. for(i=0;i<ch;i++){
  49539. sprintf(buffer,"resaux_%d.vqd",look->train_seq);
  49540. of=fopen(buffer,"a");
  49541. for(j=0;j<partvals;j++)
  49542. fprintf(of,"%ld, ",partword[i][j]);
  49543. fprintf(of,"\n");
  49544. fclose(of);
  49545. }
  49546. }
  49547. #endif
  49548. look->frames++;
  49549. return(partword);
  49550. }
  49551. /* designed for stereo or other modes where the partition size is an
  49552. integer multiple of the number of channels encoded in the current
  49553. submap */
  49554. static long **_2class(vorbis_block *vb,vorbis_look_residue *vl,float **in,
  49555. int ch){
  49556. long i,j,k,l;
  49557. vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
  49558. vorbis_info_residue0 *info=look->info;
  49559. /* move all this setup out later */
  49560. int samples_per_partition=info->grouping;
  49561. int possible_partitions=info->partitions;
  49562. int n=info->end-info->begin;
  49563. int partvals=n/samples_per_partition;
  49564. long **partword=_vorbis_block_alloc(vb,sizeof(*partword));
  49565. #ifdef TRAIN_RES
  49566. FILE *of;
  49567. char buffer[80];
  49568. #endif
  49569. partword[0]=_vorbis_block_alloc(vb,n*ch/samples_per_partition*sizeof(*partword[0]));
  49570. memset(partword[0],0,n*ch/samples_per_partition*sizeof(*partword[0]));
  49571. for(i=0,l=info->begin/ch;i<partvals;i++){
  49572. float magmax=0.f;
  49573. float angmax=0.f;
  49574. for(j=0;j<samples_per_partition;j+=ch){
  49575. if(fabs(in[0][l])>magmax)magmax=fabs(in[0][l]);
  49576. for(k=1;k<ch;k++)
  49577. if(fabs(in[k][l])>angmax)angmax=fabs(in[k][l]);
  49578. l++;
  49579. }
  49580. for(j=0;j<possible_partitions-1;j++)
  49581. if(magmax<=info->classmetric1[j] &&
  49582. angmax<=info->classmetric2[j])
  49583. break;
  49584. partword[0][i]=j;
  49585. }
  49586. #ifdef TRAIN_RESAUX
  49587. sprintf(buffer,"resaux_%d.vqd",look->train_seq);
  49588. of=fopen(buffer,"a");
  49589. for(i=0;i<partvals;i++)
  49590. fprintf(of,"%ld, ",partword[0][i]);
  49591. fprintf(of,"\n");
  49592. fclose(of);
  49593. #endif
  49594. look->frames++;
  49595. return(partword);
  49596. }
  49597. static int _01forward(vorbis_block *vb,vorbis_look_residue *vl,
  49598. float **in,int ch,
  49599. long **partword,
  49600. int (*encode)(oggpack_buffer *,float *,int,
  49601. codebook *,long *)){
  49602. long i,j,k,s;
  49603. vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
  49604. vorbis_info_residue0 *info=look->info;
  49605. /* move all this setup out later */
  49606. int samples_per_partition=info->grouping;
  49607. int possible_partitions=info->partitions;
  49608. int partitions_per_word=look->phrasebook->dim;
  49609. int n=info->end-info->begin;
  49610. int partvals=n/samples_per_partition;
  49611. long resbits[128];
  49612. long resvals[128];
  49613. #ifdef TRAIN_RES
  49614. for(i=0;i<ch;i++)
  49615. for(j=info->begin;j<info->end;j++){
  49616. if(in[i][j]>look->tmax)look->tmax=in[i][j];
  49617. if(in[i][j]<look->tmin)look->tmin=in[i][j];
  49618. }
  49619. #endif
  49620. memset(resbits,0,sizeof(resbits));
  49621. memset(resvals,0,sizeof(resvals));
  49622. /* we code the partition words for each channel, then the residual
  49623. words for a partition per channel until we've written all the
  49624. residual words for that partition word. Then write the next
  49625. partition channel words... */
  49626. for(s=0;s<look->stages;s++){
  49627. for(i=0;i<partvals;){
  49628. /* first we encode a partition codeword for each channel */
  49629. if(s==0){
  49630. for(j=0;j<ch;j++){
  49631. long val=partword[j][i];
  49632. for(k=1;k<partitions_per_word;k++){
  49633. val*=possible_partitions;
  49634. if(i+k<partvals)
  49635. val+=partword[j][i+k];
  49636. }
  49637. /* training hack */
  49638. if(val<look->phrasebook->entries)
  49639. look->phrasebits+=vorbis_book_encode(look->phrasebook,val,&vb->opb);
  49640. #if 0 /*def TRAIN_RES*/
  49641. else
  49642. fprintf(stderr,"!");
  49643. #endif
  49644. }
  49645. }
  49646. /* now we encode interleaved residual values for the partitions */
  49647. for(k=0;k<partitions_per_word && i<partvals;k++,i++){
  49648. long offset=i*samples_per_partition+info->begin;
  49649. for(j=0;j<ch;j++){
  49650. if(s==0)resvals[partword[j][i]]+=samples_per_partition;
  49651. if(info->secondstages[partword[j][i]]&(1<<s)){
  49652. codebook *statebook=look->partbooks[partword[j][i]][s];
  49653. if(statebook){
  49654. int ret;
  49655. long *accumulator=NULL;
  49656. #ifdef TRAIN_RES
  49657. accumulator=look->training_data[s][partword[j][i]];
  49658. {
  49659. int l;
  49660. float *samples=in[j]+offset;
  49661. for(l=0;l<samples_per_partition;l++){
  49662. if(samples[l]<look->training_min[s][partword[j][i]])
  49663. look->training_min[s][partword[j][i]]=samples[l];
  49664. if(samples[l]>look->training_max[s][partword[j][i]])
  49665. look->training_max[s][partword[j][i]]=samples[l];
  49666. }
  49667. }
  49668. #endif
  49669. ret=encode(&vb->opb,in[j]+offset,samples_per_partition,
  49670. statebook,accumulator);
  49671. look->postbits+=ret;
  49672. resbits[partword[j][i]]+=ret;
  49673. }
  49674. }
  49675. }
  49676. }
  49677. }
  49678. }
  49679. /*{
  49680. long total=0;
  49681. long totalbits=0;
  49682. fprintf(stderr,"%d :: ",vb->mode);
  49683. for(k=0;k<possible_partitions;k++){
  49684. fprintf(stderr,"%ld/%1.2g, ",resvals[k],(float)resbits[k]/resvals[k]);
  49685. total+=resvals[k];
  49686. totalbits+=resbits[k];
  49687. }
  49688. fprintf(stderr,":: %ld:%1.2g\n",total,(double)totalbits/total);
  49689. }*/
  49690. return(0);
  49691. }
  49692. /* a truncated packet here just means 'stop working'; it's not an error */
  49693. static int _01inverse(vorbis_block *vb,vorbis_look_residue *vl,
  49694. float **in,int ch,
  49695. long (*decodepart)(codebook *, float *,
  49696. oggpack_buffer *,int)){
  49697. long i,j,k,l,s;
  49698. vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
  49699. vorbis_info_residue0 *info=look->info;
  49700. /* move all this setup out later */
  49701. int samples_per_partition=info->grouping;
  49702. int partitions_per_word=look->phrasebook->dim;
  49703. int n=info->end-info->begin;
  49704. int partvals=n/samples_per_partition;
  49705. int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
  49706. int ***partword=alloca(ch*sizeof(*partword));
  49707. for(j=0;j<ch;j++)
  49708. partword[j]=_vorbis_block_alloc(vb,partwords*sizeof(*partword[j]));
  49709. for(s=0;s<look->stages;s++){
  49710. /* each loop decodes on partition codeword containing
  49711. partitions_pre_word partitions */
  49712. for(i=0,l=0;i<partvals;l++){
  49713. if(s==0){
  49714. /* fetch the partition word for each channel */
  49715. for(j=0;j<ch;j++){
  49716. int temp=vorbis_book_decode(look->phrasebook,&vb->opb);
  49717. if(temp==-1)goto eopbreak;
  49718. partword[j][l]=look->decodemap[temp];
  49719. if(partword[j][l]==NULL)goto errout;
  49720. }
  49721. }
  49722. /* now we decode residual values for the partitions */
  49723. for(k=0;k<partitions_per_word && i<partvals;k++,i++)
  49724. for(j=0;j<ch;j++){
  49725. long offset=info->begin+i*samples_per_partition;
  49726. if(info->secondstages[partword[j][l][k]]&(1<<s)){
  49727. codebook *stagebook=look->partbooks[partword[j][l][k]][s];
  49728. if(stagebook){
  49729. if(decodepart(stagebook,in[j]+offset,&vb->opb,
  49730. samples_per_partition)==-1)goto eopbreak;
  49731. }
  49732. }
  49733. }
  49734. }
  49735. }
  49736. errout:
  49737. eopbreak:
  49738. return(0);
  49739. }
  49740. #if 0
  49741. /* residue 0 and 1 are just slight variants of one another. 0 is
  49742. interleaved, 1 is not */
  49743. long **res0_class(vorbis_block *vb,vorbis_look_residue *vl,
  49744. float **in,int *nonzero,int ch){
  49745. /* we encode only the nonzero parts of a bundle */
  49746. int i,used=0;
  49747. for(i=0;i<ch;i++)
  49748. if(nonzero[i])
  49749. in[used++]=in[i];
  49750. if(used)
  49751. /*return(_01class(vb,vl,in,used,_interleaved_testhack));*/
  49752. return(_01class(vb,vl,in,used));
  49753. else
  49754. return(0);
  49755. }
  49756. int res0_forward(vorbis_block *vb,vorbis_look_residue *vl,
  49757. float **in,float **out,int *nonzero,int ch,
  49758. long **partword){
  49759. /* we encode only the nonzero parts of a bundle */
  49760. int i,j,used=0,n=vb->pcmend/2;
  49761. for(i=0;i<ch;i++)
  49762. if(nonzero[i]){
  49763. if(out)
  49764. for(j=0;j<n;j++)
  49765. out[i][j]+=in[i][j];
  49766. in[used++]=in[i];
  49767. }
  49768. if(used){
  49769. int ret=_01forward(vb,vl,in,used,partword,
  49770. _interleaved_encodepart);
  49771. if(out){
  49772. used=0;
  49773. for(i=0;i<ch;i++)
  49774. if(nonzero[i]){
  49775. for(j=0;j<n;j++)
  49776. out[i][j]-=in[used][j];
  49777. used++;
  49778. }
  49779. }
  49780. return(ret);
  49781. }else{
  49782. return(0);
  49783. }
  49784. }
  49785. #endif
  49786. int res0_inverse(vorbis_block *vb,vorbis_look_residue *vl,
  49787. float **in,int *nonzero,int ch){
  49788. int i,used=0;
  49789. for(i=0;i<ch;i++)
  49790. if(nonzero[i])
  49791. in[used++]=in[i];
  49792. if(used)
  49793. return(_01inverse(vb,vl,in,used,vorbis_book_decodevs_add));
  49794. else
  49795. return(0);
  49796. }
  49797. int res1_forward(vorbis_block *vb,vorbis_look_residue *vl,
  49798. float **in,float **out,int *nonzero,int ch,
  49799. long **partword){
  49800. int i,j,used=0,n=vb->pcmend/2;
  49801. for(i=0;i<ch;i++)
  49802. if(nonzero[i]){
  49803. if(out)
  49804. for(j=0;j<n;j++)
  49805. out[i][j]+=in[i][j];
  49806. in[used++]=in[i];
  49807. }
  49808. if(used){
  49809. int ret=_01forward(vb,vl,in,used,partword,_encodepart);
  49810. if(out){
  49811. used=0;
  49812. for(i=0;i<ch;i++)
  49813. if(nonzero[i]){
  49814. for(j=0;j<n;j++)
  49815. out[i][j]-=in[used][j];
  49816. used++;
  49817. }
  49818. }
  49819. return(ret);
  49820. }else{
  49821. return(0);
  49822. }
  49823. }
  49824. long **res1_class(vorbis_block *vb,vorbis_look_residue *vl,
  49825. float **in,int *nonzero,int ch){
  49826. int i,used=0;
  49827. for(i=0;i<ch;i++)
  49828. if(nonzero[i])
  49829. in[used++]=in[i];
  49830. if(used)
  49831. return(_01class(vb,vl,in,used));
  49832. else
  49833. return(0);
  49834. }
  49835. int res1_inverse(vorbis_block *vb,vorbis_look_residue *vl,
  49836. float **in,int *nonzero,int ch){
  49837. int i,used=0;
  49838. for(i=0;i<ch;i++)
  49839. if(nonzero[i])
  49840. in[used++]=in[i];
  49841. if(used)
  49842. return(_01inverse(vb,vl,in,used,vorbis_book_decodev_add));
  49843. else
  49844. return(0);
  49845. }
  49846. long **res2_class(vorbis_block *vb,vorbis_look_residue *vl,
  49847. float **in,int *nonzero,int ch){
  49848. int i,used=0;
  49849. for(i=0;i<ch;i++)
  49850. if(nonzero[i])used++;
  49851. if(used)
  49852. return(_2class(vb,vl,in,ch));
  49853. else
  49854. return(0);
  49855. }
  49856. /* res2 is slightly more different; all the channels are interleaved
  49857. into a single vector and encoded. */
  49858. int res2_forward(vorbis_block *vb,vorbis_look_residue *vl,
  49859. float **in,float **out,int *nonzero,int ch,
  49860. long **partword){
  49861. long i,j,k,n=vb->pcmend/2,used=0;
  49862. /* don't duplicate the code; use a working vector hack for now and
  49863. reshape ourselves into a single channel res1 */
  49864. /* ugly; reallocs for each coupling pass :-( */
  49865. float *work=_vorbis_block_alloc(vb,ch*n*sizeof(*work));
  49866. for(i=0;i<ch;i++){
  49867. float *pcm=in[i];
  49868. if(nonzero[i])used++;
  49869. for(j=0,k=i;j<n;j++,k+=ch)
  49870. work[k]=pcm[j];
  49871. }
  49872. if(used){
  49873. int ret=_01forward(vb,vl,&work,1,partword,_encodepart);
  49874. /* update the sofar vector */
  49875. if(out){
  49876. for(i=0;i<ch;i++){
  49877. float *pcm=in[i];
  49878. float *sofar=out[i];
  49879. for(j=0,k=i;j<n;j++,k+=ch)
  49880. sofar[j]+=pcm[j]-work[k];
  49881. }
  49882. }
  49883. return(ret);
  49884. }else{
  49885. return(0);
  49886. }
  49887. }
  49888. /* duplicate code here as speed is somewhat more important */
  49889. int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl,
  49890. float **in,int *nonzero,int ch){
  49891. long i,k,l,s;
  49892. vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
  49893. vorbis_info_residue0 *info=look->info;
  49894. /* move all this setup out later */
  49895. int samples_per_partition=info->grouping;
  49896. int partitions_per_word=look->phrasebook->dim;
  49897. int n=info->end-info->begin;
  49898. int partvals=n/samples_per_partition;
  49899. int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
  49900. int **partword=_vorbis_block_alloc(vb,partwords*sizeof(*partword));
  49901. for(i=0;i<ch;i++)if(nonzero[i])break;
  49902. if(i==ch)return(0); /* no nonzero vectors */
  49903. for(s=0;s<look->stages;s++){
  49904. for(i=0,l=0;i<partvals;l++){
  49905. if(s==0){
  49906. /* fetch the partition word */
  49907. int temp=vorbis_book_decode(look->phrasebook,&vb->opb);
  49908. if(temp==-1)goto eopbreak;
  49909. partword[l]=look->decodemap[temp];
  49910. if(partword[l]==NULL)goto errout;
  49911. }
  49912. /* now we decode residual values for the partitions */
  49913. for(k=0;k<partitions_per_word && i<partvals;k++,i++)
  49914. if(info->secondstages[partword[l][k]]&(1<<s)){
  49915. codebook *stagebook=look->partbooks[partword[l][k]][s];
  49916. if(stagebook){
  49917. if(vorbis_book_decodevv_add(stagebook,in,
  49918. i*samples_per_partition+info->begin,ch,
  49919. &vb->opb,samples_per_partition)==-1)
  49920. goto eopbreak;
  49921. }
  49922. }
  49923. }
  49924. }
  49925. errout:
  49926. eopbreak:
  49927. return(0);
  49928. }
  49929. vorbis_func_residue residue0_exportbundle={
  49930. NULL,
  49931. &res0_unpack,
  49932. &res0_look,
  49933. &res0_free_info,
  49934. &res0_free_look,
  49935. NULL,
  49936. NULL,
  49937. &res0_inverse
  49938. };
  49939. vorbis_func_residue residue1_exportbundle={
  49940. &res0_pack,
  49941. &res0_unpack,
  49942. &res0_look,
  49943. &res0_free_info,
  49944. &res0_free_look,
  49945. &res1_class,
  49946. &res1_forward,
  49947. &res1_inverse
  49948. };
  49949. vorbis_func_residue residue2_exportbundle={
  49950. &res0_pack,
  49951. &res0_unpack,
  49952. &res0_look,
  49953. &res0_free_info,
  49954. &res0_free_look,
  49955. &res2_class,
  49956. &res2_forward,
  49957. &res2_inverse
  49958. };
  49959. /********************************************************************
  49960. * *
  49961. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  49962. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  49963. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  49964. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  49965. * *
  49966. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  49967. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  49968. * *
  49969. ********************************************************************
  49970. function: channel mapping 0 implementation
  49971. last mod: $Id: mapping0.c,v 1.60 2003/09/01 23:05:49 xiphmont Exp $
  49972. ********************************************************************/
  49973. /* simplistic, wasteful way of doing this (unique lookup for each
  49974. mode/submapping); there should be a central repository for
  49975. identical lookups. That will require minor work, so I'm putting it
  49976. off as low priority.
  49977. Why a lookup for each backend in a given mode? Because the
  49978. blocksize is set by the mode, and low backend lookups may require
  49979. parameters from other areas of the mode/mapping */
  49980. static void mapping0_free_info(vorbis_info_mapping *i){
  49981. vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)i;
  49982. if(info){
  49983. memset(info,0,sizeof(*info));
  49984. _ogg_free(info);
  49985. }
  49986. }
  49987. static void mapping0_pack(vorbis_info *vi,vorbis_info_mapping *vm,
  49988. oggpack_buffer *opb){
  49989. int i;
  49990. vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)vm;
  49991. /* another 'we meant to do it this way' hack... up to beta 4, we
  49992. packed 4 binary zeros here to signify one submapping in use. We
  49993. now redefine that to mean four bitflags that indicate use of
  49994. deeper features; bit0:submappings, bit1:coupling,
  49995. bit2,3:reserved. This is backward compatable with all actual uses
  49996. of the beta code. */
  49997. if(info->submaps>1){
  49998. oggpack_write(opb,1,1);
  49999. oggpack_write(opb,info->submaps-1,4);
  50000. }else
  50001. oggpack_write(opb,0,1);
  50002. if(info->coupling_steps>0){
  50003. oggpack_write(opb,1,1);
  50004. oggpack_write(opb,info->coupling_steps-1,8);
  50005. for(i=0;i<info->coupling_steps;i++){
  50006. oggpack_write(opb,info->coupling_mag[i],ilog(vi->channels));
  50007. oggpack_write(opb,info->coupling_ang[i],ilog(vi->channels));
  50008. }
  50009. }else
  50010. oggpack_write(opb,0,1);
  50011. oggpack_write(opb,0,2); /* 2,3:reserved */
  50012. /* we don't write the channel submappings if we only have one... */
  50013. if(info->submaps>1){
  50014. for(i=0;i<vi->channels;i++)
  50015. oggpack_write(opb,info->chmuxlist[i],4);
  50016. }
  50017. for(i=0;i<info->submaps;i++){
  50018. oggpack_write(opb,0,8); /* time submap unused */
  50019. oggpack_write(opb,info->floorsubmap[i],8);
  50020. oggpack_write(opb,info->residuesubmap[i],8);
  50021. }
  50022. }
  50023. /* also responsible for range checking */
  50024. static vorbis_info_mapping *mapping0_unpack(vorbis_info *vi,oggpack_buffer *opb){
  50025. int i;
  50026. vorbis_info_mapping0 *info=_ogg_calloc(1,sizeof(*info));
  50027. codec_setup_info *ci=vi->codec_setup;
  50028. memset(info,0,sizeof(*info));
  50029. if(oggpack_read(opb,1))
  50030. info->submaps=oggpack_read(opb,4)+1;
  50031. else
  50032. info->submaps=1;
  50033. if(oggpack_read(opb,1)){
  50034. info->coupling_steps=oggpack_read(opb,8)+1;
  50035. for(i=0;i<info->coupling_steps;i++){
  50036. int testM=info->coupling_mag[i]=oggpack_read(opb,ilog(vi->channels));
  50037. int testA=info->coupling_ang[i]=oggpack_read(opb,ilog(vi->channels));
  50038. if(testM<0 ||
  50039. testA<0 ||
  50040. testM==testA ||
  50041. testM>=vi->channels ||
  50042. testA>=vi->channels) goto err_out;
  50043. }
  50044. }
  50045. if(oggpack_read(opb,2)>0)goto err_out; /* 2,3:reserved */
  50046. if(info->submaps>1){
  50047. for(i=0;i<vi->channels;i++){
  50048. info->chmuxlist[i]=oggpack_read(opb,4);
  50049. if(info->chmuxlist[i]>=info->submaps)goto err_out;
  50050. }
  50051. }
  50052. for(i=0;i<info->submaps;i++){
  50053. oggpack_read(opb,8); /* time submap unused */
  50054. info->floorsubmap[i]=oggpack_read(opb,8);
  50055. if(info->floorsubmap[i]>=ci->floors)goto err_out;
  50056. info->residuesubmap[i]=oggpack_read(opb,8);
  50057. if(info->residuesubmap[i]>=ci->residues)goto err_out;
  50058. }
  50059. return info;
  50060. err_out:
  50061. mapping0_free_info(info);
  50062. return(NULL);
  50063. }
  50064. #if 0
  50065. static long seq=0;
  50066. static ogg_int64_t total=0;
  50067. static float FLOOR1_fromdB_LOOKUP[256]={
  50068. 1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F,
  50069. 1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F,
  50070. 1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F,
  50071. 2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F,
  50072. 2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F,
  50073. 3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F,
  50074. 4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F,
  50075. 6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F,
  50076. 7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F,
  50077. 1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F,
  50078. 1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F,
  50079. 1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F,
  50080. 2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F,
  50081. 2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F,
  50082. 3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F,
  50083. 4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F,
  50084. 5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F,
  50085. 7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F,
  50086. 9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F,
  50087. 1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F,
  50088. 1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F,
  50089. 2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F,
  50090. 2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F,
  50091. 3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F,
  50092. 4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F,
  50093. 5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F,
  50094. 7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F,
  50095. 9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F,
  50096. 0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F,
  50097. 0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F,
  50098. 0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F,
  50099. 0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F,
  50100. 0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F,
  50101. 0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F,
  50102. 0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F,
  50103. 0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F,
  50104. 0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F,
  50105. 0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F,
  50106. 0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F,
  50107. 0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F,
  50108. 0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F,
  50109. 0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F,
  50110. 0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F,
  50111. 0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F,
  50112. 0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F,
  50113. 0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F,
  50114. 0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F,
  50115. 0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F,
  50116. 0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F,
  50117. 0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F,
  50118. 0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F,
  50119. 0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F,
  50120. 0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F,
  50121. 0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F,
  50122. 0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F,
  50123. 0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F,
  50124. 0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F,
  50125. 0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F,
  50126. 0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F,
  50127. 0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F,
  50128. 0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F,
  50129. 0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F,
  50130. 0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F,
  50131. 0.82788260F, 0.88168307F, 0.9389798F, 1.F,
  50132. };
  50133. #endif
  50134. void oggpack_writealign(oggpack_buffer *b);
  50135. static int mapping0_forward(vorbis_block *vb){
  50136. vorbis_dsp_state *vd=vb->vd;
  50137. vorbis_info *vi=vd->vi;
  50138. codec_setup_info *ci=vi->codec_setup;
  50139. private_state *b=vb->vd->backend_state;
  50140. vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal;
  50141. int n=vb->pcmend;
  50142. int i,j,k;
  50143. int *nonzero = alloca(sizeof(*nonzero)*vi->channels);
  50144. float **gmdct = _vorbis_block_alloc(vb,vi->channels*sizeof(*gmdct));
  50145. int **ilogmaskch= _vorbis_block_alloc(vb,vi->channels*sizeof(*ilogmaskch));
  50146. int ***floor_posts = _vorbis_block_alloc(vb,vi->channels*sizeof(*floor_posts));
  50147. float global_ampmax=vbi->ampmax;
  50148. float *local_ampmax=alloca(sizeof(*local_ampmax)*vi->channels);
  50149. int blocktype=vbi->blocktype;
  50150. int modenumber=vb->W;
  50151. vorbis_info_mapping0 *info=ci->map_param[modenumber];
  50152. vorbis_look_psy *psy_look=
  50153. b->psy+blocktype+(vb->W?2:0);
  50154. vb->mode=modenumber;
  50155. for(i=0;i<vi->channels;i++){
  50156. float scale=4.f/n;
  50157. float scale_dB;
  50158. float *pcm =vb->pcm[i];
  50159. float *logfft =pcm;
  50160. gmdct[i]=_vorbis_block_alloc(vb,n/2*sizeof(**gmdct));
  50161. scale_dB=todB(&scale);
  50162. #if 0
  50163. if(vi->channels==2)
  50164. if(i==0)
  50165. _analysis_output("pcmL",seq,pcm,n,0,0,total-n/2);
  50166. else
  50167. _analysis_output("pcmR",seq,pcm,n,0,0,total-n/2);
  50168. #endif
  50169. /* window the PCM data */
  50170. _vorbis_apply_window(pcm,b->window,ci->blocksizes,vb->lW,vb->W,vb->nW);
  50171. #if 0
  50172. if(vi->channels==2)
  50173. if(i==0)
  50174. _analysis_output("windowedL",seq,pcm,n,0,0,total-n/2);
  50175. else
  50176. _analysis_output("windowedR",seq,pcm,n,0,0,total-n/2);
  50177. #endif
  50178. /* transform the PCM data */
  50179. /* only MDCT right now.... */
  50180. mdct_forward(b->transform[vb->W][0],pcm,gmdct[i]);
  50181. /* FFT yields more accurate tonal estimation (not phase sensitive) */
  50182. drft_forward(&b->fft_look[vb->W],pcm);
  50183. logfft[0]=scale_dB+todB(pcm);
  50184. local_ampmax[i]=logfft[0];
  50185. for(j=1;j<n-1;j+=2){
  50186. float temp=pcm[j]*pcm[j]+pcm[j+1]*pcm[j+1];
  50187. temp=logfft[(j+1)>>1]=scale_dB+.5f*todB(&temp);
  50188. if(temp>local_ampmax[i])local_ampmax[i]=temp;
  50189. }
  50190. if(local_ampmax[i]>0.f)local_ampmax[i]=0.f;
  50191. if(local_ampmax[i]>global_ampmax)global_ampmax=local_ampmax[i];
  50192. #if 0
  50193. if(vi->channels==2)
  50194. if(i==0)
  50195. _analysis_output("fftL",seq,logfft,n/2,1,0,0);
  50196. else
  50197. _analysis_output("fftR",seq,logfft,n/2,1,0,0);
  50198. #endif
  50199. }
  50200. {
  50201. float *noise = _vorbis_block_alloc(vb,n/2*sizeof(*noise));
  50202. float *tone = _vorbis_block_alloc(vb,n/2*sizeof(*tone));
  50203. for(i=0;i<vi->channels;i++){
  50204. /* the encoder setup assumes that all the modes used by any
  50205. specific bitrate tweaking use the same floor */
  50206. int submap=info->chmuxlist[i];
  50207. /* the following makes things clearer to *me* anyway */
  50208. float *mdct =gmdct[i];
  50209. float *logfft =vb->pcm[i];
  50210. float *logmdct =logfft+n/2;
  50211. float *logmask =logfft;
  50212. vb->mode=modenumber;
  50213. floor_posts[i]=_vorbis_block_alloc(vb,PACKETBLOBS*sizeof(**floor_posts));
  50214. memset(floor_posts[i],0,sizeof(**floor_posts)*PACKETBLOBS);
  50215. for(j=0;j<n/2;j++)
  50216. logmdct[j]=todB(mdct+j);
  50217. #if 0
  50218. if(vi->channels==2){
  50219. if(i==0)
  50220. _analysis_output("mdctL",seq,logmdct,n/2,1,0,0);
  50221. else
  50222. _analysis_output("mdctR",seq,logmdct,n/2,1,0,0);
  50223. }else{
  50224. _analysis_output("mdct",seq,logmdct,n/2,1,0,0);
  50225. }
  50226. #endif
  50227. /* first step; noise masking. Not only does 'noise masking'
  50228. give us curves from which we can decide how much resolution
  50229. to give noise parts of the spectrum, it also implicitly hands
  50230. us a tonality estimate (the larger the value in the
  50231. 'noise_depth' vector, the more tonal that area is) */
  50232. _vp_noisemask(psy_look,
  50233. logmdct,
  50234. noise); /* noise does not have by-frequency offset
  50235. bias applied yet */
  50236. #if 0
  50237. if(vi->channels==2){
  50238. if(i==0)
  50239. _analysis_output("noiseL",seq,noise,n/2,1,0,0);
  50240. else
  50241. _analysis_output("noiseR",seq,noise,n/2,1,0,0);
  50242. }
  50243. #endif
  50244. /* second step: 'all the other crap'; all the stuff that isn't
  50245. computed/fit for bitrate management goes in the second psy
  50246. vector. This includes tone masking, peak limiting and ATH */
  50247. _vp_tonemask(psy_look,
  50248. logfft,
  50249. tone,
  50250. global_ampmax,
  50251. local_ampmax[i]);
  50252. #if 0
  50253. if(vi->channels==2){
  50254. if(i==0)
  50255. _analysis_output("toneL",seq,tone,n/2,1,0,0);
  50256. else
  50257. _analysis_output("toneR",seq,tone,n/2,1,0,0);
  50258. }
  50259. #endif
  50260. /* third step; we offset the noise vectors, overlay tone
  50261. masking. We then do a floor1-specific line fit. If we're
  50262. performing bitrate management, the line fit is performed
  50263. multiple times for up/down tweakage on demand. */
  50264. _vp_offset_and_mix(psy_look,
  50265. noise,
  50266. tone,
  50267. 1,
  50268. logmask);
  50269. #if 0
  50270. if(vi->channels==2){
  50271. if(i==0)
  50272. _analysis_output("mask1L",seq,logmask,n/2,1,0,0);
  50273. else
  50274. _analysis_output("mask1R",seq,logmask,n/2,1,0,0);
  50275. }
  50276. #endif
  50277. /* this algorithm is hardwired to floor 1 for now; abort out if
  50278. we're *not* floor1. This won't happen unless someone has
  50279. broken the encode setup lib. Guard it anyway. */
  50280. if(ci->floor_type[info->floorsubmap[submap]]!=1)return(-1);
  50281. floor_posts[i][PACKETBLOBS/2]=
  50282. floor1_fit(vb,b->flr[info->floorsubmap[submap]],
  50283. logmdct,
  50284. logmask);
  50285. /* are we managing bitrate? If so, perform two more fits for
  50286. later rate tweaking (fits represent hi/lo) */
  50287. if(vorbis_bitrate_managed(vb) && floor_posts[i][PACKETBLOBS/2]){
  50288. /* higher rate by way of lower noise curve */
  50289. _vp_offset_and_mix(psy_look,
  50290. noise,
  50291. tone,
  50292. 2,
  50293. logmask);
  50294. #if 0
  50295. if(vi->channels==2){
  50296. if(i==0)
  50297. _analysis_output("mask2L",seq,logmask,n/2,1,0,0);
  50298. else
  50299. _analysis_output("mask2R",seq,logmask,n/2,1,0,0);
  50300. }
  50301. #endif
  50302. floor_posts[i][PACKETBLOBS-1]=
  50303. floor1_fit(vb,b->flr[info->floorsubmap[submap]],
  50304. logmdct,
  50305. logmask);
  50306. /* lower rate by way of higher noise curve */
  50307. _vp_offset_and_mix(psy_look,
  50308. noise,
  50309. tone,
  50310. 0,
  50311. logmask);
  50312. #if 0
  50313. if(vi->channels==2)
  50314. if(i==0)
  50315. _analysis_output("mask0L",seq,logmask,n/2,1,0,0);
  50316. else
  50317. _analysis_output("mask0R",seq,logmask,n/2,1,0,0);
  50318. #endif
  50319. floor_posts[i][0]=
  50320. floor1_fit(vb,b->flr[info->floorsubmap[submap]],
  50321. logmdct,
  50322. logmask);
  50323. /* we also interpolate a range of intermediate curves for
  50324. intermediate rates */
  50325. for(k=1;k<PACKETBLOBS/2;k++)
  50326. floor_posts[i][k]=
  50327. floor1_interpolate_fit(vb,b->flr[info->floorsubmap[submap]],
  50328. floor_posts[i][0],
  50329. floor_posts[i][PACKETBLOBS/2],
  50330. k*65536/(PACKETBLOBS/2));
  50331. for(k=PACKETBLOBS/2+1;k<PACKETBLOBS-1;k++)
  50332. floor_posts[i][k]=
  50333. floor1_interpolate_fit(vb,b->flr[info->floorsubmap[submap]],
  50334. floor_posts[i][PACKETBLOBS/2],
  50335. floor_posts[i][PACKETBLOBS-1],
  50336. (k-PACKETBLOBS/2)*65536/(PACKETBLOBS/2));
  50337. }
  50338. }
  50339. }
  50340. vbi->ampmax=global_ampmax;
  50341. /*
  50342. the next phases are performed once for vbr-only and PACKETBLOB
  50343. times for bitrate managed modes.
  50344. 1) encode actual mode being used
  50345. 2) encode the floor for each channel, compute coded mask curve/res
  50346. 3) normalize and couple.
  50347. 4) encode residue
  50348. 5) save packet bytes to the packetblob vector
  50349. */
  50350. /* iterate over the many masking curve fits we've created */
  50351. {
  50352. float **res_bundle=alloca(sizeof(*res_bundle)*vi->channels);
  50353. float **couple_bundle=alloca(sizeof(*couple_bundle)*vi->channels);
  50354. int *zerobundle=alloca(sizeof(*zerobundle)*vi->channels);
  50355. int **sortindex=alloca(sizeof(*sortindex)*vi->channels);
  50356. float **mag_memo;
  50357. int **mag_sort;
  50358. if(info->coupling_steps){
  50359. mag_memo=_vp_quantize_couple_memo(vb,
  50360. &ci->psy_g_param,
  50361. psy_look,
  50362. info,
  50363. gmdct);
  50364. mag_sort=_vp_quantize_couple_sort(vb,
  50365. psy_look,
  50366. info,
  50367. mag_memo);
  50368. }
  50369. memset(sortindex,0,sizeof(*sortindex)*vi->channels);
  50370. if(psy_look->vi->normal_channel_p){
  50371. for(i=0;i<vi->channels;i++){
  50372. float *mdct =gmdct[i];
  50373. sortindex[i]=alloca(sizeof(**sortindex)*n/2);
  50374. _vp_noise_normalize_sort(psy_look,mdct,sortindex[i]);
  50375. }
  50376. }
  50377. for(k=(vorbis_bitrate_managed(vb)?0:PACKETBLOBS/2);
  50378. k<=(vorbis_bitrate_managed(vb)?PACKETBLOBS-1:PACKETBLOBS/2);
  50379. k++){
  50380. /* start out our new packet blob with packet type and mode */
  50381. /* Encode the packet type */
  50382. oggpack_write(&vb->opb,0,1);
  50383. /* Encode the modenumber */
  50384. /* Encode frame mode, pre,post windowsize, then dispatch */
  50385. oggpack_write(&vb->opb,modenumber,b->modebits);
  50386. if(vb->W){
  50387. oggpack_write(&vb->opb,vb->lW,1);
  50388. oggpack_write(&vb->opb,vb->nW,1);
  50389. }
  50390. /* encode floor, compute masking curve, sep out residue */
  50391. for(i=0;i<vi->channels;i++){
  50392. int submap=info->chmuxlist[i];
  50393. float *mdct =gmdct[i];
  50394. float *res =vb->pcm[i];
  50395. int *ilogmask=ilogmaskch[i]=
  50396. _vorbis_block_alloc(vb,n/2*sizeof(**gmdct));
  50397. nonzero[i]=floor1_encode(vb,b->flr[info->floorsubmap[submap]],
  50398. floor_posts[i][k],
  50399. ilogmask);
  50400. #if 0
  50401. {
  50402. char buf[80];
  50403. sprintf(buf,"maskI%c%d",i?'R':'L',k);
  50404. float work[n/2];
  50405. for(j=0;j<n/2;j++)
  50406. work[j]=FLOOR1_fromdB_LOOKUP[ilogmask[j]];
  50407. _analysis_output(buf,seq,work,n/2,1,1,0);
  50408. }
  50409. #endif
  50410. _vp_remove_floor(psy_look,
  50411. mdct,
  50412. ilogmask,
  50413. res,
  50414. ci->psy_g_param.sliding_lowpass[vb->W][k]);
  50415. _vp_noise_normalize(psy_look,res,res+n/2,sortindex[i]);
  50416. #if 0
  50417. {
  50418. char buf[80];
  50419. float work[n/2];
  50420. for(j=0;j<n/2;j++)
  50421. work[j]=FLOOR1_fromdB_LOOKUP[ilogmask[j]]*(res+n/2)[j];
  50422. sprintf(buf,"resI%c%d",i?'R':'L',k);
  50423. _analysis_output(buf,seq,work,n/2,1,1,0);
  50424. }
  50425. #endif
  50426. }
  50427. /* our iteration is now based on masking curve, not prequant and
  50428. coupling. Only one prequant/coupling step */
  50429. /* quantize/couple */
  50430. /* incomplete implementation that assumes the tree is all depth
  50431. one, or no tree at all */
  50432. if(info->coupling_steps){
  50433. _vp_couple(k,
  50434. &ci->psy_g_param,
  50435. psy_look,
  50436. info,
  50437. vb->pcm,
  50438. mag_memo,
  50439. mag_sort,
  50440. ilogmaskch,
  50441. nonzero,
  50442. ci->psy_g_param.sliding_lowpass[vb->W][k]);
  50443. }
  50444. /* classify and encode by submap */
  50445. for(i=0;i<info->submaps;i++){
  50446. int ch_in_bundle=0;
  50447. long **classifications;
  50448. int resnum=info->residuesubmap[i];
  50449. for(j=0;j<vi->channels;j++){
  50450. if(info->chmuxlist[j]==i){
  50451. zerobundle[ch_in_bundle]=0;
  50452. if(nonzero[j])zerobundle[ch_in_bundle]=1;
  50453. res_bundle[ch_in_bundle]=vb->pcm[j];
  50454. couple_bundle[ch_in_bundle++]=vb->pcm[j]+n/2;
  50455. }
  50456. }
  50457. classifications=_residue_P[ci->residue_type[resnum]]->
  50458. class(vb,b->residue[resnum],couple_bundle,zerobundle,ch_in_bundle);
  50459. _residue_P[ci->residue_type[resnum]]->
  50460. forward(vb,b->residue[resnum],
  50461. couple_bundle,NULL,zerobundle,ch_in_bundle,classifications);
  50462. }
  50463. /* ok, done encoding. Mark this protopacket and prepare next. */
  50464. oggpack_writealign(&vb->opb);
  50465. vbi->packetblob_markers[k]=oggpack_bytes(&vb->opb);
  50466. }
  50467. }
  50468. #if 0
  50469. seq++;
  50470. total+=ci->blocksizes[vb->W]/4+ci->blocksizes[vb->nW]/4;
  50471. #endif
  50472. return(0);
  50473. }
  50474. static int mapping0_inverse(vorbis_block *vb,vorbis_info_mapping *l){
  50475. vorbis_dsp_state *vd=vb->vd;
  50476. vorbis_info *vi=vd->vi;
  50477. codec_setup_info *ci=vi->codec_setup;
  50478. private_state *b=vd->backend_state;
  50479. vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)l;
  50480. int i,j;
  50481. long n=vb->pcmend=ci->blocksizes[vb->W];
  50482. float **pcmbundle=alloca(sizeof(*pcmbundle)*vi->channels);
  50483. int *zerobundle=alloca(sizeof(*zerobundle)*vi->channels);
  50484. int *nonzero =alloca(sizeof(*nonzero)*vi->channels);
  50485. void **floormemo=alloca(sizeof(*floormemo)*vi->channels);
  50486. /* recover the spectral envelope; store it in the PCM vector for now */
  50487. for(i=0;i<vi->channels;i++){
  50488. int submap=info->chmuxlist[i];
  50489. floormemo[i]=_floor_P[ci->floor_type[info->floorsubmap[submap]]]->
  50490. inverse1(vb,b->flr[info->floorsubmap[submap]]);
  50491. if(floormemo[i])
  50492. nonzero[i]=1;
  50493. else
  50494. nonzero[i]=0;
  50495. memset(vb->pcm[i],0,sizeof(*vb->pcm[i])*n/2);
  50496. }
  50497. /* channel coupling can 'dirty' the nonzero listing */
  50498. for(i=0;i<info->coupling_steps;i++){
  50499. if(nonzero[info->coupling_mag[i]] ||
  50500. nonzero[info->coupling_ang[i]]){
  50501. nonzero[info->coupling_mag[i]]=1;
  50502. nonzero[info->coupling_ang[i]]=1;
  50503. }
  50504. }
  50505. /* recover the residue into our working vectors */
  50506. for(i=0;i<info->submaps;i++){
  50507. int ch_in_bundle=0;
  50508. for(j=0;j<vi->channels;j++){
  50509. if(info->chmuxlist[j]==i){
  50510. if(nonzero[j])
  50511. zerobundle[ch_in_bundle]=1;
  50512. else
  50513. zerobundle[ch_in_bundle]=0;
  50514. pcmbundle[ch_in_bundle++]=vb->pcm[j];
  50515. }
  50516. }
  50517. _residue_P[ci->residue_type[info->residuesubmap[i]]]->
  50518. inverse(vb,b->residue[info->residuesubmap[i]],
  50519. pcmbundle,zerobundle,ch_in_bundle);
  50520. }
  50521. /* channel coupling */
  50522. for(i=info->coupling_steps-1;i>=0;i--){
  50523. float *pcmM=vb->pcm[info->coupling_mag[i]];
  50524. float *pcmA=vb->pcm[info->coupling_ang[i]];
  50525. for(j=0;j<n/2;j++){
  50526. float mag=pcmM[j];
  50527. float ang=pcmA[j];
  50528. if(mag>0)
  50529. if(ang>0){
  50530. pcmM[j]=mag;
  50531. pcmA[j]=mag-ang;
  50532. }else{
  50533. pcmA[j]=mag;
  50534. pcmM[j]=mag+ang;
  50535. }
  50536. else
  50537. if(ang>0){
  50538. pcmM[j]=mag;
  50539. pcmA[j]=mag+ang;
  50540. }else{
  50541. pcmA[j]=mag;
  50542. pcmM[j]=mag-ang;
  50543. }
  50544. }
  50545. }
  50546. /* compute and apply spectral envelope */
  50547. for(i=0;i<vi->channels;i++){
  50548. float *pcm=vb->pcm[i];
  50549. int submap=info->chmuxlist[i];
  50550. _floor_P[ci->floor_type[info->floorsubmap[submap]]]->
  50551. inverse2(vb,b->flr[info->floorsubmap[submap]],
  50552. floormemo[i],pcm);
  50553. }
  50554. /* transform the PCM data; takes PCM vector, vb; modifies PCM vector */
  50555. /* only MDCT right now.... */
  50556. for(i=0;i<vi->channels;i++){
  50557. float *pcm=vb->pcm[i];
  50558. mdct_backward(b->transform[vb->W][0],pcm,pcm);
  50559. }
  50560. /* all done! */
  50561. return(0);
  50562. }
  50563. /* export hooks */
  50564. vorbis_func_mapping mapping0_exportbundle={
  50565. &mapping0_pack,
  50566. &mapping0_unpack,
  50567. &mapping0_free_info,
  50568. &mapping0_forward,
  50569. &mapping0_inverse
  50570. };
  50571. /********************************************************************
  50572. * *
  50573. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  50574. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  50575. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  50576. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  50577. * *
  50578. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  50579. * by the Xiph.Org Foundation http://www.xiph.org/ *
  50580. * *
  50581. ********************************************************************
  50582. function: packing variable sized words into an octet stream
  50583. last mod: $Id: bitwise.c,v 1.17 2003/11/10 13:06:08 xiphmont Exp $
  50584. ********************************************************************/
  50585. /* We're 'LSb' endian; if we write a word but read individual bits,
  50586. then we'll read the lsb first */
  50587. #define BUFFER_INCREMENT 256
  50588. static unsigned long mask[]=
  50589. {0x00000000,0x00000001,0x00000003,0x00000007,0x0000000f,
  50590. 0x0000001f,0x0000003f,0x0000007f,0x000000ff,0x000001ff,
  50591. 0x000003ff,0x000007ff,0x00000fff,0x00001fff,0x00003fff,
  50592. 0x00007fff,0x0000ffff,0x0001ffff,0x0003ffff,0x0007ffff,
  50593. 0x000fffff,0x001fffff,0x003fffff,0x007fffff,0x00ffffff,
  50594. 0x01ffffff,0x03ffffff,0x07ffffff,0x0fffffff,0x1fffffff,
  50595. 0x3fffffff,0x7fffffff,0xffffffff };
  50596. static unsigned int mask8B[]=
  50597. {0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
  50598. void oggpack_writeinit(oggpack_buffer *b){
  50599. memset(b,0,sizeof(*b));
  50600. b->ptr=b->buffer=_ogg_malloc(BUFFER_INCREMENT);
  50601. b->buffer[0]='\0';
  50602. b->storage=BUFFER_INCREMENT;
  50603. }
  50604. void oggpackB_writeinit(oggpack_buffer *b){
  50605. oggpack_writeinit(b);
  50606. }
  50607. void oggpack_writetrunc(oggpack_buffer *b,long bits){
  50608. long bytes=bits>>3;
  50609. bits-=bytes*8;
  50610. b->ptr=b->buffer+bytes;
  50611. b->endbit=bits;
  50612. b->endbyte=bytes;
  50613. *b->ptr&=mask[bits];
  50614. }
  50615. void oggpackB_writetrunc(oggpack_buffer *b,long bits){
  50616. long bytes=bits>>3;
  50617. bits-=bytes*8;
  50618. b->ptr=b->buffer+bytes;
  50619. b->endbit=bits;
  50620. b->endbyte=bytes;
  50621. *b->ptr&=mask8B[bits];
  50622. }
  50623. /* Takes only up to 32 bits. */
  50624. void oggpack_write(oggpack_buffer *b,unsigned long value,int bits){
  50625. if(b->endbyte+4>=b->storage){
  50626. b->buffer=_ogg_realloc(b->buffer,b->storage+BUFFER_INCREMENT);
  50627. b->storage+=BUFFER_INCREMENT;
  50628. b->ptr=b->buffer+b->endbyte;
  50629. }
  50630. value&=mask[bits];
  50631. bits+=b->endbit;
  50632. b->ptr[0]|=value<<b->endbit;
  50633. if(bits>=8){
  50634. b->ptr[1]=value>>(8-b->endbit);
  50635. if(bits>=16){
  50636. b->ptr[2]=value>>(16-b->endbit);
  50637. if(bits>=24){
  50638. b->ptr[3]=value>>(24-b->endbit);
  50639. if(bits>=32){
  50640. if(b->endbit)
  50641. b->ptr[4]=value>>(32-b->endbit);
  50642. else
  50643. b->ptr[4]=0;
  50644. }
  50645. }
  50646. }
  50647. }
  50648. b->endbyte+=bits/8;
  50649. b->ptr+=bits/8;
  50650. b->endbit=bits&7;
  50651. }
  50652. /* Takes only up to 32 bits. */
  50653. void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits){
  50654. if(b->endbyte+4>=b->storage){
  50655. b->buffer=_ogg_realloc(b->buffer,b->storage+BUFFER_INCREMENT);
  50656. b->storage+=BUFFER_INCREMENT;
  50657. b->ptr=b->buffer+b->endbyte;
  50658. }
  50659. value=(value&mask[bits])<<(32-bits);
  50660. bits+=b->endbit;
  50661. b->ptr[0]|=value>>(24+b->endbit);
  50662. if(bits>=8){
  50663. b->ptr[1]=value>>(16+b->endbit);
  50664. if(bits>=16){
  50665. b->ptr[2]=value>>(8+b->endbit);
  50666. if(bits>=24){
  50667. b->ptr[3]=value>>(b->endbit);
  50668. if(bits>=32){
  50669. if(b->endbit)
  50670. b->ptr[4]=value<<(8-b->endbit);
  50671. else
  50672. b->ptr[4]=0;
  50673. }
  50674. }
  50675. }
  50676. }
  50677. b->endbyte+=bits/8;
  50678. b->ptr+=bits/8;
  50679. b->endbit=bits&7;
  50680. }
  50681. void oggpack_writealign(oggpack_buffer *b){
  50682. int bits=8-b->endbit;
  50683. if(bits<8)
  50684. oggpack_write(b,0,bits);
  50685. }
  50686. void oggpackB_writealign(oggpack_buffer *b){
  50687. int bits=8-b->endbit;
  50688. if(bits<8)
  50689. oggpackB_write(b,0,bits);
  50690. }
  50691. static void oggpack_writecopy_helper(oggpack_buffer *b,
  50692. void *source,
  50693. long bits,
  50694. void (*w)(oggpack_buffer *,
  50695. unsigned long,
  50696. int),
  50697. int msb){
  50698. unsigned char *ptr=(unsigned char *)source;
  50699. long bytes=bits/8;
  50700. bits-=bytes*8;
  50701. if(b->endbit){
  50702. int i;
  50703. /* unaligned copy. Do it the hard way. */
  50704. for(i=0;i<bytes;i++)
  50705. w(b,(unsigned long)(ptr[i]),8);
  50706. }else{
  50707. /* aligned block copy */
  50708. if(b->endbyte+bytes+1>=b->storage){
  50709. b->storage=b->endbyte+bytes+BUFFER_INCREMENT;
  50710. b->buffer=_ogg_realloc(b->buffer,b->storage);
  50711. b->ptr=b->buffer+b->endbyte;
  50712. }
  50713. memmove(b->ptr,source,bytes);
  50714. b->ptr+=bytes;
  50715. b->buffer+=bytes;
  50716. *b->ptr=0;
  50717. }
  50718. if(bits){
  50719. if(msb)
  50720. w(b,(unsigned long)(ptr[bytes]>>(8-bits)),bits);
  50721. else
  50722. w(b,(unsigned long)(ptr[bytes]),bits);
  50723. }
  50724. }
  50725. void oggpack_writecopy(oggpack_buffer *b,void *source,long bits){
  50726. oggpack_writecopy_helper(b,source,bits,oggpack_write,0);
  50727. }
  50728. void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits){
  50729. oggpack_writecopy_helper(b,source,bits,oggpackB_write,1);
  50730. }
  50731. void oggpack_reset(oggpack_buffer *b){
  50732. b->ptr=b->buffer;
  50733. b->buffer[0]=0;
  50734. b->endbit=b->endbyte=0;
  50735. }
  50736. void oggpackB_reset(oggpack_buffer *b){
  50737. oggpack_reset(b);
  50738. }
  50739. void oggpack_writeclear(oggpack_buffer *b){
  50740. _ogg_free(b->buffer);
  50741. memset(b,0,sizeof(*b));
  50742. }
  50743. void oggpackB_writeclear(oggpack_buffer *b){
  50744. oggpack_writeclear(b);
  50745. }
  50746. void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes){
  50747. memset(b,0,sizeof(*b));
  50748. b->buffer=b->ptr=buf;
  50749. b->storage=bytes;
  50750. }
  50751. void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes){
  50752. oggpack_readinit(b,buf,bytes);
  50753. }
  50754. /* Read in bits without advancing the bitptr; bits <= 32 */
  50755. long oggpack_look(oggpack_buffer *b,int bits){
  50756. unsigned long ret;
  50757. unsigned long m=mask[bits];
  50758. bits+=b->endbit;
  50759. if(b->endbyte+4>=b->storage){
  50760. /* not the main path */
  50761. if(b->endbyte*8+bits>b->storage*8)return(-1);
  50762. }
  50763. ret=b->ptr[0]>>b->endbit;
  50764. if(bits>8){
  50765. ret|=b->ptr[1]<<(8-b->endbit);
  50766. if(bits>16){
  50767. ret|=b->ptr[2]<<(16-b->endbit);
  50768. if(bits>24){
  50769. ret|=b->ptr[3]<<(24-b->endbit);
  50770. if(bits>32 && b->endbit)
  50771. ret|=b->ptr[4]<<(32-b->endbit);
  50772. }
  50773. }
  50774. }
  50775. return(m&ret);
  50776. }
  50777. /* Read in bits without advancing the bitptr; bits <= 32 */
  50778. long oggpackB_look(oggpack_buffer *b,int bits){
  50779. unsigned long ret;
  50780. int m=32-bits;
  50781. bits+=b->endbit;
  50782. if(b->endbyte+4>=b->storage){
  50783. /* not the main path */
  50784. if(b->endbyte*8+bits>b->storage*8)return(-1);
  50785. }
  50786. ret=b->ptr[0]<<(24+b->endbit);
  50787. if(bits>8){
  50788. ret|=b->ptr[1]<<(16+b->endbit);
  50789. if(bits>16){
  50790. ret|=b->ptr[2]<<(8+b->endbit);
  50791. if(bits>24){
  50792. ret|=b->ptr[3]<<(b->endbit);
  50793. if(bits>32 && b->endbit)
  50794. ret|=b->ptr[4]>>(8-b->endbit);
  50795. }
  50796. }
  50797. }
  50798. return (ret>>(m>>1))>>((m+1)>>1);
  50799. }
  50800. long oggpack_look1(oggpack_buffer *b){
  50801. if(b->endbyte>=b->storage)return(-1);
  50802. return((b->ptr[0]>>b->endbit)&1);
  50803. }
  50804. long oggpackB_look1(oggpack_buffer *b){
  50805. if(b->endbyte>=b->storage)return(-1);
  50806. return((b->ptr[0]>>(7-b->endbit))&1);
  50807. }
  50808. void oggpack_adv(oggpack_buffer *b,int bits){
  50809. bits+=b->endbit;
  50810. b->ptr+=bits/8;
  50811. b->endbyte+=bits/8;
  50812. b->endbit=bits&7;
  50813. }
  50814. void oggpackB_adv(oggpack_buffer *b,int bits){
  50815. oggpack_adv(b,bits);
  50816. }
  50817. void oggpack_adv1(oggpack_buffer *b){
  50818. if(++(b->endbit)>7){
  50819. b->endbit=0;
  50820. b->ptr++;
  50821. b->endbyte++;
  50822. }
  50823. }
  50824. void oggpackB_adv1(oggpack_buffer *b){
  50825. oggpack_adv1(b);
  50826. }
  50827. /* bits <= 32 */
  50828. long oggpack_read(oggpack_buffer *b,int bits){
  50829. unsigned long ret;
  50830. unsigned long m=mask[bits];
  50831. bits+=b->endbit;
  50832. if(b->endbyte+4>=b->storage){
  50833. /* not the main path */
  50834. ret=-1UL;
  50835. if(b->endbyte*8+bits>b->storage*8)goto overflow;
  50836. }
  50837. ret=b->ptr[0]>>b->endbit;
  50838. if(bits>8){
  50839. ret|=b->ptr[1]<<(8-b->endbit);
  50840. if(bits>16){
  50841. ret|=b->ptr[2]<<(16-b->endbit);
  50842. if(bits>24){
  50843. ret|=b->ptr[3]<<(24-b->endbit);
  50844. if(bits>32 && b->endbit){
  50845. ret|=b->ptr[4]<<(32-b->endbit);
  50846. }
  50847. }
  50848. }
  50849. }
  50850. ret&=m;
  50851. overflow:
  50852. b->ptr+=bits/8;
  50853. b->endbyte+=bits/8;
  50854. b->endbit=bits&7;
  50855. return(ret);
  50856. }
  50857. /* bits <= 32 */
  50858. long oggpackB_read(oggpack_buffer *b,int bits){
  50859. unsigned long ret;
  50860. long m=32-bits;
  50861. bits+=b->endbit;
  50862. if(b->endbyte+4>=b->storage){
  50863. /* not the main path */
  50864. ret=-1UL;
  50865. if(b->endbyte*8+bits>b->storage*8)goto overflow;
  50866. }
  50867. ret=b->ptr[0]<<(24+b->endbit);
  50868. if(bits>8){
  50869. ret|=b->ptr[1]<<(16+b->endbit);
  50870. if(bits>16){
  50871. ret|=b->ptr[2]<<(8+b->endbit);
  50872. if(bits>24){
  50873. ret|=b->ptr[3]<<(b->endbit);
  50874. if(bits>32 && b->endbit)
  50875. ret|=b->ptr[4]>>(8-b->endbit);
  50876. }
  50877. }
  50878. }
  50879. ret=(ret>>(m>>1))>>((m+1)>>1);
  50880. overflow:
  50881. b->ptr+=bits/8;
  50882. b->endbyte+=bits/8;
  50883. b->endbit=bits&7;
  50884. return(ret);
  50885. }
  50886. long oggpack_read1(oggpack_buffer *b){
  50887. unsigned long ret;
  50888. if(b->endbyte>=b->storage){
  50889. /* not the main path */
  50890. ret=-1UL;
  50891. goto overflow;
  50892. }
  50893. ret=(b->ptr[0]>>b->endbit)&1;
  50894. overflow:
  50895. b->endbit++;
  50896. if(b->endbit>7){
  50897. b->endbit=0;
  50898. b->ptr++;
  50899. b->endbyte++;
  50900. }
  50901. return(ret);
  50902. }
  50903. long oggpackB_read1(oggpack_buffer *b){
  50904. unsigned long ret;
  50905. if(b->endbyte>=b->storage){
  50906. /* not the main path */
  50907. ret=-1UL;
  50908. goto overflow;
  50909. }
  50910. ret=(b->ptr[0]>>(7-b->endbit))&1;
  50911. overflow:
  50912. b->endbit++;
  50913. if(b->endbit>7){
  50914. b->endbit=0;
  50915. b->ptr++;
  50916. b->endbyte++;
  50917. }
  50918. return(ret);
  50919. }
  50920. long oggpack_bytes(oggpack_buffer *b){
  50921. return(b->endbyte+(b->endbit+7)/8);
  50922. }
  50923. long oggpack_bits(oggpack_buffer *b){
  50924. return(b->endbyte*8+b->endbit);
  50925. }
  50926. long oggpackB_bytes(oggpack_buffer *b){
  50927. return oggpack_bytes(b);
  50928. }
  50929. long oggpackB_bits(oggpack_buffer *b){
  50930. return oggpack_bits(b);
  50931. }
  50932. unsigned char *oggpack_get_buffer(oggpack_buffer *b){
  50933. return(b->buffer);
  50934. }
  50935. unsigned char *oggpackB_get_buffer(oggpack_buffer *b){
  50936. return oggpack_get_buffer(b);
  50937. }
  50938. #undef BUFFER_INCREMENT
  50939. /********************************************************************
  50940. * *
  50941. * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
  50942. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  50943. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  50944. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  50945. * *
  50946. * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  50947. * by the Xiph.Org Foundation http://www.xiph.org/ *
  50948. * *
  50949. ********************************************************************
  50950. function: code raw [Vorbis] packets into framed OggSquish stream and
  50951. decode Ogg streams back into raw packets
  50952. last mod: $Id: framing.c,v 1.23 2002/09/29 07:10:37 giles Exp $
  50953. note: The CRC code is directly derived from public domain code by
  50954. Ross Williams (ross@guest.adelaide.edu.au). See docs/framing.html
  50955. for details.
  50956. ********************************************************************/
  50957. /* A complete description of Ogg framing exists in docs/framing.html */
  50958. int ogg_page_version(ogg_page *og){
  50959. return((int)(og->header[4]));
  50960. }
  50961. int ogg_page_continued(ogg_page *og){
  50962. return((int)(og->header[5]&0x01));
  50963. }
  50964. int ogg_page_bos(ogg_page *og){
  50965. return((int)(og->header[5]&0x02));
  50966. }
  50967. int ogg_page_eos(ogg_page *og){
  50968. return((int)(og->header[5]&0x04));
  50969. }
  50970. ogg_int64_t ogg_page_granulepos(ogg_page *og){
  50971. unsigned char *page=og->header;
  50972. ogg_int64_t granulepos=page[13]&(0xff);
  50973. granulepos= (granulepos<<8)|(page[12]&0xff);
  50974. granulepos= (granulepos<<8)|(page[11]&0xff);
  50975. granulepos= (granulepos<<8)|(page[10]&0xff);
  50976. granulepos= (granulepos<<8)|(page[9]&0xff);
  50977. granulepos= (granulepos<<8)|(page[8]&0xff);
  50978. granulepos= (granulepos<<8)|(page[7]&0xff);
  50979. granulepos= (granulepos<<8)|(page[6]&0xff);
  50980. return(granulepos);
  50981. }
  50982. int ogg_page_serialno(ogg_page *og){
  50983. return(og->header[14] |
  50984. (og->header[15]<<8) |
  50985. (og->header[16]<<16) |
  50986. (og->header[17]<<24));
  50987. }
  50988. long ogg_page_pageno(ogg_page *og){
  50989. return(og->header[18] |
  50990. (og->header[19]<<8) |
  50991. (og->header[20]<<16) |
  50992. (og->header[21]<<24));
  50993. }
  50994. /* returns the number of packets that are completed on this page (if
  50995. the leading packet is begun on a previous page, but ends on this
  50996. page, it's counted */
  50997. /* NOTE:
  50998. If a page consists of a packet begun on a previous page, and a new
  50999. packet begun (but not completed) on this page, the return will be:
  51000. ogg_page_packets(page) ==1,
  51001. ogg_page_continued(page) !=0
  51002. If a page happens to be a single packet that was begun on a
  51003. previous page, and spans to the next page (in the case of a three or
  51004. more page packet), the return will be:
  51005. ogg_page_packets(page) ==0,
  51006. ogg_page_continued(page) !=0
  51007. */
  51008. int ogg_page_packets(ogg_page *og){
  51009. int i,n=og->header[26],count=0;
  51010. for(i=0;i<n;i++)
  51011. if(og->header[27+i]<255)count++;
  51012. return(count);
  51013. }
  51014. #if 0
  51015. /* helper to initialize lookup for direct-table CRC (illustrative; we
  51016. use the static init below) */
  51017. static ogg_uint32_t _ogg_crc_entry(unsigned long index){
  51018. int i;
  51019. unsigned long r;
  51020. r = index << 24;
  51021. for (i=0; i<8; i++)
  51022. if (r & 0x80000000UL)
  51023. r = (r << 1) ^ 0x04c11db7; /* The same as the ethernet generator
  51024. polynomial, although we use an
  51025. unreflected alg and an init/final
  51026. of 0, not 0xffffffff */
  51027. else
  51028. r<<=1;
  51029. return (r & 0xffffffffUL);
  51030. }
  51031. #endif
  51032. static ogg_uint32_t crc_lookup[256]={
  51033. 0x00000000,0x04c11db7,0x09823b6e,0x0d4326d9,
  51034. 0x130476dc,0x17c56b6b,0x1a864db2,0x1e475005,
  51035. 0x2608edb8,0x22c9f00f,0x2f8ad6d6,0x2b4bcb61,
  51036. 0x350c9b64,0x31cd86d3,0x3c8ea00a,0x384fbdbd,
  51037. 0x4c11db70,0x48d0c6c7,0x4593e01e,0x4152fda9,
  51038. 0x5f15adac,0x5bd4b01b,0x569796c2,0x52568b75,
  51039. 0x6a1936c8,0x6ed82b7f,0x639b0da6,0x675a1011,
  51040. 0x791d4014,0x7ddc5da3,0x709f7b7a,0x745e66cd,
  51041. 0x9823b6e0,0x9ce2ab57,0x91a18d8e,0x95609039,
  51042. 0x8b27c03c,0x8fe6dd8b,0x82a5fb52,0x8664e6e5,
  51043. 0xbe2b5b58,0xbaea46ef,0xb7a96036,0xb3687d81,
  51044. 0xad2f2d84,0xa9ee3033,0xa4ad16ea,0xa06c0b5d,
  51045. 0xd4326d90,0xd0f37027,0xddb056fe,0xd9714b49,
  51046. 0xc7361b4c,0xc3f706fb,0xceb42022,0xca753d95,
  51047. 0xf23a8028,0xf6fb9d9f,0xfbb8bb46,0xff79a6f1,
  51048. 0xe13ef6f4,0xe5ffeb43,0xe8bccd9a,0xec7dd02d,
  51049. 0x34867077,0x30476dc0,0x3d044b19,0x39c556ae,
  51050. 0x278206ab,0x23431b1c,0x2e003dc5,0x2ac12072,
  51051. 0x128e9dcf,0x164f8078,0x1b0ca6a1,0x1fcdbb16,
  51052. 0x018aeb13,0x054bf6a4,0x0808d07d,0x0cc9cdca,
  51053. 0x7897ab07,0x7c56b6b0,0x71159069,0x75d48dde,
  51054. 0x6b93dddb,0x6f52c06c,0x6211e6b5,0x66d0fb02,
  51055. 0x5e9f46bf,0x5a5e5b08,0x571d7dd1,0x53dc6066,
  51056. 0x4d9b3063,0x495a2dd4,0x44190b0d,0x40d816ba,
  51057. 0xaca5c697,0xa864db20,0xa527fdf9,0xa1e6e04e,
  51058. 0xbfa1b04b,0xbb60adfc,0xb6238b25,0xb2e29692,
  51059. 0x8aad2b2f,0x8e6c3698,0x832f1041,0x87ee0df6,
  51060. 0x99a95df3,0x9d684044,0x902b669d,0x94ea7b2a,
  51061. 0xe0b41de7,0xe4750050,0xe9362689,0xedf73b3e,
  51062. 0xf3b06b3b,0xf771768c,0xfa325055,0xfef34de2,
  51063. 0xc6bcf05f,0xc27dede8,0xcf3ecb31,0xcbffd686,
  51064. 0xd5b88683,0xd1799b34,0xdc3abded,0xd8fba05a,
  51065. 0x690ce0ee,0x6dcdfd59,0x608edb80,0x644fc637,
  51066. 0x7a089632,0x7ec98b85,0x738aad5c,0x774bb0eb,
  51067. 0x4f040d56,0x4bc510e1,0x46863638,0x42472b8f,
  51068. 0x5c007b8a,0x58c1663d,0x558240e4,0x51435d53,
  51069. 0x251d3b9e,0x21dc2629,0x2c9f00f0,0x285e1d47,
  51070. 0x36194d42,0x32d850f5,0x3f9b762c,0x3b5a6b9b,
  51071. 0x0315d626,0x07d4cb91,0x0a97ed48,0x0e56f0ff,
  51072. 0x1011a0fa,0x14d0bd4d,0x19939b94,0x1d528623,
  51073. 0xf12f560e,0xf5ee4bb9,0xf8ad6d60,0xfc6c70d7,
  51074. 0xe22b20d2,0xe6ea3d65,0xeba91bbc,0xef68060b,
  51075. 0xd727bbb6,0xd3e6a601,0xdea580d8,0xda649d6f,
  51076. 0xc423cd6a,0xc0e2d0dd,0xcda1f604,0xc960ebb3,
  51077. 0xbd3e8d7e,0xb9ff90c9,0xb4bcb610,0xb07daba7,
  51078. 0xae3afba2,0xaafbe615,0xa7b8c0cc,0xa379dd7b,
  51079. 0x9b3660c6,0x9ff77d71,0x92b45ba8,0x9675461f,
  51080. 0x8832161a,0x8cf30bad,0x81b02d74,0x857130c3,
  51081. 0x5d8a9099,0x594b8d2e,0x5408abf7,0x50c9b640,
  51082. 0x4e8ee645,0x4a4ffbf2,0x470cdd2b,0x43cdc09c,
  51083. 0x7b827d21,0x7f436096,0x7200464f,0x76c15bf8,
  51084. 0x68860bfd,0x6c47164a,0x61043093,0x65c52d24,
  51085. 0x119b4be9,0x155a565e,0x18197087,0x1cd86d30,
  51086. 0x029f3d35,0x065e2082,0x0b1d065b,0x0fdc1bec,
  51087. 0x3793a651,0x3352bbe6,0x3e119d3f,0x3ad08088,
  51088. 0x2497d08d,0x2056cd3a,0x2d15ebe3,0x29d4f654,
  51089. 0xc5a92679,0xc1683bce,0xcc2b1d17,0xc8ea00a0,
  51090. 0xd6ad50a5,0xd26c4d12,0xdf2f6bcb,0xdbee767c,
  51091. 0xe3a1cbc1,0xe760d676,0xea23f0af,0xeee2ed18,
  51092. 0xf0a5bd1d,0xf464a0aa,0xf9278673,0xfde69bc4,
  51093. 0x89b8fd09,0x8d79e0be,0x803ac667,0x84fbdbd0,
  51094. 0x9abc8bd5,0x9e7d9662,0x933eb0bb,0x97ffad0c,
  51095. 0xafb010b1,0xab710d06,0xa6322bdf,0xa2f33668,
  51096. 0xbcb4666d,0xb8757bda,0xb5365d03,0xb1f740b4};
  51097. /* init the encode/decode logical stream state */
  51098. int ogg_stream_init(ogg_stream_state *os,int serialno){
  51099. if(os){
  51100. memset(os,0,sizeof(*os));
  51101. os->body_storage=16*1024;
  51102. os->body_data=_ogg_malloc(os->body_storage*sizeof(*os->body_data));
  51103. os->lacing_storage=1024;
  51104. os->lacing_vals=_ogg_malloc(os->lacing_storage*sizeof(*os->lacing_vals));
  51105. os->granule_vals=_ogg_malloc(os->lacing_storage*sizeof(*os->granule_vals));
  51106. os->serialno=serialno;
  51107. return(0);
  51108. }
  51109. return(-1);
  51110. }
  51111. /* _clear does not free os, only the non-flat storage within */
  51112. int ogg_stream_clear(ogg_stream_state *os){
  51113. if(os){
  51114. if(os->body_data)_ogg_free(os->body_data);
  51115. if(os->lacing_vals)_ogg_free(os->lacing_vals);
  51116. if(os->granule_vals)_ogg_free(os->granule_vals);
  51117. memset(os,0,sizeof(*os));
  51118. }
  51119. return(0);
  51120. }
  51121. int ogg_stream_destroy(ogg_stream_state *os){
  51122. if(os){
  51123. ogg_stream_clear(os);
  51124. _ogg_free(os);
  51125. }
  51126. return(0);
  51127. }
  51128. /* Helpers for ogg_stream_encode; this keeps the structure and
  51129. what's happening fairly clear */
  51130. static void _os_body_expand(ogg_stream_state *os,int needed){
  51131. if(os->body_storage<=os->body_fill+needed){
  51132. os->body_storage+=(needed+1024);
  51133. os->body_data=_ogg_realloc(os->body_data,os->body_storage*sizeof(*os->body_data));
  51134. }
  51135. }
  51136. static void _os_lacing_expand(ogg_stream_state *os,int needed){
  51137. if(os->lacing_storage<=os->lacing_fill+needed){
  51138. os->lacing_storage+=(needed+32);
  51139. os->lacing_vals=_ogg_realloc(os->lacing_vals,os->lacing_storage*sizeof(*os->lacing_vals));
  51140. os->granule_vals=_ogg_realloc(os->granule_vals,os->lacing_storage*sizeof(*os->granule_vals));
  51141. }
  51142. }
  51143. /* checksum the page */
  51144. /* Direct table CRC; note that this will be faster in the future if we
  51145. perform the checksum silmultaneously with other copies */
  51146. void ogg_page_checksum_set(ogg_page *og){
  51147. if(og){
  51148. ogg_uint32_t crc_reg=0;
  51149. int i;
  51150. /* safety; needed for API behavior, but not framing code */
  51151. og->header[22]=0;
  51152. og->header[23]=0;
  51153. og->header[24]=0;
  51154. og->header[25]=0;
  51155. for(i=0;i<og->header_len;i++)
  51156. crc_reg=(crc_reg<<8)^crc_lookup[((crc_reg >> 24)&0xff)^og->header[i]];
  51157. for(i=0;i<og->body_len;i++)
  51158. crc_reg=(crc_reg<<8)^crc_lookup[((crc_reg >> 24)&0xff)^og->body[i]];
  51159. og->header[22]=crc_reg&0xff;
  51160. og->header[23]=(crc_reg>>8)&0xff;
  51161. og->header[24]=(crc_reg>>16)&0xff;
  51162. og->header[25]=(crc_reg>>24)&0xff;
  51163. }
  51164. }
  51165. /* submit data to the internal buffer of the framing engine */
  51166. int ogg_stream_packetin(ogg_stream_state *os,ogg_packet *op){
  51167. int lacing_vals=op->bytes/255+1,i;
  51168. if(os->body_returned){
  51169. /* advance packet data according to the body_returned pointer. We
  51170. had to keep it around to return a pointer into the buffer last
  51171. call */
  51172. os->body_fill-=os->body_returned;
  51173. if(os->body_fill)
  51174. memmove(os->body_data,os->body_data+os->body_returned,
  51175. os->body_fill);
  51176. os->body_returned=0;
  51177. }
  51178. /* make sure we have the buffer storage */
  51179. _os_body_expand(os,op->bytes);
  51180. _os_lacing_expand(os,lacing_vals);
  51181. /* Copy in the submitted packet. Yes, the copy is a waste; this is
  51182. the liability of overly clean abstraction for the time being. It
  51183. will actually be fairly easy to eliminate the extra copy in the
  51184. future */
  51185. memcpy(os->body_data+os->body_fill,op->packet,op->bytes);
  51186. os->body_fill+=op->bytes;
  51187. /* Store lacing vals for this packet */
  51188. for(i=0;i<lacing_vals-1;i++){
  51189. os->lacing_vals[os->lacing_fill+i]=255;
  51190. os->granule_vals[os->lacing_fill+i]=os->granulepos;
  51191. }
  51192. os->lacing_vals[os->lacing_fill+i]=(op->bytes)%255;
  51193. os->granulepos=os->granule_vals[os->lacing_fill+i]=op->granulepos;
  51194. /* flag the first segment as the beginning of the packet */
  51195. os->lacing_vals[os->lacing_fill]|= 0x100;
  51196. os->lacing_fill+=lacing_vals;
  51197. /* for the sake of completeness */
  51198. os->packetno++;
  51199. if(op->e_o_s)os->e_o_s=1;
  51200. return(0);
  51201. }
  51202. /* This will flush remaining packets into a page (returning nonzero),
  51203. even if there is not enough data to trigger a flush normally
  51204. (undersized page). If there are no packets or partial packets to
  51205. flush, ogg_stream_flush returns 0. Note that ogg_stream_flush will
  51206. try to flush a normal sized page like ogg_stream_pageout; a call to
  51207. ogg_stream_flush does not guarantee that all packets have flushed.
  51208. Only a return value of 0 from ogg_stream_flush indicates all packet
  51209. data is flushed into pages.
  51210. since ogg_stream_flush will flush the last page in a stream even if
  51211. it's undersized, you almost certainly want to use ogg_stream_pageout
  51212. (and *not* ogg_stream_flush) unless you specifically need to flush
  51213. an page regardless of size in the middle of a stream. */
  51214. int ogg_stream_flush(ogg_stream_state *os,ogg_page *og){
  51215. int i;
  51216. int vals=0;
  51217. int maxvals=(os->lacing_fill>255?255:os->lacing_fill);
  51218. int bytes=0;
  51219. long acc=0;
  51220. ogg_int64_t granule_pos=os->granule_vals[0];
  51221. if(maxvals==0)return(0);
  51222. /* construct a page */
  51223. /* decide how many segments to include */
  51224. /* If this is the initial header case, the first page must only include
  51225. the initial header packet */
  51226. if(os->b_o_s==0){ /* 'initial header page' case */
  51227. granule_pos=0;
  51228. for(vals=0;vals<maxvals;vals++){
  51229. if((os->lacing_vals[vals]&0x0ff)<255){
  51230. vals++;
  51231. break;
  51232. }
  51233. }
  51234. }else{
  51235. for(vals=0;vals<maxvals;vals++){
  51236. if(acc>4096)break;
  51237. acc+=os->lacing_vals[vals]&0x0ff;
  51238. granule_pos=os->granule_vals[vals];
  51239. }
  51240. }
  51241. /* construct the header in temp storage */
  51242. memcpy(os->header,"OggS",4);
  51243. /* stream structure version */
  51244. os->header[4]=0x00;
  51245. /* continued packet flag? */
  51246. os->header[5]=0x00;
  51247. if((os->lacing_vals[0]&0x100)==0)os->header[5]|=0x01;
  51248. /* first page flag? */
  51249. if(os->b_o_s==0)os->header[5]|=0x02;
  51250. /* last page flag? */
  51251. if(os->e_o_s && os->lacing_fill==vals)os->header[5]|=0x04;
  51252. os->b_o_s=1;
  51253. /* 64 bits of PCM position */
  51254. for(i=6;i<14;i++){
  51255. os->header[i]=(granule_pos&0xff);
  51256. granule_pos>>=8;
  51257. }
  51258. /* 32 bits of stream serial number */
  51259. {
  51260. long serialno=os->serialno;
  51261. for(i=14;i<18;i++){
  51262. os->header[i]=(serialno&0xff);
  51263. serialno>>=8;
  51264. }
  51265. }
  51266. /* 32 bits of page counter (we have both counter and page header
  51267. because this val can roll over) */
  51268. if(os->pageno==-1)os->pageno=0; /* because someone called
  51269. stream_reset; this would be a
  51270. strange thing to do in an
  51271. encode stream, but it has
  51272. plausible uses */
  51273. {
  51274. long pageno=os->pageno++;
  51275. for(i=18;i<22;i++){
  51276. os->header[i]=(pageno&0xff);
  51277. pageno>>=8;
  51278. }
  51279. }
  51280. /* zero for computation; filled in later */
  51281. os->header[22]=0;
  51282. os->header[23]=0;
  51283. os->header[24]=0;
  51284. os->header[25]=0;
  51285. /* segment table */
  51286. os->header[26]=vals&0xff;
  51287. for(i=0;i<vals;i++)
  51288. bytes+=os->header[i+27]=(os->lacing_vals[i]&0xff);
  51289. /* set pointers in the ogg_page struct */
  51290. og->header=os->header;
  51291. og->header_len=os->header_fill=vals+27;
  51292. og->body=os->body_data+os->body_returned;
  51293. og->body_len=bytes;
  51294. /* advance the lacing data and set the body_returned pointer */
  51295. os->lacing_fill-=vals;
  51296. memmove(os->lacing_vals,os->lacing_vals+vals,os->lacing_fill*sizeof(*os->lacing_vals));
  51297. memmove(os->granule_vals,os->granule_vals+vals,os->lacing_fill*sizeof(*os->granule_vals));
  51298. os->body_returned+=bytes;
  51299. /* calculate the checksum */
  51300. ogg_page_checksum_set(og);
  51301. /* done */
  51302. return(1);
  51303. }
  51304. /* This constructs pages from buffered packet segments. The pointers
  51305. returned are to static buffers; do not free. The returned buffers are
  51306. good only until the next call (using the same ogg_stream_state) */
  51307. int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og){
  51308. if((os->e_o_s&&os->lacing_fill) || /* 'were done, now flush' case */
  51309. os->body_fill-os->body_returned > 4096 ||/* 'page nominal size' case */
  51310. os->lacing_fill>=255 || /* 'segment table full' case */
  51311. (os->lacing_fill&&!os->b_o_s)){ /* 'initial header page' case */
  51312. return(ogg_stream_flush(os,og));
  51313. }
  51314. /* not enough data to construct a page and not end of stream */
  51315. return(0);
  51316. }
  51317. int ogg_stream_eos(ogg_stream_state *os){
  51318. return os->e_o_s;
  51319. }
  51320. /* DECODING PRIMITIVES: packet streaming layer **********************/
  51321. /* This has two layers to place more of the multi-serialno and paging
  51322. control in the application's hands. First, we expose a data buffer
  51323. using ogg_sync_buffer(). The app either copies into the
  51324. buffer, or passes it directly to read(), etc. We then call
  51325. ogg_sync_wrote() to tell how many bytes we just added.
  51326. Pages are returned (pointers into the buffer in ogg_sync_state)
  51327. by ogg_sync_pageout(). The page is then submitted to
  51328. ogg_stream_pagein() along with the appropriate
  51329. ogg_stream_state* (ie, matching serialno). We then get raw
  51330. packets out calling ogg_stream_packetout() with a
  51331. ogg_stream_state. See the 'frame-prog.txt' docs for details and
  51332. example code. */
  51333. /* initialize the struct to a known state */
  51334. int ogg_sync_init(ogg_sync_state *oy){
  51335. if(oy){
  51336. memset(oy,0,sizeof(*oy));
  51337. }
  51338. return(0);
  51339. }
  51340. /* clear non-flat storage within */
  51341. int ogg_sync_clear(ogg_sync_state *oy){
  51342. if(oy){
  51343. if(oy->data)_ogg_free(oy->data);
  51344. ogg_sync_init(oy);
  51345. }
  51346. return(0);
  51347. }
  51348. int ogg_sync_destroy(ogg_sync_state *oy){
  51349. if(oy){
  51350. ogg_sync_clear(oy);
  51351. _ogg_free(oy);
  51352. }
  51353. return(0);
  51354. }
  51355. char *ogg_sync_buffer(ogg_sync_state *oy, long size){
  51356. /* first, clear out any space that has been previously returned */
  51357. if(oy->returned){
  51358. oy->fill-=oy->returned;
  51359. if(oy->fill>0)
  51360. memmove(oy->data,oy->data+oy->returned,oy->fill);
  51361. oy->returned=0;
  51362. }
  51363. if(size>oy->storage-oy->fill){
  51364. /* We need to extend the internal buffer */
  51365. long newsize=size+oy->fill+4096; /* an extra page to be nice */
  51366. if(oy->data)
  51367. oy->data=_ogg_realloc(oy->data,newsize);
  51368. else
  51369. oy->data=_ogg_malloc(newsize);
  51370. oy->storage=newsize;
  51371. }
  51372. /* expose a segment at least as large as requested at the fill mark */
  51373. return((char *)oy->data+oy->fill);
  51374. }
  51375. int ogg_sync_wrote(ogg_sync_state *oy, long bytes){
  51376. if(oy->fill+bytes>oy->storage)return(-1);
  51377. oy->fill+=bytes;
  51378. return(0);
  51379. }
  51380. /* sync the stream. This is meant to be useful for finding page
  51381. boundaries.
  51382. return values for this:
  51383. -n) skipped n bytes
  51384. 0) page not ready; more data (no bytes skipped)
  51385. n) page synced at current location; page length n bytes
  51386. */
  51387. long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og){
  51388. unsigned char *page=oy->data+oy->returned;
  51389. unsigned char *next;
  51390. long bytes=oy->fill-oy->returned;
  51391. if(oy->headerbytes==0){
  51392. int headerbytes,i;
  51393. if(bytes<27)return(0); /* not enough for a header */
  51394. /* verify capture pattern */
  51395. if(memcmp(page,"OggS",4))goto sync_fail;
  51396. headerbytes=page[26]+27;
  51397. if(bytes<headerbytes)return(0); /* not enough for header + seg table */
  51398. /* count up body length in the segment table */
  51399. for(i=0;i<page[26];i++)
  51400. oy->bodybytes+=page[27+i];
  51401. oy->headerbytes=headerbytes;
  51402. }
  51403. if(oy->bodybytes+oy->headerbytes>bytes)return(0);
  51404. /* The whole test page is buffered. Verify the checksum */
  51405. {
  51406. /* Grab the checksum bytes, set the header field to zero */
  51407. char chksum[4];
  51408. ogg_page log;
  51409. memcpy(chksum,page+22,4);
  51410. memset(page+22,0,4);
  51411. /* set up a temp page struct and recompute the checksum */
  51412. log.header=page;
  51413. log.header_len=oy->headerbytes;
  51414. log.body=page+oy->headerbytes;
  51415. log.body_len=oy->bodybytes;
  51416. ogg_page_checksum_set(&log);
  51417. /* Compare */
  51418. if(memcmp(chksum,page+22,4)){
  51419. /* D'oh. Mismatch! Corrupt page (or miscapture and not a page
  51420. at all) */
  51421. /* replace the computed checksum with the one actually read in */
  51422. memcpy(page+22,chksum,4);
  51423. /* Bad checksum. Lose sync */
  51424. goto sync_fail;
  51425. }
  51426. }
  51427. /* yes, have a whole page all ready to go */
  51428. {
  51429. unsigned char *page=oy->data+oy->returned;
  51430. long bytes;
  51431. if(og){
  51432. og->header=page;
  51433. og->header_len=oy->headerbytes;
  51434. og->body=page+oy->headerbytes;
  51435. og->body_len=oy->bodybytes;
  51436. }
  51437. oy->unsynced=0;
  51438. oy->returned+=(bytes=oy->headerbytes+oy->bodybytes);
  51439. oy->headerbytes=0;
  51440. oy->bodybytes=0;
  51441. return(bytes);
  51442. }
  51443. sync_fail:
  51444. oy->headerbytes=0;
  51445. oy->bodybytes=0;
  51446. /* search for possible capture */
  51447. next=memchr(page+1,'O',bytes-1);
  51448. if(!next)
  51449. next=oy->data+oy->fill;
  51450. oy->returned=next-oy->data;
  51451. return(-(next-page));
  51452. }
  51453. /* sync the stream and get a page. Keep trying until we find a page.
  51454. Supress 'sync errors' after reporting the first.
  51455. return values:
  51456. -1) recapture (hole in data)
  51457. 0) need more data
  51458. 1) page returned
  51459. Returns pointers into buffered data; invalidated by next call to
  51460. _stream, _clear, _init, or _buffer */
  51461. int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og){
  51462. /* all we need to do is verify a page at the head of the stream
  51463. buffer. If it doesn't verify, we look for the next potential
  51464. frame */
  51465. while(1){
  51466. long ret=ogg_sync_pageseek(oy,og);
  51467. if(ret>0){
  51468. /* have a page */
  51469. return(1);
  51470. }
  51471. if(ret==0){
  51472. /* need more data */
  51473. return(0);
  51474. }
  51475. /* head did not start a synced page... skipped some bytes */
  51476. if(!oy->unsynced){
  51477. oy->unsynced=1;
  51478. return(-1);
  51479. }
  51480. /* loop. keep looking */
  51481. }
  51482. }
  51483. /* add the incoming page to the stream state; we decompose the page
  51484. into packet segments here as well. */
  51485. int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og){
  51486. unsigned char *header=og->header;
  51487. unsigned char *body=og->body;
  51488. long bodysize=og->body_len;
  51489. int segptr=0;
  51490. int version=ogg_page_version(og);
  51491. int continued=ogg_page_continued(og);
  51492. int bos=ogg_page_bos(og);
  51493. int eos=ogg_page_eos(og);
  51494. ogg_int64_t granulepos=ogg_page_granulepos(og);
  51495. int serialno=ogg_page_serialno(og);
  51496. long pageno=ogg_page_pageno(og);
  51497. int segments=header[26];
  51498. /* clean up 'returned data' */
  51499. {
  51500. long lr=os->lacing_returned;
  51501. long br=os->body_returned;
  51502. /* body data */
  51503. if(br){
  51504. os->body_fill-=br;
  51505. if(os->body_fill)
  51506. memmove(os->body_data,os->body_data+br,os->body_fill);
  51507. os->body_returned=0;
  51508. }
  51509. if(lr){
  51510. /* segment table */
  51511. if(os->lacing_fill-lr){
  51512. memmove(os->lacing_vals,os->lacing_vals+lr,
  51513. (os->lacing_fill-lr)*sizeof(*os->lacing_vals));
  51514. memmove(os->granule_vals,os->granule_vals+lr,
  51515. (os->lacing_fill-lr)*sizeof(*os->granule_vals));
  51516. }
  51517. os->lacing_fill-=lr;
  51518. os->lacing_packet-=lr;
  51519. os->lacing_returned=0;
  51520. }
  51521. }
  51522. /* check the serial number */
  51523. if(serialno!=os->serialno)return(-1);
  51524. if(version>0)return(-1);
  51525. _os_lacing_expand(os,segments+1);
  51526. /* are we in sequence? */
  51527. if(pageno!=os->pageno){
  51528. int i;
  51529. /* unroll previous partial packet (if any) */
  51530. for(i=os->lacing_packet;i<os->lacing_fill;i++)
  51531. os->body_fill-=os->lacing_vals[i]&0xff;
  51532. os->lacing_fill=os->lacing_packet;
  51533. /* make a note of dropped data in segment table */
  51534. if(os->pageno!=-1){
  51535. os->lacing_vals[os->lacing_fill++]=0x400;
  51536. os->lacing_packet++;
  51537. }
  51538. /* are we a 'continued packet' page? If so, we'll need to skip
  51539. some segments */
  51540. if(continued){
  51541. bos=0;
  51542. for(;segptr<segments;segptr++){
  51543. int val=header[27+segptr];
  51544. body+=val;
  51545. bodysize-=val;
  51546. if(val<255){
  51547. segptr++;
  51548. break;
  51549. }
  51550. }
  51551. }
  51552. }
  51553. if(bodysize){
  51554. _os_body_expand(os,bodysize);
  51555. memcpy(os->body_data+os->body_fill,body,bodysize);
  51556. os->body_fill+=bodysize;
  51557. }
  51558. {
  51559. int saved=-1;
  51560. while(segptr<segments){
  51561. int val=header[27+segptr];
  51562. os->lacing_vals[os->lacing_fill]=val;
  51563. os->granule_vals[os->lacing_fill]=-1;
  51564. if(bos){
  51565. os->lacing_vals[os->lacing_fill]|=0x100;
  51566. bos=0;
  51567. }
  51568. if(val<255)saved=os->lacing_fill;
  51569. os->lacing_fill++;
  51570. segptr++;
  51571. if(val<255)os->lacing_packet=os->lacing_fill;
  51572. }
  51573. /* set the granulepos on the last granuleval of the last full packet */
  51574. if(saved!=-1){
  51575. os->granule_vals[saved]=granulepos;
  51576. }
  51577. }
  51578. if(eos){
  51579. os->e_o_s=1;
  51580. if(os->lacing_fill>0)
  51581. os->lacing_vals[os->lacing_fill-1]|=0x200;
  51582. }
  51583. os->pageno=pageno+1;
  51584. return(0);
  51585. }
  51586. /* clear things to an initial state. Good to call, eg, before seeking */
  51587. int ogg_sync_reset(ogg_sync_state *oy){
  51588. oy->fill=0;
  51589. oy->returned=0;
  51590. oy->unsynced=0;
  51591. oy->headerbytes=0;
  51592. oy->bodybytes=0;
  51593. return(0);
  51594. }
  51595. int ogg_stream_reset(ogg_stream_state *os){
  51596. os->body_fill=0;
  51597. os->body_returned=0;
  51598. os->lacing_fill=0;
  51599. os->lacing_packet=0;
  51600. os->lacing_returned=0;
  51601. os->header_fill=0;
  51602. os->e_o_s=0;
  51603. os->b_o_s=0;
  51604. os->pageno=-1;
  51605. os->packetno=0;
  51606. os->granulepos=0;
  51607. return(0);
  51608. }
  51609. int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno){
  51610. ogg_stream_reset(os);
  51611. os->serialno=serialno;
  51612. return(0);
  51613. }
  51614. static int _packetout(ogg_stream_state *os,ogg_packet *op,int adv){
  51615. /* The last part of decode. We have the stream broken into packet
  51616. segments. Now we need to group them into packets (or return the
  51617. out of sync markers) */
  51618. int ptr=os->lacing_returned;
  51619. if(os->lacing_packet<=ptr)return(0);
  51620. if(os->lacing_vals[ptr]&0x400){
  51621. /* we need to tell the codec there's a gap; it might need to
  51622. handle previous packet dependencies. */
  51623. os->lacing_returned++;
  51624. os->packetno++;
  51625. return(-1);
  51626. }
  51627. if(!op && !adv)return(1); /* just using peek as an inexpensive way
  51628. to ask if there's a whole packet
  51629. waiting */
  51630. /* Gather the whole packet. We'll have no holes or a partial packet */
  51631. {
  51632. int size=os->lacing_vals[ptr]&0xff;
  51633. int bytes=size;
  51634. int eos=os->lacing_vals[ptr]&0x200; /* last packet of the stream? */
  51635. int bos=os->lacing_vals[ptr]&0x100; /* first packet of the stream? */
  51636. while(size==255){
  51637. int val=os->lacing_vals[++ptr];
  51638. size=val&0xff;
  51639. if(val&0x200)eos=0x200;
  51640. bytes+=size;
  51641. }
  51642. if(op){
  51643. op->e_o_s=eos;
  51644. op->b_o_s=bos;
  51645. op->packet=os->body_data+os->body_returned;
  51646. op->packetno=os->packetno;
  51647. op->granulepos=os->granule_vals[ptr];
  51648. op->bytes=bytes;
  51649. }
  51650. if(adv){
  51651. os->body_returned+=bytes;
  51652. os->lacing_returned=ptr+1;
  51653. os->packetno++;
  51654. }
  51655. }
  51656. return(1);
  51657. }
  51658. int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op){
  51659. return _packetout(os,op,1);
  51660. }
  51661. int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op){
  51662. return _packetout(os,op,0);
  51663. }
  51664. void ogg_packet_clear(ogg_packet *op) {
  51665. _ogg_free(op->packet);
  51666. memset(op, 0, sizeof(*op));
  51667. }