ippvc.h 424 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038
  1. /* ///////////////////////////////////////////////////////////////////////////
  2. //
  3. // INTEL CORPORATION PROPRIETARY INFORMATION
  4. // This software is supplied under the terms of a license agreement or
  5. // nondisclosure agreement with Intel Corporation and may not be copied
  6. // or disclosed except in accordance with the terms of that agreement.
  7. // Copyright(c) 2001-2009 Intel Corporation. All Rights Reserved.
  8. //
  9. // Intel(R) Integrated Performance Primitives
  10. // Video Coding (ippVC)
  11. //
  12. */
  13. #if !defined( __IPPVC_H__ ) || defined( _OWN_BLDPCS )
  14. #define __IPPVC_H__
  15. #if defined (_WIN32_WCE) && defined (_M_IX86) && defined (__stdcall)
  16. #define _IPP_STDCALL_CDECL
  17. #undef __stdcall
  18. #endif
  19. #ifndef __IPPDEFS_H__
  20. #include "ippdefs.h"
  21. #endif
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /* ////////////////////////////////////////////////////////////////////////////
  26. // Structures and definitions //
  27. //////////////////////////////////////////////////////////////////////////// */
  28. #if !defined( _OWN_BLDPCS )
  29. /* flags for motion compensation */
  30. #define IPPVC_VLC_FORBIDDEN 0xf0f1
  31. #define IPPVC_ESCAPE 0x00ff
  32. #define IPPVC_ENDOFBLOCK 0x00fe
  33. #define IPPVC_FRAME_PICTURE 0x0003
  34. typedef enum _IPPVC_ESCAPE_FLAG
  35. {
  36. IPPVC_EF_NONE = 0x0,
  37. IPPVC_EF_REVERSIBLE_VLC = 0x1,
  38. IPPVC_EF_SHORT_HEADER = 0x2
  39. } IPPVC_ESCAPE_FLAG;
  40. typedef enum _IPPVC_MC_APX
  41. {
  42. IPPVC_MC_APX_FF = 0x0,
  43. IPPVC_MC_APX_FH = 0x4,
  44. IPPVC_MC_APX_HF = 0x8,
  45. IPPVC_MC_APX_HH = 0x0c
  46. } IPPVC_MC_APX;
  47. typedef enum _IPPVC_MV_TYPE
  48. {
  49. IPPVC_MV_FIELD = 0x0,
  50. IPPVC_MV_FRAME = 0x1
  51. } IPPVC_MV_TYPE;
  52. typedef enum _IppvcFrameFieldFlag
  53. {
  54. IPPVC_FRAME = 0x0,
  55. IPPVC_TOP_FIELD = 0x1,
  56. IPPVC_BOTTOM_FIELD = 0x2
  57. }IppvcFrameFieldFlag;
  58. /* VL code longer than 8 bits */
  59. typedef struct _IppVCHuffmanSpec_32u
  60. {
  61. Ipp32u code; /* right justified */
  62. Ipp32u len;
  63. } IppVCHuffmanSpec_32u;
  64. typedef Ipp32s IppVCHuffmanSpec_32s ;
  65. /* Motion Vector */
  66. typedef struct _IppMotionVector
  67. {
  68. Ipp16s dx;
  69. Ipp16s dy;
  70. } IppMotionVector;
  71. typedef enum
  72. {
  73. IPP_4x4_VERT = 0,
  74. IPP_4x4_HOR = 1,
  75. IPP_4x4_DC = 2,
  76. IPP_4x4_DIAG_DL = 3,
  77. IPP_4x4_DIAG_DR = 4,
  78. IPP_4x4_VR = 5,
  79. IPP_4x4_HD = 6,
  80. IPP_4x4_VL = 7,
  81. IPP_4x4_HU = 8,
  82. /* these modes are not supported by all h264 prediction functions.
  83. read the manual for details. */
  84. IPP_4x4_DC_TOP = 9,
  85. IPP_4x4_DC_LEFT = 10,
  86. IPP_4x4_DC_128 = 11
  87. } IppIntra4x4PredMode_H264;
  88. typedef enum
  89. {
  90. IPP_8x8_VERT = 0,
  91. IPP_8x8_HOR = 1,
  92. IPP_8x8_DC = 2,
  93. IPP_8x8_DIAG_DL = 3,
  94. IPP_8x8_DIAG_DR = 4,
  95. IPP_8x8_VR = 5,
  96. IPP_8x8_HD = 6,
  97. IPP_8x8_VL = 7,
  98. IPP_8x8_HU = 8,
  99. /* these modes are not supported by all h264 prediction functions.
  100. read the manual for details. */
  101. IPP_8x8_DC_TOP = 9,
  102. IPP_8x8_DC_LEFT = 10,
  103. IPP_8x8_DC_128 = 11
  104. } IppIntra8x8PredMode_H264;
  105. typedef IppIntra8x8PredMode_H264 IppIntra8x8PredMode_AVS;
  106. typedef enum
  107. {
  108. IPP_16X16_VERT = 0,
  109. IPP_16X16_HOR = 1,
  110. IPP_16X16_DC = 2,
  111. IPP_16X16_PLANE = 3,
  112. /* these modes are not supported by all h264 prediction functions.
  113. read the manual for details. */
  114. IPP_16X16_DC_TOP = 4,
  115. IPP_16X16_DC_LEFT = 5,
  116. IPP_16X16_DC_128 = 6
  117. } IppIntra16x16PredMode_H264;
  118. typedef struct _IppiFilterDeblock_16u
  119. {
  120. Ipp16u* pSrcDstPlane; /* Pointer to the left upper pixel of macroblock. and resultant samples. */
  121. Ipp32s srcDstStep; /* Plane step (pitch). */
  122. Ipp16u* pAlpha; /* Alpha Thresholds */
  123. Ipp16u* pBeta; /* Beta Thresholds */
  124. Ipp16u* pThresholds; /* Thresholds (Tc0) */
  125. Ipp8u* pBs; /* BS parameters */
  126. Ipp32s bitDepth; /* number of bits of plane's sample (range - [8..14]) */
  127. } IppiFilterDeblock_16u;
  128. typedef struct _IppiFilterDeblock_8u
  129. {
  130. Ipp8u* pSrcDstPlane; /* Pointer to the left upper pixel of macroblock. and resultant samples. */
  131. Ipp32s srcDstStep; /* Plane step (pitch). */
  132. Ipp8u* pAlpha; /* Alpha Thresholds */
  133. Ipp8u* pBeta; /* Beta Thresholds */
  134. Ipp8u* pThresholds; /* Thresholds (Tc0) */
  135. Ipp8u* pBs; /* BS parameters */
  136. } IppiFilterDeblock_8u;
  137. typedef struct _IppVCInterpolate_8u
  138. {
  139. const Ipp8u* pSrc; /* Pointer to the source. */
  140. Ipp32s srcStep; /* Step of the pointer pSrc (source array) in bytes. */
  141. Ipp8u* pDst; /* Pointer to the destination. */
  142. Ipp32s dstStep; /* Step of the pointer pDst (destination array) in bytes. */
  143. Ipp32s dx; /* Fractional parts of the motion vector */
  144. Ipp32s dy; /* in 1/4 pel units (0, 1, 2, or 3). */
  145. IppiSize roiSize; /* Flag that specifies the region of interest
  146. (could be 16, 8, 4 or 2 in each dimension). */
  147. Ipp32s roundControl; /* Reserved for VC1 using. */
  148. } IppVCInterpolate_8u;
  149. typedef struct _IppVCInterpolate_16u
  150. {
  151. const Ipp16u* pSrc; /* Pointer to the source. */
  152. Ipp32s srcStep; /* Step of the pointer pSrc (source array) in bytes. */
  153. Ipp16u* pDst; /* Pointer to the destination. */
  154. Ipp32s dstStep; /* Step of the pointer pDst (destination array) in bytes. */
  155. Ipp32s dx; /* Fractional parts of the motion vector */
  156. Ipp32s dy; /* in 1/4 pel units (0, 1, 2, or 3). */
  157. IppiSize roiSize; /* Flag that specifies the region of interest
  158. (could be 16, 8, 4 or 2 in each dimension). */
  159. Ipp32s bitDepth; /* Number of significant bits in Ipp16u sample. */
  160. } IppVCInterpolate_16u;
  161. typedef struct _IppVCInterpolateBlock_8u
  162. {
  163. const Ipp8u *pSrc[2]; /* pointers to reference image planes */
  164. Ipp32s srcStep; /* step of the reference image planes */
  165. Ipp8u *pDst[2]; /* pointers to destination image planes */
  166. Ipp32s dstStep; /* step of the destination image planes */
  167. IppiSize sizeFrame; /* dimensions of the reference image planes */
  168. IppiSize sizeBlock; /* dimensions of the block to be interpolated */
  169. IppiPoint pointBlockPos; /* current position of the block in the being
  170. interpolated image */
  171. IppiPoint pointVector; /* relative difference between current position
  172. and reference data to be used */
  173. } IppVCInterpolateBlock_8u;
  174. typedef struct _IppVCInterpolateBlock_16u
  175. {
  176. const Ipp16u *pSrc[2]; /* pointers to reference image planes */
  177. Ipp32s srcStep; /* step of the reference image planes */
  178. Ipp16u *pDst[2]; /* pointers to destination image planes */
  179. Ipp32s dstStep; /* step of the destination image planes */
  180. IppiSize sizeFrame; /* dimensions of the reference image planes */
  181. IppiSize sizeBlock; /* dimensions of the block to be interpolated */
  182. IppiPoint pointBlockPos; /* current position of the block in the being
  183. interpolated image */
  184. IppiPoint pointVector; /* relative difference between current position
  185. and reference data to be used */
  186. Ipp32s bitDepth; /* data capacity depth in range 8..14 */
  187. } IppVCInterpolateBlock_16u;
  188. typedef struct _IppVCInterpolateBlockIC_8u
  189. {
  190. const Ipp8u *pSrc; /* Pointer to the source. */
  191. Ipp32s srcStep; /* Step of the pointer pSrc (source array) in bytes. */
  192. Ipp8u *pDst; /* Pointer to the destination. */
  193. Ipp32s dstStep; /* Step of the pointer pDst (destination array) in bytes. */
  194. Ipp8u *pLUTTop; /* pointer to top Intensity Compensation LUT table */
  195. Ipp8u *pLUTBottom; /* pointer to bottom Intensity Compensation LUT table */
  196. IppiSize sizeFrame; /* dimensions of the reference image plane */
  197. IppiSize sizeBlock; /* dimensions of the block to be interpolated */
  198. IppiPoint pointRefBlockPos; /* position inside reference frame. Which was calculated
  199. as sum of current position and integer part of motion vector */
  200. IppiPoint pointVectorQuarterPix; /* quarter part of MV */
  201. Ipp32u oppositePadding; /* flag that specified padding correspondence between
  202. current frame and reference frame */
  203. Ipp32u fieldPrediction; /* flag that specified prediction type for current MB progressive or field */
  204. Ipp32u roundControl; /* indicates type of rounding for the current frame */
  205. Ipp32u isPredBottom; /* flag that specified type of reference field in case
  206. of interlace reference picture - top or bottom */
  207. } IppVCInterpolateBlockIC_8u;
  208. typedef struct _IppiBidir_16u
  209. {
  210. const Ipp16u * pSrc1;
  211. Ipp32s srcStep1;
  212. const Ipp16u* pSrc2;
  213. Ipp32s srcStep2;
  214. Ipp16u* pDst;
  215. Ipp32s dstStep;
  216. IppiSize roiSize;
  217. Ipp32s bitDepth;
  218. } IppVCBidir_16u;
  219. typedef struct _IppiMBReconstructHigh_32s16u
  220. {
  221. Ipp32s** ppSrcDstCoeff; /* Pointer to the order of blocks of residual coefficients
  222. for this macroblock */
  223. Ipp16u* pSrcDstPlane; /* Pointer to macroblock that is reconstructed in current plane. This
  224. macroblock should contain inter prediction samples if exist.*/
  225. Ipp32s srcDstStep; /* Plane step. */
  226. Ipp32u cbp; /* Coded block pattern. */
  227. Ipp32s qp; /* quantizer */
  228. Ipp16s* pQuantTable; /* Pointer to the quantization table for plane */
  229. Ipp32s bypassFlag; /* Flag enabling lossless coding (reserved for future use). */
  230. Ipp32s bitDepth; /* Number of significant bits in Ipp16u sample. */
  231. } IppiReconstructHighMB_32s16u;
  232. typedef struct _IppiReconstructHighMB_16s8u
  233. {
  234. Ipp16s** ppSrcDstCoeff; /* Pointer to the order of blocks of residual coefficients
  235. for this macroblock */
  236. Ipp8u* pSrcDstPlane; /* Pointer to macroblock that is reconstructed in current plane. This
  237. macroblock should contain inter prediction samples if exist.*/
  238. Ipp32s srcDstStep; /* Plane step. */
  239. Ipp32u cbp; /* Coded block pattern. */
  240. Ipp32s qp; /* quantizer */
  241. Ipp16s* pQuantTable; /* Pointer to the quantization table for plane */
  242. Ipp32s bypassFlag; /* Flag enabling lossless coding (reserved for future use). */
  243. } IppiReconstructHighMB_16s8u;
  244. typedef enum
  245. {
  246. IPP_CHROMA_DC = 0,
  247. IPP_CHROMA_HOR = 1,
  248. IPP_CHROMA_VERT = 2,
  249. IPP_CHROMA_PLANE = 3,
  250. /* these modes are not supported by all h264 prediction functions.
  251. read the manual for details. */
  252. IPP_CHROMA_DC_TOP = 4,
  253. IPP_CHROMA_DC_LEFT = 5,
  254. IPP_CHROMA_DC_128 = 6
  255. } IppIntraChromaPredMode_H264;
  256. typedef IppIntraChromaPredMode_H264 IppIntraChromaPredMode_AVS;
  257. enum
  258. {
  259. IPPVC_LEFT_EDGE = 0x1,
  260. IPPVC_RIGHT_EDGE = 0x2,
  261. IPPVC_TOP_EDGE = 0x4,
  262. IPPVC_BOTTOM_EDGE = 0x8,
  263. IPPVC_TOP_LEFT_EDGE = 0x10,
  264. IPPVC_TOP_RIGHT_EDGE = 0x20
  265. };
  266. #define IPPVC_CBP_1ST_CHROMA_DC_BITPOS 17
  267. #define IPPVC_CBP_1ST_CHROMA_AC_BITPOS 19
  268. #define IPPVC_CBP_CHROMA_DC (0x3<<IPPVC_CBP_1ST_CHROMA_DC_BITPOS)
  269. #define IPPVC_CBP_CHROMA_AC (0xff<<IPPVC_CBP_1ST_CHROMA_AC_BITPOS)
  270. #define IPPVC_CBP_LUMA_AC (0xffff<<IPPVC_CBP_1ST_LUMA_AC_BITPOS)
  271. #define IPPVC_CBP_1ST_LUMA_AC_BITPOS 1
  272. #define IPPVC_CBP_LUMA_DC 1
  273. #define MAX_CAVLC_LEVEL_VALUE 2063
  274. #define IPPVC_CBP_DC 1
  275. #define IPPVC_CBP_1ST_AC_BITPOS 1
  276. enum
  277. {
  278. IPPVC_MBTYPE_INTER = 0, /* P picture or P-VOP */
  279. IPPVC_MBTYPE_INTER_Q = 1, /* P picture or P-VOP */
  280. IPPVC_MBTYPE_INTER4V = 2, /* P picture or P-VOP */
  281. IPPVC_MBTYPE_INTRA = 3, /* I and P picture, or I- and P-VOP */
  282. IPPVC_MBTYPE_INTRA_Q = 4, /* I and P picture, or I- and P-VOP */
  283. IPPVC_MBTYPE_INTER4V_Q = 5, /* P picture or P-VOP(H.263)*/
  284. IPPVC_MBTYPE_DIRECT = 6, /* B picture or B-VOP (MPEG-4 only) */
  285. IPPVC_MBTYPE_INTERPOLATE = 7, /* B picture or B-VOP */
  286. IPPVC_MBTYPE_BACKWARD = 8, /* B picture or B-VOP */
  287. IPPVC_MBTYPE_FORWARD = 9, /* B picture or B-VOP */
  288. IPPVC_MB_STUFFING = 255
  289. };
  290. enum
  291. {
  292. IPPVC_SCAN_NONE = -1,
  293. IPPVC_SCAN_ZIGZAG = 0,
  294. IPPVC_SCAN_VERTICAL = 1,
  295. IPPVC_SCAN_HORIZONTAL = 2
  296. };
  297. /* Block Type */
  298. enum
  299. {
  300. IPPVC_BLOCK_LUMA = 0,
  301. IPPVC_BLOCK_CHROMA = 1
  302. };
  303. /* Interpolation types */
  304. enum
  305. {
  306. IPPVC_INTERP_NONE = 0,
  307. IPPVC_INTERP_HORIZONTAL = 1,
  308. IPPVC_INTERP_VERTICAL = 2,
  309. IPPVC_INTERP_2D = 3
  310. };
  311. /* Sprite Type */
  312. enum
  313. {
  314. IPPVC_SPRITE_STATIC = 1,
  315. IPPVC_SPRITE_GMC = 2
  316. };
  317. typedef struct WarpSpec_MPEG4 IppiWarpSpec_MPEG4;
  318. typedef struct QuantInvIntraSpec_MPEG4 IppiQuantInvIntraSpec_MPEG4;
  319. typedef struct QuantInvInterSpec_MPEG4 IppiQuantInvInterSpec_MPEG4;
  320. typedef struct QuantIntraSpec_MPEG4 IppiQuantIntraSpec_MPEG4;
  321. typedef struct QuantInterSpec_MPEG4 IppiQuantInterSpec_MPEG4;
  322. /* General Color Conversion Enumerated Types */
  323. enum {
  324. IPPVC_ROTATE_DISABLE = 0,
  325. IPPVC_ROTATE_90CCW = 1,
  326. IPPVC_ROTATE_90CW = 2,
  327. IPPVC_ROTATE_180 = 3
  328. };
  329. enum
  330. {
  331. IPPVC_CbYCr422ToBGR565 = 0,
  332. IPPVC_CbYCr422ToBGR555 = 1
  333. };
  334. /* enum used in VC1 deblocking and smoothing */
  335. enum
  336. {
  337. IPPVC_EDGE_QUARTER_1 = 0x01,
  338. IPPVC_EDGE_QUARTER_2 = 0x02,
  339. IPPVC_EDGE_QUARTER_3 = 0x04,
  340. IPPVC_EDGE_QUARTER_4 = 0x08,
  341. IPPVC_EDGE_HALF_1 = IPPVC_EDGE_QUARTER_1 + IPPVC_EDGE_QUARTER_2,
  342. IPPVC_EDGE_HALF_2 = IPPVC_EDGE_QUARTER_3 + IPPVC_EDGE_QUARTER_4,
  343. IPPVC_EDGE_ALL = IPPVC_EDGE_HALF_1 + IPPVC_EDGE_HALF_2
  344. };
  345. /* deinterlacing structure */
  346. typedef struct DeinterlaceBlendState_8u_C1 IppiDeinterlaceBlendState_8u_C1;
  347. /* denoise structures & enums */
  348. typedef enum _IppvcNoiseBlurFlag
  349. {
  350. IPPVC_NOISE_BLUR0 = 0x0,
  351. IPPVC_NOISE_BLUR1 = 0x1,
  352. IPPVC_NOISE_BLUR2 = 0x2,
  353. IPPVC_NOISE_BLUR3 = 0x3
  354. }IppvcNoiseBlurFlag;
  355. struct DenoiseSmoothState;
  356. typedef struct DenoiseSmoothState IppiDenoiseSmoothState_8u_C1;
  357. struct DenoiseAdaptiveState;
  358. typedef struct DenoiseAdaptiveState IppiDenoiseAdaptiveState_8u_C1;
  359. struct DenoiseMNRState;
  360. typedef struct DenoiseMNRState IppiDenoiseMosquitoState_8u_C1;
  361. /* user-open structure */
  362. typedef struct {
  363. Ipp8u TemporalDifferenceThreshold; /* default 16 - range [0, 255] */
  364. Ipp8u NumberOfMotionPixelsThreshold; /* default 0 - range [0, 16] */
  365. Ipp8u StrongEdgeThreshold; /* default 8 - range [0, 255] */
  366. Ipp8u BlockWidth; /* default 4 - range [1, 16] */
  367. Ipp8u BlockHeight; /* default 4 - range [1, 16] */
  368. Ipp8u EdgePixelWeight; /* default 128 - range [0, 255] */
  369. Ipp8u NonEdgePixelWeight; /* default 16 - range [0, 255] */
  370. Ipp8u GaussianThresholdY; /* default 12 */
  371. Ipp8u GaussianThresholdUV; /* default 6 */
  372. Ipp8u HistoryWeight; /* default 192 - range [0, 255] */
  373. } IppDenoiseCAST;
  374. #endif /* _OWN_BLDPCS */
  375. /* ///////////////////////////////////////////////////////////////////////////
  376. // Name: ippvcGetLibVersion
  377. // Purpose: getting of the library version
  378. // Returns: the structure of information about version of ippvc library
  379. // Parameters:
  380. //
  381. // Notes: not necessary to release the returned structure
  382. */
  383. IPPAPI( const IppLibraryVersion*, ippvcGetLibVersion, (void) )
  384. /* ///////////////////////////////////////////////////////////////////////////
  385. // MPEG-1 and MPEG-2 Video Decoding Functions
  386. //////////////////////////////////////////////////////////////////////////// */
  387. /* Variable Length Decoding Functions */
  388. /* ///////////////////////////////////////////////////////////////////////////
  389. // Name:
  390. // ippiHuffmanTableInitAlloc_32s
  391. //
  392. // Purpose:
  393. // allocates memory and initializes the table that contains codes
  394. // for macroblock address increment, macroblock type, macroblock pattern,
  395. // or motion vectors.
  396. //
  397. // Parameters:
  398. // pSrcTable Pointer to the source table
  399. // ppDstSpec Pointer to pointer to the destination decoding table
  400. //
  401. // Returns:
  402. // ippStsNoErr No error
  403. // ippStsNullPtrErr One of the pointers is NULL
  404. // ippStsMemAllocErr No memory is allocated.
  405. */
  406. IPPAPI(IppStatus, ippiHuffmanTableInitAlloc_32s, (
  407. const Ipp32s* pSrcTable,
  408. IppVCHuffmanSpec_32s** ppDstSpec))
  409. /* ///////////////////////////////////////////////////////////////////////////
  410. // Name:
  411. // ippiHuffmanRunLevelTableInitAlloc_32s
  412. //
  413. // Purpose:
  414. // Allocates memory and initializes the table that contains Run-Level codes.
  415. //
  416. // Parameters:
  417. // pSrcTable Pointer to the source table
  418. // ppDstSpec Pointer to pointer to the destination decoding table
  419. //
  420. // Returns:
  421. // ippStsNoErr No error
  422. // ippStsNullPtrErr One of the pointers is NULL
  423. // ippStsMemAllocErr No memory is allocated.
  424. */
  425. IPPAPI(IppStatus, ippiHuffmanRunLevelTableInitAlloc_32s, (
  426. const Ipp32s* pSrcTable,
  427. IppVCHuffmanSpec_32s** ppDstSpec))
  428. /* ///////////////////////////////////////////////////////////////////////////
  429. // Name:
  430. // ippiDecodeHuffmanOne_1u32s
  431. //
  432. // Purpose:
  433. // Decodes one code using a specified table
  434. //
  435. // Parameters:
  436. // ppBitStream Double pointer to the current position in the bit stream
  437. // pOffset Pointer to offset between the bit pointed by pBitStream
  438. // and the start of the code
  439. // pDst Pointer to the destination result
  440. // pDecodeTable Pointer to the decoding table
  441. //
  442. // Returns:
  443. // ippStsNoErr No error
  444. // ippStsNullPtrErr One of the pointers is NULL
  445. // ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
  446. */
  447. IPPAPI(IppStatus, ippiDecodeHuffmanOne_1u32s, (
  448. Ipp32u** ppBitStream,
  449. int* pOffset,
  450. Ipp32s* pDst,
  451. const IppVCHuffmanSpec_32s* pDecodeTable))
  452. /* ///////////////////////////////////////////////////////////////////////////
  453. // Name:
  454. // ippiDecodeHuffmanPair_1u16s
  455. //
  456. // Purpose:
  457. // Decodes one code using a specified table
  458. //
  459. // Parameters:
  460. // ppBitStream Double pointer to the current position in the bit stream
  461. // pOffset Pointer to offset between the bit pointed by pBitStream
  462. // and the start of the code
  463. // pDecodeTable Pointer to the decoding table
  464. // pFirst Pointer to the first destination result
  465. // pSecond Pointer to the second destination result
  466. //
  467. // Returns:
  468. // ippStsNoErr No error
  469. // ippStsNullPtrErr One of the pointers is NULL
  470. // ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
  471. */
  472. IPPAPI(IppStatus, ippiDecodeHuffmanPair_1u16s, (
  473. Ipp32u **ppBitStream,
  474. Ipp32s *pOffset,
  475. const IppVCHuffmanSpec_32s *pDecodeTable,
  476. Ipp8s *pFirst,
  477. Ipp16s *pSecond))
  478. /* ///////////////////////////////////////////////////////////////////////////
  479. // Name:
  480. // ippiReconstructDCTBlock_MPEG1_32s
  481. //
  482. // Purpose:
  483. // Decodes 8x8 non-intra block using a table with Run-Level codes
  484. // for MPEG-1 Standard, rearranges and performs inverse quantization.
  485. //
  486. // Parameters:
  487. // ppBitStream Double pointer to the current position in the bitstream.
  488. // pOffset Pointer to offset between the bit pointed by pBitStream
  489. // and the start of the code
  490. // pDCSizeTable Pointer to the table with DC coefficient,
  491. // that is the first of the DCT coefficients
  492. // pACTable Pointer to the table with Run-Level codes for
  493. // all DCT coefficients but the first
  494. // pScanMatrix Pointer to the matrix containing indices of elements
  495. // in scanning sequence
  496. // QP Quantizer scale factor which is read from the bitstream
  497. // pQPMatrix Pointer to the weighting matrix imposed by the Standard
  498. // or user-defined
  499. // pDstBlock Pointer to the decoded elements
  500. // pDstSize Pointer to the position of the last non-zero block coefficient
  501. // in scanning sequence
  502. //
  503. // Returns:
  504. // ippStsNoErr No error
  505. // ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
  506. */
  507. IPPAPI(IppStatus, ippiReconstructDCTBlock_MPEG1_32s, (
  508. Ipp32u** ppBitStream,
  509. int* pOffset,
  510. const Ipp32s* pDCSizeTable,
  511. const Ipp32s* pACTable,
  512. Ipp32s* pScanMatrix,
  513. int QP,
  514. Ipp16s* pQPMatrix,
  515. Ipp16s* pDstBlock,
  516. Ipp32s* pDstSize))
  517. /* ///////////////////////////////////////////////////////////////////////////
  518. // Name:
  519. // ippiReconstructDCTBlockIntra_MPEG1_32s
  520. //
  521. // Purpose:
  522. // Decodes 8x8 intra block using a table with Run-Level codes
  523. // for MPEG-1 Standard, rearranges and performs inverse quantization.
  524. //
  525. // Parameters:
  526. // ppBitStream Double pointer to the current position in the bitstream.
  527. // pOffset Pointer to offset between the bit pointed by pBitStream
  528. // and the start of the code
  529. // pDCSizeTable Pointer to the table with codes for DC coefficient,
  530. // that is the first of the DCT coefficients
  531. // pACTable Pointer to the table with Run-Level codes for
  532. // all DCT coefficients but the first
  533. // pScanMatrix Pointer to the scanning matrix imposed by the Standard
  534. // or user-defined
  535. // QP Quantizer scale factor which is read from the bitstream
  536. // pQPMatrix Pointer to the weighting matrix imposed by the Standard
  537. // or user-defined
  538. // pDCPred Pointer to the value to be added to the DC coefficient
  539. // pDstBlock Pointer to the decoded elements
  540. // pDstSize Pointer to the position of the last non-zero block
  541. // coefficient in scanning sequence
  542. //
  543. // Returns:
  544. // ippStsNoErr No error
  545. // ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
  546. */
  547. IPPAPI(IppStatus, ippiReconstructDCTBlockIntra_MPEG1_32s, (
  548. Ipp32u** ppBitStream,
  549. int* pOffset,
  550. const Ipp32s* pDCSizeTable,
  551. const Ipp32s* pACTable,
  552. Ipp32s* pScanMatrix,
  553. int QP,
  554. Ipp16s* pQPMatrix,
  555. Ipp16s* pDCPred,
  556. Ipp16s* pDstBlock,
  557. Ipp32s* pDstSize))
  558. /* ///////////////////////////////////////////////////////////////////////////
  559. // Name:
  560. // ippiReconstructDCTBlock_MPEG2_32s
  561. //
  562. // Purpose:
  563. // Decodes 8x8 non-intra block using a table with Run-Level codes for
  564. // MPEG-2 Standard, rearranges and performs inverse quantization.
  565. //
  566. // Parameters:
  567. // ppBitStream Double pointer to the current position in the bitstream.
  568. // pOffset Pointer to offset between the bit pointed by pBitStream
  569. // and the start of the code
  570. // pDCTable Pointer to the table with codes for DC coefficient,
  571. // that is the first of the DCT coefficients
  572. // pACTable Pointer to the table with Run-Level codes for
  573. // all DCT coefficients but the first
  574. // pScanMatrix Pointer to the matrix containing indices of elements
  575. // in scanning sequence
  576. // QP Quantizer scale factor which is read from the bitstream
  577. // pQPMatrix Pointer to the weighting matrix imposed by the Standard
  578. // or user-defined
  579. // pDstBlock Pointer to the decoded elements
  580. // pDstSize Pointer to the position of the last non-zero block
  581. // coefficient in scanning sequence
  582. //
  583. // Returns:
  584. // ippStsNoErr No error
  585. // ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
  586. */
  587. IPPAPI(IppStatus, ippiReconstructDCTBlock_MPEG2_32s, (
  588. Ipp32u** ppBitStream,
  589. int* pOffset,
  590. const IppVCHuffmanSpec_32s* pDCTable,
  591. const IppVCHuffmanSpec_32s* pACTable,
  592. Ipp32s* pScanMatrix,
  593. int QP,
  594. Ipp16s* pQPMatrix,
  595. Ipp16s* pDstBlock,
  596. Ipp32s* pDstSize))
  597. /* ///////////////////////////////////////////////////////////////////////////
  598. // Name:
  599. // ippiReconstructDCTBlockIntra_MPEG2_32s
  600. //
  601. // Purpose:
  602. // Decodes 8x8 intra block using a table with Run-Level codes for
  603. // MPEG-1 Standard, rearranges and performs inverse quantization.
  604. //
  605. // Parameters:
  606. // ppBitStream Double pointer to the current position in the bitstream.
  607. // pOffset Pointer to offset between the bit pointed by pBitStream
  608. // and the start of the code
  609. // pDCSizeTable Pointer to the table with codes for DC coefficient,
  610. // that is the first of the DCT coefficients
  611. // pACTable Pointer to the table with Run-Level codes for
  612. // all DCT coefficients but the first
  613. // pScanMatrix Pointer to the scanning matrix imposed by the Standard
  614. // or user-defined
  615. // QP Quantizer scale factor which is read from the bitstream
  616. // pQPMatrix Pointer to the weighting matrix imposed by the Standard
  617. // or user-defined
  618. // pDCPred Pointer to the value to be added to the DC coefficient
  619. // shiftDCVal Integer value, DC coefficient must be multiplied by
  620. // 2**shiftDCVal
  621. // pDstBlock Pointer to the decoded elements
  622. // pDstSize Pointer to the position of the last non-zero block
  623. // coefficient in scanning sequence
  624. //
  625. // Returns:
  626. // ippStsNoErr No error
  627. // ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
  628. */
  629. IPPAPI(IppStatus, ippiReconstructDCTBlockIntra_MPEG2_32s, (
  630. Ipp32u** ppBitStream,
  631. int* pOffset,
  632. const IppVCHuffmanSpec_32s* pDCSizeTable,
  633. const IppVCHuffmanSpec_32s* pACTable,
  634. Ipp32s* pScanMatrix,
  635. int QP,
  636. Ipp16s* pQPMatrix,
  637. Ipp16s* pDCPred,
  638. Ipp32s shiftDCVal,
  639. Ipp16s* pDstBlock,
  640. Ipp32s* pDstSize))
  641. /* ///////////////////////////////////////////////////////////////////////////
  642. // Name:
  643. // ippiHuffmanTableFree_32s
  644. //
  645. // Purpose:
  646. // Frees memory allocated for VLC table
  647. //
  648. // Parameters:
  649. // pDecodeTable Pointer to the allocated table
  650. //
  651. // Returns:
  652. // ippStsNoErr No error
  653. // ippStsNullPtrErr One of the pointers is NULL
  654. */
  655. IPPAPI(IppStatus, ippiHuffmanTableFree_32s, (IppVCHuffmanSpec_32s *pDecodeTable))
  656. /* Inverse Quantization */
  657. /* ///////////////////////////////////////////////////////////////////////////
  658. // Name:
  659. // ippiQuantInvIntra_MPEG2_16s_C1I
  660. // ippiQuantInv_MPEG2_16s_C1I
  661. //
  662. // Purpose:
  663. // Performs inverse quantization for intra and non-intra frames
  664. // respectively in accordance with the MPEG-2 Standard
  665. //
  666. // Parameters:
  667. // pSrcDst Pointer to the block of DCT coefficients
  668. // QP Quantizer scale factor which is read from the bitstream
  669. // pQPMatrix Pointer to the weighting matrix imposed by the Standard
  670. // or user-defined
  671. //
  672. // Returns:
  673. // ippStsNoErr No error
  674. // ippStsNullPtrErr One of the pointers is NULL
  675. */
  676. IPPAPI(IppStatus, ippiQuantInvIntra_MPEG2_16s_C1I, (
  677. Ipp16s* pSrcDst,
  678. int QP,
  679. Ipp16s* pQPMatrix))
  680. IPPAPI(IppStatus, ippiQuantInv_MPEG2_16s_C1I, (
  681. Ipp16s* pSrcDst,
  682. int QP,
  683. Ipp16s* pQPMatrix))
  684. /* Inverse Discrete Cosine Transformation */
  685. /* ///////////////////////////////////////////////////////////////////////////
  686. // Name:
  687. // ippiDCT8x8Inv_AANTransposed_16s_C1R
  688. //
  689. // Purpose:
  690. // Performs inverse DCT on a pre-transposed block
  691. //
  692. // Parameters:
  693. // pSrc Pointer to the block of DCT coefficients
  694. // pDst Pointer to the destination array
  695. // dstStep Step through the destination array
  696. // count Number of the last non-zero coefficient in zig-zag order
  697. //
  698. // Returns:
  699. // ippStsNoErr No error
  700. // ippStsNullPtrErr One of the pointers is NULL
  701. //
  702. // Notes:
  703. // This function is used for non-intra macroblocks
  704. */
  705. IPPAPI(IppStatus,ippiDCT8x8Inv_AANTransposed_16s_C1R, (
  706. const Ipp16s* pSrc,
  707. Ipp16s* pDst,
  708. Ipp32s dstStep,
  709. Ipp32s count))
  710. /* ///////////////////////////////////////////////////////////////////////////
  711. // Name:
  712. // ippiDCT8x8Inv_AANTransposed_16s8u_C1R
  713. //
  714. // Purpose:
  715. // Performs inverse DCT on a pre-transposed block and
  716. // converts output to unsigned char format
  717. //
  718. // Parameters:
  719. // pSrc Pointer to the block of DCT coefficients
  720. // pDst Pointer to the destination array
  721. // dstStep Step through the destination array
  722. // count Number of the last non-zero coefficient in zig-zag order
  723. //
  724. // Returns:
  725. // ippStsNoErr No error
  726. // ippStsNullPtrErr One of the pointers is NULL
  727. //
  728. // Notes:
  729. // This function is used for non-intra macroblocks
  730. */
  731. IPPAPI(IppStatus,ippiDCT8x8Inv_AANTransposed_16s8u_C1R, (
  732. const Ipp16s* pSrc,
  733. Ipp8u* pDst,
  734. Ipp32s dstStep,
  735. Ipp32s count))
  736. /* ///////////////////////////////////////////////////////////////////////////
  737. // Name:
  738. // ippiDCT8x8Inv_AANTransposed_16s_P2C2R
  739. //
  740. // Purpose:
  741. // Performs Inverse DCT on pre-transposed data of two input chroma blocks
  742. // and joins the output data into one array
  743. //
  744. // Parameters:
  745. // pSrcU Pointer to block of DCT coefficients for U component
  746. // pSrcV Pointer to block of DCT coefficients for V component
  747. // pDstUV Pointer to the destination array
  748. // dstStep Step through the destination array
  749. // countU Number of the last non-zero U coefficient in zig-zag order
  750. // countV Number of the last non-zero V coefficient in zig-zag order
  751. //
  752. // Returns:
  753. // ippStsNoErr No error
  754. // ippStsNullPtrErr One of the pointers is NULL
  755. //
  756. // Notes:
  757. // This function is used for non-intra macroblocks
  758. */
  759. IPPAPI(IppStatus,ippiDCT8x8Inv_AANTransposed_16s_P2C2R, (
  760. const Ipp16s* pSrcU,
  761. const Ipp16s* pSrcV,
  762. Ipp16s* pDstUV,
  763. Ipp32s dstStep,
  764. Ipp32s countU,
  765. Ipp32s countV))
  766. /* ///////////////////////////////////////////////////////////////////////////
  767. // Name:
  768. // ippiDCT8x8Inv_AANTransposed_16s8u_P2C2R
  769. //
  770. // Purpose:
  771. // Performs inverse DCT on pre-transposed data of two input chroma
  772. // blocks and joins the output data into one unsigned char array
  773. //
  774. // Parameters:
  775. // pSrcU Pointer to block of DCT coefficients for U component
  776. // pSrcV Pointer to block of DCT coefficients for V component
  777. // pDstUV Pointer to the destination array
  778. // dstStep Step through the destination array
  779. // countU Number of the last non-zero U coefficient in zig-zag order
  780. // countV Number of the last non-zero V coefficient in zig-zag order
  781. //
  782. // Returns:
  783. // ippStsNoErr No error
  784. // ippStsNullPtrErr One of the pointers is NULL
  785. //
  786. // Notes:
  787. // This function is used for non-intra macroblocks
  788. */
  789. IPPAPI(IppStatus, ippiDCT8x8Inv_AANTransposed_16s8u_P2C2R, (
  790. const Ipp16s* pSrcU,
  791. const Ipp16s* pSrcV,
  792. Ipp8u* pDstUV,
  793. Ipp32s dstStep,
  794. Ipp32s countU,
  795. Ipp32s countV))
  796. /* ///////////////////////////////////////////////////////////////////////////
  797. // Name:
  798. // ippiDCT8x8Fwd_8u16s_C2P2
  799. //
  800. // Purpose:
  801. // The function performs forward discrete cosines transform at block 8x8
  802. // of chrominance part of NV12 plane and after put results into separate
  803. // blocks of 8x8 for U (Cb) and V (Cr) components.
  804. //
  805. // Parameters:
  806. // pSrc - the pointer to the source block ( chrominance part of NV12 plane).
  807. // 0 UV UV UV UV UV UV UV UV
  808. // 1 UV UV UV UV ... UV
  809. // ...
  810. // 7 UV UV UV UV UV UV UV UV
  811. //
  812. // pSrc Pointer to block of DCT coefficients for U component
  813. // srcStep Step of the current source block, specifying width of the plane
  814. // in bytes.negative step works.
  815. // pDstU - the pointer to the destination buffer for U coefficients of DCT
  816. // pDstV - the pointer to the destination buffer for U coefficients of DCT
  817. //
  818. // Returns:
  819. // ippStsNoErr No error
  820. // ippStsNullPtrErr One of the pointers is NULL
  821. */
  822. IPPAPI(IppStatus,ippiDCT8x8Fwd_8u16s_C2P2, (
  823. const Ipp8u* pSrc,
  824. Ipp32s srcStep,
  825. Ipp16s* pDstU,
  826. Ipp16s* pDstV ))
  827. /* ///////////////////////////////////////////////////////////////////////////
  828. // Name:
  829. // ippiDCT8x8InvOrSet_16s8u_P2C2
  830. //
  831. // Purpose:
  832. // The function performs inverse discrete cosines transform at block 8x8
  833. // and after put results into chrominance part of NV12 plane. Or fill
  834. // chrominance part of NV12 plane by constant values depends on flag parameter.
  835. // Parameters:
  836. // pSrcU - the pointer to the source of U(Cb) DCT coefficients
  837. // pSrcV - the pointer to the source of U(Cb) DCT coefficients
  838. // pDst - the pointer to the destination block ( chrominance part of NV12 plane).
  839. // 0 UV UV UV UV UV UV UV UV
  840. // 1 UV UV UV UV UV
  841. // ...
  842. // 7 UV UV UV UV UV UV UV UV
  843. //
  844. // dstStep Step of the current destination block, specifying width of the plane
  845. // in bytes.negative step works.
  846. // flag - Bits from 2 to 31 are reserved. Take into account only two low bits.
  847. // (flag&0x03) == 0x00 - Do iDCT for U and V
  848. // (flag&0x03) == 0x01 - Do iDCT for U and SET for V
  849. // (flag&0x03) == 0x02 - Do SET for U and iDCT for V
  850. // (flag&0x03) == 0x03 - Do SET for U and V
  851. // SET means that destination blok fill by (pSrcU[0]/8) value for U
  852. // or (pSrcV[0]/8) value for V.
  853. //
  854. // Returns:
  855. // ippStsNoErr No error
  856. // ippStsNullPtrErr One of the pointers is NULL
  857. */
  858. IPPAPI(IppStatus, ippiDCT8x8InvOrSet_16s8u_P2C2, (
  859. const Ipp16s* pSrcU,
  860. const Ipp16s* pSrcV,
  861. Ipp8u* pDst,
  862. Ipp32s dstStep,
  863. Ipp32s flag))
  864. /* Motion Compensation */
  865. /* ///////////////////////////////////////////////////////////////////////////
  866. // Name:
  867. // ippiMC16x16_8u_C1, ippiMC16x8_8u_C1, ippiMC8x16_8u_C1,
  868. // ippiMC8x8_8u_C1, ippiMC8x4_8u_C1, ippiMC4x8_8u_C1,
  869. // ippiMC4x4_8u_C1, ippiMC2x4_8u_C1, ippiMC4x2_8u_C1,
  870. // ippiMC2x2_8u_C1
  871. //
  872. // Purpose:
  873. // Performs motion compensation for a predicted block of
  874. // the correspondent size
  875. //
  876. // Parameters:
  877. // pSrcRef Pointer to the reference intra block
  878. // srcStep Step in bytes, specifying the width of
  879. // the aligned reference frame
  880. // pSrcYData Pointer to the data obtained after inverse DCT
  881. // srcYDataStep Step in bytes, specifying the width of
  882. // the aligned data after inverse DCT
  883. // pDst Pointer to the destination predicted block
  884. // dstStep Step in bytes, specifying the width of
  885. // the aligned destination frame
  886. // mcType Type of motion compensation, IPPVC_MC_APX
  887. // roundControl Type of rounding for half-pixel approximation;
  888. // may be 0 or 1
  889. //
  890. // Returns:
  891. // ippStsNoErr No error
  892. // ippStsNullPtrErr One of the pointers is NULL
  893. */
  894. IPPAPI(IppStatus, ippiMC16x16_8u_C1,(
  895. const Ipp8u* pSrcRef,
  896. Ipp32s srcStep,
  897. const Ipp16s* pSrcYData,
  898. Ipp32s srcYDataStep,
  899. Ipp8u* pDst,
  900. Ipp32s dstStep,
  901. Ipp32s mcType,
  902. Ipp32s roundControl))
  903. IPPAPI(IppStatus, ippiMC16x8_8u_C1, (
  904. const Ipp8u* pSrcRef,
  905. Ipp32s srcStep,
  906. const Ipp16s* pSrcYData,
  907. Ipp32s srcYDataStep,
  908. Ipp8u* pDst,
  909. Ipp32s dstStep,
  910. Ipp32s mcType,
  911. Ipp32s roundControl))
  912. IPPAPI(IppStatus, ippiMC8x16_8u_C1, (
  913. const Ipp8u* pSrcRef,
  914. Ipp32s srcStep,
  915. const Ipp16s* pSrcYData,
  916. Ipp32s srcYDataStep,
  917. Ipp8u* pDst,
  918. Ipp32s dstStep,
  919. Ipp32s mcType,
  920. Ipp32s roundControl))
  921. IPPAPI(IppStatus, ippiMC8x8_8u_C1, (
  922. const Ipp8u* pSrcRef,
  923. Ipp32s srcStep,
  924. const Ipp16s* pSrcYData,
  925. Ipp32s srcYDataStep,
  926. Ipp8u* pDst,
  927. Ipp32s dstStep,
  928. Ipp32s mcType,
  929. Ipp32s roundControl))
  930. IPPAPI(IppStatus, ippiMC8x4_8u_C1, (
  931. const Ipp8u* pSrcRef,
  932. Ipp32s srcStep,
  933. const Ipp16s* pSrcYData,
  934. Ipp32s srcYDataStep,
  935. Ipp8u* pDst,
  936. Ipp32s dstStep,
  937. Ipp32s mcType,
  938. Ipp32s roundControl))
  939. IPPAPI(IppStatus, ippiMC4x8_8u_C1, (
  940. const Ipp8u* pSrcRef,
  941. Ipp32s srcStep,
  942. const Ipp16s* pSrcYData,
  943. Ipp32s srcYDataStep,
  944. Ipp8u* pDst,
  945. Ipp32s dstStep,
  946. Ipp32s mcType,
  947. Ipp32s roundControl))
  948. IPPAPI(IppStatus, ippiMC4x4_8u_C1, (
  949. const Ipp8u* pSrcRef,
  950. Ipp32s srcStep,
  951. const Ipp16s* pSrcYData,
  952. Ipp32s srcYDataStep,
  953. Ipp8u* pDst,
  954. Ipp32s dstStep,
  955. Ipp32s mcType,
  956. Ipp32s roundControl))
  957. IPPAPI(IppStatus, ippiMC2x4_8u_C1, (
  958. const Ipp8u* pSrcRef,
  959. Ipp32s srcStep,
  960. const Ipp16s* pSrcYData,
  961. Ipp32s srcYDataStep,
  962. Ipp8u* pDst,
  963. Ipp32s dstStep,
  964. Ipp32s mcType,
  965. Ipp32s roundControl))
  966. IPPAPI(IppStatus, ippiMC4x2_8u_C1, (
  967. const Ipp8u* pSrcRef,
  968. Ipp32s srcStep,
  969. const Ipp16s* pSrcYData,
  970. Ipp32s srcYDataStep,
  971. Ipp8u* pDst,
  972. Ipp32s dstStep,
  973. Ipp32s mcType,
  974. Ipp32s roundControl))
  975. IPPAPI(IppStatus, ippiMC2x2_8u_C1, (
  976. const Ipp8u* pSrcRef,
  977. Ipp32s srcStep,
  978. const Ipp16s* pSrcYData,
  979. Ipp32s srcYDataStep,
  980. Ipp8u* pDst,
  981. Ipp32s dstStep,
  982. Ipp32s mcType,
  983. Ipp32s roundControl))
  984. /* ///////////////////////////////////////////////////////////////////////////
  985. // Name:
  986. // ippiMC16x4_8u_C1
  987. // ippiMC16x8UV_8u_C1
  988. //
  989. // Purpose:
  990. // Performs motion compensation for a predicted UV block of
  991. // the correspondent size
  992. //
  993. // Parameters:
  994. // pSrcRef Pointer to the reference block
  995. // srcStep Step in bytes, specifying the width of
  996. // the aligned reference frame
  997. // pSrcYData Pointer to the data obtained after inverse DCT
  998. // srcYDataStep Step in bytes, specifying the width of
  999. // the aligned data after inverse DCT
  1000. // pDst Pointer to the destination predicted block
  1001. // dstStep Step in bytes, specifying the width of
  1002. // the aligned destination frame
  1003. // mcType Type of motion compensation, IPPVC_MC_APX
  1004. // roundControl Type of rounding for half-pixel approximation;
  1005. // may be 0 or 1
  1006. //
  1007. // Returns:
  1008. // ippStsNoErr No error
  1009. // ippStsNullPtrErr One of the pointers is NULL
  1010. */
  1011. IPPAPI(IppStatus, ippiMC16x4_8u_C1, (
  1012. const Ipp8u* pSrcRef,
  1013. Ipp32s srcStep,
  1014. const Ipp16s* pSrcYData,
  1015. Ipp32s srcYDataStep,
  1016. Ipp8u* pDst,
  1017. Ipp32s dstStep,
  1018. Ipp32s mcType,
  1019. Ipp32s roundControl))
  1020. IPPAPI(IppStatus, ippiMC16x8UV_8u_C1, (
  1021. const Ipp8u* pSrcRef,
  1022. Ipp32s srcStep,
  1023. const Ipp16s* pSrcYData,
  1024. Ipp32s srcYDataStep,
  1025. Ipp8u* pDst,
  1026. Ipp32s dstStep,
  1027. Ipp32s mcType,
  1028. Ipp32s roundControl))
  1029. /* ///////////////////////////////////////////////////////////////////////////
  1030. // Name:
  1031. // ippiMC16x16B_8u_C1, ippiMC16x8B_8u_C1, ippiMC8x16B_8u_C1,
  1032. // ippiMC8x8B_8u_C1, ippiMC8x4B_8u_C1, ippiMC4x8B_8u_C1,
  1033. // ippiMC4x4B_8u_C1, ippiMC2x4B_8u_C1, ippiMC4x2B_8u_C1,
  1034. // ippiMC2x2B_8u_C1
  1035. //
  1036. // Purpose:
  1037. // Performs motion compensation for a bi-predicted block of
  1038. // the correspondent size
  1039. //
  1040. // Parameters:
  1041. // pSrcRefB Pointer to the forward reference block
  1042. // srcStepF Step in bytes, specifying the width of
  1043. // the aligned forward reference frame
  1044. // mcTypeF Forward motion compensation type, IPPVC_MC_APX
  1045. // pSrcRefB Pointer to the backward reference block
  1046. // srcStepB Step in bytes, specifying the width of
  1047. // the aligned backward reference frame
  1048. // mcTypeB Backward motion compensation type, IPPVC_MC_APX
  1049. // pSrcYData Pointer to the data obtained after inverse DCT
  1050. // srcYDataStep Step in bytes, specifying the width of
  1051. // the aligned data after inverse DCT
  1052. // pDst Pointer to the destination predicted block
  1053. // dstStep Step in bytes, specifying the width of
  1054. // the aligned destination frame
  1055. // roundControl Type of rounding for half-pixel approximation;
  1056. // may be 0 or 1
  1057. //
  1058. // Returns:
  1059. // ippStsNoErr No error
  1060. // ippStsNullPtrErr One of the pointers is NULL
  1061. */
  1062. IPPAPI(IppStatus, ippiMC16x16B_8u_C1, (
  1063. const Ipp8u* pSrcRefF,
  1064. Ipp32s srcStepF,
  1065. Ipp32s mcTypeF,
  1066. const Ipp8u* pSrcRefB,
  1067. Ipp32s srcStepB,
  1068. Ipp32s mcTypeB,
  1069. const Ipp16s* pSrcYData,
  1070. Ipp32s srcYDataStep,
  1071. Ipp8u* pDst,
  1072. Ipp32s dstStep,
  1073. Ipp32s roundControl))
  1074. IPPAPI(IppStatus, ippiMC16x8B_8u_C1, (
  1075. const Ipp8u* pSrcRefF,
  1076. Ipp32s srcStepF,
  1077. Ipp32s mcTypeF,
  1078. const Ipp8u* pSrcRefB,
  1079. Ipp32s srcStepB,
  1080. Ipp32s mcTypeB,
  1081. const Ipp16s* pSrcYData,
  1082. Ipp32s srcYDataStep,
  1083. Ipp8u* pDst,
  1084. Ipp32s dstStep,
  1085. Ipp32s roundControl))
  1086. IPPAPI(IppStatus, ippiMC8x16B_8u_C1, (
  1087. const Ipp8u* pSrcRefF,
  1088. Ipp32s srcStepF,
  1089. Ipp32s mcTypeF,
  1090. const Ipp8u* pSrcRefB,
  1091. Ipp32s srcStepB,
  1092. Ipp32s mcTypeB,
  1093. const Ipp16s* pSrcYData,
  1094. Ipp32s srcYDataStep,
  1095. Ipp8u* pDst,
  1096. Ipp32s dstStep,
  1097. Ipp32s roundControl))
  1098. IPPAPI(IppStatus, ippiMC8x8B_8u_C1, (
  1099. const Ipp8u* pSrcRefF,
  1100. Ipp32s srcStepF,
  1101. Ipp32s mcTypeF,
  1102. const Ipp8u* pSrcRefB,
  1103. Ipp32s srcStepB,
  1104. Ipp32s mcTypeB,
  1105. const Ipp16s* pSrcYData,
  1106. Ipp32s srcYDataStep,
  1107. Ipp8u* pDst,
  1108. Ipp32s dstStep,
  1109. Ipp32s roundControl))
  1110. IPPAPI(IppStatus, ippiMC8x4B_8u_C1, (
  1111. const Ipp8u* pSrcRefF,
  1112. Ipp32s srcStepF,
  1113. Ipp32s mcTypeF,
  1114. const Ipp8u* pSrcRefB,
  1115. Ipp32s srcStepB,
  1116. Ipp32s mcTypeB,
  1117. const Ipp16s* pSrcYData,
  1118. Ipp32s srcYDataStep,
  1119. Ipp8u* pDst,
  1120. Ipp32s dstStep,
  1121. Ipp32s roundControl))
  1122. IPPAPI(IppStatus, ippiMC4x8B_8u_C1, (
  1123. const Ipp8u* pSrcRefF,
  1124. Ipp32s srcStepF,
  1125. Ipp32s mcTypeF,
  1126. const Ipp8u* pSrcRefB,
  1127. Ipp32s srcStepB,
  1128. Ipp32s mcTypeB,
  1129. const Ipp16s* pSrcYData,
  1130. Ipp32s srcYDataStep,
  1131. Ipp8u* pDst,
  1132. Ipp32s dstStep,
  1133. Ipp32s roundControl))
  1134. IPPAPI(IppStatus, ippiMC4x4B_8u_C1, (
  1135. const Ipp8u* pSrcRefF,
  1136. Ipp32s srcStepF,
  1137. Ipp32s mcTypeF,
  1138. const Ipp8u* pSrcRefB,
  1139. Ipp32s srcStepB,
  1140. Ipp32s mcTypeB,
  1141. const Ipp16s* pSrcYData,
  1142. Ipp32s srcYDataStep,
  1143. Ipp8u* pDst,
  1144. Ipp32s dstStep,
  1145. Ipp32s roundControl))
  1146. IPPAPI(IppStatus, ippiMC2x4B_8u_C1, (
  1147. const Ipp8u* pSrcRefF,
  1148. Ipp32s srcStepF,
  1149. Ipp32s mcTypeF,
  1150. const Ipp8u* pSrcRefB,
  1151. Ipp32s srcStepB,
  1152. Ipp32s mcTypeB,
  1153. const Ipp16s* pSrcYData,
  1154. Ipp32s srcYDataStep,
  1155. Ipp8u* pDst,
  1156. Ipp32s dstStep,
  1157. Ipp32s roundControl))
  1158. IPPAPI(IppStatus, ippiMC4x2B_8u_C1, (
  1159. const Ipp8u* pSrcRefF,
  1160. Ipp32s srcStepF,
  1161. Ipp32s mcTypeF,
  1162. const Ipp8u* pSrcRefB,
  1163. Ipp32s srcStepB,
  1164. Ipp32s mcTypeB,
  1165. const Ipp16s* pSrcYData,
  1166. Ipp32s srcYDataStep,
  1167. Ipp8u* pDst,
  1168. Ipp32s dstStep,
  1169. Ipp32s roundControl))
  1170. IPPAPI(IppStatus, ippiMC2x2B_8u_C1, (
  1171. const Ipp8u* pSrcRefF,
  1172. Ipp32s srcStepF,
  1173. Ipp32s mcTypeF,
  1174. const Ipp8u* pSrcRefB,
  1175. Ipp32s srcStepB,
  1176. Ipp32s mcTypeB,
  1177. const Ipp16s* pSrcYData,
  1178. Ipp32s srcYDataStep,
  1179. Ipp8u* pDst,
  1180. Ipp32s dstStep,
  1181. Ipp32s roundControl))
  1182. /* ///////////////////////////////////////////////////////////////////////////
  1183. // Name:
  1184. // ippiMC16x4B_8u_C1
  1185. // ippiMC16x8BUV_8u_C1
  1186. //
  1187. // Purpose:
  1188. // Performs motion compensation for a bi-predicted UV block of
  1189. // the correspondent size
  1190. //
  1191. // Parameters:
  1192. // pSrcRefB Pointer to the forward reference block
  1193. // srcStepF Step in bytes, specifying the width of
  1194. // the aligned forward reference frame
  1195. // mcTypeF Forward motion compensation type, IPPVC_MC_APX
  1196. // pSrcRefB Pointer to the backward reference block
  1197. // srcStepB Step in bytes, specifying the width of
  1198. // the aligned backward reference frame
  1199. // mcTypeB Backward motion compensation type, IPPVC_MC_APX
  1200. // pSrcYData Pointer to the data obtained after inverse DCT
  1201. // srcYDataStep Step in bytes, specifying the width of
  1202. // the aligned data after inverse DCT
  1203. // pDst Pointer to the destination predicted block
  1204. // dstStep Step in bytes, specifying the width of
  1205. the aligned destination frame
  1206. // roundControl Type of rounding for half-pixel approximation;
  1207. // may be 0 or 1
  1208. //
  1209. // Returns:
  1210. // ippStsNoErr No error
  1211. // ippStsNullPtrErr One of the pointers is NULL
  1212. */
  1213. IPPAPI(IppStatus, ippiMC16x4B_8u_C1, (
  1214. const Ipp8u* pSrcRefF,
  1215. Ipp32s srcStepF,
  1216. Ipp32s mcTypeF,
  1217. const Ipp8u* pSrcRefB,
  1218. Ipp32s srcStepB,
  1219. Ipp32s mcTypeB,
  1220. const Ipp16s* pSrcYData,
  1221. Ipp32s srcYDataStep,
  1222. Ipp8u* pDst,
  1223. Ipp32s dstStep,
  1224. Ipp32s roundControl))
  1225. IPPAPI(IppStatus, ippiMC16x8BUV_8u_C1, (
  1226. const Ipp8u* pSrcRefF,
  1227. Ipp32s srcStepF,
  1228. Ipp32s mcTypeF,
  1229. const Ipp8u* pSrcRefB,
  1230. Ipp32s srcStepB,
  1231. Ipp32s mcTypeB,
  1232. const Ipp16s* pSrcYData,
  1233. Ipp32s srcYDataStep,
  1234. Ipp8u* pDst,
  1235. Ipp32s dstStep,
  1236. Ipp32s roundControl))
  1237. /* ///////////////////////////////////////////////////////////////////////////
  1238. // Name:
  1239. // ippiMC8x8_16s8u_P2C2R
  1240. // ippiMC8x4_16s8u_P2C2R
  1241. //
  1242. // Purpose:
  1243. // Performs motion compensation for UV block (as a part of
  1244. // chrominance part of NV12 plane) of the correspondent size.
  1245. //
  1246. // Parameters:
  1247. // pSrcRef Pointer to the reference block
  1248. // srcStep Step in bytes, specifying the width of
  1249. // the aligned reference frame
  1250. // pSrcU Pointer to the U data obtained after inverse DCT
  1251. // pSrcV Pointer to the V data obtained after inverse DCT
  1252. // srcUVStep Step in bytes, specifying the width of
  1253. // the aligned data after inverse DCT
  1254. // pDst Pointer to the destination predicted block
  1255. // dstStep Step in bytes, specifying the width of
  1256. // the aligned destination frame
  1257. // mcType Type of motion compensation, IPPVC_MC_APX
  1258. // roundControl Type of rounding for half-pixel approximation;
  1259. // may be 0 or 1
  1260. //
  1261. // pSrcRef and pDst - the pointer to the chrominance part of NV12 plane.
  1262. // 0 UV UV UV UV UV UV UV UV
  1263. // 1 UV UV UV UV ... UV
  1264. // ...
  1265. // 7 UV UV UV UV UV UV UV UV
  1266. //
  1267. // Returns:
  1268. // ippStsNoErr No error
  1269. // ippStsNullPtrErr One of the pointers is NULL
  1270. */
  1271. IPPAPI(IppStatus, ippiMC8x8_16s8u_P2C2R, (
  1272. const Ipp8u* pSrcRef,
  1273. Ipp32s srcRefStep,
  1274. const Ipp16s* pSrcU,
  1275. const Ipp16s* pSrcV,
  1276. Ipp32s srcUVStep,
  1277. Ipp8u* pDst,
  1278. Ipp32s dstStep,
  1279. Ipp32s mcType,
  1280. Ipp32s roundControl))
  1281. IPPAPI(IppStatus, ippiMC8x4_16s8u_P2C2R, (
  1282. const Ipp8u* pSrcRef,
  1283. Ipp32s srcRefStep,
  1284. const Ipp16s* pSrcU,
  1285. const Ipp16s* pSrcV,
  1286. Ipp32s srcUVStep,
  1287. Ipp8u* pDst,
  1288. Ipp32s dstStep,
  1289. Ipp32s mcType,
  1290. Ipp32s roundControl))
  1291. /* ///////////////////////////////////////////////////////////////////////////
  1292. // Name:
  1293. // ippiMC8x8B_16s8u_P2C2R
  1294. // ippiMC8x4B_16s8u_P2C2R
  1295. //
  1296. // Purpose:
  1297. // Performs motion compensation for a bi-predicted UV block (as a part of
  1298. // chrominance part of NV12 plane) of the correspondent size.
  1299. //
  1300. // Parameters:
  1301. // pSrcRefF Pointer to the forward reference block
  1302. // srcStepF Step in bytes, specifying the width of
  1303. // the aligned forward reference frame
  1304. // mcTypeF Forward motion compensation type, IPPVC_MC_APX
  1305. // pSrcRefB Pointer to the backward reference block
  1306. // srcStepB Step in bytes, specifying the width of
  1307. // the aligned backward reference frame
  1308. // mcTypeB Backward motion compensation type, IPPVC_MC_APX
  1309. // pSrcU Pointer to the U data obtained after inverse DCT
  1310. // pSrcV Pointer to the V data obtained after inverse DCT
  1311. // srcUVStep Step in bytes, specifying the width of
  1312. // the aligned data after inverse DCT
  1313. // pDst Pointer to the destination predicted block
  1314. // dstStep Step in bytes, specifying the width of
  1315. // the aligned destination frame
  1316. // roundControl Type of rounding for half-pixel approximation;
  1317. // may be 0 or 1
  1318. //
  1319. // pSrcRefF, pSrcRefB and pDst - the pointer to the chrominance part of NV12 plane.
  1320. // 0 UV UV UV UV UV UV UV UV
  1321. // 1 UV UV UV UV ... UV
  1322. // ...
  1323. // 7 UV UV UV UV UV UV UV UV
  1324. //
  1325. // Returns:
  1326. // ippStsNoErr No error
  1327. // ippStsNullPtrErr One of the pointers is NULL
  1328. */
  1329. IPPAPI(IppStatus, ippiMC8x8B_16s8u_P2C2R, (
  1330. const Ipp8u* pSrcRefF,
  1331. Ipp32s srcRefFStep,
  1332. Ipp32s mcTypeF,
  1333. const Ipp8u* pSrcRefB,
  1334. Ipp32s srcRefBStep,
  1335. Ipp32s mcTypeB,
  1336. const Ipp16s* pSrcU,
  1337. const Ipp16s* pSrcV,
  1338. Ipp32s srcUVStep,
  1339. Ipp8u* pDst,
  1340. Ipp32s dstStep,
  1341. Ipp32s roundControl))
  1342. IPPAPI(IppStatus, ippiMC8x4B_16s8u_P2C2R, (
  1343. const Ipp8u* pSrcRefF,
  1344. Ipp32s srcRefFStep,
  1345. Ipp32s mcTypeF,
  1346. const Ipp8u* pSrcRefB,
  1347. Ipp32s srcRefBStep,
  1348. Ipp32s mcTypeB,
  1349. const Ipp16s* pSrcU,
  1350. const Ipp16s* pSrcV,
  1351. Ipp32s srcUVStep,
  1352. Ipp8u* pDst,
  1353. Ipp32s dstStep,
  1354. Ipp32s roundControl))
  1355. /* ///////////////////////////////////////////////////////////////////////////
  1356. // MPEG-1 and MPEG-2 Video Encoding Functions
  1357. //////////////////////////////////////////////////////////////////////////// */
  1358. /* Motion Estimation and Compensation Functions */
  1359. /* ///////////////////////////////////////////////////////////////////////////
  1360. // Name:
  1361. // ippiGetDiff16x16_8u16s_C1
  1362. // ippiGetDiff16x8_8u16s_C1
  1363. // ippiGetDiff8x8_8u16s_C1
  1364. // ippiGetDiff8x16_8u16s_C1
  1365. // ippiGetDiff8x4_8u16s_C1
  1366. //
  1367. // Purpose:
  1368. // Evaluates the difference between current predicted and reference blocks
  1369. // of the specified size in accordance with the type of motion compensation.
  1370. //
  1371. // Parameters:
  1372. // pSrcCur Pointer to the current block
  1373. // srcCurStep Step in bytes of the current block
  1374. // pSrcRef Pointer to the reference block
  1375. // srcRefStep Step in bytes of the reference block
  1376. // pDstDiff Pointer to the destination block containing
  1377. // differences between current and reference blocks
  1378. // dstDiffStep Step in bytes through the destination block
  1379. // pDstPredictor Pointer to the block containing predictors
  1380. // dstPredictorStep Step in bytes through the predictor block
  1381. // mcType Type of the following motion compensation
  1382. // roundControl Type of rounding for half-pixel approximation;
  1383. // may be 0 or 1
  1384. //
  1385. // Returns:
  1386. // ippStsNoErr No error
  1387. // ippStsNullPtrErr One of the pointers is NULL
  1388. //
  1389. // Notes:
  1390. // These operations are inverse to that performed by correspondent motion
  1391. // compensation functions
  1392. */
  1393. IPPAPI(IppStatus, ippiGetDiff16x16_8u16s_C1,(
  1394. const Ipp8u* pSrcCur,
  1395. Ipp32s srcCurStep,
  1396. const Ipp8u* pSrcRef,
  1397. Ipp32s srcRefStep,
  1398. Ipp16s* pDstDiff,
  1399. Ipp32s dstDiffStep,
  1400. Ipp16s* pDstPredictor,
  1401. Ipp32s dstPredictorStep,
  1402. Ipp32s mcType,
  1403. Ipp32s roundControl))
  1404. IPPAPI(IppStatus, ippiGetDiff16x8_8u16s_C1, (
  1405. const Ipp8u* pSrcCur,
  1406. Ipp32s srcCurStep,
  1407. const Ipp8u* pSrcRef,
  1408. Ipp32s srcRefStep,
  1409. Ipp16s* pDstDiff,
  1410. Ipp32s dstDiffStep,
  1411. Ipp16s* pDstPredictor,
  1412. Ipp32s dstPredictorStep,
  1413. Ipp32s mcType,
  1414. Ipp32s roundControl))
  1415. IPPAPI(IppStatus, ippiGetDiff8x8_8u16s_C1, (
  1416. const Ipp8u* pSrcCur,
  1417. Ipp32s srcCurStep,
  1418. const Ipp8u* pSrcRef,
  1419. Ipp32s srcRefStep,
  1420. Ipp16s* pDstDiff,
  1421. Ipp32s dstDiffStep,
  1422. Ipp16s* pDstPredictor,
  1423. Ipp32s dstPredictorStep,
  1424. Ipp32s mcType,
  1425. Ipp32s roundControl))
  1426. IPPAPI(IppStatus, ippiGetDiff8x16_8u16s_C1, (
  1427. const Ipp8u* pSrcCur,
  1428. Ipp32s srcCurStep,
  1429. const Ipp8u* pSrcRef,
  1430. Ipp32s srcRefStep,
  1431. Ipp16s* pDstDiff,
  1432. Ipp32s dstDiffStep,
  1433. Ipp16s* pDstPredictor,
  1434. Ipp32s dstPredictorStep,
  1435. Ipp32s mcType,
  1436. Ipp32s roundControl))
  1437. IPPAPI(IppStatus, ippiGetDiff8x4_8u16s_C1, (
  1438. const Ipp8u* pSrcCur,
  1439. Ipp32s srcCurStep,
  1440. const Ipp8u* pSrcRef,
  1441. Ipp32s srcRefStep,
  1442. Ipp16s* pDstDiff,
  1443. Ipp32s dstDiffStep,
  1444. Ipp16s* pDstPredictor,
  1445. Ipp32s dstPredictorStep,
  1446. Ipp32s mcType,
  1447. Ipp32s roundControl))
  1448. /* Motion Estimation and Compensation Functions for NV12 chroma format */
  1449. /* ///////////////////////////////////////////////////////////////////////////
  1450. // Name:
  1451. // ippiGetDiff8x8_8u16s_C2P2
  1452. // ippiGetDiff8x4_8u16s_C2P2
  1453. //
  1454. // Purpose:
  1455. // Evaluates the difference between current predicted and reference blocks
  1456. // of the specified size in accordance with the type of motion compensation.
  1457. // Chroma is presented in NV12 format
  1458. //
  1459. // Parameters:
  1460. // pSrcCur Pointer to the current block
  1461. // srcCurStep Step in bytes of the current block
  1462. // pSrcRef Pointer to the reference block
  1463. // srcRefStep Step in bytes of the reference block
  1464. // pDstDiffU Pointer to the destination block containing
  1465. // differences between current and reference blocks U-plane
  1466. // dstDiffStepU Step in bytes through the destination block for U-plane
  1467. // pDstDiffV Pointer to the destination block containing
  1468. // differences between current and reference blocks V-plane
  1469. // dstDiffStepV Step in bytes through the destination block for V-plane
  1470. // mcType Type of the following motion compensation
  1471. // roundControl Type of rounding for half-pixel approximation;
  1472. // may be 0 or 1
  1473. //
  1474. // Returns:
  1475. // ippStsNoErr No error
  1476. // ippStsNullPtrErr One of the pointers is NULL
  1477. //
  1478. // Notes:
  1479. // These operations are inverse to that performed by correspondent motion
  1480. // compensation functions
  1481. */
  1482. IPPAPI(IppStatus, ippiGetDiff8x4_8u16s_C2P2,(const Ipp8u *pSrcCur,Ipp32s srcCurStep,
  1483. const Ipp8u *pSrcRef,Ipp32s srcRefStep,
  1484. Ipp16s *pDstDiffU,Ipp32s dstDiffStepU,
  1485. Ipp16s *pDstDiffV,Ipp32s dstDiffStepV,
  1486. Ipp32s mcType,Ipp32s roundControl))
  1487. IPPAPI(IppStatus, ippiGetDiff8x8_8u16s_C2P2,(const Ipp8u *pSrcCur,Ipp32s srcCurStep,
  1488. const Ipp8u *pSrcRef,Ipp32s srcRefStep,
  1489. Ipp16s *pDstDiffU,Ipp32s dstDiffStepU,
  1490. Ipp16s *pDstDiffV,Ipp32s dstDiffStepV,
  1491. Ipp32s mcType,Ipp32s roundControl))
  1492. /* ///////////////////////////////////////////////////////////////////////////
  1493. // Name:
  1494. // ippiGetDiff4x4_8u16s_C1
  1495. //
  1496. // Purpose:
  1497. // Evaluates the difference between current predicted and reference blocks
  1498. // of the specified size in accordance with the type of motion compensation.
  1499. //
  1500. // Parameters:
  1501. // pSrcCur Pointer to the current block
  1502. // srcCurStep Step in bytes of the current block
  1503. // pSrcRef Pointer to the reference block
  1504. // srcRefStep Step in bytes of the reference block
  1505. // pDstDiff Pointer to the destination block containing
  1506. // differences between current and reference blocks
  1507. // dstDiffStep Step in bytes through the destination block
  1508. // pDstPredictor Reserved parameter (must be 0).
  1509. // dstPredictorStep Reserved parameter (must be 0).
  1510. // mcType Reserved parameter (must be 0).
  1511. // roundControl Reserved parameter (must be 0).
  1512. //
  1513. // Returns:
  1514. // ippStsNoErr No error
  1515. // ippStsNullPtrErr One of the pointers is NULL
  1516. //
  1517. // Notes:
  1518. // These operations are inverse to that performed by correspondent motion
  1519. // compensation functions
  1520. */
  1521. IPPAPI( IppStatus, ippiGetDiff4x4_8u16s_C1,(
  1522. const Ipp8u* pSrcCur,
  1523. Ipp32s srcCurStep,
  1524. const Ipp8u* pSrcRef,
  1525. Ipp32s srcRefStep,
  1526. Ipp16s* pDstDiff,
  1527. Ipp32s dstDiffStep,
  1528. Ipp16s* pDstPredictor,
  1529. Ipp32s dstPredictorStep,
  1530. Ipp32s mcType,
  1531. Ipp32s roundControl))
  1532. /* ///////////////////////////////////////////////////////////////////////////
  1533. // Name:
  1534. // ippiGetDiff16x16B_8u16s_C1
  1535. //
  1536. // Purpose:
  1537. // Evaluates difference between current bi-predicted and mean of two
  1538. // reference blocks of the specified size in accordance with the type of
  1539. // motion compensation.
  1540. //
  1541. // Parameters:
  1542. // pSrcCur Pointer to the current block
  1543. // srcCurStep Step in bytes through the current block (stride1)
  1544. // pSrcRefF Pointer to the forward reference block
  1545. // srcRefStepF Step in bytes through the forward reference block
  1546. // (stride1)
  1547. // mcTypeF Forward motion compensation type
  1548. // pSrcRefB Pointer to the backward reference block
  1549. // srcRefStepB Step in bytes through the backward reference block
  1550. // (stride1)
  1551. // mcTypeB Backward motion compensation type
  1552. // pDstDiff Pointer to the destination block containing the
  1553. // differences between current and reference blocks
  1554. // dstDiffStep Step in bytes through the destination block
  1555. // roundControl Type of rounding for half-pixel approximation;
  1556. // may be 0 or 1
  1557. //
  1558. // Returns:
  1559. // ippStsNoErr No error
  1560. // ippStsNullPtrErr One of the pointers is NULL
  1561. //
  1562. // Notes:
  1563. // These operations are inverse to that performed by correspondent motion
  1564. // compensation functions
  1565. */
  1566. IPPAPI(IppStatus, ippiGetDiff16x16B_8u16s_C1, (
  1567. const Ipp8u* pSrcCur,
  1568. Ipp32s srcCurStep,
  1569. const Ipp8u* pSrcRefF,
  1570. Ipp32s srcRefStepF,
  1571. Ipp32s mcTypeF,
  1572. const Ipp8u* pSrcRefB,
  1573. Ipp32s srcRefStepB,
  1574. Ipp32s mcTypeB,
  1575. Ipp16s* pDstDiff,
  1576. Ipp32s dstDiffStep,
  1577. Ipp32s roundControl))
  1578. IPPAPI(IppStatus, ippiGetDiff16x8B_8u16s_C1, (
  1579. const Ipp8u* pSrcCur,
  1580. Ipp32s srcCurStep,
  1581. const Ipp8u* pSrcRefF,
  1582. Ipp32s srcRefStepF,
  1583. Ipp32s mcTypeF,
  1584. const Ipp8u* pSrcRefB,
  1585. Ipp32s srcRefStepB,
  1586. Ipp32s mcTypeB,
  1587. Ipp16s* pDstDiff,
  1588. Ipp32s dstDiffStep,
  1589. Ipp32s roundControl))
  1590. IPPAPI(IppStatus, ippiGetDiff8x8B_8u16s_C1, (
  1591. const Ipp8u* pSrcCur,
  1592. Ipp32s srcCurStep,
  1593. const Ipp8u* pSrcRefF,
  1594. Ipp32s srcRefStepF,
  1595. Ipp32s mcTypeF,
  1596. const Ipp8u* pSrcRefB,
  1597. Ipp32s srcRefStepB,
  1598. Ipp32s mcTypeB,
  1599. Ipp16s* pDstDiff,
  1600. Ipp32s dstDiffStep,
  1601. Ipp32s roundControl))
  1602. IPPAPI(IppStatus, ippiGetDiff8x16B_8u16s_C1, (
  1603. const Ipp8u* pSrcCur,
  1604. Ipp32s srcCurStep,
  1605. const Ipp8u* pSrcRefF,
  1606. Ipp32s srcRefStepF,
  1607. Ipp32s mcTypeF,
  1608. const Ipp8u* pSrcRefB,
  1609. Ipp32s srcRefStepB,
  1610. Ipp32s mcTypeB,
  1611. Ipp16s* pDstDiff,
  1612. Ipp32s dstDiffStep,
  1613. Ipp32s roundControl))
  1614. IPPAPI(IppStatus, ippiGetDiff8x4B_8u16s_C1, (
  1615. const Ipp8u* pSrcCur,
  1616. Ipp32s srcCurStep,
  1617. const Ipp8u* pSrcRefF,
  1618. Ipp32s srcRefStepF,
  1619. Ipp32s mcTypeF,
  1620. const Ipp8u* pSrcRefB,
  1621. Ipp32s srcRefStepB,
  1622. Ipp32s mcTypeB,
  1623. Ipp16s* pDstDiff,
  1624. Ipp32s dstDiffStep,
  1625. Ipp32s roundControl))
  1626. /* ///////////////////////////////////////////////////////////////////////////
  1627. // Name:
  1628. // ippiGetDiff8x8B_8u16s_C2P2
  1629. // ippiGetDiff8x4B_8u16s_C2P2
  1630. //
  1631. // Purpose:
  1632. // Evaluates difference between current bi-predicted and mean of two
  1633. // reference blocks of the specified size in accordance with the type of
  1634. // motion compensation.
  1635. // Chroma is presented in NV12 format
  1636. //
  1637. // Parameters:
  1638. // pSrcCur Pointer to the current block
  1639. // srcCurStep Step in bytes through the current block (stride1)
  1640. // pSrcRefF Pointer to the forward reference block
  1641. // srcRefStepF Step in bytes through the forward reference block
  1642. // (stride1)
  1643. // mcTypeF Forward motion compensation type
  1644. // pSrcRefB Pointer to the backward reference block
  1645. // srcRefStepB Step in bytes through the backward reference block
  1646. // (stride1)
  1647. // mcTypeB Backward motion compensation type
  1648. // pDstDiffU Pointer to the destination block containing the
  1649. // differences between current and reference blocks U plane
  1650. // dstDiffStepU Step in bytes through the destination block for U plane
  1651. // pDstDiffV Pointer to the destination block containing the
  1652. // differences between current and reference blocks V plane
  1653. // dstDiffStepV Step in bytes through the destination block for V plane
  1654. // roundControl Type of rounding for half-pixel approximation;
  1655. // may be 0 or 1
  1656. //
  1657. // Returns:
  1658. // ippStsNoErr No error
  1659. // ippStsNullPtrErr One of the pointers is NULL
  1660. //
  1661. // Notes:
  1662. // These operations are inverse to that performed by correspondent motion
  1663. // compensation functions
  1664. */
  1665. IPPAPI(IppStatus, ippiGetDiff8x4B_8u16s_C2P2, (const Ipp8u *pSrcCur,Ipp32s srcCurStep,
  1666. const Ipp8u *pSrcRefF,Ipp32s srcRefStepF,
  1667. Ipp32s mcTypeF,
  1668. const Ipp8u *pSrcRefB,Ipp32s srcRefStepB,
  1669. Ipp32s mcTypeB,
  1670. Ipp16s *pDstDiffU, Ipp32s dstDiffStepU,
  1671. Ipp16s *pDstDiffV, Ipp32s dstDiffStepV,
  1672. Ipp32s roundControl))
  1673. IPPAPI(IppStatus, ippiGetDiff8x8B_8u16s_C2P2, (const Ipp8u *pSrcCur, Ipp32s srcCurStep,
  1674. const Ipp8u *pSrcRefF,Ipp32s srcRefStepF,
  1675. Ipp32s mcTypeF,
  1676. const Ipp8u *pSrcRefB,Ipp32s srcRefStepB,
  1677. Ipp32s mcTypeB,
  1678. Ipp16s *pDstDiffU, Ipp32s dstDiffStepU,
  1679. Ipp16s *pDstDiffV, Ipp32s dstDiffStepV,
  1680. Ipp32s roundControl))
  1681. /* ///////////////////////////////////////////////////////////////////////////
  1682. // Name:
  1683. // ippiSAD16x16_8u32s
  1684. //
  1685. // Purpose:
  1686. // Evaluates the sum of absolute difference (SAD) between all elements of
  1687. // the current block and the corresponding elements of the reference block.
  1688. //
  1689. // Returns:
  1690. // ippStsNoErr No error
  1691. // ippStsNullPtrErr One of the pointers is NULL
  1692. // ippStsStepErr srcCurStep or srcRefStep is less than or equal to 0
  1693. //
  1694. // Parameters:
  1695. // pSrc Pointer to the current block
  1696. // srcStep Step in bytes through the current block
  1697. // pRef Pointer to the reference block
  1698. // refStep Step in bytes through the reference block
  1699. // mcType Type of motion compensation
  1700. // pSAD Pointer to the result
  1701. */
  1702. IPPAPI(IppStatus, ippiSAD16x16_8u32s, (
  1703. const Ipp8u* pSrc,
  1704. Ipp32s srcStep,
  1705. const Ipp8u* pRef,
  1706. Ipp32s refStep,
  1707. Ipp32s* pSAD,
  1708. Ipp32s mcType))
  1709. /* ///////////////////////////////////////////////////////////////////////////
  1710. // Name:
  1711. // ippiSAD4x4_8u32s
  1712. //
  1713. // Purpose:
  1714. // Evaluates the sum of absolute difference (SAD) between all elements of
  1715. // the current block and the corresponding elements of the reference block.
  1716. //
  1717. // Returns:
  1718. // ippStsNoErr No error
  1719. // ippStsNullPtrErr One of the pointers is NULL
  1720. // ippStsStepErr srcCurStep or srcRefStep is less than or equal to 0
  1721. //
  1722. // Parameters:
  1723. // pSrc Pointer to the current block
  1724. // srcStep Step in bytes through the current block
  1725. // pRef Pointer to the reference block
  1726. // refStep Step in bytes through the reference block
  1727. // mcType reserved and must be 0.
  1728. // pSAD Pointer to the result
  1729. */
  1730. IPPAPI(IppStatus, ippiSAD4x4_8u32s,(const Ipp8u* pSrc,
  1731. Ipp32s srcStep,
  1732. const Ipp8u* pRef,
  1733. Ipp32s refStep,
  1734. Ipp32s* pSAD,
  1735. Ipp32s mcType ))
  1736. /* ///////////////////////////////////////////////////////////////////////////
  1737. // Name:
  1738. // SAD16x16Blocks8x8_8u16u
  1739. //
  1740. // Purpose:
  1741. // Evaluates four partial sums of absolute differences
  1742. // between current and reference 16X16 blocks.
  1743. //
  1744. // Returns:
  1745. // ippStsNoErr No error
  1746. // ippStsNullPtrErr One of the pointers is NULL
  1747. //
  1748. // Parameters:
  1749. // pSrc Pointer to 16x16 block in the source plane.
  1750. // srcStep Pitch of the source plane (in bytes).
  1751. // pRef Pointer to 16x16 block in the reference plane.
  1752. // refStep Pitch of the reference plane (in bytes).
  1753. // pSAD Pointer to array of size 4 to store SAD values.
  1754. // mcType reserved and must be 0.
  1755. */
  1756. IPPAPI(IppStatus, ippiSAD16x16Blocks8x8_8u16u,(const Ipp8u* pSrc,
  1757. Ipp32s srcStep,
  1758. const Ipp8u* pRef,
  1759. Ipp32s refStep,
  1760. Ipp16u* pDstSAD,
  1761. Ipp32s mcType ))
  1762. /* ///////////////////////////////////////////////////////////////////////////
  1763. // Name:
  1764. // SAD16x16Blocks4x4_8u16u
  1765. //
  1766. // Purpose:
  1767. // Evaluates 16 partial sums of absolute differences
  1768. // between current and reference 16X16 blocks.
  1769. //
  1770. // Returns:
  1771. // ippStsNoErr No error
  1772. // ippStsNullPtrErr One of the pointers is NULL
  1773. //
  1774. // Parameters:
  1775. // pSrc Pointer to 16x16 block in the source plane.
  1776. // srcStep Pitch of the source plane (in bytes).
  1777. // pRef Pointer to 16x16 block in the reference plane.
  1778. // refStep Pitch of the reference plane (in bytes).
  1779. // pSAD Pointer to array of size 16 to store SAD values.
  1780. // mcType reserved and must be 0.
  1781. */
  1782. IPPAPI(IppStatus, ippiSAD16x16Blocks4x4_8u16u, (const Ipp8u* pSrc,
  1783. Ipp32s srcStep,
  1784. const Ipp8u* pRef,
  1785. Ipp32s refStep,
  1786. Ipp16u* pDstSAD,
  1787. Ipp32s mcType))
  1788. /* /////////////////////////////////////////////////////////////////////////////////////////////
  1789. // Name: ippiSATD16x16_8u32s_C1R
  1790. // Purpose: Evaluates sum of absolute transformed differences between
  1791. current and reference 16x16 blocks
  1792. // Returns:
  1793. //
  1794. // ippStsNoErr No error
  1795. // ippStsNullPtrErr At least one of the pointers is NULL
  1796. // Arguments:
  1797. //
  1798. // pSrcCur Pointer to the current block
  1799. // srcCurStep Width of the current plane
  1800. // pSrcRef Pointer to the reference block
  1801. // srcRefStep Width of the reference plane
  1802. // pDst Pointer to result
  1803. */
  1804. IPPAPI(IppStatus, ippiSATD16x16_8u32s_C1R, (
  1805. const Ipp8u *pSrcCur,
  1806. int srcCurStep,
  1807. const Ipp8u *pSrcRef,
  1808. int srcRefStep,
  1809. Ipp32s *pDst))
  1810. /* /////////////////////////////////////////////////////////////////////////////////////////////
  1811. // Name: ippiSATD16x8_8u32s_C1R
  1812. // Purpose: Evaluates sum of absolute transformed differences between
  1813. current and reference 16x8 blocks
  1814. // Returns:
  1815. //
  1816. // ippStsNoErr No error
  1817. // ippStsNullPtrErr At least one of the pointers is NULL
  1818. // Arguments:
  1819. //
  1820. // pSrcCur Pointer to the current block
  1821. // srcCurStep Width of the current plane
  1822. // pSrcRef Pointer to the reference block
  1823. // srcRefStep Width of the reference plane
  1824. // pDst Pointer to result
  1825. */
  1826. IPPAPI(IppStatus, ippiSATD16x8_8u32s_C1R, (
  1827. const Ipp8u *pSrcCur,
  1828. int srcCurStep,
  1829. const Ipp8u *pSrcRef,
  1830. int srcRefStep,
  1831. Ipp32s *pDst))
  1832. /* /////////////////////////////////////////////////////////////////////////////////////////////
  1833. // Name: ippiSATD8x16_8u32s_C1R
  1834. // Purpose: Evaluates sum of absolute transformed differences between
  1835. current and reference 8x16 blocks
  1836. // Returns:
  1837. //
  1838. // ippStsNoErr No error
  1839. // ippStsNullPtrErr At least one of the pointers is NULL
  1840. // Arguments:
  1841. //
  1842. // pSrcCur Pointer to the current block
  1843. // srcCurStep Width of the current plane
  1844. // pSrcRef Pointer to the reference block
  1845. // srcRefStep Width of the reference plane
  1846. // pDst Pointer to result
  1847. */
  1848. IPPAPI(IppStatus, ippiSATD8x16_8u32s_C1R, (
  1849. const Ipp8u *pSrcCur,
  1850. int srcCurStep,
  1851. const Ipp8u *pSrcRef,
  1852. int srcRefStep,
  1853. Ipp32s *pDst))
  1854. /* /////////////////////////////////////////////////////////////////////////////////////////////
  1855. // Name: ippiSATD8x8_8u32s_C1R
  1856. // Purpose: Evaluates sum of absolute transformed differences between
  1857. current and reference 8x8 blocks
  1858. // Returns:
  1859. //
  1860. // ippStsNoErr No error
  1861. // ippStsNullPtrErr At least one of the pointers is NULL
  1862. // Arguments:
  1863. //
  1864. // pSrcCur Pointer to the current block
  1865. // srcCurStep Width of the current plane
  1866. // pSrcRef Pointer to the reference block
  1867. // srcRefStep Width of the reference plane
  1868. // pDst Pointer to result
  1869. */
  1870. IPPAPI(IppStatus, ippiSATD8x8_8u32s_C1R, (
  1871. const Ipp8u *pSrcCur,
  1872. int srcCurStep,
  1873. const Ipp8u *pSrcRef,
  1874. int srcRefStep,
  1875. Ipp32s *pDst))
  1876. /* /////////////////////////////////////////////////////////////////////////////////////////////
  1877. // Name: ippiSATD8x4_8u32s_C1R
  1878. // Purpose: Evaluates sum of absolute transformed differences between
  1879. current and reference 8x4 blocks
  1880. // Returns:
  1881. //
  1882. // ippStsNoErr No error
  1883. // ippStsNullPtrErr At least one of the pointers is NULL
  1884. // Arguments:
  1885. //
  1886. // pSrcCur Pointer to the current block
  1887. // srcCurStep Width of the current plane
  1888. // pSrcRef Pointer to the reference block
  1889. // srcRefStep Width of the reference plane
  1890. // pDst Pointer to result
  1891. */
  1892. IPPAPI(IppStatus, ippiSATD8x4_8u32s_C1R, (
  1893. const Ipp8u *pSrcCur,
  1894. int srcCurStep,
  1895. const Ipp8u *pSrcRef,
  1896. int srcRefStep,
  1897. Ipp32s *pDst))
  1898. /* /////////////////////////////////////////////////////////////////////////////////////////////
  1899. // Name: ippiSATD4x8_8u32s_C1R
  1900. // Purpose: Evaluates sum of absolute transformed differences between
  1901. current and reference 4x8 blocks
  1902. // Returns:
  1903. //
  1904. // ippStsNoErr No error
  1905. // ippStsNullPtrErr At least one of the pointers is NULL
  1906. // Arguments:
  1907. //
  1908. // pSrcCur Pointer to the current block
  1909. // srcCurStep Width of the current plane
  1910. // pSrcRef Pointer to the reference block
  1911. // srcRefStep Width of the reference plane
  1912. // pDst Pointer to result
  1913. */
  1914. IPPAPI(IppStatus, ippiSATD4x8_8u32s_C1R, (
  1915. const Ipp8u *pSrcCur,
  1916. int srcCurStep,
  1917. const Ipp8u *pSrcRef,
  1918. int srcRefStep,
  1919. Ipp32s *pDst))
  1920. /* /////////////////////////////////////////////////////////////////////////////////////////////
  1921. // Name: ippiSATD4x4_8u32s_C1R
  1922. // Purpose: Evaluates sum of absolute transformed differences between
  1923. current and reference 4x4 blocks
  1924. // Returns:
  1925. //
  1926. // ippStsNoErr No error
  1927. // ippStsNullPtrErr At least one of the pointers is NULL
  1928. // Arguments:
  1929. //
  1930. // pSrcCur Pointer to the current block
  1931. // srcCurStep Width of the current plane
  1932. // pSrcRef Pointer to the reference block
  1933. // srcRefStep Width of the reference plane
  1934. // pDst Pointer to result
  1935. */
  1936. IPPAPI(IppStatus, ippiSATD4x4_8u32s_C1R, (
  1937. const Ipp8u *pSrcCur,
  1938. int srcCurStep,
  1939. const Ipp8u *pSrcRef,
  1940. int srcRefStep,
  1941. Ipp32s *pDst))
  1942. /* /////////////////////////////////////////////////////////////////////////////////////////////
  1943. // Name: ippiSAT8x8D_8u32s_C1R
  1944. // Purpose: Evaluates sum of absolute transformed differences between
  1945. current and reference 8x8 blocks
  1946. // Returns:
  1947. //
  1948. // ippStsNoErr No error
  1949. // ippStsNullPtrErr At least one of the pointers is NULL
  1950. // Arguments:
  1951. //
  1952. // pSrcCur Pointer to the current 8x8 block
  1953. // srcCurStep Width of the current plane
  1954. // pSrcRef Pointer to the reference 8x8 block
  1955. // srcRefStep Width of the reference plane
  1956. // pDst Pointer to result
  1957. */
  1958. IPPAPI(IppStatus, ippiSAT8x8D_8u32s_C1R, (
  1959. const Ipp8u* pSrcCur,
  1960. int srcCurStep,
  1961. const Ipp8u* pSrcRef,
  1962. int srcRefStep,
  1963. Ipp32s* pDst))
  1964. /* /////////////////////////////////////////////////////////////////////////////////////////////
  1965. // Name: ippiSAT8x8D_16u32s_C1R
  1966. // Purpose: Evaluates sum of absolute transformed differences between
  1967. current and reference 8x8 blocks
  1968. // Returns:
  1969. //
  1970. // ippStsNoErr No error
  1971. // ippStsNullPtrErr At least one of the pointers is NULL
  1972. // Arguments:
  1973. //
  1974. // pSrcCur Pointer to the current 8x8 block
  1975. // srcCurStep Width of the current plane
  1976. // pSrcRef Pointer to the reference 8x8 block
  1977. // srcRefStep Width of the reference plane
  1978. // pDst Pointer to result
  1979. */
  1980. IPPAPI(IppStatus, ippiSAT8x8D_16u32s_C1R, (
  1981. const Ipp16u* pSrcCur,
  1982. int srcCurStep,
  1983. const Ipp16u* pSrcRef,
  1984. int srcRefStep,
  1985. Ipp32s* pDst))
  1986. /* ///////////////////////////////////////////////////////////////////////////
  1987. // Name:
  1988. // ippiSqrDiff16x16_8u32s
  1989. //
  1990. // Purpose:
  1991. // Evaluates the sum of square differences between all the elements of
  1992. // the current block and correspondent elements of the reference block.
  1993. //
  1994. // Parameters:
  1995. // pSrc Pointer to the current block
  1996. // srcStep Step in bytes through the current block
  1997. // pRef Pointer to the reference block
  1998. // refStep Step in bytes through the reference block
  1999. // mcType Type of motion compensation
  2000. // pSqrDiff Pointer to the result
  2001. //
  2002. // Returns:
  2003. // ippStsNoErr No error
  2004. // ippStsNullPtrErr One of the pointers is NULL
  2005. // ippStsStepErr srcCurStep or srcRefStep is less than or equal to 0
  2006. */
  2007. IPPAPI(IppStatus, ippiSqrDiff16x16_8u32s, (
  2008. const Ipp8u* pSrc,
  2009. Ipp32s srcStep,
  2010. const Ipp8u* pRef,
  2011. Ipp32s refStep,
  2012. Ipp32s mcType,
  2013. Ipp32s* pSqrDiff))
  2014. /* ///////////////////////////////////////////////////////////////////////////
  2015. // Name:
  2016. // ippiSqrDiff16x16B_8u32s
  2017. //
  2018. // Purpose:
  2019. // Evaluates the sum of square differences between all the elements of
  2020. // the current block and the mean of correspondent elements of
  2021. // two reference blocks.
  2022. //
  2023. // Parameters:
  2024. // pSrc Pointer to the current block
  2025. // srcStep Step in bytes through the current block
  2026. // pRefF Pointer to the forward reference block
  2027. // refStepF Step in bytes through the forward reference block
  2028. // pRefB Pointer to the backward reference block
  2029. // refStepB Step in bytes through the backward reference block
  2030. // mcTypeF Forward motion compensation type
  2031. // mcTypeB Backward motion compensation type
  2032. // pSqrDiff Pointer to the result
  2033. //
  2034. // Returns:
  2035. // ippStsNoErr No error
  2036. // ippStsNullPtrErr One of the pointers is NULL
  2037. // ippStsStepErr one of step values is less than or equal to 0
  2038. */
  2039. IPPAPI(IppStatus, ippiSqrDiff16x16B_8u32s, (
  2040. const Ipp8u* pSrc,
  2041. Ipp32s srcStep,
  2042. const Ipp8u* pRefF,
  2043. Ipp32s refStepF,
  2044. Ipp32s mcTypeF,
  2045. const Ipp8u* pRefB,
  2046. Ipp32s refStepB,
  2047. Ipp32s mcTypeB,
  2048. Ipp32s* pSqrDiff))
  2049. /* ///////////////////////////////////////////////////////////////////////////
  2050. // Name:
  2051. // ippiVariance16x16_8u32s
  2052. //
  2053. // Purpose:
  2054. // Evaluates the variance of the current block
  2055. //
  2056. // Parameters:
  2057. // pSrc Pointer to the current block
  2058. // srcStep Step through the current block
  2059. // pVar Pointer to the variance
  2060. //
  2061. // Returns:
  2062. // ippStsNoErr No error
  2063. // ippStsNullPtrErr pSrc is NULL
  2064. // ippStsStepErr srcStep is less than or equal to 0
  2065. */
  2066. IPPAPI(IppStatus, ippiVariance16x16_8u32s, (
  2067. const Ipp8u* pSrc,
  2068. Ipp32s srcStep,
  2069. Ipp32s* pVar))
  2070. /* ///////////////////////////////////////////////////////////////////////////
  2071. // Name:
  2072. // ippiVarSum8x8_8u32s
  2073. //
  2074. // Purpose:
  2075. // Evaluates the variance and sum of 8x8 block of unsigned char values
  2076. //
  2077. // Parameters:
  2078. // pSrc Pointer to the source block
  2079. // srcStep Step through the source block (stride1)
  2080. // pVar Pointer to the variance
  2081. // pSum Pointer to the sum value
  2082. //
  2083. // Returns:
  2084. // ippStsNoErr No error
  2085. // ippStsNullPtrErr pSrc is NULL
  2086. */
  2087. IPPAPI(IppStatus, ippiVarSum8x8_8u32s_C1R, (
  2088. const Ipp8u* pSrc,
  2089. Ipp32s srcStep,
  2090. Ipp32s* pVar,
  2091. Ipp32s* pSum))
  2092. /* ///////////////////////////////////////////////////////////////////////////
  2093. // Name:
  2094. // ippiVarSum8x8_16s32s
  2095. //
  2096. // Purpose:
  2097. // Evaluates the variance and sum of 8x8 block of short integer values
  2098. //
  2099. // Parameters:
  2100. // pSrc Pointer to the source block
  2101. // srcStep Step through the source block (stride1)
  2102. // pVar Pointer to the variance
  2103. // pSum Pointer to the sum value
  2104. //
  2105. // Returns:
  2106. // ippStsNoErr No error
  2107. // ippStsNullPtrErr pSrc is NULL
  2108. */
  2109. IPPAPI(IppStatus, ippiVarSum8x8_16s32s_C1R, (
  2110. const Ipp16s* pSrc,
  2111. Ipp32s srcStep,
  2112. Ipp32s* pVar,
  2113. Ipp32s* pSum))
  2114. /* ///////////////////////////////////////////////////////////////////////////
  2115. // Name:
  2116. // ippiVarMean8x8_8u32s
  2117. //
  2118. // Purpose:
  2119. // Evaluates the Variance and mean of 8x8 block of unsigned char values
  2120. //
  2121. // Parameters:
  2122. // pSrc Pointer to the source block
  2123. // srcStep Step through the source block (stride1)
  2124. // pVar Pointer to the variance
  2125. // pMean Pointer to the mean value
  2126. //
  2127. // Returns:
  2128. // ippStsNoErr No error
  2129. // ippStsNullPtrErr pSrc is NULL
  2130. */
  2131. IPPAPI(IppStatus, ippiVarMean8x8_8u32s_C1R, (
  2132. const Ipp8u* pSrc,
  2133. Ipp32s srcStep,
  2134. Ipp32s* pVar,
  2135. Ipp32s* pMean))
  2136. /* ///////////////////////////////////////////////////////////////////////////
  2137. // Name:
  2138. // ippiVarMean8x8_16s32s
  2139. //
  2140. // Purpose:
  2141. // Evaluates the variance and mean of 8x8 block of short integer values
  2142. //
  2143. // Parameters:
  2144. // pSrc Pointer to the source block
  2145. // srcStep Step through the source block (stride1)
  2146. // pVar Pointer to the variance
  2147. // pMean Pointer to the mean value
  2148. //
  2149. // Returns:
  2150. // ippStsNoErr No error
  2151. // ippStsNullPtrErr pSrc is NULL
  2152. */
  2153. IPPAPI(IppStatus, ippiVarMean8x8_16s32s_C1R, (
  2154. const Ipp16s* pSrc,
  2155. Ipp32s srcStep,
  2156. Ipp32s* pVar,
  2157. Ipp32s* pMean))
  2158. /* ///////////////////////////////////////////////////////////////////////////
  2159. // Name:
  2160. // ippiEdgesDetect16x16_8u_C1R
  2161. // ippiEdgesDetect16x16_16u_C1R
  2162. //
  2163. // Purpose:
  2164. // This function detects edges inside 16x16 block:
  2165. // finds pair of neighboring (horizontal and vertical) elements with
  2166. // difference is greater than EdgePelDifference.
  2167. // In the case of number of pairs is greater than EdgePelCount,
  2168. // edges are detected and flag (* pRes) is set to 1.
  2169. // Otherwise, edges aren't detected ((* pRes) is set to 0)
  2170. //
  2171. //
  2172. // Parameters:
  2173. // pSrc Pointer to 16x16 block in current plan
  2174. // srcStep Step of the current plan, specifying width of the plane in bytes.
  2175. // EdgePelDifference The value for estimation of difference between neighboring elements.
  2176. // EdgePelCount The value for estimation of number of pairs with "big difference"
  2177. // pRes Pointers to output value. (*pRes) is equal 1 in
  2178. // the case of edges are detected and it is equal
  2179. // 0 in the case of edges aren't detected. I
  2180. //
  2181. //
  2182. // Returns:
  2183. // ippStsNoErr No error
  2184. // ippStsNullPtrErr one of the input pointers is NULL
  2185. */
  2186. IPPAPI(IppStatus, ippiEdgesDetect16x16_8u_C1R, (
  2187. const Ipp8u *pSrc,
  2188. Ipp32u srcStep,
  2189. Ipp8u EdgePelDifference,
  2190. Ipp8u EdgePelCount,
  2191. Ipp8u *pRes
  2192. ))
  2193. IPPAPI(IppStatus, ippiEdgesDetect16x16_16u_C1R, (
  2194. const Ipp16u* pSrc,
  2195. Ipp32s srcStep,
  2196. Ipp32s EdgePelDifference,
  2197. Ipp32s EdgePelCount,
  2198. Ipp32s* pRes))
  2199. /* ///////////////////////////////////////////////////////////////////////////
  2200. // Name:
  2201. // ippiVarMeanDiff16x16_8u32s_C1R
  2202. //
  2203. // Purpose:
  2204. // Evaluates the variances and means of four 8x8 blocks containing
  2205. // differences between two 16x16 blocks
  2206. //
  2207. // Parameters:
  2208. // pSrc Pointer to the current block 16x16
  2209. // srcStep Step in bytes through the current block
  2210. // pRef Pointer to the reference block 16x16
  2211. // refStep Step in bytes through the reference block
  2212. // pSrcSum Pointer to the sum of pixel values for the current block
  2213. // pVar Pointer to four element array that contains the variances
  2214. // pMean Pointer to four element array that contains the Mean values
  2215. // mcType Type of motion compensation
  2216. //
  2217. // Returns:
  2218. // ippStsNoErr No error
  2219. // ippStsNullPtrErr one of the input pointers is NULL
  2220. */
  2221. IPPAPI(IppStatus, ippiVarMeanDiff16x16_8u32s_C1R, (
  2222. const Ipp8u* pSrc,
  2223. Ipp32s srcStep,
  2224. const Ipp8u* pRef,
  2225. Ipp32s refStep,
  2226. Ipp32s* pSrcSum,
  2227. Ipp32s* pVar,
  2228. Ipp32s* pMean,
  2229. Ipp32s mcType))
  2230. /* ///////////////////////////////////////////////////////////////////////////
  2231. // Name:
  2232. // ippiVarMeanDiff16x8_8u32s_C1R
  2233. //
  2234. // Purpose:
  2235. // Evaluates the variances and means of four 8x8 blocks containing
  2236. // differences between two 16x8 blocks
  2237. //
  2238. // Parameters:
  2239. // pSrc Pointer to the current block 16x16
  2240. // srcStep Step in bytes through the current block
  2241. // pRef Pointer to the reference block 16x16
  2242. // refStep Step in bytes through the reference block
  2243. // pSrcSum Pointer to the sum of pixel values for the current block
  2244. // pVar Pointer to four element array that contains the variances
  2245. // pMean Pointer to four element array that contains the Mean values
  2246. // mcType Type of motion compensation
  2247. //
  2248. // Returns:
  2249. // ippStsNoErr No error
  2250. // ippStsNullPtrErr one of the input pointers is NULL
  2251. */
  2252. IPPAPI(IppStatus, ippiVarMeanDiff16x8_8u32s_C1R, (
  2253. const Ipp8u* pSrc,
  2254. Ipp32s srcStep,
  2255. const Ipp8u* pRef,
  2256. Ipp32s refStep,
  2257. Ipp32s* pSrcSum,
  2258. Ipp32s* pVar,
  2259. Ipp32s* pMean,
  2260. Ipp32s mcType))
  2261. /* ///////////////////////////////////////////////////////////////////////////
  2262. // Name:
  2263. // ippiSumsDiff16x16Blocks4x4_8u16s_C1, ippiSumsDiff16x16Blocks4x4_8u16s_C1
  2264. //
  2265. // Purpose:
  2266. // These functions evaluates difference between current and reference 4x4 blocks
  2267. // and calculates sums of 4x4 residual blocks elements
  2268. // Parameters:
  2269. // pSrc Pointer block in current plane
  2270. // srcStep Step of the current plane, specifying width of the plane in bytes.
  2271. // pPred Pointer to reference block
  2272. // predStep Step of the reference plane, specifying width of the plane in bytes.
  2273. // pDiff If it isn't zero, pointer to array that contains a sequence of 4x4
  2274. // residual blocks. The array's filled by function if pDiff isn't null.
  2275. // pSums Pointer to array that contains sums of 4x4 difference blocks coefficients.
  2276. // The array's filled by function.
  2277. //
  2278. // Returns:
  2279. // ippStsNoErr No error
  2280. // ippStsNullPtrErr one of the input pointers is NULL
  2281. */
  2282. IPPAPI(IppStatus, ippiSumsDiff16x16Blocks4x4_8u16s_C1,
  2283. (
  2284. const Ipp8u* pSrc,
  2285. Ipp32s srcStep,
  2286. const Ipp8u* pPred,
  2287. Ipp32s predStep,
  2288. Ipp16s* pSums,
  2289. Ipp16s* pDiff
  2290. ))
  2291. IPPAPI(IppStatus, ippiSumsDiff8x8Blocks4x4_8u16s_C1,
  2292. (
  2293. const Ipp8u* pSrc,
  2294. Ipp32s srcStep,
  2295. const Ipp8u* pPred,
  2296. Ipp32s predStep,
  2297. Ipp16s* pSums,
  2298. Ipp16s* pDiff
  2299. ))
  2300. /* ///////////////////////////////////////////////////////////////////////////
  2301. // Name:
  2302. // ippiSumsDiff8x8Blocks4x4_8u16s_C2P2
  2303. //
  2304. // Purpose:
  2305. // These functions evaluates difference between current and reference 4x4 blocks and
  2306. // calculates sums of 4x4 residual blocks elements. Clone of ippiSumsDiff8x8Blocks4x4_8u16s_C1,
  2307. // but source image is chominance part of NV12 plane.
  2308. // NV12 Plane
  2309. // YY YY YY YY
  2310. // YY YY YY YY
  2311. // UV UV UV UV - chominance part of NV12 plane.
  2312. // Parameters:
  2313. // pSrcUV the pointer to the source block ( chrominance part of NV12 plane).
  2314. // 0...UV UV UV UV UV UV UV UV
  2315. // 1...UV UV UV UV ...
  2316. // ...
  2317. // 7...UV UV UV UV UV UV UV UV
  2318. // srcStep - Step of the current source block, specifying width of the plane in bytes.negative step works
  2319. // pPredU - Pointer to reference U block
  2320. // pPredPitchU - Step of the reference U plane, specifying width of the plane in bytes.
  2321. // pPredV - Pointer to reference V block
  2322. // pPredPitchV - Step of the reference V plane, specifying width of the plane in bytes.
  2323. // pDiffU - If it isn't zero, pointer to array that contains a sequence of 4x4 residual blocks. The array's filled by function if pDifUf isn't null.
  2324. // pDCU - Pointer to array that contains sums of 4x4 difference blocks coefficients. The array's filled by function.
  2325. // pDiffV - If it isn't zero, pointer to array that contains a sequence of 4x4 residual blocks. The array's filled by function if pDifUf isn't null.
  2326. // pDCV - Pointer to array that contains sums of 4x4 difference blocks coefficients. The array's filled by function.
  2327. // Returns:
  2328. // ippStsNoErr No error
  2329. // ippStsNullPtrErr one of the input pointers is NULL
  2330. */
  2331. IPPAPI(IppStatus, ippiSumsDiff8x8Blocks4x4_8u16s_C2P2,
  2332. (
  2333. const Ipp8u* pSrcUV,
  2334. Ipp32s srcStep,
  2335. const Ipp8u* pPredU,
  2336. Ipp32s predStepU,
  2337. const Ipp8u* pPredV,
  2338. Ipp32s predStepV,
  2339. Ipp16s* pSumsU,
  2340. Ipp16s* pDiffU,
  2341. Ipp16s* pSumsV,
  2342. Ipp16s* pDiffV
  2343. ))
  2344. /* Quantization Functions */
  2345. /* ///////////////////////////////////////////////////////////////////////////
  2346. // Name:
  2347. // ippiQuantIntra_MPEG2_16s_C1I
  2348. //
  2349. // Purpose:
  2350. // Performs quantization on DCT coefficients for intra block in-place with
  2351. // specified quantization matrix according to the MPEG-2 standard.
  2352. // Returns the number of last non-zero coefficient for
  2353. // future considerations. If pointer to inverse quantization matrix is NULL,
  2354. // the default matrix is used
  2355. //
  2356. // Parameters:
  2357. // pSrcDst Pointer to the block of DCT coefficients
  2358. // QP Quantizer
  2359. // pQPMatrix Pointer to the matrix of inverted quantization
  2360. // coefficients (floating point)
  2361. // pCount Pointer to the position of the last non-zero coefficient
  2362. //
  2363. // Returns:
  2364. // ippStsNoErr No error
  2365. // ippStsNullPtrErr pSrcDst is NULL
  2366. // ippStsDivByZeroErr QP is equal to 0
  2367. */
  2368. IPPAPI(IppStatus, ippiQuantIntra_MPEG2_16s_C1I, (
  2369. Ipp16s* pSrcDst,
  2370. Ipp32s QP,
  2371. const Ipp32f* pQPMatrix,
  2372. Ipp32s* pCount))
  2373. /* ///////////////////////////////////////////////////////////////////////////
  2374. // Name:
  2375. // ippiQuant_MPEG2_16s_C1I
  2376. //
  2377. // Purpose:
  2378. // Performs quantization on DCT coefficients for non-intra block
  2379. // in-place with specified quantization matrix according to the
  2380. // MPEG-2 standard. Returns the number of last non-zero coefficient for
  2381. // future considerations. If pointer to inverse quantization matrix is NULL,
  2382. // the default matrix is used
  2383. //
  2384. // Parameters:
  2385. // pSrcDst Pointer to the block of DCT coefficients
  2386. // QP Quantizer
  2387. // pQPMatrix Pointer to the matrix of inverted quantization
  2388. // coefficients (floating point)
  2389. // pCount Pointer to the position of the last non-zero coefficient
  2390. //
  2391. // Returns:
  2392. // ippStsNoErr No error
  2393. // ippStsNullPtrErr pSrcDst is NULL
  2394. // ippStsDivByZeroErr QP is equal to 0
  2395. */
  2396. IPPAPI(IppStatus, ippiQuant_MPEG2_16s_C1I, (
  2397. Ipp16s* pSrcDst,
  2398. Ipp32s QP,
  2399. const Ipp32f* pQPMatrix,
  2400. Ipp32s* pCount))
  2401. /* Huffman Encoding Functions */
  2402. /* ///////////////////////////////////////////////////////////////////////////
  2403. // Name:
  2404. // ippiCreateRLEncodeTable
  2405. //
  2406. // Purpose:
  2407. // Creates Run-Level Encode Table
  2408. //
  2409. // Parameters:
  2410. // pSrcTable Pointer to the source table
  2411. // ppDstSpec Double pointer to the destination table
  2412. //
  2413. // Returns:
  2414. // ippStsNoErr No error
  2415. */
  2416. IPPAPI(IppStatus, ippiCreateRLEncodeTable, (
  2417. const Ipp32s* pSrcTable,
  2418. IppVCHuffmanSpec_32s** ppDstSpec))
  2419. /* ///////////////////////////////////////////////////////////////////////////
  2420. // Name:
  2421. // ippiPutIntraBlock
  2422. //
  2423. // Purpose:
  2424. // Encodes, rearranges and puts intra block into bitstream
  2425. //
  2426. // Parameters:
  2427. // ppBitStream Double pointer to the current position in the bitstream.
  2428. // pOffset Pointer to offset between the bit pointed by pBitStream and
  2429. // the start of the code
  2430. // pSrcBlock Pointer to the block
  2431. // pDCPred Pointer to the value to be added to the DC coefficient
  2432. // pDCTable Pointer to the table with codes for DC coefficient,
  2433. // that is the first of the DCT coefficients
  2434. // pACTable Pointer to the table with Run-Level codes for
  2435. // AC coefficients, that is all DCT coefficients but the first
  2436. // pScanMatrix Pointer to the scanning matrix
  2437. // EOBLen Length of the block end code
  2438. // EOBCode Value of the block end code
  2439. // count Number of the last non-zero coefficient
  2440. //
  2441. // Returns:
  2442. // ippStsNoErr No error
  2443. */
  2444. IPPAPI(IppStatus, ippiPutIntraBlock, (
  2445. Ipp32u** ppBitStream,
  2446. int* pOffset,
  2447. Ipp16s* pSrcBlock,
  2448. Ipp32s* pDCPred,
  2449. IppVCHuffmanSpec_32u* pDCTable,
  2450. IppVCHuffmanSpec_32s* pACTable,
  2451. Ipp32s* pScanMatrix,
  2452. Ipp32s EOBLen,
  2453. Ipp32s EOBCode,
  2454. Ipp32s count))
  2455. /* ///////////////////////////////////////////////////////////////////////////
  2456. // Name:
  2457. // ippiPutNonIntraBlock
  2458. // Purpose:
  2459. // Encodes, rearranges and puts non-intra block into bitstream
  2460. //
  2461. // Parameters:
  2462. // ppBitStream Double pointer to the current position in the bitstream.
  2463. // pOffset Pointer to offset between the bit pointed by pBitStream and
  2464. // the start of the code
  2465. // pSrcBlock Pointer to the block
  2466. // pACTable Pointer to the table with Run-Level codes for
  2467. // AC coefficients, that is all DCT coefficients but the first
  2468. // pScanMatrix Pointer to the scanning matrix
  2469. // EOBLen Length of the block end code
  2470. // EOBCode Value of the block end code
  2471. // count Number of the last non-zero coefficient
  2472. //
  2473. // Returns:
  2474. // ippStsNoErr No error
  2475. */
  2476. IPPAPI(IppStatus, ippiPutNonIntraBlock, (
  2477. Ipp32u** pBitStream,
  2478. int* pOffset,
  2479. Ipp16s* pSrcBlock,
  2480. IppVCHuffmanSpec_32s* pACTable,
  2481. Ipp32s* pScanMatrix,
  2482. Ipp32s EOBLen,
  2483. Ipp32s EOBCode,
  2484. Ipp32s count))
  2485. /* ///////////////////////////////////////////////////////////////////////////
  2486. // Video Data Decoding Functions for DV
  2487. //////////////////////////////////////////////////////////////////////////// */
  2488. /* ///////////////////////////////////////////////////////////////////////////
  2489. // Name:
  2490. // ippiInitAllocHuffmanTable_DV_32u
  2491. //
  2492. // Purpose:
  2493. // Allocates memory and initializes the table with Run-Level codes for
  2494. // DCT coefficients
  2495. //
  2496. // Parameters:
  2497. // pSrcTable1 Pointer to the source table 1
  2498. // pSrcTable2 Pointer to the source table 2
  2499. // ppHuffTable Double pointer to the destination decoding table
  2500. //
  2501. // Returns:
  2502. // ippStsNoErr No error
  2503. // ippStsMemAllocErr No memory is allocated.
  2504. // ippStsNullPtrErr One of the pointers is NULL
  2505. */
  2506. IPPAPI(IppStatus, ippiInitAllocHuffmanTable_DV_32u, (
  2507. Ipp32s* pSrcTable1,
  2508. Ipp32s* pSrcTable2,
  2509. Ipp32u** ppHuffTable))
  2510. /* ///////////////////////////////////////////////////////////////////////////
  2511. // Name:
  2512. // ippiFreeHuffmanTable_DV_32u
  2513. //
  2514. // Purpose:
  2515. // Frees the memory allocated for the VLC table
  2516. //
  2517. // Parameters:
  2518. // pHuffTable Pointer to the decoding table
  2519. //
  2520. // Returns:
  2521. // ippStsNoErr No error
  2522. // ippStsNullPtrErr pHuffTable is NULL
  2523. */
  2524. IPPAPI(IppStatus, ippiFreeHuffmanTable_DV_32u, (Ipp32u* pHuffTable))
  2525. /* ///////////////////////////////////////////////////////////////////////////
  2526. // Name:
  2527. // ippiHuffmanDecodeSegment_DV_8u16s
  2528. //
  2529. // Purpose:
  2530. // Decodes DV video segment, rearranges block
  2531. // elements, multiplies first element by 128.
  2532. //
  2533. // Parameters:
  2534. // pStream Pointer to the bitstream
  2535. // pZigzagTables Pointer to the array of two scanning matrices
  2536. // pHuffTable Pointer to the decoding Huffman Table
  2537. // pBlock Pointer to decoded elements
  2538. // pBlockParam Pointer to the output parameters array [30]
  2539. //
  2540. // Returns:
  2541. // ippStsNoErr No error
  2542. // ippStsNullPtrErr One of the pointers is NULL
  2543. */
  2544. IPPAPI(IppStatus, ippiHuffmanDecodeSegment_DV_8u16s, (
  2545. const Ipp8u* pStream,
  2546. const Ipp32u* pZigzagTables,
  2547. const Ipp32u* pHuffTable,
  2548. Ipp16s* pBlock,
  2549. Ipp32u* pBlockParam))
  2550. /* ///////////////////////////////////////////////////////////////////////////
  2551. // Name:
  2552. // ippiHuffmanDecodeSegmentOnePass_DV_8u16s
  2553. //
  2554. // Purpose:
  2555. // Performs first pass of video segment decoding process. Rearranges block
  2556. // elements, multiplies first element by 128.
  2557. //
  2558. // Parameters:
  2559. // pStream Pointer to the bitstream
  2560. // pZigzagTables Pointer to the array of two scanning matrices
  2561. // pHuffTable Pointer to the decoding Huffman Table
  2562. // pBlock Pointer to decoded elements
  2563. // pBlockParam Pointer to the output parameters array [30]
  2564. // nNumCoeffs Max number of coefficients to extract
  2565. //
  2566. // Returns:
  2567. // ippStsNoErr No error
  2568. // ippStsNullPtrErr One of the pointers is NULL
  2569. */
  2570. IPPAPI(IppStatus, ippiHuffmanDecodeSegmentOnePass_DV_8u16s, (
  2571. const Ipp8u* pStream,
  2572. const Ipp32u* pZigzagTables,
  2573. const Ipp32u* pHuffTable,
  2574. Ipp16s* pBlock,
  2575. Ipp32u* pBlockParam,
  2576. Ipp32s nNumCoeffs))
  2577. /* ///////////////////////////////////////////////////////////////////////////
  2578. // Name:
  2579. // ippiHuffmanDecodeSegment_DV100_8u16s
  2580. //
  2581. // Purpose:
  2582. // Decodes DV100 video segment, rearranges block
  2583. // elements, multiplies first element by 128.
  2584. //
  2585. // Parameters:
  2586. // pStream Pointer to the bitstream
  2587. // pZigzagTable Pointer to the scanning matrix
  2588. // pHuffTable Pointer to the decoding Huffman Table
  2589. // pBlock Pointer to decoded elements
  2590. // pBlockParam Pointer to the output parameters array [40]
  2591. //
  2592. // Returns:
  2593. // ippStsNoErr No error
  2594. // ippStsNullPtrErr One of the pointers is NULL
  2595. */
  2596. IPPAPI(IppStatus, ippiHuffmanDecodeSegment_DV100_8u16s, (
  2597. const Ipp8u* pStream,
  2598. const Ipp32u* pZigzagTable,
  2599. const Ipp32u* pHuffTable,
  2600. Ipp16s* pBlock,
  2601. Ipp32u* pBlockParam))
  2602. /* ///////////////////////////////////////////////////////////////////////////
  2603. // Name:
  2604. // ippiQuantInv_DV_16s_C1I
  2605. //
  2606. // Purpose:
  2607. // Performs inverse quantization on a block
  2608. //
  2609. // Parameters:
  2610. // pSrcDst Pointer to the block
  2611. // pDequantTable Pointer to the dequantization table
  2612. //
  2613. // Returns:
  2614. // ippStsNoErr No error
  2615. // ippStsNullPtrErr One of the pointers is NULL
  2616. */
  2617. IPPAPI(IppStatus, ippiQuantInv_DV_16s_C1I, (Ipp16s* pSrcDst, Ipp16s* pDequantTable))
  2618. /* ///////////////////////////////////////////////////////////////////////////
  2619. // Name:
  2620. // ippiDCT2x4x8Inv_16s_C1I
  2621. //
  2622. // Purpose:
  2623. // Performs the inverse DCT for block of type 2
  2624. //
  2625. // Parameters:
  2626. // pSrcDst Pointer to the block
  2627. //
  2628. // Returns:
  2629. // ippStsNoErr No error
  2630. // ippStsNullPtrErr pSrcDst is NULL
  2631. */
  2632. IPPAPI(IppStatus, ippiDCT2x4x8Inv_16s_C1I, (Ipp16s* pSrcDst))
  2633. /* ///////////////////////////////////////////////////////////////////////////
  2634. // Video Data Encoding Functions for DV
  2635. //////////////////////////////////////////////////////////////////////////// */
  2636. /* ///////////////////////////////////////////////////////////////////////////
  2637. // Name:
  2638. // ippiDCT2x4x8Frw_16s_C1I
  2639. //
  2640. // Purpose:
  2641. // Performs DCT for a block of type 2
  2642. //
  2643. // Parameters:
  2644. // pSrcDst Pointer to block
  2645. //
  2646. // Returns:
  2647. // ippStsNoErr No error
  2648. // ippStsNullPtrErr pSrcDst is NULL
  2649. */
  2650. IPPAPI(IppStatus, ippiDCT2x4x8Frw_16s_C1I, (Ipp16s* pSrcDst))
  2651. /* ///////////////////////////////////////////////////////////////////////////
  2652. // Name:
  2653. // ippiCountZeros8x8_16s_C1
  2654. //
  2655. // Purpose:
  2656. // Evaluates number of zeros in a block
  2657. //
  2658. // Parameters:
  2659. // pSrc Pointer to 8x8 block
  2660. // pCount Pointer the evaluated number of zeros
  2661. //
  2662. // Returns:
  2663. // ippStsNoErr No error
  2664. // ippStsNullPtrErr One of the pointers is NULL
  2665. */
  2666. IPPAPI(IppStatus, ippiCountZeros8x8_16s_C1, (Ipp16s* pSrc, Ipp32u* pCount))
  2667. /* ///////////////////////////////////////////////////////////////////////////
  2668. // Common Functions
  2669. //////////////////////////////////////////////////////////////////////////// */
  2670. /* ////////////////////////////////////////////////////////////////////////////
  2671. // Name:
  2672. // ippiFrameFieldSAD16x16_8u32s_C1R
  2673. // ippiFrameFieldSAD16x16_16s32s_C1R
  2674. // Purpose: compute SAD between Frame and Field lines
  2675. // Returns:
  2676. //
  2677. // ippStsNoErr No error
  2678. // ippStsNullPtrErr At least one of the pointers is NULL
  2679. // Arguments:
  2680. //
  2681. // pSrc Pointer to the 16x16 block
  2682. // srcStep Width of the source plane
  2683. // pFrameSAD Pointer to result of Frame SAD
  2684. // pFieldSAD Pointer to result of Field SAD
  2685. */
  2686. IPPAPI(IppStatus, ippiFrameFieldSAD16x16_8u32s_C1R, (
  2687. const Ipp8u* pSrc,
  2688. int srcStep,
  2689. Ipp32s* pFrameSAD,
  2690. Ipp32s* pFieldSAD))
  2691. IPPAPI(IppStatus, ippiFrameFieldSAD16x16_16s32s_C1R, (
  2692. const Ipp16s* pSrc,
  2693. int srcStep,
  2694. Ipp32s* pFrameSAD,
  2695. Ipp32s* pFieldSAD))
  2696. /* /////////////////////////////////////////////////////////////////////////////////////////////
  2697. // Name: ippiSAD16x8_8u32s_C1R
  2698. // Purpose: Computes SAD of two blocks 16x8
  2699. // Returns:
  2700. //
  2701. // ippStsNoErr No error
  2702. // ippStsNullPtrErr At least one of the pointers is NULL
  2703. // Arguments:
  2704. //
  2705. // pSrcCur Pointer to the current block
  2706. // srcCurStep Width of the current plane
  2707. // pSrcRef Pointer to the reference block
  2708. // srcRefStep Width of the reference plane
  2709. // mcType Interpolate type
  2710. // pDst Pointer to result
  2711. */
  2712. IPPAPI(IppStatus, ippiSAD16x8_8u32s_C1R, (
  2713. const Ipp8u *pSrcCur,
  2714. int srcCurStep,
  2715. const Ipp8u *pSrcRef,
  2716. int srcRefStep,
  2717. Ipp32s *pDst,
  2718. Ipp32s mcType))
  2719. /* /////////////////////////////////////////////////////////////////////////////////////////////
  2720. // Name: ippiSAD8x16_8u32s_C1R
  2721. // Purpose: Computes SAD of two blocks 8x16
  2722. // Returns:
  2723. //
  2724. // ippStsNoErr No error
  2725. // ippStsNullPtrErr At least one of the pointers is NULL
  2726. // Arguments:
  2727. //
  2728. // pSrcCur Pointer to the current block
  2729. // srcCurStep Width of the current plane
  2730. // pSrcRef Pointer to the reference block
  2731. // srcRefStep Width of the reference plane
  2732. // mcType Reserved and must be 0.
  2733. // pDst Pointer to result
  2734. */
  2735. IPPAPI(IppStatus, ippiSAD8x16_8u32s_C1R, (
  2736. const Ipp8u *pSrcCur,
  2737. int srcCurStep,
  2738. const Ipp8u *pSrcRef,
  2739. int srcRefStep,
  2740. Ipp32s *pDst,
  2741. Ipp32s mcType))
  2742. /* /////////////////////////////////////////////////////////////////////////////////////////////
  2743. // Name: ippiSAD8x4_8u32s_C1R
  2744. // Purpose: Computes SAD of two blocks 8x4
  2745. // Returns:
  2746. //
  2747. // ippStsNoErr No error
  2748. // ippStsNullPtrErr At least one of the pointers is NULL
  2749. // Arguments:
  2750. //
  2751. // pSrcCur Pointer to the current block
  2752. // srcCurStep Width of the current plane
  2753. // pSrcRef Pointer to the reference block
  2754. // srcRefStep Width of the reference plane
  2755. // mcType Reserved and must be 0.
  2756. // pDst Pointer to result
  2757. */
  2758. IPPAPI(IppStatus, ippiSAD8x4_8u32s_C1R, (
  2759. const Ipp8u *pSrcCur,
  2760. int srcCurStep,
  2761. const Ipp8u *pSrcRef,
  2762. int srcRefStep,
  2763. Ipp32s *pDst,
  2764. Ipp32s mcType))
  2765. /* /////////////////////////////////////////////////////////////////////////////////////////////
  2766. // Name: ippiSAD4x8_8u32s_C1R
  2767. // Purpose: Computes SAD of two blocks 4x8
  2768. // Returns:
  2769. //
  2770. // ippStsNoErr No error
  2771. // ippStsNullPtrErr At least one of the pointers is NULL
  2772. // Arguments:
  2773. //
  2774. // pSrcCur Pointer to the current block
  2775. // srcCurStep Width of the current plane
  2776. // pSrcRef Pointer to the reference block
  2777. // srcRefStep Width of the reference plane
  2778. // mcType Reserved and must be 0.
  2779. // pDst Pointer to result
  2780. */
  2781. IPPAPI(IppStatus, ippiSAD4x8_8u32s_C1R, (
  2782. const Ipp8u *pSrcCur,
  2783. int srcCurStep,
  2784. const Ipp8u *pSrcRef,
  2785. int srcRefStep,
  2786. Ipp32s *pDst,
  2787. Ipp32s mcType))
  2788. /* /////////////////////////////////////////////////////////////////////////////////////////////
  2789. // Name: ippiSSD8x8_8u32s_C1R
  2790. // Purpose: compute SSD of two blocks 8x8
  2791. // Returns:
  2792. //
  2793. // ippStsNoErr No error
  2794. // ippStsNullPtrErr At least one of the pointers is NULL
  2795. // Arguments:
  2796. //
  2797. // pSrcCur Pointer to the current block
  2798. // srcCurStep Width of the current plane
  2799. // pSrcRef Pointer to the reference block
  2800. // srcRefStep Width of the reference plane
  2801. // mcType Interpolate type
  2802. // pDst Pointer to result
  2803. */
  2804. IPPAPI(IppStatus, ippiSSD8x8_8u32s_C1R, (
  2805. const Ipp8u *pSrcCur,
  2806. int srcCurStep,
  2807. const Ipp8u *pSrcRef,
  2808. int srcRefStep,
  2809. Ipp32s *pDst,
  2810. Ipp32s mcType))
  2811. /* /////////////////////////////////////////////////////////////////////////////////////////////
  2812. // Name: ippiSSD4x4_8u32s_C1R
  2813. // Purpose: compute SSD of two blocks 4x4
  2814. // Returns:
  2815. //
  2816. // ippStsNoErr No error
  2817. // ippStsNullPtrErr At least one of the pointers is NULL
  2818. // Arguments:
  2819. //
  2820. // pSrcCur Pointer to the current block
  2821. // srcCurStep Width of the current plane
  2822. // pSrcRef Pointer to the reference block
  2823. // srcRefStep Width of the reference plane
  2824. // mcType Interpolate type
  2825. // pDst Pointer to result
  2826. */
  2827. IPPAPI(IppStatus, ippiSSD4x4_8u32s_C1R, (
  2828. const Ipp8u *pSrcCur,
  2829. int srcCurStep,
  2830. const Ipp8u *pSrcRef,
  2831. int srcRefStep,
  2832. Ipp32s *pDst,
  2833. Ipp32s mcType))
  2834. /* ///////////////////////////////////////////////////////////////////////////
  2835. // Name:
  2836. // ippiScanFwd_16s_C1
  2837. //
  2838. // Purpose:
  2839. // Performs classical zigzag, alternate-horizontal, or alternate-vertical
  2840. // forward scan on a block.
  2841. //
  2842. // Parameters:
  2843. // pSrc Pointer to input block (coefficients in the normal order).
  2844. // pDst Pointer to output block (coefficients in the scan order).
  2845. // countNonZero Number of non-zero coefficients in the block. Valid within
  2846. // the range 1 to 64.
  2847. // scan Type of the scan, takes one of the following values:
  2848. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  2849. // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
  2850. // IPPVC_SCAN_VERTICAL - alternate-vertical scan
  2851. // Returns:
  2852. // ippStsNoErr No error.
  2853. // ippStsNullPtrErr At least one of the pointers is NULL.
  2854. // ippStsOutOfRangeErr Indicates an error condition if countNonZero is out
  2855. // of the range [1, 64].
  2856. // Notes:
  2857. */
  2858. IPPAPI(IppStatus, ippiScanFwd_16s_C1, (
  2859. const Ipp16s* pSrc,
  2860. Ipp16s* pDst,
  2861. int countNonZero,
  2862. int scan))
  2863. /* ///////////////////////////////////////////////////////////////////////////
  2864. // Name:
  2865. // ippiScanInv_16s_C1
  2866. //
  2867. // Purpose:
  2868. // Performs classical zigzag, alternate-horizontal, or alternate-vertical
  2869. // inverse scan on a block stored in a compact buffer.
  2870. //
  2871. // Parameters:
  2872. // pSrc Pointer to input block (coefficients in the scan order).
  2873. // pDst Pointer to output block (coefficients in the normal order).
  2874. // indxLastNonZero Index of the last non-zero coefficient. Valid within the
  2875. // range 0 to 63.
  2876. // scan Type of the scan, takes one of the following values:
  2877. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  2878. // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
  2879. // IPPVC_SCAN_VERTICAL - alternate-vertical scan
  2880. // Returns:
  2881. // ippStsNoErr No error.
  2882. // ippStsNullPtrErr At least one of the pointers is NULL.
  2883. // ippStsOutOfRangeErr Indicates an error condition if indxLastNonZero is
  2884. // out of the range [0, 63].
  2885. // Notes:
  2886. */
  2887. IPPAPI(IppStatus, ippiScanInv_16s_C1, (
  2888. const Ipp16s* pSrc,
  2889. Ipp16s* pDst,
  2890. int indxLastNonZero,
  2891. int scan))
  2892. /* ///////////////////////////////////////////////////////////////////////////
  2893. // Name:
  2894. // ippiSAD8x8_8u32s_C1R
  2895. //
  2896. // Purpose:
  2897. // Computes SAD.
  2898. //
  2899. // Parameters:
  2900. // pSrcCur Pointer to the current block
  2901. // srcCurStep Width in bytes of the current plane.
  2902. // pSrcRef Pointer to the reference block
  2903. // srcRefStep Width in bytes of the reference plane.
  2904. // mcType Type of motion compensation
  2905. // pDst Pointer to the output value
  2906. //
  2907. // Returns:
  2908. // ippStsNoErr No error.
  2909. // ippStsNullPtrErr At least one of the pointers is NULL.
  2910. */
  2911. IPPAPI(IppStatus, ippiSAD8x8_8u32s_C1R, (
  2912. const Ipp8u* pSrcCur,
  2913. int srcCurStep,
  2914. const Ipp8u* pSrcRef,
  2915. int srcRefStep,
  2916. Ipp32s* pDst,
  2917. Ipp32s mcType))
  2918. /* ///////////////////////////////////////////////////////////////////////////
  2919. // Name:
  2920. // ippiSAD8x8_8u32s_C2R
  2921. //
  2922. // Purpose:
  2923. // Computes SAD for chrominance part of NV12 plane.
  2924. //
  2925. // Parameters:
  2926. // pSrcCur - the pointer to the current 8x8 block
  2927. // srcCurStep - Step of the current block, specifying width of the plane in bytes..
  2928. // pSrcRef - the pointer to the reference 8x8 block.
  2929. // srcRefStep - Step of the reference block, specifying width of the plane in bytes.
  2930. // pDstU - pointer to return value - calculated SAD for U(Cb).
  2931. // pDstV - pointer to return value - calculated SAD for V(Cr).
  2932. // mcType - type of motion compensation - IPPVC_MC_APX.
  2933. //
  2934. // Returns:
  2935. // ippStsNoErr No error.
  2936. // ippStsNullPtrErr At least one of the pointers is NULL.
  2937. */
  2938. IPPAPI(IppStatus, ippiSAD8x8_8u32s_C2R, (
  2939. const Ipp8u* pSrcCur,
  2940. int srcCurStep,
  2941. const Ipp8u* pSrcRef,
  2942. int srcRefStep,
  2943. Ipp32s* pDstU,
  2944. Ipp32s* pDstV,
  2945. Ipp32s mcType))
  2946. /* ///////////////////////////////////////////////////////////////////////////
  2947. // Name:
  2948. // ippiMeanAbsDev16x16_8u32s_C1R
  2949. // ippiMeanAbsDev8x8_8u32s_C1R
  2950. //
  2951. // Purpose:
  2952. // Computes mean absolute dev = sum(|Bij-M|).
  2953. //
  2954. // Parameters:
  2955. // pSrcCur Pointer to the block 16x16 or 8x8.
  2956. // srcStep Width in bytes of the source plane.
  2957. // pDst Pointer to the deviation value.
  2958. //
  2959. // Returns:
  2960. // ippStsNoErr No error.
  2961. // ippStsNullPtrErr At least one of the pointers is NULL.
  2962. */
  2963. IPPAPI(IppStatus, ippiMeanAbsDev16x16_8u32s_C1R, (
  2964. const Ipp8u* pSrc,
  2965. int srcStep,
  2966. Ipp32s* pDst))
  2967. IPPAPI(IppStatus, ippiMeanAbsDev8x8_8u32s_C1R, (
  2968. const Ipp8u* pSrc,
  2969. int srcStep,
  2970. Ipp32s* pDst))
  2971. /* ///////////////////////////////////////////////////////////////////////////
  2972. // Name:
  2973. // ippiSub8x8_16s8u_C1R
  2974. // ippiSub16x16_16s8u_C1R
  2975. //
  2976. // Purpose:
  2977. // Subtract two blocks and store the result in the third block
  2978. //
  2979. // Parameters:
  2980. // pSrc1 Pointer to the first source block.
  2981. // src1Step Step in bytes through the first source plane
  2982. // pSrc2 Pointer to the second source block.
  2983. // src2Step Step in bytes through the second source plane
  2984. // pSrcDst Pointer to the destination block.
  2985. // srcDstStep Step in bytes through the destination plane
  2986. //
  2987. // Returns:
  2988. // ippStsNoErr No error.
  2989. // ippStsNullPtrErr At least one input pointer is NULL
  2990. */
  2991. IPPAPI(IppStatus, ippiSub8x8_8u16s_C1R, (
  2992. const Ipp8u* pSrc1,
  2993. int src1Step,
  2994. const Ipp8u* pSrc2,
  2995. int src2Step,
  2996. Ipp16s* pDst,
  2997. int dstStep))
  2998. IPPAPI(IppStatus, ippiSub16x16_8u16s_C1R, (
  2999. const Ipp8u* pSrc1,
  3000. int src1Step,
  3001. const Ipp8u* pSrc2,
  3002. int src2Step,
  3003. Ipp16s* pDst,
  3004. int dstStep))
  3005. /* ///////////////////////////////////////////////////////////////////////////
  3006. // Name:
  3007. // ippiSubSAD8x8_16s8u_C1R
  3008. //
  3009. // Purpose:
  3010. // Subtract two blocks and store the result in the third block and
  3011. // computes a SAD
  3012. //
  3013. // Parameters:
  3014. // pSrc1 Pointer to the first source block.
  3015. // src1Step Step in bytes through the first source plane
  3016. // pSrc2 Pointer to the second source block.
  3017. // src2Step Step in bytes through the second source plane
  3018. // pDst Pointer to the destination block.
  3019. // dstStep Step in bytes through the destination plane
  3020. // pSAD Pointer to the result of SAD
  3021. //
  3022. // Returns:
  3023. // ippStsNoErr No error.
  3024. // ippStsNullPtrErr At least one input pointer is NULL
  3025. */
  3026. IPPAPI(IppStatus, ippiSubSAD8x8_8u16s_C1R, (
  3027. const Ipp8u* pSrc1,
  3028. int src1Step,
  3029. const Ipp8u* pSrc2,
  3030. int src2Step,
  3031. Ipp16s* pDst,
  3032. int dstStep,
  3033. Ipp32s* pSAD))
  3034. /* ///////////////////////////////////////////////////////////////////////////
  3035. // Name:
  3036. // ippiCopy8x8_8u_C1R
  3037. // ippiCopy16x16_8u_C1R
  3038. //
  3039. // Purpose:
  3040. // Copy fixed sizes blocks
  3041. //
  3042. // Parameters:
  3043. // pSrc Pointer to the source block.
  3044. // srcStep Step in bytes through the source plane.
  3045. // pDst Pointer to the destination block.
  3046. // dstStep Step in bytes through the destination plane.
  3047. //
  3048. // Returns:
  3049. // ippStsNoErr No error.
  3050. // ippStsNullPtrErr At least one input pointer is NULL
  3051. */
  3052. IPPAPI(IppStatus, ippiCopy8x8_8u_C1R, (
  3053. const Ipp8u* pSrc,
  3054. int srcStep,
  3055. Ipp8u* pDst,
  3056. int dstStep))
  3057. IPPAPI(IppStatus, ippiCopy16x16_8u_C1R, (
  3058. const Ipp8u* pSrc,
  3059. int srcStep,
  3060. Ipp8u* pDst,
  3061. int dstStep))
  3062. /* ///////////////////////////////////////////////////////////////////////////
  3063. // Name:
  3064. // ippiAverage8x8_8u_C1IR
  3065. // ippiAverage16x16_8u_C1IR
  3066. //
  3067. // Purpose:
  3068. // Performs averaging of two blocks with rounding.
  3069. //
  3070. // Parameters:
  3071. // pSrc Pointer to the first source block.
  3072. // srcStep Step in bytes through the first source plane.
  3073. // pSrcDst Pointer to the second source/destination block.
  3074. // srcDstStep Step in bytes through the second plane.
  3075. //
  3076. // Returns:
  3077. // ippStsNoErr No error.
  3078. // ippStsNullPtrErr At least one input pointer is NULL
  3079. */
  3080. IPPAPI(IppStatus, ippiAverage8x8_8u_C1IR, (
  3081. const Ipp8u* pSrc,
  3082. int srcStep,
  3083. Ipp8u* pSrcDst,
  3084. int srcDstStep))
  3085. IPPAPI(IppStatus, ippiAverage16x16_8u_C1IR, (
  3086. const Ipp8u* pSrc,
  3087. int srcStep,
  3088. Ipp8u* pSrcDst,
  3089. int srcDstStep))
  3090. /* ///////////////////////////////////////////////////////////////////////////
  3091. // Name:
  3092. // ippiAverage8x8_8u_C1R
  3093. // ippiAverage16x16_8u_C1R
  3094. //
  3095. // Purpose:
  3096. // Performs averaging of two blocks with rounding.
  3097. //
  3098. // Parameters:
  3099. // pSrc1 Pointer to the first source block.
  3100. // src1Step Step in bytes through the first source plane.
  3101. // pSrc2 Pointer to the second source block.
  3102. // src2Step Step in bytes through the second source plane.
  3103. // pDst Pointer to the destination block.
  3104. // dstStep Step in bytes through the second plane.
  3105. //
  3106. // Returns:
  3107. // ippStsNoErr No error.
  3108. // ippStsNullPtrErr At least one input pointer is NULL
  3109. */
  3110. IPPAPI(IppStatus, ippiAverage8x8_8u_C1R, (
  3111. const Ipp8u* pSrc1,
  3112. int src1Step,
  3113. const Ipp8u* pSrc2,
  3114. int src2Step,
  3115. Ipp8u* pDst,
  3116. int dstStep))
  3117. IPPAPI(IppStatus, ippiAverage16x16_8u_C1R, (
  3118. const Ipp8u* pSrc1,
  3119. int src1Step,
  3120. const Ipp8u* pSrc2,
  3121. int src2Step,
  3122. Ipp8u* pDst,
  3123. int dstStep))
  3124. /* ///////////////////////////////////////////////////////////////////////////
  3125. // Name:
  3126. // ippiCopy8x4HP_8u_C1R
  3127. // ippiCopy8x8HP_8u_C1R
  3128. // ippiCopy16x8HP_8u_C1R
  3129. // ippiCopy16x16HP_8u_C1R
  3130. //
  3131. // Purpose:
  3132. // Copy fixed sizes blocks with half-pixel accuracy
  3133. //
  3134. // Parameters:
  3135. // pSrc Pointer to the source block.
  3136. // srcStep Step in bytes through the source plane.
  3137. // pDst Pointer to the destination block.
  3138. // dstStep Step in bytes through the destination plane.
  3139. // acc Parameter that determines half-pixel accuracy.
  3140. // rounding Parameter that determines type of rounding for pixel
  3141. // interpolation; may be 0 or 1
  3142. //
  3143. // Returns:
  3144. // ippStsNoErr No error.
  3145. // ippStsNullPtrErr At least one input pointer is NULL
  3146. */
  3147. IPPAPI(IppStatus, ippiCopy8x4HP_8u_C1R, (
  3148. const Ipp8u* pSrc,
  3149. int srcStep,
  3150. Ipp8u* pDst,
  3151. int dstStep,
  3152. int acc,
  3153. int rounding))
  3154. IPPAPI(IppStatus, ippiCopy8x8HP_8u_C1R, (
  3155. const Ipp8u* pSrc,
  3156. int srcStep,
  3157. Ipp8u* pDst,
  3158. int dstStep,
  3159. int acc,
  3160. int rounding))
  3161. IPPAPI(IppStatus, ippiCopy16x8HP_8u_C1R, (
  3162. const Ipp8u* pSrc,
  3163. int srcStep,
  3164. Ipp8u* pDst,
  3165. int dstStep,
  3166. int acc,
  3167. int rounding))
  3168. IPPAPI(IppStatus, ippiCopy16x16HP_8u_C1R, (
  3169. const Ipp8u* pSrc,
  3170. int srcStep,
  3171. Ipp8u* pDst,
  3172. int dstStep,
  3173. int acc,
  3174. int rounding))
  3175. /* ///////////////////////////////////////////////////////////////////////////
  3176. // Name:
  3177. // ippiInterpolateAverage8x4_8u_C1IR
  3178. // ippiInterpolateAverage8x8_8u_C1IR
  3179. // ippiInterpolateAverage16x8_8u_C1IR
  3180. // ippiInterpolateAverage16x16_8u_C1IR
  3181. //
  3182. // Purpose:
  3183. // Interpolate source block according to half-pixel offset and
  3184. // average the result with destination block
  3185. //
  3186. // Parameters:
  3187. // pSrc Pointer to the source block.
  3188. // srcStep Step in bytes through the source plane.
  3189. // pSrcDst Pointer to the destination block.
  3190. // srcDstStep Step in bytes through the destination plane.
  3191. // acc Parameter that determines half-pixel accuracy.
  3192. // rounding Parameter that determines type of rounding for pixel
  3193. // interpolation; may be 0 or 1
  3194. //
  3195. // Returns:
  3196. // ippStsNoErr No error.
  3197. // ippStsNullPtrErr At least one input pointer is NULL
  3198. */
  3199. IPPAPI(IppStatus, ippiInterpolateAverage8x4_8u_C1IR, (
  3200. const Ipp8u* pSrc,
  3201. int srcStep,
  3202. Ipp8u* pSrcDst,
  3203. int srcDstStep,
  3204. int acc,
  3205. int rounding))
  3206. IPPAPI(IppStatus, ippiInterpolateAverage8x8_8u_C1IR, (
  3207. const Ipp8u* pSrc,
  3208. int srcStep,
  3209. Ipp8u* pDst,
  3210. int dstStep,
  3211. int acc,
  3212. int rounding))
  3213. IPPAPI(IppStatus, ippiInterpolateAverage16x8_8u_C1IR, (
  3214. const Ipp8u* pSrc,
  3215. int srcStep,
  3216. Ipp8u* pDst,
  3217. int dstStep,
  3218. int acc,
  3219. int rounding))
  3220. IPPAPI(IppStatus, ippiInterpolateAverage16x16_8u_C1IR, (
  3221. const Ipp8u* pSrc,
  3222. int srcStep,
  3223. Ipp8u* pDst,
  3224. int dstStep,
  3225. int acc,
  3226. int rounding))
  3227. /* ///////////////////////////////////////////////////////////////////////////
  3228. // Name:
  3229. // ippiAdd8x8_16s8u_C1IRS
  3230. //
  3231. // Purpose:
  3232. // Add two blocks with saturation
  3233. //
  3234. // Parameters:
  3235. // pSrc Pointer to the source block.
  3236. // srcStep Step in bytes through the source plane
  3237. // pSrcDst Pointer to the second source/destination block.
  3238. // srcDstStep Step in bytes through the destination plane
  3239. //
  3240. // Returns:
  3241. // ippStsNoErr No error.
  3242. // ippStsNullPtrErr At least one input pointer is NULL
  3243. */
  3244. IPPAPI(IppStatus, ippiAdd8x8_16s8u_C1IRS, (
  3245. const Ipp16s* pSrc,
  3246. int srcStep,
  3247. Ipp8u* pSrcDst,
  3248. int srcDstStep))
  3249. /* ///////////////////////////////////////////////////////////////////////////
  3250. // Name:
  3251. // ippiAdd8x8HP_16s8u_C1RS
  3252. //
  3253. // Purpose:
  3254. // Add interpolated with half-pixel accuracy prediction to difference with
  3255. // saturation
  3256. //
  3257. // Parameters:
  3258. // pSrc1 Pointer to the 16s source block.
  3259. // src1Step Step in bytes through the first source plane
  3260. // pSrc2 Pointer to the 8u source block.
  3261. // src2Step Step in bytes through the second source plane
  3262. // pDst Pointer to the destination block.
  3263. // dstStep Step in bytes through the destination plane
  3264. //
  3265. // Returns:
  3266. // ippStsNoErr No error.
  3267. // ippStsNullPtrErr At least one input pointer is NULL
  3268. */
  3269. IPPAPI(IppStatus, ippiAdd8x8HP_16s8u_C1RS, (
  3270. const Ipp16s* pSrc1,
  3271. int src1Step,
  3272. Ipp8u* pSrc2,
  3273. int src2Step,
  3274. Ipp8u* pDst,
  3275. int dstStep,
  3276. int acc,
  3277. int rounding))
  3278. /* ///////////////////////////////////////////////////////////////////////////
  3279. // Name:
  3280. // ippiAddC8x8_16s8u_C1IR
  3281. //
  3282. // Purpose:
  3283. // Adds a constant to 8x8 block with saturation
  3284. //
  3285. // Parameters:
  3286. // value The constant value to add to block.
  3287. // pSrcDst Pointer to the source/destination block.
  3288. // srcDstStep Step in bytes through the destination block.
  3289. //
  3290. // Returns:
  3291. // ippStsNoErr No error.
  3292. // ippStsNullPtrErr At least one input pointer is NULL
  3293. */
  3294. IPPAPI(IppStatus, ippiAddC8x8_16s8u_C1IR, (
  3295. Ipp16s value,
  3296. Ipp8u* pSrcDst,
  3297. int srcDstStep))
  3298. /* ///////////////////////////////////////////////////////////////////////////
  3299. // H.261 Functions
  3300. //////////////////////////////////////////////////////////////////////////// */
  3301. /* ///////////////////////////////////////////////////////////////////////////
  3302. // Name:
  3303. // ippiFilter8x8_H261_8u_C1R
  3304. //
  3305. // Purpose:
  3306. // Performs "loop" filtering on one block as specified in
  3307. // "ITU-T Recommendation H.261", subclause 3.2.3.
  3308. //
  3309. // Parameters:
  3310. // pSrc Pointer to the origin of the source block.
  3311. // srcStep Width in bytes of the source image plane.
  3312. // pDst Pointer to the origin of the destination block.
  3313. // dstStep Width in bytes of the destination image plane.
  3314. //
  3315. // Returns:
  3316. // ippStsNoErr No error.
  3317. // ippStsNullPtrErr At least one of the pointers is NULL.
  3318. */
  3319. IPPAPI(IppStatus, ippiFilter8x8_H261_8u_C1R, (
  3320. Ipp8u* pSrc,
  3321. int srcStep,
  3322. Ipp8u* pDst,
  3323. int dstStep))
  3324. /* ///////////////////////////////////////////////////////////////////////////
  3325. // Name:
  3326. // ippiDecodeCoeffsIntra_H261_1u16s
  3327. //
  3328. // Purpose:
  3329. // Performs decoding and, optionally, inverse scan of quantized DCT
  3330. // coefficients (DC and AC) for one Intra coded block. DC fixed length and
  3331. // AC VLC decoding processes are specified in "ITU-T Recommendation H.263,
  3332. // subclause 4.2.4.1".
  3333. //
  3334. // Parameters:
  3335. // ppBitStream Pointer to pointer to the current byte in the bitstream
  3336. // buffer, updated by the function.
  3337. // pBitOffset Pointer to the bit position in the byte pointed by
  3338. // *ppBitStream. Valid within the range [0, 7],
  3339. // updated by the function.
  3340. // pCoef Pointer to the output coefficients.
  3341. // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
  3342. // the scanning order. If an error is detected while
  3343. // decoding a coefficient, the index of the last decoded
  3344. // coefficient is returned in *pIndxLastNonZero.
  3345. // *pIndxLastNonZero is set to -1 if there are no correctly
  3346. // decoded coefficients in the block.
  3347. // scan Type of the inverse scan, takes one of the following values:
  3348. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  3349. // IPPVC_SCAN_NONE, indicating that no inverse scan is
  3350. // performed.
  3351. //
  3352. // Returns:
  3353. // ippStsNoErr No errors.
  3354. // ippStsNullPtrErr At least one of the pointers is NULL.
  3355. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  3356. // ippStsVLCErr Illegal VL code is detected through the stream
  3357. // processing.
  3358. */
  3359. IPPAPI(IppStatus, ippiDecodeCoeffsIntra_H261_1u16s, (
  3360. Ipp8u** ppBitStream,
  3361. int* pBitOffset,
  3362. Ipp16s* pCoef,
  3363. int* pIndxLastNonZero,
  3364. int scan))
  3365. /* ///////////////////////////////////////////////////////////////////////////
  3366. // Name:
  3367. // ippiDecodeCoeffsInter_H261_1u16s
  3368. //
  3369. // Purpose:
  3370. // Performs decoding and, optionally, inverse scan of quantized DCT
  3371. // coefficients for one Inter coded block. Inter DCT VLC decoding process
  3372. // is specified in "ITU-T Recommendation H.261, subclause 4.2.4.1".
  3373. //
  3374. // Parameters:
  3375. // ppBitStream Pointer to pointer to the current byte in the bitstream
  3376. // buffer, updated by the function.
  3377. // pBitOffset Pointer to the bit position in the byte pointed by
  3378. // *ppBitStream. Valid within the range [0, 7],
  3379. // updated by the function.
  3380. // pCoef Pointer to the output coefficients.
  3381. // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
  3382. // the scanning order. If an error is detected while
  3383. // decoding a coefficient, the index of the last decoded
  3384. // coefficient is returned in *pIndxLastNonZero.
  3385. // *pIndxLastNonZero is set to -1 if there are no correctly
  3386. // decoded coefficients in the block.
  3387. // scan Type of the inverse scan, takes one of the following values:
  3388. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  3389. // IPPVC_SCAN_NONE, indicating that no inverse scan is
  3390. // performed.
  3391. //
  3392. // Returns:
  3393. // ippStsNoErr No errors.
  3394. // ippStsNullPtrErr At least one of the pointers is NULL.
  3395. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  3396. // ippStsVLCErr Illegal VL code is detected through the stream
  3397. // processing.
  3398. */
  3399. IPPAPI(IppStatus, ippiDecodeCoeffsInter_H261_1u16s, (
  3400. Ipp8u** ppBitStream,
  3401. int* pBitOffset,
  3402. Ipp16s* pCoef,
  3403. int* pIndxLastNonZero,
  3404. int scan))
  3405. /* ///////////////////////////////////////////////////////////////////////////
  3406. // Name:
  3407. // ippiReconstructCoeffsIntra_H261_1u16s
  3408. //
  3409. // Purpose:
  3410. // Performs decoding, dequantization and inverse scan of
  3411. // DCT coefficients for one intra coded block.
  3412. //
  3413. // Parameters:
  3414. // ppBitStream Pointer to pointer to the current byte in the bitstream buffer,
  3415. // updated by the function.
  3416. // pBitOffset Pointer to the bit position in the byte pointed by *ppBitStream.
  3417. // Valid within the range [0, 7], updated by the function.
  3418. // pCoef Pointer to the output coefficients.
  3419. // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in the scanning order.
  3420. // If an error is detected while decoding a coefficient, the index of the
  3421. // last decoded coefficient is returned in *pIndxLastNonZero. *pIndxLastNonZero
  3422. // is set to -1 if there are no correctly decoded coefficients in the block.
  3423. // QP Quantization parameter.
  3424. //
  3425. // Returns:
  3426. // ippStsNoErr No errors.
  3427. // ippStsNullPtrErr At least one of the pointers is NULL.
  3428. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  3429. // ippStsQPErr QP is out of the range [1, 31].
  3430. // ippStsVLCErr Illegal VL code is detected through the stream
  3431. // processing.
  3432. */
  3433. IPPAPI(IppStatus, ippiReconstructCoeffsIntra_H261_1u16s, (
  3434. Ipp8u** ppBitStream,
  3435. int* pBitOffset,
  3436. Ipp16s* pCoef,
  3437. int* pIndxLastNonZero,
  3438. int QP))
  3439. /* ///////////////////////////////////////////////////////////////////////////
  3440. // Name:
  3441. // ippiReconstructCoeffsInter_H261_1u16s
  3442. //
  3443. // Purpose:
  3444. // Performs decoding, dequantization and inverse scan of
  3445. // DCT coefficients for one inter coded block.
  3446. //
  3447. // Parameters:
  3448. // ppBitStream Pointer to pointer to the current byte in the bitstream buffer,
  3449. // updated by the function.
  3450. // pBitOffset Pointer to the bit position in the byte pointed by *ppBitStream.
  3451. // Valid within the range [0, 7], updated by the function.
  3452. // pCoef Pointer to the output coefficients.
  3453. // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in the scanning order.
  3454. // If an error is detected while decoding a coefficient, the index of the
  3455. // last decoded coefficient is returned in *pIndxLastNonZero. *pIndxLastNonZero
  3456. // is set to -1 if there are no correctly decoded coefficients in the block.
  3457. // QP Quantization parameter.
  3458. //
  3459. // Returns:
  3460. // ippStsNoErr No error.
  3461. // ippStsNullPtrErr At least one of the pointers is NULL.
  3462. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  3463. // ippStsQPErr QP is out of the range [1, 31].
  3464. // ippStsVLCErr Illegal VL code is detected through the stream
  3465. // processing.
  3466. */
  3467. IPPAPI(IppStatus, ippiReconstructCoeffsInter_H261_1u16s, (
  3468. Ipp8u** ppBitStream,
  3469. int* pBitOffset,
  3470. Ipp16s* pCoef,
  3471. int* pIndxLastNonZero,
  3472. int QP))
  3473. /* ///////////////////////////////////////////////////////////////////////////
  3474. // Name:
  3475. // ippiEncodeCoeffsIntra_H261_16s1u
  3476. //
  3477. // Purpose:
  3478. // Performs encoding of quantized DCT coefficients (DC and AC) in a scan
  3479. // order for one Intra coded block, and puts the codes into the bitstream.
  3480. // DC fixed length and AC VLC encoding processes are specified in "ITU-T
  3481. // Recommendation H.261, subclause 4.2.4.1".
  3482. //
  3483. // Parameters:
  3484. // pQCoef Pointer to the array of quantized DCT coefficients.
  3485. // ppBitStream Pointer to pointer to the current byte in the bitstream
  3486. // buffer, updated by the function.
  3487. // pBitOffset Pointer to the bit position in the byte pointed by
  3488. // *ppBitStream. Valid within the range [0, 7],
  3489. // updated by the function.
  3490. // countNonZero Number of non-zero coefficients in the block.
  3491. // Valid within the range [1, 64].
  3492. // scan Type of the scan to be performed on the coefficients before
  3493. // encoding, takes one of the following values:
  3494. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  3495. // IPPVC_SCAN_NONE, indicating that no scan is to be
  3496. // performed (the input coefficients are already in the scan
  3497. // order).
  3498. //
  3499. // Returns:
  3500. // ippStsNoErr No error.
  3501. // ippStsNullPtrErr At least one of the pointers is NULL.
  3502. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  3503. // ippStsOutOfRangeErr countNonZero is out of the range [1, 64].
  3504. */
  3505. IPPAPI(IppStatus, ippiEncodeCoeffsIntra_H261_16s1u, (
  3506. Ipp16s* pQCoef,
  3507. Ipp8u** ppBitStream,
  3508. int* pBitOffset,
  3509. int countNonZero,
  3510. int scan))
  3511. /* ///////////////////////////////////////////////////////////////////////////
  3512. // Name:
  3513. // ippiEncodeCoeffsInter_H261_16s1u
  3514. //
  3515. // Purpose:
  3516. // Performs encoding of quantized DCT coefficients in a scan order for one
  3517. // Inter coded block, and puts the codes into the bitstream. The encoding
  3518. // process is specified in "ITU-T Recommendation H.261, subclause 4.2.4.1".
  3519. //
  3520. // Parameters:
  3521. // pQCoef Pointer to the array of quantized DCT coefficients.
  3522. // ppBitStream Pointer to pointer to the current byte in the bitstream
  3523. // buffer, updated by the function.
  3524. // pBitOffset Pointer to the bit position in the byte pointed by
  3525. // *ppBitStream. Valid within the range [0, 7],
  3526. // updated by the function.
  3527. // countNonZero Number of non-zero coefficients in the block.
  3528. // Valid within the range [1, 64].
  3529. // scan Type of the scan to be performed on the coefficients before
  3530. // encoding, takes one of the following values:
  3531. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  3532. // IPPVC_SCAN_NONE, indicating that no scan is to be
  3533. // performed (the input coefficients are already in the scan
  3534. // order).
  3535. //
  3536. // Returns:
  3537. // ippStsNoErr No error.
  3538. // ippStsNullPtrErr At least one of the pointers is NULL.
  3539. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  3540. // ippStsOutOfRangeErr countNonZero is out of the range [1, 64].
  3541. */
  3542. IPPAPI(IppStatus, ippiEncodeCoeffsInter_H261_16s1u, (
  3543. Ipp16s* pQCoef,
  3544. Ipp8u** ppBitStream,
  3545. int* pBitOffset,
  3546. int countNonZero,
  3547. int scan))
  3548. /* ///////////////////////////////////////////////////////////////////////////
  3549. // H.263 Functions
  3550. //////////////////////////////////////////////////////////////////////////// */
  3551. /* ///////////////////////////////////////////////////////////////////////////
  3552. // Name:
  3553. // ippiDecodeDCIntra_H263_1u16s
  3554. //
  3555. // Purpose:
  3556. // Performs fixed length decoding of the DC coefficient for one Intra coded
  3557. // block, as specified in "ITU-T Recommendation H.263, subclause 5.4.1."
  3558. //
  3559. // Parameters:
  3560. // ppBitStream Pointer to pointer to the current byte in the bitstream
  3561. // buffer, updated by the function.
  3562. // pBitOffset Pointer to the bit position in the byte pointed by
  3563. // *ppBitStream. Valid within the range [0, 7],
  3564. // updated by the function.
  3565. // pDC Pointer to the output coefficient.
  3566. //
  3567. // Returns:
  3568. // ippStsNoErr No errors.
  3569. // ippStsNullPtrErr At least one of the pointers is NULL.
  3570. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  3571. // ippStsVLCErr Illegal code is detected through the stream
  3572. // processing.
  3573. */
  3574. IPPAPI(IppStatus, ippiDecodeDCIntra_H263_1u16s, (
  3575. Ipp8u** ppBitStream,
  3576. int* pBitOffset,
  3577. Ipp16s* pDC))
  3578. /* ///////////////////////////////////////////////////////////////////////////
  3579. // Name:
  3580. // ippiDecodeCoeffsIntra_H263_1u16s
  3581. //
  3582. // Purpose:
  3583. // Performs decoding and, optionally, inverse scan of quantized DCT
  3584. // coefficients for one Intra coded block. Intra AC VLC decoding process
  3585. // is specified in "ITU-T Recommendation H.263, subclause 5.4.2", and is
  3586. // modified as specified in the Recommendation, Annex T, clause T.4, when
  3587. // Modified Quantization mode is in use. When in Advanced Intra Coding
  3588. // mode, VLC Table I.2 from Annex I of the Recommendation is used for all
  3589. // Intra DC and Intra AC coefficients, otherwise Table 16 from the
  3590. // Recommendation is used to decode AC coefficients (starting from
  3591. // pCoef[1]) only.
  3592. //
  3593. // Parameters:
  3594. // ppBitStream Pointer to pointer to the current byte in the bitstream
  3595. // buffer, updated by the function.
  3596. // pBitOffset Pointer to the bit position in the byte pointed by
  3597. // *ppBitStream. Valid within the range [0, 7],
  3598. // updated by the function.
  3599. // pCoef Pointer to the output coefficients.
  3600. // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
  3601. // the scanning order. If an error is detected while
  3602. // decoding a coefficient, the index of the last decoded
  3603. // coefficient is returned in *pIndxLastNonZero.
  3604. // If there are no correctly decoded coefficients in the
  3605. // block, *pIndxLastNonZero is set to -1 when in Advanced
  3606. // Intra Coding mode, and to 0 otherwise.
  3607. // advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
  3608. // mode is in use, equal to 0 otherwise.
  3609. // modQuantFlag Flag equal to a non-zero value when Modified Quantization
  3610. // mode is in use, equal to 0 otherwise.
  3611. // scan Type of the inverse scan, takes one of the following values:
  3612. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  3613. // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
  3614. // IPPVC_SCAN_VERTICAL - alternate-vertical scan,
  3615. // IPPVC_SCAN_NONE, indicating that no inverse scan is
  3616. // performed.
  3617. //
  3618. // Returns:
  3619. // ippStsNoErr No errors.
  3620. // ippStsNullPtrErr At least one of the pointers is NULL.
  3621. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  3622. // ippStsVLCErr Illegal VL code is detected through the stream
  3623. // processing.
  3624. */
  3625. IPPAPI(IppStatus, ippiDecodeCoeffsIntra_H263_1u16s, (
  3626. Ipp8u** ppBitStream,
  3627. int* pBitOffset,
  3628. Ipp16s* pCoef,
  3629. int* pIndxLastNonZero,
  3630. int advIntraFlag,
  3631. int modQuantFlag,
  3632. int scan))
  3633. /* ///////////////////////////////////////////////////////////////////////////
  3634. // Name:
  3635. // ippiDecodeCoeffsInter_H263_1u16s
  3636. //
  3637. // Purpose:
  3638. // Performs decoding and, optionally, inverse scan of quantized DCT
  3639. // coefficients for one Inter coded block. Inter DCT VLC decoding process
  3640. // is specified in "ITU-T Recommendation H.263, subclause 5.4.2", and is
  3641. // modified as specified in the Recommendation, Annex T, clause T.4, when
  3642. // Modified Quantization mode is in use.
  3643. //
  3644. // Parameters:
  3645. // ppBitStream Pointer to pointer to the current byte in the bitstream
  3646. // buffer, updated by the function.
  3647. // pBitOffset Pointer to the bit position in the byte pointed by
  3648. // *ppBitStream. Valid within the range [0, 7],
  3649. // updated by the function.
  3650. // pCoef Pointer to the output coefficients.
  3651. // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
  3652. // the scanning order. If an error is detected while
  3653. // decoding a coefficient, the index of the last decoded
  3654. // coefficient is returned in *pIndxLastNonZero.
  3655. // *pIndxLastNonZero is set to -1 if there are no correctly
  3656. // decoded coefficients in the block.
  3657. // modQuantFlag Flag equal to a non-zero value when Modified Quantization
  3658. // mode is in use, equal to 0 otherwise.
  3659. // scan Type of the inverse scan, takes one of the following values:
  3660. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  3661. // IPPVC_SCAN_NONE, indicating that no inverse scan is
  3662. // performed.
  3663. //
  3664. //
  3665. // Returns:
  3666. // ippStsNoErr No errors.
  3667. // ippStsNullPtrErr At least one of the pointers is NULL.
  3668. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  3669. // ippStsVLCErr Illegal VL code is detected through the stream
  3670. // processing.
  3671. */
  3672. IPPAPI(IppStatus, ippiDecodeCoeffsInter_H263_1u16s, (
  3673. Ipp8u** ppBitStream,
  3674. int* pBitOffset,
  3675. Ipp16s* pCoef,
  3676. int* pIndxLastNonZero,
  3677. int modQuantFlag,
  3678. int scan))
  3679. /* ///////////////////////////////////////////////////////////////////////////
  3680. // Name:
  3681. // ippiQuantInvIntra_H263_16s_C1I
  3682. //
  3683. // Purpose:
  3684. // This function performs inverse quantization on intra coded block.
  3685. // When (advIntraFlag == 0 && modQuantFlag == 0), the output coefficients
  3686. // other than pSrcDst[0] are saturated to lie in the range [-2048; 2047].
  3687. //
  3688. // Parameters:
  3689. // pSrcDst Pointer to the decoded DCT coefficient of the current
  3690. // block
  3691. // QP Quantization parameter.
  3692. // indxLastNonZero Index of the last non-zero coefficient, should be set
  3693. // to 63 if not known.
  3694. // advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
  3695. // mode is in use, equal to 0 otherwise.
  3696. // modQuantFlag Flag equal to a non-zero value when Modified Quantization
  3697. // mode is in use, equal to 0 otherwise.
  3698. //
  3699. // Returns:
  3700. // ippStsNoErr No error.
  3701. // ippStsNullPtrErr At least one input pointer is NULL
  3702. // ippStsQPErr QP is out of the range [1, 31].
  3703. // ippStsOutOfRangeErr indxLastNonZero is negative.
  3704. //
  3705. // NOTE
  3706. // The function can be applied to a buffer of arbitrary size (indxLastNonZero
  3707. // can be any positive number), and can thus be used, for example, to process
  3708. // multiple blocks in one call. (In this case for any Intra block following
  3709. // the first one the Intra DC should be processed separately, if not in
  3710. // Advanced Intra mode).
  3711. */
  3712. IPPAPI(IppStatus, ippiQuantInvIntra_H263_16s_C1I, (
  3713. Ipp16s* pSrcDst,
  3714. int indxLastNonZero,
  3715. int QP,
  3716. int advIntraFlag,
  3717. int modQuantFlag))
  3718. /* ///////////////////////////////////////////////////////////////////////////
  3719. // Name:
  3720. // ippiQuantInvInter_H263_16s_C1I
  3721. //
  3722. // Purpose:
  3723. // This function performs inverse quantization on intra coded block.
  3724. // When (advIntraFlag == 0 && modQuantFlag == 0), the output coefficients
  3725. // other than pSrcDst[0] are saturated to lie in the range [-2048; 2047].
  3726. //
  3727. // Parameters:
  3728. // pSrcDst Pointer to the decoded DCT coefficient of the current
  3729. // block
  3730. // QP Quantization parameter.
  3731. // indxLastNonZero Index of the last non-zero coefficient, should be set
  3732. // to 63 if not known.
  3733. // modQuantFlag Flag equal to a non-zero value when Modified Quantization
  3734. // mode is in use, equal to 0 otherwise.
  3735. //
  3736. // Returns:
  3737. // ippStsNoErr No error.
  3738. // ippStsNullPtrErr At least one input pointer is NULL
  3739. // ippStsQPErr QP is out of the range [1, 31]
  3740. // ippStsOutOfRangeErr indxLastNonZero is negative.
  3741. //
  3742. // NOTE
  3743. // The function can be applied to a buffer of arbitrary size (indxLastNonZero
  3744. // can be any positive number), and can thus be used, for example, to process
  3745. // multiple blocks in one call.
  3746. //
  3747. */
  3748. IPPAPI(IppStatus, ippiQuantInvInter_H263_16s_C1I, (
  3749. Ipp16s* pSrcDst,
  3750. int indxLastNonZero,
  3751. int QP,
  3752. int modQuantFlag))
  3753. /* ///////////////////////////////////////////////////////////////////////////
  3754. // Name:
  3755. // ippiAddBackPredPB_H263_8u_C1R
  3756. //
  3757. // Purpose:
  3758. // Calculates backward prediction for a B-block of a PB-frame and adds it
  3759. // to the block, previously reconstructed with forward prediction. All the
  3760. // operations are restricted to the bidirectionally-predicted part of the
  3761. // B-block, the area size is defined by srcRoiSize. The backward prediction
  3762. // is performed with pixel accuracy defined by acc, the sum of the forward
  3763. // and backward predictions for every pixel within srcRoiSize is divided
  3764. // by 2 (division by truncation). The bidirectional prediction procedure
  3765. // is specified in "ITU-T Recommendation H.263, Annex G, clause G.5".
  3766. //
  3767. // Parameters:
  3768. // pSrc Pointer to the origin of the source image (P-macroblock)
  3769. // region of interest (ROI).
  3770. // srcStep Width in bytes of the source image plane.
  3771. // srcRoiSize Size of the source ROI.
  3772. // pSrcDst Pointer to the origin of the source-destination image ROI
  3773. // (bidirectionally-predicted part of the block).
  3774. // srcDstStep Width in bytes of the source-destination image plane.
  3775. // acc Pixel accuracy for backward prediction: bit 0 (the least
  3776. // significant bit) contains the horizontal half-pixel offset,
  3777. // bit 1 - the vertical offset.
  3778. //
  3779. // Returns:
  3780. // ippStsNoErr No errors.
  3781. // ippStsNullPtrErr The pointer is NULL.
  3782. // ippStsSizeErr srcRoiSize has a field with zero or negative value.
  3783. */
  3784. IPPAPI(IppStatus, ippiAddBackPredPB_H263_8u_C1R, (
  3785. const Ipp8u* pSrc,
  3786. int srcStep,
  3787. IppiSize srcRoiSize,
  3788. Ipp8u* pSrcDst,
  3789. int srcDstStep,
  3790. int acc))
  3791. /* ///////////////////////////////////////////////////////////////////////////
  3792. // Name:
  3793. // ippiResample_H263_8u_P3R
  3794. //
  3795. // Purpose:
  3796. // Resamples a YCbCr picture as specified in "ITU-T Recommendation H.263,
  3797. // Annex P". The destination picture region of interest (ROI) is mapped
  3798. // onto the source picture ROI as defined by warpParams, the pixels falling
  3799. // outside the source picture are treated according to fillMode.
  3800. //
  3801. // Parameters:
  3802. // pSrcY Pointer to the origin of the source image ROI in the
  3803. // luminance plane.
  3804. // srcYStep Width in bytes of the source image luminance (Y) plane.
  3805. // yRoiSize Size of the source and destination ROI in the luminance plane.
  3806. // pSrcCb Pointer to the origin of the source ROI in Cb chrominance
  3807. // plane.
  3808. // srcCbStep Width in bytes of the source image Cb chrominance plane.
  3809. // pSrcCr Pointer to the origin of the source ROI in Cr chrominance
  3810. // plane.
  3811. // srcCrStep Width in bytes of the source image Cr chrominance plane.
  3812. // pDstY Pointer to the origin of the destination image ROI in the
  3813. // luminance plane.
  3814. // dstYStep Width in bytes of the destination image luminance plane.
  3815. // pDstCb Pointer to the origin of the destination ROI in Cb
  3816. // chrominance plane.
  3817. // dstCbStep Width in bytes of the destination image Cb chrominance plane.
  3818. // pDstCr Pointer to the origin of the destination ROI in Cr
  3819. // chrominance plane.
  3820. // dstCrStep Width in bytes of the destination image Cr chrominance plane.
  3821. // warpParams Array of warping parameters - 4 pairs of motion vectors,
  3822. // describing, in the order they are stored in the array, how the
  3823. // upper left, upper right, lower left, and lower right corners
  3824. // of the destination ROI are mapped onto the source image.
  3825. // wda Warping displacement accuracy flag, if set to 0, pixel
  3826. // displacements are quantized to half-pixel accuracy, otherwise -
  3827. // to 1/16-pixel accuracy.
  3828. // fillMode Flag that defines the fill-mode action to be taken for the
  3829. // values of the source pixels for which the calculated location
  3830. // in the source image lies outside of the source image ROI.
  3831. // Takes one of the following values:
  3832. // 0, indicating color fill mode, the "outside" Y, Cb and Cr
  3833. // pixel values are set to fillColor[0], fillColor[1], and
  3834. // fillColor[2], respectively.
  3835. // 1 - black fill mode, the "outside" pixel values are set as follows:
  3836. // Y = 16, Cb = Cr = 128.
  3837. // 2 - gray fill mode, the "outside" pixel values are all set to 128.
  3838. // 3 - clip fill mode, the "outside" pixel values are extrapolated
  3839. // from the values of pixels at the ROI border, as specified in
  3840. // "ITU-T Recommendation H.263, Annex D".
  3841. // fillColor Array of fill color values used in color fill mode.
  3842. //
  3843. // Returns:
  3844. // ippStsNoErr No errors.
  3845. // ippStsNullPtrErr At least one of the pointers is NULL.
  3846. // ippStsSizeErr yRoiSize has a field which is odd or less than 4.
  3847. */
  3848. IPPAPI(IppStatus, ippiResample_H263_8u_P3R, (
  3849. const Ipp8u* pSrcY,
  3850. int srcYStep,
  3851. IppiSize ySrcRoiSize,
  3852. const Ipp8u* pSrcCb,
  3853. int srcCbStep,
  3854. const Ipp8u* pSrcCr,
  3855. int srcCrStep,
  3856. Ipp8u* pDstY,
  3857. int dstYStep,
  3858. IppiSize yDstRoiSize,
  3859. Ipp8u* pDstCb,
  3860. int dstCbStep,
  3861. Ipp8u* pDstCr,
  3862. int dstCrStep,
  3863. IppMotionVector warpParams[4],
  3864. int wda,
  3865. int rounding,
  3866. int fillMode,
  3867. int fillColor[3]))
  3868. /* ///////////////////////////////////////////////////////////////////////////
  3869. // Name:
  3870. // ippiUpsampleFour_H263_8u_C1R
  3871. //
  3872. // Purpose:
  3873. // Performs factor-of-4 picture upsampling, as specified in
  3874. // "ITU-T Recommendation H.263, Annex P, subclause P.5.1".
  3875. //
  3876. // Parameters:
  3877. // pSrc Pointer to the origin of the source image region
  3878. // of interest (ROI).
  3879. // srcStep Width in bytes of the source image plane.
  3880. // srcRoiSize Size of the source ROI.
  3881. // pDst Pointer to the origin of the destination image ROI.
  3882. // dstStep Width in bytes of the destination image plane.
  3883. // rounding Rounding value used in pixel interpolation,
  3884. // can be 0 or 1.
  3885. // fillColor Fill color value used for the source pixels for which
  3886. // the calculated location in the source image lies outside
  3887. // of the source image ROI. When negative, "clip" fill-mode
  3888. // action is employed - the "outside" pixel values are
  3889. // extrapolated from the values of pixels at the ROI border,
  3890. // as specified in "ITU-T Recommendation H.263, Annex D".
  3891. //
  3892. // Returns:
  3893. // ippStsNoErr No errors.
  3894. // ippStsNullPtrErr At least one of the pointers is NULL.
  3895. // ippStsSizeErr srcRoiSize has a field which is odd or less than 4.
  3896. */
  3897. IPPAPI(IppStatus, ippiUpsampleFour_H263_8u_C1R, (
  3898. const Ipp8u* pSrc,
  3899. int srcStep,
  3900. IppiSize srcRoiSize,
  3901. Ipp8u* pDst,
  3902. int dstStep,
  3903. int rounding,
  3904. int fillColor))
  3905. /* ///////////////////////////////////////////////////////////////////////////
  3906. // Name:
  3907. // ippiDownsampleFour_H263_8u_C1R
  3908. //
  3909. // Purpose:
  3910. // Performs factor-of-4 picture downsampling, as specified in
  3911. // "ITU-T Recommendation H.263, Annex P, subclause P.5.2".
  3912. //
  3913. // Parameters:
  3914. // pSrc Pointer to the origin of the source image region
  3915. // of interest (ROI).
  3916. // srcStep Width in bytes of the source image plane.
  3917. // srcRoiSize Size of the source ROI.
  3918. // pDst Pointer to the origin of the destination image ROI.
  3919. // dstStep Width in bytes of the destination image plane.
  3920. // rounding Rounding value used in pixel interpolation,
  3921. // can be 0 or 1.
  3922. // Returns:
  3923. // ippStsNoErr No errors.
  3924. // ippStsNullPtrErr At least one of the pointers is NULL.
  3925. // ippStsSizeErr srcRoiSize has a field with zero or negative value.
  3926. */
  3927. IPPAPI(IppStatus, ippiDownsampleFour_H263_8u_C1R, (
  3928. const Ipp8u* pSrc,
  3929. int srcStep,
  3930. IppiSize srcRoiSize,
  3931. Ipp8u* pDst,
  3932. int dstStep,
  3933. int rounding))
  3934. /* ///////////////////////////////////////////////////////////////////////////
  3935. // Name:
  3936. // ippiSpatialInterpolation_H263_8u_C1R
  3937. //
  3938. // Purpose:
  3939. // Performs picture interpolation for 1-D or 2-D spatial scalability, as
  3940. // specified in "ITU-T Recommendation H.263, Annex O, clause O.6".
  3941. //
  3942. // Parameters:
  3943. // pSrc Pointer to the origin of the source image region
  3944. // of interest (ROI).
  3945. // srcStep Width in bytes of the source image plane.
  3946. // srcRoiSize Size of the source ROI.
  3947. // pDst Pointer to the origin of the destination image ROI.
  3948. // dstStep Width in bytes of the destination image plane.
  3949. // interpType Interpolation type, takes one of the following values:
  3950. // IPPVC_INTERP_HORIZONTAL, IPPVC_INTERP_VERTICAL, or
  3951. // IPPVC_INTERP_2D, indicating one-dimensional (1-D)
  3952. // horizontal, 1-D vertical, and 2-D interpolation,
  3953. // respectively.
  3954. // Returns:
  3955. // ippStsNoErr No errors.
  3956. // ippStsNullPtrErr At least one of the pointers is NULL.
  3957. // ippStsSizeErr srcRoiSize has a field which is odd or less than 4.
  3958. */
  3959. IPPAPI(IppStatus, ippiSpatialInterpolation_H263_8u_C1R, (
  3960. const Ipp8u* pSrc,
  3961. int srcStep,
  3962. IppiSize srcRoiSize,
  3963. Ipp8u* pDst,
  3964. int dstStep,
  3965. int interpType))
  3966. /* ///////////////////////////////////////////////////////////////////////////
  3967. // Name:
  3968. // ippiUpsampleFour8x8_H263_16s_C1R
  3969. //
  3970. // Purpose:
  3971. // Performs factor-of-4 upsampling of an 8x8 source block to a
  3972. // 16x16 destination block, as specified in
  3973. // "ITU-T Recommendation H.263, Annex Q, clause Q.6".
  3974. //
  3975. // Parameters:
  3976. // pSrc Pointer to the origin of the source 8x8 block.
  3977. // srcStep Width in bytes of the source image plane.
  3978. // pDst Pointer to the origin of the destination 16x16 block.
  3979. // dstStep Width in bytes of the destination image plane.
  3980. //
  3981. // Returns:
  3982. // ippStsNoErr No errors.
  3983. // ippStsNullPtrErr At least one of the pointers is NULL.
  3984. */
  3985. IPPAPI(IppStatus, ippiUpsampleFour8x8_H263_16s_C1R, (
  3986. const Ipp16s* pSrc,
  3987. int srcStep,
  3988. Ipp16s* pDst,
  3989. int dstStep))
  3990. /* ///////////////////////////////////////////////////////////////////////////
  3991. // Name:
  3992. // ippiDownsampleFour16x16_H263_16s_C1R
  3993. //
  3994. // Purpose:
  3995. // Performs factor-of-4 downsampling of a 16x16 source block to an
  3996. // 8x8 destination block to be applied for the block encoding in
  3997. // Reduced-Resolution Update mode specified in "ITU-T Recommendation H.263,
  3998. // Annex Q.
  3999. //
  4000. // Parameters:
  4001. // pSrc Pointer to the origin of the source 16x16 block.
  4002. // srcStep Width in bytes of the source image plane.
  4003. // pDst Pointer to the origin of the destination 8x8 block.
  4004. // dstStep Width in bytes of the destination image plane.
  4005. //
  4006. // Returns:
  4007. // ippStsNoErr No errors.
  4008. // ippStsNullPtrErr At least one of the pointers is NULL.
  4009. */
  4010. IPPAPI(IppStatus, ippiDownsampleFour16x16_H263_16s_C1R, (
  4011. const Ipp16s* pSrc,
  4012. int srcStep,
  4013. Ipp16s* pDst,
  4014. int dstStep))
  4015. /* ///////////////////////////////////////////////////////////////////////////
  4016. // Name:
  4017. // ippiFilterDeblocking8x8HorEdge_H263_8u_C1IR
  4018. // ippiFilterDeblocking8x8VerEdge_H263_8u_C1IR
  4019. //
  4020. // Purpose:
  4021. // Perform deblocking filtering on bordering edges, horizontal and
  4022. // vertical respectively, of two adjacent 8x8 blocks, as specified in
  4023. // "ITU-T Recommendation H.263, Annex J, clause J.3"
  4024. //
  4025. // Parameters:
  4026. // pSrcDst Pointer to the first pixel of lower (HorEdge) or
  4027. // right (VerEdge) block.
  4028. // srcDstStep Width in bytes of the source and destination plane.
  4029. // QP Quantization parameter.
  4030. //
  4031. // Returns:
  4032. // ippStsNoErr No error.
  4033. // ippStsNullPtrErr pSrcDst pointer is NULL.
  4034. // ippStsQPErr QP is out of the range [1, 31].
  4035. */
  4036. IPPAPI(IppStatus, ippiFilterDeblocking8x8HorEdge_H263_8u_C1IR, (
  4037. Ipp8u* pSrcDst,
  4038. int srcDstStep,
  4039. int QP))
  4040. IPPAPI(IppStatus, ippiFilterDeblocking8x8VerEdge_H263_8u_C1IR, (
  4041. Ipp8u* pSrcDst,
  4042. int srcDstStep,
  4043. int QP))
  4044. /* ///////////////////////////////////////////////////////////////////////////
  4045. // Name:
  4046. // ippiFilterDeblocking16x16HorEdge_H263_8u_C1IR
  4047. // ippiFilterDeblocking16x16VerEdge_H263_8u_C1IR
  4048. //
  4049. // Purpose:
  4050. // Perform deblocking filtering on bordering edges, horizontal and
  4051. // vertical respectively, of two adjacent 16x16 blocks, as specified in
  4052. // "ITU-T Recommendation H.263, Annex Q, subclause Q.7.2"
  4053. //
  4054. // Parameters:
  4055. // pSrcDst Pointer to the first pixel of lower (HorEdge) or
  4056. // right (VerEdge) block.
  4057. // srcDstStep Width in bytes of the source and destination plane.
  4058. //
  4059. // Returns:
  4060. // ippStsNoErr No error.
  4061. // ippStsNullPtrErr pSrcDst pointer is NULL.
  4062. */
  4063. IPPAPI(IppStatus, ippiFilterDeblocking16x16HorEdge_H263_8u_C1IR, (
  4064. Ipp8u* pSrcDst,
  4065. int srcDstStep))
  4066. IPPAPI(IppStatus, ippiFilterDeblocking16x16VerEdge_H263_8u_C1IR, (
  4067. Ipp8u* pSrcDst,
  4068. int srcDstStep))
  4069. /* ///////////////////////////////////////////////////////////////////////////
  4070. // Name:
  4071. // ippiFilterBlockBoundaryHorEdge_H263_8u_C1IR
  4072. // ippiFilterBlockBoundaryVerEdge_H263_8u_C1IR
  4073. //
  4074. // Purpose:
  4075. // Perform block boundary filtering on bordering edges, horizontal and
  4076. // vertical respectively, of two adjacent 16x16 blocks, as specified in
  4077. // "ITU-T Recommendation H.263, Annex Q, subclause Q.7.1".
  4078. //
  4079. // Parameters:
  4080. // pSrcDst Pointer to the origin of the lower (HorEdge) or the right
  4081. // (VerEdge) 16x16 block.
  4082. // srcDstStep Width in bytes of the image plane.
  4083. //
  4084. // Returns:
  4085. // ippStsNoErr No errors.
  4086. // ippStsNullPtrErr The pointer is NULL.
  4087. */
  4088. IPPAPI(IppStatus, ippiFilterBlockBoundaryHorEdge_H263_8u_C1IR, (
  4089. Ipp8u* pSrcDst,
  4090. int srcDstStep))
  4091. IPPAPI(IppStatus, ippiFilterBlockBoundaryVerEdge_H263_8u_C1IR, (
  4092. Ipp8u* pSrcDst,
  4093. int srcDstStep))
  4094. /* ///////////////////////////////////////////////////////////////////////////
  4095. // Name:
  4096. // ippiReconstructCoeffsIntra_H263_1u16s
  4097. //
  4098. // Purpose:
  4099. // Performs decoding, dequantization and inverse scan of the DCT
  4100. // coefficients for one intra coded block. Intra DC decoding process is
  4101. // specified in "ITU-T Recommendation H.263, subclause 5.4.1".
  4102. // Intra AC VLC decoding process is specified in "ITU-T Recommendation H.263,
  4103. // subclause 5.4.2", and is modified as specified in the Recommendation,
  4104. // Annex T, clause T.4, when Modified Quantization mode is in use. When
  4105. // in Advanced Intra Coding mode, VLC Table I.2 from Annex I of the
  4106. // Recommendation is used for all Intra DC and Intra AC coefficients,
  4107. // otherwise Table 16 from the Recommendation is used to decode AC
  4108. // coefficients (starting from pCoef[1]) only. When not in Advanced Intra
  4109. // Coding mode, the dequantization processes for the Intra DC and for all
  4110. // other non-zero coefficients are specified in the Recommendation,
  4111. // subclause 6.2.1, otherwise all the coefficients are dequantized as
  4112. // specified in the Recommendation, Annex I, clause I.3. When not in
  4113. // Advanced Intra Coding mode and not in Modified Quantization mode, the
  4114. // output coefficients other than the Inta DC one are clipped to the range
  4115. // [-2048, 2047] (the Recommendation, subclause 6.2.2).
  4116. //
  4117. // Parameters:
  4118. // ppBitStream Pointer to pointer to the current byte in the bitstream
  4119. // buffer, updated by the function.
  4120. // pBitOffset Pointer to the bit position in the byte pointed by
  4121. // *ppBitStream. Valid within the range [0, 7],
  4122. // updated by the function.
  4123. // pCoef Pointer to the output coefficients.
  4124. // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
  4125. // the scanning order. If an error is detected while
  4126. // decoding a coefficient, the index of the last decoded
  4127. // coefficient is returned in *pIndxLastNonZero.
  4128. // If there are no correctly decoded coefficients in the
  4129. // block, *pIndxLastNonZero is set to -1.
  4130. // cbp Coded block pattern, when set to 0 indicates that the
  4131. // block contains only Intra DC coefficient.
  4132. // QP Quantization parameter.
  4133. // advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
  4134. // mode is in use, equal to 0 otherwise.
  4135. // scan Type of the inverse scan, takes one of the following values:
  4136. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  4137. // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
  4138. // IPPVC_SCAN_VERTICAL - alternate-vertical scan.
  4139. // modQuantFlag Flag equal to a non-zero value when Modified Quantization
  4140. // mode is in use, equal to 0 otherwise.
  4141. //
  4142. // Returns:
  4143. // ippStsNoErr No errors.
  4144. // ippStsNullPtrErr At least one of the pointers is NULL.
  4145. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4146. // ippStsVLCErr Illegal VL code is detected through the stream
  4147. // processing.
  4148. // ippStsQPErr QP is out of the range [1, 31].
  4149. */
  4150. IPPAPI(IppStatus, ippiReconstructCoeffsIntra_H263_1u16s, (
  4151. Ipp8u** ppBitStream,
  4152. int* pBitOffset,
  4153. Ipp16s* pCoef,
  4154. int* pIndxLastNonZero,
  4155. int cbp,
  4156. int QP,
  4157. int advIntraFlag,
  4158. int scan,
  4159. int modQuantFlag))
  4160. /* ///////////////////////////////////////////////////////////////////////////
  4161. // Name:
  4162. // ippiReconstructCoeffsInter_H263_1u16s
  4163. //
  4164. // Purpose:
  4165. // Performs decoding, dequantization and inverse zigzag scan of the DCT
  4166. // coefficients for one inter coded block. Inter DCT VLC decoding process
  4167. // is specified in "ITU-T Recommendation H.263, subclause 5.4.2", and is
  4168. // modified as specified in the Recommendation, Annex T, clause T.4, when
  4169. // Modified Quantization mode is in use. The dequantization process is
  4170. // specified in the Recommendation, subclause 6.2.1. When not in
  4171. // Modified Quantization mode, the output coefficients are clipped to the
  4172. // range [-2048, 2047] (the Recommendation, subclause 6.2.2).
  4173. //
  4174. // Parameters:
  4175. // ppBitStream Pointer to pointer to the current byte in the bitstream
  4176. // buffer, updated by the function.
  4177. // pBitOffset Pointer to the bit position in the byte pointed by
  4178. // *ppBitStream. Valid within the range [0, 7],
  4179. // updated by the function.
  4180. // pCoef Pointer to the output coefficients.
  4181. // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
  4182. // the scanning order. If an error is detected while
  4183. // decoding a coefficient, the index of the last decoded
  4184. // coefficient is returned in *pIndxLastNonZero.
  4185. // If there are no correctly decoded coefficients in the
  4186. // block, *pIndxLastNonZero is set to -1.
  4187. // QP Quantization parameter.
  4188. // modQuantFlag Flag equal to a non-zero value when Modified Quantization
  4189. // mode is in use, equal to 0 otherwise.
  4190. //
  4191. // Returns:
  4192. // ippStsNoErr No errors.
  4193. // ippStsNullPtrErr At least one of the pointers is NULL.
  4194. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4195. // ippStsVLCErr Illegal VL code is detected through the stream
  4196. // processing.
  4197. // ippStsQPErr QP is out of the range [1, 31].
  4198. */
  4199. IPPAPI(IppStatus, ippiReconstructCoeffsInter_H263_1u16s, (
  4200. Ipp8u** ppBitStream,
  4201. int* pBitOffset,
  4202. Ipp16s* pCoef,
  4203. int* pIndxLastNonZero,
  4204. int QP,
  4205. int modQuantFlag))
  4206. /* ///////////////////////////////////////////////////////////////////////////
  4207. // Name:
  4208. // ippiEncodeDCIntra_H263_16s1u
  4209. //
  4210. // Purpose:
  4211. // Performs fixed length encoding of the DC coefficient for one Intra coded
  4212. // block and puts the code into the bitstream. Intra DC encoding process is
  4213. // specified in "ITU-T Recommendation H.263, subclause 5.4.1".
  4214. //
  4215. // Parameters:
  4216. // qDC Quantized DC coefficient.
  4217. // ppBitStream Pointer to pointer to the current byte in the bitstream
  4218. // buffer, updated by the function.
  4219. // pBitOffset Pointer to the bit position in the byte pointed by
  4220. // *ppBitStream. Valid within the range [0, 7],
  4221. // updated by the function.
  4222. // Returns:
  4223. // ippStsNoErr No error.
  4224. // ippStsNullPtrErr At least one of the pointers is NULL.
  4225. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4226. */
  4227. IPPAPI(IppStatus, ippiEncodeDCIntra_H263_16s1u, (
  4228. Ipp16s qDC,
  4229. Ipp8u** ppBitStream,
  4230. int* pBitOffset))
  4231. /* ///////////////////////////////////////////////////////////////////////////
  4232. // Name:
  4233. // ippiEncodeCoeffsIntra_H263_16s1u
  4234. //
  4235. // Purpose:
  4236. // Performs encoding of the quantized AC coefficients in a scan order for
  4237. // one Intra coded block, and puts the codes into the bitstream. Intra AC
  4238. // VLC encoding process is specified in "ITU-T Recommendation H.263,
  4239. // subclause 5.4.2", and is modified as specified in the Recommendation,
  4240. // Annex T, clause T.4, when Modified Quantization mode is in use. When in
  4241. // Advanced Intra Coding mode, VLC Table I.2 from Annex I of the
  4242. // Recommendation is used for all Intra DC and Intra AC coefficients,
  4243. // otherwise Table 16 from the Recommendation is used to encode AC
  4244. // coefficients (starting from pQCoef[1]) only.
  4245. //
  4246. // Parameters:
  4247. // pQCoef Pointer to the array of quantized DCT coefficients.
  4248. // ppBitStream Pointer to pointer to the current byte in the bitstream
  4249. // buffer, updated by the function.
  4250. // pBitOffset Pointer to the bit position in the byte pointed by
  4251. // *ppBitStream. Valid within the range [0, 7],
  4252. // updated by the function.
  4253. // countNonZero Number of non-zero coefficients in the block.
  4254. // Valid within the range [1, 64].
  4255. // advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
  4256. // mode is in use, equal to 0 otherwise.
  4257. // modQuantFlag Flag equal to a non-zero value when Modified Quantization
  4258. // mode is in use, equal to 0 otherwise.
  4259. // scan Type of the scan to be performed on the coefficients before
  4260. // encoding, takes one of the following values:
  4261. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  4262. // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
  4263. // IPPVC_SCAN_VERTICAL - alternate-vertical scan,
  4264. // IPPVC_SCAN_NONE, indicating that no scan is to be
  4265. // performed (the input coefficients are already in a scan
  4266. // order).
  4267. //
  4268. // Returns:
  4269. // ippStsNoErr No error.
  4270. // ippStsNullPtrErr At least one of the pointers is NULL.
  4271. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4272. // ippStsOutOfRangeErr countNonZero is out of the range [1, 64].
  4273. */
  4274. IPPAPI(IppStatus, ippiEncodeCoeffsIntra_H263_16s1u, (
  4275. Ipp16s* pQCoef,
  4276. Ipp8u** ppBitStream,
  4277. int* pBitOffset,
  4278. int countNonZero,
  4279. int advIntraFlag,
  4280. int modQuantFlag,
  4281. int scan))
  4282. /* ///////////////////////////////////////////////////////////////////////////
  4283. // Name:
  4284. // ippiEncodeCoeffsInter_H263_16s1u
  4285. //
  4286. // Purpose:
  4287. // Performs encoding of the quantized DCT coefficients in a scan order for
  4288. // one Inter coded block, and puts the codes into the bitstream. Inter DCT
  4289. // VLC encoding process is specified in "ITU-T Recommendation H.263,
  4290. // subclause 5.4.2", and is modified as specified in the Recommendation,
  4291. // Annex T, clause T.4, when Modified Quantization mode is in use.
  4292. //
  4293. // Parameters:
  4294. // pQCoef Pointer to the array of quantized DCT coefficients.
  4295. // ppBitStream Pointer to pointer to the current byte in the bitstream
  4296. // buffer, updated by the function.
  4297. // pBitOffset Pointer to the bit position in the byte pointed by
  4298. // *ppBitStream. Valid within the range [0, 7],
  4299. // updated by the function.
  4300. // countNonZero Number of non-zero coefficients in the block.
  4301. // Valid within the range [1, 64].
  4302. // modQuantFlag Flag equal to a non-zero value when Modified Quantization
  4303. // mode is in use, equal to 0 otherwise.
  4304. // scan Type of the scan to be performed on the coefficients before
  4305. // encoding, takes one of the following values:
  4306. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  4307. // IPPVC_SCAN_NONE, indicating that no scan is to be
  4308. // performed (the input coefficients are already in the scan
  4309. // order).
  4310. //
  4311. // Returns:
  4312. // ippStsNoErr No error.
  4313. // ippStsNullPtrErr At least one of the pointers is NULL.
  4314. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4315. // ippStsOutOfRangeErr countNonZero is out of the range [1, 64].
  4316. */
  4317. IPPAPI(IppStatus, ippiEncodeCoeffsInter_H263_16s1u, (
  4318. Ipp16s* pQCoef,
  4319. Ipp8u** ppBitStream,
  4320. int* pBitOffset,
  4321. int countNonZero,
  4322. int modQuantFlag,
  4323. int scan))
  4324. /* ///////////////////////////////////////////////////////////////////////////
  4325. // Name:
  4326. // ippiQuantIntra_H263_16s_C1I
  4327. //
  4328. // Purpose:
  4329. // Performs quantization on Intra coded block according to H.263 standard.
  4330. // The standard specifies dequantization process, while quantization
  4331. // decision levels are not defined. When not in Advanced Intra Coding mode,
  4332. // the Intra DC coefficient is dequantized using uniformly placed
  4333. // reconstruction levels with a step size of 8, and the other DCT
  4334. // coefficients are reconstructed using equally spaced levels with a
  4335. // central dead-zone around zero and with a step size of 2*QP
  4336. // ("ITU-T Recommendation H.263, subclauses 4.2.4, 6.2"). When in Advanced
  4337. // Intra Coding mode, all the block coefficients are dequantized using a
  4338. // reconstruction spacing without a dead-zone and with a step size of 2*QP
  4339. // ("ITU-T Recommendation H.263, Annex I, clause I.3"). When not in
  4340. // Modified Quantization mode, the quantized Intra DC coefficient (when not
  4341. // in Advanced Intra Coding mode) is clipped to the range [1, 254], and the
  4342. // other quantized coefficients (all coefficients, if in Advanced Intra
  4343. // Coding mode) are clipped to the range [-127, 127].
  4344. //
  4345. // Parameters:
  4346. // pSrcDst Pointer to the decoded DCT coefficient of the current
  4347. // block
  4348. // QP Quantization parameter.
  4349. // pCountNonZero Pointer to the number of non-zero coefficients after
  4350. // quantization
  4351. // advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
  4352. // mode is in use, equal to 0 otherwise.
  4353. // modQuantFlag Flag equal to a non-zero value when Modified Quantization
  4354. // mode is in use, equal to 0 otherwise.
  4355. //
  4356. // Returns:
  4357. // ippStsNoErr No error.
  4358. // ippStsNullPtrErr At least one input pointer is NULL.
  4359. // ippStsQPErr QP is out of the range [1, 31].
  4360. //
  4361. */
  4362. IPPAPI(IppStatus, ippiQuantIntra_H263_16s_C1I, (
  4363. Ipp16s* pSrcDst,
  4364. int QP,
  4365. int* pCountNonZero,
  4366. int advIntraFlag,
  4367. int modQuantFlag))
  4368. /* ///////////////////////////////////////////////////////////////////////////
  4369. // Name:
  4370. // ippiQuantInter_H263_16s_C1I
  4371. //
  4372. // Purpose:
  4373. // Performs quantization on Inter coded block according to H.263 standard.
  4374. // The standard specifies dequantization process, while quantization
  4375. // decision levels are not defined. The DCT coefficients are reconstructed
  4376. // using equally spaced levels with a central dead-zone around zero and
  4377. // with a step size of 2*QP ("ITU-T Recommendation H.263, subclauses 4.2.4,
  4378. // 6.2"). When not in Modified Quantization mode, the quantized coefficients
  4379. // are clipped to the range [-127, 127].
  4380. //
  4381. // Parameters:
  4382. // pSrcDst Pointer to the decoded DCT coefficient of the current
  4383. // block
  4384. // QP Quantization parameter.
  4385. // pCountNonZero Pointer to the number of non-zero coefficients after
  4386. // quantization
  4387. // modQuantFlag Flag equal to a non-zero value when Modified Quantization
  4388. // mode is in use, equal to 0 otherwise.
  4389. //
  4390. // Returns:
  4391. // ippStsNoErr No error.
  4392. // ippStsNullPtrErr At least one input pointer is NULL.
  4393. // ippStsQPErr QP is out of the range [1, 31].
  4394. //
  4395. */
  4396. IPPAPI(IppStatus, ippiQuantInter_H263_16s_C1I, (
  4397. Ipp16s* pSrcDst,
  4398. int QP,
  4399. int* pCountNonZero,
  4400. int modQuantFlag))
  4401. /* ///////////////////////////////////////////////////////////////////////////
  4402. // MPEG-4 Functions
  4403. //////////////////////////////////////////////////////////////////////////// */
  4404. /* ///////////////////////////////////////////////////////////////////////////
  4405. // Name:
  4406. // ippiFilterDeblocking8x8HorEdge_MPEG4_8u_C1IR
  4407. //
  4408. // Purpose:
  4409. // Performs deblocking filtering on a horizontal edge of two adjacent
  4410. // blocks in the reconstructed frame, which is described in Annex F.3.1.
  4411. //
  4412. // Parameters:
  4413. // pSrcDst Pointer to the first pixel of the lower block.
  4414. // step Width of the source and destination plane.
  4415. // QP Quantization parameter.
  4416. // THR1, THR2 Threshold values specifying the filter mode
  4417. //
  4418. // Returns:
  4419. // ippStsNoErr No error.
  4420. // ippStsNullPtrErr One of the specified pointers is NULL.
  4421. // ippStsQPErr QP is out of range [1, 31].
  4422. */
  4423. IPPAPI(IppStatus, ippiFilterDeblocking8x8HorEdge_MPEG4_8u_C1IR, (
  4424. Ipp8u* pSrcDst,
  4425. int step,
  4426. int QP,
  4427. int THR1,
  4428. int THR2))
  4429. /* ///////////////////////////////////////////////////////////////////////////
  4430. // Name:
  4431. // ippiFilterDeblocking8x8VerEdge_MPEG4_8u_C1IR
  4432. //
  4433. // Purpose:
  4434. // Performs deblocking filtering on a vertical edge of two adjacent
  4435. // blocks in the reconstructed frame, which is described in Annex F.3.1.
  4436. //
  4437. // Parameters:
  4438. // pSrcDst Pointer to the first pixel of the right block.
  4439. // step Width of the source and destination plane.
  4440. // QP Quantization parameter.
  4441. // THR1,THR2 Threshold values specifying the filter mode
  4442. //
  4443. // Returns:
  4444. // ippStsNoErr No error.
  4445. // ippStsNullPtrErr One of the specified pointers is NULL.
  4446. // ippStsQPErr QP is out of range [1, 31].
  4447. */
  4448. IPPAPI(IppStatus, ippiFilterDeblocking8x8VerEdge_MPEG4_8u_C1IR, (
  4449. Ipp8u* pSrcDst,
  4450. int step,
  4451. int QP,
  4452. int THR1,
  4453. int THR2))
  4454. /* ///////////////////////////////////////////////////////////////////////////
  4455. // Name:
  4456. // ippiFilterDeringingThreshold_MPEG4_8u_P3R
  4457. //
  4458. // Purpose:
  4459. // Computes threshold values of 6 blocks in one macroblock
  4460. // (4Y, Cb, Cr) for the deringing filter described in Annex F.3.2.1.
  4461. //
  4462. // Parameters:
  4463. // pSrcY Pointer to the first pixel of the first Y block
  4464. // in the current macroblock.
  4465. // stepY Width of the Y plane.
  4466. // pSrcCb Pointer to the first pixel of the Cb block
  4467. // stepCb Width of the Cb plane.
  4468. // pSrcCr Pointer to the first pixel of the Cr block
  4469. // stepCr Width of the Cr plane.
  4470. // threshold Array of 6 threshold values for each block
  4471. //
  4472. // Returns:
  4473. // ippStsNoErr No error.
  4474. // ippStsNullPtrErr One of the specified pointers is NULL.
  4475. */
  4476. IPPAPI(IppStatus, ippiFilterDeringingThreshold_MPEG4_8u_P3R, (
  4477. const Ipp8u* pSrcY,
  4478. int stepY,
  4479. const Ipp8u* pSrcCb,
  4480. int stepCb,
  4481. const Ipp8u* pSrcCr,
  4482. int stepCr,
  4483. int threshold[6]))
  4484. /* ///////////////////////////////////////////////////////////////////////////
  4485. // Name:
  4486. // ippiFilterDeringingSmooth8x8_MPEG4_8u_C1R
  4487. //
  4488. // Purpose:
  4489. // Performs index acquisition and adaptive smoothing
  4490. // (Annex F.3.2) of a block
  4491. //
  4492. // Parameters:
  4493. // pSrc Pointer to the first pixel of the source block
  4494. // srcStep Width of the source plane.
  4495. // pDst Pointer to the first pixel of the destination block
  4496. // dstStep Width of the destination plane.
  4497. // QP Quantization parameter.
  4498. // threshold Threshold values for block
  4499. //
  4500. // Returns:
  4501. // ippStsNoErr No error.
  4502. // ippStsNullPtrErr One of the specified pointers is NULL.
  4503. // ippStsQPErr QP is out of range [1, 31].
  4504. */
  4505. IPPAPI(IppStatus, ippiFilterDeringingSmooth8x8_MPEG4_8u_C1R, (
  4506. const Ipp8u* pSrc,
  4507. int srcStep,
  4508. Ipp8u* pDst,
  4509. int dstStep,
  4510. int QP,
  4511. int threshold))
  4512. /* ///////////////////////////////////////////////////////////////////////////
  4513. // Name:
  4514. // ippiEncodeDCIntra_MPEG4_16s1u
  4515. //
  4516. // Purpose:
  4517. // Encodes one DC coefficient for intra coded block.
  4518. //
  4519. // Parameters:
  4520. // dcCoeff DC coefficient to be encoded
  4521. // ppBitStream Pointer to the pointer to the current byte in
  4522. // the bitstream, it is updated after encoding.
  4523. // pBitOffset Pointer to the bit position in the byte pointed by
  4524. // *ppBitStream, it is updated after encoding.
  4525. // blockType Indicates the type of block, takes one of the following
  4526. // values:
  4527. // IPPVC_BLOCK_LUMA - for luma and alpha blocks,
  4528. // IPPVC_BLOCK_CHROMA - for chroma blocks
  4529. //
  4530. // Returns:
  4531. // ippStsNoErr No error.
  4532. // ippStsNullPtrErr One of the specified pointers is NULL.
  4533. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4534. */
  4535. IPPAPI(IppStatus, ippiEncodeDCIntra_MPEG4_16s1u, (
  4536. Ipp16s dcCoeff,
  4537. Ipp8u** ppBitStream,
  4538. int* pBitOffset,
  4539. int blockType))
  4540. /* ///////////////////////////////////////////////////////////////////////////
  4541. // Name:
  4542. // ippiEncodeCoeffsIntra_MPEG4_16s1u
  4543. //
  4544. // Purpose:
  4545. // Encodes DCT coefficients for intra coded block.
  4546. //
  4547. // Parameters:
  4548. // pCoeffs Pointer to the DCT coefficients
  4549. // ppBitStream Pointer to the pointer to the current byte in
  4550. // the bitstream, it is updated after encoding.
  4551. // pBitOffset Pointer to the bit position in the byte pointed by
  4552. // *ppBitStream, it is updated after encoding.
  4553. // countNonZero The number of nonzero coefficients
  4554. // rvlcFlag This is a flag which when set to '0' indicates that VLC
  4555. // tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
  4556. // when decoding DCT coefficients otherwise the RVLC tables
  4557. // B.23, B.24 and B.25 [ISO14496] will be used.
  4558. // noDCFlag This is a flag which when set to '0' indicates that
  4559. // pCoeffs will be encoded starting with zero element otherwise
  4560. // with first
  4561. // scan Type of the scan, takes one of the following values:
  4562. // IPPVC_SCAN_NONE, indicating do not perform scan,
  4563. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  4564. // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
  4565. // IPPVC_SCAN_VERTICAL - alternate-vertical scan
  4566. //
  4567. // Returns:
  4568. // ippStsNoErr No error.
  4569. // ippStsNullPtrErr One of the specified pointers is NULL.
  4570. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4571. */
  4572. IPPAPI(IppStatus, ippiEncodeCoeffsIntra_MPEG4_16s1u, (
  4573. const Ipp16s* pCoeffs,
  4574. Ipp8u** ppBitStream,
  4575. int* pBitOffset,
  4576. int countNonZero,
  4577. int rvlcFlag,
  4578. int noDCFlag,
  4579. int scan))
  4580. /* ///////////////////////////////////////////////////////////////////////////
  4581. // Name:
  4582. // ippiEncodeCoeffsInter_MPEG4_16s1u
  4583. //
  4584. // Purpose:
  4585. // Encodes DCT coefficients for inter coded block..
  4586. //
  4587. // Parameters:
  4588. // pCoeffs Pointer to the DCT coefficients
  4589. // ppBitStream Pointer to the pointer to the current byte in
  4590. // the bitstream, it is updated after block decoding.
  4591. // pBitOffset Pointer to the bit position in the byte pointed by
  4592. // *ppBitStream, it is updated after block decoding.
  4593. // pCoeffs Pointer to the decoded DCT coefficient of the current
  4594. // block
  4595. // countNonZero The number of nonzero coefficients
  4596. // rvlcFlag This is a flag which when set to '0' indicates that VLC
  4597. // tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
  4598. // when decoding DCT coefficients otherwise the RVLC tables
  4599. // B.23, B.24 and B.25 [ISO14496] will be used.
  4600. // scan Type of the scan, takes one of the following values:
  4601. // IPPVC_SCAN_NONE, indicating do not perform scan,
  4602. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  4603. // IPPVC_SCAN_VERTICAL - alternate-vertical scan
  4604. //
  4605. // Returns:
  4606. // ippStsNoErr No error.
  4607. // ippStsNullPtrErr One of the specified pointers is NULL.
  4608. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4609. */
  4610. IPPAPI(IppStatus, ippiEncodeCoeffsInter_MPEG4_16s1u, (
  4611. const Ipp16s* pCoeffs,
  4612. Ipp8u** ppBitStream,
  4613. int* pBitOffset,
  4614. int countNonZero,
  4615. int rvlcFlag,
  4616. int scan))
  4617. /* ///////////////////////////////////////////////////////////////////////////
  4618. // Name:
  4619. // ippiDecodeDCIntra_MPEG4_1u16s
  4620. //
  4621. // Purpose:
  4622. // Performs VLC decoding of the DC coefficient for one intra coded block
  4623. // using Intra DC VLC.
  4624. //
  4625. // Parameters:
  4626. // ppBitStream Pointer to the pointer to the current byte in
  4627. // the bitstream, it is updated after block decoding.
  4628. // pBitOffset Pointer to the bit position in the byte pointed by
  4629. // *ppBitStream, it is updated after block decoding.
  4630. // pDst Pointer to the decoded DC coefficient of the current block
  4631. // blockType Indicates the type of block, takes one of the following
  4632. // values:
  4633. // IPPVC_BLOCK_LUMA - for luma and alpha blocks,
  4634. // IPPVC_BLOCK_CHROMA - for chroma blocks
  4635. //
  4636. // Returns:
  4637. // ippStsNoErr No error.
  4638. // ippStsNullPtrErr One of the specified pointers is NULL.
  4639. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4640. // ippStsVLCCodeErr An illegal code is detected through the
  4641. // DC stream processing.
  4642. */
  4643. IPPAPI(IppStatus, ippiDecodeDCIntra_MPEG4_1u16s, (
  4644. Ipp8u** ppBitStream,
  4645. int* pBitOffset,
  4646. Ipp16s* pDst,
  4647. int blockType))
  4648. /* ///////////////////////////////////////////////////////////////////////////
  4649. // Name:
  4650. // ippiDecodeCoeffsIntra_MPEG4_1u16s
  4651. //
  4652. // Purpose:
  4653. // Performs VLC decoding of the DCT coefficient for one intra coded block
  4654. // using Intra DC VLC.
  4655. //
  4656. // Parameters:
  4657. // ppBitStream Pointer to the pointer to the current byte in
  4658. // the bitstream, it is updated after block decoding.
  4659. // pBitOffset Pointer to the bit position in the byte pointed by
  4660. // *ppBitStream, it is updated after block decoding.
  4661. // pCoeffs Pointer to the decoded DCT coefficient of the current
  4662. // block
  4663. // pIndxLastNonZero Pointer to the index of last non zero coefficient.
  4664. // In case of error during decoding the index on wich
  4665. // error occurred will be stored in pIndxLastNonZero
  4666. // rvlcFlag This is a flag which when set to '0' indicates that VLC
  4667. // tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
  4668. // when decoding DCT coefficients otherwise the RVLC tables
  4669. // B.23, B.24 and B.25 [ISO14496] will be used.
  4670. // noDCFlag This is a flag which when set to '0' indicates that
  4671. // pCoeffs will be set starting with zero element otherwise
  4672. // with first
  4673. // scan Type of the scan, takes one of the following values:
  4674. // IPPVC_SCAN_NONE, indicating do not perform inverse scan,
  4675. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  4676. // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
  4677. // IPPVC_SCAN_VERTICAL - alternate-vertical scan
  4678. //
  4679. // Returns:
  4680. // ippStsNoErr No error.
  4681. // ippStsNullPtrErr One of the specified pointers is NULL.
  4682. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4683. // ippStsVLCCodeErr An illegal code is detected through the
  4684. // DC stream processing.
  4685. */
  4686. IPPAPI(IppStatus, ippiDecodeCoeffsIntra_MPEG4_1u16s, (
  4687. Ipp8u** ppBitStream,
  4688. int* pBitOffset,
  4689. Ipp16s* pCoeffs,
  4690. int* pIndxLastNonZero,
  4691. int rvlcFlag,
  4692. int noDCFlag,
  4693. int scan))
  4694. /* ///////////////////////////////////////////////////////////////////////////
  4695. // Name:
  4696. // ippiDecodeCoeffsIntraRVLCBack_MPEG4_1u16s
  4697. //
  4698. // Purpose:
  4699. // Decodes DCT coefficients in backward direction for intra coded block
  4700. // using RVLC.
  4701. //
  4702. // Parameters:
  4703. // ppBitStream Pointer to the pointer to the current byte in
  4704. // the bitstream, it is updated after block decoding.
  4705. // pBitOffset Pointer to the bit position in the byte pointed by
  4706. // *ppBitStream, it is updated after block decoding.
  4707. // pCoeffs Pointer to the decoded DCT coefficient of the current
  4708. // block
  4709. // pIndxLastNonZero Pointer to the index of last non zero coefficient.
  4710. // In case of error during decoding the index on wich
  4711. // error occurred will be stored in pIndxLastNonZero
  4712. // noDCFlag This is a flag which when set to '0' indicates that
  4713. // pCoeffs will be set starting with zero element otherwise
  4714. // with first
  4715. //
  4716. // Returns:
  4717. // ippStsNoErr No error.
  4718. // ippStsNullPtrErr One of the specified pointers is NULL.
  4719. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4720. // ippStsVLCCodeErr An illegal code is detected through the
  4721. // DC stream processing.
  4722. */
  4723. IPPAPI(IppStatus, ippiDecodeCoeffsIntraRVLCBack_MPEG4_1u16s, (
  4724. Ipp8u** ppBitStream,
  4725. int* pBitOffset,
  4726. Ipp16s* pCoeffs,
  4727. int* pIndxLastNonZero,
  4728. int noDCFlag))
  4729. /* ///////////////////////////////////////////////////////////////////////////
  4730. // Name:
  4731. // ippiDecodeCoeffsInter_MPEG4_1u16s
  4732. //
  4733. // Purpose:
  4734. // Performs VLC decoding of the DCT coefficient for one inter coded block
  4735. // using Inter DC VLC.
  4736. //
  4737. // Parameters:
  4738. // ppBitStream Pointer to the pointer to the current byte in
  4739. // the bitstream, it is updated after block decoding.
  4740. // pBitOffset Pointer to the bit position in the byte pointed by
  4741. // *ppBitStream, it is updated after block decoding.
  4742. // pCoeffs Pointer to the decoded DCT coefficient of the current
  4743. // block
  4744. // pIndxLastNonZero Pointer to the index of last non zero coefficient.
  4745. // In case of error during decoding the index on wich
  4746. // error occurred will be stored in pIndxLastNonZero
  4747. // rvlcFlag This is a flag which when set to '0' indicates that VLC
  4748. // tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
  4749. // when decoding DCT coefficients otherwise the RVLC tables
  4750. // B.23, B.24 and B.25 [ISO14496] will be used.
  4751. // scan Type of the scan, takes one of the following values:
  4752. // IPPVC_SCAN_NONE, indicating do not perform inverse scan,
  4753. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  4754. // IPPVC_SCAN_VERTICAL - alternate-vertical scan
  4755. //
  4756. // Returns:
  4757. // ippStsNoErr No error.
  4758. // ippStsNullPtrErr One of the specified pointers is NULL.
  4759. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4760. // ippStsVLCCodeErr An illegal code is detected through the
  4761. // DC stream processing.
  4762. */
  4763. IPPAPI(IppStatus, ippiDecodeCoeffsInter_MPEG4_1u16s, (
  4764. Ipp8u** ppBitStream,
  4765. int* pBitOffset,
  4766. Ipp16s* pCoeffs,
  4767. int* pIndxLastNonZero,
  4768. int rvlcFlag,
  4769. int scan))
  4770. /* ///////////////////////////////////////////////////////////////////////////
  4771. // Name:
  4772. // ippiDecodeCoeffsInterRVLCBack_MPEG4_1u16s
  4773. //
  4774. // Purpose:
  4775. // Decodes DCT coefficients in backward direction for inter coded block
  4776. // using RVLC.
  4777. //
  4778. // Parameters:
  4779. // ppBitStream Pointer to the pointer to the current byte in
  4780. // the bitstream, it is updated after block decoding.
  4781. // pBitOffset Pointer to the bit position in the byte pointed by
  4782. // *ppBitStream, it is updated after block decoding.
  4783. // pCoeffs Pointer to the decoded DCT coefficient of the current
  4784. // block
  4785. // pIndxLastNonZero Pointer to the index of last non zero coefficient.
  4786. // In case of error during decoding the index on wich
  4787. // error occurred will be stored in pIndxLastNonZero
  4788. //
  4789. // Returns:
  4790. // ippStsNoErr No error.
  4791. // ippStsNullPtrErr One of the specified pointers is NULL.
  4792. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4793. // ippStsVLCCodeErr An illegal code is detected through the
  4794. // DC stream processing.
  4795. */
  4796. IPPAPI(IppStatus, ippiDecodeCoeffsInterRVLCBack_MPEG4_1u16s, (
  4797. Ipp8u** ppBitStream,
  4798. int* pBitOffset,
  4799. Ipp16s* pCoeffs,
  4800. int* pIndxLastNonZero))
  4801. /* ///////////////////////////////////////////////////////////////////////////
  4802. // Name:
  4803. // ippiReconstructCoeffsInter_MPEG4_1u16s
  4804. //
  4805. // Purpose:
  4806. // Performs VLC decoding of the DCT coefficient for one inter coded block
  4807. // using Inter DC VLC.
  4808. //
  4809. // Parameters:
  4810. // ppBitStream Pointer to the pointer to the current byte in
  4811. // the bitstream, it is updated after block decoding.
  4812. // pBitOffset Pointer to the bit position in the byte pointed by
  4813. // *ppBitStream, it is updated after block decoding.
  4814. // pCoeffs Pointer to the decoded DCT coefficient of the current
  4815. // block
  4816. // pIndxLastNonZero Pointer to the index of last non zero coefficient.
  4817. // In case of error during decoding the index on wich
  4818. // error occurred will be stored in pIndxLastNonZero
  4819. // rvlcFlag This is a flag which when set to '0' indicates that VLC
  4820. // tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
  4821. // when decoding DCT coefficients otherwise the RVLC tables
  4822. // B.23, B.24 and B.25 [ISO14496] will be used.
  4823. // scan Type of the scan, takes one of the following values:
  4824. // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
  4825. // IPPVC_SCAN_VERTICAL - alternate-vertical scan
  4826. // pQuantInvInterSpec Pointer to the structure IppiQuantInterSpec_16s which
  4827. // QP Quantization parameter.
  4828. //
  4829. // Returns:
  4830. // ippStsNoErr No error.
  4831. // ippStsNullPtrErr One of the specified pointers is NULL.
  4832. // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
  4833. // ippStsVLCErr An illegal code is detected through the
  4834. // stream processing.
  4835. // ippStsQPErr Indicates an error condition if QP is out of the
  4836. // range [1; 2^(bitsPerPixel - 3) - 1]
  4837. */
  4838. IPPAPI(IppStatus, ippiReconstructCoeffsInter_MPEG4_1u16s, (
  4839. Ipp8u** ppBitStream,
  4840. int* pBitOffset,
  4841. Ipp16s* pCoeffs,
  4842. int* pIndxLastNonZero,
  4843. int rvlcFlag,
  4844. int scan,
  4845. const IppiQuantInvInterSpec_MPEG4* pQuantInvInterSpec,
  4846. int QP))
  4847. /* ///////////////////////////////////////////////////////////////////////////
  4848. // Name:
  4849. // ippiQuantInvIntraInit_MPEG4
  4850. // ippiQuantInvInterInit_MPEG4
  4851. //
  4852. // Purpose:
  4853. // Initialize a IppiQuantInvIntraSpec_16s or IppiQuantInvInterSpec_MPEG4 for
  4854. // future usage in ippiQuantInvIntra_MPEG4_16s_C1I or
  4855. // ippiQuantInvInter_MPEG4_16s_C1I. If pQuantMatrix is NULL, the second
  4856. // quantization method will be used; otherwise, the first
  4857. //
  4858. // Parameters:
  4859. // pQuantMatrix Pointer to the quantization matrix size of 64.
  4860. // pSpec Pointer to the structure IppiQuantInvIntraSpec_16s or
  4861. // IppiQuantInvInterSpec_MPEG4 which will initialized.
  4862. // bitsPerPixel Video data precision used for saturation of result. This
  4863. // parameter is valid within the range [4; 12].
  4864. //
  4865. // Returns:
  4866. // ippStsNoErr No error.
  4867. // ippStsNullPtrErr Indicates an error when pointer pSpec is NULL.
  4868. // ippStsOutOfRangeErrIndicates an error when bitsPerPixel is out of
  4869. // the range [4; 12].
  4870. */
  4871. IPPAPI(IppStatus, ippiQuantInvIntraInit_MPEG4, (
  4872. const Ipp8u* pQuantMatrix,
  4873. IppiQuantInvIntraSpec_MPEG4* pSpec,
  4874. int bitsPerPixel))
  4875. IPPAPI(IppStatus, ippiQuantInvInterInit_MPEG4, (
  4876. const Ipp8u* pQuantMatrix,
  4877. IppiQuantInvInterSpec_MPEG4* pSpec,
  4878. int bitsPerPixel))
  4879. /* ///////////////////////////////////////////////////////////////////////////
  4880. // Name:
  4881. // ippiQuantInvIntraGetSize_MPEG4
  4882. // ippiQuantInvInterGetSize_MPEG4
  4883. //
  4884. // Purpose:
  4885. // Return size of IppiQuantInvIntraSpec_MPEG4 or IppiQuantInvInterSpec_MPEG4.
  4886. //
  4887. // Parameters:
  4888. // pSpecSize Pointer to the resulting size of the structure
  4889. // IppiQuantInvIntraSpec_MPEG4 or IppiQuantInvInterSpec_MPEG4.
  4890. //
  4891. // Returns:
  4892. // ippStsNoErr No error.
  4893. // ippStsNullPtrErr Indicates an error when pointer pSpecSize is NULL.
  4894. */
  4895. IPPAPI(IppStatus, ippiQuantInvIntraGetSize_MPEG4, (
  4896. int* pSpecSize))
  4897. IPPAPI(IppStatus, ippiQuantInvInterGetSize_MPEG4, (
  4898. int* pSpecSize))
  4899. /* ///////////////////////////////////////////////////////////////////////////
  4900. // Name:
  4901. // ippiQuantInvIntra_MPEG4_16s_C1I
  4902. // ippiQuantInvInter_MPEG4_16s_C1I
  4903. //
  4904. // Purpose:
  4905. // Perform inverse quantization. Output coefficients are saturated to lie
  4906. // in the range: [-2^(bitsPerPixel + 3); 2^(bitsPerPixel + 3) - 1]. If the
  4907. // index of last nonzero coefficient is known the parameter len may be set
  4908. // to indxLastNonZero + 1 otherwise the len should be set to 64
  4909. //
  4910. // Parameters:
  4911. // pCoeffs Pointer to the decoded DCT coefficient of the current
  4912. // block
  4913. // indxLastNonZero The index of last non zero coeff..
  4914. // pSpec Pointer to the structure IppiQuantInvIntraSpec_MPEG4 or
  4915. // IppiQuantInvInterSpec_MPEG4 which will initialized.
  4916. // QP Quantization parameter.
  4917. // blockType Indicates the type of block, takes one of the following
  4918. // values:
  4919. // IPPVC_BLOCK_LUMA - for luma and alpha blocks,
  4920. // IPPVC_BLOCK_CHROMA - for chroma blocks
  4921. // Returns:
  4922. // ippStsNoErr No error.
  4923. // ippStsNullPtrErr At least one input pointer is NULL
  4924. // ippStsQPErr Indicates an error condition if QP is out of the
  4925. // range [1; 2^(bitsPerPixel - 3) - 1]
  4926. */
  4927. IPPAPI(IppStatus, ippiQuantInvIntra_MPEG4_16s_C1I, (
  4928. Ipp16s* pCoeffs,
  4929. int indxLastNonZero,
  4930. const IppiQuantInvIntraSpec_MPEG4* pSpec,
  4931. int QP,
  4932. int blockType))
  4933. IPPAPI(IppStatus, ippiQuantInvInter_MPEG4_16s_C1I, (
  4934. Ipp16s* pCoeffs,
  4935. int indxLastNonZero,
  4936. const IppiQuantInvInterSpec_MPEG4* pSpec,
  4937. int QP))
  4938. /* ///////////////////////////////////////////////////////////////////////////
  4939. // Name:
  4940. // ippiQuantIntraInit_MPEG4
  4941. // ippiQuantInterInit_MPEG4
  4942. //
  4943. // Purpose:
  4944. // Initialize a IppiQuantIntraSpec_MPEG4 or IppiQuantInterSpec_MPEG4 for
  4945. // future usage in ippiQuantIntra_MPEG4_16s_C1I or
  4946. // ippiQuantInter_MPEG4_16s_C1I. If pQuantMatrix is NULL, the second
  4947. // quantization method will be used; otherwise, the first
  4948. //
  4949. // Parameters:
  4950. // pQuantMatrix Pointer to the quantization matrix size of 64.
  4951. // pSpec Pointer to the structure IppiQuantIntraSpec_MPEG4 or
  4952. // IppiQuantInterSpec_MPEG4 which will initialized.
  4953. // bitsPerPixel Video data precision used for saturation of result. This
  4954. // parameter is valid within the range [4; 12].
  4955. //
  4956. // Returns:
  4957. // ippStsNoErr No error.
  4958. // ippStsNullPtrErr Indicates an error when pointer pSpec is NULL.
  4959. // ippStsOutOfRangeErrIndicates an error when bitsPerPixel is out of
  4960. // the range [4; 12].
  4961. */
  4962. IPPAPI(IppStatus, ippiQuantIntraInit_MPEG4, (
  4963. const Ipp8u* pQuantMatrix,
  4964. IppiQuantIntraSpec_MPEG4* pSpec,
  4965. int bitsPerPixel))
  4966. IPPAPI(IppStatus, ippiQuantInterInit_MPEG4, (
  4967. const Ipp8u* pQuantMatrix,
  4968. IppiQuantInterSpec_MPEG4* pSpec,
  4969. int bitsPerPixel))
  4970. /* ///////////////////////////////////////////////////////////////////////////
  4971. // Name:
  4972. // ippiQuantIntraGetSize_MPEG4
  4973. // ippiQuantInterGetSize_MPEG4
  4974. //
  4975. // Purpose:
  4976. // Return size of IppiQuantIntraSpec_MPEG4 or IppiQuantInterSpec_MPEG4.
  4977. //
  4978. // Parameters:
  4979. // pSpecSize Pointer to the resulting size of the structure
  4980. // IppiQuantIntraSpec_MPEG4 or IppiQuantInterSpec_MPEG4.
  4981. //
  4982. // Returns:
  4983. // ippStsNoErr No error.
  4984. // ippStsNullPtrErr Indicates an error when pointer pSpecSize is NULL.
  4985. */
  4986. IPPAPI(IppStatus, ippiQuantIntraGetSize_MPEG4, (
  4987. int* pSpecSize))
  4988. IPPAPI(IppStatus, ippiQuantInterGetSize_MPEG4, (
  4989. int* pSpecSize))
  4990. /* ///////////////////////////////////////////////////////////////////////////
  4991. // Name:
  4992. // ippiQuantIntra_MPEG4_16s_C1I
  4993. // ippiQuantInter_MPEG4_16s_C1I
  4994. //
  4995. // Purpose:
  4996. // Perform quantization. Output coefficients are saturated to lie in the
  4997. // range: [-2047; 2047]. Also these functions calculate the number of
  4998. // nonzero coefficients after quantization
  4999. //
  5000. // Parameters:
  5001. // pCoeffs Pointer to the decoded DCT coefficient of the current
  5002. // block
  5003. // pSpec Pointer to the structure IppiQuantIntraSpec_MPEG4 or
  5004. // IppiQuantInterSpec_MPEG4 which will initialized.
  5005. // QP Quantization parameter.
  5006. // pCountNonZero Pointer to the count of non zero coefficients.
  5007. // blockType Indicates the type of block, takes one of the following
  5008. // values:
  5009. // IPPVC_BLOCK_LUMA - for luma and alpha blocks,
  5010. // IPPVC_BLOCK_CHROMA - for chroma blocks
  5011. // len The number of coefficients to dequantize.
  5012. // Returns:
  5013. // ippStsNoErr No error.
  5014. // ippStsNullPtrErr At least one input pointer is NULL
  5015. // ippStsQPErr Indicates an error condition if QP is out of the
  5016. // range [1; 2^(bitsPerPixel - 3) - 1]
  5017. */
  5018. IPPAPI(IppStatus, ippiQuantIntra_MPEG4_16s_C1I, (
  5019. Ipp16s* pCoeffs,
  5020. const IppiQuantIntraSpec_MPEG4* pSpec,
  5021. int QP,
  5022. int* pCountNonZero,
  5023. int blockType))
  5024. IPPAPI(IppStatus, ippiQuantInter_MPEG4_16s_C1I, (
  5025. Ipp16s* pCoeffs,
  5026. const IppiQuantInterSpec_MPEG4* pSpec,
  5027. int QP,
  5028. int* pCountNonZero))
  5029. /* ///////////////////////////////////////////////////////////////////////////
  5030. // Name:
  5031. // ippiWarpInit_MPEG4
  5032. //
  5033. // Purpose:
  5034. // Init an IppiWarpSpec_MPEG4 structure for further usage in GMC or Sprite
  5035. // reconstruction
  5036. //
  5037. // Parameters:
  5038. // pSpec Pointer to the IppiWarpSpec_MPEG4 structure.
  5039. // pDU Pointer to array of the x-coordinate of warping points
  5040. // pDV Pointer to array of the y-coordinate of warping points
  5041. // numWarpingPoints The number of warping points, valid in [0-4].
  5042. // spriteType Indicates a sprite coding mode,
  5043. // IPPVC_SPRITE_STATIC - static sprites
  5044. // IPPVC_SPRITE_GMC - GMC(Global Motion Compensation)
  5045. // warpingAccuracy The accuracy of warping, valid in [0-3].
  5046. // roundingType Parameter that determines type of rounding for pixel
  5047. // approximation; may be 0 or 1
  5048. // quarterSample Parameter that indicates a quarter sample mode;
  5049. // may be 0 or 1.
  5050. // fcode Parameter that determines the range of motion vector,
  5051. // valid in diapason [1-7]
  5052. // spriteRect Parameter that determines rectangle region for Sprite
  5053. // (or ref VOP for GMC)
  5054. // vopRect Parameter that determines rectangle region for
  5055. // current VOP
  5056. //
  5057. // Returns:
  5058. // ippStsNoErr No error.
  5059. // ippStsNullPtrErr Indicates an error when pSpec is NULL or pDU,pDV are
  5060. // NULL for numWarpingPoints > 0.
  5061. // ippStsSizeErr Indicates an error when width or height of images is
  5062. // less than or equal to zero
  5063. // ippStsOutOfRangeErr Indicates an error when numWarpingPoints or
  5064. // warpingAccuracy are out of valid diapason.
  5065. */
  5066. IPPAPI(IppStatus, ippiWarpInit_MPEG4, (
  5067. IppiWarpSpec_MPEG4* pSpec,
  5068. const int* pDU,
  5069. const int* pDV,
  5070. int numWarpingPoints,
  5071. int spriteType,
  5072. int warpingAccuracy,
  5073. int roundingType,
  5074. int quarterSample,
  5075. int fcode,
  5076. const IppiRect* spriteRect,
  5077. const IppiRect* vopRect))
  5078. /* ///////////////////////////////////////////////////////////////////////////
  5079. // Name:
  5080. // ippiWarpGetSize_MPEG4
  5081. //
  5082. // Purpose:
  5083. // Return size of IppiWarpSpec_MPEG4 structure
  5084. //
  5085. // Parameters:
  5086. // pSpecSize Pointer to the resulting size of the structure
  5087. // IppiWarpSpec_MPEG4.
  5088. // Returns:
  5089. // ippStsNoErr No error.
  5090. // ippStsNullPtrErr Indicates an error when pointer pSpecSize is NULL.
  5091. */
  5092. IPPAPI(IppStatus, ippiWarpGetSize_MPEG4, (
  5093. int* pSpecSize))
  5094. /* ///////////////////////////////////////////////////////////////////////////
  5095. // Name:
  5096. // ippiWarpLuma_MPEG4_8u_C1R
  5097. //
  5098. // Purpose:
  5099. // Warp an arbitrary luma rectangular region according motion parameters
  5100. // stored in IppiWarpSpec_MPEG4 structure
  5101. //
  5102. // Parameters:
  5103. // pSrcY Pointer to the origin of the source plane.
  5104. // srcStep Step in bytes through the source plane
  5105. // pDst Pointer to the destination region.
  5106. // dstStep Step in bytes through the destination plane
  5107. // dstRect The rectangular destination region
  5108. // pSpec Pointer to the structure with motion parameters.
  5109. // Returns:
  5110. // ippStsNoErr No error.
  5111. // ippStsNullPtrErr Indicates an error when at least one pointer is NULL.
  5112. */
  5113. IPPAPI(IppStatus, ippiWarpLuma_MPEG4_8u_C1R, (
  5114. const Ipp8u* pSrcY,
  5115. int srcStepY,
  5116. Ipp8u* pDstY,
  5117. int dstStepY,
  5118. const IppiRect* dstRect,
  5119. const IppiWarpSpec_MPEG4* pSpec))
  5120. /* ///////////////////////////////////////////////////////////////////////////
  5121. // Name:
  5122. // ippiWarpChroma_MPEG4_8u_P2R
  5123. //
  5124. // Purpose:
  5125. // Warp an arbitrary chroma rectangular region according motion parameters
  5126. // stored in IppiWarpSpec_MPEG4 structure
  5127. //
  5128. // Parameters:
  5129. // pSrcCb Pointer to the origin of the first source plane.
  5130. // srcStepCb Step in bytes through the first source plane
  5131. // pSrcCr Pointer to the origin of the second source plane.
  5132. // srcStepCr Step in bytes through the second source plane
  5133. // pDstCb Pointer to the first destination plane.
  5134. // dstStepCb Step in bytes through the first destination plane
  5135. // pDstCr Pointer to the second destination plane.
  5136. // dstStepCr Step in bytes through the second destination plane
  5137. // dstRect The rectangular destination region
  5138. // pSpec Pointer to the structure with motion parameters.
  5139. // Returns:
  5140. // ippStsNoErr No error.
  5141. // ippStsNullPtrErr Indicates an error when at least one pointer is NULL.
  5142. */
  5143. IPPAPI(IppStatus, ippiWarpChroma_MPEG4_8u_P2R, (
  5144. const Ipp8u* pSrcCb,
  5145. int srcStepCb,
  5146. const Ipp8u* pSrcCr,
  5147. int srcStepCr,
  5148. Ipp8u* pDstCb,
  5149. int dstStepCb,
  5150. Ipp8u* pDstCr,
  5151. int dstStepCr,
  5152. const IppiRect* dstRect,
  5153. const IppiWarpSpec_MPEG4* pSpec))
  5154. /* ///////////////////////////////////////////////////////////////////////////
  5155. // Name:
  5156. // ippiCalcGlobalMV_MPEG4
  5157. //
  5158. // Purpose:
  5159. // Calculate a Global Motion Vector for one macroblock according motion
  5160. // parameters stored in IppiWarpSpec_MPEG4 structure
  5161. //
  5162. // Parameters:
  5163. // xOffset The left coordinate of top-left corner of luma 16x16 block
  5164. // yOffset The top coordinate of top-left corner of luma 16x16 block
  5165. // pGMV Pointer to the resulting motion vector.
  5166. // pSpec Pointer to the structure with motion parameters.
  5167. // Returns:
  5168. // ippStsNoErr No error.
  5169. // ippStsNullPtrErr Indicates an error when at least one pointer is NULL.
  5170. */
  5171. IPPAPI(IppStatus, ippiCalcGlobalMV_MPEG4, (
  5172. int xOffset,
  5173. int yOffset,
  5174. IppMotionVector* pGMV,
  5175. const IppiWarpSpec_MPEG4* pSpec))
  5176. /* ///////////////////////////////////////////////////////////////////////////
  5177. // Name:
  5178. // ippiChangeSpriteBrightness_MPEG4_8u_C1IR
  5179. //
  5180. // Purpose:
  5181. // Change brightness after sprite warping
  5182. //
  5183. // Parameters:
  5184. // pSrcDst Pointer to the video plane.
  5185. // srcDstStep Step in bytes through the video plane
  5186. // width The width of the video plane
  5187. // height The height of the video plane
  5188. // brightnessChangeFactor Factor for changing brightness; valid in diapason
  5189. // [-112; 1648]
  5190. // Returns:
  5191. // ippStsNoErr No error.
  5192. // ippStsNullPtrErr Indicates an error when at least one pointer is NULL.
  5193. // ippStsOutOfRangeErrIndicates an error when brightnessChangeFactor is out
  5194. // of valid diapason.
  5195. */
  5196. IPPAPI(IppStatus, ippiChangeSpriteBrightness_MPEG4_8u_C1IR, (
  5197. Ipp8u* pSrcDst,
  5198. int srcDstStep,
  5199. int width,
  5200. int height,
  5201. int brightnessChangeFactor))
  5202. /* ///////////////////////////////////////////////////////////////////////////
  5203. // Name:
  5204. // ippiCopy8x8QP_MPEG4_8u_C1R
  5205. // ippiCopy16x8QP_MPEG4_8u_C1R
  5206. // ippiCopy16x16QP_MPEG4_8u_C1R
  5207. //
  5208. // Purpose:
  5209. // Copy fixed sizes blocks with quarter-pixel accuracy
  5210. //
  5211. // Parameters:
  5212. // pSrc Pointer to the source block.
  5213. // srcStep Step in bytes through the source plane.
  5214. // pDst Pointer to the destination block.
  5215. // dstStep Step in bytes through the destination plane.
  5216. // acc Parameter that determines quarter-pixel accuracy.
  5217. // rounding Parameter that determines type of rounding for pixel
  5218. // interpolation; may be 0 or 1
  5219. //
  5220. // Returns:
  5221. // ippStsNoErr No error.
  5222. // ippStsNullPtrErr At least one input pointer is NULL
  5223. */
  5224. IPPAPI(IppStatus, ippiCopy8x8QP_MPEG4_8u_C1R, (
  5225. const Ipp8u* pSrc,
  5226. int srcStep,
  5227. Ipp8u* pDst,
  5228. int dstStep,
  5229. int acc,
  5230. int rounding))
  5231. IPPAPI(IppStatus, ippiCopy16x8QP_MPEG4_8u_C1R, (
  5232. const Ipp8u* pSrc,
  5233. int srcStep,
  5234. Ipp8u* pDst,
  5235. int dstStep,
  5236. int acc,
  5237. int rounding))
  5238. IPPAPI(IppStatus, ippiCopy16x16QP_MPEG4_8u_C1R, (
  5239. const Ipp8u* pSrc,
  5240. int srcStep,
  5241. Ipp8u* pDst,
  5242. int dstStep,
  5243. int acc,
  5244. int rounding))
  5245. /* ///////////////////////////////////////////////////////////////////////////
  5246. // Name:
  5247. // ippiOBMC8x8HP_MPEG4_8u_C1R
  5248. // ippiOBMC16x16HP_MPEG4_8u_C1R
  5249. // ippiOBMC8x8QP_MPEG4_8u_C1R
  5250. //
  5251. // Purpose:
  5252. // Performs the OBMC for a block with half-pixel and quarter pixel accuracy
  5253. //
  5254. // Parameters:
  5255. // pSrc Pointer to the first pixel of the reference macroblock.
  5256. // srcStep Width of the source plane.
  5257. // pDst Pointer to the first pixel of the destination macroblock.
  5258. // dstStep Width of the destination plane.
  5259. // pMVCur Pointer to the motion vector for the current block.
  5260. // pMVLeft Pointer to the motion vector for left block.
  5261. // pMVRight Pointer to the motion vector for right block.
  5262. // pMVAbove Pointer to the motion vector for above block.
  5263. // pMVBelow Pointer to the motion vector for bellow block.
  5264. // rounding Parameter specifying type of rounding according to 7.6.2.1
  5265. //
  5266. // Returns:
  5267. // ippStsNoErr No error.
  5268. // ippStsNullPtrErr One of the specified pointers is NULL.
  5269. */
  5270. IPPAPI(IppStatus, ippiOBMC8x8HP_MPEG4_8u_C1R, (
  5271. const Ipp8u* pSrc,
  5272. int srcStep,
  5273. Ipp8u* pDst,
  5274. int dstStep,
  5275. const IppMotionVector* pMVCur,
  5276. const IppMotionVector* pMVLeft,
  5277. const IppMotionVector* pMVRight,
  5278. const IppMotionVector* pMVAbove,
  5279. const IppMotionVector* pMVBelow,
  5280. int rounding))
  5281. IPPAPI(IppStatus, ippiOBMC16x16HP_MPEG4_8u_C1R, (
  5282. const Ipp8u* pSrc,
  5283. int srcStep,
  5284. Ipp8u* pDst,
  5285. int dstStep,
  5286. const IppMotionVector* pMVCur,
  5287. const IppMotionVector* pMVLeft,
  5288. const IppMotionVector* pMVRight,
  5289. const IppMotionVector* pMVAbove,
  5290. const IppMotionVector* pMVBelow,
  5291. int rounding))
  5292. IPPAPI(IppStatus, ippiOBMC8x8QP_MPEG4_8u_C1R, (
  5293. const Ipp8u* pSrc,
  5294. int srcStep,
  5295. Ipp8u* pDst,
  5296. int dstStep,
  5297. const IppMotionVector* pMVCur,
  5298. const IppMotionVector* pMVLeft,
  5299. const IppMotionVector* pMVRight,
  5300. const IppMotionVector* pMVAbove,
  5301. const IppMotionVector* pMVBelow,
  5302. int rounding))
  5303. /* ///////////////////////////////////////////////////////////////////////////
  5304. // H.264 Video Decoder Functions
  5305. //////////////////////////////////////////////////////////////////////////// */
  5306. /*////////////////////////////////////////////////////////////////////////////
  5307. // Name:
  5308. // ippiPredictIntra_4x4_H264_8u_C1IR
  5309. //
  5310. // Purpose:
  5311. // Performs intra prediction for a 4x4 luma component.
  5312. //
  5313. // Parameters:
  5314. // pSrcDst - pointer to the source and destination array
  5315. // srcDstStep - Step (in bytes) of the source and destination array,
  5316. // predMode - prediction mode, valid range [0, 8]
  5317. // avilability - flag that specifies the availability of
  5318. // the samples for prediction.
  5319. //
  5320. // Returns:
  5321. // ippStsNoErr No error
  5322. // ippStsNullPtrErr pSrcDst is NULL
  5323. // ippStsStepErr srcDstStep is less than 4
  5324. // ippStsOutOfRangeErr predMode is out of range [0,8]
  5325. */
  5326. IPPAPI(IppStatus, ippiPredictIntra_4x4_H264_8u_C1IR, (
  5327. Ipp8u* pSrcDst,
  5328. Ipp32s srcdstStep,
  5329. IppIntra4x4PredMode_H264 predMode,
  5330. Ipp32s availability))
  5331. /* ///////////////////////////////////////////////////////////////////////////
  5332. // Name:
  5333. // ippiPredictIntra_16x16_H264_8u_C1IR
  5334. //
  5335. // Purpose:
  5336. // Performs intra prediction for a 16x16 luma component.
  5337. //
  5338. // Parameters:
  5339. // pSrcDst - pointer to the source and destination array
  5340. // srcDstStep - Step (in bytes) of the source and destination array,
  5341. // predMode - prediction mode, valid range [0,3]
  5342. // avilability - flag that specifies the availability of
  5343. // the samples for prediction.
  5344. //
  5345. // Returns:
  5346. // ippStsNoErr No error
  5347. // ippStsNullPtrErr pSrcDst is NULL
  5348. // ippStsStepErr srcDstStep is less than 16
  5349. // ippStsOutOfRangeErr predMode is out of range [0,3]
  5350. */
  5351. IPPAPI(IppStatus, ippiPredictIntra_16x16_H264_8u_C1IR, (
  5352. Ipp8u* pSrcDst,
  5353. Ipp32s srcdstStep,
  5354. IppIntra16x16PredMode_H264 predMode,
  5355. Ipp32s availability))
  5356. /* ///////////////////////////////////////////////////////////////////////////
  5357. // Name:
  5358. // ippiPredictIntraChroma8x8_H264_8u_C1IR
  5359. //
  5360. // Purpose:
  5361. // Perform intra prediction for an 8x8 chroma component.
  5362. //
  5363. // Parameters:
  5364. // pSrcDst - pointer to the source and destination array
  5365. // srcDstStep - Step (in bytes) of the source and destination array,
  5366. // predMode - prediction mode, valid range [0,3]
  5367. // avilability - flag that specifies the availability of
  5368. // the samples for prediction.
  5369. //
  5370. // Returns:
  5371. // ippStsNoErr No error
  5372. // ippStsNullPtrErr pSrcDst is NULL
  5373. // ippStsStepErr srcDstStep is less than 8
  5374. // ippStsOutOfRangeErr predMode is out of range [0,3]
  5375. */
  5376. IPPAPI(IppStatus, ippiPredictIntraChroma8x8_H264_8u_C1IR, (
  5377. Ipp8u* pSrcDst,
  5378. Ipp32s srcdstStep,
  5379. IppIntraChromaPredMode_H264 predMode,
  5380. Ipp32s availability))
  5381. /* ///////////////////////////////////////////////////////////////////////////
  5382. // Name:
  5383. // ippiTransformDequantLumaDC_H264_16s_C1I
  5384. // ippiTransformDequantChromaDC_H264_16s_C1I
  5385. //
  5386. // Purpose:
  5387. // Perform integer inverse transformation and dequantization
  5388. // for 4x4 luma DC coefficients,
  5389. // and 2x2 chroma DC coefficients respectively.
  5390. //
  5391. // Parameters:
  5392. // pSrcDst - pointer to initial coefficients and resultant DC,
  5393. // QP - quantization parameter.
  5394. //
  5395. // Returns:
  5396. // ippStsNoErr No error
  5397. // ippStsNullPtrErr pSrcDst is NULL
  5398. // ippStsOutOfRangeErr QP is less than 1 or greater than 51
  5399. */
  5400. IPPAPI(IppStatus, ippiTransformDequantLumaDC_H264_16s_C1I, (
  5401. Ipp16s* pSrcDst,
  5402. Ipp32s QP))
  5403. IPPAPI(IppStatus, ippiTransformDequantChromaDC_H264_16s_C1I, (
  5404. Ipp16s* pSrcDst,
  5405. Ipp32s QP))
  5406. /* ///////////////////////////////////////////////////////////////////////////
  5407. // Name:
  5408. // ippiDequantTransformResidual_H264_16s_C1I
  5409. //
  5410. // Purpose:
  5411. // Places a DC coefficient (if any) to its place,
  5412. // Performs dequantization, integer inverse transformation and
  5413. // shift by 6 bits for 4x4 block of residuals.
  5414. //
  5415. // Parameters:
  5416. // pSrcDst - pointer to the initial coefficients and resultant residuals,
  5417. // step - step (in bytes) of the source and destination array,
  5418. // pDC - pointer to the DC coefficient. If it is set to NULL, than
  5419. // Inter 4x4 Inverse quantization is performed on the DC
  5420. // coefficient in the top left corner of the macroblock,
  5421. // otherwise function just gets it in the specified location;
  5422. // AC - flag that is not zero, if at least one AC coefficient exists,
  5423. // and equals zero otherwise.
  5424. // QP - quantization parameter.
  5425. //
  5426. // Returns:
  5427. // ippStsNoErr No error
  5428. // ippStsNullPtrErr pSrcDst is NULL
  5429. // ippStsOutOfRangeErr QP is less than 1 or greater than 51
  5430. // ippStsStepErr step is less than 8 respectively
  5431. */
  5432. IPPAPI(IppStatus, ippiDequantTransformResidual_H264_16s_C1I, (
  5433. Ipp16s* pSrcDst,
  5434. Ipp32s step,
  5435. Ipp16s* pDC,
  5436. Ipp32s AC,
  5437. Ipp32s QP))
  5438. /* ///////////////////////////////////////////////////////////////////////////
  5439. // Name:
  5440. // ippiDequantTransformResidualAndAdd_H264_16s_C1I
  5441. //
  5442. // Purpose:
  5443. // Places a DC coefficient (if any) to its place,
  5444. // Performs dequantization, integer inverse transformation and
  5445. // shift by 6 bits for 4x4 block of residuals
  5446. // with subsequent intra prediction or motion
  5447. // compensation.
  5448. //
  5449. //
  5450. // Parameters:
  5451. // pPred - pointer to the reference 4x4 block, which is used for intra
  5452. // prediction or motion compensation.
  5453. // pSrcDst - pointer to the initial coefficients and resultant residuals (4x4
  5454. // block) - array of size 16.
  5455. // pDC - pointer to the DC coefficient. In the case of Intra 4x4
  5456. // macroblock type pDC is set to NULL.
  5457. // pDst - pointer to the destination 4x4 block.
  5458. // PredStep - reference frame step in bytes.
  5459. // DstStep - destination frame step in bytes.
  5460. // QP - quantization parameter
  5461. // AC - flag that is not equal to zero, if at least one AC coefficient
  5462. // exists, and is equal to zero otherwise.
  5463. //
  5464. // Returns:
  5465. // ippStsNoErr No error
  5466. // ippStsNullPtrErr pSrcDst is NULL
  5467. // ippStsOutOfRangeErr QP is less than 1 or greater than 51
  5468. //
  5469. */
  5470. IPPAPI(IppStatus, ippiDequantTransformResidualAndAdd_H264_16s_C1I,(
  5471. const Ipp8u* pPred,
  5472. Ipp16s* pSrcDst,
  5473. Ipp16s* pDC,
  5474. Ipp8u* pDst,
  5475. Ipp32s PredStep,
  5476. Ipp32s DstStep,
  5477. Ipp32s QP,
  5478. Ipp32s AC))
  5479. /* ///////////////////////////////////////////////////////////////////////////
  5480. // Name:
  5481. // ippiFilterDeblockingLuma_VerEdge_H264_8u_C1IR
  5482. //
  5483. // Purpose:
  5484. // Performs deblocking filtering on the vertical edges of the
  5485. // luma macroblock(16x16) in accordance with 8.7.2. of H.264 standard
  5486. //
  5487. // Parameters:
  5488. // pSrcDst - pointer to the initial and resultant coefficients,
  5489. // srcdstStep - step of the arrays,
  5490. // pAlpha - array of size 2 of Alpha Thresholds(values for external
  5491. // and internal vertical edge)
  5492. // pBeta - array of size 2 of Beta Thresholds(values for external
  5493. // and internal vertical edge)
  5494. // pTresholds - array of size 16 of Thresholds (TC0)(values for
  5495. // the left edge of each 4x4 block)
  5496. // pBS - array of size 16 of BS parameters
  5497. //
  5498. //
  5499. // Notes:
  5500. // H.264 standard: JVT-G050. ITU-T Recommendation
  5501. // and Final Draft International Standard of Joint Video Specification
  5502. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  5503. //
  5504. // Returns:
  5505. // ippStsNoErr No error
  5506. // ippStsNullPtrErr One of the pointers is NULL
  5507. */
  5508. IPPAPI(IppStatus, ippiFilterDeblockingLuma_VerEdge_H264_8u_C1IR, (
  5509. Ipp8u* pSrcDst,
  5510. Ipp32s srcdstStep,
  5511. const Ipp8u* pAlpha,
  5512. const Ipp8u* pBeta,
  5513. const Ipp8u* pThresholds,
  5514. const Ipp8u* pBs))
  5515. /* ///////////////////////////////////////////////////////////////////////////
  5516. // Name:
  5517. // ippiFilterDeblockingLuma_VerEdge_MBAFF_H264_8u_C1IR
  5518. //
  5519. // Purpose:
  5520. // Performs deblocking filtering on the vertical edges of the
  5521. // luma macroblock(16x16) in accordance with 8.7.2. of H.264 standard
  5522. //
  5523. // Parameters:
  5524. // pSrcDst - pointer to the initial and resultant coefficients,
  5525. // srcdstStep - step of the arrays,
  5526. // nAlpha - Alpha Threshold (value for external vertical edge)
  5527. // nBeta - Beta Threshold (value for external vertical edge)
  5528. // pTresholds - array of size 16 of Thresholds
  5529. // pBS - array of size 16 of BS parameters
  5530. //
  5531. //
  5532. // Notes:
  5533. // H.264 standard: JVT-G050. ITU-T Recommendation
  5534. // and Final Draft International Standard of Joint Video Specification
  5535. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  5536. //
  5537. // Returns:
  5538. // ippStsNoErr No error
  5539. // ippStsNullPtrErr One of the pointers is NULL
  5540. */
  5541. IPPAPI(IppStatus, ippiFilterDeblockingLuma_VerEdge_MBAFF_H264_8u_C1IR, (
  5542. Ipp8u* pSrcDst,
  5543. Ipp32s srcdstStep,
  5544. Ipp32u nAlpha,
  5545. Ipp32u nBeta,
  5546. const Ipp8u* pThresholds,
  5547. const Ipp8u* pBs))
  5548. /* ///////////////////////////////////////////////////////////////////////////
  5549. // Name:
  5550. // ippiFilterDeblockingLuma_HorEdge_H264_8u_C1IR
  5551. //
  5552. // Purpose:
  5553. // Performs deblocking filtering on the horizontal edges of the
  5554. // luma macroblock(16x16) in accordance with 8.7.2. of H.264 standard
  5555. //
  5556. // Parameters:
  5557. // pSrcDst - pointer to the initial and resultant coefficients,
  5558. // srcdstStep - step of the arrays,
  5559. // pAlpha - array of size 2 of Alpha Thresholds(values for external
  5560. // and internal vertical edge)
  5561. // pBeta - array of size 2 of Beta Thresholds(values for external
  5562. // and internal vertical edge)
  5563. // pTresholds - array of size 16 of Thresholds (TC0)(values for
  5564. // the left edge of each 4x4 block)
  5565. // pBS - array of size 16 of BS parameters
  5566. //
  5567. //
  5568. // Notes:
  5569. // H.264 standard: JVT-G050. ITU-T Recommendation and
  5570. // Final Draft International Standard of Joint Video Specification
  5571. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  5572. //
  5573. // Returns:
  5574. // ippStsNoErr No error
  5575. // ippStsNullPtrErr One of the pointers is NULL
  5576. */
  5577. IPPAPI(IppStatus, ippiFilterDeblockingLuma_HorEdge_H264_8u_C1IR, (
  5578. Ipp8u* pSrcDst,
  5579. Ipp32s srcdstStep,
  5580. const Ipp8u* pAlpha,
  5581. const Ipp8u* pBeta,
  5582. const Ipp8u* pThresholds,
  5583. const Ipp8u* pBS))
  5584. /* ///////////////////////////////////////////////////////////////////////////
  5585. // Name:
  5586. // ippiFilterDeblockingChroma_VerEdge_H264_8u_C1IR
  5587. //
  5588. // Purpose:
  5589. // Performs deblocking filtering on the vertical edges of the
  5590. // chroma macroblock(8x8) in accordance with 8.7.2. of the H.264 standard
  5591. //
  5592. // Parameters:
  5593. // pSrcDst - pointer to the initial and resultant coefficients,
  5594. // srcdstStep - step of the arrays,
  5595. // pAlpha - array of size 2 of Alpha Thresholds(values for
  5596. // external and internal vertical edge)
  5597. // pBeta - array of size 2 of Beta Thresholds(values for
  5598. // external and internal vertical edge)
  5599. // pTresholds - array of size 16 of Thresholds (TC0)(values for
  5600. // the left edge of each 2x2 block)
  5601. // pBS - array of size 16 of BS parameters
  5602. //
  5603. //
  5604. // Notes:
  5605. // H.264 standard: JVT-G050. ITU-T Recommendation and
  5606. // Final Draft International Standard of Joint Video Specification
  5607. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  5608. //
  5609. // Returns:
  5610. // ippStsNoErr No error
  5611. // ippStsNullPtrErr One of the pointers is NULL
  5612. */
  5613. IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_H264_8u_C1IR, (
  5614. Ipp8u* pSrcDst,
  5615. Ipp32s srcdstStep,
  5616. const Ipp8u* pAlpha,
  5617. const Ipp8u* pBeta,
  5618. const Ipp8u* pThresholds,
  5619. const Ipp8u* pBS))
  5620. /* ///////////////////////////////////////////////////////////////////////////
  5621. // Name:
  5622. // ippiFilterDeblockingChroma_VerEdge_H264_8u_C2IR
  5623. //
  5624. // Purpose:
  5625. // Performs deblocking filtering on the vertical edges of the
  5626. // NV12 chroma macroblock(16x8) in accordance with 8.7.2. of the H.264 standard
  5627. //
  5628. // Parameters:
  5629. // pSrcDst - pointer to the initial and resultant coefficients in NV12 format (UV...UV),
  5630. // srcdstStep - step of the arrays,
  5631. // pAlpha - array of size 2 of Alpha Thresholds(values for
  5632. // external and internal vertical edge)
  5633. // pBeta - array of size 2 of Beta Thresholds(values for
  5634. // external and internal vertical edge)
  5635. // pTresholds - array of size 16 of Thresholds (TC0)(values for
  5636. // the left edge of each 4x2 block)
  5637. // pBS - array of size 16 of BS parameters
  5638. //
  5639. //
  5640. // Notes:
  5641. // H.264 standard: JVT-G050. ITU-T Recommendation and
  5642. // Final Draft International Standard of Joint Video Specification
  5643. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  5644. //
  5645. // Returns:
  5646. // ippStsNoErr No error
  5647. // ippStsNullPtrErr One of the pointers is NULL
  5648. */
  5649. IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_H264_8u_C2IR, (
  5650. Ipp8u* pSrcDst,
  5651. Ipp32u srcdstStep,
  5652. const Ipp8u* pAlpha,
  5653. const Ipp8u* pBeta,
  5654. const Ipp8u* pThresholds,
  5655. const Ipp8u* pBS))
  5656. /* ///////////////////////////////////////////////////////////////////////////
  5657. // Name:
  5658. // ippiFilterDeblockingChroma_VerEdge_MBAFF_H264_8u_C1IR
  5659. //
  5660. // Purpose:
  5661. // Performs deblocking filtering on the vertical edges of the
  5662. // chroma macroblock(8x8) in accordance with 8.7.2. of the H.264 standard
  5663. //
  5664. // Parameters:
  5665. // pSrcDst - pointer to the initial and resultant coefficients,
  5666. // srcdstStep - step of the arrays,
  5667. // nAlpha - Alpha Threshold (value for external vertical edge)
  5668. // nBeta - Beta Threshold (value for external vertical edge)
  5669. // pTresholds - array of size 16 of Thresholds
  5670. // pBS - array of size 16 of BS parameters
  5671. //
  5672. //
  5673. // Notes:
  5674. // H.264 standard: JVT-G050. ITU-T Recommendation and
  5675. // Final Draft International Standard of Joint Video Specification
  5676. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  5677. //
  5678. // Returns:
  5679. // ippStsNoErr No error
  5680. // ippStsNullPtrErr One of the pointers is NULL
  5681. */
  5682. IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_MBAFF_H264_8u_C1IR, (
  5683. Ipp8u* pSrcDst,
  5684. Ipp32s srcdstStep,
  5685. Ipp32u nAlpha,
  5686. Ipp32u nBeta,
  5687. const Ipp8u* pThresholds,
  5688. const Ipp8u* pBS))
  5689. /* ///////////////////////////////////////////////////////////////////////////
  5690. // Name:
  5691. // ippiFilterDeblockingChroma_HorEdge_H264_8u_C1IR
  5692. //
  5693. // Purpose:
  5694. // Performs deblocking filtering on the horizontal edges of the
  5695. // chroma macroblock(8x8) in accordance with 8.7.2. of H.264 standard
  5696. //
  5697. // Parameters:
  5698. // pSrcDst - pointer to the initial and resultant coefficients,
  5699. // srcdstStep - step of the arrays,
  5700. // pAlpha - array of size 2 of Alpha Thresholds (values for
  5701. // external and internal horizontal edge)
  5702. // pBeta - array of size 2 of Beta Thresholds (values for
  5703. // external and internal horizontal edge)
  5704. // pTresholds - array of size 16 of Thresholds (TC0) (values for
  5705. // the upper edge of each 2x2 block)
  5706. // pBS - array of size 16 of BS parameters (values for
  5707. // external and internal horizontal edge)
  5708. //
  5709. // Notes:
  5710. // H.264 standard: JVT-G050. ITU-T Recommendation and
  5711. // Final Draft International Standard of Joint Video Specification
  5712. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  5713. //
  5714. // Returns:
  5715. // ippStsNoErr No error
  5716. // ippStsNullPtrErr One of the pointers is NULL
  5717. */
  5718. IPPAPI(IppStatus, ippiFilterDeblockingChroma_HorEdge_H264_8u_C1IR, (
  5719. Ipp8u* pSrcDst,
  5720. Ipp32s srcdstStep,
  5721. const Ipp8u* pAlpha,
  5722. const Ipp8u* pBeta,
  5723. const Ipp8u* pThresholds,
  5724. const Ipp8u* pBS))
  5725. /* ///////////////////////////////////////////////////////////////////////////
  5726. // Name:
  5727. // ippiFilterDeblockingChroma_HorEdge_H264_8u_C2IR
  5728. //
  5729. // Purpose:
  5730. // Performs deblocking filtering on the horizontal edges of the
  5731. // chroma macroblock in NV12 format (16x8) in accordance with 8.7.2. of H.264 standard
  5732. //
  5733. // Parameters:
  5734. // pSrcDst - pointer to the initial and resultant coefficients in NV12 format (UV...UV),
  5735. // srcdstStep - step of the arrays,
  5736. // pAlpha - array of size 2 of Alpha Thresholds (values for
  5737. // external and internal horizontal edge)
  5738. // pBeta - array of size 2 of Beta Thresholds (values for
  5739. // external and internal horizontal edge)
  5740. // pTresholds - array of size 16 of Thresholds (TC0) (values for
  5741. // the upper edge of each 4x2 block)
  5742. // pBS - array of size 16 of BS parameters (values for
  5743. // external and internal horizontal edge)
  5744. //
  5745. // Notes:
  5746. // H.264 standard: JVT-G050. ITU-T Recommendation and
  5747. // Final Draft International Standard of Joint Video Specification
  5748. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  5749. //
  5750. // Returns:
  5751. // ippStsNoErr No error
  5752. // ippStsNullPtrErr One of the pointers is NULL
  5753. */
  5754. IPPAPI(IppStatus, ippiFilterDeblockingChroma_HorEdge_H264_8u_C2IR, (
  5755. Ipp8u* pSrcDst,
  5756. Ipp32u srcdstStep,
  5757. const Ipp8u* pAlpha,
  5758. const Ipp8u* pBeta,
  5759. const Ipp8u* pThresholds,
  5760. const Ipp8u* pBS))
  5761. IPPAPI(IppStatus, ippiFilterDeblockingLumaVerEdge_H264_16u_C1IR, (
  5762. const IppiFilterDeblock_16u * pDeblockInfo))
  5763. IPPAPI(IppStatus, ippiFilterDeblockingLumaVerEdgeMBAFF_H264_16u_C1IR, (
  5764. const IppiFilterDeblock_16u * pDeblockInfo))
  5765. IPPAPI(IppStatus, ippiFilterDeblockingLumaHorEdge_H264_16u_C1IR, (
  5766. const IppiFilterDeblock_16u * pDeblockInfo))
  5767. IPPAPI(IppStatus, ippiFilterDeblockingChromaVerEdge_H264_16u_C1IR, (
  5768. const IppiFilterDeblock_16u * pDeblockInfo))
  5769. IPPAPI(IppStatus, ippiFilterDeblockingChromaVerEdgeMBAFF_H264_16u_C1IR, (
  5770. const IppiFilterDeblock_16u * pDeblockInfo))
  5771. IPPAPI(IppStatus, ippiFilterDeblockingChromaHorEdge_H264_16u_C1IR, (
  5772. const IppiFilterDeblock_16u * pDeblockInfo))
  5773. IPPAPI(IppStatus, ippiFilterDeblockingChroma422VerEdge_H264_16u_C1IR, (
  5774. const IppiFilterDeblock_16u * pDeblockInfo))
  5775. IPP_DEPRECATED("This function is obsolete and not supported any more") \
  5776. IPPAPI(IppStatus, ippiFilterDeblockingChroma422VerEdgeMBAFF_H264_16u_C1IR, (
  5777. const IppiFilterDeblock_16u * pDeblockInfo))
  5778. IPPAPI(IppStatus, ippiFilterDeblockingChroma422HorEdge_H264_16u_C1IR, (
  5779. const IppiFilterDeblock_16u * pDeblockInfo))
  5780. IPPAPI(IppStatus, ippiFilterDeblockingChroma422VerEdge_H264_8u_C1IR, (
  5781. const IppiFilterDeblock_8u * pDeblockInfo))
  5782. IPP_DEPRECATED("This function is obsolete and not supported any more") \
  5783. IPPAPI(IppStatus, ippiFilterDeblockingChroma422VerEdgeMBAFF_H264_8u_C1IR, (
  5784. const IppiFilterDeblock_8u * pDeblockInfo))
  5785. IPPAPI(IppStatus, ippiFilterDeblockingChroma422HorEdge_H264_8u_C1IR, (
  5786. const IppiFilterDeblock_8u * pDeblockInfo))
  5787. /* ///////////////////////////////////////////////////////////////////////////
  5788. // Name:
  5789. // ippiInterpolateLuma_H264_8u_C1R
  5790. // ippiInterpolateLumaTop_H264_8u_C1R
  5791. // ippiInterpolateLumaBottom_H264_8u_C1R
  5792. //
  5793. // ippiInterpolateLuma_H264_16u_C1R
  5794. // ippiInterpolateLumaTop_H264_16u_C1R
  5795. // ippiInterpolateLumaBottom_H264_16u_C1R
  5796. //
  5797. // Purpose:
  5798. // Performs interpolation for motion estimation of the luma component.
  5799. //
  5800. // Parameters:
  5801. // pSrc - pointer to the source,
  5802. // srcStep - step of the source buffer in bytes
  5803. // pDst - pointer to destination (should be 16-bytes aligned),
  5804. // dstStep - step of the destination buffer in bytes,
  5805. // dx, dy - fractional parts of the motion vector in
  5806. // 1/4 pel units (0, 1, 2, or 3),
  5807. // outPixels - Number of pixels by which the data specified by pSrc reaches over the
  5808. // frame top boundary.
  5809. // roiSize - flag that specifies the dimensions of
  5810. // the ROI(could be 16, 8 or 4 in each dimension).
  5811. //
  5812. // or
  5813. //
  5814. // interpolateInfo - pointer on IppVCInterpolate_16u structure.
  5815. // outPixels - Number of pixels by which the data specified by pSrc reaches over the
  5816. // frame top boundary.
  5817. //
  5818. // Returns:
  5819. // ippStsNoErr No error
  5820. // ippStsNullPtrErr One of the pointers is NULL
  5821. // ippStsBadArg dx or dy is out of range [0, 3]
  5822. // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, or 4
  5823. */
  5824. IPPAPI(IppStatus, ippiInterpolateLuma_H264_8u_C1R, (
  5825. const Ipp8u* pSrc,
  5826. Ipp32s srcStep,
  5827. Ipp8u* pDst,
  5828. Ipp32s dstStep,
  5829. Ipp32s dx,
  5830. Ipp32s dy,
  5831. IppiSize roiSize))
  5832. IPPAPI(IppStatus, ippiInterpolateLumaTop_H264_8u_C1R, (
  5833. const Ipp8u* pSrc,
  5834. Ipp32s srcStep,
  5835. Ipp8u* pDst,
  5836. Ipp32s dstStep,
  5837. Ipp32s dx,
  5838. Ipp32s dy,
  5839. Ipp32s outPixels,
  5840. IppiSize roiSize))
  5841. IPPAPI(IppStatus, ippiInterpolateLumaBottom_H264_8u_C1R, (
  5842. const Ipp8u* pSrc,
  5843. Ipp32s srcStep,
  5844. Ipp8u* pDst,
  5845. Ipp32s dstStep,
  5846. Ipp32s dx,
  5847. Ipp32s dy,
  5848. Ipp32s outPixels,
  5849. IppiSize roiSize))
  5850. IPPAPI(IppStatus, ippiInterpolateLuma_H264_16u_C1R, (
  5851. const IppVCInterpolate_16u * interpolateInfo))
  5852. IPPAPI(IppStatus, ippiInterpolateLumaTop_H264_16u_C1R, (
  5853. const IppVCInterpolate_16u * interpolateInfo, Ipp32s outPixels))
  5854. IPPAPI(IppStatus, ippiInterpolateLumaBottom_H264_16u_C1R, (
  5855. const IppVCInterpolate_16u * interpolateInfo, Ipp32s outPixels))
  5856. IPPAPI(IppStatus, ippiInterpolateBlock_H264_8u_P2P1R, (
  5857. const Ipp8u *pSrc1,
  5858. const Ipp8u *pSrc2,
  5859. Ipp8u *pDst,
  5860. Ipp32u uWidth,
  5861. Ipp32u uHeight,
  5862. Ipp32s pitch))
  5863. /* ///////////////////////////////////////////////////////////////////////////
  5864. // Name:
  5865. // ippiInterpolateLumaBlock_H264_8u_P1R
  5866. //
  5867. // ippiInterpolateLumaBlock_H264_16u_P1R
  5868. //
  5869. // Purpose:
  5870. // Performs interpolation for motion estimation of the luminance component.
  5871. //
  5872. // Parameters:
  5873. // interpolateInfo - pointer to a structure having interpolation parameters
  5874. //
  5875. // Returns:
  5876. // ippStsNoErr No error
  5877. // ippStsNullPtrErr One of the pointers is NULL
  5878. // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, or 4
  5879. */
  5880. IPPAPI(IppStatus, ippiInterpolateLumaBlock_H264_8u_P1R, (const IppVCInterpolateBlock_8u *interpolateInfo))
  5881. IPPAPI(IppStatus, ippiInterpolateLumaBlock_H264_16u_P1R, (const IppVCInterpolateBlock_16u *interpolateInfo))
  5882. /* ///////////////////////////////////////////////////////////////////////////
  5883. // Name:
  5884. // ippiInterpolateChroma_H264_8u_C1R
  5885. // ippiInterpolateChromaTop_H264_8u_C1R
  5886. // ippiInterpolateChromaBottom_H264_8u_C1R
  5887. //
  5888. // ippiInterpolateChroma_H264_16u_C1R
  5889. // ippiInterpolateChromaTop_H264_16u_C1R
  5890. // ippiInterpolateChromaBottom_H264_16u_C1R
  5891. //
  5892. // Purpose:
  5893. // Performs interpolation for motion estimation of the chroma component.
  5894. //
  5895. // Parameters:
  5896. // pSrc - pointer to the source,
  5897. // srcStep - step of the source buffer in bytes
  5898. // pDst - pointer to destination
  5899. // dstStep - step of the destination buffer in bytes,
  5900. // dx, dy - fractional parts of the motion vector in
  5901. // 1/8 pel units (0, 1, .., 7),
  5902. // outPixels - Number of pixels by which the data specified by pSrc reaches over the
  5903. // frame top boundary.
  5904. // roiSiaze - flag that specifies the dimensions of
  5905. // the ROI(could be 16, 8, 4 or 2 in each dimension).
  5906. //
  5907. // or
  5908. //
  5909. // interpolateInfo - pointer on IppVCInterpolate_16u structure.
  5910. // outPixels - Number of pixels by which the data specified by pSrc reaches over the
  5911. // frame top boundary.
  5912. //
  5913. // Returns:
  5914. // ippStsNoErr No error
  5915. // ippStsNullPtrErr One of the pointers is NULL
  5916. // ippStsBadArg dx or dy is out of range [0,7]
  5917. // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, 4 or 2
  5918. */
  5919. IPPAPI(IppStatus, ippiInterpolateChroma_H264_8u_C1R, (
  5920. const Ipp8u* pSrc,
  5921. Ipp32s srcStep,
  5922. Ipp8u* pDst,
  5923. Ipp32s dstStep,
  5924. Ipp32s dx,
  5925. Ipp32s dy,
  5926. IppiSize roiSize))
  5927. IPPAPI(IppStatus, ippiInterpolateChromaTop_H264_8u_C1R, (
  5928. const Ipp8u* pSrc,
  5929. Ipp32s srcStep,
  5930. Ipp8u* pDst,
  5931. Ipp32s dstStep,
  5932. Ipp32s dx,
  5933. Ipp32s dy,
  5934. Ipp32s outPixels,
  5935. IppiSize roiSize))
  5936. IPPAPI(IppStatus, ippiInterpolateChromaBottom_H264_8u_C1R, (
  5937. const Ipp8u* pSrc,
  5938. Ipp32s srcStep,
  5939. Ipp8u* pDst,
  5940. Ipp32s dstStep,
  5941. Ipp32s dx,
  5942. Ipp32s dy,
  5943. Ipp32s outPixels,
  5944. IppiSize roiSize))
  5945. IPPAPI(IppStatus, ippiInterpolateChroma_H264_16u_C1R, (
  5946. const IppVCInterpolate_16u * interpolateInfo))
  5947. IPPAPI(IppStatus, ippiInterpolateChromaTop_H264_16u_C1R, (
  5948. const IppVCInterpolate_16u * interpolateInfo, Ipp32s outPixels))
  5949. IPPAPI(IppStatus, ippiInterpolateChromaBottom_H264_16u_C1R, (
  5950. const IppVCInterpolate_16u * interpolateInfo, Ipp32s outPixels))
  5951. /* ///////////////////////////////////////////////////////////////////////////
  5952. // Name:
  5953. // ippiInterpolateChroma_H264_8u_C2P2R
  5954. //
  5955. // Purpose:
  5956. // The function performs interpolation for motion estimation of the chrominance
  5957. // component according H.264 standart. Clone of ippiInterpolateChroma_H264_8u_C1R,
  5958. // but source image is chominance part of NV12 plane
  5959. // NV12 Plane
  5960. // YY YY YY YY
  5961. // YY YY YY YY
  5962. // UV UV UV UV - chominance part of NV12 plane.
  5963. //
  5964. // Parameters:
  5965. // pSrcUV - pointer to the source (chrominance part of NV12 plane).
  5966. // srcStep - step of the source buffer in bytes
  5967. // pDstU - the pointer to the destination buffer for interpolated U coefficients
  5968. // pDstV - the pointer to the destination buffer for interpolated V coefficients
  5969. // dstStep - step of the destination U & V buffers in bytes,
  5970. // dx, dy - fractional parts of the motion vector in
  5971. // 1/8 pel units (0, 1, .., 7),
  5972. // outPixels - Number of pixels by which the data specified by pSrc reaches over the
  5973. // frame top boundary.
  5974. // roi - value that specifies the dimensions of
  5975. // the ROI(could be 16, 8, 4 or 2 in each dimension).
  5976. */
  5977. IPPAPI(IppStatus, ippiInterpolateChroma_H264_8u_C2P2R, (
  5978. const Ipp8u *pSrcUV,
  5979. Ipp32s srcStep,
  5980. Ipp8u *pDstU,
  5981. Ipp8u *pDstV,
  5982. Ipp32s dstStep,
  5983. Ipp32s dx,
  5984. Ipp32s dy,
  5985. IppiSize roi))
  5986. /* ///////////////////////////////////////////////////////////////////////////
  5987. // Name:
  5988. // ippiInterpolateChromaBlock_H264_8u_P2R
  5989. //
  5990. // ippiInterpolateChromaBlock_H264_16u_P2R
  5991. //
  5992. // Purpose:
  5993. // Performs interpolation for motion estimation of the chrominance component.
  5994. //
  5995. // Parameters:
  5996. // interpolateInfo - pointer to a structure having interpolation parameters
  5997. //
  5998. // Returns:
  5999. // ippStsNoErr No error
  6000. // ippStsNullPtrErr One of the pointers is NULL
  6001. // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, 4 or 2
  6002. */
  6003. IPPAPI(IppStatus, ippiInterpolateChromaBlock_H264_8u_P2R, (const IppVCInterpolateBlock_8u *interpolateInfo))
  6004. IPPAPI(IppStatus, ippiInterpolateChromaBlock_H264_16u_P2R, (const IppVCInterpolateBlock_16u *interpolateInfo))
  6005. /* ///////////////////////////////////////////////////////////////////////////
  6006. // Name:
  6007. // ippiInterpolateChromaBlock_H264_8u_C2P2R
  6008. //
  6009. // Purpose:
  6010. // The function performs interpolation for motion estimation of the chrominance
  6011. // component according H.264 standart. Clone of ippiInterpolateChromaBlock_H264_8u_P2R,
  6012. // but source image is chominance part of NV12 plane.
  6013. // NV12 Plane
  6014. // YY YY YY YY
  6015. // YY YY YY YY
  6016. // UV UV UV UV - chominance part of NV12 plane.
  6017. //
  6018. // Parameters:
  6019. // interpolateInfo - pointer to a structure having interpolation parameters
  6020. // Note:
  6021. // (in the IppVCInterpolateBlock_8u structure)
  6022. // pSrc[0] the pointer to the source block ( chrominance part of NV12 plane).
  6023. // pSrc[1] ignored.
  6024. // 0...UV UV UV UV
  6025. // 1...UV UV UV UV
  6026. // ...
  6027. // 4...UV UV UV UV
  6028. //
  6029. // pDst[0] = pDstU - the pointer to the destination buffer for interpolated U coefficients.
  6030. // pDst[1] = pDstV - the pointer to the destination buffer for interpolated V coefficients.
  6031. //
  6032. // Returns:
  6033. // ippStsNoErr No error
  6034. // ippStsNullPtrErr One of the pointers is NULL
  6035. // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, 4 or 2
  6036. */
  6037. IPPAPI(IppStatus, ippiInterpolateChromaBlock_H264_8u_C2P2R, (const IppVCInterpolateBlock_8u *interpolateInfo))
  6038. /* ///////////////////////////////////////////////////////////////////////////
  6039. // Name:
  6040. // ippiWeightedAverage_H264_8u_C1IR
  6041. //
  6042. // Purpose:
  6043. // Averages two blocks with weights (for weighted bi-directional
  6044. // predictions) in accordance with 8.4.2.3.2 of the H.264 standard.
  6045. // dst = Clip( ( w1*src1 + w2*src2 + (1<<(shift-1)) )>>shift + offset )
  6046. //
  6047. // Parameters:
  6048. // pSrc1 - pointer to 1st source (output of preceding functions),
  6049. // pSrc2Dst - pointer to 2nd source and result
  6050. // srcDstStep - step value in bytes,
  6051. // weight1, weight2 - weights,
  6052. // shift - shift,
  6053. // offset - offset,
  6054. // roiSize - flag that specifies the dimensions of the ROI
  6055. // (could be 16, 8 or 4 in each dimension).
  6056. //
  6057. // Returns:
  6058. // ippStsNoErr No error
  6059. // ippStsNullPtrErr One of the pointers is NULL
  6060. // ippStsStepErr srcDstStep is less than roi.width
  6061. //
  6062. // Notes:
  6063. // H.264 standard: JVT-G050. ITU-T Recommendation and
  6064. // Final Draft International Standard of Joint Video Specification
  6065. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  6066. */
  6067. IPPAPI(IppStatus, ippiWeightedAverage_H264_8u_C1IR, (
  6068. const Ipp8u* pSrc1,
  6069. Ipp8u* pSrc2Dst,
  6070. Ipp32s srcDstStep,
  6071. Ipp32s weight1,
  6072. Ipp32s weight2,
  6073. Ipp32s shift,
  6074. Ipp32s offset,
  6075. IppiSize roiSize))
  6076. IPPAPI(IppStatus, ippiUniDirWeightBlock_H264_8u_C1R, (
  6077. Ipp8u *pSrcDst,
  6078. Ipp32u srcDstStep,
  6079. Ipp32u ulog2wd,
  6080. Ipp32s iWeight,
  6081. Ipp32s iOffset,
  6082. IppiSize roi
  6083. ))
  6084. IPPAPI(IppStatus, ippiUniDirWeightBlock_H264_8u_C1IR, (
  6085. Ipp8u *pSrcDst,
  6086. Ipp32u srcDstStep,
  6087. Ipp32u ulog2wd,
  6088. Ipp32s iWeight,
  6089. Ipp32s iOffset,
  6090. IppiSize roi
  6091. ))
  6092. IPPAPI(IppStatus, ippiBiDirWeightBlock_H264_8u_P2P1R,(
  6093. const Ipp8u *pSrc1,
  6094. const Ipp8u *pSrc2,
  6095. Ipp8u *pDst,
  6096. Ipp32u srcStep,
  6097. Ipp32u dstStep,
  6098. Ipp32u ulog2wd,
  6099. Ipp32s iWeight1,
  6100. Ipp32s iOffset1,
  6101. Ipp32s iWeight2,
  6102. Ipp32s iOffset2,
  6103. IppiSize roi
  6104. ))
  6105. IPPAPI(IppStatus, ippiBiDirWeightBlockImplicit_H264_8u_P2P1R, (
  6106. const Ipp8u *pSrc1,
  6107. const Ipp8u *pSrc2,
  6108. Ipp8u *pDst,
  6109. Ipp32u srcStep,
  6110. Ipp32u dstStep,
  6111. Ipp32s iWeight1,
  6112. Ipp32s iWeight2,
  6113. IppiSize roi
  6114. ))
  6115. IPPAPI(IppStatus, ippiBidir_H264_16u_P2P1R, (
  6116. const IppVCBidir_16u * bidirInfo))
  6117. IPPAPI(IppStatus, ippiBidirWeightImplicit_H264_16u_P2P1R, (
  6118. const IppVCBidir_16u * bidirInfo,
  6119. Ipp32s iWeight1,
  6120. Ipp32s iWeight2))
  6121. IPPAPI(IppStatus, ippiBidirWeight_H264_16u_P2P1R, (
  6122. const IppVCBidir_16u * bidirInfo,
  6123. Ipp32u ulog2wd,
  6124. Ipp32s iWeight1,
  6125. Ipp32s iOffset1,
  6126. Ipp32s iWeight2,
  6127. Ipp32s iOffset2))
  6128. IPPAPI(IppStatus, ippiUnidirWeight_H264_16u_IP2P1R, (
  6129. Ipp16u *pSrcDst,
  6130. Ipp32u srcDstStep,
  6131. Ipp32u ulog2wd,
  6132. Ipp32s iWeight,
  6133. Ipp32s iOffset,
  6134. IppiSize roi,
  6135. Ipp32s bitDepth))
  6136. /* ///////////////////////////////////////////////////////////////////////////
  6137. // Name:
  6138. // ippiTransformPrediction_H264_8u16s_C1
  6139. //
  6140. // Purpose:
  6141. //
  6142. // Parameters:
  6143. // pSrc - pointer to source,
  6144. // step - source step in bytes,
  6145. // pDst - pointer to destination
  6146. //
  6147. // Returns:
  6148. // ippStsNoErr No error
  6149. // ippStsNullPtrErr One of the pointers is NULL
  6150. //
  6151. // Notes:
  6152. // H.264 standard: JVT-G050. ITU-T Recommendation and
  6153. // Final Draft International Standard of Joint Video Specification
  6154. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  6155. */
  6156. IPPAPI(IppStatus, ippiTransformPrediction_H264_8u16s_C1, (
  6157. const Ipp8u *pSrc,
  6158. Ipp32s step,
  6159. Ipp16s *pDst))
  6160. /* ///////////////////////////////////////////////////////////////////////////
  6161. // Name:
  6162. // ippiDequantTransformResidual_SISP_H264_16s_C1I
  6163. //
  6164. // Purpose:
  6165. //
  6166. // Parameters:
  6167. // pSrcDst - pointer to working data,
  6168. // pPredictBlock -
  6169. // pDC -
  6170. // AC -
  6171. // qp -
  6172. // qs -
  6173. // Switch -
  6174. //
  6175. // Returns:
  6176. // ippStsNoErr No error
  6177. // ippStsNullPtrErr One of the pointers is NULL
  6178. //
  6179. // Notes:
  6180. // H.264 standard: JVT-G050. ITU-T Recommendation and
  6181. // Final Draft International Standard of Joint Video Specification
  6182. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  6183. */
  6184. IPPAPI(IppStatus, ippiDequantTransformResidual_SISP_H264_16s_C1I, (
  6185. Ipp16s* pSrcDst,
  6186. const Ipp16s* pPredictBlock,
  6187. const Ipp16s* pDC,
  6188. Ipp32s AC,
  6189. Ipp32s qp,
  6190. Ipp32s qs,
  6191. Ipp32s Switch))
  6192. /* ///////////////////////////////////////////////////////////////////////////
  6193. // Name:
  6194. // ippiTransformDequantChromaDC_SISP_H264_16s_C1I
  6195. //
  6196. // Purpose:
  6197. // The function performs integer inverse transformation and
  6198. // dequantization for 2x2 chroma DC coefficients.
  6199. // It used for SI & SP frames.
  6200. //
  6201. // Parameters:
  6202. // pSrcDst - pointer to working data,
  6203. // pDCpredict -
  6204. // qp -
  6205. // qs -
  6206. // Switch -
  6207. //
  6208. // Returns:
  6209. // ippStsNoErr No error
  6210. // ippStsNullPtrErr One of the pointers is NULL
  6211. //
  6212. // Notes:
  6213. // H.264 standard: JVT-G050. ITU-T Recommendation and
  6214. // Final Draft International Standard of Joint Video Specification
  6215. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  6216. */
  6217. IPPAPI(IppStatus, ippiTransformDequantChromaDC_SISP_H264_16s_C1I, (
  6218. Ipp16s* pSrcDst,
  6219. const Ipp16s* pDCpredict,
  6220. Ipp32s qp,
  6221. Ipp32s qs,
  6222. Ipp32s Switch))
  6223. /* ///////////////////////////////////////////////////////////////////////////
  6224. // Name:
  6225. // ippiReconstructLumaIntraMB_H264_16s8u_C1R
  6226. //
  6227. // Purpose:
  6228. // Reconstruct Intra Luma macroblock
  6229. //
  6230. // Parameters:
  6231. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6232. // pSrcDstYPlane - pointer to current MB which will be reconstructed
  6233. // srcdstYStep - plane step
  6234. // pMBIntraTypes - pointer to intra types for each subblock
  6235. // cbp4x4 - coded block pattern
  6236. // QP - quantizer
  6237. // edgeType - MB eadge type
  6238. //
  6239. // Returns:
  6240. // ippStsNoErr No error
  6241. // ippStsNullPtrErr pSrcDst is NULL
  6242. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  6243. //
  6244. // Notes:
  6245. // H.264 standard: JVT-G050. ITU-T Recommendation and
  6246. // Final Draft International Standard of Joint Video Specification
  6247. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  6248. */
  6249. IPPAPI(IppStatus, ippiReconstructLumaIntraMB_H264_16s8u_C1R, (Ipp16s **ppSrcCoeff,
  6250. Ipp8u *pSrcDstYPlane,
  6251. Ipp32s srcdstYStep,
  6252. const IppIntra4x4PredMode_H264 *pMBIntraTypes,
  6253. const Ipp32u cbp4x4,
  6254. const Ipp32u QP,
  6255. const Ipp8u edgeType))
  6256. /* ///////////////////////////////////////////////////////////////////////////
  6257. // Name:
  6258. // ippiReconstructChromaInterMB_H264_16s8u_P2R
  6259. //
  6260. // Purpose:
  6261. // Reconstruct Inter Chroma macroblock
  6262. //
  6263. // Parameters:
  6264. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6265. // pSrcDstUPlane - pointer to current U plane which will be reconstructed
  6266. // pSrcDstVPlane - pointer to current V plane which will be reconstructed
  6267. // srcdstUVStep - plane step
  6268. // cbp4x4 - coded block pattern
  6269. // ChromaQP - chroma quantizer
  6270. //
  6271. // Returns:
  6272. // ippStsNoErr No error
  6273. // ippStsNullPtrErr pSrcDst is NULL
  6274. // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39
  6275. //
  6276. // Notes:
  6277. // H.264 standard: JVT-G050. ITU-T Recommendation and
  6278. // Final Draft International Standard of Joint Video Specification
  6279. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  6280. */
  6281. IPPAPI(IppStatus, ippiReconstructChromaInterMB_H264_16s8u_P2R, (Ipp16s **ppSrcCoeff,
  6282. Ipp8u *pSrcDstUPlane,
  6283. Ipp8u *pSrcDstVPlane,
  6284. const Ipp32u srcdstStep,
  6285. const Ipp32u cbp4x4,
  6286. const Ipp32u ChromaQP))
  6287. IPPAPI(IppStatus, ippiReconstructLumaIntraHalfMB_H264_16s8u_C1R, (Ipp16s **ppSrcCoeff,
  6288. Ipp8u *pSrcDstYPlane,
  6289. Ipp32s srcdstYStep,
  6290. IppIntra4x4PredMode_H264 *pMBIntraTypes,
  6291. Ipp32u cbp4x2,
  6292. Ipp32u QP,
  6293. Ipp8u edgeType))
  6294. IPPAPI(IppStatus, ippiReconstructChromaIntraHalfsMB_H264_16s8u_P2R, (Ipp16s **ppSrcCoeff,
  6295. Ipp8u *pSrcDstUPlane,
  6296. Ipp8u *pSrcDstVPlane,
  6297. Ipp32u srcdstUVStep,
  6298. IppIntraChromaPredMode_H264 intra_chroma_mode,
  6299. Ipp32u cbp4x4,
  6300. Ipp32u ChromaQP,
  6301. Ipp8u edge_type_top,
  6302. Ipp8u edge_type_bottom))
  6303. IPPAPI(IppStatus, ippiReconstructChromaIntraHalvesMB_H264_16s8u_P2R, (Ipp16s **ppSrcCoeff,
  6304. Ipp8u *pSrcDstUPlane,
  6305. Ipp8u *pSrcDstVPlane,
  6306. Ipp32u srcdstUVStep,
  6307. IppIntraChromaPredMode_H264 intra_chroma_mode,
  6308. Ipp32u cbp4x4,
  6309. Ipp32u ChromaQP,
  6310. Ipp8u edge_type_top,
  6311. Ipp8u edge_type_bottom))
  6312. /* ///////////////////////////////////////////////////////////////////////////
  6313. // Name:
  6314. // ippiReconstructChromaIntraMB_H264_16s8u_P2R
  6315. //
  6316. // Purpose:
  6317. // Reconstruct Intra Chroma macroblock
  6318. //
  6319. // Parameters:
  6320. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6321. // pSrcDstUPlane - pointer to current U plane which will be reconstructed
  6322. // pSrcDstVPlane - pointer to current V plane which will be reconstructed
  6323. // srcdstUVStep - plane step
  6324. // intra_chroma_mode - intra mode
  6325. // cbp4x4 - coded block pattern
  6326. // ChromaQP - chroma quantizer
  6327. // edge_type - edge type
  6328. //
  6329. // Returns:
  6330. // ippStsNoErr No error
  6331. // ippStsNullPtrErr pSrcDst is NULL
  6332. // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39
  6333. //
  6334. // Notes:
  6335. // H.264 standard: JVT-G050. ITU-T Recommendation and
  6336. // Final Draft International Standard of Joint Video Specification
  6337. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  6338. */
  6339. IPPAPI(IppStatus, ippiReconstructChromaIntraMB_H264_16s8u_P2R, (Ipp16s **ppSrcCoeff,
  6340. Ipp8u *pSrcDstUPlane,
  6341. Ipp8u *pSrcDstVPlane,
  6342. const Ipp32u srcdstUVStep,
  6343. const IppIntraChromaPredMode_H264 intra_chroma_mode,
  6344. const Ipp32u cbp4x4,
  6345. const Ipp32u ChromaQP,
  6346. const Ipp8u edge_type))
  6347. /* ///////////////////////////////////////////////////////////////////////////
  6348. // Name:
  6349. // ippiReconstructLumaInterMB_H264_16s8u_C1R
  6350. //
  6351. // Purpose:
  6352. // Reconstruct Inter Luma macroblock
  6353. //
  6354. // Parameters:
  6355. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6356. // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
  6357. // srcdsYStep - plane step
  6358. // cbp4x4 - coded block pattern
  6359. // QP - quantizer
  6360. //
  6361. // Returns:
  6362. // ippStsNoErr No error
  6363. // ippStsNullPtrErr pSrcDst is NULL
  6364. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  6365. //
  6366. // Notes:
  6367. // H.264 standard: JVT-G050. ITU-T Recommendation and
  6368. // Final Draft International Standard of Joint Video Specification
  6369. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  6370. */
  6371. IPPAPI(IppStatus, ippiReconstructLumaInterMB_H264_16s8u_C1R, (Ipp16s **ppSrcCoeff,
  6372. Ipp8u *pSrcDstYPlane,
  6373. Ipp32u srcdstYStep,
  6374. Ipp32u cbp4x4,
  6375. Ipp32s QP))
  6376. /* ///////////////////////////////////////////////////////////////////////////
  6377. // Name:
  6378. // ippiReconstructLumaIntra16x16MB_H264_16s8u_C1R
  6379. //
  6380. // Purpose:
  6381. // Reconstruct Intra 16x16 Luma macroblock
  6382. //
  6383. // Parameters:
  6384. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6385. // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
  6386. // srcdstYStep - plane step
  6387. // intra_luma_mode - intra mode
  6388. // cbp4x4 - coded block pattern
  6389. // QP - quantizer
  6390. // edge_type - edge type
  6391. //
  6392. // Returns:
  6393. // ippStsNoErr No error
  6394. // ippStsNullPtrErr pSrcDst is NULL
  6395. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  6396. //
  6397. // Notes:
  6398. // H.264 standard: JVT-G050. ITU-T Recommendation and
  6399. // Final Draft International Standard of Joint Video Specification
  6400. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  6401. */
  6402. IPPAPI(IppStatus, ippiReconstructLumaIntra16x16MB_H264_16s8u_C1R, (Ipp16s **ppSrcCoeff,
  6403. Ipp8u *pSrcDstYPlane,
  6404. Ipp32u srcdstYStep,
  6405. const IppIntra16x16PredMode_H264 intra_luma_mode,
  6406. const Ipp32u cbp4x4,
  6407. const Ipp32u QP,
  6408. const Ipp8u edge_type))
  6409. /* ///////////////////////////////////////////////////////////////////////////
  6410. // Name:
  6411. // ippiReconstructLumaIntra_16x16MB_H264_16s8u_C1R
  6412. //
  6413. // Purpose:
  6414. // Reconstruct Intra 16x16 Luma macroblock for high profile
  6415. //
  6416. // Parameters:
  6417. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6418. // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
  6419. // srcdstYStep - plane step
  6420. // intra_luma_mode - intra mode
  6421. // cbp4x4 - coded block pattern
  6422. // QP - quantizer
  6423. // edge_type - edge type
  6424. // pQuantTable - pointer to quantization table
  6425. // bypass_flag - enable lossless coding when qpprime_y is zero
  6426. //
  6427. // Returns:
  6428. // ippStsNoErr No error
  6429. // ippStsNullPtrErr pSrcDst is NULL
  6430. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  6431. //
  6432. // Notes:
  6433. //
  6434. */
  6435. IPPAPI(IppStatus, ippiReconstructLumaIntra_16x16MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
  6436. Ipp8u *pSrcDstYPlane,
  6437. Ipp32u srcdstYStep,
  6438. IppIntra16x16PredMode_H264 intra_luma_mode,
  6439. Ipp32u cbp4x4,
  6440. Ipp32u QP,
  6441. Ipp8u edge_type,
  6442. const Ipp16s *pQuantTable,
  6443. Ipp8u bypass_flag))
  6444. /* ///////////////////////////////////////////////////////////////////////////
  6445. // Name:
  6446. // ippiReconstructLumaIntra4x4MB_H264_16s8u_C1R
  6447. //
  6448. // Purpose:
  6449. // Reconstruct Intra 4x4 Luma macroblock for high profile
  6450. //
  6451. // Parameters:
  6452. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6453. // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
  6454. // srcdstYStep - plane step
  6455. // pMBIntraTypes - pointer to intra types for each subblock
  6456. // cbp4x4 - coded block pattern
  6457. // QP - quantizer
  6458. // edge_type - edge type
  6459. // pQuantTable - pointer to quantization table
  6460. // bypass_flag - enable lossless coding when qpprime_y is zero
  6461. //
  6462. // Returns:
  6463. // ippStsNoErr No error
  6464. // ippStsNullPtrErr pSrcDst is NULL
  6465. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  6466. //
  6467. // Notes:
  6468. //
  6469. */
  6470. IPPAPI(IppStatus, ippiReconstructLumaIntra4x4MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
  6471. Ipp8u *pSrcDstYPlane,
  6472. Ipp32s srcdstYStep,
  6473. IppIntra4x4PredMode_H264 *pMBIntraTypes,
  6474. Ipp32u cbp4x4,
  6475. Ipp32u QP,
  6476. Ipp8u edgeType,
  6477. const Ipp16s *pQuantTable,
  6478. Ipp8u bypass_flag))
  6479. /* ///////////////////////////////////////////////////////////////////////////
  6480. // Name:
  6481. // ippiReconstructLumaInter4x4MB_H264_16s8u_C1R
  6482. //
  6483. // Purpose:
  6484. // Reconstruct Inter 4x4 Luma macroblock for high profile
  6485. //
  6486. // Parameters:
  6487. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6488. // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
  6489. // srcdstYStep - plane step
  6490. // cbp4x4 - coded block pattern
  6491. // QP - quantizer
  6492. // pQuantTable - pointer to quantization table
  6493. // bypass_flag - enable lossless coding when qpprime_y is zero
  6494. //
  6495. // Returns:
  6496. // ippStsNoErr No error
  6497. // ippStsNullPtrErr pSrcDst is NULL
  6498. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  6499. //
  6500. // Notes:
  6501. //
  6502. */
  6503. IPPAPI(IppStatus, ippiReconstructLumaInter4x4MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
  6504. Ipp8u *pSrcDstYPlane,
  6505. Ipp32u srcdstYStep,
  6506. Ipp32u cbp4x4,
  6507. Ipp32s QP,
  6508. const Ipp16s *pQuantTable,
  6509. Ipp8u bypass_flag))
  6510. /* ///////////////////////////////////////////////////////////////////////////
  6511. // Name:
  6512. // ippiReconstructChromaInter4x4MB_H264_16s8u_P2R
  6513. //
  6514. // Purpose:
  6515. // Reconstruct Inter Chroma 4x4 macroblock for high profile
  6516. //
  6517. // Parameters:
  6518. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6519. // pSrcDstUPlane - pointer to current U plane which will be reconstructed
  6520. // pSrcDstVPlane - pointer to current V plane which will be reconstructed
  6521. // srcdstUVStep - plane step
  6522. // cbp4x4 - coded block pattern
  6523. // chromaQPU - chroma quantizer for U plane
  6524. // chromaQPV - chroma quantizer for V plane
  6525. // edge_type - edge type
  6526. // pQuantTableU - pointer to quantization table for U plane
  6527. // pQuantTableV - pointer to quantization table for V plane
  6528. // bypass_flag - enable lossless coding when qpprime_y is zero
  6529. //
  6530. // Returns:
  6531. // ippStsNoErr No error
  6532. // ippStsNullPtrErr pSrcDst is NULL
  6533. // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39
  6534. //
  6535. // Notes:
  6536. //
  6537. */
  6538. IPPAPI(IppStatus, ippiReconstructChromaInter4x4MB_H264_16s8u_P2R, (Ipp16s **ppSrcDstCoeff,
  6539. Ipp8u *pSrcDstUPlane,
  6540. Ipp8u *pSrcDstVPlane,
  6541. Ipp32u srcdstUVStep,
  6542. Ipp32u cbp4x4,
  6543. Ipp32u chromaQPU,
  6544. Ipp32u chromaQPV,
  6545. const Ipp16s *pQuantTableU,
  6546. const Ipp16s *pQuantTableV,
  6547. Ipp8u bypass_flag))
  6548. /* ///////////////////////////////////////////////////////////////////////////
  6549. // Name:
  6550. // ippiReconstructChromaIntra4x4MB_H264_16s8u_P2R
  6551. //
  6552. // Purpose:
  6553. // Reconstruct Intra Chroma 4x4 macroblock for high profile
  6554. //
  6555. // Parameters:
  6556. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6557. // pSrcDstUPlane - pointer to current U plane which will be reconstructed
  6558. // pSrcDstVPlane - pointer to current V plane which will be reconstructed
  6559. // srcdstUVStep - plane step
  6560. // intra_chroma_mode - intra mode
  6561. // cbp4x4 - coded block pattern
  6562. // edge_type - edge type
  6563. // chromaQPU - chroma quantizer for U plane
  6564. // chromaQPV - chroma quantizer for V plane
  6565. // pQuantTableU - pointer to quantization table for U plane
  6566. // pQuantTableV - pointer to quantization table for V plane
  6567. // bypass_flag - enable lossless coding when qpprime_y is zero
  6568. //
  6569. // Returns:
  6570. // ippStsNoErr No error
  6571. // ippStsNullPtrErr pSrcDst is NULL
  6572. // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39
  6573. //
  6574. // Notes:
  6575. */
  6576. IPPAPI(IppStatus, ippiReconstructChromaIntra4x4MB_H264_16s8u_P2R, (Ipp16s **ppSrcDstCoeff,
  6577. Ipp8u *pSrcDstUPlane,
  6578. Ipp8u *pSrcDstVPlane,
  6579. Ipp32u srcdstUVStep,
  6580. IppIntraChromaPredMode_H264 intra_chroma_mode,
  6581. Ipp32u cbp4x4,
  6582. Ipp32u chromaQPU,
  6583. Ipp32u chromaQPV,
  6584. Ipp8u edge_type,
  6585. const Ipp16s *pQuantTableU,
  6586. const Ipp16s *pQuantTableV,
  6587. Ipp8u bypass_flag))
  6588. /* ///////////////////////////////////////////////////////////////////////////
  6589. // Name:
  6590. // ippiReconstructLumaIntra8x8MB_H264_16s8u_C1R
  6591. //
  6592. // Purpose:
  6593. // Reconstruct Intra 8x8 Luma macroblock for high profile
  6594. //
  6595. // Parameters:
  6596. // ppSrcCoeff - pointer to 8x8 block of coefficients, if it's non zero(will be update by function)
  6597. // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
  6598. // srcdstYStep - plane step
  6599. // pMBIntraTypes - pointer to intra types for each subblock
  6600. // cbp8x8 - coded block pattern
  6601. // QP - quantizer
  6602. // edge_type - edge type
  6603. // pQuantTable - pointer to quantization table
  6604. // bypass_flag - enable lossless coding when qpprime_y is zero
  6605. //
  6606. // Returns:
  6607. // ippStsNoErr No error
  6608. // ippStsNullPtrErr pSrcDst is NULL
  6609. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  6610. //
  6611. // Notes:
  6612. //
  6613. */
  6614. IPPAPI(IppStatus, ippiReconstructLumaIntra8x8MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
  6615. Ipp8u *pSrcDstYPlane,
  6616. Ipp32s srcdstYStep,
  6617. IppIntra8x8PredMode_H264 *pMBIntraTypes,
  6618. Ipp32u cbp8x8,
  6619. Ipp32u QP,
  6620. Ipp8u edgeType,
  6621. const Ipp16s *pQuantTable,
  6622. Ipp8u bypass_flag))
  6623. /* ///////////////////////////////////////////////////////////////////////////
  6624. // Name:
  6625. // ippiReconstructLumaInter8x8MB_H264_16s8u_C1R
  6626. //
  6627. // Purpose:
  6628. // Reconstruct Inter 8x8 Luma macroblock for high profile
  6629. //
  6630. // Parameters:
  6631. // ppSrcCoeff - pointer to 8x8 block of coefficients, if it's non zero(will be update by function)
  6632. // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
  6633. // srcdstYStep - plane step
  6634. // cbp8x8 - coded block pattern
  6635. // QP - quantizer
  6636. // pQuantTable - pointer to quantization table
  6637. // bypass_flag - enable lossless coding when qpprime_y is zero
  6638. //
  6639. // Returns:
  6640. // ippStsNoErr No error
  6641. // ippStsNullPtrErr pSrcDst is NULL
  6642. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  6643. //
  6644. // Notes:
  6645. //
  6646. */
  6647. IPPAPI(IppStatus, ippiReconstructLumaInter8x8MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
  6648. Ipp8u *pSrcDstYPlane,
  6649. Ipp32u srcdstYStep,
  6650. Ipp32u cbp8x8,
  6651. Ipp32s QP,
  6652. const Ipp16s *pQuantTable,
  6653. Ipp8u bypass_flag))
  6654. /* ///////////////////////////////////////////////////////////////////////////
  6655. // Name:
  6656. // ippiReconstructLumaIntraHalf4x4MB_H264_16s8u_C1R
  6657. //
  6658. // Purpose:
  6659. // Reconstruct Intra 4x4 Luma macroblock for high profile in MBAFF mode
  6660. //
  6661. // Parameters:
  6662. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6663. // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
  6664. // pMBIntraTypes - pointer to intra types for each subblock
  6665. // cbp4x2 - coded block pattern
  6666. // QP - quantizer
  6667. // edge_type - edge type
  6668. // pQuantTable - pointer to quantization table
  6669. // bypass_flag - enable lossless coding when qpprime_y is zero
  6670. //
  6671. // Returns:
  6672. // ippStsNoErr No error
  6673. // ippStsNullPtrErr pSrcDst is NULL
  6674. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  6675. //
  6676. // Notes:
  6677. //
  6678. */
  6679. IPPAPI(IppStatus, ippiReconstructLumaIntraHalf4x4MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
  6680. Ipp8u *pSrcDstYPlane,
  6681. Ipp32s srcdstYStep,
  6682. IppIntra4x4PredMode_H264 *pMBIntraTypes,
  6683. Ipp32u cbp4x2,
  6684. Ipp32u QP,
  6685. Ipp8u edgeType,
  6686. const Ipp16s *pQuantTable,
  6687. Ipp8u bypass_flag))
  6688. /* ///////////////////////////////////////////////////////////////////////////
  6689. // Name:
  6690. // ippiReconstructLumaIntraHalf8x8MB_H264_16s8u_C1R
  6691. //
  6692. // Purpose:
  6693. // Reconstruct Intra 8x8 Luma macroblock for high profile in MBAFF mode
  6694. //
  6695. // Parameters:
  6696. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6697. // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
  6698. // pMBIntraTypes - pointer to intra types for each subblock
  6699. // cbp8x2 - coded block pattern
  6700. // QP - quantizer
  6701. // edge_type - edge type
  6702. // pQuantTable - pointer to quantization table
  6703. // bypass_flag - enable lossless coding when qpprime_y is zero
  6704. //
  6705. // Returns:
  6706. // ippStsNoErr No error
  6707. // ippStsNullPtrErr pSrcDst is NULL
  6708. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  6709. //
  6710. // Notes:
  6711. //
  6712. */
  6713. IPPAPI(IppStatus, ippiReconstructLumaIntraHalf8x8MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
  6714. Ipp8u *pSrcDstYPlane,
  6715. Ipp32s srcdstYStep,
  6716. IppIntra8x8PredMode_H264 *pMBIntraTypes,
  6717. Ipp32u cbp8x2,
  6718. Ipp32u QP,
  6719. Ipp8u edgeType,
  6720. const Ipp16s *pQuantTable,
  6721. Ipp8u bypass_flag))
  6722. /* ///////////////////////////////////////////////////////////////////////////
  6723. // Name:
  6724. // ippiReconstructChromaIntra4x4MB_H264_16s8u_P2R
  6725. //
  6726. // Purpose:
  6727. // Reconstruct Intra Chroma 4x4 macroblock for high profile in MBAFF mode
  6728. //
  6729. // Parameters:
  6730. // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6731. // pSrcDstUPlane - pointer to current U plane which will be reconstructed
  6732. // pSrcDstVPlane - pointer to current V plane which will be reconstructed
  6733. // srcdstUVStep - plane step
  6734. // intra_chroma_mode - intra mode
  6735. // cbp4x4 - coded block pattern
  6736. // edge_type_top - edge type top
  6737. // edge_type_bottom - edge type bottom
  6738. // chromaQPU - chroma quantizer for U plane
  6739. // chromaQPV - chroma quantizer for V plane
  6740. // pQuantTableU - pointer to quantization table for U plane
  6741. // pQuantTableV - pointer to quantization table for V plane
  6742. // bypass_flag - enable lossless coding when qpprime_y is zero
  6743. //
  6744. // Returns:
  6745. // ippStsNoErr No error
  6746. // ippStsNullPtrErr pSrcDst is NULL
  6747. // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39
  6748. //
  6749. // Notes:
  6750. */
  6751. IPPAPI(IppStatus, ippiReconstructChromaIntraHalfs4x4MB_H264_16s8u_P2R, (Ipp16s **ppSrcDstCoeff,
  6752. Ipp8u *pSrcDstUPlane,
  6753. Ipp8u *pSrcDstVPlane,
  6754. Ipp32u srcdstUVStep,
  6755. IppIntraChromaPredMode_H264 intra_chroma_mode,
  6756. Ipp32u cbp4x4,
  6757. Ipp32u chromaQPU,
  6758. Ipp32u chromaQPV,
  6759. Ipp8u edge_type_top,
  6760. Ipp8u edge_type_bottom,
  6761. const Ipp16s *pQuantTableU,
  6762. const Ipp16s *pQuantTableV,
  6763. Ipp8u bypass_flag))
  6764. IPPAPI(IppStatus, ippiReconstructChromaIntraHalves4x4MB_H264_16s8u_P2R, (Ipp16s **ppSrcDstCoeff,
  6765. Ipp8u *pSrcDstUPlane,
  6766. Ipp8u *pSrcDstVPlane,
  6767. Ipp32u srcdstUVStep,
  6768. IppIntraChromaPredMode_H264 intra_chroma_mode,
  6769. Ipp32u cbp4x4,
  6770. Ipp32u chromaQPU,
  6771. Ipp32u chromaQPV,
  6772. Ipp8u edge_type_top,
  6773. Ipp8u edge_type_bottom,
  6774. const Ipp16s *pQuantTableU,
  6775. const Ipp16s *pQuantTableV,
  6776. Ipp8u bypass_flag))
  6777. IPPAPI(IppStatus, ippiReconstructChromaIntra4x4_H264High_32s16u_IP2R, (
  6778. const IppiReconstructHighMB_32s16u * pReconstructInfo[2],
  6779. IppIntraChromaPredMode_H264 intraChromaMode,
  6780. Ipp32u edgeType))
  6781. IPPAPI(IppStatus, ippiReconstructChromaIntraHalf4x4_H264High_32s16u_IP2R, (
  6782. const IppiReconstructHighMB_32s16u * pReconstructInfo[2],
  6783. IppIntraChromaPredMode_H264 intraChromaMode,
  6784. Ipp32u edgeTypeTop,
  6785. Ipp32u edgeTypeBottom))
  6786. IPPAPI(IppStatus, ippiReconstructChromaInter4x4_H264High_32s16u_IP2R, (
  6787. const IppiReconstructHighMB_32s16u * pReconstructInfo[2]))
  6788. IPPAPI(IppStatus, ippiReconstructChroma422Intra4x4_H264High_32s16u_IP2R, (
  6789. const IppiReconstructHighMB_32s16u * pReconstructInfo[2],
  6790. IppIntraChromaPredMode_H264 intraChromaMode,
  6791. Ipp32u edgeType,
  6792. Ipp32u levelScaleDCU,
  6793. Ipp32u levelScaleDCV))
  6794. IPPAPI(IppStatus, ippiReconstructChroma422IntraHalf4x4_H264High_32s16u_IP2R, (
  6795. const IppiReconstructHighMB_32s16u * pReconstructInfo[2],
  6796. IppIntraChromaPredMode_H264 intraChromaMode,
  6797. Ipp32u edgeTypeTop,
  6798. Ipp32u edgeTypeBottom,
  6799. Ipp32u levelScaleDCU,
  6800. Ipp32u levelScaleDCV))
  6801. IPPAPI(IppStatus, ippiReconstructChroma422Inter4x4_H264High_32s16u_IP2R, (
  6802. const IppiReconstructHighMB_32s16u * pReconstructInfo[2],
  6803. Ipp32u levelScaleDCU,
  6804. Ipp32u levelScaleDCV))
  6805. IPPAPI(IppStatus, ippiReconstructLumaIntra4x4_H264High_32s16u_IP1R, (
  6806. const IppiReconstructHighMB_32s16u * pReconstructInfo,
  6807. const IppIntra4x4PredMode_H264 *pMBIntraTypes,
  6808. Ipp32s edgeType))
  6809. IPPAPI(IppStatus, ippiReconstructLumaIntraHalf4x4_H264High_32s16u_IP1R, (
  6810. const IppiReconstructHighMB_32s16u * pReconstructInfo,
  6811. const IppIntra4x4PredMode_H264 *pMBIntraTypes,
  6812. Ipp32u edgeType))
  6813. IPPAPI(IppStatus, ippiReconstructLumaIntra8x8_H264High_32s16u_IP1R, (
  6814. const IppiReconstructHighMB_32s16u * pReconstructInfo,
  6815. IppIntra8x8PredMode_H264 *pMBIntraTypes,
  6816. Ipp32u edgeType))
  6817. IPPAPI(IppStatus, ippiReconstructLumaIntraHalf8x8_H264High_32s16u_IP1R, (
  6818. const IppiReconstructHighMB_32s16u * pReconstructInfo,
  6819. IppIntra8x8PredMode_H264 *pMBIntraTypes,
  6820. Ipp32u edgeType))
  6821. IPPAPI(IppStatus, ippiReconstructLumaIntra16x16_H264High_32s16u_IP1R, (
  6822. const IppiReconstructHighMB_32s16u * pReconstructInfo,
  6823. IppIntra16x16PredMode_H264 intraLumaMode,
  6824. Ipp32u edgeType))
  6825. IPPAPI(IppStatus, ippiReconstructLumaInter4x4_H264High_32s16u_IP1R, (
  6826. const IppiReconstructHighMB_32s16u * pReconstructInfo))
  6827. IPPAPI(IppStatus, ippiReconstructLumaInter8x8_H264High_32s16u_IP1R, (
  6828. const IppiReconstructHighMB_32s16u * pReconstructInfo))
  6829. IPPAPI(IppStatus, ippiReconstructChroma422Intra4x4_H264High_16s8u_IP2R, (
  6830. const IppiReconstructHighMB_16s8u * pReconstructInfo[2],
  6831. IppIntraChromaPredMode_H264 intraChromaMode,
  6832. Ipp32u edgeType,
  6833. Ipp32u levelScaleDCU,
  6834. Ipp32u levelScaleDCV))
  6835. IPPAPI(IppStatus, ippiReconstructChroma422IntraHalf4x4_H264High_16s8u_IP2R, (
  6836. const IppiReconstructHighMB_16s8u * pReconstructInfo[2],
  6837. IppIntraChromaPredMode_H264 intraChromaMode,
  6838. Ipp32u edgeTypeTop,
  6839. Ipp32u edgeTypeBottom,
  6840. Ipp32u levelScaleDCU,
  6841. Ipp32u levelScaleDCV))
  6842. IPPAPI(IppStatus, ippiReconstructChroma422Inter4x4_H264High_16s8u_IP2R, (
  6843. const IppiReconstructHighMB_16s8u * pReconstructInfo[2],
  6844. Ipp32u levelScaleDCU,
  6845. Ipp32u levelScaleDCV))
  6846. /* ///////////////////////////////////////////////////////////////////////////
  6847. // Name:
  6848. // ippiInterpolateBlock_H264_8u_P3P1R
  6849. //
  6850. // Purpose: interpolation block nHeight x nWidth
  6851. //
  6852. //
  6853. // Parameters:
  6854. // pSrc0 - pointer to first source
  6855. // pSrc1 - pointer to second source
  6856. // pDst - pointer to destination
  6857. // nWidth - block width
  6858. // nHeight - block height
  6859. // iPitchSrc0 - first source pitch
  6860. // iPitchSrc1 - second source pitch
  6861. // iPitchDst - destination pitch
  6862. //
  6863. // Returns:
  6864. // ippStsNoErr No error
  6865. // ippStsNullPtrErr pSrc0 or pSrc1 or pDst is NULL
  6866. // Notes:
  6867. //
  6868. */
  6869. IPPAPI(IppStatus, ippiInterpolateBlock_H264_8u_P3P1R, (
  6870. const Ipp8u *pSrc1,
  6871. const Ipp8u *pSrc2,
  6872. Ipp8u *pDst,
  6873. Ipp32u uWidth,
  6874. Ipp32u uHeight,
  6875. Ipp32s iPitchSrc1,
  6876. Ipp32s iPitchSrc2,
  6877. Ipp32s iPitchDst))
  6878. /* ///////////////////////////////////////////////////////////////////////////
  6879. // Name:
  6880. // ippiBiDirWeightBlock_H264_8u_P3P1R
  6881. //
  6882. // Purpose: Apply specified weighting and offset to all samples of the blocks,
  6883. // and combine them.
  6884. // Sw = clip( (S0*weight0 + S1*weight1 + round) >> (ulog2wd+1) +
  6885. // ((offset0 + offset1 + 1)>>1) )
  6886. //
  6887. // Parameters:
  6888. // pSrc1 - pointer to first source
  6889. // pSrc2 - pointer to second source
  6890. // pDst - pointer to destination
  6891. // nWidth - block width
  6892. // nHeight - block height
  6893. // nSrcPitch1 - first source pitch
  6894. // nSrcPitch2 - second source pitch
  6895. // nDstPitch - destination pitch
  6896. // ulog2wd - log2 weight denominator
  6897. // iWeight1 - weight coefficient for first source
  6898. // iOffset1 - offset for first source
  6899. // iWeight2 - weight coefficient for second source
  6900. // iOffset2 - offset for second source
  6901. // roi - block size
  6902. //
  6903. // Returns:
  6904. // ippStsNoErr No error
  6905. // ippStsNullPtrErr pSrc1 or pSrc2 or pDst is NULL
  6906. // Notes:
  6907. //
  6908. */
  6909. IPPAPI(IppStatus, ippiBiDirWeightBlock_H264_8u_P3P1R,( const Ipp8u *pSrc1,
  6910. const Ipp8u *pSrc2,
  6911. Ipp8u *pDst,
  6912. Ipp32u nSrcPitch1,
  6913. Ipp32u nSrcPitch2,
  6914. Ipp32u nDstPitch,
  6915. Ipp32u ulog2wd,
  6916. Ipp32s iWeight1,
  6917. Ipp32s iOffset1,
  6918. Ipp32s iWeight2,
  6919. Ipp32s iOffset2,
  6920. IppiSize roi
  6921. ))
  6922. /* ///////////////////////////////////////////////////////////////////////////
  6923. // Name:
  6924. // ippiBiDirWeightBlockImplicit_H264_8u_P3P1R
  6925. //
  6926. // Purpose: Implicit bidir prediction weighting using simplified weighting with
  6927. // no offsets.
  6928. // Sw = clip((S0*weight0 + S1*weight1 + 32) >> 6))
  6929. //
  6930. // Parameters:
  6931. // pDst - pointer to destination
  6932. // nWidth - block width
  6933. // nHeight - block height
  6934. // nSrcPitch1 - first source pitch
  6935. // nSrcPitch2 - second source pitch
  6936. // nDstPitch - destination pitch
  6937. // iWeight1 - weight coefficient for first source
  6938. // iWeight2 - weight coefficient for second source
  6939. // roi - block size
  6940. //
  6941. //
  6942. // Returns:
  6943. // ippStsNoErr No error
  6944. // ippStsNullPtrErr pSrc0 or pSrc1 or pDst is NULL
  6945. // Notes:
  6946. //
  6947. */
  6948. IPPAPI(IppStatus, ippiBiDirWeightBlockImplicit_H264_8u_P3P1R,(const Ipp8u *pSrc1,
  6949. const Ipp8u *pSrc2,
  6950. Ipp8u *pDst,
  6951. Ipp32u nSrcPitch1,
  6952. Ipp32u nSrcPitch2,
  6953. Ipp32u nDstPitch,
  6954. Ipp32s iWeight1,
  6955. Ipp32s iWeight2,
  6956. IppiSize roi
  6957. ))
  6958. /* ///////////////////////////////////////////////////////////////////////////
  6959. // Name:
  6960. // ippiDecodeCAVLCChromaDcCoeffs_H264_1u16s
  6961. //
  6962. // Purpose: Decode Chroma DC coefficients CAVLC coded
  6963. //
  6964. // Parameters:
  6965. // ppBitStream - double pointer to current dword in bitstream(will be updated by function)
  6966. // pOffset - pointer to offset in current dword(will be updated by function)
  6967. // pNumCoeff - output number of coefficients
  6968. // ppPosCoefbuf - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  6969. // pTblCoeffToken - chroma DC CoeffToken Table
  6970. // ppTblTotalZerosCR - chroma DC TotalZeros Tables
  6971. // ppTblRunBefore - RunBefore Tables
  6972. //
  6973. // Returns:
  6974. // ippStsNoErr No error
  6975. // ippStsNullPtrErr if a pointer is NULL
  6976. //
  6977. // Notes:
  6978. // H.264 standard: JVT-G050. ITU-T Recommendation and
  6979. // Final Draft International Standard of Joint Video Specification
  6980. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  6981. */
  6982. IPPAPI(IppStatus, ippiDecodeCAVLCChromaDcCoeffs_H264_1u16s, (Ipp32u **ppBitStream,
  6983. Ipp32s *pOffset,
  6984. Ipp16s *pNumCoeff,
  6985. Ipp16s **ppDstCoeffs,
  6986. const Ipp32s *pTblCoeffToken,
  6987. const Ipp32s **ppTblTotalZerosCR,
  6988. const Ipp32s **ppTblRunBefore))
  6989. /* ///////////////////////////////////////////////////////////////////////////
  6990. // Name:
  6991. // ippiDecodeCAVLCCoeffs_H264_1u16s
  6992. //
  6993. // Purpose:
  6994. // Decode any non Chroma DC coefficients CAVLC coded
  6995. //
  6996. // Parameters:
  6997. // ppBitStream - double pointer to current dword in bitstream(will be updated by function)
  6998. // pOffset - pointer to offset in current dword(will be updated by function)
  6999. // pNumCoeff - output number of coefficients
  7000. // ppPosCoefbuf - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
  7001. // uVLCSelect - predictor on number of CoeffToken Table
  7002. // uMaxNumCoeff - maximum coefficients in block(16 for Intra16x16, 15 for the rest)
  7003. // pTblCoeffToken - CoeffToken Tables
  7004. // ppTblTotalZeros - TotalZeros Tables
  7005. // ppTblRunBefore - RunBefore Tables
  7006. // pScanMatrix - inverse scan matrix for coefficients in block
  7007. //
  7008. // Returns:
  7009. // ippStsNoErr No error
  7010. // ippStsNullPtrErr if a pointer is NULL
  7011. //
  7012. // Notes:
  7013. // H.264 standard: JVT-G050. ITU-T Recommendation and
  7014. // Final Draft International Standard of Joint Video Specification
  7015. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  7016. */
  7017. IPPAPI(IppStatus, ippiDecodeCAVLCCoeffs_H264_1u16s, (Ipp32u **ppBitStream,
  7018. Ipp32s *pOffset,
  7019. Ipp16s *pNumCoeff,
  7020. Ipp16s **ppDstCoeffs,
  7021. Ipp32u uVLCSelect,
  7022. Ipp16s uMaxNumCoeff,
  7023. const Ipp32s **ppTblCoeffToken,
  7024. const Ipp32s **ppTblTotalZeros,
  7025. const Ipp32s **ppTblRunBefore,
  7026. const Ipp32s *pScanMatrix))
  7027. IPPAPI(IppStatus, ippiDecodeExpGolombOne_H264_1u16s, (Ipp32u **ppBitStream,
  7028. Ipp32s *pBitOffset,
  7029. Ipp16s *pDst,
  7030. Ipp8u isSigned))
  7031. IPPAPI(IppStatus, ippiDecodeExpGolombOne_H264_1u32s, (Ipp32u **ppBitStream,
  7032. Ipp32s *pBitOffset,
  7033. Ipp32s *pDst,
  7034. Ipp32s isSigned))
  7035. IPPAPI(IppStatus,ippiDecodeCAVLCChroma422DcCoeffs_H264_1u16s,(Ipp32u **ppBitStream,
  7036. Ipp32s *pBitOffset,
  7037. Ipp16s *pNumCoeff,
  7038. Ipp16s **ppDstCoeffs,
  7039. const Ipp32s *pTblCoeffToken,
  7040. const Ipp32s **ppTblTotalZerosCR,
  7041. const Ipp32s **ppTblRunBefore))
  7042. IPPAPI(IppStatus, ippiDecodeCAVLCCoeffs_H264_1u32s, (Ipp32u **ppBitStream,
  7043. Ipp32s *pBitOffset,
  7044. Ipp16s *pNumCoeff,
  7045. Ipp32s **ppDstCoeffs,
  7046. Ipp32u uVLCSelect,
  7047. Ipp16s uMaxNumCoeff,
  7048. const Ipp32s **ppTblCoeffToken,
  7049. const Ipp32s **ppTblTotalZeros,
  7050. const Ipp32s **ppTblRunBefore,
  7051. const Ipp32s *pScanMatrix))
  7052. IPPAPI(IppStatus, ippiDecodeCAVLCChromaDcCoeffs_H264_1u32s, (Ipp32u **ppBitStream,
  7053. Ipp32s *pBitOffset,
  7054. Ipp16s *pNumCoeff,
  7055. Ipp32s **ppDstCoeffs,
  7056. const Ipp32s *pTblCoeffToken,
  7057. const Ipp32s **ppTblTotalZerosCR,
  7058. const Ipp32s **ppTblRunBefore))
  7059. IPPAPI(IppStatus, ippiDecodeCAVLCChroma422DcCoeffs_H264_1u32s,(Ipp32u **ppBitStream,
  7060. Ipp32s *pBitOffset,
  7061. Ipp16s *pNumCoeff,
  7062. Ipp32s **ppDstCoeffs,
  7063. const Ipp32s *pTblCoeffToken,
  7064. const Ipp32s **ppTblTotalZerosCR,
  7065. const Ipp32s **ppTblRunBefore))
  7066. IPPAPI(IppStatus, ippiExpandPlane_H264_8u_C1R, ( Ipp8u *StartPtr,
  7067. Ipp32u uFrameWidth,
  7068. Ipp32u uFrameHeight,
  7069. Ipp32u uPitch,
  7070. Ipp32u uPels,
  7071. IppvcFrameFieldFlag uFrameFieldFlag))
  7072. /* ///////////////////////////////////////////////////////////////////////////
  7073. // H.264 Video Encoder Functions
  7074. //////////////////////////////////////////////////////////////////////////// */
  7075. /* ///////////////////////////////////////////////////////////////////////////
  7076. // Name:
  7077. // ippiEncodeCoeffsCAVLC_H264_16s
  7078. // ippiEncodeCoeffsCAVLC_H264_32s
  7079. //
  7080. // Purpose: Calculates characteristics of 4X4 block for CAVLC encoding.
  7081. //
  7082. // Parameters:
  7083. // pSrc Pointer to 4x4 block - array of size 16.
  7084. // AC Flag, equal to zero in the cases of Luma Intra 16x16 AC block
  7085. // or Chroma AC block, and is not equal to zero otherwise.
  7086. // pScanMatrix Scan matrix for coefficients in block (array of size 16).
  7087. // Count Position of the last non-zero block coefficient in the scanning sequence.
  7088. // Traling_One The number of trailing ones transform coefficient levels
  7089. // in a range[0;3]. This argument is calculated by the function.
  7090. // Traling_One_Signs Code that describes signs of trailing ones.
  7091. // (Trailing_One 1 - i)-bit in this code corresponds to a sign
  7092. // of i-trailing one in the current block. In this code 1 indicates
  7093. // negative value, 0 positive value. This argument is calculated
  7094. // by the function.
  7095. // NumOutCoeffs The number of non-zero coefficients in block (including trailing
  7096. // ones). This argument is calculated by the function.
  7097. // TotalZeros The number of zero coefficients in block (except trailing zeros). This
  7098. // argument is calculated by the function.
  7099. // pLevels Pointer to an array of size 16 that contains non-zero quantized
  7100. // coefficients of the current block (except trailing ones) in reverse scan
  7101. // matrix order.
  7102. // pRuns Pointer to an array of size 16 that contains runs before non-zero
  7103. // quantized coefficients (including trailing ones) of the current block in
  7104. // reverse scan matrix order (except run before the first non-zero
  7105. // coefficient in block, which can be calculated using TotalZeros).
  7106. //
  7107. // Returns:
  7108. // ippStsNoErr No error
  7109. // ippStsNullPtrErr if a pointer is NULL
  7110. //
  7111. // Notes:
  7112. // H.264 standard: JVT-G050. ITU-T Recommendation and
  7113. // Final Draft International Standard of Joint Video Specification
  7114. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  7115. */
  7116. IPPAPI(IppStatus, ippiEncodeCoeffsCAVLC_H264_16s, (
  7117. const Ipp16s *pSrc,
  7118. Ipp8u AC,
  7119. const Ipp32s *pScanMatrix,
  7120. Ipp8u Count,
  7121. Ipp8u *Trailing_Ones,
  7122. Ipp8u *Trailing_One_Signs,
  7123. Ipp8u *NumOutCoeffs,
  7124. Ipp8u *TotalZeros,
  7125. Ipp16s *Levels,
  7126. Ipp8u *Runs))
  7127. IPPAPI(IppStatus, ippiEncodeCoeffsCAVLC_H264_32s ,(
  7128. const Ipp32s* pSrc,
  7129. Ipp32s AC,
  7130. const Ipp32s* pScanMatrix,
  7131. Ipp32s Count,
  7132. Ipp8u* Trailing_Ones,
  7133. Ipp8u* Trailing_One_Signs,
  7134. Ipp8u* NumOutCoeffs,
  7135. Ipp8u* TotalZeroes,
  7136. Ipp32s* Levels,
  7137. Ipp8u* Runs))
  7138. /* ///////////////////////////////////////////////////////////////////////////
  7139. // Name:
  7140. // ippiEncodeChromaDcCoeffsCAVLC_H264_16s
  7141. //
  7142. // Purpose: Calculates characteristics of 2X2 Chroma DC for CAVLC encoding.
  7143. //
  7144. // Parameters:
  7145. // pSrc Pointer to 2x2 block - array of size 4.
  7146. // Traling_One The number of trailing ones transform coefficient levels
  7147. // in a range[0;3]. This argument is calculated by the function.
  7148. // Traling_One_Signs Code that describes signs of trailing ones.
  7149. // (Trailing_One 1 - i)-bit in this code corresponds to a sign
  7150. // of i-trailing one in the current block. In this code 1 indicates
  7151. // negative value, 0 positive value. This argument is calculated
  7152. // by the function.
  7153. // NumOutCoeffs The number of non-zero coefficients in block (including trailing
  7154. // ones). This argument is calculated by the function.
  7155. // TotalZeros The number of zero coefficients in block (except trailing zeros). This
  7156. // argument is calculated by the function.
  7157. // pLevels Pointer to an array of size 4 that contains non-zero quantized
  7158. // coefficients of the current block (except trailing ones) in reverse scan
  7159. // matrix order.
  7160. // pRuns Pointer to an array of size 4 that contains runs before non-zero
  7161. // quantized coefficients (including trailing ones) of the current block in
  7162. // reverse scan matrix order (except run before the first non-zero
  7163. // coefficient in block, which can be calculated using TotalZeros).
  7164. //
  7165. // Returns:
  7166. // ippStsNoErr No error
  7167. // ippStsNullPtrErr if a pointer is NULL
  7168. //
  7169. // Notes:
  7170. // H.264 standard: JVT-G050. ITU-T Recommendation and
  7171. // Final Draft International Standard of Joint Video Specification
  7172. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  7173. */
  7174. IPPAPI(IppStatus, ippiEncodeChromaDcCoeffsCAVLC_H264_16s, (
  7175. const Ipp16s *pSrc,
  7176. Ipp8u *pTrailingOnes,
  7177. Ipp8u *pTrailingOneSigns,
  7178. Ipp8u *pNumOutCoeffs,
  7179. Ipp8u *pTotalZeros,
  7180. Ipp16s *pLevels,
  7181. Ipp8u *pRuns))
  7182. /*
  7183. // Name:
  7184. // ippiTransformQuantChromaDC_H264_16s_C1I
  7185. //
  7186. // Purpose: This function performs forward transform (if it's necessary) and quantization
  7187. // for 2x2 DC Croma block
  7188. //
  7189. // Parameters:
  7190. // pSrcDst Pointer to 2x2 chroma DC block - source & destination array of size 4
  7191. // pTBlock Pointer to 2x2 transformed chroma DC block - source or destination array of size 4
  7192. // QPCroma Quantization parameter for chroma. It's in range [0,39]
  7193. // NumLevels Pointer to value, which contains: a negative value of a number of non-zero
  7194. // elements in block after quantization (in the case of the first quantized element
  7195. // in block is not equal zero)
  7196. // a number of non-zero elements in block after quantization (in the case of the
  7197. // first quantized element in block is equal zero)
  7198. // This value is calculated by function.
  7199. // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise.
  7200. // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0
  7201. // if transforming process is not used.
  7202. //
  7203. // Returns:
  7204. // ippStsNoErr No error
  7205. // ippStsNullPtrErr pointers are NULL
  7206. // ippStsOutOfRangeErr QPCroma >39
  7207. // ippStsScaleRangeErr if any coefficient after quantization > MAX_CAVLC_LEVEL_VALUE
  7208. */
  7209. IPPAPI(IppStatus, ippiTransformQuantChromaDC_H264_16s_C1I, (
  7210. Ipp16s* pSrcDst,
  7211. Ipp16s* pTBlock,
  7212. Ipp32s QPCroma,
  7213. Ipp8s* pNumLevels,
  7214. Ipp8u intra,
  7215. Ipp8u needTransform))
  7216. /*
  7217. // Name:
  7218. // ippiTransformQuantLumaDC_H264_16s_C1I
  7219. //
  7220. // Purpose:
  7221. // This function performs forward transform (if it's necessary) and quantization
  7222. // for 4x4 DC Luma block.
  7223. //
  7224. // Parameters:
  7225. // pSrcDst Pointer to 4x4 luma DC block - source & destination array of size 4
  7226. // pTBlock Pointer to 4x4 transformed luma DC block - source or destination array of size 4
  7227. // QP Quantization parameter for luma. It's in range [0,51]
  7228. // NumLevels Pointer to value, which contains:
  7229. // a negative value of a number of non-zero elements in block after
  7230. // quantization (in the case of the first quantized element in block is not equal zero)
  7231. // a number of non-zero elements in block after quantization (in the case
  7232. // of the first quantized element in block is equal zero)
  7233. // This value is calculated by function.
  7234. // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 if transforming process is not used.
  7235. // pScanMatrix Scan matrix for coefficients in block (array of size 16)
  7236. // LastCoeff Position of the last non-zero coefficient in block after quantization. This value is calculated by function.
  7237. //
  7238. //
  7239. // Returns:
  7240. // ippStsNoErr No error
  7241. // ippStsNullPtrErr pointers are NULL
  7242. // ippStsOutOfRangeErr QP >51 or QP<0
  7243. // ippStsScaleRangeErr if any coefficient after quantization > MAX_CAVLC_LEVEL_VALUE
  7244. */
  7245. IPPAPI(IppStatus, ippiTransformQuantLumaDC_H264_16s_C1I, (
  7246. Ipp16s* pSrcDst,
  7247. Ipp16s* pTBlock,
  7248. Ipp32s QP,
  7249. Ipp8s* pNumLevels,
  7250. Ipp8u needTransform,
  7251. const Ipp16s* pScanMatrix,
  7252. Ipp8u* pLastCoeff))
  7253. /*
  7254. // Name:
  7255. // ippiTransformQuantResidual_H264_16s_C1I
  7256. //
  7257. // Purpose:
  7258. // This function performs forward transform and quantization for 4x4 residual block.
  7259. //
  7260. // Parameters:
  7261. // pSrcDst Pointer to 4x4 residual block - source & destination array of size 16
  7262. // QP Quantization parameter for luma or for chroma. It's in range [0,51] or [0,39]
  7263. // NumLevels Pointer to value, which contains:
  7264. // a negative value of a number of non-zero elements in block after quantization
  7265. // (in the case of the first quantized element in block is not equal zero)
  7266. // a number of non-zero elements in block after quantization (in the case
  7267. // of the first quantized element in block is equal zero)
  7268. // This value is calculated by function.
  7269. // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise.
  7270. // pScanMatrix Scan matrix for coefficients in block (array of size 16)
  7271. // LastCoeff Position of the last non-zero coefficient in block after quantization. This value is calculated by function.
  7272. //
  7273. //
  7274. // Returns:
  7275. // ippStsNoErr No error
  7276. // ippStsNullPtrErr pointers are NULL
  7277. // ippStsOutOfRangeErr QP >51 or QP<0
  7278. // ippStsScaleRangeErr if any coefficient after quantization > MAX_CAVLC_LEVEL_VALUE
  7279. */
  7280. IPPAPI(IppStatus, ippiTransformQuantResidual_H264_16s_C1I , (
  7281. Ipp16s* pSrcDst,
  7282. Ipp32s QP,
  7283. Ipp8s* pNumLevels,
  7284. Ipp8u intra,
  7285. const Ipp16s* pScanMatrix,
  7286. Ipp8u* pLastCoeff))
  7287. /* ///////////////////////////////////////////////////////////////////////////
  7288. // Name:
  7289. // ippiYCrCb411ToYCbCr422_5MBDV_16s8u_P3C2R
  7290. // ippiYCrCb411ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R
  7291. // ippiYCrCb411ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R
  7292. // ippiYCrCb411ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R
  7293. // ippiYCrCb411ToYCbCr422_16x4x5MB_DV_16s8u_P3C2R
  7294. //
  7295. // Purpose:
  7296. // Convert a YCrCb411 macro blocks to the YCbCr422 macro blocks.
  7297. // Reduce size of dst image in 1/2/4/8 times accordingly.
  7298. //
  7299. // Parameters:
  7300. // pSrc array of pointers to the five source macro blocks
  7301. // pDst array of pointers to the five destination macro blocks
  7302. // dstStep step for the destination image
  7303. //
  7304. // Returns:
  7305. // ippStsNoErr No error
  7306. // ippStsNullPtrErr One of the pSrc pDst is NULL
  7307. */
  7308. IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
  7309. IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
  7310. IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
  7311. IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5] ))
  7312. IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_16x4x5MB_DV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstPitch ) )
  7313. /* ///////////////////////////////////////////////////////////////////////////
  7314. // Name:
  7315. // ippiYCrCb411ToYCbCr422_EdgeDV_16s8u_P3C2R
  7316. // ippiYCrCb411ToYCbCr422_ZoomOut2_EdgeDV_16s8u_P3C2R
  7317. // ippiYCrCb411ToYCbCr422_ZoomOut4_EdgeDV_16s8u_P3C2R
  7318. // ippiYCrCb411ToYCbCr422_ZoomOut8_EdgeDV_16s8u_P3C2R
  7319. // ippiYCrCb411ToYCbCr422_8x8MB_DV_16s8u_P3C2R
  7320. //
  7321. // Purpose:
  7322. // Converts a YCrCb411 macro block to the YCbCr422 macro block at the right edge of destination image.
  7323. // Reduce size of dst image in 1/2/4/8 times accordingly.
  7324. //
  7325. // Parameters:
  7326. // pSrc pointer to the source macro block
  7327. // pDst pointer to the destination macro block
  7328. // dstStep step for the destination image
  7329. //
  7330. // Returns:
  7331. // ippStsNoErr No error
  7332. // ippStsNullPtrErr One of the pSrc pDst is NULL
  7333. */
  7334. IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_EdgeDV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstStep ))
  7335. IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut2_EdgeDV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstStep ))
  7336. IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut4_EdgeDV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstStep ))
  7337. IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut8_EdgeDV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstStep ))
  7338. IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_8x8MB_DV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstPitch ) )
  7339. /* ///////////////////////////////////////////////////////////////////////////
  7340. // Name:
  7341. // ippiYCrCb420ToYCbCr422_5MBDV_16s8u_P3C2R
  7342. // ippiYCrCb420ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R
  7343. // ippiYCrCb420ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R
  7344. // ippiYCrCb420ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R
  7345. // ippiYCrCb420ToYCbCr422_8x8x5MB_DV_16s8u_P3C2R
  7346. //
  7347. // Purpose:
  7348. // Convert a YCrCb420 macro blocks to the YCbCr422 macro blocks.
  7349. // Reduce size of dst image in 1/2/4/8 times accordingly.
  7350. //
  7351. // Parameters:
  7352. // pSrc array of pointers to the five source macro blocks
  7353. // pDst array of pointers to the five destination macro blocks
  7354. // dstStep step for the destination image
  7355. //
  7356. // Returns:
  7357. // ippStsNoErr No error
  7358. // ippStsNullPtrErr One of the pSrc pDst is NULL
  7359. */
  7360. IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
  7361. IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
  7362. IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
  7363. IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
  7364. IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_8x8x5MB_DV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstPitch ) )
  7365. /* ///////////////////////////////////////////////////////////////////////////
  7366. // Name:
  7367. // ippiYCrCb422ToYCbCr422_5MBDV_16s8u_P3C2R
  7368. // ippiYCrCb422ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R
  7369. // ippiYCrCb422ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R
  7370. // ippiYCrCb422ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R
  7371. // ippiYCrCb422ToYCbCr422_8x4x5MB_DV_16s8u_P3C2R
  7372. // ippiYCrCb422ToYCbCr422_10HalvesMB16x8_DV100_16s8u_P3C2R
  7373. //
  7374. // Purpose:
  7375. // Convert a YCrCb422 macro blocks to the YCbCr422 macro blocks.
  7376. // Reduce size of dst image in 1/2/4/8 times accordingly.
  7377. //
  7378. // Parameters:
  7379. // pSrc array of pointers to the five source macro blocks
  7380. // pDst array of pointers to the five destination macro blocks
  7381. // dstStep step for the destination image
  7382. //
  7383. // Returns:
  7384. // ippStsNoErr No error
  7385. // ippStsNullPtrErr One of the pSrc pDst is NULL
  7386. */
  7387. IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
  7388. IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
  7389. IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
  7390. IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5] ))
  7391. IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_8x4x5MB_DV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ) )
  7392. IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_10HalvesMB16x8_DV100_16s8u_P3C2R, (const Ipp16s* pSrc, Ipp8u* pDst[10], int dstStep ) )
  7393. /* ///////////////////////////////////////////////////////////////////////////
  7394. // Name:
  7395. // ippiDeinterlaceFilterTriangle_8u_C1R
  7396. //
  7397. // Purpose:
  7398. // This function deinterlaces video plane.
  7399. // The function performs triangle filtering of the image to remove interlacing
  7400. // flicker effect that arises when analogue interlaced TV data is
  7401. // viewed on a computer monitor.
  7402. //
  7403. // Parameters:
  7404. // pSrc Pointer to the source video plane.
  7405. // srcStep Step through the source video plane.
  7406. // pDst Pointer to the destination video plane.
  7407. // dstStep Step through the destination video plane.
  7408. // roiSize Size of ROI. Height should be greater than 3.
  7409. // centerWeight Weight of filtered pixel, must lie within the range from 0 to 256.
  7410. // layout Plane layout, required when the plane is only a part of the frame.
  7411. // Takes the following values:
  7412. // IPP_UPPER for the first slice
  7413. // IPP_CENTER for the middle slices
  7414. // IPP_LOWER for the last slice
  7415. // IPP_LOWER && IPP_UPPER && IPP_CENTER for the image that is not sliced.
  7416. //
  7417. // Returns:
  7418. // ippStsNoErr Indicates no error.
  7419. // ippStsNullPtrErr Indicates an error when at least one input pointer is NULL.
  7420. // ippStsSizeErr Indicates an error when roiSize has a field with zero or negative value.
  7421. // ippStsBadArgErr Indicates invalid argument.
  7422. */
  7423. IPPAPI(IppStatus, ippiDeinterlaceFilterTriangle_8u_C1R, (
  7424. const Ipp8u* pSrc,
  7425. Ipp32s srcStep,
  7426. Ipp8u* pDst,
  7427. Ipp32s dstStep,
  7428. IppiSize roiSize,
  7429. Ipp32u centerWeight,
  7430. Ipp32u layout))
  7431. /* /////////////////////////////////////////////////////////////////////////////
  7432. // General Color Conversion
  7433. ///////////////////////////////////////////////////////////////////////////// */
  7434. /* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  7435. // Name: ippiCbYCr422ToYCbCr420Rotate_8u_C2P3R
  7436. // Purpose: Converts a 2-channel YUY2 image to the I420(IYUV) image
  7437. // Return:
  7438. // ippStsNoErr Ok
  7439. // ippStsNullPtrErr One or more pointers are NULL
  7440. // ippStsSizeErr if srcRoi.width < 2 || srcRoi.height < 2
  7441. // ippStsDoubleSize If srcRoi.width and srcRoi.height are not multiples of 2,
  7442. // the function reduces the values to the nearest multiples of 2.
  7443. // Arguments:
  7444. // pSrc pointer to the source image
  7445. // srcStep step for the source image
  7446. // pDst array of pointers to the components of the destination image
  7447. // dstStep array of steps values for every component
  7448. // srcRoi region of interest of src image to be processed, in pixels,
  7449. // and roi of dst image you must calculate.
  7450. // rotation rotation control parameter; must be of
  7451. // the following pre-defined values:
  7452. // IPPVC_ROTATE_90CCW, IPPVC_ROTATE_90CW,
  7453. // IPPVC_ROTATE_180 or IPPVC_ROTATE_DISABLE,
  7454. */
  7455. IPPAPI(IppStatus,ippiCbYCr422ToYCbCr420_Rotate_8u_C2P3R,(const Ipp8u* pSrc, int srcStep, IppiSize srcRoi,Ipp8u *pDst[3], int dstStep[3],
  7456. int rotation ))
  7457. IPPAPI(IppStatus,ippiCbYCr422ToYCbCr420_Rotate_8u_P3R,(const Ipp8u* pSrc[3], int srcStep[3], IppiSize srcRoi,Ipp8u *pDst[3], int dstStep[3],
  7458. int rotation ))
  7459. /* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  7460. // Name: ippiResizeCCRotate_8u_C2R
  7461. // Description: synthesizes a low-resolution preview image for
  7462. // high-resolution video or still capture applications.
  7463. // combines scale reduction(2:1,4:1 or 8:1), color space
  7464. // conversion and rotation into a a single function
  7465. // Input Arguments:
  7466. // pSrc pointer to the source image. Input byte ordering is Cb Y Cr Y.
  7467. // srcStep step for the source image
  7468. // pDst pointer to the destination image
  7469. // dstStep step for the destination image
  7470. // srcRoi region of interest of src image to be processed, in pixels,
  7471. // and roi of dst image you must calculate.
  7472. // zoomFactor parameter, indicating downscale factor, takes values 2, 4 or 8 for 2:1,4:1,and 8:1 downscale respectively.
  7473. // interpolation type of interpolation to
  7474. // perform resampling of the input image
  7475. // The following are currently supported:
  7476. // IPPI_INTER_NN nearest neighbor interpolation
  7477. // IPPI_INTER_LINEAR linear interpolation
  7478. // colorConversion color conversion control parameter,
  7479. // must be set to one of the following
  7480. // pre-defined values:
  7481. // IPPVC_CbYCr422ToBGR565
  7482. // IPPVC_CbYCr422ToBGR565
  7483. // rotation rotation control parameter,must be of
  7484. // the following pre-defined values:
  7485. // IPPVC_ROTATE_90CCW, IPPVC_ROTATE_90CW,
  7486. // IPPVC_ROTATE_180 or IPPVC_ROTATE_DISABLE,
  7487. // Output Arguments: pDst pointer to the start of the buffer
  7488. // containing the, resized, color-converted,
  7489. // and rotated output image.
  7490. //
  7491. // Returns:
  7492. // ippStsNoErr Ok
  7493. // ippStsNullPtrErr one or more pointers are NULL
  7494. // ippStsSizeErr srcRoi.width < zoomFactor
  7495. // ippStsSizeErr srcRoi.height < zoomFactor
  7496. // ippStsInterpolationErr invalid values of the interpolation control parameter.
  7497. // ippStsResizeFactorErr invalid values of the zoomFactor control parameter.
  7498. // ippStsBadArgErr invalid values of the rotation control parameter.
  7499. // ippStsDoubleSize if srcRoi.width and srcRoi.height are not multiples of 2,
  7500. // the function reduces the values to the nearest multiples of 2.
  7501. */
  7502. IPPAPI(IppStatus, ippiResizeCCRotate_8u_C2R,(const Ipp8u* pSrc, int srcStep, IppiSize srcRoi,
  7503. Ipp16u *pDst,int dstStep, int zoomFactor,int interpolation,int colorConversion,int rotation ))
  7504. /* ///////////////////////////////////////////////////////////////////////////
  7505. // Name:
  7506. // ippiGenScaleLevel8x8_H264_8u16s_D2
  7507. //
  7508. // Purpose:
  7509. // Performs quantization including 8x8 transform normalization
  7510. //
  7511. // Parameters:
  7512. // pSrcInvScaleMatrix - Pointer to an original inverse scaling matrix for 8x8 transform.
  7513. // SrcStep - Step of the pSrcInvScaleMatrix in bytes.
  7514. // pDstInvScaleMatrix - Pointer to a destination inverse scaling matrix -- array of size 64.
  7515. // pDstScaleMatrix - Pointer to a destination forward scaling matrix - array of size 64.
  7516. // Qp_rem - Reminder from an integer division of quantization parameter by 6.
  7517. //
  7518. // Returns:
  7519. // ippStsNoErr No error
  7520. // ippStsNullPtrErr at least one of the pointers is NULL
  7521. // ippStsQPErr Qp_rem is less than 0 or greater than 5
  7522. //
  7523. */
  7524. IPPAPI(IppStatus, ippiGenScaleLevel8x8_H264_8u16s_D2, (
  7525. const Ipp8u *pSrcInvScaleMatrix,
  7526. int SrcStep,
  7527. Ipp16s *pDstInvScaleMatrix,
  7528. Ipp16s *pDstScaleMatrix,
  7529. int Qp_rem))
  7530. /* ///////////////////////////////////////////////////////////////////////////
  7531. // Name:
  7532. // ippiTransformLuma8x8Fwd_H264_16s_C1I
  7533. //
  7534. // Purpose:
  7535. // Performs forward 8x8 transform for a 8x8 Luma block without normalization.
  7536. //
  7537. // Parameters:
  7538. // pSrcDst - pointer to the initial 8x8 Luma block and resultant coefficients
  7539. // (array of size 64).
  7540. // Returns:
  7541. // ippStsNoErr No error
  7542. // ippStsNullPtrErr at least one of the pointers is NULL
  7543. */
  7544. IPPAPI(IppStatus, ippiTransformLuma8x8Fwd_H264_16s_C1I, (Ipp16s *pSrcDst))
  7545. /* ///////////////////////////////////////////////////////////////////////////
  7546. // Name:
  7547. // ippiQuantLuma8x8_H264_16s_C1
  7548. // ippiQuantLuma8x8_H264_32s_C1
  7549. //
  7550. // Purpose:
  7551. // Performs quantization including 8x8 transform normalization
  7552. //
  7553. // Parameters:
  7554. // pSrc - Pointer to Luma block coefficients - array of size 64.
  7555. // pDst - Pointer to quantized and normalized coefficients -
  7556. // array of size 64.
  7557. // Qp6 - Quantization parameter divided by 6
  7558. // Intra - Flag, 1 if the slice is intra and 0 otherwise.
  7559. // pScanMatrix - Pointer to a scan matrix for the coefficients in the block (array
  7560. // of size 64)
  7561. // pScaleLevels - Pointer to a scale level matrix taking into account 8x8 transform
  7562. // normalization.
  7563. // pNumLevels - Pointer to a value which contains:
  7564. // - a negative value of a number of non-zero elements in block after
  7565. // quantization (when the first quantized element in block is not equal
  7566. // to zero),
  7567. // - a number of non-zero elements in block after quantization (when
  7568. // the first quantized element in block is equal to zero).
  7569. // pLastCoeff - Position of the last (in order of pScanMatrix) non-zero coefficient
  7570. // in block after quantization. This value is calculated by the function.
  7571. //
  7572. // Returns:
  7573. // ippStsNoErr No error
  7574. // ippStsNullPtrErr at least one of the pointers is NULL
  7575. // ippStsQPErr Qp6 is less than 0 or greater than 8
  7576. //
  7577. // NOTE:
  7578. // pSrc and pDst will usually point to the same memory region!
  7579. */
  7580. IPPAPI(IppStatus, ippiQuantLuma8x8_H264_16s_C1, (
  7581. const Ipp16s *pSrc,
  7582. Ipp16s *pDst,
  7583. int Qp6,
  7584. int Intra,
  7585. const Ipp16s *pScanMatrix,
  7586. const Ipp16s *pScaleLevels,
  7587. int *pNumLevels,
  7588. int *pLastCoeff))
  7589. IPPAPI(IppStatus, ippiQuantLuma8x8_H264_32s_C1, (
  7590. const Ipp32s* pSrc,
  7591. Ipp32s* pDst,
  7592. Ipp32s Qp6,
  7593. Ipp32s Intra,
  7594. const Ipp16s* pScanMatrix,
  7595. const Ipp16s* pScaleLevels,
  7596. Ipp32s* pNumLevels,
  7597. Ipp32s* pLastCoeff))
  7598. /* ///////////////////////////////////////////////////////////////////////////
  7599. // Name:
  7600. // ippiQuantLuma8x8Inv_H264_16s_C1I
  7601. // ippiQuantInvLuma8x8_H264_32s_C1I
  7602. //
  7603. // Purpose:
  7604. // Performs dequantization including inverse 8x8 transform normalization
  7605. //
  7606. // Parameters:
  7607. // pSrcDst - Pointer to a Luma block coefficients - source and destination
  7608. // array of size 64.
  7609. // Qp6 - Quantization parameter divided by 6
  7610. // pInvLevelScale - Pointer to an inverse scale levels matrix.
  7611. //
  7612. // Returns:
  7613. // ippStsNoErr No error
  7614. // ippStsNullPtrErr at least one of the pointers is NULL
  7615. // ippStsQPErr Qp6 is less than 0 or greater than 8 or
  7616. //
  7617. */
  7618. IPPAPI(IppStatus, ippiQuantLuma8x8Inv_H264_16s_C1I, (
  7619. Ipp16s *pSrcDst,
  7620. int Qp6,
  7621. const Ipp16s *pInvLevelScale))
  7622. IPPAPI(IppStatus, ippiQuantInvLuma8x8_H264_32s_C1I, (
  7623. Ipp32s* pSrcDst,
  7624. Ipp32s Qp6,
  7625. const Ipp16s* pInvLevelScale))
  7626. /* ///////////////////////////////////////////////////////////////////////////
  7627. // Name:
  7628. // ippiTransformLuma8x8InvAddPred_H264_16s8u_C1R
  7629. //
  7630. // Purpose:
  7631. // Performs inverse 8x8 transform for a 8x8 Luma block with subsequent intra
  7632. // prediction or motion compensation, coefficients are assumed to be pre-normalized.
  7633. //
  7634. // Parameters:
  7635. // pPred - pointer to the reference 8x8 block, which is used for intra
  7636. // prediction or motion compensation.
  7637. // PredStep - reference frame step in bytes.
  7638. // pSrcDst - pointer to the initial coefficients and buffer for the computations
  7639. // (8x8 block) - array of size 64.
  7640. // pDst - pointer to the destination 8x8 block.
  7641. // DstStep - destination frame step in bytes.
  7642. //
  7643. // Returns:
  7644. // ippStsNoErr No error
  7645. // ippStsNullPtrErr at least one of the pointers is NULL
  7646. //
  7647. */
  7648. IPPAPI(IppStatus, ippiTransformLuma8x8InvAddPred_H264_16s8u_C1R, (
  7649. const Ipp8u *pPred,
  7650. int PredStep,
  7651. Ipp16s *pSrcDst,
  7652. Ipp8u *pDst,
  7653. int DstStep))
  7654. /*///////////////////////////////////////////////////////////////////////
  7655. // Name:
  7656. // ippiQuantWeightBlockInv_DV_16s_C1I
  7657. //
  7658. // Purpose:
  7659. // The function performs de quantization and de weighting at one block according to DV standard.
  7660. //
  7661. // Parameters:
  7662. // pSrcDs - pointer to the source & destination 8x8 block.
  7663. // pQuantInvTable - pointer to an array that contains values of quantification table for the
  7664. current block.
  7665. // pWeightInvTable - Pointer to an array that contains values of weight table for the current block.
  7666. //
  7667. // Returns:
  7668. // ippStsNoErr No error
  7669. // ippStsNullPtrErr at least one of the pointers is NULL
  7670. //
  7671. */
  7672. IPPAPI(IppStatus, ippiQuantWeightBlockInv_DV_16s_C1I, (
  7673. Ipp16s *pSrcDst,
  7674. const Ipp16s *pQuantInvTable,
  7675. const Ipp16s *pWeightInvTable))
  7676. /*///////////////////////////////////////////////////////////////////////
  7677. // Name:
  7678. // ippiQuantWeightBlockInv_DV100_16s_C1I
  7679. //
  7680. // Purpose:
  7681. // The function performs de quantization and de weighting at one block according to DV100 standard.
  7682. //
  7683. // Parameters:
  7684. // pSrcDs - pointer to the source & destination 8x8 block.
  7685. // pWeightInvTable - Pointer to an array that contains values of weight table for the current block.
  7686. // quantValue - value of quantization parameter for the current block.
  7687. //
  7688. // Returns:
  7689. // ippStsNoErr No error
  7690. // ippStsNullPtrErr at least one of the pointers is NULL
  7691. //
  7692. */
  7693. IPPAPI(IppStatus, ippiQuantWeightBlockInv_DV100_16s_C1I, (
  7694. Ipp16s *pSrcDst,
  7695. const Ipp16s *pWeightInvTable,
  7696. Ipp32s quantValue))
  7697. /*///////////////////////////////////////////////////////////////////////
  7698. // Name:
  7699. // ippiDCT8x4x2To4x4Inv_DV_16s_C1I
  7700. //
  7701. // Purpose: The function performs inverse discrete cosines transform at 2x4x8 block. After
  7702. // that create block 4x4: first, values in rows are average in pairs;
  7703. // second, values in columns are average in pairs too. And we got new values
  7704. // of block 4x4.
  7705. // Values calculated for new 4x4 block stored in series (in a row) in memory.
  7706. //
  7707. //
  7708. // Parameters:
  7709. // pSrcDst - pointer to the source & destination 2x4x8 block.
  7710. //
  7711. // Returns:
  7712. // ippStsNoErr No error
  7713. // ippStsNullPtrErr at least one of the pointers is NULL
  7714. //
  7715. */
  7716. IPPAPI(IppStatus, ippiDCT8x4x2To4x4Inv_DV_16s_C1I, (
  7717. Ipp16s *pSrcDst))
  7718. /* ///////////////////////////////////////////////////////////////////////////
  7719. // Name:
  7720. // ippiTransform8x8Inv_VC1_16s_C1R
  7721. // ippiTransform4x8Inv_VC1_16s_C1R
  7722. // ippiTransform8x4Inv_VC1_16s_C1R
  7723. // ippiTransform4x4Inv_VC1_16s_C1R
  7724. // ippiTransform8x8Inv_VC1_16s_C1IR
  7725. // ippiTransform4x8Inv_VC1_16s_C1IR
  7726. // ippiTransform8x4Inv_VC1_16s_C1IR
  7727. // ippiTransform4x4Inv_VC1_16s_C1IR
  7728. //
  7729. // Purpose:
  7730. // Performs inverse transform of 8x8/4x8/8x4/4x4 block according to VC-1
  7731. // standard
  7732. //
  7733. // Parameters:
  7734. // pSrc Pointer to the source block.
  7735. // srcStep Step in bytes through the source plane.
  7736. // pDst Pointer to the destination block.
  7737. // dstStep Step in bytes through the destination plane.
  7738. // srcSizeNZ The size of top-left rectangle which contains non-zero
  7739. // coefficients
  7740. //
  7741. // Returns:
  7742. // ippStsNoErr No error.
  7743. // ippStsNullPtrErr At least one input pointer is NULL
  7744. */
  7745. IPPAPI(IppStatus, ippiTransform8x8Inv_VC1_16s_C1R, (
  7746. const Ipp16s *pSrc,
  7747. int srcStep,
  7748. Ipp16s *pDst,
  7749. int dstStep,
  7750. IppiSize srcSizeNZ))
  7751. IPPAPI(IppStatus, ippiTransform4x4Inv_VC1_16s_C1R, (
  7752. const Ipp16s *pSrc,
  7753. int srcStep,
  7754. Ipp16s *pDst,
  7755. int dstStep,
  7756. IppiSize srcSizeNZ))
  7757. IPPAPI(IppStatus, ippiTransform8x4Inv_VC1_16s_C1R, (
  7758. const Ipp16s *pSrc,
  7759. int srcStep,
  7760. Ipp16s *pDst,
  7761. int dstStep,
  7762. IppiSize srcSizeNZ))
  7763. IPPAPI(IppStatus, ippiTransform4x8Inv_VC1_16s_C1R, (
  7764. const Ipp16s *pSrc,
  7765. int srcStep,
  7766. Ipp16s *pDst,
  7767. int dstStep,
  7768. IppiSize srcSizeNZ))
  7769. IPPAPI(IppStatus, ippiTransform8x8Inv_VC1_16s_C1IR, (
  7770. Ipp16s *pSrcDst,
  7771. int srcDstStep,
  7772. IppiSize srcSizeNZ))
  7773. IPPAPI(IppStatus, ippiTransform4x4Inv_VC1_16s_C1IR, (
  7774. Ipp16s *pSrcDst,
  7775. int srcDstStep,
  7776. IppiSize srcSizeNZ))
  7777. IPPAPI(IppStatus, ippiTransform8x4Inv_VC1_16s_C1IR, (
  7778. Ipp16s *pSrcDst,
  7779. int srcDstStep,
  7780. IppiSize srcSizeNZ))
  7781. IPPAPI(IppStatus, ippiTransform4x8Inv_VC1_16s_C1IR, (
  7782. Ipp16s *pSrcDst,
  7783. int srcDstStep,
  7784. IppiSize srcSizeNZ))
  7785. /* ///////////////////////////////////////////////////////////////////////////
  7786. // Name:
  7787. // ippiInterpolateQPBilinear_VC1_8u_C1R
  7788. //
  7789. // Purpose:
  7790. // Performs bilinear quarter-pel interpolation for NxM block in
  7791. // accordance with 8.3.6.5.1 of VC-1 standard
  7792. //
  7793. // Parameters:
  7794. // pParams Pointer to structure which contains parameters for interpolation:
  7795. // pSrc Pointer to the source block.
  7796. // srcStep Step in bytes through the source plane.
  7797. // pDst Pointer to the destination block.
  7798. // dstStep Step in bytes through the destination plane.
  7799. // dx, dy Fractional parts of the motion vector in 1/4 pel units
  7800. // (0, 1, 2, or 3).
  7801. // roiSize BlockSize. It should be equal 4x4, 8x4, 8x8, 16x16
  7802. // roundControl Frame level rounding control value as describe in section
  7803. // 8.3.7 of of VC-1 standard
  7804. //
  7805. // Returns:
  7806. // ippStsNoErr No error.
  7807. // ippStsNullPtrErr At least one input pointer is NULL
  7808. */
  7809. IPPAPI(IppStatus, ippiInterpolateQPBilinear_VC1_8u_C1R, (
  7810. const IppVCInterpolate_8u* pParams))
  7811. /* ///////////////////////////////////////////////////////////////////////////
  7812. // Name:
  7813. // ippiInterpolateQPBilinear_VC1_8u_C2R
  7814. //
  7815. // Purpose:
  7816. // Performs bilinear quarter-pel interpolation for NxM block in
  7817. // accordance with 8.3.6.5.1 of VC-1 standard for NV12 chroma format
  7818. //
  7819. // Parameters:
  7820. // pParams Pointer to structure which contains parameters for interpolation:
  7821. // pSrc Pointer to the source block.
  7822. // srcStep Step in bytes through the source plane.
  7823. // pDst Pointer to the destination block.
  7824. // dstStep Step in bytes through the destination plane.
  7825. // dx, dy Fractional parts of the motion vector in 1/4 pel units
  7826. // (0, 1, 2, or 3).
  7827. // roiSize BlockSize. It should be equal 4x4, 8x4, 8x8
  7828. // roundControl Frame level rounding control value as describe in section
  7829. // 8.3.7 of of VC-1 standard
  7830. //
  7831. // Returns:
  7832. // ippStsNoErr No error.
  7833. // ippStsNullPtrErr At least one input pointer is NULL
  7834. */
  7835. IPPAPI(IppStatus, ippiInterpolateQPBilinear_VC1_8u_C2R, (
  7836. const IppVCInterpolate_8u* pParams))
  7837. /* ///////////////////////////////////////////////////////////////////////////
  7838. // Name:
  7839. // ippiInterpolateICBilinearBlock_VC1_8u_C1R
  7840. //
  7841. // Purpose:
  7842. // Performs intensity compensation and bilinear quarter-pel interpolation for motion estimation of the
  7843. // luma or chroma component using entire motion vector.
  7844. //
  7845. // Parameters:
  7846. // interpolateInfo Pointer to an instance of the structure holding interpolation
  7847. // parameters.
  7848. // pSrc pointer to start of reference field (or pointer to start of reference frame in the case of reference frame)
  7849. // srcStep step of the reference frame
  7850. // pDst pointer to destination MB
  7851. // dstStep step of destination buffer
  7852. // sizeFrame dimensions of the reference image planes
  7853. // sizeBlock dimensions of the block to be interpolated. Maximum size is 16 in all dimensions.
  7854. // pointRefBlockPos position inside reference frame. Which was calculated as sum of current position and integer part of motion vector
  7855. // pointVectorQuarterPix quarter part of MV
  7856. // pLUTTop pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M]
  7857. // and applied for pixels of top field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field.
  7858. // If both pointers are equal to 0, no then Intensity Compensation is applied for this field.
  7859. // pLUTBottom pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M]
  7860. // and applied for pixels of bottom field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field
  7861. //
  7862. // OppositePadding flag that specified padding correspondence between current frame and reference frame.
  7863. // fieldPrediction flag that specified Prediction type for current MB.
  7864. // RoundControl indicate type of rounding for the current frame. Defined according to 8.3.7 of [SMPTE 421M]. RoundControl can be equal 0 or 1.
  7865. // isPredBottom flag that specified type of reference field in case of interlace reference picture.
  7866. //
  7867. // Returns:
  7868. // ippStsNoErr No error.
  7869. // ippStsNullPtrErr At least one input pointer is NULL
  7870. */
  7871. IPPAPI(IppStatus, ippiInterpolateICBilinearBlock_VC1_8u_C1R,(
  7872. const IppVCInterpolateBlockIC_8u* pParams))
  7873. /* ///////////////////////////////////////////////////////////////////////////
  7874. // Name:
  7875. // ippiInterpolateICBilinearBlock_VC1_8u_C2R
  7876. //
  7877. // Purpose:
  7878. // Performs intensity compensation and bilinear quarter-pel interpolation for motion estimation of the
  7879. // chroma component in NV12 format using entire motion vector.
  7880. //
  7881. // Parameters:
  7882. // interpolateInfo Pointer to an instance of the structure holding interpolation
  7883. // parameters.
  7884. // pSrc pointer to start of reference field (or pointer to start of reference frame in the case of reference frame)
  7885. // srcStep step of the reference frame
  7886. // pDst pointer to destination MB
  7887. // dstStep step of destination buffer
  7888. // sizeFrame dimensions of the reference image planes
  7889. // sizeBlock dimensions of the block to be interpolated. Maximum size is 16x8 (in NV12 format, that means 8x8 for each chroma plane).
  7890. // pointRefBlockPos position inside reference frame. Which was calculated as sum of current position and integer part of motion vector
  7891. // pointVectorQuarterPix quarter part of MV
  7892. // pLUTTop pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M]
  7893. // and applied for pixels of top field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field.
  7894. // If both pointers are equal to 0, no then Intensity Compensation is applied for this field.
  7895. // pLUTBottom pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M]
  7896. // and applied for pixels of bottom field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field
  7897. //
  7898. // OppositePadding flag that specified padding correspondence between current frame and reference frame.
  7899. // fieldPrediction flag that specified Prediction type for current MB.
  7900. // RoundControl indicate type of rounding for the current frame. Defined according to 8.3.7 of [SMPTE 421M]. RoundControl can be equal 0 or 1.
  7901. // isPredBottom flag that specified type of reference field in case of interlace reference picture.
  7902. //
  7903. // Returns:
  7904. // ippStsNoErr No error.
  7905. // ippStsNullPtrErr At least one input pointer is NULL
  7906. */
  7907. IPPAPI(IppStatus, ippiInterpolateICBilinearBlock_VC1_8u_C2R,(
  7908. const IppVCInterpolateBlockIC_8u* pParams))
  7909. /* ///////////////////////////////////////////////////////////////////////////
  7910. // Name:
  7911. // ippiInterpolateQPBicubic_VC1_8u_C1R
  7912. //
  7913. // Purpose:
  7914. // Performs bicubic quarter-pel interpolation for NxM block in
  7915. // accordance with 8.3.6.5.2 of VC-1 standard
  7916. //
  7917. // Parameters:
  7918. // pParams Pointer to structure which contains parameters for interpolation:
  7919. // pSrc Pointer to the source block.
  7920. // srcStep Step in bytes through the source plane.
  7921. // pDst Pointer to the destination block.
  7922. // dstStep Step in bytes through the destination plane.
  7923. // dx, dy Fractional parts of the motion vector in 1/4 pel units
  7924. // (0, 1, 2, or 3).
  7925. // roiSize BlockSize. It should be equal 4x4, 8x4, 8x8, 16x16
  7926. // roundControl Frame level rounding control value as describe in section
  7927. // 8.3.7 of of VC-1 standard
  7928. //
  7929. // Returns:
  7930. // ippStsNoErr No error.
  7931. // ippStsNullPtrErr At least one input pointer is NULL
  7932. */
  7933. IPPAPI(IppStatus, ippiInterpolateQPBicubic_VC1_8u_C1R, (
  7934. const IppVCInterpolate_8u* pParams))
  7935. /* ///////////////////////////////////////////////////////////////////////////
  7936. // Name:
  7937. // ippiInterpolateICBicubicBlock_VC1_8u_C1R
  7938. //
  7939. // Purpose:
  7940. // Performs intensity compensation and bicubic quarter-pel interpolation for motion estimation of the
  7941. // luma component using entire motion vector.
  7942. //
  7943. // Parameters:
  7944. // interpolateInfo Pointer to an instance of the structure holding interpolation
  7945. // parameters.
  7946. // pSrc pointer to start of reference field (or pointer to start of reference frame in the case of reference frame)
  7947. // srcStep step of the reference frame
  7948. // pDst pointer to destination MB
  7949. // dstStep step of destination buffer
  7950. // sizeFrame dimensions of the reference image planes
  7951. // sizeBlock dimensions of the block to be interpolated. Maximum size is 16 in all dimensions.
  7952. // pointRefBlockPos position inside reference frame. Which was calculated as sum of current position and integer part of motion vector
  7953. // pointVectorQuarterPix quarter part of MV
  7954. // pLUTTop pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M]
  7955. // and applied for pixels of top field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field.
  7956. // If both pointers are equal to 0, no then Intensity Compensation is applied for this field.
  7957. // pLUTBottom pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M]
  7958. // and applied for pixels of bottom field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field
  7959. //
  7960. // OppositePadding flag that specified padding correspondence between current frame and reference frame.
  7961. // fieldPrediction flag that specified Prediction type for current MB.
  7962. // RoundControl indicate type of rounding for the current frame. Defined according to 8.3.7 of [SMPTE 421M]. RoundControl can be equal 0 or 1.
  7963. // isPredBottom flag that specified type of reference field in case of interlace reference picture.
  7964. //
  7965. // Returns:
  7966. // ippStsNoErr No error.
  7967. // ippStsNullPtrErr At least one input pointer is NULL
  7968. */
  7969. IPPAPI(IppStatus, ippiInterpolateICBicubicBlock_VC1_8u_C1R, (
  7970. const IppVCInterpolateBlockIC_8u* pParams))
  7971. /* ///////////////////////////////////////////////////////////////////////////
  7972. // Name:
  7973. // ippiSmoothingLuma_VerEdge_VC1_16s8u_C1R
  7974. //
  7975. // Purpose:
  7976. // Performs smoothing filtering on the vertical edge (internal or external)
  7977. // of the luma 16X16 macroblocks. (SMPTE 421M, 8.5)
  7978. //
  7979. // Parameters:
  7980. // pSrcLeft Pointer to the first pixel of the column of the left top block of the left macroblock, from which the smoothing will start.
  7981. // srcLeftStep Step for transfer to the next row in the left macroblock
  7982. // pSrcRight Pointer to the first pixel of the top left block of the right macroblock
  7983. // srcRightStep Step for transfer to the next row in the right macroblock
  7984. // pDst Pointer to the first pixel of the right macroblock in the Y-Plane.
  7985. // dstStep Y-plane step (in bytes).
  7986. // fieldNeighbourFlag Indicates the field macroblock property(2 bits):
  7987. // if (fieldNeighbourFlag & VC1_FIELD_LEFT_MB) - the left macroblock is field decoded
  7988. // if (fieldNeighbourFlag & VC1_FIELD_RIGHT_MB) - the right macroblock is field decoded
  7989. // edgeDisableFlag flag which indicates:
  7990. // if (edgeDisableFlag & VC1_EDGE_HALF_1) then the upper vertical edge is disabled for smoothing
  7991. // if (edgeDisableFlag & VC1_EDGE_HALF_2) then the bottom vertical edge is disabled for smoothing
  7992. //
  7993. // Returns:
  7994. // ippStsNoErr No error.
  7995. // ippStsNullPtrErr At least one input pointer is NULL
  7996. */
  7997. IPPAPI(IppStatus, ippiSmoothingLuma_VerEdge_VC1_16s8u_C1R, (Ipp16s* pSrcLeft, Ipp32s srcLeftStep,
  7998. Ipp16s* pSrcRight, Ipp32s srcRightStep,
  7999. Ipp8u* pDst, Ipp32s dstStep,
  8000. Ipp32u fieldNeighbourFlag,
  8001. Ipp32u edgeDisableFlag))
  8002. /* ///////////////////////////////////////////////////////////////////////////
  8003. // Name:
  8004. // ippiSmoothingLuma_HorEdge_VC1_16s8u_C1R
  8005. //
  8006. // Purpose:
  8007. // Performs smoothing filtering on the horizontal edge (internal or external)
  8008. // of the luma 16X16 macroblocks. (SMPTE 421M, 8.5)
  8009. //
  8010. // Parameters:
  8011. // pSrcUpper The pointer to the first pixel of the left bottom block row of the upper macroblock, from which the smoothing will start
  8012. // srcUpperStep Step for transfer to the next row in the upper macroblock
  8013. // pSrcBottom Pointer to the first pixel of the top left block of the bottom macroblock
  8014. // srcBottomStep Step for transfer to the next row in the bottom macroblock
  8015. // pDst Pointer to the first pixel of the bottom macroblock in the Y-Plane.
  8016. // dstStep Y-plane step (in bytes).
  8017. // edgeDisableFlag flag which indicates:
  8018. // if (edgeDisableFlag & VC1_EDGE_HALF_1) then the left horizontal edge is disabled for smoothing
  8019. // if (edgeDisableFlag & VC1_EDGE_HALF_2) then the right horizontal edge is disabled for smoothing
  8020. //
  8021. // Returns:
  8022. // ippStsNoErr No error.
  8023. // ippStsNullPtrErr At least one input pointer is NULL
  8024. */
  8025. IPPAPI(IppStatus, ippiSmoothingLuma_HorEdge_VC1_16s8u_C1R, (Ipp16s* pSrcUpper, Ipp32s srcUpperStep,
  8026. Ipp16s* pSrcBottom, Ipp32s srcBottomStep,
  8027. Ipp8u* pDst, Ipp32s dstStep,
  8028. Ipp32u edgeDisableFlag))
  8029. /* ///////////////////////////////////////////////////////////////////////////
  8030. // Name:
  8031. // ippiSmoothingChroma_HorEdge_VC1_16s8u_C1R
  8032. //
  8033. // Purpose:
  8034. // Performs smoothing filtering on the horizontal edge (internal or external)
  8035. // of the chroma 8x8 blocks. (SMPTE 421M, 8.5)
  8036. //
  8037. // Parameters:
  8038. // pSrcUpper The pointer to the first pixel of the left bottom block row of the upper macroblock, from which the smoothing will start
  8039. // srcUpperStep Step for transfer to the next row in the upper macroblock
  8040. // pSrcBottom Pointer to the first pixel of the top left block of the bottom macroblock
  8041. // srcBottomStep Step for transfer to the next row in the bottom macroblock
  8042. // pDst Pointer to the first pixel of the bottom macroblock in the U- or V-Plane.
  8043. // dstStep U- or V-plane step (in bytes).
  8044. //
  8045. // Returns:
  8046. // ippStsNoErr No error.
  8047. // ippStsNullPtrErr At least one input pointer is NULL
  8048. */
  8049. IPPAPI(IppStatus, ippiSmoothingChroma_HorEdge_VC1_16s8u_C1R, (Ipp16s* pSrcUpper, Ipp32s srcUpperStep,
  8050. Ipp16s* pSrcBottom, Ipp32s srcBottomStep,
  8051. Ipp8u* pDst, Ipp32s dstStep))
  8052. /* ///////////////////////////////////////////////////////////////////////////
  8053. // Name:
  8054. // ippiSmoothingChroma_HorEdge_VC1_16s8u_P2C2R
  8055. //
  8056. // Purpose:
  8057. // Performs smoothing filtering on the horizontal edge (internal or external)
  8058. // of the chroma 8x8 blocks in nv12 chroma format. (SMPTE 421M, 8.5)
  8059. //
  8060. // Parameters:
  8061. // pSrcUpperU The pointer to the first pixel of the upper U block row
  8062. // srcUpperStepU Step for transfer to the next row in the upper U block
  8063. // pSrcBottomU Pointer to the first pixel of the top U block of the bottom macroblock
  8064. // srcBottomStepU Step for transfer to the next row in the U bottom macroblock
  8065. // pSrcUpperV The pointer to the first pixel of the upper V block row
  8066. // srcUpperStepV Step for transfer to the next row in the upper V block
  8067. // pSrcBottomV Pointer to the first pixel of the top V block of the bottom macroblock
  8068. // srcBottomStepV Step for transfer to the next row in the V bottom macroblock
  8069. // pDst Pointer to the first pixel of the bottom macroblock in the UV-Plane in nv12 format.
  8070. // dstStep nv12 UV-plane step (in bytes).
  8071. //
  8072. // Returns:
  8073. // ippStsNoErr No error.
  8074. // ippStsNullPtrErr At least one input pointer is NULL
  8075. */
  8076. IPPAPI(IppStatus,ippiSmoothingChroma_HorEdge_VC1_16s8u_P2C2R,(Ipp16s* pSrcUpperU, Ipp32u srcUpperStepU,
  8077. Ipp16s* pSrcBottomU, Ipp32u srcBottomStepU,
  8078. Ipp16s* pSrcUpperV, Ipp32u srcUpperStepV,
  8079. Ipp16s* pSrcBottomV, Ipp32u srcBottomStepV,
  8080. Ipp8u* pDst, Ipp32u dstStep))
  8081. /* ///////////////////////////////////////////////////////////////////////////
  8082. // Name:
  8083. // ippiSmoothingChroma_VerEdge_VC1_16s8u_C1R
  8084. //
  8085. // Purpose:
  8086. // Performs smoothing filtering on the vertical edge (internal or external)
  8087. // of the chroma 8X8 blocks. (SMPTE 421M, 8.5)
  8088. //
  8089. // pSrcLeft Pointer to the first pixel of the column of the left block, from which the smoothing will start.
  8090. // srcLeftStep Step for transfer to the next row in the left block
  8091. // pSrcRight Pointer to the first pixel of the right block
  8092. // srcRightStep Step for transfer to the next row in the right block
  8093. // pDst Pointer to the first pixel of the right block in the U- or V-Plane.
  8094. // dstStep U- or V-plane step (in bytes).
  8095. //
  8096. // Returns:
  8097. // ippStsNoErr No error.
  8098. // ippStsNullPtrErr At least one input pointer is NULL
  8099. */
  8100. IPPAPI(IppStatus, ippiSmoothingChroma_VerEdge_VC1_16s8u_C1R, (Ipp16s* pSrcLeft, Ipp32s srcLeftStep,
  8101. Ipp16s* pSrcRight, Ipp32s srcRightStep,
  8102. Ipp8u* pDst, Ipp32s dstStep))
  8103. /* ///////////////////////////////////////////////////////////////////////////
  8104. // Name:
  8105. // ippiSmoothingChroma_VerEdge_VC1_16s8u_P2C2R
  8106. //
  8107. // Purpose:
  8108. // Performs smoothing filtering on the vertical edge (internal or external)
  8109. // of the chroma 8X8 blocks in nv12 chroma format. (SMPTE 421M, 8.5)
  8110. //
  8111. // pSrcLeftU Pointer to the first pixel of the column of the left U difference block.
  8112. // srcLeftStepU Step for transfer to the next row in the left U difference block
  8113. // pSrcRightU Pointer to the first pixel of the right U difference block
  8114. // srcRightStepU Step for transfer to the next row in the right U difference block
  8115. // pSrcLeftV Pointer to the first pixel of the column of the left U difference block.
  8116. // srcLeftStepV Step for transfer to the next row in the left U difference block
  8117. // pSrcRightV Pointer to the first pixel of the right U difference block
  8118. // srcRightStepV Step for transfer to the next row in the right U difference block
  8119. // pDst Pointer to the first pixel of the right block in the UV-Plane in nv12 chroma format.
  8120. // dstStep nv12 format UV-plane step (in bytes).
  8121. //
  8122. // Returns:
  8123. // ippStsNoErr No error.
  8124. // ippStsNullPtrErr At least one input pointer is NULL
  8125. */
  8126. IPPAPI(IppStatus,ippiSmoothingChroma_VerEdge_VC1_16s8u_P2C2R, (Ipp16s* pSrcLeftU, Ipp32u srcLeftStepU,
  8127. Ipp16s* pSrcRightU, Ipp32u srcRightStepU,
  8128. Ipp16s* pSrcLeftV, Ipp32u srcLeftStepV,
  8129. Ipp16s* pSrcRightV, Ipp32u srcRightStepV,
  8130. Ipp8u* pDst, Ipp32u dstStep))
  8131. /* ///////////////////////////////////////////////////////////////////////////
  8132. // Name:
  8133. // ippiQuantInvIntraUniform_VC1_16s_C1IR
  8134. // ippiQuantInvIntraNonuniform_VC1_16s_C1IR
  8135. //
  8136. // Purpose:
  8137. // Performs uniform and nonuniform dequantization process of 8x8 intra block
  8138. // according to VC-1 standard (8.1.2.8 "Inverse AC Coefficient
  8139. // Quantization" specification SMPTE 421M)
  8140. //
  8141. // pSrcDst - the pointer to the source & destination block.
  8142. // srcDstStep - the step of the source & destination block.
  8143. // doubleQuant - dequant coefficient. It should be in the range [2,62]
  8144. // pDstSizeNZ - the pointer to a size of top left subblock with non-zero coefficients. This value is calculated by this function and could be used for inverse transformation.
  8145. //
  8146. // Returns:
  8147. // ippStsNoErr No error.
  8148. // ippStsNullPtrErr pSrcDst is NULL
  8149. */
  8150. IPPAPI(IppStatus, ippiQuantInvIntraUniform_VC1_16s_C1IR, (Ipp16s* pSrcDst, Ipp32s srcDstStep,
  8151. Ipp32s doubleQuant, IppiSize* pDstSizeNZ))
  8152. IPPAPI(IppStatus, ippiQuantInvIntraNonuniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep,
  8153. Ipp32s doubleQuant, IppiSize* pDstSizeNZ))
  8154. /* ///////////////////////////////////////////////////////////////////////////
  8155. // Name:
  8156. // ippiQuantInvInterUniform_VC1_16s_C1IR
  8157. // ippiQuantInvInterNonuniform_VC1_16s_C1IR
  8158. //
  8159. // Purpose:
  8160. // Performs uniform and nonuniform dequantization process of inter block
  8161. // according to VC-1 standard
  8162. //
  8163. // pSrcDst - the pointer to the source & destination block.
  8164. // srcDstStep - the step of the source & destination block.
  8165. // doubleQuant - dequant coefficient. It should be in the range [2,62]
  8166. // roiSize - the intra block size. It should be: 8x8, 8x4, 4x8 or 4x4.
  8167. // pDstSizeNZ - the pointer to a size of top left subblock with non-zero coefficients. This value is calculated by this function and can be used for inverse transformation.
  8168. //
  8169. // Returns:
  8170. // ippStsNoErr No error.
  8171. // ippStsNullPtrErr pSrcDst pointer is NULL
  8172. // ippStsSizeErr width or height is not equal with 8 or 4
  8173. */
  8174. IPPAPI(IppStatus, ippiQuantInvInterUniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep,
  8175. Ipp32s doubleQuant, IppiSize roiSize,
  8176. IppiSize* pDstSizeNZ))
  8177. IPPAPI(IppStatus, ippiQuantInvInterNonuniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep,
  8178. Ipp32s doubleQuant, IppiSize roiSize,
  8179. IppiSize* pDstSizeNZ))
  8180. /* ///////////////////////////////////////////////////////////////////////////
  8181. // Name:
  8182. // ippiQuantInvIntraUniform_VC1_16s_C1R
  8183. // ippiQuantInvIntraNonuniform_VC1_16s_C1R
  8184. //
  8185. // Purpose:
  8186. // Performs uniform and nonuniform dequantization process of 8x8 intra block
  8187. // according to VC-1 standard (8.1.2.8 "Inverse AC Coefficient
  8188. // Quantization" specification SMPTE 421M)
  8189. //
  8190. // pSrc - the pointer to the source block.
  8191. // pDst - the pointer to the destination block.
  8192. // srcStep - the step of the source block.
  8193. // dstStep - the step of the destination block.
  8194. // doubleQuant - dequant coefficient. It should be in the range [2,62]
  8195. // pDstSizeNZ - the pointer to a size of top left subblock with non-zero coefficients. This value is calculated by this function and could be used for inverse transformation.
  8196. //
  8197. // Returns:
  8198. // ippStsNoErr No error.
  8199. // ippStsNullPtrErr At least one input pointer is NULL
  8200. */
  8201. IPPAPI(IppStatus, ippiQuantInvIntraUniform_VC1_16s_C1R, (const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep,
  8202. Ipp32s doubleQuant, IppiSize *pDstSizeNZ))
  8203. IPPAPI(IppStatus, ippiQuantInvIntraNonuniform_VC1_16s_C1R,(const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep,
  8204. Ipp32s doubleQuant, IppiSize *pDstSizeNZ ))
  8205. /* ///////////////////////////////////////////////////////////////////////////
  8206. // Name:
  8207. // ippiQuantInvInterUniform_VC1_16s_C1R
  8208. // ippiQuantInvInterNonuniform_VC1_16s_C1R
  8209. //
  8210. // Purpose:
  8211. // Performs uniform and nonuniform dequantization process of inter block
  8212. // according to VC-1 standard
  8213. //
  8214. // pSrc - the pointer to the source block.
  8215. // pDst - the pointer to the destination block.
  8216. // srcStep - the step of the source block.
  8217. // dstStep - the step of the destination block.
  8218. // doubleQuant - dequant coefficient. It should be in the range [2,62]
  8219. // roiSize - the inter block size. It should be: 8x8, 8x4, 4x8 or 4x4
  8220. // pDstSizeNZ - the pointer to a size of top left subblock with non-zero coefficients. This value is calculated by this function and could be used for inverse transformation.
  8221. //
  8222. // Returns:
  8223. // ippStsNoErr No error.
  8224. // ippStsNullPtrErr At least one input pointer is NULL
  8225. // ippStsSizeErr width or height is not equal with 8 or 4
  8226. */
  8227. IPPAPI(IppStatus, ippiQuantInvInterUniform_VC1_16s_C1R,(const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep,
  8228. Ipp32s doubleQuant, IppiSize roiSize, IppiSize* pDstSizeNZ))
  8229. IPPAPI(IppStatus, ippiQuantInvInterNonuniform_VC1_16s_C1R,(const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep,
  8230. Ipp32s doubleQuant, IppiSize roiSize, IppiSize* pDstSizeNZ))
  8231. /* ///////////////////////////////////////////////////////////////////////////
  8232. // Name:
  8233. // ippiFilterDeblockingLuma_VerEdge_VC1_8u_C1IR
  8234. // ippiFilterDeblockingLuma_HorEdge_VC1_8u_C1IR
  8235. // ippiFilterDeblockingChroma_VerEdge_VC1_8u_C1IR
  8236. // ippiFilterDeblockingChroma_HorEdge_VC1_8u_C1IR
  8237. //
  8238. // Purpose:
  8239. // Luma deblocking functions perform deblocking filtering on the horizontal
  8240. // and vertical edge (inner or external) of the luma 16x16 macroblock. (SMPTE 421M, 8.6)
  8241. //
  8242. // Chroma deblocking functions perform deblocking filtering on the horizontal
  8243. // and vertical edge (inner or external) of the chroma 8x8 macroblock. (SMPTE 421M, 8.6)
  8244. //
  8245. // Parameters:
  8246. // pSrcDst - Pointer to the first pixel of right block in the Y-Plane or U or V-Plane.
  8247. // srcdstStep - Y-plane or U or V-Plane step (in bytes).
  8248. // pQuant - Picture quantizer scale
  8249. // EdgeDisableFlag - flag which indicates what part of block edge
  8250. // is disabled for deblocking.
  8251. //
  8252. // Returns:
  8253. // ippStsNoErr No error.
  8254. // ippStsNullPtrErr Input pointer is NULL
  8255. */
  8256. IPPAPI(IppStatus, ippiFilterDeblockingLuma_VerEdge_VC1_8u_C1IR,(Ipp8u* pSrcDst,
  8257. Ipp32s pQuant,
  8258. Ipp32s srcdstStep,
  8259. Ipp32s edgeDisabledFlag))
  8260. IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_VC1_8u_C1IR,(Ipp8u* pSrcDst,
  8261. Ipp32s pQuant,
  8262. Ipp32s srcdstStep,
  8263. Ipp32s edgeDisabledFlag))
  8264. IPPAPI(IppStatus,ippiFilterDeblockingLuma_HorEdge_VC1_8u_C1IR,(Ipp8u* pSrcDst,
  8265. Ipp32s pQuant,
  8266. Ipp32s srcdstStep,
  8267. Ipp32s edgeDisabledFlag))
  8268. IPPAPI(IppStatus,ippiFilterDeblockingChroma_HorEdge_VC1_8u_C1IR,(Ipp8u* pSrcDst,
  8269. Ipp32s pQuant,
  8270. Ipp32s srcdstStep,
  8271. Ipp32s edgeDisabledFlag))
  8272. /* ///////////////////////////////////////////////////////////////////////////
  8273. // Name:
  8274. // ippiFilterDeblockingChroma_VerEdge_VC1_8u_C2IR
  8275. // ippiFilterDeblockingChroma_HorEdge_VC1_8u_C2IR
  8276. //
  8277. // Purpose:
  8278. //
  8279. // Chroma deblocking functions perform deblocking filtering on the horizontal
  8280. // and vertical edge (inner or external) of the chroma macroblock in NV12 format. (SMPTE 421M, 8.6)
  8281. // 0 UV UV UV UV UV UV UV UV
  8282. // 1 UV UV UV UV ... UV
  8283. // ...
  8284. // 7 UV UV UV UV UV UV UV UV
  8285. // Parameters:
  8286. // pSrcDst - Pointer to the first pixel of right block in the UV-Plane.
  8287. // srcdstStep - UV-Plane step (in bytes).
  8288. // pQuant - Picture quantizer scale
  8289. // EdgeDisableFlag - flag which indicates what part of block edge
  8290. // is disabled for deblocking.
  8291. //
  8292. // Returns:
  8293. // ippStsNoErr No error.
  8294. // ippStsNullPtrErr Input pointer is NULL
  8295. */
  8296. IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_VC1_8u_C2IR,(Ipp8u* pSrcDst,Ipp32u pQuant, Ipp32s srcdstStep,
  8297. Ipp32u uEdgeDisabledFlag, Ipp32u vEdgeDisabledFlag))
  8298. IPPAPI(IppStatus, ippiFilterDeblockingChroma_HorEdge_VC1_8u_C2IR,(Ipp8u* pSrcDst,Ipp32u pQuant, Ipp32s srcdstStep,
  8299. Ipp32u uEdgeDisabledFlag, Ipp32u vEdgeDisabledFlag))
  8300. /* ///////////////////////////////////////////////////////////////////////////
  8301. // Name:
  8302. // ippiRangeMapping_VC1_8u_C1R
  8303. //
  8304. // Purpose:
  8305. // Performs range map transformation according to VC-1 standard (6.2.15.1)
  8306. //
  8307. // Parameters:
  8308. // pSrc - the pointer to the source block. Block coefficient could be in the range [0, 255]
  8309. // srcStep - the step of the source block
  8310. // pDst - the pointer to the destination block.
  8311. // dstStep - the step of the destination block
  8312. // rangeMapParam - parameter for range map. It should be in the range [0, 7].
  8313. // roiSize - size of source block.
  8314. //
  8315. // Returns:
  8316. // ippStsNoErr No error.
  8317. // ippStsNullPtrErr At least one input pointer is NULL
  8318. // ippStsOutOfRangeErr Indicates an error if rangeMapParam is out of the range [0,7].
  8319. */
  8320. IPPAPI(IppStatus, ippiRangeMapping_VC1_8u_C1R ,(Ipp8u* pSrc, Ipp32s srcStep,
  8321. Ipp8u* pDst, Ipp32s dstStep,
  8322. IppiSize roiSize, Ipp32s rangeMapParam))
  8323. /* ///////////////////////////////////////////////////////////////////////////
  8324. // Name:
  8325. // ippiQuantIntraUniform_VC1_16s_C1IR
  8326. // ippiQuantIntraNonuniform_VC1_16s_C1IR
  8327. //
  8328. // Purpose:
  8329. // Performs uniform and nonuniform quantization process of 8x8 intra block
  8330. // according to VC-1 standard (8.1.2.8 "Inverse AC Coefficient
  8331. // Quantization" specification SMPTE 421M)
  8332. //
  8333. // pSrcDst - the pointer to the source & destination block.
  8334. // srcDstStep - the step of the source & destination block.
  8335. // doubleQuant - dequant coefficient. It should be in the range [2,62]
  8336. //
  8337. // Returns:
  8338. // ippStsNoErr No error.
  8339. // ippStsNullPtrErr At least one input pointer is NULL
  8340. */
  8341. IPPAPI(IppStatus, ippiQuantIntraUniform_VC1_16s_C1IR, (Ipp16s* pSrcDst, Ipp32s srcDstStep,
  8342. Ipp32s doubleQuant))
  8343. IPPAPI(IppStatus, ippiQuantIntraNonuniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep,
  8344. Ipp32s doubleQuant))
  8345. /* ///////////////////////////////////////////////////////////////////////////
  8346. // Name:
  8347. // ippiQuantInterUniform_VC1_16s_C1IR
  8348. // ippiQuantInterNonuniform_VC1_16s_C1IR
  8349. //
  8350. // Purpose:
  8351. // Performs uniform and nonuniform quantization process of inter block
  8352. // according to VC-1 standard
  8353. //
  8354. // pSrcDst - the pointer to the source & destination block.
  8355. // srcDstStep - the step of the source & destination block.
  8356. // doubleQuant - dequant coefficient. It should be in the range [2,62]
  8357. // roiSize - the intra block size. It should be: 8x8, 8x4, 4x8 or 4x4.
  8358. //
  8359. // Returns:
  8360. // ippStsNoErr No error.
  8361. // ippStsNullPtrErr At least one input pointer is NULL
  8362. */
  8363. IPPAPI(IppStatus, ippiQuantInterUniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep,
  8364. Ipp32s doubleQuant, IppiSize roiSize))
  8365. IPPAPI(IppStatus, ippiQuantInterNonuniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep,
  8366. Ipp32s doubleQuant, IppiSize roiSize))
  8367. /* ///////////////////////////////////////////////////////////////////////////
  8368. // Name:
  8369. // ippiTransform8x8Fwd_VC1_16s_C1R
  8370. // ippiTransform4x8Fwd_VC1_16s_C1R
  8371. // ippiTransform8x4Fwd_VC1_16s_C1R
  8372. // ippiTransform4x4Fwd_VC1_16s_C1R
  8373. // ippiTransform8x8Fwd_VC1_16s_C1IR
  8374. // ippiTransform4x8Fwd_VC1_16s_C1IR
  8375. // ippiTransform8x4Fwd_VC1_16s_C1IR
  8376. // ippiTransform4x4Fwd_VC1_16s_C1IR
  8377. //
  8378. // Purpose:
  8379. // Performs forward transform of 8x8/4x8/8x4/4x4 block according to VC-1
  8380. // standard
  8381. //
  8382. // Parameters:
  8383. // pSrc Pointer to the source block.
  8384. // srcStep Step in bytes through the source plane.
  8385. // pDst Pointer to the destination block.
  8386. // dstStep Step in bytes through the destination plane.
  8387. //
  8388. // Returns:
  8389. // ippStsNoErr No error.
  8390. // ippStsNullPtrErr At least one input pointer is NULL
  8391. */
  8392. IPPAPI(IppStatus, ippiTransform8x8Fwd_VC1_16s_C1R, (const Ipp16s *pSrc, Ipp32s srcStep,
  8393. Ipp16s *pDst, Ipp32s dstStep))
  8394. IPPAPI(IppStatus, ippiTransform4x4Fwd_VC1_16s_C1R, (const Ipp16s *pSrc, Ipp32s srcStep,
  8395. Ipp16s *pDst, Ipp32s dstStep))
  8396. IPPAPI(IppStatus, ippiTransform8x4Fwd_VC1_16s_C1R, (const Ipp16s *pSrc, Ipp32s srcStep,
  8397. Ipp16s *pDst, Ipp32s dstStep))
  8398. IPPAPI(IppStatus, ippiTransform4x8Fwd_VC1_16s_C1R, (const Ipp16s *pSrc, Ipp32s srcStep,
  8399. Ipp16s *pDst, Ipp32s dstStep))
  8400. IPPAPI(IppStatus, ippiTransform8x8Fwd_VC1_16s_C1IR, (Ipp16s *pSrcDst, Ipp32s srcDstStep))
  8401. IPPAPI(IppStatus, ippiTransform4x4Fwd_VC1_16s_C1IR, (Ipp16s *pSrcDst, Ipp32s srcDstStep))
  8402. IPPAPI(IppStatus, ippiTransform8x4Fwd_VC1_16s_C1IR, (Ipp16s *pSrcDst, Ipp32s srcDstStep))
  8403. IPPAPI(IppStatus, ippiTransform4x8Fwd_VC1_16s_C1IR, (Ipp16s *pSrcDst, Ipp32s srcDstStep))
  8404. /* ///////////////////////////////////////////////////////////////////////////
  8405. // Name:
  8406. // ippiHadamard8x8Sum_VC1_8u16s
  8407. // ippiHadamard8x8Sum_VC1_16s
  8408. //
  8409. // Purpose:
  8410. // Performs Hadamard transform H S H, were H - 8x8 Hadamard matrix, S - source 8x8 block
  8411. // and calculates the sum of absolute values of transformed coefficients
  8412. // (*pSum) = SUM(ABS(pDst[0]), ABS(pDst[1]),..,ABS(pDst[63]))
  8413. //
  8414. // Parameters:
  8415. // pSrc Pointer to the source block.
  8416. // srcStep Step in bytes through the source plane.
  8417. // pDst Pointer to the destination block of the transformed coefficients. dstStep has the fixed lenght of 16 bytes
  8418. // pSum Pointer to the sum of absolute values of transformed coefficients.
  8419. //
  8420. // Returns:
  8421. // ippStsNoErr No error.
  8422. // ippStsNullPtrErr At least one input pointer is NULL
  8423. */
  8424. IPPAPI(IppStatus, ippiHadamard8x8Sum_VC1_8u16s,(Ipp8u* pSrc, Ipp32u srcStep, Ipp16s* pDst, Ipp32s* pSum))
  8425. IPPAPI(IppStatus, ippiHadamard8x8Sum_VC1_16s,(Ipp16s* pSrc, Ipp32u srcStep, Ipp16s* pDst, Ipp32s* pSum))
  8426. /* ///////////////////////////////////////////////////////////////////////////
  8427. // Name:
  8428. //
  8429. // ippiSub4x4_8u16s_C1R
  8430. // ippiSub4x4_16u16s_C1R
  8431. // ippiSub8x8_16u16s_C1R
  8432. //
  8433. // Purpose:
  8434. // Subtract two blocks and store the result in the third block.
  8435. //
  8436. // Parameters:
  8437. // pSrc1 Pointer to the first source block.
  8438. // src1Step Step in bytes through the first source plane.
  8439. // pSrc2 Pointer to the second source block.
  8440. // src2Step Step in bytes through the second source plane.
  8441. // pDst Pointer to the destination block.
  8442. // dstStep Step in bytes through the destination plane
  8443. //
  8444. // Returns:
  8445. // ippStsNoErr No error.
  8446. // ippStsNullPtrErr At least one input pointer is NULL
  8447. */
  8448. IPPAPI( IppStatus, ippiSub4x4_8u16s_C1R, ( const Ipp8u* pSrc1,
  8449. int src1Step,
  8450. const Ipp8u* pSrc2,
  8451. int src2Step,
  8452. Ipp16s* pDst,
  8453. int dstStep))
  8454. IPPAPI( IppStatus, ippiSub4x4_16u16s_C1R, ( const Ipp16u* pSrc1,
  8455. int src1Step,
  8456. const Ipp16u* pSrc2,
  8457. int src2Step,
  8458. Ipp16s* pDst,
  8459. int dstStep))
  8460. IPPAPI( IppStatus, ippiSub8x8_16u16s_C1R, (const Ipp16u* pSrc1,
  8461. Ipp32s src1Step,
  8462. const Ipp16u* pSrc2,
  8463. Ipp32s src2Step,
  8464. Ipp16s* pDst,
  8465. Ipp32s dstStep))
  8466. /* ///////////////////////////////////////////////////////////////////////////
  8467. // Name:
  8468. //
  8469. // ippiSAD16x16_16u32s_C1R
  8470. //
  8471. // Purpose:
  8472. // Evaluates sum of absolute difference between current and reference
  8473. // 16X16 blocks.
  8474. //
  8475. // Parameters:
  8476. // pSrc Pointer to the current block of specified size.
  8477. // srcStep Step of the current block, specifying width of the block in bytes.
  8478. // pRef Pointer to the reference block of specified size.
  8479. // refStep Step of the reference block, specifying width of the block in bytes.
  8480. // pSAD Pointer to the destination integer.
  8481. // mcType MC type IPPVC_MC_APX.
  8482. //
  8483. // Returns:
  8484. // ippStsNoErr Indicates no error.
  8485. // ippStsNullPtrErr Indicates an error when at least one input pointer is NULL.
  8486. // ippStsStepErr Indicates an error when srcCurStep or srcRefStep is less or equal to zero.
  8487. */
  8488. IPPAPI( IppStatus, ippiSAD16x16_16u32s_C1R, (const Ipp16u* pSrc,
  8489. Ipp32s srcStep,
  8490. const Ipp16u* pRef,
  8491. Ipp32s refStep,
  8492. Ipp32s* pSAD,
  8493. Ipp32s mcType))
  8494. /* ///////////////////////////////////////////////////////////////////////////
  8495. // Name:
  8496. //
  8497. // ippiSAD4x4_16u32s_C1R
  8498. //
  8499. // Purpose:
  8500. // Evaluates sum of absolute difference between current
  8501. // and reference 4X4 blocks.
  8502. //
  8503. // Parameters:
  8504. // pSrc Pointer to 4x4 block in the source plane.
  8505. // srcStep Pitch of the source plane (in bytes).
  8506. // pRef Pointer to 4x4 block in the reference plane.
  8507. // refStep Pitch of the reference plane (in bytes).
  8508. // pSAD Pointer to SAD value.
  8509. // mcType MC type IPPVC_MC_APX; reserved and must be 0.
  8510. //
  8511. // Returns:
  8512. // ippStsNoErr Indicates no error.
  8513. // ippStsNullPtrErr Indicates an error when at least one input pointer is NULL.
  8514. */
  8515. IPPAPI( IppStatus, ippiSAD4x4_16u32s_C1R, (const Ipp16u* pSrc,
  8516. Ipp32s srcStep,
  8517. const Ipp16u* pRef,
  8518. Ipp32s refStep,
  8519. Ipp32s* pSAD,
  8520. Ipp32s mcType))
  8521. /* ///////////////////////////////////////////////////////////////////////////
  8522. // Name:
  8523. //
  8524. // ippiSAD8x8_16u32s_C1R,
  8525. //
  8526. // Purpose:
  8527. // Evaluates sum of absolute difference between current
  8528. // and reference 8X8 blocks.
  8529. //
  8530. // Parameters:
  8531. // pSrcCur Pointer to 8x8 block in the source plane.
  8532. // srcCurStep Pitch of the source plane (in bytes).
  8533. // pSrcRef Pointer to 8x8 block in the reference plane.
  8534. // srcRefStep Pitch of the reference plane (in bytes).
  8535. // pDst Pointer to store SAD value.
  8536. // mcType MC type IPPVC_MC_APX.
  8537. //
  8538. // Returns:
  8539. // ippStsNoErr Indicates no error.
  8540. // ippStsNullPtrErr Indicates an error when at least one input pointer is NULL.
  8541. */
  8542. IPPAPI( IppStatus, ippiSAD8x8_16u32s_C1R, (const Ipp16u* pSrcCur,
  8543. Ipp32s srcCurStep,
  8544. const Ipp16u* pSrcRef,
  8545. Ipp32s srcRefStep,
  8546. Ipp32s* pDst,
  8547. Ipp32s mcType))
  8548. /* ///////////////////////////////////////////////////////////////////////////
  8549. // Name:
  8550. // ippiTransformQuantFwd4x4_H264_16s_C1
  8551. // ippiTransformQuantFwd4x4_H264_16s32s_C1
  8552. //
  8553. // Purpose:
  8554. // This function performs forward transform and quantization for 4x4 residual block.
  8555. //
  8556. // Parameters:
  8557. // pSrcDst Pointer to 4x4 residual block - source & destination array of size 16
  8558. // QP Quantization parameter.
  8559. // pNumCoeffs Pointer to value, which contains:
  8560. // a negative value of a number of non-zero elements in block after quantization
  8561. // (in the case of the first quantized element in block is not equal zero)
  8562. // a number of non-zero elements in block after quantization (in the case
  8563. // of the first quantized element in block is equal zero)
  8564. // This value is calculated by function.
  8565. // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise.
  8566. // pScanMatrix Scan matrix for coefficients in block (array of size 16)
  8567. // pLastCoeff Position of the last non-zero coefficient in block after quantization.
  8568. // This value is calculated by function.
  8569. // pScaleLevels pointer to Scale levels, if NULL, default is applied
  8570. //
  8571. // Returns:
  8572. // ippStsNoErr No error
  8573. // ippStsNullPtrErr pointers are NULL
  8574. // ippStsOutOfRangeErr QP >51 (87 for 16s32s) or QP<0
  8575. */
  8576. IPPAPI(IppStatus, ippiTransformQuantFwd4x4_H264_16s_C1, (
  8577. const Ipp16s *pSrc,
  8578. Ipp16s *pDst,
  8579. Ipp32s Qp6,
  8580. Ipp32s *pNumCoeffs,
  8581. Ipp32s Intra,
  8582. const Ipp16s *pScanMatrix,
  8583. Ipp32s *pLastCoeff,
  8584. const Ipp16s *pScaleLevels))
  8585. IPPAPI(IppStatus, ippiTransformQuantFwd4x4_H264_16s32s_C1, (
  8586. const Ipp16s* pSrc,
  8587. Ipp32s* pDst,
  8588. Ipp32s QP,
  8589. Ipp32s* pNumCoeffs,
  8590. Ipp32s Intra,
  8591. const Ipp16s* pScanMatrix,
  8592. Ipp32s* pLastCoeff,
  8593. const Ipp16s* pScaleLevels))
  8594. /* ///////////////////////////////////////////////////////////////////////////
  8595. // Name:
  8596. // ippiTransformQuantInvAddPred4x4_H264_16s_C1IR
  8597. // ippiTransformQuantInvAddPred4x4_H264_32s_C1IR
  8598. //
  8599. // Purpose:
  8600. // Places a DC coefficient (if any) to its place,
  8601. // Performs dequantization, integer inverse transformation and
  8602. // shift by 6 bits for 4x4 block of residuals
  8603. // with subsequent intra prediction or motion
  8604. // compensation.
  8605. //
  8606. //
  8607. // Parameters:
  8608. // pPred - pointer to the reference 4x4 block, which is used for intra
  8609. // prediction or motion compensation.
  8610. // predStep - reference frame step in bytes.
  8611. // pSrcDst - pointer to the initial coefficients and resultant residuals (4x4
  8612. // block) - array of size 16.
  8613. // pDC - pointer to the DC coefficient. In the case of Intra 4x4
  8614. // macroblock type pDC is set to NULL.
  8615. // pDst - pointer to the destination 4x4 block.
  8616. // dstStep - destination frame step in bytes.
  8617. // QP - quantization parameter
  8618. // AC - flag that is not equal to zero, if at least one AC coefficient
  8619. // exists, and is equal to zero otherwise.
  8620. // bitDepth - bit depth of pPred in range [1..14]
  8621. // pScaleLevelsInv pointer to Scale levels, if NULL, default is applied
  8622. //
  8623. // Returns:
  8624. // ippStsNoErr No error
  8625. // ippStsNullPtrErr pointers are NULL
  8626. // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
  8627. // bitDepth not in range [1..14]
  8628. //
  8629. */
  8630. IPPAPI(IppStatus, ippiTransformQuantInvAddPred4x4_H264_16s_C1IR, (
  8631. const Ipp8u* pPred,
  8632. Ipp32s predStep,
  8633. Ipp16s* pSrcDst,
  8634. const Ipp16s* pDC,
  8635. Ipp8u* pDst,
  8636. Ipp32s dstStep,
  8637. Ipp32s QP,
  8638. Ipp32s AC,
  8639. const Ipp16s* pScaleLevelsInv))
  8640. IPPAPI(IppStatus, ippiTransformQuantInvAddPred4x4_H264_32s_C1IR, (
  8641. const Ipp16u* pPred,
  8642. Ipp32s predStep,
  8643. Ipp32s* pSrcDst,
  8644. const Ipp32s* pDC,
  8645. Ipp16u* pDst,
  8646. Ipp32s dstStep,
  8647. Ipp32s QP,
  8648. Ipp32s AC,
  8649. Ipp32s bitDepth,
  8650. const Ipp16s* pScaleLevelsInv))
  8651. /*
  8652. // Name:
  8653. // ippiTransformQuantFwdLumaDC4x4_H264_16s_C1I
  8654. // ippiTransformQuantFwdLumaDC4x4_H264_32s_C1I
  8655. //
  8656. // Purpose:
  8657. // This function performs forward transform (if it's necessary) and quantization
  8658. // for 4x4 DC Luma block.
  8659. //
  8660. // Parameters:
  8661. // pDCBuf Pointer to 4x4 luma DC block - source & destination array of size 4
  8662. // pTBuf Pointer to 4x4 transformed luma DC block - source or destination array of size 4
  8663. // QP Quantization parameter for luma
  8664. // pNumCoeffs Pointer to value, which contains:
  8665. // a negative value of a number of non-zero elements in block after
  8666. // quantization (in the case of the first quantized element in block is not equal zero)
  8667. // a number of non-zero elements in block after quantization (in the case
  8668. // of the first quantized element in block is equal zero)
  8669. // This value is calculated by function.
  8670. // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 if transforming process is not used.
  8671. // pScanMatrix Scan matrix for coefficients in block (array of size 16)
  8672. // pLastCoeff Position of the last non-zero coefficient in block after quantization. This value is calculated by function.
  8673. // pScaleLevels pointer to Scale levels, if NULL, default is applied
  8674. //
  8675. // Returns:
  8676. // ippStsNoErr No error
  8677. // ippStsNullPtrErr pointers are NULL
  8678. // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
  8679. */
  8680. IPPAPI(IppStatus, ippiTransformQuantFwdLumaDC4x4_H264_16s_C1I, (
  8681. Ipp16s* pDCBuf,
  8682. Ipp16s* pTBuf,
  8683. Ipp32s QP,
  8684. Ipp32s* pNumCoeffs,
  8685. Ipp32s NeedTransform,
  8686. const Ipp16s* pScanMatrix,
  8687. Ipp32s* LastCoeff,
  8688. const Ipp16s* pScaleLevels))
  8689. IPPAPI(IppStatus, ippiTransformQuantFwdLumaDC4x4_H264_32s_C1I, (
  8690. Ipp32s* pDCBuf,
  8691. Ipp32s* pQBuf,
  8692. Ipp32s QP,
  8693. Ipp32s* NumCoeffs,
  8694. Ipp32s Intra,
  8695. const Ipp16s* pScanMatrix,
  8696. Ipp32s* pLastCoeff,
  8697. const Ipp16s* pScaleLevels))
  8698. /* ///////////////////////////////////////////////////////////////////////////
  8699. // Name:
  8700. // ippiTransformQuantInvLumaDC4x4_H264_16s_C1I
  8701. // ippiTransformQuantInvLumaDC4x4_H264_32s_C1I
  8702. //
  8703. // Purpose:
  8704. // Perform integer inverse transformation and dequantization
  8705. // for 4x4 luma DC coefficients,
  8706. //
  8707. // Parameters:
  8708. // pSrcDst - pointer to initial coefficients and resultant DC,
  8709. // QP - quantization parameter.
  8710. // pScaleLevels pointer to Scale levels, if NULL, default is applied
  8711. //
  8712. // Returns:
  8713. // ippStsNoErr No error
  8714. // ippStsNullPtrErr pointers are NULL
  8715. // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
  8716. */
  8717. IPPAPI(IppStatus, ippiTransformQuantInvLumaDC4x4_H264_16s_C1I, (
  8718. Ipp16s* pSrcDst,
  8719. Ipp32s QP,
  8720. const Ipp16s* pScaleLevelsInv))
  8721. IPPAPI(IppStatus, ippiTransformQuantInvLumaDC4x4_H264_32s_C1I, (
  8722. Ipp32s* pSrcDst,
  8723. Ipp32s QP,
  8724. const Ipp16s* pScaleLevels))
  8725. /*
  8726. // Name:
  8727. // ippiTransformQuantFwdChromaDC2x2_H264_16s_C1I
  8728. // ippiTransformQuantFwdChromaDC2x2_H264_32s_C1I
  8729. //
  8730. // Purpose:
  8731. // This function performs forward transform (if it's necessary) and quantization
  8732. // for 2x2 DC chroma block.
  8733. //
  8734. // Parameters:
  8735. // pDCBuf Pointer to 2x2 chroma DC block - source & destination array of size 4
  8736. // pTBuf Pointer to 2x2 transformed chroma DC block - source or destination array of size 4
  8737. // QP Quantization parameter for chroma
  8738. // pNumCoeffs Pointer to value, which contains:
  8739. // a negative value of a number of non-zero elements in block after
  8740. // quantization (in the case of the first quantized element in block is not equal zero)
  8741. // a number of non-zero elements in block after quantization (in the case
  8742. // of the first quantized element in block is equal zero)
  8743. // This value is calculated by function.
  8744. // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise.
  8745. // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 if transforming process is not used.
  8746. // pScaleLevels pointer to Scale levels, if NULL, default is applied
  8747. //
  8748. // Returns:
  8749. // ippStsNoErr No error
  8750. // ippStsNullPtrErr pointers are NULL
  8751. // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
  8752. */
  8753. IPPAPI(IppStatus, ippiTransformQuantFwdChromaDC2x2_H264_16s_C1I, (
  8754. Ipp16s *pDCBuf,
  8755. Ipp16s *pTBuf,
  8756. Ipp32s QP,
  8757. Ipp32s* pNumCoeffs,
  8758. Ipp32s Intra,
  8759. Ipp32s NeedTransform,
  8760. const Ipp16s* pScaleLevels))
  8761. IPPAPI(IppStatus, ippiTransformQuantFwdChromaDC2x2_H264_32s_C1I, (
  8762. Ipp32s* pSrcDst,
  8763. Ipp32s* pTBlock,
  8764. Ipp32s QPChroma,
  8765. Ipp32s* NumCoeffs,
  8766. Ipp32s Intra,
  8767. Ipp32s NeedTransform,
  8768. const Ipp16s* pScaleLevels))
  8769. /* ///////////////////////////////////////////////////////////////////////////
  8770. // Name:
  8771. // ippiTransformQuantInvChromaDCx2_H264_16s_C1I
  8772. // ippiTransformQuantInvChromaDCx2_H264_32s_C1I
  8773. //
  8774. // Purpose:
  8775. // Perform integer inverse transformation and dequantization
  8776. // for 2x2 chroma DC coefficients,
  8777. //
  8778. // Parameters:
  8779. // pSrcDst - pointer to initial coefficients and resultant DC,
  8780. // QP - quantization parameter.
  8781. // pScaleLevels pointer to Scale levels, if NULL, default is applied
  8782. //
  8783. // Returns:
  8784. // ippStsNoErr No error
  8785. // ippStsNullPtrErr pointers are NULL
  8786. // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
  8787. */
  8788. IPPAPI(IppStatus, ippiTransformQuantInvChromaDC2x2_H264_16s_C1I, (
  8789. Ipp16s* pSrcDst,
  8790. Ipp32s QP,
  8791. const Ipp16s *pScaleLevels))
  8792. IPPAPI(IppStatus, ippiTransformQuantInvChromaDC2x2_H264_32s_C1I, (
  8793. Ipp32s* pSrcDst,
  8794. Ipp32s QP,
  8795. const Ipp16s *pScaleLevels))
  8796. /*
  8797. // Name:
  8798. // ippiTransformQuantFwdChromaDC2x4_H264_16s_C1I
  8799. // ippiTransformQuantFwdChromaDC2x4_H264_32s_C1I
  8800. //
  8801. // Purpose:
  8802. // This function performs forward transform (if it's necessary) and quantization
  8803. // for 2x4 DC chroma block.
  8804. //
  8805. // Parameters:
  8806. // pDCBuf Pointer to 2x4 chroma DC block - source & destination array of size 6
  8807. // pTBuf Pointer to 2x4 transformed chroma DC block - source or destination array of size 6
  8808. // QP Quantization parameter for chroma
  8809. // pNumCoeffs Pointer to value, which contains:
  8810. // a negative value of a number of non-zero elements in block after
  8811. // quantization (in the case of the first quantized element in block is not equal zero)
  8812. // a number of non-zero elements in block after quantization (in the case
  8813. // of the first quantized element in block is equal zero)
  8814. // This value is calculated by function.
  8815. // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise.
  8816. // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 if transforming process is not used.
  8817. // pScaleLevels pointer to Scale levels, if NULL, default is applied
  8818. //
  8819. // Returns:
  8820. // ippStsNoErr No error
  8821. // ippStsNullPtrErr pointers are NULL
  8822. // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
  8823. */
  8824. IPPAPI(IppStatus, ippiTransformQuantFwdChromaDC2x4_H264_16s_C1I, (
  8825. Ipp16s *pDCBuf,
  8826. Ipp16s *pTBuf,
  8827. Ipp32s QPChroma,
  8828. Ipp32s* NumCoeffs,
  8829. Ipp32s Intra,
  8830. Ipp32s NeedTransform,
  8831. const Ipp16s* pScaleLevels))
  8832. IPPAPI(IppStatus, ippiTransformQuantFwdChromaDC2x4_H264_32s_C1I, (
  8833. Ipp32s *pDCBuf,
  8834. Ipp32s *pTBuf,
  8835. Ipp32s QPChroma,
  8836. Ipp32s* NumCoeffs,
  8837. Ipp32s Intra,
  8838. Ipp32s NeedTransform,
  8839. const Ipp16s* pScaleLevels))
  8840. /* ///////////////////////////////////////////////////////////////////////////
  8841. // Name:
  8842. // ippiTransformQuantInvChromaDC2x4_H264_16s_C1I
  8843. // ippiTransformQuantInvChromaDC2x4_H264_32s_C1I
  8844. //
  8845. // Purpose:
  8846. // Perform integer inverse transformation and dequantization
  8847. // for 2x4 chroma DC coefficients,
  8848. //
  8849. // Parameters:
  8850. // pSrcDst - pointer to initial coefficients and resultant DC,
  8851. // QP - quantization parameter.
  8852. // pScaleLevels pointer to Scale levels, if NULL, default is applied
  8853. //
  8854. // Returns:
  8855. // ippStsNoErr No error
  8856. // ippStsNullPtrErr pointers are NULL
  8857. // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
  8858. */
  8859. IPPAPI(IppStatus, ippiTransformQuantInvChromaDC2x4_H264_16s_C1I, (
  8860. Ipp16s* pSrcDst,
  8861. Ipp32s QPChroma,
  8862. const Ipp16s* pScaleLevels))
  8863. IPPAPI(IppStatus, ippiTransformQuantInvChromaDC2x4_H264_32s_C1I, (
  8864. Ipp32s *pSrcDst,
  8865. Ipp32s QPChroma,
  8866. const Ipp16s* pScaleLevelsInv))
  8867. /* ///////////////////////////////////////////////////////////////////////////
  8868. // Name:
  8869. // ippiGenScaleLevel4x4_H264_8u16s_C1
  8870. //
  8871. // Purpose:
  8872. // Performs generation of scale matrix
  8873. //
  8874. // Parameters:
  8875. // pSrcScaleMatrix - Pointer to an original scaling matrix for 4x4 transform.
  8876. // pDstInvScaleMatrix - Pointer to a destination inverse scaling matrix -- array of size 16.
  8877. // pDstScaleMatrix - Pointer to a destination forward scaling matrix - array of size 16.
  8878. // QpRem - Reminder from an integer division of quantization parameter by 6.
  8879. //
  8880. // Returns:
  8881. // ippStsNoErr No error
  8882. // ippStsNullPtrErr at least one of the pointers is NULL
  8883. // ippStsQPErr QpRem is less than 0 or greater than 5
  8884. //
  8885. */
  8886. IPPAPI(IppStatus, ippiGenScaleLevel4x4_H264_8u16s_C1, (
  8887. const Ipp8u *pSrcScaleMatrix,
  8888. Ipp16s *pDstInvScaleMatrix,
  8889. Ipp16s *pDstScaleMatrix,
  8890. Ipp32s QpRem))
  8891. /* ///////////////////////////////////////////////////////////////////////////
  8892. // Name:
  8893. // ippiSAD16x16Blocks4x4_16u32u_C1R
  8894. // ippiSAD16x16Blocks8x8_16u32u_C1R
  8895. //
  8896. // Purpose:
  8897. // Evaluates partial sums of absolute differences
  8898. // between current and reference 16X16 blocks.
  8899. //
  8900. // Parameters:
  8901. // pSrc Pointer to 16x16 block in the source plane.
  8902. // srcStep Pitch of the source plane (in bytes).
  8903. // pRef Pointer to 16x16 block in the reference plane.
  8904. // refStep Pitch of the reference plane (in bytes).
  8905. // pDstSAD Pointer to array of size 16(for 4x4) or 4(for 8x8) to store SAD values.
  8906. // mcType reserved and must be 0.
  8907. // Returns:
  8908. // ippStsNoErr No error
  8909. // ippStsNullPtrErr One of the pointers is NULL
  8910. //
  8911. */
  8912. IPPAPI(IppStatus, ippiSAD16x16Blocks4x4_16u32u_C1R, (
  8913. const Ipp16u* pSrc,
  8914. Ipp32s srcStep,
  8915. const Ipp16u* pRef,
  8916. Ipp32s refStep,
  8917. Ipp32u* pDstSAD,
  8918. Ipp32s mcType))
  8919. IPPAPI(IppStatus, ippiSAD16x16Blocks8x8_16u32u_C1R, (
  8920. const Ipp16u* pSrc,
  8921. Ipp32s srcStep,
  8922. const Ipp16u* pRef,
  8923. Ipp32s refStep,
  8924. Ipp32u* pDstSAD,
  8925. Ipp32s mcType))
  8926. /* ///////////////////////////////////////////////////////////////////////////
  8927. // Name:
  8928. // ippiSAD2x2xN_8u16u_C1R
  8929. //
  8930. // ippiSAD4x4xN_8u16u_C1R
  8931. // ippiSAD4x4xNI_8u16u_C1R
  8932. //
  8933. // ippiSAD8x8xN_8u16u_C1R
  8934. // ippiSAD8x8xNI_8u16u_C1R
  8935. //
  8936. // ippiSAD16x16xN_8u16u_C1R
  8937. // ippiSAD16x16xNI_8u16u_C1R
  8938. //
  8939. // Purpose:
  8940. // Evaluate series of sums of absolute differences
  8941. // between current and reference blocks.
  8942. //
  8943. // Parameters:
  8944. // pSrc Pointer to the current block in the source plane.
  8945. // srcStep Pitch of the source plane (in bytes).
  8946. // pRef Pointer to a block in the reference plane.
  8947. // refStep Pitch of the reference plane (in bytes).
  8948. // pSAD Pointer to array of size of numSAD to store SAD values.
  8949. // numSAD Number of SAD values to evaluate. Should be product of 8.
  8950. // pMinSADIndex Index of the lowest SAD value in the given array.
  8951. // Returns:
  8952. // ippStsNoErr No error
  8953. // ippStsNullPtrErr One of the pointers is NULL
  8954. // ippStsSizeErr numSAD is less than 8
  8955. //
  8956. */
  8957. IPPAPI(IppStatus, ippiSAD2x2xN_8u16u_C1R, (
  8958. const Ipp8u *pSrc,
  8959. Ipp32s srcStep,
  8960. const Ipp8u *pRef,
  8961. Ipp32s refStep,
  8962. Ipp16u *pSAD,
  8963. Ipp32s numSAD))
  8964. IPPAPI(IppStatus, ippiSAD4x4xN_8u16u_C1R, (
  8965. const Ipp8u *pSrc,
  8966. Ipp32s srcStep,
  8967. const Ipp8u *pRef,
  8968. Ipp32s refStep,
  8969. Ipp16u *pSAD,
  8970. Ipp32s numSAD))
  8971. IPPAPI(IppStatus, ippiSAD4x4xNI_8u16u_C1R, (
  8972. const Ipp8u *pSrc,
  8973. Ipp32s srcStep,
  8974. const Ipp8u *pRef,
  8975. Ipp32s refStep,
  8976. Ipp16u *pSAD,
  8977. Ipp32s numSAD,
  8978. Ipp32u *pMinSADIndex))
  8979. IPPAPI(IppStatus, ippiSAD8x8xN_8u16u_C1R, (
  8980. const Ipp8u *pSrc,
  8981. Ipp32s srcStep,
  8982. const Ipp8u *pRef,
  8983. Ipp32s refStep,
  8984. Ipp16u *pSAD,
  8985. Ipp32s numSAD))
  8986. IPPAPI(IppStatus, ippiSAD8x8xNI_8u16u_C1R, (
  8987. const Ipp8u *pSrc,
  8988. Ipp32s srcStep,
  8989. const Ipp8u *pRef,
  8990. Ipp32s refStep,
  8991. Ipp16u *pSAD,
  8992. Ipp32s numSAD,
  8993. Ipp32u *pMinSADIndex))
  8994. IPPAPI(IppStatus, ippiSAD16x16xN_8u16u_C1R, (
  8995. const Ipp8u *pSrc,
  8996. Ipp32s srcStep,
  8997. const Ipp8u *pRef,
  8998. Ipp32s refStep,
  8999. Ipp16u *pSAD,
  9000. Ipp32s numSAD))
  9001. IPPAPI(IppStatus, ippiSAD16x16xNI_8u16u_C1R, (
  9002. const Ipp8u *pSrc,
  9003. Ipp32s srcStep,
  9004. const Ipp8u *pRef,
  9005. Ipp32s refStep,
  9006. Ipp16u *pSAD,
  9007. Ipp32s numSAD,
  9008. Ipp32u *pMinSADIndex))
  9009. /* ///////////////////////////////////////////////////////////////////////////
  9010. // Name:
  9011. // ippiSumsDiff16x16Blocks4x4_16u32s_C1R
  9012. // ippiSumsDiff8x8Blocks4x4_16u32s_C1R
  9013. //
  9014. // Purpose:
  9015. // These functions evaluates difference between current and reference 4x4 blocks
  9016. // and calculates sums of 4x4 residual blocks elements
  9017. // Parameters:
  9018. // pSrc Pointer block in current plane
  9019. // srcStep Step of the current plane, specifying width of the plane in bytes.
  9020. // pPred Pointer to reference block
  9021. // predStep Step of the reference plane, specifying width of the plane in bytes.
  9022. // pSums Pointer to array that contains sums of 4x4 difference blocks coefficients.
  9023. // The array's filled by function.
  9024. // pDiff If it isn't zero, pointer to array that will contain a sequence of 4x4
  9025. // residual blocks.
  9026. //
  9027. // Returns:
  9028. // ippStsNoErr No error
  9029. // ippStsNullPtrErr one of the input pointers is NULL
  9030. */
  9031. IPPAPI(IppStatus, ippiSumsDiff16x16Blocks4x4_16u32s_C1R, (
  9032. const Ipp16u* pSrc,
  9033. Ipp32s srcStep,
  9034. const Ipp16u* pPred,
  9035. Ipp32s predStep,
  9036. Ipp32s* pSums,
  9037. Ipp16s* pDiff))
  9038. IPPAPI(IppStatus, ippiSumsDiff8x8Blocks4x4_16u32s_C1R, (
  9039. const Ipp16u* pSrc,
  9040. Ipp32s srcStep,
  9041. const Ipp16u* pPred,
  9042. Ipp32s predStep,
  9043. Ipp32s* pSums,
  9044. Ipp16s* pDiff))
  9045. /* ///////////////////////////////////////////////////////////////////////////
  9046. // Name:
  9047. // ippiTransformFwdLuma8x8_H264_16s_C1
  9048. // ippiTransformFwdLuma8x8_H264_16s32s_C1
  9049. //
  9050. // Purpose:
  9051. // Performs forward 8x8 transform for a 8x8 Luma block without normalization.
  9052. //
  9053. // Parameters:
  9054. // pSrc - pointer to the initial 8x8 Luma block and resultant coefficients
  9055. // (array of size 64).
  9056. // pDst - pointer to the resultant coefficients (array of size 64).
  9057. // Returns:
  9058. // ippStsNoErr No error
  9059. // ippStsNullPtrErr at least one of the pointers is NULL
  9060. */
  9061. IPPAPI(IppStatus, ippiTransformFwdLuma8x8_H264_16s32s_C1, (
  9062. const Ipp16s* pSrc,
  9063. Ipp32s* pDst))
  9064. IPPAPI(IppStatus, ippiTransformFwdLuma8x8_H264_16s_C1, (
  9065. const Ipp16s* pSrc,
  9066. Ipp16s* pDst))
  9067. /* ///////////////////////////////////////////////////////////////////////////
  9068. // Name:
  9069. // ippiTransformInvAddPredLuma8x8_H264_32s16u_C1R
  9070. //
  9071. // Purpose:
  9072. // Performs inverse 8x8 transform for a 8x8 Luma block with subsequent intra
  9073. // prediction or motion compensation, coefficients are assumed to be pre-normalized.
  9074. //
  9075. // Parameters:
  9076. // pPred - pointer to the reference 8x8 block, which is used for intra
  9077. // prediction or motion compensation.
  9078. // predStep - reference frame step in bytes.
  9079. // pSrcDst - pointer to the initial coefficients and buffer for the computations
  9080. // (8x8 block) - array of size 64.
  9081. // pDst - pointer to the destination 8x8 block.
  9082. // dstStep - destination frame step in bytes.
  9083. // bitDepth - bit depth of pPred in range [1..14]
  9084. //
  9085. // Returns:
  9086. // ippStsNoErr No error
  9087. // ippStsNullPtrErr pointers are NULL
  9088. //
  9089. */
  9090. IPPAPI(IppStatus, ippiTransformInvAddPredLuma8x8_H264_32s16u_C1R, (
  9091. const Ipp16u* pPred,
  9092. Ipp32s predStep,
  9093. Ipp32s* pSrcDst,
  9094. Ipp16u* pDst,
  9095. Ipp32s dstStep,
  9096. Ipp32s bitDepth))
  9097. /* ///////////////////////////////////////////////////////////////////////////
  9098. // Name:
  9099. // ippiEncodeCoeffsCAVLCChromaDC2x2_H264_32s
  9100. // ippiEncodeCoeffsCAVLCChromaDC2x4_H264_16s
  9101. // ippiEncodeCoeffsCAVLCChromaDC2x4_H264_32s
  9102. //
  9103. // Purpose: Calculates characteristics of 2x2 or 2X4 Chroma DC for CAVLC encoding.
  9104. //
  9105. // Parameters:
  9106. // pSrc Pointer to 2x2 or 2x4 block - array of size 4 or 6.
  9107. // pTraling_One The number of trailing ones transform coefficient levels
  9108. // in a range[0;3]. This argument is calculated by the function.
  9109. // pTraling_One_Signs Code that describes signs of trailing ones.
  9110. // (Trailing_One 1 - i)-bit in this code corresponds to a sign
  9111. // of i-trailing one in the current block. In this code 1 indicates
  9112. // negative value, 0 positive value. This argument is calculated
  9113. // by the function.
  9114. // pNumOutCoeffs The number of non-zero coefficients in block (including trailing
  9115. // ones). This argument is calculated by the function.
  9116. // pTotalZeros The number of zero coefficients in block (except trailing zeros). This
  9117. // argument is calculated by the function.
  9118. // pLevels Pointer to an array of size 4 that contains non-zero quantized
  9119. // coefficients of the current block (except trailing ones) in reverse scan
  9120. // matrix order.
  9121. // pRuns Pointer to an array of size 4 that contains runs before non-zero
  9122. // quantized coefficients (including trailing ones) of the current block in
  9123. // reverse scan matrix order (except run before the first non-zero
  9124. // coefficient in block, which can be calculated using TotalZeros).
  9125. //
  9126. // Returns:
  9127. // ippStsNoErr No error
  9128. // ippStsNullPtrErr if a pointer is NULL
  9129. //
  9130. // Notes:
  9131. // H.264 standard: JVT-G050. ITU-T Recommendation and
  9132. // Final Draft International Standard of Joint Video Specification
  9133. // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
  9134. */
  9135. IPPAPI(IppStatus, ippiEncodeCoeffsCAVLCChromaDC2x2_H264_32s, (
  9136. const Ipp32s* pSrc,
  9137. Ipp8u* pTrailingOnes,
  9138. Ipp8u* pTrailingOneSigns,
  9139. Ipp8u* pNumOutCoeffs,
  9140. Ipp8u* pTotalZeroes,
  9141. Ipp32s* pLevels,
  9142. Ipp8u* pRuns))
  9143. IPPAPI(IppStatus, ippiEncodeCoeffsCAVLCChromaDC2x4_H264_16s, (
  9144. const Ipp16s *pSrc,
  9145. Ipp8u *pTrailing_Ones,
  9146. Ipp8u *pTrailing_One_Signs,
  9147. Ipp8u *pNumOutCoeffs,
  9148. Ipp8u *pTotalZeros,
  9149. Ipp16s *pLevels,
  9150. Ipp8u *pRuns))
  9151. IPPAPI(IppStatus, ippiEncodeCoeffsCAVLCChromaDC2x4_H264_32s, (
  9152. const Ipp32s *pSrc,
  9153. Ipp8u *pTrailing_Ones,
  9154. Ipp8u *pTrailing_One_Signs,
  9155. Ipp8u *pNumOutCoeffs,
  9156. Ipp8u *pTotalZeros,
  9157. Ipp32s *pLevels,
  9158. Ipp8u *Runs))
  9159. /* ///////////////////////////////////////////////////////////////////////////
  9160. // Name:
  9161. // ippiInterpolateLumaBlock_AVS_8u_P1R
  9162. //
  9163. // Purpose: Performs interpolation for motion estimation of the luminance component.
  9164. //
  9165. // Parameters:
  9166. // interpolateInfo - pointer to a structure having interpolation parameters
  9167. //
  9168. // Returns:
  9169. // ippStsNoErr No error
  9170. // ippStsNullPtrErr One of the pointers in the interpolateInfo structure is NULL
  9171. // ippStsSizeErr if roi.width or roi.height take values other than 16 or 8
  9172. //
  9173. // Notes:
  9174. // AVS China standard : GB/T 20090.2 - 2006
  9175. //
  9176. */
  9177. IPPAPI(IppStatus, ippiInterpolateLumaBlock_AVS_8u_P1R,(const IppVCInterpolateBlock_8u *interpolateInfo))
  9178. /* ///////////////////////////////////////////////////////////////////////////
  9179. // Name:
  9180. // ippiWeightPrediction_AVS_8u_C1R
  9181. //
  9182. // The function performs weighting of an interpolated block. The formulae is the following:
  9183. // pDst[x] = (Ipp8u) Clip1(((pSrc[x] * scale + 16) >> 5) + shift);
  9184. // where Clip1 is saturating to the Ipp8u range.
  9185. //
  9186. // Parameters:
  9187. // pSrc source pointer to a block to weight
  9188. // srcStep source block's step
  9189. // pDst destination pointer to leave the weighted block
  9190. // dstStep destination block's step
  9191. // scale multiplication value
  9192. // shift resulting shift
  9193. // sizeBlock block size. Could be 16x16, 16x8, 8x16, 8x8
  9194. //
  9195. // Returns:
  9196. // ippStsNoErr No error
  9197. // ippStsNullPtrErr One of the pointers in the interpolateInfo structure is NULL
  9198. // ippStsSizeErr if sizeBlock.width or sizeBlock.height take values other than 16 or 8
  9199. //
  9200. // Notes:
  9201. // AVS China standard : GB/T 20090.2 - 2006
  9202. //
  9203. */
  9204. IPPAPI(IppStatus, ippiWeightPrediction_AVS_8u_C1R,(const Ipp8u *pSrc,
  9205. Ipp32s srcStep,
  9206. Ipp8u *pDst,
  9207. Ipp32s dstStep,
  9208. Ipp32u scale,
  9209. Ipp32s shift,
  9210. IppiSize sizeBlock))
  9211. /* ///////////////////////////////////////////////////////////////////////////
  9212. // Name:
  9213. // ippiReconstructLumaIntra_AVS_16s8u_C1R
  9214. //
  9215. // Reconstructs Intra Luma macroblock.
  9216. //
  9217. // Parameters:
  9218. // ppSrcCoeff pointer to the order of 8x8 blocks of residual coefficients
  9219. // pSrcDstYPlane pointer to the current macroblock that is reconstructed in Y-plane
  9220. // srcDstYStep Y-Plane step
  9221. // pMBIntraTypes array of Intra_8x8 luma prediction modes for each subblock
  9222. // pSrcNumCoeffs array of indices of the last coefficient in each subblock
  9223. // cbp8x8 coded block pattern
  9224. // QP quantization parameter
  9225. // edgeType specifies the availability of the macroblocks used for prediction
  9226. //
  9227. // Returns:
  9228. // ippStsNoErr Indicates no error.
  9229. // ippStsNullPtrErr Indicates an error condition if at least one of the specified pointers is NULL.
  9230. // ippStsOutOfRangeErr QP is less than 0 or greater than 63
  9231. //
  9232. // Notes:
  9233. // AVS China standard : GB/T 20090.2 - 2006
  9234. //
  9235. */
  9236. IPPAPI(IppStatus,ippiReconstructLumaIntra_AVS_16s8u_C1R,(Ipp16s **ppSrcCoeff,
  9237. Ipp8u *pSrcDstYPlane,
  9238. Ipp32s srcDstYStep,
  9239. const IppIntra8x8PredMode_AVS *pMBIntraTypes,
  9240. const Ipp32s *pSrcNumCoeffs,
  9241. Ipp32u cbp8x8, Ipp32u QP, Ipp32u edgeType))
  9242. /* ///////////////////////////////////////////////////////////////////////////
  9243. // Name:
  9244. // ippiReconstructLumaInter_AVS_16s8u_C1R
  9245. //
  9246. // Reconstructs Inter Luma macroblock.
  9247. //
  9248. // Parameters:
  9249. // ppSrcCoeff pointer to the order of 8x8 blocks of residual coefficients
  9250. // pSrcDstYPlane pointer to the current macroblock that is reconstructed in Y-plane
  9251. // srcDstYStep Y-Plane step
  9252. // pSrcNumCoeffs array of indices of the last coefficient in each subblock
  9253. // cbp8x8 coded block pattern
  9254. // QP quantization parameter
  9255. //
  9256. // Returns:
  9257. // ippStsNoErr Indicates no error.
  9258. // ippStsNullPtrErr Indicates an error condition if at least one of the specified pointers is NULL.
  9259. // ippStsOutOfRangeErr QP is less than 0 or greater than 63
  9260. //
  9261. // Notes:
  9262. // AVS China standard : GB/T 20090.2 - 2006
  9263. //
  9264. */
  9265. IPPAPI(IppStatus,ippiReconstructLumaInter_AVS_16s8u_C1R,(Ipp16s **ppSrcCoeff,
  9266. Ipp8u *pSrcDstYPlane,
  9267. Ipp32s srcDstYStep,
  9268. const Ipp32s *pSrcNumCoeffs,
  9269. Ipp32u cbp8x8, Ipp32u QP))
  9270. /* ///////////////////////////////////////////////////////////////////////////
  9271. // Name:
  9272. // ippiReconstructChromaIntra_AVS_16s8u_C1R
  9273. //
  9274. // Reconstructs Intra Chroma macroblock.
  9275. //
  9276. // Parameters:
  9277. // ppSrcCoeff pointer to the order of 8x8 blocks of residual coefficients
  9278. // pSrcDstUPlane pointer to the current macroblock that is reconstructed in U-plane
  9279. // pSrcDstVPlane pointer to the current macroblock that is reconstructed in V-plane
  9280. // srcDstUVStep chrominance planes step
  9281. // predMode chrominance prediction mode for both subblock
  9282. // pSrcNumCoeffs array of indices of the last coefficient in each subblock
  9283. // cbp8x8 coded block pattern
  9284. // chromaQP quantization parameter
  9285. // edgeType specifies the availability of the macroblocks used for prediction
  9286. //
  9287. // Returns:
  9288. // ippStsNoErr Indicates no error.
  9289. // ippStsNullPtrErr Indicates an error condition if at least one of the specified pointers is NULL.
  9290. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  9291. //
  9292. // Notes:
  9293. // AVS China standard : GB/T 20090.2 - 2006
  9294. //
  9295. */
  9296. IPPAPI(IppStatus,ippiReconstructChromaIntra_AVS_16s8u_C1R,(Ipp16s **ppSrcCoeff,
  9297. Ipp8u *pSrcDstUPlane,
  9298. Ipp8u *pSrcDstVPlane,
  9299. Ipp32s srcDstUVStep,
  9300. const IppIntraChromaPredMode_AVS predMode,
  9301. const Ipp32s *pSrcNumCoeffs,
  9302. Ipp32u cbp8x8, Ipp32u chromaQP,
  9303. Ipp32u edgeType))
  9304. /* ///////////////////////////////////////////////////////////////////////////
  9305. // Name:
  9306. // ippiReconstructChromaInter_AVS_16s8u_C1R
  9307. //
  9308. // Reconstructs Inter Chroma macroblock.
  9309. //
  9310. // Parameters:
  9311. // ppSrcCoeff pointer to the order of 8x8 blocks of residual coefficients
  9312. // pSrcDstUPlane pointer to the current macroblock that is reconstructed in U-plane
  9313. // pSrcDstVPlane pointer to the current macroblock that is reconstructed in V-plane
  9314. // srcDstUVStep chrominance planes step
  9315. // pSrcNumCoeffs array of indices of the last coefficient in each subblock
  9316. // cbp8x8 coded block pattern
  9317. // chromaQP quantization parameter
  9318. //
  9319. // Returns:
  9320. // ippStsNoErr Indicates no error.
  9321. // ippStsNullPtrErr Indicates an error condition if at least one of the specified pointers is NULL.
  9322. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  9323. //
  9324. // Notes:
  9325. // AVS China standard : GB/T 20090.2 - 2006
  9326. //
  9327. */
  9328. IPPAPI(IppStatus,ippiReconstructChromaInter_AVS_16s8u_C1R,(Ipp16s **ppSrcCoeff,
  9329. Ipp8u *pSrcDstUPlane,
  9330. Ipp8u *pSrcDstVPlane,
  9331. Ipp32s srcDstUVStep,
  9332. const Ipp32s *pSrcNumCoeffs,
  9333. Ipp32u cbp8x8, Ipp32u chromaQP))
  9334. /* ///////////////////////////////////////////////////////////////////////////
  9335. // Name:
  9336. // ippiFilterDeblockingLuma_VerEdge_AVS_8u_C1IR
  9337. // ippiFilterDeblockingLuma_HorEdge_AVS_8u_C1IR
  9338. //
  9339. // Purpose:
  9340. // Perform deblocking filtering on the vertical and horizontal edges of the luma 16x16 macroblock
  9341. //
  9342. // Parameters:
  9343. // pDeblockInfo - Pointer to deblocking parameters, where,
  9344. // pSrcDstPlane - Pointer to the initial and resultant coefficients.
  9345. // srcDstStep - Step of the array.
  9346. // pAlpha - Array of size 2 of Alpha Thresholds.
  9347. // pBeta - Array of size 2 of Beta Thresholds.
  9348. // pThresholds - Array of size 2 of Thresholds.
  9349. // pBs - Array of size 4 of BS parameters
  9350. //
  9351. //
  9352. // Notes:
  9353. // AVS China standard : GB/T 20090.2 - 2006
  9354. //
  9355. // Returns:
  9356. // ippStsNoErr No error
  9357. // ippStsNullPtrErr One of the pointers is NULL
  9358. */
  9359. IPPAPI(IppStatus,ippiFilterDeblockingLuma_VerEdge_AVS_8u_C1IR,(const IppiFilterDeblock_8u *pDeblockInfo))
  9360. IPPAPI(IppStatus,ippiFilterDeblockingLuma_HorEdge_AVS_8u_C1IR,(const IppiFilterDeblock_8u *pDeblockInfo))
  9361. /* ///////////////////////////////////////////////////////////////////////////
  9362. // Name:
  9363. // ippiFilterDeblockingChroma_VerEdge_AVS_8u_C1IR
  9364. // ippiFilterDeblockingChroma_HorEdge_AVS_8u_C1IR
  9365. //
  9366. // Purpose:
  9367. // Perform deblocking filtering on the vertical and horizontal edges of the chroma 8x8 macroblock
  9368. //
  9369. // Parameters:
  9370. // pDeblockInfo - Pointer to deblocking parameters.
  9371. // pSrcDstPlane - Pointer to the initial and resultant coefficients.
  9372. // srcdstStep - Step of the array.
  9373. // pAlpha - Array of size 1 of Alpha Thresholds.
  9374. // pBeta - Array of size 1 of Beta Thresholds.
  9375. // pThresholds - Array of size 1 of Thresholds.
  9376. // pBs - Array of size 2 of BS parameters.
  9377. //
  9378. // Notes:
  9379. // AVS China standard : GB/T 20090.2 - 2006
  9380. //
  9381. // Returns:
  9382. // ippStsNoErr No error
  9383. // ippStsNullPtrErr One of the pointers is NULL
  9384. */
  9385. IPPAPI(IppStatus,ippiFilterDeblockingChroma_VerEdge_AVS_8u_C1IR,(const IppiFilterDeblock_8u *pDeblockInfo))
  9386. IPPAPI(IppStatus,ippiFilterDeblockingChroma_HorEdge_AVS_8u_C1IR,(const IppiFilterDeblock_8u *pDeblockInfo))
  9387. /* ///////////////////////////////////////////////////////////////////////////
  9388. // Name:
  9389. // ippiDecodeLumaBlockIntra_AVS_1u16s
  9390. // ippiDecodeLumaBlockInter_AVS_1u16s
  9391. //
  9392. // Purpose:
  9393. // Decodes a luminance 8x8 block
  9394. //
  9395. // Parameters:
  9396. // ppBitStream Double pointer to the current position in the bit stream
  9397. // pBitOffset Pointer to offset between the bit pointed by pBitStream
  9398. // and the start of the code
  9399. // pNumCoeff Pointer to a variable to return the number of the last
  9400. // decoded element in the block
  9401. // pDstCoeffs Pointer to the decoded elements
  9402. // scanType Type of reordering, can be 0 or 1
  9403. //
  9404. // Notes:
  9405. // AVS China standard : GB/T 20090.2 - 2006
  9406. //
  9407. // Returns:
  9408. // ippStsNoErr No error
  9409. // ippStsNullPtrErr One of the pointers is NULL
  9410. */
  9411. IPPAPI(IppStatus, ippiDecodeLumaBlockIntra_AVS_1u16s,(Ipp32u **ppBitStream,
  9412. Ipp32s *pBitOffset,
  9413. Ipp32s *pNumCoeff,
  9414. Ipp16s *pDstCoeffs,
  9415. Ipp32u scanType))
  9416. IPPAPI(IppStatus, ippiDecodeLumaBlockInter_AVS_1u16s,(Ipp32u **ppBitStream,
  9417. Ipp32s *pBitOffset,
  9418. Ipp32s *pNumCoeff,
  9419. Ipp16s *pDstCoeffs,
  9420. Ipp32u scanType))
  9421. /* ///////////////////////////////////////////////////////////////////////////
  9422. // Name:
  9423. // ippiDecodeChromaBlock_AVS_1u16s
  9424. //
  9425. // Purpose:
  9426. // Decodes a chrominance 8x8 block
  9427. //
  9428. // Parameters:
  9429. // ppBitStream Double pointer to the current position in the bit stream
  9430. // pBitOffset Pointer to offset between the bit pointed by pBitStream
  9431. // and the start of the code
  9432. // pNumCoeff Pointer to a variable to return the number of the last
  9433. // decoded element in the block
  9434. // pDstCoeffs Pointer to the decoded elements
  9435. // scanType Type of reordering, can be 0 or 1
  9436. //
  9437. // Notes:
  9438. // AVS China standard : GB/T 20090.2 - 2006
  9439. //
  9440. // Returns:
  9441. // ippStsNoErr No error
  9442. // ippStsNullPtrErr One of the pointers is NULL
  9443. */
  9444. IPPAPI(IppStatus, ippiDecodeChromaBlock_AVS_1u16s,(Ipp32u **ppBitStream,
  9445. Ipp32s *pBitOffset,
  9446. Ipp32s *pNumCoeff,
  9447. Ipp16s *pDstCoeffs,
  9448. Ipp32u scanType))
  9449. /* ///////////////////////////////////////////////////////////////////////////
  9450. // Deinterlacing filter functions
  9451. // ///////////////////////////////////////////////////////////////////////////
  9452. // Name:
  9453. // ippiDeinterlaceMedianThreshold_8u_C1R
  9454. //
  9455. // Purpose:
  9456. // Median deinterlacing with threshold.
  9457. //
  9458. // For each pixel (x, y) in the ROI:
  9459. //
  9460. // if ((y & 1) != fieldNum || ((y == 0 || y == size.height - 1) && bCopyBorder)) {
  9461. // pDst[x + y * dstStep] = pSrc[x + y * srcStep];
  9462. // } else {
  9463. // m = MEDIAN(pSrc[x + (y - 1) * srcStep],
  9464. // pSrc[x + y * srcStep],
  9465. // pSrc[x + (y + 1) * srcStep]);
  9466. // if (abs(m - pSrc[x + y * srcStep]) < threshold) {
  9467. // pDst[x + y * dstStep] = pSrc[x + y * srcStep];
  9468. // } else {
  9469. // pDst[x + y * dstStep] = m;
  9470. // }
  9471. // }
  9472. //
  9473. // Parameters:
  9474. // pSrc - Pointer to the source image.
  9475. // srcStep - Step in bytes through the source image buffer.
  9476. // pDst - Pointer to the destination image.
  9477. // dstStep - Step in bytes through the destination image buffer.
  9478. // size - Size of the ROI in pixels.
  9479. // threshold - Threshold value.
  9480. // fieldNum - Field to process, 0 or 1.
  9481. // bCopyBorder - Non-zero means copy border line to destination,
  9482. // zero value means process border line like internal lines.
  9483. //
  9484. // Returns:
  9485. // ippStsNoErr Indicates no error. Any other value indicates an error or a warning.
  9486. // ippStsNullPtrErr Indicates an error if one of the specified pointers is NULL.
  9487. // ippStsStepErr Indicates an error condition if step through the source/destination image buffer has a zero or negative value.
  9488. // ippStsSizeErr Indicates an error condition if size has a field with zero or negative
  9489. //
  9490. */
  9491. IPPAPI(IppStatus, ippiDeinterlaceMedianThreshold_8u_C1R, (const Ipp8u *pSrc,
  9492. int srcStep,
  9493. Ipp8u *pDst,
  9494. int dstStep,
  9495. IppiSize size,
  9496. int threshold,
  9497. int fieldNum,
  9498. int bCopyBorder))
  9499. /* ///////////////////////////////////////////////////////////////////////////
  9500. // Name:
  9501. // ippiDeinterlaceEdgeDetect_8u_C1R
  9502. //
  9503. // Purpose:
  9504. // Generates image field using EdgeDetect filter.
  9505. // For each pixel (x, y) in the ROI:
  9506. //
  9507. // if (((y == 0 && fieldNum == 0) || (y == size.height - 1 && fieldNum == 1)) && bCopyBound) {
  9508. // pDst[x + y * dstStep] = pSrc[x + y * srcStep];
  9509. // } else {
  9510. // y0 = y + fieldNum - 1;
  9511. // y1 = y + fieldNum;
  9512. // pDst[x + y*dstStep] = (Ipp8u)EDGE_DETECT(pSrc[x - 1 + y0 * srcStep],
  9513. // pSrc[x + y0 * srcStep],
  9514. // pSrc[x + 1 + y0 * srcStep],
  9515. // pSrc[x - 1 + y1 * srcStep],
  9516. // pSrc[x + y1 * srcStep],
  9517. // pSrc[x + 1 + y1 * srcStep]);
  9518. // }
  9519. //
  9520. // EDGE_DETECT is:
  9521. // int EDGE_DETECT(int a0, int a1, int a2, int b0, int b1, int b2) {
  9522. // int d0 = abs(a0 - b2);
  9523. // int d1 = abs(a1 - b1);
  9524. // int d2 = abs(a2 - b0);
  9525. // if (d0 < d1 && d0 < d2) {
  9526. // return (a0 + b2 + 1) >> 1;
  9527. // } else
  9528. // if (d1 < d0 && d1 < d2) {
  9529. // return (a1 + b1 + 1) >> 1;
  9530. // } else {
  9531. // return (a2 + b0 + 1) >> 1;
  9532. // }
  9533. // }
  9534. //
  9535. // Parameters:
  9536. // pSrc - Pointer to the source image.
  9537. // srcStep - Step in bytes through the source image buffer (field).
  9538. // pDst - Pointer to the destination image.
  9539. // dstStep - Step in bytes through the destination image buffer (field).
  9540. // size - Size of the ROI in pixels.
  9541. // fieldNum - Field to generate, 0 or 1.
  9542. // bCopyBorder - Non-zero means copy border line to destination, zero
  9543. // value means process border line like internal lines.
  9544. //
  9545. // Returns:
  9546. // ippStsNoErr Indicates no error. Any other value indicates an error or a warning.
  9547. // ippStsNullPtrErr Indicates an error if one of the specified pointers is NULL.
  9548. // ippStsStepErr Indicates an error condition if step through the source/destination image buffer has a zero or negative value.
  9549. // ippStsSizeErr Indicates an error condition if size has a field with zero or negative value.
  9550. //
  9551. */
  9552. IPPAPI(IppStatus, ippiDeinterlaceEdgeDetect_8u_C1R, (const Ipp8u *pSrc,
  9553. int srcStep,
  9554. Ipp8u *pDst,
  9555. int dstStep,
  9556. IppiSize size,
  9557. int fieldNum,
  9558. int bCopyBorder))
  9559. /* ///////////////////////////////////////////////////////////////////////////
  9560. // Name:
  9561. // ippiDeinterlaceMotionAdaptive_8u_C1
  9562. //
  9563. // Purpose:
  9564. // Motion adaptive de-interlacing filter. Requires 4 input frames.
  9565. //
  9566. // Parameters:
  9567. // pSrc - pointer to array of pointers to frames - 4 source plane pointers from subsequent frames
  9568. // srcStep - distance between source plane rows, in bytes
  9569. // pDst - pointer to destination plane
  9570. // dstStep - distance between destination plane rows, in bytes
  9571. // planeSize - size of the image plane in pixels
  9572. // threshold - (default value: 12) tradeoff between flickering and residual combing
  9573. // artifacts. Decrease the value of the threshold to reduce combing artifacts
  9574. // on moving objects, but the flickering on the static region is increased.
  9575. // Zero value corresponds to the bob-deinterlacing
  9576. // topFirst - [range is 0, 1] - defines the field order of the videosequence.
  9577. // Usage:
  9578. // isTopFirst = 0 for bottom field first (bff);
  9579. // isTopFirst = 1 for top field first (tff).
  9580. // topField - [range is 0, 1] - defines the destination field that will be used to store processed interpolated field
  9581. // copyField - [range is 0, 1] - copy unprocessed field from the source frame to the destination
  9582. // artifactProtection - [range is 0, 1] - sets of the additional artifact protection, to suppress distortion.
  9583. //
  9584. // Returns:
  9585. // ippStsNoErr Indicates no error. Any other value indicates an error or a warning.
  9586. // ippStsSizeErr Incorrect input roiSize of the image
  9587. // ippStsNullPtrErr Incorrect memory address
  9588. //
  9589. */
  9590. IPPAPI(IppStatus, ippiDeinterlaceMotionAdaptive_8u_C1, (const Ipp8u *pSrcPlane[4],
  9591. int srcStep,
  9592. Ipp8u *pDst,
  9593. int dstStep,
  9594. IppiSize planeSize,
  9595. int threshold,
  9596. int topFirst,
  9597. int topField,
  9598. int copyField,
  9599. int artifactProtection))
  9600. /* ///////////////////////////////////////////////////////////////////////////
  9601. // Name:
  9602. // ippiDeinterlaceBlendInitAlloc_8u_C1
  9603. //
  9604. // Purpose:
  9605. // Initialization of parameters, allocation of internal temporary buffer
  9606. //
  9607. // Parameters:
  9608. // planeSize - size of the image plane in pixels
  9609. // blendThresh - array of 2 thresholds to determine "alpha" coefficients;
  9610. // must be 0 <= blendThresh[0] <= blendThresh[1] <= 255
  9611. // blendConstants - array of 2 values for "alpha";
  9612. // blendConstants[i] corresponds to blendTresh[i],
  9613. // must be 0.0 <= blendConstants[i] <= 1.0 for i=0,1
  9614. // ppState - pointer to pointer to an instance of the IppiDeinterlaceBlendState_8u_C1 structure, containing temporary buffer
  9615. //
  9616. // Returns:
  9617. // ippStsOk No error, Ok
  9618. // ippStsSizeErr Incorrect input size of the image
  9619. // ippStsNullPtrErr Incorrect memory address
  9620. // ippStsMemAllocErr Memory allocation error
  9621. //
  9622. */
  9623. IPPAPI(IppStatus, ippiDeinterlaceBlendInitAlloc_8u_C1, (IppiSize planeSize,
  9624. int blendThresh[2],
  9625. double blendConstants[2],
  9626. IppiDeinterlaceBlendState_8u_C1 **ppState))
  9627. /* ///////////////////////////////////////////////////////////////////////////
  9628. // Name:
  9629. // ippiDeinterlaceBlend_8u_C1
  9630. //
  9631. // Purpose:
  9632. // Motion adaptive de-interlacing filter. Requires 3 input frames: previous, current, next.
  9633. //
  9634. // Parameters:
  9635. // pSrcPlane - array of pointers to frames: [previous,
  9636. // current, next] - 3 source plane pointers
  9637. // srcStep - distance between source plane rows, in bytes
  9638. // pDst - pointer to destination plane
  9639. // dstStep - distance between destination plane rows, in bytes
  9640. // planeSize - size of the image plane in pixels
  9641. // topFirst - [range is 0, 1] - defines the field order of the videosequence.
  9642. // Usage:
  9643. // topFirst = 0 for bottom field first (bff);
  9644. // topFirst = 1 for top field first (tff).
  9645. // topField - [range is 0, 1] - defines the destination field that will be used to store processed interpolated field
  9646. // copyField - [range is 0, 1] - copy unprocessed field from the source frame to the destination
  9647. // pState - pointer to an instance of the IppiDeinterlaceBlendState_8u_C1 structure, containing temporary buffer
  9648. //
  9649. // Returns:
  9650. // ippStsOk No error, Ok
  9651. // ippStsSizeErr Incorrect input size of the image
  9652. // ippStsNullPtrErr Incorrect memory address
  9653. //
  9654. */
  9655. IPPAPI(IppStatus, ippiDeinterlaceBlend_8u_C1, (const Ipp8u *pSrcPlane[3],
  9656. int srcStep,
  9657. Ipp8u *pDst,
  9658. int dstStep,
  9659. IppiSize planeSize,
  9660. int topFirst,
  9661. int topField,
  9662. int copyField,
  9663. IppiDeinterlaceBlendState_8u_C1 *pState))
  9664. /* ///////////////////////////////////////////////////////////////////////////
  9665. // Name:
  9666. // ippiDeinterlaceBlendFree_8u_C1
  9667. //
  9668. // Purpose:
  9669. // Free of memory, allocated by init function.
  9670. //
  9671. // Parameters:
  9672. // pState - pointer to an instance of the IppiDeinterlaceBlendState_8u_C1 structure, containing temporary buffer
  9673. //
  9674. // Returns:
  9675. // ippStsOk No error, Ok
  9676. // ippStsNullPtrErr Incorrect memory address
  9677. //
  9678. */
  9679. IPPAPI(IppStatus, ippiDeinterlaceBlendFree_8u_C1, (IppiDeinterlaceBlendState_8u_C1 *pState))
  9680. /* ///////////////////////////////////////////////////////////////////////////
  9681. // Name:
  9682. // ippiFilterDenoiseSmooth_8u_C1R
  9683. //
  9684. // Purpose:
  9685. // Perform Spatial Noise Reduction filtering.
  9686. // Algorithm uses conception spatial smoothing. Effective to smooth flat area.
  9687. //
  9688. // Parameters:
  9689. // pSrc - pointer to source image origin
  9690. // srcStep - distance in bytes between starts of consecutive lines in the source image.
  9691. // pDst - pointer to destination image origin
  9692. // dstStep - Distance in bytes between starts of consecutive lines in the destination image
  9693. // size - size of the source image in pixels.
  9694. // roi - Region of interest in the source image (of the IppiRest type).
  9695. // Destination image has the same ROI
  9696. // threshold - parameter of denoise algorithm describes what is detected as detail and
  9697. // so keep from removing. Increasing of this parameter enlarges the filtration area.
  9698. // pWorkBuffer- pointer to the external work buffer, has to be 2*(roi.height*roi.width)
  9699. //
  9700. //
  9701. // Returns:
  9702. // ippStsOk No error, Ok
  9703. // ippStsSizeErr Incorrect input size of the image or ROI
  9704. // ippStsNullPtrErr Incorrect memory address
  9705. //
  9706. */
  9707. IPPAPI(IppStatus, ippiFilterDenoiseSmooth_8u_C1R, (const Ipp8u* pSrc,
  9708. int srcStep,
  9709. Ipp8u* pDst,
  9710. int dstStep,
  9711. IppiSize size,
  9712. IppiRect roi,
  9713. int threshold,
  9714. Ipp8u* pWorkBuffer))
  9715. /* ///////////////////////////////////////////////////////////////////////////
  9716. // Name:
  9717. // ippiFilterDenoiseAdaptiveInitAlloc_8u_C1
  9718. //
  9719. // Purpose:
  9720. // Creates and initializes denoise specification structure.
  9721. //
  9722. // Parameters:
  9723. // ppState - Pointer to pointer to the analysis specification structure to be created
  9724. // roiSize - Size of the source image ROI in pixels which will be processed.
  9725. // maskSize - parameter defines the region, which is used in current pixel transformation.
  9726. //
  9727. // Returns:
  9728. // ippStsOk Indicates no error. Any other value indicates an error
  9729. // ippStsSizeErr Indicates an error condition if roiSize or maskSize have a field with zero or
  9730. // negative value
  9731. // ippStsNullPtrErr Indicates an error when the specified
  9732. // pointer is NULL
  9733. // ippStsMemAllocErr Indicates an error when no memory is allocated.
  9734. //
  9735. */
  9736. IPPAPI(IppStatus, ippiFilterDenoiseAdaptiveInitAlloc_8u_C1, (IppiDenoiseAdaptiveState_8u_C1 **ppState,
  9737. IppiSize roiSize,
  9738. IppiSize maskSize))
  9739. /* ///////////////////////////////////////////////////////////////////////////
  9740. // Name:
  9741. // ippiFilterDenoiseAdaptive_8u_C1R
  9742. //
  9743. // Purpose:
  9744. // Perform Spatio-Temporal Adaptive Noise Reduction filtering.
  9745. // The filter operates with previous, current and next frames
  9746. //
  9747. // Parameters:
  9748. // pSrcPlane - array of pointers to frame:
  9749. // pSrcPlane[0] - point to previous source image origin
  9750. // pSrcPlane[1] - point to current source image origin
  9751. // pSrcPlane[2] - point to next source image origin
  9752. // srcStep - distance in bytes between starts of consecutive lines in the source image.
  9753. // pDst - pointer to destination image origin
  9754. // dstStep - Distance in bytes between starts of consecutive lines in the destination image
  9755. // size - size of the source image in pixels. Destination image has the same size.
  9756. // roi - Region of interest in the source image (of the IppiRect type).
  9757. // Destination image has the same ROI.
  9758. // maskSize - Size of the mask in pixels.
  9759. // threshold - parameter of denoise algorithm describes what is detected as detail
  9760. // and so keep from removing
  9761. // blurType - type of blurring of noised pixel. Possible modes are
  9762. // IPPVC_NOISE_BLUR0,
  9763. // IPPVC_NOISE_BLUR1,
  9764. // IPPVC_NOISE_BLUR2,
  9765. // IPPVC_NOISE_BLUR3. See details in description.
  9766. // pState - Pointer to the IppiDenoiseAdaptiveState_8u_C1 specification structure
  9767. //
  9768. // Returns:
  9769. // ippStsOk No error, Ok
  9770. // ippStsSizeErr Incorrect input size of the image origin or roi.
  9771. // ippStsNullPtrErr Incorrect memory address
  9772. //
  9773. */
  9774. IPPAPI(IppStatus, ippiFilterDenoiseAdaptive_8u_C1R, (const Ipp8u* pSrcPlane[3],
  9775. int srcStep,
  9776. Ipp8u* pDst,
  9777. int dstStep,
  9778. IppiSize size,
  9779. IppiRect roi,
  9780. IppiSize maskSize,
  9781. int threshold,
  9782. IppvcNoiseBlurFlag blurFlag,
  9783. IppiDenoiseAdaptiveState_8u_C1 *pState))
  9784. /* ///////////////////////////////////////////////////////////////////////////
  9785. // Name:
  9786. // ippiFilterDenoiseAdaptiveFree
  9787. //
  9788. // Purpose:
  9789. // Closes denoise specification structure.
  9790. //
  9791. // Parameters:
  9792. // pState - Pointer to the denoise specification structure to be closed.
  9793. //
  9794. // Returns:
  9795. // ippStsNoErr Indicates no error
  9796. // ippStsNullPtrErr Indicates an error when the specified pointer is NULL.
  9797. //
  9798. */
  9799. IPPAPI(IppStatus, ippiFilterDenoiseAdaptiveFree_8u_C1, (IppiDenoiseAdaptiveState_8u_C1 *pState))
  9800. /* ///////////////////////////////////////////////////////////////////////////
  9801. // Name:
  9802. // ippiFilterDenoiseMosquitoInitAlloc_8u_C1
  9803. //
  9804. // Purpose:
  9805. // Creates and initializes denoise specification structure.
  9806. //
  9807. // Parameters:
  9808. // ppState - Pointer to pointer to the analysis specification structure to be created
  9809. // roiSize - Size of the ROI in pixels.
  9810. //
  9811. // Returns:
  9812. // ippStsOk Indicates no error. Any other value indicates an error
  9813. // ippStsSizeErr Indicates an error condition if size has a field with zero or
  9814. // negative value
  9815. // ippStsNullPtrErr Indicates an error when the specified
  9816. // pointer is NULL
  9817. // ippStsMemAllocErr Indicates an error when no memory is allocated.
  9818. //
  9819. */
  9820. IPPAPI(IppStatus, ippiFilterDenoiseMosquitoInitAlloc_8u_C1, (IppiDenoiseMosquitoState_8u_C1 **ppState, IppiSize roiSize))
  9821. /* ///////////////////////////////////////////////////////////////////////////
  9822. // Name:
  9823. // ippiFilterDenoiseMosquitoFree
  9824. //
  9825. // Purpose:
  9826. // Closes denoise specification structure.
  9827. //
  9828. // Parameters:
  9829. // pState - Pointer to the denoise specification structure to be closed.
  9830. //
  9831. // Returns:
  9832. // ippStsNoErr Indicates no error
  9833. // ippStsNullPtrErr Indicates an error when the specified pointer is NULL.
  9834. //
  9835. */
  9836. IPPAPI(IppStatus, ippiFilterDenoiseMosquitoFree_8u_C1, (IppiDenoiseMosquitoState_8u_C1 *pState))
  9837. /* ///////////////////////////////////////////////////////////////////////////
  9838. // Name:
  9839. // ippiFilterDenoiseMosquito_8u_C1R
  9840. //
  9841. // Purpose:
  9842. // Perform Spatio-Temporal Motion Adaptive Mosquito Noise Reduction filtering
  9843. //
  9844. // Parameters:
  9845. // pSrcPlane - array of pointers to source image origin plane
  9846. // pSrcPlane[0] - point to previous source image origin
  9847. // pSrcPlane[1] - point to current source image origin
  9848. // srcStep - distance in bytes between starts of consecutive lines in the source image.
  9849. // pDst - pointer to destination image origin
  9850. // dstStep - Distance in bytes between starts of consecutive lines in the destination image
  9851. // size - size of the source image in pixels. Destination image has the same size.
  9852. // roi - Region of interest in the source image (of the IppiRest type)
  9853. // pState - Pointer to the denoise specification structure
  9854. //
  9855. // Returns:
  9856. // ippStsOk No error, Ok
  9857. // ippStsSizeErr Incorrect input size of the image or ROI
  9858. // ippStsNullPtrErr Incorrect memory address
  9859. //
  9860. */
  9861. IPPAPI(IppStatus, ippiFilterDenoiseMosquito_8u_C1R, (const Ipp8u *pSrcPlane[2],
  9862. int srcStep,
  9863. Ipp8u* pDst,
  9864. int dstStep,
  9865. IppiSize size,
  9866. IppiRect roi,
  9867. IppiDenoiseMosquitoState_8u_C1 *pState))
  9868. /* CAST */
  9869. IPPAPI(IppStatus, ippiFilterDenoiseCASTInit, (IppDenoiseCAST *pInParam))
  9870. IPPAPI(IppStatus,ippiFilterDenoiseCASTYUV422_8u_C2R,(const Ipp8u* pSrcCur, const Ipp8u* pSrcPrev, int srcStep,
  9871. const Ipp8u* pSrcEdge, int srcEdgeStep,
  9872. IppiSize srcRoiSize,
  9873. Ipp8u* pDst, int dstStep,
  9874. Ipp8u* pHistoryWeight, IppDenoiseCAST *pInParam))
  9875. IPPAPI(IppStatus, ippiFilterDenoiseCAST_8u_C1R, (const Ipp8u* pSrcCur, const Ipp8u* pSrcPrev, int srcStep,
  9876. const Ipp8u* pSrcEdge, int srcEdgeStep,
  9877. IppiSize srcRoiSize,
  9878. Ipp8u* pDst, int dstStep,
  9879. Ipp8u* pHistoryWeight, IppDenoiseCAST *pInParam))
  9880. /* ///////////////////////////////////////////////////////////////////////////
  9881. // Name:
  9882. // ippiTransformResidual4x4Fwd_H264_16s_C1
  9883. // ippiTransformResidual4x4Fwd_H264_32s_C1
  9884. //
  9885. // The function performs forward h264 transform on the block of 4x4.
  9886. //
  9887. // Parameters:
  9888. // pSrc - pointer to a source block
  9889. // pDst - pointer to a destination block
  9890. //
  9891. // Returns:
  9892. // ippStsNoErr No error
  9893. // ippStsNullPtrErr One of the pointers is NULL
  9894. //
  9895. */
  9896. IPPAPI(IppStatus, ippiTransformResidual4x4Fwd_H264_16s_C1, (const Ipp16s *pSrc,
  9897. Ipp16s *pDst))
  9898. IPPAPI(IppStatus, ippiTransformResidual4x4Fwd_H264_32s_C1, (const Ipp32s *pSrc,
  9899. Ipp32s *pDst))
  9900. /* ///////////////////////////////////////////////////////////////////////////
  9901. // Name:
  9902. // ippiTransformResidual4x4Inv_H264_16s_C1
  9903. // ippiTransformResidual4x4Inv_H264_32s_C1
  9904. //
  9905. // The function performs inverse h264 transform on the block of 4x4.
  9906. //
  9907. // Parameters:
  9908. // pSrc - pointer to a source block
  9909. // pDst - pointer to a destination block
  9910. //
  9911. // Returns:
  9912. // ippStsNoErr No error
  9913. // ippStsNullPtrErr One of the pointers is NULL
  9914. //
  9915. */
  9916. IPPAPI(IppStatus, ippiTransformResidual4x4Inv_H264_16s_C1, (const Ipp16s *pSrc,
  9917. Ipp16s *pDst))
  9918. IPPAPI(IppStatus, ippiTransformResidual4x4Inv_H264_32s_C1, (const Ipp32s *pSrc,
  9919. Ipp32s *pDst))
  9920. /* ///////////////////////////////////////////////////////////////////////////
  9921. // Name:
  9922. // ippiTransformQuant8x8Fwd_AVS_16s_C1
  9923. //
  9924. // The function performs AVS forward transform and forward quantization on
  9925. // on the block of 8x8.
  9926. //
  9927. // Parameters:
  9928. // pSrc - pointer to a source block.
  9929. // pDst - pointer to a destination block.
  9930. // pNumCoeffs - pointer to a variable to return number of coefficients
  9931. // in the regular scan order.
  9932. // QP - quantization parameter.
  9933. // roundMode - flag specifies the round mode. 1 means rounding for intra blocks,
  9934. // all others mean rounding for inter block.
  9935. //
  9936. // Returns:
  9937. // ippStsNoErr No error
  9938. // ippStsNullPtrErr One of the pointers is NULL
  9939. // ippStsOutOfRangeErr QP is less than 0 or greater than 63
  9940. //
  9941. // Notes:
  9942. // AVS China standard : GB/T 20090.2 - 2006
  9943. //
  9944. */
  9945. IPPAPI(IppStatus, ippiTransformQuant8x8Fwd_AVS_16s_C1, (const Ipp16s *pSrc,
  9946. Ipp16s *pDst,
  9947. Ipp32u *pNumCoeffs,
  9948. Ipp32u QP,
  9949. Ipp32u roundMode))
  9950. /* ///////////////////////////////////////////////////////////////////////////
  9951. // Name:
  9952. // ippiDisassembleLumaIntra_AVS_16s8u_C1R
  9953. //
  9954. // The function performs disassembling of AVS luminance macroblock 16x16.
  9955. // The function performs the following step over every block 8x8 of the
  9956. // macroblock:
  9957. // finds the best prediction mode in pDstPlane for a block and saves
  9958. // the mode into appropriate position in pPredModes array.
  9959. // gets the residual between the predicted block and corresponding
  9960. // block in pSrcPlane
  9961. // does forward transformation and quantization of the residual and save
  9962. // it to ppDstCoeff buffer, incrementing ppDstCoeff pointer and sets
  9963. // the appropriate bit into the variable pointed by pLumaCBP. When block has
  9964. // the zero residual after quantization, the pointer ppDstCoeff and variable
  9965. // pointed by pLumaCBP are non changing.
  9966. // performs the backward quantization, transforming of the residual and
  9967. // adds to the predicted data in pDstPlane
  9968. //
  9969. // Parameters:
  9970. // pSrcPlane - pointer to a source block.
  9971. // srcStep - step of the source plane
  9972. // pDstPLane - pointer to a destination block.
  9973. // dstStep - step of the destination plane
  9974. // ppDstCoeff - pointer to pointer to a buffer for coefficients
  9975. // pPredModes - pointer to array of 4 to store prediction modes of blocks
  9976. // pLumaCBP - pointer to a variable to return final CBP of the macroblock
  9977. // QP - quantization parameter.
  9978. // edgeType - flags of available neighbours.
  9979. //
  9980. // Returns:
  9981. // ippStsNoErr No error
  9982. // ippStsNullPtrErr One of the pointers is NULL
  9983. // ippStsOutOfRangeErr QP is less than 0 or greater than 63
  9984. //
  9985. // Notes:
  9986. // AVS China standard : GB/T 20090.2 - 2006
  9987. //
  9988. */
  9989. IPPAPI(IppStatus, ippiDisassembleLumaIntra_AVS_16s8u_C1R, (const Ipp8u *pSrcPlane, Ipp32s srcStep,
  9990. Ipp8u *pDstPlane, Ipp32s dstStep,
  9991. Ipp16s **ppDstCoeff,
  9992. IppIntra8x8PredMode_AVS *pPredModes,
  9993. Ipp32u *pLumaCBP,
  9994. Ipp32u QP,
  9995. Ipp32u edgeType))
  9996. /* ///////////////////////////////////////////////////////////////////////////
  9997. // Name:
  9998. // ippiDisassembleChroma420Intra_AVS_16s8u_C1R
  9999. //
  10000. // The function performs disassembling of AVS chrominance 420 macroblock 8x8
  10001. // The function performs the following step over every block 8x8 of the
  10002. // macroblock:
  10003. // finds the best prediction mode in pDstPlane for a block and saves
  10004. // the mode into appropriate position in pPredModes array.
  10005. // gets the residual between the predicted block and corresponding
  10006. // block in pSrcPlane
  10007. // does forward transformation and quantization of the residual and save
  10008. // it to ppDstCoeff buffer, incrementing ppDstCoeff pointer and sets
  10009. // the appropriate bit into the variable pointed by pChromaCBP. When block
  10010. // has the zero residual after quantization, the pointer ppDstCoeff and
  10011. // variable pointed by pChromaCBP are non changing.
  10012. // performs the backward quantization, transforming of the residual and
  10013. // adds to the predicted data in pDstPlane
  10014. //
  10015. // Parameters:
  10016. // pSrcPlane - array of pointers pointer to a source block.
  10017. // srcStep - step of the source plane
  10018. // pDstPLane - array of pointer to a destination block.
  10019. // dstStep - step of the destination plane
  10020. // ppDstCoeff - pointer to pointer to a buffer for coefficients
  10021. // pPredMode - pointer to a variable to store prediction mode of blocks
  10022. // pChromaCBP - pointer to a variable to return final CBP of the macroblock
  10023. // chromaQP - quantization parameter.
  10024. // edgeType - flags of available neighbours.
  10025. //
  10026. // Returns:
  10027. // ippStsNoErr No error
  10028. // ippStsNullPtrErr One of the pointers is NULL
  10029. // ippStsOutOfRangeErr QP is less than 0 or greater than 51
  10030. //
  10031. // Notes:
  10032. // AVS China standard : GB/T 20090.2 - 2006
  10033. //
  10034. */
  10035. IPPAPI(IppStatus, ippiDisassembleChroma420Intra_AVS_16s8u_C1R, (const Ipp8u *pSrcPlane[2], Ipp32s srcStep,
  10036. Ipp8u *pDstPlane[2], Ipp32s dstStep,
  10037. Ipp16s **ppDstCoeff,
  10038. IppIntraChromaPredMode_AVS *pPredMode,
  10039. Ipp32u *pChromaCBP, Ipp32u chromaQP, Ipp32u edgeType))
  10040. /* ///////////////////////////////////////////////////////////////////////////
  10041. // Name:
  10042. // ippiQuantizeResidual4x4Fwd_H264_16s_C1
  10043. // ippiQuantizeResidual4x4Fwd_H264_16s32s_C1
  10044. // ippiQuantizeResidual4x4Fwd_H264_32s_C1
  10045. //
  10046. // Purpose:
  10047. // These functions perform forward quantization for 4x4 residual block.
  10048. //
  10049. // Parameters:
  10050. // pSrc Source array of size 16
  10051. // pDst Destination array of size 16
  10052. // pNumNonZeros Number of non-zero coefficients after the quantization
  10053. // process
  10054. // pLastNonZeros Ordinal number of last non-zero coefficient after the
  10055. // quantization process in scan order
  10056. // pQuantTable Pointer to a quantizing matrix, if NULL, the default one
  10057. // is applied
  10058. // pScanMatrix Scan matrix for coefficients in block (array of size 16)
  10059. // QP Quantization parameter.
  10060. // roundMode Flag that is equal 1 in the case of Intra slice, 0 otherwise.
  10061. //
  10062. // Returns:
  10063. // ippStsNoErr No error
  10064. // ippStsNullPtrErr A pointer is NULL
  10065. // ippStsOutOfRangeErr QP > 51 (87 for 32s) or QP < 0
  10066. */
  10067. IPPAPI(IppStatus, ippiQuantizeResidual4x4Fwd_H264_16s_C1, (const Ipp16s *pSrc,
  10068. Ipp16s *pDst,
  10069. Ipp32u *pNumNonZeros,
  10070. Ipp32u *pLastNonZero,
  10071. const Ipp16s *pQuantTable,
  10072. const Ipp16s *pScanMatrix,
  10073. Ipp32s QP,
  10074. Ipp32s roundMode))
  10075. IPPAPI(IppStatus, ippiQuantizeResidual4x4Fwd_H264_16s32s_C1, (const Ipp16s *pSrc,
  10076. Ipp16s *pDst,
  10077. Ipp32u *pNumNonZeros,
  10078. Ipp32u *pLastNonZero,
  10079. const Ipp32s *pQuantTable,
  10080. const Ipp16s *pScanMatrix,
  10081. Ipp32s QP,
  10082. Ipp32s roundMode))
  10083. IPPAPI(IppStatus, ippiQuantizeResidual4x4Fwd_H264_32s_C1, (const Ipp32s *pSrc,
  10084. Ipp32s *pDst,
  10085. Ipp32u *pNumNonZeros,
  10086. Ipp32u *pLastNonZero,
  10087. const Ipp32s *pQuantTable,
  10088. const Ipp16s *pScanMatrix,
  10089. Ipp32s QP,
  10090. Ipp32s roundMode))
  10091. #if defined __cplusplus
  10092. }
  10093. #endif
  10094. #if defined (_IPP_STDCALL_CDECL)
  10095. #undef _IPP_STDCALL_CDECL
  10096. #define __stdcall __cdecl
  10097. #endif
  10098. #endif /* __IPPVC_H__ */
  10099. /* End of file ippvc.h*/